|
| 出处:21ic 时间: 2007-10-19 |
|
yujun0834 发布于 2007-10-12 11:13:00 各位大侠: 你们好!! (1)最近用ADS开发了一应用程序,并用其提供的bootload将该应用引导起来了。我看bootload 中有关对硬件平台进行基本的初始化,可在我应用程序中ADS下前面一段汇编代码也是对硬件平台进行基本初始化的。也就是说bootlaod运行后执行应用程序时又进行了硬件初始化,请问一定都是这种模式吗?有没有其他方法? (2)在用ADS进行调试时一直有个疑问,必须先load image到RAM中,然后在将pc指向image入口,可这时我的ram压根还没初始化啊,我的板子到好理解,里面自带有一BootROM(先对串口,RAM等初始化),可我看了44b0,或我自己画的板子等其他没带BootROM,请问各位是怎么解决的??
wl80382000 发布于 2007-10-12 16:21:00 仔细研究一下 只要汇编程序看懂 你上边问题就都解决了 这一步也是必须要经过的
sockit 发布于 2007-10-12 16:50:00 是的,其实bootloader也等于是一个跑在你硬件上的应用啊 一般bootloader引到系统启动运行后,它就不再工作了,应用或者别的操作系统都需要重新对硬件作相应的初始化。
没有用过ADS。你应该是用仿真器配合ADS的吧?仿真器会起到检测硬件的功能,你试试把ram芯片焊掉,看连仿真器的时候ADS会不会报错。
whereis 发布于 2007-10-12 19:57:00 问题(2),写命令脚本初始化硬件,再download到sdram。
hynwind 发布于 2007-10-13 11:45:00 1 确实进行了两次初始化,这没有关系的 2 ADS下载程序前需要初始化RAM的,当然也可以通过ADS直接初始化!
********************************************* * 飞凌嵌入式 * * www.witech.com.cn * *********************************************
wishcom 发布于 2007-10-15 22:50:00 44B0是从0地址开始运行的,所以一般将Nor Flash放在0地址,而Nor Flash是支持XIP的,这样你的bootloader放在0地址就可以开机自动跑了。 至于烧录bootloader到Nor Flash的0地址则是使用JTAG工具,通常是TRACE32...
yujun0834 发布于 2007-10-17 15:16:00 呵呵,首先感谢大家的回复,好象在调试之前怎么初始化SDRAM,还没人提出切实可行的方法,欢迎大家继续参与
wishcom 发布于 2007-10-17 21:35:00 bootloader = boot + loader boot的作用就是初始化各种硬件设备和CPU状态的 loader的作用就是将你的主程序(通常是OS)的一部分(Nor Flash)或者全部(Nand Flash)加载到内存中去运行之。
需要明白的是通常boot部分都是不需要内存即可运行的。 因此初始化SDRAM载boot里完成之后就可以使用内存了。
另外,不需要内存的程序可以是C程序,前提是没有任何变量(局部,全局都不行),只能存在常量和指令。 如: void main(void) { *((volatile unsigned long *)0x0C008000) = 0xFFFFFFFF; } 就可以不需要任何内存即可运行。
yujun0834 发布于 2007-10-18 14:08:00 wishcom: 你好!!看了你的回复,很精彩! 可我还有个问题。 我是用AXD调试的,首先要load image,请问load image把映象放在哪呢? 如果那位知晓AXD调试的细节,欢迎你的参与! 再次谢谢各位!!
wishcom 发布于 2007-10-18 22:57:00 AXD最多只能将映象(也就是bin/hex文件)加载到SDRAM中。 如果你希望将映象烧到Flash中,还是要用JTAG工具(简易JTAG,Trace32等)来烧录。
yujun0834 发布于 2007-10-19 14:00:00 其实在AXD进行调试前必须有段代码对sdram等进行初始化的,不然你调试的映象载到哪呢??以我用的板子为列:我就是先将板自带一redboot烧写到flash中,然后通过jtag进行调试的。有的板子,譬如;ep93xx系列中自带有一bootrom,里面就有对串口,sdram等初始化的. 研究的不深,有什么不对之出,还请指点一二,谢谢!
|
| 【关闭】 【打印】 |
|
|
|
|