嵌入式ARM+Linux学习记录(4)-烧写bootloader

   特别说明:一定要找一台带并口的计算机,千万不要买USB转并口线,因为USB得到的是虚拟地址,而sjf2410需要真实的物理地址。

文件: 驱动.rar
大小: 0KB
下载: 下载

 

   利用JTAG烧写

1.把25针并口线插到pc机的并口,并口线另一端与JTAG小板相连,JTAG小板JP3接口通过20针JTAG线与开发板的14 针JTAG口相连。
2.把GIVEIO.SYS(5.12kB)文件拷贝到C:/WINDOWS/system32/drivers下。
3.在控制面板经典视图里,双击"添加硬件"->点击"下一步">选择"是,我已经连接了此硬件",并点击"下一步">在已安装的硬件列表中,选择"添加新的硬件设备",并点击"下一步"->选中"安装我手动从列表选择的硬件",并点击下一步->选择"显示所有设备",并点击下一步->点击"从磁盘安装",然后点击"浏览",指定驱动为C:/Flash烧写/GIVEIO/giveio.inf 文件,点击确定,继续下一步,选择"仍然继续",最后完成.
4. 开发板跳线J8要插上短路块,(如果是烧写NOR FLASH,拔掉短路块),然后上电。
 烧写NOR FLASH or NAND FLASH 需要根据核心板上J8跳线来决定,从NOR 还是NAND 启动也是有J8跳线决定。
 J8插上短路块,复位之后将从NAND FLASH启动
 J8没插短路块,复位之后将从NOR FLASH启动
5. 打开命令行提示符,cd 进入目录"C:/Flash烧写/",然后输入sjf2410.exe /f:sbc_vivi (将bootloader文件sbc_vivi烧写到FLASH中).
会出现如下对话框
C:/>sjf2410 /f:sbc_vivi

+------------------------------------+
|     SEC JTAG FLASH(SJF) v 0.4      |
|     (S3C2410X & SMDK2410 B/D)      |
+------------------------------------+
Usage: SJF /f: /d=
> S3C2410X(ID=0x0032409d) is detected.  [注: 此处说明检测到cpu类型]

[SJF Main Menu]
 0:K9S12(56)08 prog     1:28F128J3A prog   2:AM29LV800 Prog   3:SST39VF160 Prog

 4:Memory Rd/Wr     5:Exit
Select the function to test:0   [输入0,选择FLASH型号,若烧写NOR FLASH,输入3]

[K9S1208 NAND Flash JTAG Programmer]
K9S1208 is detected. ID=0xec76
 0:K9S1208 Program      1:K9S1208 Pr BlkPage   2:Exit
Select the function to test :0   [输入0,选择JTAG对FLASH的两种功能]

[SMC(K9S1208V0M) NAND Flash Writing Program]

Source size:0h~1f523h

Available target block number: 0~4095
Input target block number:0   [输入0,选择烧写起始block块地址]
                              [然后会出现如下的烧写过程]
target start block number     =0
target size        (0x4000*n) =0x20000
STATUS:Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp  [烧写完成后,会退出,出现如下提示]
 0:K9S1208 Program      1:K9S1208 Pr BlkPage   2:Exit
Select the function to test :2   [输入2退出烧写]

6. 关闭电源,拔掉JTAG插头,将PC串口和开发板子串口1通过串口线相连,在PC机上启动"程序->附件->通讯->超级终端",设置如下:115200,8,无,1,无.

7. 打开电源,按住PC键盘的空格键,开发板上电,烧进FLASH中的程序sbc_vivi会启动运行。

用part show命令查看分区,此bootloader对FLASH的分区划分为:
Please select which region to erase : Esc to abort
0 : offset 0x0       , size 0x40000    [bootloader]
1 : offset 0x40000   , size 0x1c0000   [zImage]
2 : offset 0x200000  , size 0x1e00000  [cramfs]
3 : offset 0x2000000 , size 0x2000000  [WinCE]

以上参考了http://blog.chinaunix.net/u2/80953/showart.php?id=1864692

8.删掉sbc_vivi默认的分区信息
part del root
part del kernel
part del param
part del vivi
part save

9.建立我们自己的分区,因为sbc_vivi默认是为2.4内核做的分区,而2.6的内核很可能达到1M以上,所以需要重新分。
命令格式:part add 分区名称 offset(本分区启始地址) size(本分区大小) 类型
vivi分区大小128K,计算公式:0x00020000->十进制->131072->131072B->除以1024->128K
    part add vivi 0x0 0x00020000 0
param分区大小64K
    part add param 0x00020000 0x00010000 0
kernel分区大小1M+960K,2.6的内核所在地方
    part add kernel 0x00030000 0x001f0000 0
root分区大小61M+896K,将来文件系统所在地方
    part add root 0x00220000 0x03de0000 0
保存分区。128k+64k+1M+960k+61M+896k=64M,正好为NAND FLASH的大小。
    part save
(记住在移植内核的时候,一定要按这个分区来修改/kernel-2.6.14.1/arch/arm/mash-s3c2410/devs.c)

10。设置param信息
param set linux_cmd_line "noinitrd console=ttySAC0,115200 init=/linuxrc root=/dev/mtdblock3 rootfstype=yaffs mem=64M"
param save

 

11. 烧写内核

>load flash kernel x

然后在超级终端的菜单中选择“传送”-〉“发送文件”-〉协议选择“Xmodem”,选择编译好的zImage文件,然后发送。

 

12。烧写文件系统

>loadyaffs -e root x

然后在超级终端的菜单中选择“传送”-〉“发送文件”-〉协议选择“Xmodem”,选择编译好的my_rootfs.yaffs文件,然后发送。

(zImage和my_rootfs.yaffs如何产生的将在后面介绍)

这样bootload就成功的移植到ARM9上了。

 

你可能感兴趣的:(ARM)