s3c2440 内核启动流程分析之配置和编译

一、编译流程

1- 解压缩

2- 打补丁

patch -p_ < 补丁文件

-p用于忽略补丁文件前面几个‘/’
-p1表示去掉前面1个目录

3- 配置

两种方法:

1. make menuconfig 每一项都自己配置

2. 使用默认配置,在此基础上修改

3. 使用厂家提供的配置文件

在内核目录下

find -name “*defconfig*”

/arch/arm/configs下会找到很多默认配置

make s3c2410_deconfig
会将结果保存在.config中

make menuconfig会读取.config
可以直接将厂家的config文件复制为.config

  • config_ok就是韦东山提供的配置文件

make menuconfig

  • 进入界面后,一些选项高亮的开头字母,按下之后可以直接跳转
  • 输入Y就会编译,N就不编译。M就是作为模块,事后加载。?是帮助(对配置项的帮助说明)

如果make menuconfig出错,请参考链接:http://blog.csdn.net/feather_wch/article/details/50736772

4- 编译

make
或者想生成uImage(头部+真正内核,用于uboot)

二、配置过程

配置结果:生成.config

配置项:CONFIG_DM9000

C源码:CONFIG_DM9000宏

Makefile: drivers/net/Makefile

m和f的差别体现在makefile的子目录中:
obj-y += xxx.o(会直接编译到内核中)
obj-m += yyy.o(会变成可以加载的模块)

y是加载到内核中。m是作为模块用于日后加载。

include/config/auto.conf

include/linux/autoconf.h

m和f都定义为1

三、makefile解析

第一个文件(能追踪到文件的执行)
链接脚本(内核应该放在哪里,里面内容如何排布(如代码段等部分如何摆放))

Linux kernel Makefile 文件分类

名称描述
顶层Makefile所有makefile核心
.config配置文件,在配置内核时生成。所有makefile根据.config来决定使用哪些文件
arch/$(ARCH)/Makefile对应体系结构的Makefile,用来决定哪些体系结构相关文件参与内核的生成,并提供一些规则来生成特定格式的内核映像
scripts/Makefile.*Makefile共用的通用规则、脚本
kbuild Makefiles各级子目录下的Makefile,他们相对简单,被上一层Makefile调用来编译当前目录下的文件

Linux内核makefile的详细讲解可以参考:
内核目录下\Documentation\kbuild\makefiles.txt

Linux内核代码架构图:
Linux kernel map

如何将.c文件编译进内核或者作为模块?

例如:有文件a.c, b.c
1. 编译进内核
obj-y += a.o b.o
2. 作为模块

obj-m += ab.o //名字随意
ab-objs := a.o b.o

a.c,b.c会编译成a.o b.o,然后会被链接为 ab.ko(ab名字随意)

四、内核启动流程

1. 处理uboot传入的参数

先运行自解压代码, 然后运行解压后代码(head.S,会处理机器id等)

  • 判断是否支持这个单板(uboot启动内核时传入的机器id)

  • 。。。
    挂载文件系统
    最终目的:运行应用程序(根文件系统中)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值