一级bootloder
本项目是EOS平台的PBL(Primary Bootloder),它被固化到BootROM中,作为平台的最初启动件。
设计约束
1.Romcheck由硬件完成,软件可以根据启动状态来记录它
2.不论RomCheck是否成功,PLL检测还是会进行的。PLL检测与Romcheck并无关联
3.如果PLL锁频成功,那么BootStrap Pin会影响是否切换高频,当BootStrap Pin被拉高时,保持低频启动
4.UART0 波特率被固定在 256000 Hz,平台使用该数值时,误差偏小
5.QSPI0 分频后的时钟固定在 15MHz左右,涉及到多个厂商的驱动,他们有一些差异,目前为了简化设计而稳定在该频率
6.目前Flash厂商仅支持:
WinBond
Cypress
ISSI
7.QSPI目前为了速率考虑均使用如下配置:
Quad IO Mode(4线数据传输)
地址均是4-Bytes Address(可访问空间足够大)
8.SBL镜像可存放的地址有两个
0x00000000U:从Flash的起始地址开始
0x00800000U:从Flash的8M地址开始
9.SBL头部占用20个字节,格式规定如下:
4个字节的固有标识:0xDA7E2022
4个字节的镜像加载位置:sbl_image_address
4个字节的镜像加载长度:sbl_image_length
4个字节的镜像入口地址:sbl_entry
4个字节的Header Flag信息,内置一个字节的校验sbl_checksum(异或校验, BCC算法)
10.SBL启动地址可以灵活配置为sbl_entry所在地址,该SBL头部信息应该由脚本统一自动生成
11.IAR编译选项不应该开启压缩指令集©,否则同步异常处理会出错
12.由于内置实现了UCP的强大功能,所以PBL拥有独立的进行内存读写和下载Flash的能力