- 论坛徽章:
- 0
|
移植UbootLinux整理
由于按照NFS不小心,Ubuntu罢工,不得以,自己重新把移植uboot和linux工作重新做一次,权当复习.
自己移植的是Uboot-1.2.0和 linux-2.6.14.1 到恒丰锐科(hfrk) 2410 的板子.用busybox-1.2.0 和cramfs-1.1 制作camfs.
该板子没有nor,只要64M的nand.
1.==============uboot按照编译器=====================
sudo tar -jxvf arm-linux-gcc-3.3.2.tar.bz2 -C /
//for uboot have hard float .
2.=========uboot1.2.0 移植 =======================
见附件 ubootclay2010Feb05.patch .
以下是移植说明.
修改根目录的Makefile的 cross compiler
CROSS_COMPILE ?= /usr/local/arm/3.3.2/bin/arm-linux-
修改 /home/clay/u-boot-1.2.0/cpu/arm920t/config.mk 见7(13)
屏蔽 "-msoft-float" 不要浮点 ,也可以自己编译带软件浮点的编译器.
make distclean
//清除上一次的配置
make smdk2410_config //选用2410 默认配置
make //编译,在去掉浮点后,能编译通过
修改
/home/clay/u-boot-1.2.0/board/smdk2410/lowlevel_init.S //2410 DDR时序配置
/home/clay/u-boot-1.2.0/cpu/arm920t/start.S // 添加copy uboot到ddr的代码,注意copy的页面数量要比编译出来的uboot.bin大
/home/clay/u-boot-1.2.0/include/configs/smdk2410.h //修改 nand boot的配置,nand命令,uboot启动kernel命令,传递给kernel的参数,串口波特率等等
for nand cmd & load CONFIG_BOOTARGS CONFIG_BOOTCOMMAND
/home/clay/u-boot-1.2.0/include/linux/mtd/nand_ids.h //添加 nand_flash_ids nand flash id
/home/clay/u-boot-1.2.0/lib_arm/board.c //可以添加一些打印信息,可以不添加
/home/clay/u-boot-1.2.0/common/cmd_boot.c //uboot的go 没有带CUP的id参数,所以添加,见7(9)
/home/clay/u-boot-1.2.0/drivers/nand/nand.c //for nand 的操作用到的具体的读写见7(12)
重新编译,可以进入到 uboot的命令界面
3.======================ubuntu tftp =======================
$ sudo apt-get install xinetd tftpd tftp
失败,vsftp也不能tftp访问,见7(11)
以下是成功的方法
sudo apt-get install tftpd-hpa tftp-hpa
sudo update-rc.d -f tftpd-hpa remove
clay@pan:/home$ sudo mkdir tftp
clay@pan:/home$ sudo chmod 777 -R tftp/
clay@pan:/home$ sudo chown -R nobody tftp/
sudo apt-get install xinetd
sudo gedit /etc/xinetd.d/tftp
添加以下
service tftp
{
protocol = udp
port = 69//需要添加
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
#server_args = /home/tftp
disable = no
server_args = -s /home/tftpd -p -c -U 077 -u tftpd #//表示tftp操作目录在/home/tftpd上
log_on_success = PID HOST DURATION
log_on_failure = HOST
}
sudo gedit /etc/inetd.conf 屏蔽以下语句
#tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
如果tftp不能工作,执行/etc/init.d/xinetd restart 即可
到这里,在uboot 可以用 tftp 的命令下载zImage等,用go可以执行
4========================kernel=========================
移植linux-2.6.14.1内核,见附件linuxclay2010feb04.patch.
修改
arch/arm/mach-s3c2410/devs.c //添加nand 分区 struct
drivers/mtd/nand/s3c2410.c //禁止nand ecc ,因为uboot和kernel的ecc不一样
linux/arch/arm/mach-s3c2410/mach-smdk2410.c,smdk2410_devices添加 &s3c_device_nand,让系统开机初始化nand,能从中读取cramfs
参照arch/arm/configs/s3c2410_defconfig 配置内核,也可以用make menuconfig
然后在以下步骤添加
-Boot options :noinitrd root=/dev/mtdblock2 init=/linuxrc devfs=mount console=ttySAC0,115200
same as uboot
-file system - network file system - NFS
-miscellaneous filesystem-cramfs
make (zImage)//可以成功用修改后的go运行,只是找不到rootfs
制作bootm引导的uImage
sudo cp ../u-boot-1.2.0/tools/mkimage /usr/local/bin/
gedit arch/arm/boot/Makefile
------------------------------------
quiet_cmd_uimage = UIMAGE $@
cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
-C none -a $(ZRELADDR) -e 0x30008040 \ #//使用bootm,原因见7(6)的解释
-n 'Linux-$(KERNELRELEASE)' -d $
![]()
文件:uboot_linux_patch.rar
大小:24KB
下载:
下载
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/108695/showart_2179436.html |
|