linux内核移植过程整理

本文详细介绍了Linux内核移植的过程,包括认识Makefile如何组织编译过程,理解Kconfig配置界面选择所需功能,以及移植针对s3c2440芯片的内核。在移植过程中,涉及引导过程和启动过程,引导过程由汇编代码完成,启动过程则是C语言实现的内核初始化。通过修改顶层Makefile,成功编译出适用于目标开发板的内核文件。
摘要由CSDN通过智能技术生成

#目录

文章目录


##准备工作
去官网下载Linux内核 http://www.kernel.org./
然后解压 tar sjf linux-2.6.22.6.tar.bz2版本当然要根据实际情况来


##认识Makefile

  • 打开下载好了的Linux内核之后,我们可以发现,Linux内核中有上万个文件。这上万个文件包含了许许多多芯片的驱动程序,能供很多芯片同时使用s3c2440就是这茫茫多Linux内核所支持的芯片中的一款。
  • 这么多的文件,就是通过Makefile组织起来的。
  • Makefile决定了我的ubuntu去编译哪些文件,以及怎样去编译和如何去将这些成千上万的零散的文件链接在一起。
  • Linux内核在编译的过程中是首先从顶层的Makefile开始的,对你没有听错,在linux内核文件中,不仅仅只有一个Makefile文件,在最顶层的文件夹中有Makefile文件,在里面的子文件夹里面还有Makefile文件!编译的过程中,先从顶层的Makefile文件开始,然后递归的进入各级子目录中调用他们的Makefile文件。
    • 顶层的Makefile文件来决定哪个文件夹可以被编进内核。
  • 子文件夹中的文件的Makefile将决定这个子文件夹中的哪些文件又将要被编内核,哪些文件要编成模块,模块就是以前经常说的驱动程序啦。哪些文件还要继续进入自己的目录中使用第三级的Makefile

##认识Kconfig

  • 在上面一步,当我们将下载好了的Linux内核放入ubuntu之后,我们进入这个目录后输入make menuconfig之后,我们就可以进入Kconfig界面了。如下图:
    这里写图片描述
    在这个界面中,我们可以使用命令来配置我们的内核支持哪个芯片,以及使用哪个文件系统等等等等。我进去稍稍看了一眼,就发现了官方已经帮我们写好了的许许多多的驱动文件了,例如我们以前经常会用到的i2c等等非常底层的驱动文件,官方都已经帮我们准备好了,我们只需要再这个界面点点按钮,就可以使用了。但是往往,在系统的开发过程中,我们并不是一个一个去点击,去挑选我们的功能,以为可以用的功能实在是太多啦有没有,所以一般情况下,很多人都是先下载一个大概配置好了的内核,然后在这个已经大概配置好了的内核上进行修改,来达到自己的目的。

##移植Linux内核

  • 在移植我们所需要的Linux内核之前我们应该要搞清楚我们需要一个什么样子的内核。首先,我使用的开发板是jz2440,韦小宝一块板子。芯片为三星的s3c2440。那么很明显,我们的内核也必须要支持s3c2440,内核肯定是支持2440的,我的意思就是我们可以删减的别的不用的支持的芯片,但是不要删除有关2440的支持文件就可以了。
  • 移植Linux内核会涉及到两个部分。首先是架构、开发板的【引导过程】。然后就是后续通用的【启动过程】。
  • 【引导过程】是用汇编代码写成的。他的工作就是引导对应的芯片的启动,如设置列表,使能MMU。调用C语言start_kernel之前的常规工作。
  • 【启动过程】是用C语言写的。他的工作就是完成内核初始化的所有项目。
  • 我们首先进入顶层的Makefile文件中进行如下的修改。将185行修改为ARCH ?= arm下面一行修改为CROSS_COMPILE ?= arm-linux-
  • 之后,再make uImage即可。最终的生成结果如下图:
    这里写图片描述
    这样,我们就已经编译好了一个Linux内核文件了。并且将这个uImage存储在了arch/arm/boot/路径下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值