打印

从事嵌入式一年多来,一直没能想清楚的问题!!

[复制链接]
3086|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yujun0834|  楼主 | 2007-10-12 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠:
   你们好!!
  (1)最近用ADS开发了一应用程序,并用其提供的bootload将该应用引导起来了。我看bootload 中有关对硬件平台进行基本的初始化,可在我应用程序中ADS下前面一段汇编代码也是对硬件平台进行基本初始化的。也就是说bootlaod运行后执行应用程序时又进行了硬件初始化,请问一定都是这种模式吗?有没有其他方法?
  (2)在用ADS进行调试时一直有个疑问,必须先load image到RAM中,然后在将pc指向image入口,可这时我的ram压根还没初始化啊,我的板子到好理解,里面自带有一BootROM(先对串口,RAM等初始化),可我看了44b0,或我自己画的板子等其他没带BootROM,请问各位是怎么解决的??

相关帖子

沙发
wl80382000| | 2007-10-12 16:21 | 只看该作者

找上几份boot程序

仔细研究一下   只要汇编程序看懂   你上边问题就都解决了
这一步也是必须要经过的

使用特权

评论回复
板凳
sockit| | 2007-10-12 16:50 | 只看该作者

-

是的,其实bootloader也等于是一个跑在你硬件上的应用啊
一般bootloader引到系统启动运行后,它就不再工作了,应用或者别的操作系统都需要重新对硬件作相应的初始化。

没有用过ADS。你应该是用仿真器配合ADS的吧?仿真器会起到检测硬件的功能,你试试把ram芯片焊掉,看连仿真器的时候ADS会不会报错。

使用特权

评论回复
地板
whereis| | 2007-10-12 19:57 | 只看该作者

.

问题(2),写命令脚本初始化硬件,再download到sdram。

使用特权

评论回复
5
hynwind| | 2007-10-13 11:45 | 只看该作者

是这样的

1  确实进行了两次初始化,这没有关系的
2  ADS下载程序前需要初始化RAM的,当然也可以通过ADS直接初始化!



*********************************************
*             飞凌嵌入式                    *
*         www.witech.com.cn                 *
*********************************************

使用特权

评论回复
6
tlyu123| | 2007-10-13 15:45 | 只看该作者

学着了

使用特权

评论回复
7
emtionmk| | 2007-10-13 22:24 | 只看该作者

推荐多看几个简单的bootloader

使用特权

评论回复
8
wishcom| | 2007-10-15 22:50 | 只看该作者

44B0是从0地址开始运行的

44B0是从0地址开始运行的,所以一般将Nor Flash放在0地址,而Nor Flash是支持XIP的,这样你的bootloader放在0地址就可以开机自动跑了。
至于烧录bootloader到Nor Flash的0地址则是使用JTAG工具,通常是TRACE32...

使用特权

评论回复
9
yujun0834|  楼主 | 2007-10-17 15:16 | 只看该作者

re

呵呵,首先感谢大家的回复,好象在调试之前怎么初始化SDRAM,还没人提出切实可行的方法,欢迎大家继续参与

使用特权

评论回复
10
wishcom| | 2007-10-17 21:35 | 只看该作者

bootloader的功能就包括了初始化SDRAM

bootloader = boot + loader
boot的作用就是初始化各种硬件设备和CPU状态的
loader的作用就是将你的主程序(通常是OS)的一部分(Nor Flash)或者全部(Nand Flash)加载到内存中去运行之。

需要明白的是通常boot部分都是不需要内存即可运行的。
因此初始化SDRAM载boot里完成之后就可以使用内存了。

另外,不需要内存的程序可以是C程序,前提是没有任何变量(局部,全局都不行),只能存在常量和指令。
如:
void main(void)
{
  *((volatile unsigned long *)0x0C008000) = 0xFFFFFFFF;
}
就可以不需要任何内存即可运行。

使用特权

评论回复
11
yujun0834|  楼主 | 2007-10-18 14:08 | 只看该作者

回复wishcom

wishcom:  
   你好!!看了你的回复,很精彩!
可我还有个问题。
  我是用AXD调试的,首先要load image,请问load image把映象放在哪呢?
如果那位知晓AXD调试的细节,欢迎你的参与!
  再次谢谢各位!!

使用特权

评论回复
12
wishcom| | 2007-10-18 22:57 | 只看该作者

AXD并不能将映象烧到Flash中

AXD最多只能将映象(也就是bin/hex文件)加载到SDRAM中。
如果你希望将映象烧到Flash中,还是要用JTAG工具(简易JTAG,Trace32等)来烧录。

使用特权

评论回复
13
yujun0834|  楼主 | 2007-10-19 14:00 | 只看该作者

re

其实在AXD进行调试前必须有段代码对sdram等进行初始化的,不然你调试的映象载到哪呢??以我用的板子为列:我就是先将板自带一redboot烧写到flash中,然后通过jtag进行调试的。有的板子,譬如;ep93xx系列中自带有一bootrom,里面就有对串口,sdram等初始化的.
  研究的不深,有什么不对之出,还请指点一二,谢谢!

使用特权

评论回复
14
wishcom| | 2007-10-19 23:02 | 只看该作者

LS的说的没错

使用特权

评论回复
15
mapleyang| | 2007-12-4 10:44 | 只看该作者

re

1 如果楼主的片子代码空间有限,那么可以将firmware硬件初始化那部分代码删掉,只要保证bootloader初始化的正确就行,我们有些就是这么干的,因为代码空间实在不够
2 说一下使用cold warrior调试的做法,在用BDM下载程序到sdram之前,需要先调用一个memory 初始化文件,对sdram等进行初始化,规划好其在片子外部的偏移地址之类的。

使用特权

评论回复
16
gliethttp| | 2008-1-5 17:20 | 只看该作者

配置脚本--可以试试下面的,希望对你能有用!

<1>斯道开发板s3c2410_config.ini文件中的内容
;--------------------------------------
com 1>进入Debugger/ARM Debugger
com 2>Choose Debugger/Other输入:axd
com 3>Command Line for non-ARM debugger输入:
com   -no** -script ....斯道开发板s3c2410_config.ini
com 4>启动axd就可以实现没有程序的空Flash下的调试了

setmem 0x48000000 0x22111120 32
setmem 0x48000004 0x00000700 32
setmem 0x48000008 0x00000700 32
setmem 0x4800000C 0x00000700 32
setmem 0x48000010 0x00000700 32
setmem 0x48000014 0x00000700 32
setmem 0x48000018 0x00000700 32
setmem 0x4800001C 0x00018005 32
setmem 0x48000020 0x00018005 32
setmem 0x48000024 0x008E0459 32
setmem 0x48000028 0x00000032 32
setmem 0x4800002C 0x00000030 32
setmem 0x48000030 0x00000030 32
setmem 0x48000034 0x00000030 32

com 2007-03-28[gliethttp]
ld gliethttp_s3c2410_test.axf

<1>9200DK开发板t91rm9200dk_config.ini文件中的内容
;--------------------------------------
com 1>进入Debugger/ARM Debugger
com 2>Choose Debugger/Other输入:axd
com 3>Command Line for non-ARM debugger输入:
com   -no** -script ....9200DK开发板at91rm9200dk_config.ini
com 4>启动axd就可以实现没有程序的空Flash下的调试了

setmem 0xFFFFF804 0xFFFF0000 32
setmem 0xFFFFFF60 0x00000002 32
setmem 0xFFFFFF98 0x2188C155 32
setmem 0xFFFFFF90 0x00000002 32
setmem 0x20000000 0 32
setmem 0xFFFFFF90 0x00000004 32
setmem 0x20000000 0 32
setmem 0x20000000 0 32
setmem 0x20000000 0 32
setmem 0x20000000 0 32
setmem 0x20000000 0 32
setmem 0x20000000 0 32
setmem 0x20000000 0 32
setmem 0x20000000 0 32
setmem 0xFFFFFF90 0x00000003 32
setmem 0x20000080 0 32
setmem 0xFFFFFF94 0x000002e0 32
setmem 0x20000000 0 32
setmem 0xFFFFFF90 0x00000000 32
setmem 0x20000000 0 32

com 2007-03-28[gliethttp]
ld gliethttp_at91rm9200_test.axf

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

47

帖子

0

粉丝