您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> Boot ROM的过程是固定的吗?
本帖共有2731个阅读者
发表帖子 发表投票 回复主题
Boot ROM的过程是固定的吗?
SarahWang(论坛新手)
SarahWang
头衔:社区公民
帮派:无帮无派
帖数:8
金钱:185
积分:11
注册时间:2012/7/14
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
Boot ROM的过程是固定的吗?

我阅读了Engineer-to-Engineer Note 240,认为Boot ROM的过程是固定的,当BMODE=11时,先确定SPI flash的位数,再加载并执行init code,然后返回Boot ROM加载init code之后的代码……加载完后到0xFFA0 0000开始执行应用程序。

请问我的理解对吗?Boot ROM的过程是固定的吗?

如果生成的ldr中没有添加init code,Boot ROM会不会将ldr中的头10个字节认为是init code的头呢?Boot ROM的过程会顺利完成吗?


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/9/20 15:23:36
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

Boot Rom过程是固定的,但对于SPIFlash,不会娶判断SPIFlash的位数,而是始终以8Bit位数加载。

LDR中每一块的代码都有10个字节的头文件,其中包含4个地址,4个大小,4个标志位。如果没有加载init code,是不会将最初的代码认定为init code的,Bootrom的过程可以顺利完成,但如果你的SDRAM没有被初始化,那么加载到SDRAM的数据全是错误的,会导致程序无法执行


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/9/20 19:23:01
guogui417(论坛新手)
guogui417
头衔:社区公民
帮派:无帮无派
帖数:13
金钱:197
积分:13
注册时间:2012/9/19
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
学习了!

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/9/20 20:53:41
SarahWang(论坛新手)
SarahWang
头衔:社区公民
帮派:无帮无派
帖数:8
金钱:185
积分:11
注册时间:2012/7/14
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

如果Boot ROM 是固定的,假设没有init code,那么Boot ROM 也是先发地址0x0000读10个字节,再发地址0x000E读10个字节,然后根据后面的10个字节加载,加载完之后如果没有遇到RTS(init code最后一条指令)就再读10个字节的头,这样不断的加载下去吗? 加载结束后是不是跳到EVT1寄存器中的所存储的地址去执行应用程序啊?我现在遇到了boot的问题,所以想先了解一下Boot的具体过程,不懂得太多,请理解。

我现在遇到的问题是这样的,我们使用的不是Visual DSP++而是另一种编译软件,之前用的BMODE=00模式boot,不要需要Boot ROM,现在换了SPI flash需要用BMODE=11模式boot,用到了Boot ROM,但是我们最终download到flash的hex文件是Motorola S Record 格式的,可能在每个块的头上没有10字节的文件头(我也不太了解Motorola这种hex文件的格式),所以就加载不成功。是不是Boot ROM只适用于Visual DSP++生成的LDR文件啊?


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/9/21 18:11:28
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

BOOT读取10个字节后,会根据10个字节的大小,读取后面的数据,并不是再读取10个字节。然后会根据10个字节上的地址将数据放入指定的地址。如果是init_code,则会先执行,然后释放占用的空间。直到读取标志为最后一个块时,会停止加载代码。

在VDSP下有个BOOTROM加载的模拟代码,你运行一下看看过程。

BF533上,只有00模式不包含BOOTROM。但需要通过NORFlash启动,常用于启动uboot。

SPI模式貌似没有不执行BOOTROOM的,必须是VDSP生成的LDR文件。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/9/21 20:37:55
SarahWang(论坛新手)
SarahWang
头衔:社区公民
帮派:无帮无派
帖数:8
金钱:185
积分:11
注册时间:2012/7/14
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

非常感谢!

我现在将代码download到我们的板子上,从示波器上看,读完10个字节后就没有任何信号了,请问能否在Visual DSP++看有没有Boot成功啊?


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/9/24 14:01:06
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

读完10个字节没信号了,说明DSP读到了错误的数据,停止了读取,肯定没有成功。

通常判断成功没成功就是看代码的运行状态,你可以在代码中加一个点灯代码,让每次执行前灯闪烁两下,加以判断


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/9/24 21:02:21
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159262 Call, 1 Queries, Processed in 0.031250 second(s),