CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

SCA

System Configuration Area(SCA)位于Flash的前两个Sector(共8 KB,0x0020_0000 ~ 0x0020_2000)。SCA中存储了系统启动过程使用的标志以及其他系统配置参数。SDK toolchain链接工具会根据Application Firmware中的BUILD_IN_APP_INFO结构体(路径:Project_Folder\platform\soc\common\gr_platform.c)生成SCA Image,并将其烧写到SCA,Bootloader会根据SCA区域中的启动信息,校验和跳转到Firmware的入口地址。BUILD_IN_APP_INFO的定义和配置如下:

说明:

Project_Folder为工程的根目录。

const APP_INFO_t BUILD_IN_APP_INFO __attribute__((section(".app_info"))) =
#endif
{
    .app_pattern      = APP_INFO_PATTERN_VALUE,
    .app_info_version = APP_INFO_VERSION,
    .chip_ver         = CHIP_VER,
    .load_addr        = APP_CODE_LOAD_ADDR,
    .run_addr         = APP_CODE_RUN_ADDR,
    .app_info_sum     = CHECK_SUM,
    .check_img        = BOOT_CHECK_IMAGE,
    .boot_delay       = BOOT_LONG_TIME,
    .sec_cfg          = SECURITY_CFG_VAL,
#ifdef APP_INFO_COMMENTS
    .comments         = APP_INFO_COMMENTS,
#endif
};
  • app_pattern:固定值0x47525858。
  • app_info_version:标识固件信息版本,与APP_INFO_VERSION对应,当前版本为1。
  • chip_ver:标识此固件使用的芯片版本,与custom_config.h中的CHIP_VER对应。
  • load_addr:Firmware存储地址,与custom_config.h中的APP_CODE_LOAD_ADDR对应。
  • run_addr:Firmware运行地址,与custom_config.h中的APP_CODE_RUN_ADDR对应。
  • app_info_sum:Firmware信息的校验和,由CHECK_SUM宏自动计算。
  • check_img:启动配置参数,与custom_config.h中的BOOT_CHECK_IMAGE对应,当此参数配置为1时,启动时将会对Firmware进行校验。
  • boot_delay:启动配置参数,与custom_config.h中的BOOT_LONG_TIME对应,当此参数配置为1时,冷启动时将会加入1 秒延时。
  • sec_cfg:安全配置参数,暂未使用。
  • reserved0:保留字段。
  • comments:固件描述信息,最长支持12 字节信息。
  • reserved1:保留字段。

图 6为System Configuration Area布局。

图 6 System Configuration Area布局
  • Boot_Info与Boot_Info Backup存储相同的信息,Boot_Info Backup是Boot_Info的备份。
    • 在非安全模式下,Bootloader会默认从Boot_Info中获取启动信息。
    • 在安全模式下,Bootloader会先校验Boot_Info,如果Boot_Info校验不过,则会校验Boot_Info Backup,并从Boot_Info Backup中获取启动信息。
  • Boot_Info(32B)区域中存储Firmware启动信息,Bootloader会根据启动信息,校验和跳转到Firmware的入口地址。
    • Boot Config为系统启动配置信息。
    • SPI Access Mode为SPI访问方式配置。为系统固定配置,用户无法修改。
    • Run Addr为Firmware运行地址,与BUILD_IN_APP_INFO中的run_addr对应。
    • Load Addr为Firmware存储地址,与BUILD_IN_APP_INFO中的load_addr对应。
    • CheckSum为Firmware校验和,生成Firmware后,由SDK toolchain自动算出。
    • APP Size为Firmware的Size信息,生成Firmware后,由SDK toolchain自动算出。
  • Img_Info区域存储最多10个Firmware的信息。当使用GProgrammer下载Firmware或使用DFU升级Firmware时,Firmware信息会被存储到Img_Info区域。
    • Comments为Firmware描述信息,支持最多12个字符。生成Firmware后,SDK toolchain使用Firmware文件名作为Comments信息。
    • Boot Info(24B)为Firmware启动信息,与上述Boot_Info(32B)的低24 Byte相同。
    • Version为Firmware版本信息,与custom_config.h中VERSION对应。
    • Pattern为固定值0x4744。
  • DFU Config Info区域存储ROM中DFU模块的配置信息。
    • UART Info为DFU模块的UART串口相关配置,包括状态位、波特率、GPIO配置等。
    • ADV Name Info为DFU模块的广播相关配置,包括状态位、广播名、广播长度。
    • NVDS Init Info为DFU模块的NVDS系统的初始化配置,包括状态位、NVDS区域大小、起始地址。
    • DFU Disable Cmd Info为DFU模块的DFU禁用命令配置,包括状态位和Disable DFU Cmd(2B,设置格式为Bitmask),可通过设置Disable DFU Cmd值来禁用某些DFU命令。
  • Hmac区域存储Hmac校验值。该区域仅在安全模式下有效。

扫描关注

打开微信,使用“扫一扫”即可关注。