Linux内核移植-------操作笔记

Linux内核是什么?

内核可以简单的理解为许多模块化代码的堆积,通过有机的联系构成一个系统。你可以删除内核模块或增加自己的写的功能模块,这样就达到了裁剪系统的操作。

 

裁剪一个属于自己的系统分为几步?

分为以下三步:

第一步:制作uboot

          需要准备的资料:源码包  (官网提供,如友善之臂的4412,对应uboot_tiny4412-sdk1506.tar.bz2)

                                     SD卡  (需要大的那种,因为接口是MMC)

                                      Securecrt工具  (工具,用于与开发平台通讯,COM转USB连接)

                                      SD-Flasher (工具,制作烧写用SD卡)

                                      交叉编译器(开发板指定,一般为arm-linux-****)

          制作过程描述:解压源码包,make生成bl1.bin 、bl2.bin 、uboot.bin,执行脚本sd_fusing.sh将其写入SD卡

          (此时,可以在开发板上运行uboot,类似于bios,可以通过SecureCRT进行简单的命令操作,help查看所有命令)

 

第二步:裁剪内核源码

            需要准备的资料:内核源码包 (开源代码,网上可以找到,如linux-3.5.buildok.tar.gz)

                                       

            制作过程:解压源码包,通过make menuconfig 的配置菜单实现裁剪,然后make生成zImage,最后创建并编写烧入脚本sd_fusing.sh

sd_fusing.sh编辑如下

 

#!/bin/bash

if [ -e /dev/sdb ]
then
echo fusing...
dd iflag=dsync oflag=dsync if=./zImage of=/dev/sdb seek=1057
else
echo  /dev/sdb is not find!
exit -1
fi

echo fused OK!!!

       (内核文件夹lib、include、drivers,我们可以把自己编写的驱动代码放入对应文件夹里,通过编写Makefile、Kconfig将我们写源码并入内核代码中)(我们也可以看出Makefile 、Kconfig 、 源码  三者有机联系构成一个模块存在在内核中,并在menuconfig配置菜单中显示,详情可以看下:https://blog.csdn.net/loongembedded/article/details/39376435)

          注意:内核代码的烧入时,注意脚本烧入的seek=1057( bl1.bin +bl2.bin + uboot.bin = 1057 块 )

                    sd卡前面一段我们已经存放了uboot代码,避免内核源码覆盖uboot。(不同的uboot,seek起点也不一样,我们可以自己事先du一下三个文件的大小)

 

 

第三步 :文件系统的制作

             我们通过前两个步骤,基本搭建起了系统,但系统只是“裸机”状态下运行,我可以通过SecureCRT可以看到系统不停的在刷数据。这时,我需要在这“荒芜”的基础之上慢慢建立起东西——文件系统

需要准备的资料:busybox源码包 (如:busybox-1.17.2-20101120.tgz)

          主要过程:通过busybox源码包make&&make install命令,在主目录root_fs下生成主要核心文件夹bin/ 、sbin/ 、 usr/  、linuxrc等,然后在这个基础之上,复制一些linux系统的一些文件夹来完善所要创建的文件系统,最后一步就是将文件系统挂在到开发板上了。

            详情推荐:https://blog.csdn.net/asklw/article/details/52611594

你可能感兴趣的:(Linux驱动编程(驱动层))