嵌入式系统学习——S3C2451之Linux移植步骤

来源:互联网 发布:西宁seo 编辑:程序博客网 时间:2024/05/17 09:47

                                                   Linux内核裁剪、根文件系统制作、系统烧录

环境

Redhat5

Mini2451开发板

linux-3.6内核

  这几天学习了linux在mini2451开发板上的移植,以及后续的简单字符设备、混杂设备和平台总线驱动的编写,深入感受到了linux的强大和魅力,现将之一一记录。


一、Uboot和Superboot

  这次linux移植,我没怎么用到uboot,主要还是使用三星自带的Superboot。uboot还没有来得及去学,只是简单的记录了一些编译uboot的命令,对于怎么把适配2440的uboot改成2451的uboot,这个还不太了解。

1、make distclean     //清除原有残留文件2、make ARCH=arm CROSS_COMPILE=arm-linux- mini2440_config   //配置uboot为2440的配置方式3、make ARCH=arm CROSS_COMPILE=arm-linux-                   //配置芯片为arm架构,交叉编译工具为arm-linux

二、linux内核的裁剪

  linux内核裁剪也是固定的几个步骤,设置好配置文件,在图形化配置界面选中需要的驱动,然后编译内核,这样就完成了内核的定制和裁剪。本实验采用的是linux-3.6内核。(所以使用到的文件都会在博文最后提供下载)

1、make distclean                               //清除原有文件2、cp mini2451_linux_config .config             //拷贝原有的2451配置文件为.config文件3、make menuconfig                              //图形化界面配置驱动等4、make zImage                                  //编译内核
  内核编译完成之后,在linux-3.6/arch/arm/boot目录下,会出现zImage文件,这就是定制完成的内核文件。


三、根文件系统制作

  根文件系统制作,本实验采用yaffs文件系统,用的的制作工具为mkyaffs2image(mktools-20130822-2451.tar.gz中)。首先在home目录下新建一个rootfs文件夹,然后在rootfs文件夹中新建etc、usr、home、mnt、tmp、opt、bin、sbin、lib、proc、sys等,将etc.tar.gz文件解压到rootfs文件下,这样在rootfs/etc目录下会生成一些配置文件。

最后一步就是生成一些其他文件夹文件,采用busybox-1.20.2-p1-Mini2451.tgz工具。


1、解压busybox-1.20.2-p1-Mini2451.tgz到home目录,进入解压后目录

2、make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig 显示图形化配置界面

3、Busybox Setting->Build options ->Build busybox as a static binary, 选中, 静态链接

4、Busybox Setting->Build options ->Cross Compiler prefix  配置编译工具为 arm-linux-

5、busybox settings--> Installation option->BusyBox installation prefix 配置安装路径

6、编译make ARCH=arm CROSS_COMPILE=arm-linux-

7、安装 make install

  这几步完成之后,可以看到rootfs/usr目录下会出现很多的文件,剩下的还有一步就是复制c库:

cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/ld-linux.so.3   rootfs/lib/cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/libc.so.6   rootfs/lib/

这样,简单的根文件系统就做好了,接下来就是对rootfs文件系统制作镜像,采用的是mkyaffs2image工具,生成rootfs.img镜像文件。


四、系统烧录

  经过了前三个步骤,烧录的准备工作就完成了,接下来就是正式往开发板烧录系统,烧录系统有两种方法,我将之称为卡刷和线刷。

1、卡刷

准备SD卡一张,采用SD-Flasher.exe工具,将SD卡设置为需要的类型。


这边选中Mini2451,在下方点击Scran,如果Available显示No,点击ReLayout!然后在点击Scan,就可以使用卡刷了。


将image文件夹(网盘中有)拷贝到SD卡中,打开FriendlyARM.ini文件,将USB-Mode改为No,确保linux的BootLoader、Kernel和rootfs文件系统路径正确。将开发板启动模式改为SD卡启动,等待刷系统成功,再把开关拨动到Nand启动即可。


2、线刷

  打开MiniTools,将开发板拨动到Nand,按住独立按键的第一个键,重启即可,选中BootLoader、Kernel和rootfs文件系统,开始刷机,刷完后按下图中选中按钮。


线刷成功!


本实验用到的工具:

Superboot:                                     http://pan.baidu.com/s/1skMWUIx

uboot:                                             http://pan.baidu.com/s/1eRI9BrG

linux-3.6内核:                                 http://pan.baidu.com/s/1micahJU

etc.tar.gz:                                          http://pan.baidu.com/s/1kVQNi31

busybox-1.20.2-p1-Mini2451.tgz:     http://pan.baidu.com/s/1jHZw2aU

mktools-20130822-2451.tar.gz:        http://pan.baidu.com/s/1kV9mp07

MiniTools:                                         http://pan.baidu.com/s/1qYG3Dla

SD-Flasher.zip:                                 http://pan.baidu.com/s/1geDNSiR

卡刷linux包:                                    http://pan.baidu.com/s/1gf9usCj