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 的文件(前面的点是指这个文件是隐藏文件),内容如下:
其实就是一个配置路径的文件,想要执行的话需要以root的身份,在终端中输入 . .bash_profile,与一般的程序执行不同,它只要一个“.”来运行程序。这时输入 arm-vfp-linux-gnu- 然后连续按下两次tab键,如果下面出现许多相关联命令的话,就说明这个交叉工具链安装好了。说明一下,每次要编译你写好的程序后,就要运行一下上面的那个.bash_profile文件,这样才能找到你使用的交叉编译工具,才能使程序编译成功。
话分两头的另一头:开发板。对于开发板的编程,其实可以分为有操作系统的和无操作系统的。对于无操作系统的嵌入式开发,其实就是一个顺序执行的程序,最大加上一些终端服务,但是对于不同的程序来说,其中有很多部分会是重复的,而且是直接和开发板硬件打交道的,编程会比较困难。对于有操作系统的程序开发,就像是电脑上的操作系统一样,把硬件屏蔽掉了,只留出接口供人使用,开发起来会比较方便,所以目前我针对3250的编程都是在基于开发板上存在一个裁剪好了的Linux系统的,所以对于开发板来说,需要准备的也就是要在开发板上搭建Linux系统,我在前面的文章里已经说过怎样搭建了,可以点击这里查看。
再把分为两头的话合起来,两边的支持都做好了,就要在编写好一个程序后,真正的进行连接,这时比较方便的是使用串口调试进入开发板的“世界”,也就是通过串口的调试窗口,对开发板进行操作,Linux下一般都是使用minicom进行串口操作的,安装方法和使用方法前面也说过,就不多说了(点击这里查看)。在进行文件传输的时候,目前是通过mount指令把PC机上的文件共享挂在到开发板上的方法,而使用这个命令的前提就是搭建好nfs服务,搭建的方法前面也说过(点击这里查看)。
至此,一个整个的嵌入式开发环境就全部搭建完毕了,如果需要其他功能还可以进行添加,前面所说的就是最基本的开发环境了。后面的工作就是真正开发过程了:在PC机上进行程序的编写,然后生成可执行文件,通过网线传输到开发板中,在串口调试窗口中输入命令,使该可执行程序在开发板上运行。这就是整个开发过程,不过这只是开头,虽然是万事开头难,但是对于嵌入式程序的开发,其实过程更是难上加难的,革命尚未成功,同志仍需努力!
首先,既然是嵌入式,就是以嵌入的方式把一个开发出来的东西放到一个载体上去运行,这个载体也就是开发板。对于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机上进行程序的编写,然后生成可执行文件,通过网线传输到开发板中,在串口调试窗口中输入命令,使该可执行程序在开发板上运行。这就是整个开发过程,不过这只是开头,虽然是万事开头难,但是对于嵌入式程序的开发,其实过程更是难上加难的,革命尚未成功,同志仍需努力!
相关文章推荐
- Linux嵌入式驱动初体验(五)--- LED驱动解析
- Linux嵌入式驱动初体验(三)--- 模块接触
- Linux嵌入式驱动初体验(二)--- 内核装载
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】中断服务下半部之工作队列详解
- 嵌入式驱动开发笔记(裸机程序篇)---准备工作
- Linux嵌入式驱动初体验(七)--- LED驱动之字符设备篇
- 1.linux驱动开发前准备工作
- Linux设备驱动前的工作准备 ---- 内核的配置及Makefile编写
- Linux设备驱动之LCD显示摄像图像之一框架与准备工作
- Linux嵌入式驱动初体验(四)--- 驱动结构分析
- Linux设备驱动之CRT显示摄像图像之一准备工作
- Linux嵌入式驱动初体验(六)--- LED驱动测试程序
- 嵌入式linux驱动-I2C笔记
- 嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之触摸屏驱动
- 嵌入式Linux驱动学习之路(二十四)Nor Flash驱动程序
- [转]嵌入式linux中的lcd驱动分析
- [嵌入式Linux驱动]关于RFID模块的Linux控制应用程序
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux信号机制分析
- 重新编译Linux内核必要性及其准备工作
- 嵌入式Linux驱动笔记(八)------依赖Linux kernel驱动的pwm编写