尚观6410开发板移植linux 3.6.6问题记录及经验小结

本文详细记录了在尚观6410开发板上移植Linux 3.6.6的过程,包括遇到的问题及解决方法。通过交叉编译,成功构建了针对开发板的定制内核,并在实际运行中进行了验证。总结了移植过程中需要注意的关键步骤和技术要点,为类似项目的实施提供了参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

把开发板右上角的红色启动选项开关,两个都拨到下面(NAND),连接串口,已经内置了uboot 1.16。
根文件系统使用ext2的ramdisk,由于网卡无法驱动故无法使用nfs的根文件系统,网卡驱动问题待解决。

先安装ubuntu基本开发包:
    sudo apt-getinstall build-essential bison flex automake autoconf libncurses5-dev



配置arm-linux-gcc交叉编译环境

编译最新的linux3.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
    #ifconfigeth0 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 ordirectory,解决方法:

    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

r
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值