嵌入式Linux驱动开发1---环境搭建

1 交叉编译环境

对于习惯了windows下编程的朋友来说,交叉编译环境可能十分陌生,它是什么?,为什么需要这样的环境?

1.1 交叉编译环境的概念和以及诞生原因

对于常规的Windows平台开发来说,本机编辑代码就可以在本机编译运行
而对于嵌入式Linux开发来说,我们所写的代码是为嵌入式机器所服务,嵌入式机器的性能比较小,无论是内存大小还是工作频率都不支持代码在本地直接编译。而且代码的编译需要链接一些依赖库,windows下无法提供linux环境中的一些库文件
所以需要在linux平台上编译代码再烧录到设备中

1.2 交叉编译环境的设计

常见的交叉编译环境将代码编辑(阅读),代码编译,烧录三个需求分在不同的平台上
1.windows平台上有符合人们习惯且强大的代码阅读编辑工具,如Source Insight,建议保留该环境
2.Linux平台可以提供代码编译环境,但是开发者一般只有一台电脑而且已经装着windows,所以一般会在WIN上安装一个Linux虚拟机
3.目标机器,这个没什么好说的,给它烧录好程序就可以在他身上验证了
4.三端环境都搭建好后还需要使他们之间能够通信

环境1

windows安装source insight用于阅读代码,并且在VM Ware虚拟机上安装linux,并下载交叉编译器arm-linux-gcc。
windows上需要安装与虚拟机之间的文件传输软件,如filezilla,cuteftp等。windows与linux虚拟机之间可以传输文件
windows上还需要安装目标机器的烧录软件,如DNW,oflash,Tftpd32等。windows与目标机器之间可以传输文件
这些软件可以在目标机器仍处于引导状态时与windows之间进行文件传输,如烧录uboot和uImage。
由于给目标机器烧录程序依旧很麻烦,还可以在linux虚拟机与开发板之间搭建网络通路,即NFS网络文件系统,使目标机器可以将文件系统挂载到虚拟机上,这样我们在windows上编写的代码上传到linux虚拟机编译之后,就可以通过目标机器上找到可执行文件。

一般来说我们不直接使用linux虚拟机,而是通过secureCRT通过SSH登陆上虚拟机通过命令行操控
也不方便直接操控目标机器的命令行,而是通过secureCRT等通过串口连接上设备(不管设备是否进入linux系统,都会预留串口驱动方便与设备通讯)
嵌入式Linux驱动开发1---环境搭建_第1张图片

环境2

linux上使用vim+插件的环境编辑阅读代码,直接本地编译。同样的目标机器与虚拟机之间搭建NFS,目标机器可以在挂载的文件系统上找到已经编译好的可执行文件,直接执行即可。

环境3…

不同公司有不同公司的开发环境,没有统一标准,舒服就行,最后bb一句,搭建了两天vim环境,发现需求源源不断,插件源源不断地要去配置,回来使用Source Insight发现艾玛真香!重心时刻放在开发上。

1.3 环境1搭建时的一些细节

虚拟机要和windows能够ping通,需要设置虚拟机为桥接模式,并使其ip到windows的ip同一网段
如果NFS mount不上 则需要查看/etc/init.d/rcS文件内的ip配置是否正确ls
具体的DWN,FTPFD32工具的使用可以参考韦东山老师的教程,《JZ2440V3开发板的使用手册-兼容V2V1》

错误:make时会出现make[1]: *** [lib/asm-offsets.s] Error 1的错误。
解决方法:出现这个错误是缺少交叉编译工具链造成的,只需要在Makefile中添加交叉工具栏就可以解决。

CROSS_COMPILE ?=
后面添加以自己的工具链路径:
CROSS_COMPILE ?= /usr/local/arm/4.4.3/bin/arm-linux-

在这里插入图片描述

你可能感兴趣的:(嵌入式Linux,驱动开发,linux)