您的位置:首页 > 运维架构 > Linux

Linux嵌入式驱动初体验(一)--- 准备工作

2010-09-08 22:12 218 查看
开发嵌入式驱动,其实不止是驱动程序,应用程序也是如此,都需要有个准备工作,下面我就以SmartArm3250和Linux系统作为依据,说一下需要准备什么,其实也不是给别人说教什么,只是自己记录一下,如果有能帮别人的地方,也算是我助人为乐了。

首先,既然是嵌入式,就是以嵌入的方式把一个开发出来的东西放到一个载体上去运行,这个载体也就是开发板。对于Arm来说,它上面的资源是很小的,3250这块开发板的Nand Flash是256MB,根本放不下什么开发环境的,而且在开发程序时,还要涉及到各种各样的事件要消耗空间,比如说调试程序,运行程序等等,所以就需要有一个地方去编译程序,生成开发板上可以直接执行的应用程序,这个地方目前就只能是电脑了,也就是PC机,我们需要一个装有可以编写程序,编译程序的电脑开发我们想要得到的嵌入式程序。综上所述,就是,第一步,准备一台装有Linux系统的电脑,要能编程序的,然后在准备一块开发板,要能用的。虽然是废话,但确实是对的,对吧!

其次,光有PC机和开发板还是远远不够的,既然是嵌入式开发,就要有“嵌入”的这个动作产生,也就是要把生成的可执行文件从PC机传输到开发板中,这就需要一些媒介,目前已知的几种方式有通过串口(UART)、以太网(网线)、JTag,都可以把可执行文件传输到开发板中,不过对于我来说,接触最多的还是串口和以太网了。通过串口线和网线,把PC机和开发板连接起来,网线可以之间和开发板相连,也可以用网线把开发板和路由器相连,把开发板连接到局域网内。综上所述,就是需要串口线和网线两根线。

目前为止,开发板和PC机就形成了一个整体,下面话就要分两头说了,先说说PC机:

在一个安装有Linux的电脑上,编出来的程序如果是可以在电脑上运行,那就说明这个程序是适合电脑上的CPU编写的,而开发板上的CPU和电脑上的是不一样的,要不然开发板就不叫开发板了,也可以叫电脑了,所以我们只是在借助PC机这个大存储容量的机器来编写适合开发板上CPU执行的程序,所以使用的编译程序得是适合开发板上CPU的,所以这时就需要一种叫做交叉编译器的编译工具了,它包括一系列的开发工具,比如编译程序,链接库等,总体称之为交叉工具链。我用的是3250光盘里提供的工具链,因为我在安装时遇到了与书上不同的地方,所以特别说明一下:首先以root的身份把 tc-nxp-lnx-armvfp-4.3.2.1-1.i386.rpm 复制到一个目录下,以root身份安装,咋终端输入命令: sudo rpm --force-debian -ivh tc-nxp-lnx-armvfp-4.3.2.1-1.i386.rpm ,安装好后,在根目录下就会出现一个/opt/nxp文件夹,里面存放着编译程序时需要的一些工具。安装好后,再设置一个配置文件:在根目录下新建一个名为 .bash_profile 的文件(前面的点是指这个文件是隐藏文件),内容如下:

#User specific environment and startup programs
PATH=$PATH:$HOME/bin:/opt/nxp/gcc-4.3.2-glibc-2.7/bin


其实就是一个配置路径的文件,想要执行的话需要以root的身份,在终端中输入 . .bash_profile,与一般的程序执行不同,它只要一个“.”来运行程序。这时输入 arm-vfp-linux-gnu- 然后连续按下两次tab键,如果下面出现许多相关联命令的话,就说明这个交叉工具链安装好了。说明一下,每次要编译你写好的程序后,就要运行一下上面的那个.bash_profile文件,这样才能找到你使用的交叉编译工具,才能使程序编译成功。

话分两头的另一头:开发板。对于开发板的编程,其实可以分为有操作系统的和无操作系统的。对于无操作系统的嵌入式开发,其实就是一个顺序执行的程序,最大加上一些终端服务,但是对于不同的程序来说,其中有很多部分会是重复的,而且是直接和开发板硬件打交道的,编程会比较困难。对于有操作系统的程序开发,就像是电脑上的操作系统一样,把硬件屏蔽掉了,只留出接口供人使用,开发起来会比较方便,所以目前我针对3250的编程都是在基于开发板上存在一个裁剪好了的Linux系统的,所以对于开发板来说,需要准备的也就是要在开发板上搭建Linux系统,我在前面的文章里已经说过怎样搭建了,可以点击这里查看。

再把分为两头的话合起来,两边的支持都做好了,就要在编写好一个程序后,真正的进行连接,这时比较方便的是使用串口调试进入开发板的“世界”,也就是通过串口的调试窗口,对开发板进行操作,Linux下一般都是使用minicom进行串口操作的,安装方法和使用方法前面也说过,就不多说了(点击这里查看)。在进行文件传输的时候,目前是通过mount指令把PC机上的文件共享挂在到开发板上的方法,而使用这个命令的前提就是搭建好nfs服务,搭建的方法前面也说过(点击这里查看)。

至此,一个整个的嵌入式开发环境就全部搭建完毕了,如果需要其他功能还可以进行添加,前面所说的就是最基本的开发环境了。后面的工作就是真正开发过程了:在PC机上进行程序的编写,然后生成可执行文件,通过网线传输到开发板中,在串口调试窗口中输入命令,使该可执行程序在开发板上运行。这就是整个开发过程,不过这只是开头,虽然是万事开头难,但是对于嵌入式程序的开发,其实过程更是难上加难的,革命尚未成功,同志仍需努力!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: