Chinaunix首页 | 论坛 | 博客
  • 博客访问: 204660
  • 博文数量: 56
  • 博客积分: 1085
  • 博客等级: 少尉
  • 技术积分: 652
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-29 13:50
文章分类
文章存档

2014年(4)

2012年(25)

2011年(27)

我的朋友

分类: 嵌入式

2014-02-18 17:15:34

/**********************************************************************************/
2014/2/14 10:20:25
修改移植linux内核,版本linux-2.6.33
之前无法通过编译,出现错误在yaffs文件编译,而且编译出来的zImage
小于2M,但编译出来的uImage却大于2M。不符合nand分区空间!
制作uImage文件:(发现制作的源文件就大于2M,此次改为小于2M的zImage文件作为源文件)
/home/hyx/u-boot-1.1.6/tools/mkimage -A arm -O linux -C none -a 0x30008000 -e 0x30008000 -d zImage uImage
nfs 30000000 10.1.30.100:/home/hyx/linux-2.6.22.6/arch/arm/boot/uImage
nand erase 60000 200000
nand write 30000000 60000 200000
reset(可以启动)注:若几次nfs不上,就先ping几次主机。
移植linux-2.6.22.6内核。参照FL2440开发板内核移植笔记(加载DM9000网卡驱动).txt
/home/hyx/u-boot-1.1.6/tools/mkimage -A arm -O linux -C none -a 0x30008000 -e 0x30008000 -d zImage uImage
nfs 30000000 10.1.30.100:/home/hyx/linux-2.6.22.6-hyx/arch/arm/boot/uImage
nfs 30000000 10.1.30.100:/home/hyx/linux-2.6.22.6-hyx/arch/arm/boot/uImage-hyx-2.6.22.6


nand erase 60000 200000
nand write 30000000 60000 200000
nfs 30000000 10.1.30.100:/home/hyx/nfs_root_hyx/fs_mini_hyx.yaffs2(自己制作的fs文件可以使用)
nand erase 0x260000 0x7DA0000
nand write.yaffs 0x30000000 0x260000 $(filesize)
reset
出现:
Error: unrecognized/unsupported machine ID (r1 = 0x0000016a).362
Available machine support:
ID (hex)        NAME
000000c1        SMDK2440   193
修改arch/arm/tools/mach-types 
首先删除以下行:
s3c2410                 ARCH_S3C2410            S3C2410                 182
然后将以下行仍然保持:
s3c2440                 ARCH_S3C2440            S3C2440                 362 


重新编译下载后能正常启动!!
制作补丁文件
diff -urNwB linux-2.6.22.6 linux-2.6.22.6-hyx > linux-2.6.22.6-hyx.diff


移植2.6.33内核
/home/hyx/u-boot-1.1.6/tools/mkimage -A arm -O linux -C none -a 0x30008000 -e 0x30008000 -d zImage uImage
nfs 30000000 10.1.30.100:/home/hyx/linux-2.6.33-hyx/arch/arm/boot/uImage


nand erase 60000 200000
nand write 30000000 60000 200000
nfs 30000000 10.1.30.100:/home/hyx/nfs_root_hyx/fs_mini_hyx.yaffs2
nand erase 0x260000 0x7DA0000
nand write.yaffs 0x30000000 0x260000 $(filesize)
reset
启动失败!
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)
Backtrace: 
[] (dump_backtrace+0x0/0x104) from [] (dump_stack+0x18/0x1c)
 r7:c3870000 r6:c3870006 r5:c04b20c6 r4:c381bf5c
[] (dump_stack+0x0/0x1c) from [] (panic+0x3c/0x124)
[] (panic+0x0/0x124) from [] (mount_block_root+0x1d8/0x21c)
 r3:00000000 r2:20000013 r1:c381bf5c r0:c037a1fc
[] (mount_block_root+0x0/0x21c) from [] (mount_root+0xd0/0xf0)
[] (mount_root+0x0/0xf0) from [] (prepare_namespace+0x170/0x1d0)
 r6:00000000 r5:c0026a0c r4:c03facb4
[] (prepare_namespace+0x0/0x1d0) from [] (kernel_init+0xd8/0x10c)
 r5:c00254dc r4:c03faa98
[] (kernel_init+0x0/0x10c) from [] (do_exit+0x0/0x5a4)
 r5:00000000 r4:00000000
