• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 用openjtag怎样烧写bios? 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 9817
精华: 0
发帖: 62
金钱: 330 两
威望: 78 点
贡献值: 0 点
综合积分: 124 分
注册时间: 2009-10-14
最后登录: 2012-07-31
楼主  发表于: 2010-03-24 14:40

 用openjtag怎样烧写bios?

目前bootloader无法启动,想用OpenJtag烧写,请问如何做?谢谢!
[ 此帖被alexli05在2010-03-26 09:34重新编辑 ]
级别: 侠客
UID: 9817
精华: 0
发帖: 62
金钱: 330 两
威望: 78 点
贡献值: 0 点
综合积分: 124 分
注册时间: 2009-10-14
最后登录: 2012-07-31
1楼  发表于: 2010-03-24 14:43
我的板子是micro2440 256M的,打开电源后超级终端没有任何显示
[ 此帖被alexli05在2010-03-24 14:50重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
2楼  发表于: 2010-03-24 15:47
简单的说:
在NAND Flash启动模式下,
1. 用OpenJtag下载一个可以初始化SDRAM的二进制档(OpenJtag随机光盘里的init.bin就可以)到0x0地址上,并执行;
2. 用OpenJtag下载一个带有烧写Flash和程序下载功能的bootloader到SDRAM中,并且将PC指针跳转到它在SDRAM的入口地址上执行;
3. 用这个bootloder下载你需要放在Flash中的bios到Flash中。

具体的步骤参考OpenJtag手册中关于u-boot调试的章节
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 9817
精华: 0
发帖: 62
金钱: 330 两
威望: 78 点
贡献值: 0 点
综合积分: 124 分
注册时间: 2009-10-14
最后登录: 2012-07-31
3楼  发表于: 2010-03-24 16:51
谢谢总版主的回复!
我按照OpenJtag随机光盘里的说明操作如下:
在Nand flash启动模式下:


MMU: disabled, D-Cache: disabled, I-Cache: disabled
> load_image init\init.bin 0x40000000
288 byte written at address 0x40000000
downloaded 288 byte in 0.015625s
> resume 0x40000000
> halt
target state: halted
target halted in ARM state due to debug request, current mode: Supervisor
cpsr: 0x200000d3 pc: 0x400000bc
MMU: disabled, D-Cache: disabled, I-Cache: enabled
> load_image u-boot\u-boot.bin 0x33f80000
196760 byte written at address 0x33f80000
downloaded 196760 byte in 4.140625s
> resume 0x33f80000
> halt
target state: halted
target halted in ARM state due to debug request, current mode: Supervisor
cpsr: 0x400000d3 pc: 0x33f9e794
MMU: disabled, D-Cache: disabled, I-Cache: enabled
> load_image u-boot\u-boot.bin 0x30000000
196760 byte written at address 0x30000000
downloaded 196760 byte in 4.453125s
> resume
之后超级终端无显示无法执行烧写flash,是地址烧写有误,还是程序烧写错误?地址0x40000000我有试过0x0.结果一样
其中init.bin 和u-boot.bin均为OpenJtag随机光盘里的
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
4楼  发表于: 2010-03-24 17:00
如果我对OpenJtag手册的记忆没错的话,
> load_image init\init.bin 0x40000000
288 byte written at address 0x40000000

在NAND Flash启动模式下,SRAM地址映射在0~4K,你应该把init.bin下载到0x0

如果在
> load_image u-boot\u-boot.bin 0x33f80000
196760 byte written at address 0x33f80000
downloaded 196760 byte in 4.140625s
> resume 0x33f80000

之后你能顺利看到u-boot提示符,那你可以用u-boot本身的下载功能下载uboot到SDRAM中。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 9817
精华: 0
发帖: 62
金钱: 330 两
威望: 78 点
贡献值: 0 点
综合积分: 124 分
注册时间: 2009-10-14
最后登录: 2012-07-31
5楼  发表于: 2010-03-25 16:07
操作步骤:
1. Eclipse,OpenOCD,OpenJTAGv3嵌入式开发教程 21页
2.换成台式机的串口,超级终端显示u-boot提示符。

经验证是OPENJTAG自带串口的问题

谢谢!
级别: 新手上路
UID: 10286
精华: 0
发帖: 12
金钱: 85 两
威望: 29 点
贡献值: 0 点
综合积分: 24 分
注册时间: 2009-10-30
最后登录: 2011-03-12
6楼  发表于: 2010-05-27 18:55
我照着openjtag手册上的步骤,把附带的u-boot.bin下载的内存里串口上可以打印出信息来,但是烧到nand后,重启单板,串口上没信息诶
为什么呢?
我的nand操作命令是:
1,nand erase 0 30000
2,nand write.jffs2 30000000 0 30000

另外我用自己的u-boot也是同样的情况,为什么呢?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
7楼  发表于: 2010-05-27 20:46

 回 6楼(seu080524) 的帖子

你可以在start_armboot()的入口处加上断点,如果走到了,至少说明从NAND Flash中复制到SDRAM里的过程OK。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 10286
精华: 0
发帖: 12
金钱: 85 两
威望: 29 点
贡献值: 0 点
综合积分: 24 分
注册时间: 2009-10-30
最后登录: 2011-03-12
8楼  发表于: 2010-05-30 12:30
谢谢,版主及时的回复!
明白了openjtag光盘里的u-boot.bin没有对RAM做初始化

这样的话引出了另一个问题:
利用openjtag下载Bootloader到RAM前,必须初始化RAM吗?如果是这样,下载到RAM里并且要在RAM里运行的这个Bootloader应不应该包括初始化RAM的部分呢?
最后烧写到NAND里的Bootloader是一定要包括初始化RAM的部分的
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
9楼  发表于: 2010-05-30 13:31
利用openjtag下载Bootloader到RAM前,必须初始化RAM吗?如果是这样,下载到RAM里并且要在RAM里运行的这个 Bootloader应不应该包括初始化RAM的部分呢?

如果不初始化RAM,你怎么保证下载到RAM后数据还能正确读回来?
从原理上说,已经在RAM里运行起来的Bootloader不需要也最好不要重新初始化RAM,因为那样可能会导致RAM中的数据(就是它本身)在CPU眼里突然无法正确读取出来。

但我觉得奇怪的是你的解释似乎和你遇到的问题配不起来,烧写的NAND中的uboot在把自己复制到RAM之前,一定会初始化RAM的,不是吗?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go