参考文件:
7重新烧写JZ2440的整个系统frank.docx

设置开发板环境,启动开发板进入uboot:
OpenJTAG> setenv serverip 192.168.1.106
OpenJTAG> setenv ipaddr 192.168.1.200

OpenJTAG> ping 192.168.1.106
ERROR: resetting DM9000 -> not responding
dm9000 i/o: 0x20000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
could not establish link
host 192.168.1.106 is alive

保存环境变量:saveenv

使用mtdpart查看开发板的分区(韦东山的uboot已做nand分区)
device nand0 , # parts = 4
#: name size offset mask_flags
0: bootloader 0x00040000 0x00000000 0
1: params 0x00020000 0x00040000 0
2: kernel 0x00200000 0x00060000 0
3: rootfs 0x0fda0000 0x00260000 0

active partition: nand0,0 - (bootloader) 0x00040000 @ 0x00000000

defaults:
mtdids : nand0=nandflash0
mtdparts: mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)
——————————————————————————————————————————————————
打开tftp工具,放入要烧录的文件
烧录镜像 挂载网络文件系统 - 图1

烧写uboot

tftp 30000000 u-boot-2012.04.01.bin
nand erase bootloader
nand write 30000000 bootloader

烧录内核

OpenJTAG>tftp 30000000 uImage_4.3
OpenJTAG>nand erase kernel
OpenJTAG>nand write.jffs2 30000000 kernel (说明:增加jffs2写入,为避免nand flash有坏块出现某一bit有异常,需要将校验码写进去)
**

烧录文件系统

tftp 30000000 fs_qtopia.yaffs2
nand erase rootfs
nand write.yaffs 30000000 rootfs $(filesize)

tftp 30000000 fs_qtopia.jffs2
nand erase rootfs
nand write.jffs2 30000000 0x260000 $(filesize) // 新版uboot可以去掉括号$filesize

注意烧录不同的文件系统需要设置不同格式,否则无法挂载
< set bootargs noinitrd root=/dev/mtdblock3 rootfstype=jffs2 init=/linuxrc console=ttySAC0,115200 >

烧录设备树

nfs 32000000 192.168.3.24:/work/jz2440.dtb
nand erase device_tree
nand write.jffs2 32000000 device_tree

**

编译uboot-2012.04.01

neethan@ubuntu64:~/work/jz2440/uboot/u-boot-2012.04.01$ make smdk2440_config
Configuring for smdk2440 board…
neethan@ubuntu64:~/work/jz2440/uboot/u-boot-2012.04.01$ make

制作u-boot补丁

删除编译文件和反汇编文件
~/work/jz2440/uboot/u-boot-2012.04.01$ make distclean
~/work/jz2440/uboot/u-boot-2012.04.01$ rm u-boot.dis

重命名当前修改的文件夹,将原来的u-boot文件压缩包再重新解压一份
烧录镜像 挂载网络文件系统 - 图2
生成补丁
烧录镜像 挂载网络文件系统 - 图3

这2个编译器有什么区别?

arm-linux-gcc-4.3.2.tar.bz2 用于编译u-boot2012.04.01和linux3.4.2
arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2用于编译u-boot1.16和linux2.6.22.6

格式化nand flash

nand scrub

将uboot的环境变量重新保存到nand flash中

saveenv

测试当前nand flash中坏块

nand bad

设置参数

setenv bootargs ‘noinitrd root=/dev/mtdblock3 rw rootfstype=yaffs2 init=/linuxrc console=ttyS0,115200’

bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
bootargs=noinitrd root=/dev/mtdblock3 rw rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200

===>
setenv bootargs ‘noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0’
saveenv

============================================================================

开发板挂载 nfs

(
ifconifg eth0 192.168.1.17
mount -t nfs -o nolock,vers=2 192.168.1.103:/home/neethan/work/nfs_jz2440 /mnt

设置JZ2440v3挂载NFS网络文件系统
1、开机启动ifconfig 192.168.1.17 eth0
在/etc/init.d/rcS中加入ifconfig 192.168.1.17 eth0,开机自动启动网络服务
2、主机安装配置NFS
sudo apt-get install nfs-kernel-server portmap
vi /etc/exports
增加以下内容
/work/nfs_zjx *(rw,sync,no_root_squash)
重启NFS
sudo /etc/init.d/nfs-kernel-server restart
3、开发板中配置NFS启动
mount -t nfs -o nolock 192.168.1.120:/work/nfs_zjx /mnt

开机进入到设备手动创建xxx设备节点,前提是知道主设备号(252)

mknod /dev/xyz c 252 0