logo

嵌入式系统开发之Arm与Linux结合

   文章来源:http://www.pcbodm.com  发布时间:2012-07-19  访问量:1301

    嵌入式系统的定义应当是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统,比如现在ATM取款机就是一个典型RTOS,embedded os主要包括两部分,一部分是处理器,比如Arm、POWERPC、MIPC;一部分是OS,比如Linux、wince、vxworks、us/os、etc;学习嵌入式linux,主要做的就是四点,第一点是写bootloader,并移植到到nand flash上,第二点是编译kernel,并通过bootloader下载到nand flash上,第三点,在基于nand flash上建立文件系统,第四点,把写好的应用程序下载到target上。下面给大家叙述一下开发流程以及注意事项。

    第一步:交叉编译环境的建立
    A:基于linux操作系统的应用开发环境一般是由目标系统硬件和宿主PC机所构成,目标硬件开发板用于运行操作系统和系统应用软件。而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主PC机来完成。双方之间一般通过串口,并口或以太网接口建立连接关系,安装linux os,比如redhao linux 9.0,可以采用默认安装,将该linux服务器接入局域网,其他的pc机可以用windows,需要的软件工具包括:ftp客户端程序、telnet工具、移植到某一特定arm平台的linux操作系统内核源码、gnu编译工具,可由相关网站下载,在某工作站PC上安装ftp客户端程序和telnet工具,linux os kernel的编译一般有一个比较固定的步骤,会根据Makefiel文件的不同而略有差异,可参考相关文档,按固定的步骤编译内核完成以后,会在相应目录生成可执行的二进制文件,通过ftp传到PC机上,热后通过串口或网络下载到开发板上。
    B:创建编译环境,在这个过程中,将设置一些环境变量,创建安装目录,安装内核源代码和头文件等。创建binutils,在这个过程结束后,会创建类似arm-linux-ld等工具。创建一个交叉编译版本的gcc,注意:在这个过程中,只能编译c程序,而不能编译c++程序。创建一个交叉编译版本的glibc,这里最容易出问题。创建一个交叉编译版本的gdb,这个过程结束后,会创建arm-linux_gdb。重新创建gcc,前面创建gcc的过程没有编译c++编译器,现在glibc已经准备好了,所以这个步骤将完善gcc的交叉编译。重新创建glibc。如果在交叉编译过程中出现错误,那么请检查:版本选择是否正确,以及是否安装了相应的补丁;库文件路径设置是否正确;系统环境变量是否设置正确。

    第二步:编写bootloader并移植到开发板上
    A:bootloader是系统加电后运行的第一段代码,嵌入式系统中的bootloader相当于PC机中的bios,大多数bootloader都包含两种不同的操作模式,一种是启动加载模式,在这种模式下,bootloader从目标机上的某个固态存储器设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入,这种模式是bootloader的正常工作模式,另一种是下载模式。在这种模式下,目标机上的bootloader将通过串口或网络等通信手段从开发主机上下载内核映像和根文件系统映像等到RAM中,然后可以再被bootloader写到目标机上的固态存储介质上。
    B:bootloader启动大多数都分为两个阶段,基本的硬件初始化(屏蔽所有的中断,关闭处理器内部指令/数据cache等),为第二阶段准备RAM空间,如果是从某个固态存储媒质中,则复制bootlodaer的第二阶段代码到RAM。设置堆栈,跳转到第二阶段的C程序入口点。 初始化本阶段要使用的硬件设备。检查系统内存映射。将内核映像和根文件系统映像从flash读到RAM。为内核设置启动参数调用内核。
    世纪芯科技长期提供原理设计、方案整合、PCB LAYOUT、程序设计、PCB抄板/改板、软硬件调试等单片机应用系统设计开发服务,提供各类ARM开发板、ARM教学系统、嵌入式控制板、嵌入式系统开发、嵌入式行业解决方案以及嵌入式定制设计等嵌入式产品与研发方案,为现代电子行业与全球嵌入式系统研发提供全方位技术支持。

品牌价值、美誉度稳居行业第一
公司规模、技术实力稳居行业第一
行业顶尖工程师稳居行业第一
项目交接率、交接数量稳居行业第一

个人与10万元以下项目客户
中小型企业客户
政府/医疗/军事机构/科研机构
大中型企业/集团公司/上市公司
VIP客户/欧美客户/定制型客户