完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
C6747上电复位后从0x11700000处开始执行芯片内固化的Boot,也即RBL。根据Boot引脚的配置到相应的Falsh中拷贝程序到RAM中运行!!
如果我的程序很大,我就要写二次BootLoader程序,也就是所谓的UBL。我的想法是这样的:上电复位RBL把我写的下载在NandFlash 中的UBL拷贝到内部或外部RAM,UBL运行起 来后再从NandFlash中把剩余的程序拷贝到RAM中继续运行。现在我有这样一个疑问: UBL和应用程序都得下下载到NandFlash,那RBL在拷贝Nand中程序的时候会不会把UBL和应用程序一起都给拷贝过去???或者说在将UBL下载到Nand中的时候要加入一些信息,告 知RBL ,UBL拷贝完成,然后转到Ram中运行UBL,由UBL引导拷贝Nand中剩余的应用程序??那么加入的信息又是什么呢?? 以前给ti-China发邮件询问NandWrite工程时,他给了我一个关于RBL, UBL, ABL的介绍的链接: processors.wiki.ti.com/.../DM355_DVEVM_NAND_Reloading 里面有这样一段话:First, the RBL in the DaVinci starts executing. It examines Page 0 of the first 24 blocks of NAND flash, starting at block 1 looking for the magic number of the UBL Descriptor. If a UBL Descriptor is found, the RBL loads the UBL into the internal ARM RAM and jumps to the entry point and starts execution of the UBL. c6747的RBL应该和这个差不多,这个似乎可以解答我上面的问题,但同时又给了我另外两个困惑: 1、在开发板商提供的NandWrite工程里,UBL 描述字符赋值如下: gNandBoot.magicNum = UBL_MAGIC_SAFE; //工程中赋值 0xA1ACED00 gNandBoot.block = DEVICE_NAND_RBL_SEARCH_START_BLOCK; gNandBoot.page = 0; gNandBoot.numPage = numPagesUBL; gNandBoot.entryPoint = 0x800066c0; gNandBoot.ldAddress = 0; UBL的入口地址设置成0x800066c0,但是在应用程序的工程中在.cmd文件中向量表是放在0x80000000开始的地址处,这两个不一致呀,通过这个工程下载的程序能正常运行!!! 当然下载的程序很小没有UBL而是直接下载的应用程序!!! 现有AISgen生成的bin文件,4128字节,而我的Nand是第页2k字节的,下载时按理只要3页就可以了,用这个NandWrite工程下载程序时会在第四页写入UBL字符: 0x26000220 0xA1ACED00 0x800066C0 0x00000003 0x00000001 0x00000001 0x00000000 除第一个字外,剩下的几个字刚好就是下面这个结构体的内容 typedef struct [ Uint32 magicNum; // Expected magic number 0xA1ACED00 Uint32 entryPoint; // Entry point of the user application 0x800066C0 Uint32 numPage; // Number of pages where boot loader is stored 0x00000003 Uint32 block; // Starting block number where User boot loader is stored 0x00000001 Uint32 page; // Starting page number where boot-loader is stored 0x00000001 ??? //数据明明是从Block1的第0页开始写的,不知为什么这里却写入了1?? Uint32 ldAddress; // Starting RAM address where image is to copied - XIP Mode 0x00000000 ] NANDWRITER_Boot; 2、我自己另外又写了一个写Nand的工程,我就没有定义 UBL描述字符也就没有往nand写入UBL描述字符,但是通过我自己写的这个工程下载的程序也能正常运行!!!cmd文件中 向量表还是放在0x80000000开始的地址处,但是我没有指定UBL(当然这里是我的应用程序)的入口地址entrypoint呀!那它又是怎样实现跳转的?? 不知有没有C6747 RBL 相关文档?? RBL |
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
553 浏览 0 评论
1616 浏览 0 评论
2049 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1516 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1343 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1759浏览 29评论
2787浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1726浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1637浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1647浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 09:33 , Processed in 0.818998 second(s), Total 44, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2909