/**********************************************************************************/
2014/2/17 15:53:47
重新再内核中make menuconfig查看配置项
发现在支持yaffs文件一项中选择成了编译成模块。
将此项改为编译进内核,然后make zImage.
然后出现如下情况:
fs/yaffs2/yaffs_fs.c:212: error: unknown field `prepare_write' specified in initializer
fs/yaffs2/yaffs_fs.c:212: warning: initialization from incompatible pointer type
fs/yaffs2/yaffs_fs.c:213: error: unknown field `commit_write' specified in initializer
....................................
fs/yaffs2/yaffs_fs.c:2232: error: for each function it appears in.)
fs/yaffs2/yaffs_fs.c: In function `exit_yaffs_fs':
fs/yaffs2/yaffs_fs.c:2278: error: `proc_root' undeclared (first use in this function)
make[2]: *** [fs/yaffs2/yaffs_fs.o] Error 1
make[1]: *** [fs/yaffs2] Error 2
make: *** [fs] Error 2
上网查看是因为yaffs补丁文件太老,
利用git工具下载最新的yaffs2文件
首先给redhat系统装入git工具。或是用CentOS的系统yum install git
1、首先到官网上下载git包,地址为

2、输入命令tar zxvf git-1.7.9.4.tat.gz 解压文件到当前目录
3、依次执行./configure
make
sudo make install
4、安装成功之后执行git --version查看是否安装成功
然后再执行git clone git://
下载后使用新的yaffs2文件,以后在linux-2.33.6以上的内核移植编译中
使用最新的yaffs2文件(此实验中文件名为yaffs2-new-hyx)
如之前已打了补丁了,则
rm -rf ../linux-2.33.6-hxy/fs/yaffs2
rm -f ../linux-2.33.6-hxy/fs/Kconfig
删除补丁。
然后编译内核镜像下载到开发板中后,启动成功!!!
制作补丁文件:
diff -urNwB linux-2.6.33 linux-2.6.33-hyx > linux-2.6.33-hyx.diff
cd linux-2.6.33
patch -p1 < ../linux-2.6.33-hyx.diff
/home/hyx/u-boot-1.1.6/tools/mkimage -A arm -O linux -C none -a 0x30008000 -e 0x30008000 -d zImage uImage
nfs 30000000 10.1.30.100:/home/hyx/linux-2.6.33/arch/arm/boot/uImage
下载重启开发板。
启动OK!!!!
/**********************************************************************************/
2014/2/18 9:25:29
在开发板上ping了下主机,无法ping通。(针对的是linux-2.6.33-hyx内核)
# ping 10.1.30.100
PING 10.1.30.100 (10.1.30.100): 56 data bytes
ping: sendto: Network is unreachable
可能是MD9000网卡驱动的问题。移植 DM90000网卡,参考FL2440开发板内核移植笔记(加载DM9000网卡驱动).txt
编译镜像,重新加载至开发板。
make zImage
/home/hyx/u-boot-1.1.6/tools/mkimage -A arm -O linux -C none -a 0x30008000 -e 0x30008000 -d zImage uImage
nfs 30000000 10.1.30.100:/home/hyx/linux-2.6.33-hyx/arch/arm/boot/uImage
cp uImage uImage-hyx-2.6.33-dm9000-v2.0
nand erase 60000 200000
nand write 30000000 60000 200000
reset
boot
ifconfig eth0 10.1.30.200
ping 10.1.30.100


# ifconfig eth0 10.1.30.200
dm9000 dm9000.0: WARNING: no IRQ resource flags set.
eth0: link down
# eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
# ping 10.1.30.100
PING 10.1.30.100 (10.1.30.100): 56 data bytes
64 bytes from 10.1.30.100: seq=9 ttl=64 time=1006.950 ms
64 bytes from 10.1.30.100: seq=10 ttl=64 time=2.574 ms
64 bytes from 10.1.30.100: seq=11 ttl=64 time=17.740 ms
64 bytes from 10.1.30.100: seq=12 ttl=64 time=1.402 ms
64 bytes from 10.1.30.100: seq=13 ttl=64 time=1.265 ms
64 bytes from 10.1.30.100: seq=14 ttl=64 time=1.463 ms
^C
--- 10.1.30.100 ping statistics ---
15 packets transmitted, 6 packets received, 60% packet loss
round-trip min/avg/max = 1.265/171.899/1006.950 ms


diff -urNwB linux-2.6.33 linux-2.6.33-hyx > linux-2.6.33-hyx-dm9000-v2.0.diff
cd linux-2.6.33
patch -p1 < ../linux-2.6.33-hyx-dm9000-v2.0.diff
/home/hyx/u-boot-1.1.6/tools/mkimage -A arm -O linux -C none -a 0x30008000 -e 0x30008000 -d zImage uImage
nfs 30000000 10.1.30.100:/home/hyx/linux-2.6.33/arch/arm/boot/uImage
还是可以正常启动的。补丁文件正确!












阅读(1725) | 评论(0) | 转发(0) |
0

上一篇:2014-arm实验记录

下一篇:2014-arm实验记录-3

给主人留下些什么吧!~~