殿玉箫 发表于 2013-3-20 10:29:23

如果在skyeye s3c2410上移植armlinux没有成功请进!!!

背景:

我尝试了自己在skyeye移植自己做的armlinux内核到skyeye模拟器中,网上有
构建 arm-linux 仿真运行环境 (skyeye + arm-linux + NFS)
有关文章,我是按照那里的步骤自己移植系统,不过没有成功 所以我就搜索了一下在网上有宋宝华老师做好的镜像文件可以拿来直接使用,那个可以直接运行的而且功能挺齐全的,方便没有移植成功的人 不过需要下载与ldd6410相同版本的内核,和交叉编译器。当然我也碰到了一些问题,在下面可以看到:







ldd6410用例介绍:
以下是转载过来的我自己还没有试过从开始的步骤移植,而是用后面说的下载链接,直接下载移植好的镜像文件,而且能够使用:



使用skyeye运行LDD6410的U-Boot和内核
01月 5th, 2010 by 宋宝华
支持如何功能:
cs8900网卡
320*240 16bpp LCD
tftp
nfs
u-boot
linux-2.6.31
busybox
从u-boot引导linux-2.6.31
主机端配置安装skyeye
在主机端执行:
sudo apt-get install skyeye
安装配置tftp服务器
在主机端执行:
sudo apt-get install tftpd-hpa
   sudo mkdir /home/tftp
   sudo chmod 777/home/tftp
   sudo vim /etc/default/tftpd-hpa
修改文件内容为:

RUN_DAEMON="yesOPTIONS="-l -c -s /home/tftp"

开启tftp服务:
sudo /etc/init.d/tftpd-hpa startStartingHPA's tftpd: in.tftpd.

skyeye target从主机下载文件的方式是:
tftp -r file -g 10.0.0.1
安装配置NFS服务器

在主机端执行:
   apt-get install nfs-kernel-server
   cd /home
   sudo ln -s tftp nfs
   sudo vim /etc/exports
修改该文件内容为:
/home/nfs      *(sync,rw)
运行exportfs -rv 开启NFS服务:
   /etc/init.d/nfs-kernel-server restart
在skyeye target上mount nfs的方法是:
mount -t nfs -o nolock 10.0.0.1:/home/nfs /mnt

编译uboot、内核和文件系统编译u-boot

进入工程源代码目录ldd6410/s3c-u-boot-1.1.6,运行make smdk2410_config,接着运行make得到u-boot映像。
编译内核
将ldd6410项目ldd6410/patches/2410-skyeye_ldd6410-project.patch拷贝到linux 2.6.31源代码目录,打patch:
patch -p0 <2410-skyeye_ldd6410-project.patch
接着运行: make smdk2410_skyeye_defconfig配置内核 make vmlinux得到内核的vmlinux映像。


制作根文件系统initrd.img
进入ldd6410工程代码的如下目录:ldd6410/utils/busybox-1.15.1 运行make menuconfig选择必要的项目,然后运行make,make install。make install运行的结果是会生成install,busybox对应的linuxrc, /bin, /sbin, /usr就在该目录了。
有了 busybox 后制作 initrd.img 就容易多了,只是说起来比较烦琐。
以命令演示如下:
创建映像文件并挂到 initrd 目录
mkdir initrd
   dd if=/dev/zero of=initrd.img bs=1k count=4096
   mke2fs -F -v initrd.img
   mount -o loop initrd.img initrd

将添加 busybox 到此映像文件
cd initrd
   cp -r ../_install/* .
创建必要的目录
mkdir proc lib etc dev root home var tmp
    chmod 777 tmp
建立设备文件
cd dev
    mknod -m 644 console c 51
    mknod -m 644 nullc 13
    mknod -m 640 ram b 11
    mknod -m 644 mem c 11
    cd ..
创建脚本文件 etc/inittab, 内容如下:
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
设置此脚本执行权限
chmod 644 etc/inittab
创建脚本文件 etc/init.d/rcS, 内容如下:

#!/bin/sh
/bin/mount -t proc none /proc
/sbin/ifconfig lo 127.0.0.1 up
/sbin/ifconfig eth0 10.0.0.2 netmask 255.0.0.0 up
hostname skyeye
mkdir /var/tmp
mkdir /var/log
mkdir /var/run
mkdir /var/lock
/bin/ash
设置此脚本执行权限
chmod 755 etc/init.d/rcS
最后一步,执行实际的写入操作,生成 initrd.img
cd ..
umount initrd

运行
将编译得到的u-boot、vmlinux、initrd.img放入同一目录,将vmlinux拷入tftp服务器根目录。
可以直接运行Linux,使用http://ldd6410.googlecode.com/files/ldd6410-skyeye-pack.tar.gz 中的skyeye-standalone.conf配置文件,
结合内核映像vmlinux:
sudo skyeye -e vmlinux -c skyeye-standalone.conf
也可以先启动u-boot,然后在uboot中下载vmlinux并启动它,使用http://ldd6410.googlecode.com/files/ldd6410-skyeye-pack.tar.gz 中的skyeye-with-uboot.conf 配置文件,
结合先前编译得到的u-boot:   sudo skyeye -e u-boot -c skyeye-with-uboot.conf
在u-boot正常启动后,
从tftp服务器下载vmlinux:
   tftp 0xc0000000vmlinux
接着运行bootelf 0xc0000000,Linux内核开始启动。

http://ldd6410.googlecode.com/files/ldd6410-skyeye-pack.tar.gz 包含了已经做好的映像,可以直接运行。










我是用的环境:主机:fedora14 虚拟器:skyeye-1.3.3 ldd6410-skyeye    交叉编译器:arm-linux-gcc-4.2.2 下载的内核:linux-2.6.31.6



由于自己移植系统还是有很多地方不明白出现错误解决了很多次还是没有成功
所以就在http://ldd6410.googlecode.com/files/ldd6410-skyeye-pack.tar.gz
下载了别人做好的镜像
不过还需要自己下载linux内核
下完之后编译的模块出现了问题:
提示的是:version magic '2.6.31.6 mod_unload ARMv4 ' should be '2.6.31.6-svn79'

我就根据网上提示的方法更改了内核的名称之后就通过了还可以加载但是又出现的问题是不能卸载:


根据网上的经验和书上的方法是:
# mkdir -p /lib/modules/'uname -r' 建立一个文件夹 将驱动cp 那个文件夹里 加载卸载就可以了 可是我试过没有成功





不过这个用例可以通过nfs挂载 挺方便的 不过好像有个小毛病就是不能按方向箭头 ,按了会使skyeye停止运转,就不得不重运行了

还有很多问题 我会慢慢传上来 希望与大家分享和解决 谢谢

[ 本帖最后由 殿玉箫 于 2013-3-20 12:04 编辑 ]

殿玉箫 发表于 2013-3-25 21:07:14

发帖时没有看到这个 试过了 挺好用的!

http://forum.linuxfans.org/thread-197811-1-1.html
页: [1]
查看完整版本: 如果在skyeye s3c2410上移植armlinux没有成功请进!!!