尚观6410开发板移植linux 3.6.6问题记录及经验小结
把开发板右上角的红色启动选项开关,两个都拨到下面(NAND),连接串口,已经内置了uboot 1.16。
根文件系统使用ext2的ramdisk,由于网卡无法驱动故无法使用nfs的根文件系统,网卡驱动问题待解决。
先安装ubuntu基本开发包:
sudo apt-get
install build-essential bison flex automake autoconf
libncurses5-dev
配置arm-linux-gcc交叉编译环境
编译最新的linux
3.6.6内核,直接使用s3c6400_defconfig编译通过,且基本能用(dm9000网卡无法驱动)
安装uboot 的mkimage用于生成uImage及处理ramdisk:
sudo apt-get
install u-boot-tools
安装ramdisk生成工具:
sudo apt-get
install genext2fs
创建rootfs文件夹,创建最基本的根文件系统结构:
mkdir bin
sbin dev etc lib proc sys usr mnt tmp var root
编译busybox并安装到刚才创建的roofs目录下去
创建rootfs/etc/init.d/rcS文件:
#!/bin/sh
mdev
-s
/bin/sh
#ifconfig
eth0 192.168.1.150
#mount -a
rootfs生成最基本的设备文件:
mknod -m 666
console c 5 1
mknod -m 666
null c 1 3
加载ramdisk出现can't open /dev/tty2: No such file or
directory,解决方法:
ln -sf /dev/null /dev/tty2
ln -sf /dev/null /dev/tty3
ln -sf /dev/null
/dev/tty4
genext2fs用法:
genext2fs -b
[目标ramdisk文件大小,1024的整数倍] -d [rootfs所在文件夹名] [ramdisk文件名]
-b后接的值就是生成的ramdisk的文件大小,不要设定太大,只要比rootfs所在文件夹稍大即可
用mkimage处理ramdisk示例(若不处理,则会提示bad magic number):
mkimage -n
"RAMFS" -A arm -O linux -T ramdisk -C none -a 51800000 -e 51800040
-d ramdisk ramdisk.img
5180000是ramdisk在内存中的地址,51800040是偏移量,"ramdisk"是原ramdisk文件名,"ramdisk.img"是处理后的ramdisk文件名
加入busybox之后,制作的ramdisk无法启动,提示/linuxrc无法执行,可能的解决方法之一:
需要把交叉编译工具链里面的库(至少要把/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib下面的所有文件)
放到rootfs/lib下面,再重新打包ramdisk
再确保有执行权限,chmod -R a+x rootfs
ramdisk不要使用gzip压缩,无论是mkimage处理后再压缩还是压缩后再处理,都无法启动.
加载根文件系统时提示:RAMDISK: image too big!解决方法:
不需要重新编译内核,修改uboot的bootargs,在后面加上ramdisk_size=20480,这个值不能比ramdisk的文件小
因为3.6.6内核默认的启动选项是优先加载bootloader传入的启动参数
一个使用ramdisk的根文件系统的bootargs示例如下:
setenv
bootargs root=/dev/ram rootfstype=ext2 init=/linuxrc
console=ttySAC0,115200 ramdisk_size=20480 mem=128M
下一步目标,解决dm9000网卡驱动问题,并使用NFS挂载根文件系统。
U-Boot 1.1.6 (Sep 16 2011 - 14:10:18) for SMDK6410
****************************************
** UP-S3C6410
Nand boot
v0.18
**
** ShenZhen
Uplooking Technology **
**
Http://www.uplooking.com
**
****************************************
CPU:
S3C6410@532MHz
Fclk = 532MHz, Hclk = 133MHz, Pclk = 66MHz, Serial = CLKUART (SYNC
Mode)
Board: SMDK6410
DRAM: 128
MB
Flash: 0 kB
NAND: 256
MB
In:
serial
Out:
serial
Err:
serial
dm9000 i/o: 0x18000300, id: 0x90000a46
MAC: 00:40:5c:26:0a:5b
operating at unknown: 15 mode
Hit any key to stop autoboot: 0
uplooking # tftp 0x50800000 zImage
dm9000 i/o: 0x18000300, id: 0x90000a46
MAC: 00:40:5c:26:0a:5b
operating at 100M full duplex mode
TFTP from server 192.168.1.103; our IP address is
192.168.1.150
Filename 'zImage'.
Load address: 0x50800000
Loading:
#################################################################
#################################################################
#################################################################
#################################################################
###############################
done
Bytes transferred = 1488096 (16b4e0 hex)
uplooking # tftp 0x51800000 ramdisk.img
dm9000 i/o: 0x18000300, id: 0x90000a46
MAC: 00:40:5c:26:0a:5b
operating at 100M full duplex mode
TFTP from server 192.168.1.103; our IP address is
192.168.1.150
Filename 'ramdisk.img'.
Load address: 0x51800000
Loading:
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################