DM365 spi_norflash无操作系统启动和sys_bios启动(一)

项目需要:在TI的多媒体处理器DM365上跑SYS/BIOS系统,而不是通常的linux系统,而启动方式采用spi 的norflash启动。开发环境是CCS5.5


TI 官方在SPI flash启动上所提供的资料并不是很多,而且网上查找到的一些资料也基本上都是用来启动linux系统的,但是,启动的原理是一样的。也就是这样的一个流程。

DM365 spi_norflash无操作系统启动和sys_bios启动(一)_第1张图片

RBL:ARM ROM Boot Loader,UBL:UserBootloader

 

RBL 是TI固化在芯片ROM中的bootloader。DM365 在上电启动后先会运行RBL,然后通过RBL加载UBL,再通过UBL加载应用程序。

UBL 是一段小的程序,这段程序用于初始化PLL,DDR以及其他的一些外设,然后进行将应用程序代码从flash拷贝到DDR的功能。然后跳转到应用程序的入口地址。

意思就是,UBL就是用来为想要启动的应用程序配置环境,然后将应用程序导入到DDR或者片内,然后进行执行,下面就介绍本次开发所做的主要的5个实验,从片内程序的启动到SYS/BIOS系统的启动。主要的介绍实验的目的和实验中所遇到的一些问题,及解决的方法。

二:UBL描述符

UBL 的描述符是用来描述整个UBL 的大小,起始地址,和UBL 的入口地址的一段字符,如果DM365配置为SPI flash启动的话,在芯片上电的时候,DM365会自动的寻找这个UBL 的描述符,根据描述符的设置,将UBL 拷贝到片内,然后跳转到UBL的入口地址,开始执行。

DM365 spi_norflash无操作系统启动和sys_bios启动(一)_第2张图片

0-3 幻数 用来表示SPI 启动的SPI flash 的寻址方式。

4-7 入口地址,意思是编译生成的bin 文件的入口地址,可以问自己定义的boot的入口地址,也可以是_c_int00()的函数地址,经测试都是可以进行启动的。

8-11 UBL 的大小。

12  SPI 的频率配置。

13  SPI fastread模式是否开启配置。

14-15 伪字节,填零即可。

16-19 在flash中的UBL存放的起始的地址。

20-23 把flash中的UBL导入到片内的起始地址。

 

三:第一次启动实验(点亮LED,程序全部在片内)。

第一次的实验是将一个点灯的程序当做UBL来进行测试,程序全部放入片内,程序中只有一些psc使能,和PLL配置,以及gpio配置,然后拉高了LED对应的GPIO,需要注意到的问题是:

1:UBL 描述符在烧写工程中更改。

 

2:在UBL 的描述符里需要将入口地址更改为点灯程序的_c_int00,可以通过debug目录下的.map文件来找到程序的入口地址,也可以在工程属性中进行如下配置,使程序仿真的时候不直接跳到main函数。

DM365 spi_norflash无操作系统启动和sys_bios启动(一)_第3张图片

3:程序要控制到30KB以内。

 

4:bin文件的生成

DM365 spi_norflash无操作系统启动和sys_bios启动(一)_第4张图片

在command下输入:

"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin""${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin""${CG_TOOL_ROOT}/bin/armofd" "${CG_TOOL_ROOT}/bin/armhex""${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin"

在工程编译之后会在debug目录下自动生成.bin文件,然后在烧录工程中添加UBL描述符,或者手动修改bin文件添加UBL描述符,生成最终的bin文件

 

5:整个UBL烧写到FLASH的首地址0x000000.


你可能感兴趣的:(DM365)