特别说明:一定要找一台带并口的计算机,千万不要买USB转并口线,因为USB得到的是虚拟地址,而sjf2410需要真实的物理地址。
|
利用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:<filename> /d=<delay>
> 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上了。