构建第一个驱动程序(一)之Linux环境配置

构建第一个驱动程序(一)之Linux环境配置

一、超级终端的使用

软件:hypertem超级终端

打开软件后弹出

点击“取消” 弹出

点击弹出新建连接

填写名称 点击 “确定”,又弹出之前的位置信息,忽略他。

直到弹出“连接到”

选择你自己板子连接的串口,我的是COM4

确定后,按下图设置

,按下任意键顺利出现

连接成功。

二、交叉编译环境的安装及配置
首先下载交叉编译工具链,这里提供笔者使用的ARM-Linux GCC 4.4.3
下载地址:http://www.arm9.net/mini2440-linux.asp
文件名:ARM-Linux GCC 4.4.3.tar.gz

光盘里也有提供


1.
arm-linux-gcc-4.4.3.tar.gz拷贝到任意文件夹下
2.
运行
$ sudo tar xvzf arm-linux-gcc-4.4.3.tar.gz -C /
解压该压缩包。
3.
/usr/local目录下建立arm路径
$ sudo mkdir /usr/local/arm
/opt/FriendlyARM/toolschain/4.4.3文件夹全部拷贝到/usr/local/arm
$ sudo cp -r /opt/FriendlyARM/toolschain/4.4.3/usr/local/arm
4.
修改环境变量,把交叉编译器的路径加入到PATH
这里提供通用的方法之一

命令“gedit /root/.bashrc”
export PATH=$PATH:/usr/local/arm/4.4.3/bin
然后运行

注销下,重新登陆
然后检查环境变量添加是否成功
$ echo $PATH
查找是否已经将环境变量添加成功。
如果成功
运行
$ arm-linux-gcc -v
查看是否输出arm-linux-gcc的版本号,


如果正确,交叉编译环境应该就安装完成了。

三、内核树的构建

若想要在虚拟机上的Linux上编译成功的.ko”文件能够在mini2440 上成功加载,那么在Linux上的编译内核需要和板子上的内核一致。买板子的时候他们已经给过源码了。

在光盘linux目录下,

Linux-2.6.32.2-mini2440-20130614.tar.gz

我们可以查看是否和板子上的源码对应。在超级终端中输入命令uname -r

和光盘给的一致。不一致的话就要升级内核,或寻找相应的源码。

读者应按照自己的实际情况,去开发板的官网下载相应的源代码。
1.
本例中讲源代码拷贝到/tmp/linux/下,
2.
/opt/FriendlyARM/目录下创建mini2440文件夹
$ sudo mkdir /opt/FridendlyARM/mini2440
并进入该目录
$ cd /opt/FridendlyARM/mini2440
解压源代码
$tar xvzf /tmp/linux/linux-2.6.32-mini2440-20130610.tar.gz
3.
配置编译文件
$ cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
$ cp config_mini2440_t35 .config
配置内核
$ make menuconfig

会弹出可视化的界面
选择Load an Alternate Configuration File(在倒数第二行),确定后,保存,退出。

到这里编译内核树的准备工作还有最重要的一项。由于这里的内核是基于arm架构的,所以在编译的过程中需要使用到之前配置的交叉编译环境即arm-linux-gcc等。而内核源代码中的Makefile文件中的编译工具的地址需要修改为本机配置的具体地址。
4.makefile
文件修改
/opt/FriendlyARM/mini2440/linux-2.6.32.2下运行
$ sudo gedit ./Makefile
注意M为大写,编辑器你随意。。。
搜索arm-linux得到一个结果
CROSS_COMPILE?= arm-linux-
然后搜索CROSS_COMPILE,找到
AS= $(CROSS_COMPILE)as
LD= $(CROSS_COMPILE)ld
CC= $(CROSS_COMPILE)gcc
CPP= $(CC) -EAR=$(CROSS_COMPILE)ar
NM= $(CROSS_COMPILE)nm
STRIP= $(CROSS_COMPILE)strip
OBJCOPY= $(CROSS_COMPILE)objcopy
OBJDUMP= $(CROSS_COMPILE)objdump
-------------------------------------------------------------
这里定义了交叉编译文件的位置本例中作如下修改
#AS= $(CROSS_COMPILE)as
AS = /usr/local/arm/4.4.3/bin/arm-linux-as
#LD= $(CROSS_COMPILE)ld
LD = /usr/local/arm/4.4.3/bin/arm-linux-ld
#CC= $(CROSS_COMPILE)gcc
CC = /usr/local/arm/4.4.3/bin/arm-linux-gcc
CPP= $(CC) -E
#AR= $(CROSS_COMPILE)ar
AR = /usr/local/arm/4.4.3/bin/arm-linux-ar
#NM= $(CROSS_COMPILE)nm
NM = /usr/local/arm/4.4.3/bin/arm-linux-nm
#STRIP= $(CROSS_COMPILE)strip
STRIP = /usr/local/arm/4.4.3/bin/arm-linux-strip
#OBJCOPY= $(CROSS_COMPILE)objcopy
OBJCOPY = /usr/local/arm/4.4.3/bin/arm-linux-objcopy
到这里准备工作完成
5.
编译内核
$ sudo make


$ sudo make modules

不出意料的话,到这里,内核树的编译也完成了。

构建第一个驱动程序(一)之Linux环境配置,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。