Chinaunix首页 | 论坛 | 博客
  • 博客访问: 579762
  • 博文数量: 192
  • 博客积分: 3780
  • 博客等级: 中校
  • 技术积分: 1487
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-26 10:11
文章存档

2012年(6)

2011年(160)

2010年(26)

分类: 嵌入式

2011-04-26 21:04:19

BIOS烧写问题
 
今天在mini2440中重新使用H-JTAG烧写BIOS,check的时候提示如下错误:
h-flasher
error: no flash device is selected
 
当然,刚开始是可以检测到CPU的,但flash无法检测到,同时,我选择的也是nor flash,数据连接完好。
 
搞了半天没明白,有牛人说是初始化脚本有问题,后来索性自己看了S3C2440的数据手册,和Jtag小板的原理图,自己重新写了初始化脚本,并进行了jtag settign配置。结果莫名的好了,呵呵。基本上就是看门狗的关闭,初始化时钟和存储器控制器等。

 

以下摘录自:http://blog.chinaunix.net/space.php?uid=18921523&do=blog&id=184139

 

自己写bootloader

硬件平台:

开发板:mini2440,2M norflash SST39VF1601 128M nandflash k9F1G08
主机:台式机,带有并口
连接线:JTAG小板,买开发板送的那个
软件平台:
H-JTAG1.1版本,这个版本可以烧写norflash也可以烧写nandflash,哈哈
ubuntu10.10
交叉编译链:自己利用crosstllo-ng做的arm-lwm-linux-gnueabi-xxx

首先,是H-JTAG1.1的设置:settings-》usb/LPT selections 选择LPT 因为我们用的是并口
其次,选择LPT JTAG SETTINGS
为什么这么选择是根据JTAG小板的原理图定的,附件中有,设置的引脚与JTAG小板接到并口上的引脚一一对应。

然后就是点击init 添加脚本文件FriendlyARM2440.his
接着就可以检测到cpu了:

然后点击flash -》start flash
点击load添加脚本H-Flasher_mini2440.hfc

然后在第一个选项中选择norflash的类型或者norflash的类型
在地四个选项中就可以烧写程序了。

这里讲下这两个脚本的含义,主要是进行一些初始化工作,首先看下FriendlyARM2440.his脚本:
Setmem+32-Bit+0x53000000+0x00000000 
Setmem+32-Bit+0x4A000008+0xFFFFFFFF
Setmem+32-Bit+0x4A00001C+0x000007FF
Setmem+32-Bit+0x53000000+0x00000000 
Setmem+32-Bit+0x56000050+0x000055AA
Setmem+32-Bit+0x4C000014+0x00000007
Setmem+32-Bit+0x4C000000+0x00FFFFFF
Setmem+32-Bit+0x4C000004+0x00061012 
Setmem+32-Bit+0x4C000008+0x00040042
Setmem+32-Bit+0x48000000+0x22111120 
Setmem+32-Bit+0x48000004+0x00002F50 
Setmem+32-Bit+0x48000008+0x00000700 
Setmem+32-Bit+0x4800000C+0x00000700 
Setmem+32-Bit+0x48000010+0x00000700 
Setmem+32-Bit+0x48000014+0x00000700 
Setmem+32-Bit+0x48000018+0x0007FFFC 
Setmem+32-Bit+0x4800001C+0x00018005 
Setmem+32-Bit+0x48000020+0x00018005 
Setmem+32-Bit+0x48000024+0x008E0459 
Setmem+32-Bit+0x48000028+0x00000032 
Setmem+32-Bit+0x4800002C+0x00000030 
Setmem+32-Bit+0x48000030+0x00000030 

拿第一句来说:
setmem就是往内存理写东西,32-bit就是内存是32位的 0x53000000就是内存的地址,最后一个0x00000000就是要写入的值。
所以第一句的功能就是象地址为0x53000000的寄存器里写入值0x00000000,查s3c2440的数据手册我们知道,其实就是关闭看门狗,下面的几句实现的功能,自己可一查s3c2440的数据手册了解,主要是初始化时钟和存储器控制器。
再来看看H-Flasher_mini2440.hfc脚本:
FLASH SECTION:
SST
SST39VF1601
MEMORY SECTION:
16
0x00000000
0x40000000
SCRIPT SECTION:
Setmem+32-Bit+0x53000000+0x00000000 
Setmem+32-Bit+0x4A000008+0xFFFFFFFF
Setmem+32-Bit+0x4A00001C+0x000007FF
Setmem+32-Bit+0x53000000+0x00000000 
Setmem+32-Bit+0x56000050+0x000055AA
Setmem+32-Bit+0x4C000014+0x00000007
Setmem+32-Bit+0x4C000000+0x00FFFFFF
Setmem+32-Bit+0x4C000004+0x00061012 
Setmem+32-Bit+0x4C000008+0x00040042
Setmem+32-Bit+0x48000000+0x22111120 
Setmem+32-Bit+0x48000004+0x00002F50 
Setmem+32-Bit+0x48000008+0x00000700 
Setmem+32-Bit+0x4800000C+0x00000700 
Setmem+32-Bit+0x48000010+0x00000700 
Setmem+32-Bit+0x48000014+0x00000700 
Setmem+32-Bit+0x48000018+0x0007FFFC 
Setmem+32-Bit+0x4800001C+0x00018005 
Setmem+32-Bit+0x48000020+0x00018005 
Setmem+32-Bit+0x48000024+0x008E0459 
Setmem+32-Bit+0x48000028+0x00000032 
Setmem+32-Bit+0x4800002C+0x00000030 
Setmem+32-Bit+0x48000030+0x00000030 

FLASH SECTION:
SST
SST39VF1601
MEMORY SECTION:
16
0x00000000
0x40000000
SCRIPT SECTION:

这几句其实就是设置下面图这个地方的,


剩下的就和上面是一样的了。



附两个配置文件:
 
 
阅读(1082) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~