免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1866 | 回复: 0
打印 上一主题 下一主题

2410移植uboot和linux内核 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-07 15:00 |只看该作者 |倒序浏览
                        移植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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP