updated example name”
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
/**************************************************************************************************
|
||||
@headerfile: sbl_image_ext.c
|
||||
Revised: $Date: 2015-06-22 20:01:12 -0700 (Mon, 22 Jun 2015) $
|
||||
Revision: $Revision: 44190 $
|
||||
|
||||
Description: This file contains APIs for accessing SBL image for NP when
|
||||
image is contained in external flash
|
||||
|
||||
Copyright 2015 Texas Instruments Incorporated. All rights reserved.
|
||||
|
||||
IMPORTANT: Your use of this Software is limited to those specific rights
|
||||
granted under the terms of a software license agreement between the user
|
||||
who downloaded the software, his/her employer (which must be your employer)
|
||||
and Texas Instruments Incorporated (the "License"). You may not use this
|
||||
Software unless you agree to abide by the terms of the License. The License
|
||||
limits your use, and you acknowledge, that the Software may not be modified,
|
||||
copied or distributed unless embedded on a Texas Instruments microcontroller
|
||||
or used solely and exclusively in conjunction with a Texas Instruments radio
|
||||
frequency transceiver, which is integrated into your product. Other than for
|
||||
the foregoing purpose, you may not use, reproduce, copy, prepare derivative
|
||||
works of, modify, distribute, perform, display or sell this Software and/or
|
||||
its documentation for any purpose.
|
||||
|
||||
YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
|
||||
PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||||
INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
|
||||
NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
|
||||
TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
|
||||
NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
|
||||
LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
|
||||
INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
|
||||
OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
|
||||
OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
|
||||
(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
|
||||
|
||||
Should you have any questions regarding your right to use this Software,
|
||||
contact Texas Instruments Incorporated at www.TI.com.
|
||||
**************************************************************************************************/
|
||||
|
||||
|
||||
/*********************************************************************
|
||||
* INCLUDES
|
||||
*/
|
||||
|
||||
#include <xdc/std.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "sbl.h"
|
||||
#include "sbl_image.h"
|
||||
|
||||
#include "ext_flash.h"
|
||||
#include "ext_flash_layout.h"
|
||||
|
||||
/*********************************************************************
|
||||
* CONSTANTS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* TYPEDEFS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* LOCAL VARIABLES
|
||||
*/
|
||||
|
||||
static uint8_t flashIsOpen = 0;
|
||||
|
||||
/*********************************************************************
|
||||
* LOCAL FUNCTIONS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* PUBLIC FUNCTIONS
|
||||
*/
|
||||
|
||||
uint8_t SBL_IMG_open( void )
|
||||
{
|
||||
// Open External Flash
|
||||
if ( extFlashOpen() )
|
||||
{
|
||||
flashIsOpen = 1;
|
||||
return SBL_SUCCESS;
|
||||
}
|
||||
|
||||
return SBL_FAILURE;
|
||||
}
|
||||
|
||||
bool SBL_IMG_isValid( uint32_t hdrAddr )
|
||||
{
|
||||
ExtImageInfo_t tempHdr;
|
||||
|
||||
// Verify external flash has been opened
|
||||
if ( flashIsOpen )
|
||||
{
|
||||
// Read image header from external flash
|
||||
extFlashRead(hdrAddr, sizeof(ExtImageInfo_t), (uint8_t*)&tempHdr);
|
||||
|
||||
// Verify CRCs of image are valid
|
||||
if ( tempHdr.crc[0] != 0xFFFF && tempHdr.crc[0] != 0x0000 &&
|
||||
tempHdr.crc[0] == tempHdr.crc[1] && tempHdr.status == 0xFF )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32_t SBL_IMG_getSize( uint32_t hdrAddr )
|
||||
{
|
||||
ExtImageInfo_t tempHdr;
|
||||
|
||||
// Verify external flash has been opened
|
||||
if ( flashIsOpen )
|
||||
{
|
||||
// Read image header from external flash
|
||||
extFlashRead(hdrAddr, sizeof(ExtImageInfo_t), (uint8_t*)&tempHdr);
|
||||
|
||||
// Length in header field is number of 4B blocks
|
||||
return tempHdr.len * 4;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t SBL_IMG_getOffset( uint32_t hdrAddr )
|
||||
{
|
||||
ExtImageInfo_t tempHdr;
|
||||
|
||||
// Verify external flash has been opened
|
||||
if ( flashIsOpen )
|
||||
{
|
||||
// Read image header from external flash
|
||||
extFlashRead(hdrAddr, sizeof(ExtImageInfo_t), (uint8_t*)&tempHdr);
|
||||
|
||||
// Offset field is given in number of 4B blocks
|
||||
return tempHdr.addr * 4;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t SBL_IMG_read( uint32_t addr, uint8_t *pBuf, uint16_t len)
|
||||
{
|
||||
extFlashRead(addr, len, pBuf);
|
||||
return SBL_SUCCESS;
|
||||
}
|
||||
|
||||
void SBL_IMG_close( void )
|
||||
{
|
||||
flashIsOpen = 0;
|
||||
|
||||
// Close External Flash
|
||||
extFlashClose();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user