嵌入式Linux开发环境的搭建之:嵌入式开发环境的搭建
2.串口下载
使用串口下载需要配合特定的下载软件,如优龙公司提供的DNW软件等,一般在Windows下进行操作。虽然串口下载的速度没有网络下载快,但由于它很方便,不需要额外的连线和设置IP等操作,因此也广受用户的青睐。下面就以DNW软件为例,介绍串口下载的方式。
与其他串口通信的软件一样,在DNW中也要设置“波特率”、“端口号”等。打开“Configuration”下的“Options”界面,如图5.17所示。
图5.17DNW配置界面
在配置完之后,单击“SerialPort”下的“Connect”,再将开发板上电,选择“串口下载”,接着再在“SerialPort”下选择“Transmit”,这时,就可以进行文件传输了,如图5.18和图5.19所示。这里DNW默认串口下载的地址为0x30200000。
图5.18DNW串口下载图
图5.19DNW串口下载情形图
5.1.4编译嵌入式Linux内核
在做完了前期的准备工作之后,在这一步,读者就可以编译嵌入式Linux的内核了。在这里,本书主要介绍嵌入式Linux内核的编译过程,在下一节会进一步介绍嵌入式Linux中体系结构相关的内核代码,读者在此之后就可以尝试嵌入式Linux操作系统的移植。
编译嵌入式Linux内核都是通过make的不同命令来实现的,它的执行配置文件就是在第3章中讲述的makefile。Linux内核中不同的目录结构里都有相应的makefile,而不同的makefile又通过彼此之间的依赖关系构成统一的整体,共同完成建立依赖关系、建立内核等功能。
内核的编译根据不同的情况会有不同的步骤,但其中最主要分别为3个步骤:内核配置、建立依赖关系、创建内核映像,除此之外还有一些辅助功能,如清除文件和依赖关系等。读者在实际编译时若出现错误等情况,可以考虑采用其他辅助功能。下面分别讲述这3步主要的步骤。
(1)内核配置。
第一步内核配置中的选项主要是用户用来为目标板选择处理器架构的选项,不同的处理器架构会有不同的处理器选项,比如ARM就有其专用的选项如“Multimediacapabilitiesportdrivers”等。因此,在此之前,必须确保在根目录中makefile里“ARCH”的值已设定了目标板的类型,如:
ARCH:=arm
接下来就可以进行内核配置了,内核支持4种不同的配置方法,这几种方法只是与用户交互的界面不同,其实现的功能是一样的。每种方法都会通过读入一个默认的配置文件—根目录下“.config”隐藏文件(用户也可以手动修改该文件,但不推荐使用)。当然,用户也可以自己加载其他配置文件,也可以将当前的配置保存为其他名字的配置文件。这4种方式如下。
n makeconfig:基于文本的最为传统的配置界面,不推荐使用。
n makemenuconfig:基于文本选单的配置界面,字符终端下推荐使用。
n makexconfig:基于图形窗口模式的配置界面,Xwindow下推荐使用。
n makeoldconfig:自动读入“.config”配置文件,并且只要求用户设定前次没有设定过的选项。
在这4种模式中,makemenuconfig使用最为广泛,下面就以makemenuconfig为例进行讲解,如图5.20所示。
图5.20makemenuconfig配置界面
从该图中可以看出,Linux内核允许用户对其各类功能逐项配置,一共有18类配置选项,这里就不对这18类配置选项进行一一讲解了,需要的时候读者可以参见相关选项的help。在menuconfig的配置界面中是纯键盘的操作,用户可使用上下键和“Tab”键移动光标以进入相关子项,图5.21所示为进入了“SystemType”子项的界面,该子项是一个重要的选项,主要用来选择处理器的类型。
图5.21SystemType子项
可以看到,每个选项前都有个括号,可以通过按空格键或“Y”键表示包含该选项,按“N”表示不包含该选项。
另外,读者可以注意到,这里的括号有3种,即中括号、尖括号或圆括号。读者可以用空格键选择相应的选项时可以发现中括号里要么是空,要么是“*”;尖括号里可以是空,“*”和“M”,分别表示包含选项、不包含选项和编译成模块;圆括号的内容是要求用户在所提供的几个选项中选择一项。
此外,要注意2.4和2.6内核在串口命名上的一个重要区别,在2.4内核中“COM1”对应的是“ttyS0”,而在2.6内核中“COM1”对应“ttySAC0”,因此在启动参数的子项要格外注意,如图5.22所示,否则串口打印不出信息。
图5.22启动参数配置子项
一般情况下,使用厂商提供的默认配置文件都能正常运行,所以用户初次使用时可以不用对其进行额外的配置,在以后需要使用其他功能时再另行添加,这样可以大大减少出错的几率,有利于错误定位。在完成配置之后,就可以保存退出,如图5.23所示。
图5.23保存退出
(2)建立依赖关系。
由于内核源码树中的大多数文件都与一些头文件有依赖关系,因此要顺利建立内核,内核源码树中的每个Makefile都必须知道这些依赖关系。建立依赖关系通常在第一次编译内核的时候(或者源码目录树的结构发生变化的时候)进行,它会在内核源码树中每个子目录产生一个“.depend”文件。运行“makedep”即可。在编译2.6版本的内核通常不需要这个过程,直接输入“make”即可。
(3)建立内核
建立内核可以使用“make”、“makezImage”或“makebzImage”,这里建立的为压缩的内核映像。通常在Linux中,内核映像分为压缩的内核映像和未压缩的内核映像。其中,压缩的内核映像通常名为zImage,位于“arch/$(ARCH)/boot”目录中。而未压缩的内核映像通常名为vmlinux,位于源码树的根目录中。
到这一步就完成了内核源代码的编译,之后,读者可以使用上一小节所讲述的方法把内核压缩文件下载到开发板上运行。
小知识 | 在嵌入式Linux的源码树中通常有以下几个配置文件,“.config”、“autoconf.h”、“config.h”,其中“.config”文件是makemenuconfig默认的配置文件,位于源码树的根目录中。“autoconf.h”和“config.h”是以宏的形式表示了内核的配置,当用户使用makemenuconfig做了一定的更改之后,系统自动会在“autoconf.h”和“config.h”中做出相应的更改。它们位于源码树的“/include/linux/”下。 |
linux相关文章:linux教程
评论