4个职位/ 0个新职位
最后发表
GGQ_in
离线
最后看到:7个月2个星期前
加入:2019-07-23 04:41
SPOTA中二次引导的地址设置问题

你好,

在二次引导装载程序工程中,将图像加载到SRAM时为何SUPPORT_AN_B_001不使能,如果使能就是从OTP中加载吗?

从spi flash中加载和使能SUPPORT_AN_B_001有何不同?

如果我想把图片标题和产品标题的地址改变不使用0 x7052 0 x7051的话是否能实现?

/************** 基于- b - 001图像/快速引导装载程序部分 **************/
//定义if
//如果基于AN-B-001的映像在SPI flash中刻录,并且引导加载程序正在从OTP运行
#undef SUPPORT_AN_B_001 //为辅助引导加载程序启用它

/ /从spi flash中加载函数如下:

int spi_loadActiveImage(空白)

//启动SPI接口
spi_flash_peripheral_init ();/ / spi GPIO接口引脚初始化
spi_flash_release_from_power_down ();//如果flash被应用程序设置为关闭电源,则需要

# ifdef SUPPORT_AN_B_001
uint8 AN001Header [AN001_SPI_HEADER_SIZE];
//检查AN-B-001报头
SpiFlashRead((unsigned long)&AN001Header, (unsigned long) 0, (unsigned long)AN001_SPI_HEADER_SIZE);
if (AN001Header[0]==0x70 && AN001Header[1]==0x50){//如果引导加载程序从SPI flash运行,它必须被禁用
SpiFlashRead(SYSRAM_BASE_ADDRESS, (unsigned long)AN001_SPI_STARTCODE_POSITION, (unsigned long) (AN001Header[6]<<8 | AN001Header[7]));
返回0;

其他的


#如果定义(ALLOW_NO_HEADER)

//从内存偏移0加载0x7F00字节。
SpiFlashRead (SYSRAM_BASE_ADDRESS 0 0 x7f00);
返回0;

# endif / /定义(ALLOW_NO_HEADER)


//在SPI flash中没有发现AN-B-001有效图像。返回错误。
返回1;
其他#
spi_flash_size_init ();/ /读取设备id,配置spi flash大小
返回loadActiveImage ();/ /加载img
# endif

设备:
CYibin
离线
最后看到:8个月3个星期前
工作人员
加入:2017-12-14 02:48
你好,

你好,

580芯片内部有一个ROM启动,

ROM引导的功能是会判断OTP中是否有有效固件,有则将代码加载到RAM中执行,无则会去各个口(uart, spi奴隶,spi的主人,iic等)去重新加载

我们可将二次引导装载程序放在OTP (flash也行)中,则

芯片上电后,将二次引导装载程序加载到ram中运行,功能是:

1.到指定的地址(该地址可自定义)找到产品标题

2.解析产品标题,获知形象1标题和图片2头的信息

3.将有效的形象加载到ram中执行

使能了- b - 001和不使能的区别,仅是加载固件的方式不同,去深究没有什么意义;建议按照默认的,不使能即可。

产品标题、图片标题、图像的起始地址等的修改,都可通过修改二级引导装载程序的源码来实现。

GGQ_in
离线
最后看到:7个月2个星期前
加入:2019-07-23 04:41
谢谢您的解答

谢谢您的解答

CYibin
离线
最后看到:8个月3个星期前
工作人员
加入:2017-12-14 02:48
不客气~

不客气~

主题锁定