个人建议:如果不是在迫不得已的情况下,初学者不要用 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,按照下图设置即可。
                

7020 jtag烧写emmc jtag烧写flash原理_初始化


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烧写程序窗口。如图:
   

7020 jtag烧写emmc jtag烧写flash原理_初始化_02

   
    <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烧写程序窗口。如图:
   

7020 jtag烧写emmc jtag烧写flash原理_初始化_02

  
    <2>在H-Flasher窗口菜单中选择New,新建一个配置
    <3>点击H-Flasher左侧导航栏的Flash Selection,在右侧选择Nand Flash型号:S3C2440+K9F2G08
    <4>点击H-Flasher左侧导航栏的Configuration,按下图配置
     

7020 jtag烧写emmc jtag烧写flash原理_初始化_04

   
    <4>点击H-Flasher左侧导航栏的Programming,点击右侧的Check来检查器件
   

7020 jtag烧写emmc jtag烧写flash原理_初始化_05

  

相关配置文件下载:
友善自带配置文件(只针对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 ,因此烧写过程要多加留意。