个人建议:如果不是在迫不得已的情况下,初学者不要用 H-JTAG 小板烧写 Nand Flash,因为烧写过程可能会遇到一些匪夷所思的情况,会浪费我们更多时间。
平台:MINI2440 NOR:S29AL016 NAND:K9F2G08U0B SDRAM:K4S561632N
工具:MINI2440或MICRO2440自带H-JTAG小板
无论是用J-LINK还是用H-JTAG来烧写Nor Flash,FriendlyARM的手册上都有详细说明。但是对于只有Nand Flash的开发板,如何将我们的第一个测试程序烧写进去?
注意:目前H-JTAG只能用于烧写Nor Flash,并不能直接烧写Nand Flash,一些开发板厂商为了节省成本,很多都省掉了Nor Flash,因此并不能用本节介绍的步骤快速简单的烧写BIOS”。然而我从网上google一下,发现很多网友都说H-JTAG可以用来烧写Nand Flash,经过试验证明H-JTAG的确可以用来烧写Nand Flash,下面来介绍如何用H-JTAG烧写Nand Flash。
1.安装H-JTAG V2.1版本
软件下载:H-JTAG V2.1 RELEASE.rar2.硬件连接
使用开发板附带的JTAG小板连接开发板的JTAG接口,开关拨到Nand Flash一侧,并打开电源。(其实烧写Nand Flash时开关拨到Nor或Nand均可以)
3.配置H-JTAG端口
<1>打开H-JTAG软件,在setttings下拉菜单下选择USB/LPT Selection,因为我们用的是并口JTAG,所以选中LPT。
<2>在settings下拉菜单下选择LPT JTAG Setting,按照下图设置即可。
4.配置初始化脚本
在H-JTAG的主界面,点击Script->Init Script,跳出Init Script窗口,点该窗口下面的Load按钮,找到并选择打开FriendlyARM2440.his文件。
5.检测目标器件
点击主菜单Operations->Detect Target,可以看到已经检测到目标器件了。
注意:初始化脚本并不是必须的,就算没有初始化脚本,也可以检测到CPU,但无法进行单步调试。其实所谓的初始化脚本也就是对ARM的几个寄存器进行设置而且,我们可以用UE打开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
是不是和我们写ARM裸机程序的初始化步骤很像,不记得的同学可以回去重新看一下:http://blog.chinaunix.net/uid-27675161-id-3368978.html
关于脚本的格式可以参考此文档: H-JTAG_USER_MANUAL_(CN).pdf 6.烧写Nand Flash
<1>点击H-JTAG主菜单的Flasher->Start H-Flasher打开H-Flasher烧写程序窗口。如图:
<2>在H-Flasher窗口菜单中选择New,新建配置
<3>在H-Flasher窗口菜单中选择
Load,选择S3C2440+K9F2G08.hfc
<4>点击H-Flasher左侧导航栏的Programming
<5>点击Check按钮,H-Flasher将会探测到开发板所用的Nand Flash型号。在Src File选择所要烧写的文件,再点击Program按钮即可。
授人以鱼不如授人以渔,下面我们就看看S3C2440+K9F2G08.hfc里面到底是什么东西,在windows下用UE打开。
FLASH SECTION:
NAND-FLASH
S3C2440+K9F2G08
MEMORY SECTION:
08-BIT X 1-CHIP
0x0
0x30000000
XTAL SECTION:
NULL
TCK SECTION:
9
5
SCRIPT SECTION:
SoftReset+++
Setmem+32-Bit+0x53000000+0x00000000
Setmem+32-Bit+0x4A000008+0xFFFFFFFF
Setmem+32-Bit+0x4A00001C+0x000007FF
Setmem+32-Bit+0x4C000014+0x00000005
Setmem+32-Bit+0x4C000004+0x0007F021
Setmem+32-Bit+0x48000000+0x22011110
Setmem+32-Bit+0x48000004+0x00000700
Setmem+32-Bit+0x48000008+0x00000700
Setmem+32-Bit+0x4800000C+0x00000700
Setmem+32-Bit+0x48000010+0x00000700
Setmem+32-Bit+0x48000014+0x00000700
Setmem+32-Bit+0x48000018+0x00000700
Setmem+32-Bit+0x4800001C+0x00018005
Setmem+32-Bit+0x48000020+0x00018005
Setmem+32-Bit+0x48000024+0x009604F4
Setmem+32-Bit+0x48000028+0x000000B1
Setmem+32-Bit+0x4800002C+0x00000030
Setmem+32-Bit+0x48000030+0x00000030
PGMOPTION SECTION:
ADDON SECTION:
是不是和刚才的FriendlyARM2440.his文件很像,它也是在做一些基本的硬件初始化工作。有人也许会问,为什么要做这些初始化,不做行不行?注意上面蓝色字样0x30000000,这是内存的起始地址,既然我们用到了内存,当然需要对它进行初始化,而内存的时序涉及到时钟,因此初始化时钟也是应该的。
记不记得2440手册上有介绍过,2440本身内部集成4K SRAM,当Nor启动时这4K SRAM映射到地址0x40000000处,当Nand启动时这4K SRAM映射到地址0x0处。因此如果我们只是想简单地烧写二进制文件到Nand Flash中,大可不必这么麻烦,直接使用内部SRAM,这样也可以避免因为未正确初始化SDRAM而出现“Error: Can't download driver to specified address.”,下面简单介绍一下配置步骤。
1 - 3 步骤照旧
4.配置H-Flasher
<1>点击H-JTAG主菜单的Flasher->Start H-Flasher打开H-Flasher烧写程序窗口。如图:
<2>在H-Flasher窗口菜单中选择New,新建一个配置
<3>点击H-Flasher左侧导航栏的Flash Selection,在右侧选择Nand Flash型号:S3C2440+K9F2G08
<4>点击H-Flasher左侧导航栏的Configuration,按下图配置
<4>点击H-Flasher左侧导航栏的Programming,点击右侧的Check来检查器件
相关配置文件下载:
友善自带配置文件(只针对Nor Flash烧写):
FriendlyARM2440.his H-Flasher_mini2440.hfc MINI2440 NOR:S29AL016 NAND:K9F2G08U0B SDRAM:K4S561632N 配置文件:MINI2440_XPJ.his MINI2440+K9F2G08.hfc MINI2440+S29AL016.hfc 提醒:用 H-JTAG 烧写 Nand Flash 时,如果 flash 里面原先就有程序,烧写有可能不成功,虽然 H-JTAG 软件提示 success ,因此烧写过程要多加留意。