本文摘要:作为一名嵌入式Linux新手,在自学的过程中不会遇上很多问题。
作为一名嵌入式Linux新手,在自学的过程中不会遇上很多问题。写出了一个驱动程序怎么编译器?怎么读取入内核?本文将讲解嵌入式Linux研发的一些入门基本操作,手把手让你掌控编译器驱动、内核及应用程序小王是一名刚刚认识Linux的新手,看了一些关于Linux驱动的书籍之后,买了一块Cortex-A9的ARM开发板,打算大干一场。
撰写了第一个属于自己的驱动程序并命名为hellodrv.c,程序源码如下右图。这个驱动程序怎么编译成可以在板子上跑的程序呢,小王经过一番网上查找,原本必须交叉编译器工具链,小王寻找了光盘资料里的交叉编译器工具并按解释准确加装了交叉编译器工具。一、加装交叉编译器工具1撰写Makefile小王撰写好的驱动程序为hellodrv.c,要把该驱动程序编译器为模块,在同一目录下新建了一个Makefile文件。撰写的Makefile如下。
2驱动编译器小王经过查找,编译器驱动主要有两种方式,一种是改动内核源码顶层目录下的Makefile文件,另外也可以在编译器命令登录架构及交叉编译器工具。1、改动Makefile例如:Linux内核源码的目录为/home/vmuser/kernel-imx,关上该目录下的Makefile文件,寻找ARCH及CROSS_COMPILE涉及语句,改动为如下右图语句。如果交叉编译器工具链并未设置环境变量则CROSS_COMPILE设置为交叉编译器工具链的绝对路径,设置如下。改动完了之后,必要继续执行make命令,分解了hellodrv.ko文件。
2、在编译器命令登录继续执行如下命令展开编译器。这种方式也可以分解hellodrv.ko,可是驱动要依赖内核才能跑起来,小王于是开始了Linux内核的配备及编译器。
二、Linux内核配备及编译器编译器内核时登录架构和交叉编译器工具的方式同编译器模块一样,经过上面的操作者,小王早已轻车熟路了。小王还学会了首先漏环境变量然后展开编译器的方法。在首次展开配备编译器之前,必须清理之前编译器分解的文件,能用如下命令展开清理。
接下来展开内核的配备,内核的配备可以用于如下命令中的一个。这四种方式中,有一点引荐的是makemenuconfig,它不依赖QT或GTK+,且十分直观。用于makemenuconfig命令后,不会转入如图1右图的界面,在该界面根据市场需求对必须编译器入内核的选项展开剪裁。
对于bool型选项,按Y或者N要求否自由选择编译器入内核。[*]回应顺位,[]回应并未顺位。
对于tristate型选项,根据市场需求可以有Y、M、N三种自由选择,<*>回应静态编译器,<M>回应编译器为模块,<>回应不编译器入内核。图1内核配备界面配备已完成后,自由选择留存,然后解散。配备后不会分解.config文件,该文件留存了配备信息,供Makefile在编译器内核时用于。在配备界面我们根据市场需求把必须的功能以及适当设备驱动的反对等配备好,然后展开内核及设备树根的编译器。
内核及设备树根编译器用以下命令。为了减缓编译器速度可以在编译器命令后特“-j”选项,例如PC的CPU为4核,则编译器命令如下。如果要把某些驱动编译器为模块,则用于如下命令。
针对适当的开发板,厂家一般都会有配置文件的配备,这些配置文件坐落于内核源码arch/arm/configs目录下。例如:用于如下的配置文件配备。如果有数.config文件,可以用于如下命令写入既有的.config配置文件。
内核及设备树根编译器已完成后将不会分解zImage和适当的dtb文件,按照厂家获取的烧写方式将镜像火烧写道目标板。
本文来源:南宫28-www.mcdsh.com