|
|
如下讲如何配置内核及如何添加新设备。
6 U# s. U+ {4 t# \& k( P; G! a/ X- &nBSP; 内核的配置有三种方式:
: S8 U, L$ ]% s8 r: I 1.make config 文本配置方式;
6 q" `( z+ U: U7 v3 `2.make menuconfig 菜单配置方式;
) c7 K/ U( d1 i2 L. y0 y3.make xconfig 图形界面配置方式(需安装qt)。1 e) p3 u# v2 d5 K7 n2 `
可以采用任何一个方式配置内核,一般推荐使用make menuconfig来配置内核。
" g! @" P" u w3 V$ [: u终端输入命令:make menuconfig,打开内核配置界面。" F) a( D7 S9 V* e6 V, R5 o E( R
" z* r* {0 H/ F0 P
- 配置界面的操作方法及说明:3 g0 p9 s% {$ k$ I2 C# x, ?
1.按y包含进系统;) s6 j% }- R; ?' \- l
2.按n不包含进系统;& C% L& _1 i2 K S
3.按m作为模块包含进系统;2 V" Z8 ~0 J) N* c$ `1 s5 f+ h
4.按Esc键返回上一级菜单;
. B$ H, k( k; q; O2 Y5.按方向键选择菜单;
. n/ L' ]! B* H3 o! }6.表示已包含;
/ q2 w; }; D( _: n7.[ ]表示未包含。
: I+ w% G0 v$ N, w; N. j内核裁剪需要根据项目需求,这里介绍一些必须包含的选项,其余根据个人需求包含或删除。General setup-->system V IPC (IPC:Inter Process Communication)是组系统调用及函数库,程序运行必备的,必须包含。
, z: L' u1 n0 @9 f/ S在所有需要的选项配置完毕之后,按Esc退出,选择Yes保存。
* c* ^: d) Y. M4 J设置好交叉编译器后,终端输入命令:make,然后就是漫长的等待,编译完成后在./arch/arm/boot/目录下生成zImage。
0 t- f1 F9 B% s: e( {; S- 内核添加新设备(LED驱动为例)
4 R/ P: o% f9 Q3 ]3 J 在kernel\drivers\char\目录下创建一个led目录,之后编写的led驱动代码将放在这个目录中。
5 J1 ~' ~ Q( V/ k6 `$ C( P& C: [修改kernel\drivers\char\目录中的Makefile将led目录包含进去。
1 J6 ]& ]2 _7 F4 |% Q" u0 R即:在Makefile中添加 obj-y += led/ 即可。
( w% A5 n3 Y; {9 G% O: s _3 F- obj-y:表示由xx.c 或者 foo.s 文件编译得到foo.o 并连接进内核。
- obj-m: 则表示该文件作为模块编译。
# [# C' q7 U9 D; ?& ]8 z- c 除了y、m以外的obj-x 形式的目标都不会被编译。
N" \& T( U% \在led目录中添加Makefile文件和Kconfig文件,并添加如下内容:' J/ I4 r- Z* A
Makefile文件:+ F, W. u: ` }+ U% U6 z. ^
obj-$(CONFIG_MY_LED_DRIVER) += my-led.o
( C; Z! o; j0 i' H/ ?Kconfig文件:
9 j6 O) j5 c6 x% @config MY_LED_DRIVER! ]: d$ C+ v) h7 `. a9 Y
bool "my led driver"- v3 a8 N1 q$ R
default y
% @: N; f5 w! l6 thelp" |! d; u% I \
compile for leddriver,y for kernel,m for module.9 S/ c/ o9 C+ Z% Y( X
这部分内容远远不止这些, 更多资料建议网上查询或买本书9 r' N- X5 t( N
|
|