EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
3.1 本章导读7 d0 R% w6 S5 E' l4 t( _% \. Q! |
Linux 驱动工程师一定要掌握 Linux 内核的编译方法,也就是将 Linux 内核源码,编译成针对特定硬件的二进制镜像。
$ W. d; M# X" D在前面入门视频“01-烧写、编译以及基础知识视频”→“实验 10-搭建编译环境uboot_linux_Android”中,简单的介绍过如何将 Linux 源码编译生成二进制 zImage在本章中,将更加详细的介绍这部分内容,然后介绍 Kconfig 配置文件,Kconfig 文件是和编译的 Makemenuconfig 工具配合使用的。最后还需要掌握“.config”文件的作用。' E- N2 D: u. `
3.1.1 工具
, `: {. G8 Z' z8 p; v% M2 s# W3.1.1.1 硬件工具2 [+ G3 B5 h* C5 W9 y: B
1)PC 机0 i8 ~& m# D4 Y0 K- p
3.1.1.2 软件工具! @4 T' }) S5 a" H5 J
1)虚拟机 Vmware5 r+ D5 a0 `/ |1 Y7 K% H- _
2)Ubuntu12.04.2
% S3 E u! x( q$ g# z3)Ubuntu 系统下解压生成的 Linux 源码( O" F# T& H, r) b" W. w, O3 ]
3.1.2 预备课程- S* l% {$ r% y3 O b
入门视频“01-烧写、编译以及基础知识视频”→“实验 10-搭建编译环境uboot_linux_Android”或者使用手册“五 Android 开发环境搭建以及编译”, T9 D5 i% l& o; l" t. ~' Z0 h
3.1.3 视频资源+ M. ^7 |+ \' T5 D, o! m3 T" t7 u) p9 n
本节配套视频为“视频 03_Menuconfig_Kconfig”6 b. D% c% A q9 m$ l' ?: ^
3.2 学习目标/ v' B5 j) X* {6 G
本章需要学习以下内容:7 C. z) X; Z: O6 [
掌握 Menuconfig 的用法9 r& h) }9 X5 N8 W" y7 d
理解 Kconfig 文件并掌握修改 Kconfig 的方法" `4 c. M9 n! `3 V, S. F2 J
理解配置文件“.config”
) k+ ^1 s& [: B* t6 W3 vLinux 内核配置裁减" C& q, j; }+ M& H. X4 [+ V$ S
3.3 Linux 内核配置系统6 y6 z* v$ Z1 i5 f) N% J0 O
Linux 内核配置系统由三个部分组成。# m7 ~+ ~% P' |
Makefile 文件:分布在 Linux 内核源码中的 Makefile 文件,定义了 Linux 内核的编译规则。
* t( B- d) f8 t/ K# g9 f# T$ dKconfig 文件:给用户提供配置选择的功能。8 V' d* k2 ?$ B8 F6 K
配置工具:这里使用的是 menuconfig,相比其它工具,这个工具使用的比较多,也比较
( N6 \# @) @) \1 |9 \9 q容易上手,无论哪个机构发布的 Linux 版本应该都是支持 menuconfig 的。
5 a/ @3 J# z) w# Q3.4 Menuconfig 的操作1 {$ n" p2 [9 q! ^
Linux 的裁减配置是通过 menuconfig 工具来实现的,本节介绍如何使用这个工具。9 r6 x- |+ G* H
3.4.1 Menuconfig 发展历史简介 g* T( h1 j+ E. Z
在 Linux 发展过程中,配置内核可以使用以下工具。+ y1 R' T9 C, |1 t
#make config
* T& k* a7 k7 ^0 K' G3 G4 {这是基于文本的最为传统的配置界面,不推荐使用
9 a) M9 q1 z. B( V$ d8 C#make menuconfig
! }: \* q/ w3 ^ t基于文本菜单的配置界面,现在大部分都是使用这个工具来裁减配置内核的,本章节也是8 i3 O. |( O: ]- v/ F
介绍这种方法。6 P* J! I. t2 h0 s8 ]
#make xconfig
; S% h! D: F# J3 q/ p/ X1 R要求 QT 被安装,用的比较少。. B+ U' o6 s1 _4 t2 J
#make gconfig
7 S8 {1 `4 I6 ~2 i4 E4 Y要求 GTK,用的比较少。( a6 o; c* y0 t# h/ O
上面不同的命令代表使用不同的工具,如下图所示,在源码目录下,输入命令“make/ R0 _. l, Y$ G! T- i* V0 y6 X
config”。 ![]()
2 t( p; V H' E7 o9 T如上图所示,这是一个文本类型的配置工具,根据提示“scripts/kconfig/conf --oldaskconfig Kconfig”可以知道,这种方法是旧的配置方法,虽然 Linux 内核可能会长时间的支持,但是不人性化的操作方式,会降低效率,所以现在几乎淘汰了。5 T" O5 Y" l* @3 }1 R! y
使用“Ctrl+c”可以退出配置界面,退出后,如下图所示。
![]()
# _% w' |0 R) m3.4.2 Menuconfig 操作方法
) R% W3 q& v! l$ F/ ~+ `: t1 U前面实验提到过 menuconfig 实现的代码在源码“scripts”目录下,不过这里根本不用关心它是怎么实现的,只需要掌握怎么操作即可,就像学习开车,要知道怎么打方向盘,而不需要知道方向盘和轮子之间是怎么传动的。# D' H0 H* Q4 n. J4 j7 _: ~1 j$ H( _
下面介绍 menuconfig 的操作方法。7 [& K7 B, i, a
如下图所示,在源码目录下,输入命令“make Menuconfig”。
![]()
8 w4 A% `: ^: _ D& f. B; m如下图所示,进入配置界面。这个功能界面对应配置工具,它包含配置命令解释器,对配置脚本中使用的命令进行解释;还包含了配置用户界面,用来提供字符界面和图形界面。这些配置工具都是使用脚本语言编写的,不过只用关心怎么使用。
![]()
4 H% ^1 [, K/ x; \( o如下图所示,“方向按键”中的“左右”可以选择你需要的操作。“<Select>”表示进入选择的配置界面,“< Exit >”表示返回,“< Help >”可以阅读帮助文档。
![]()
* B' Q" j" T/ \% s
如下图所示,“方向按键”中的“上下”可以选择配置的选项。 ![]()
: V5 G- K( k" A
如下图所示,输入“/”,可以进入搜索界面。 ![]()
; Q) D. J% p y0 v- x
如下图所示,这里来查找一下“leds”的驱动,输入“leds”,然后按“回车”。 ![]()
! ^6 x! K9 [! K* i( k9 n如下图所示,发现很多配置都是“=n”,通过方向按键,控制向下翻页,然后观察那个选项配置成了“=y”。
![]()
9 ]/ T$ J4 H( U如下图所示,这里可以看到这个 leds 驱动的目录“Device Drivers”“Characterdevices”。
![]()
) ~" l: A- P8 L% Z3 n
然后,根据查找出来的信息,找到对应的 leds 驱动。如下图,返回配置界面。找到“Device Drivers”目录。输入“回车”。 ![]()
: z {7 o Z" A/ u! O# P# O如下图所示,进入“Device Drivers”对应的配置界面。
![]()
' D5 E9 f7 T: m" x q; H
然后,如下图所示,找到“Character devices”,输入“回车”。 ![]()
. G' ?, d Z" g s+ P0 u如下图所示,进入“Character devices”配置界面。
![]()
6 _" K) x3 e$ l( ^8 z如下图所示,“Enable LEDS config”找到对应的 leds 驱动配置选项。缺省配置文件里,这个已经选上了。
![]()
% c& Y* U( T$ } {* l单击“空格”键后,去掉 leds 驱动选项。
![]()
. X8 N2 N8 c9 \- _' G0 [1 C9 y再次敲击“空格”,选上 leds 驱动的选项。
![]()
5 a7 v% W% I5 F0 N
然后,选上“Exit”,如下图所示,输入“回车”。 ![]()
$ I. C' C2 e% x4 p+ S( C- O
如下图所示,继续退出。 ![]()
# A7 r$ S6 `4 S% B! y1 }( ^% x
如下图所示,继续退出。 ![]()
" Y8 A1 ^' g7 `7 M: g8 l如下图所示,因为修改过配置选项,所以退出的时候会提醒“是否保存新的配置”。
![]()
' C- O( T$ h2 @如下图所示,因为第一次操作,担心用户在无意间动了某个配置选项,编译后无法启动,建议选择“No”,不保存退出。
![]()
9 H L. \9 ?& U0 f! N+ D; i2 _
到这里,整个 Menuconfig 配置的操作以及流程就完全介绍完了。如果修改了配置文件,如下图所示的“.config”文件就会被修改。再次编译内核的时候,系统会根据新的config 文件来编译整个内核。9 ~1 G9 p' M/ y4 d
内核的配置非常多,大家可以看一下使用手册 9.4 小节,里面有详细的介绍。 ![]()
" q+ W1 \; p/ z
iTOP4412开发板项目实战:
; S. A- d \2 E# \# B1.云服务器只能家居 2.门禁系统 3.WEB服务及远程控制 4.智能网关 5.手机远程控制开发板 6.图像识别 7.机车导航项目 8.Zigbee智能家居
1 V3 B/ a, ]$ V' |学习资料:2300页教程+300期配套视频教程
, G9 {* E# p: S" G |