嵌入式 Linux 开发简介

原创 2004年08月27日 23:54:00
嵌入式系统是以应用为中心,以计算机技术为基础、软硬件均可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。其发展已有二十多年的历史,国际上也出现了一些著名的嵌入式操作系统,如VxWorks,Palm OS,Windows CE等等,但这些操作系统均属于商品化产品,价格昂贵且由于源代码不公开导致了诸如对设备的支持 ,应用软件的移植等一系列的问题。而Linux作为一种优秀的Free OS,近几年在嵌入式领域异军突起,成为了最有潜力的嵌入式操作系统。

  嵌入式Linux融合了嵌入式和Linux的特点,其开发与一般的应用程序开发相比有着自己的特点,下面简要的介绍一下嵌入式Linux开发的一般过程。

  了解硬件是首要的一步,这是嵌入式开发的特点决定的。了解硬件指的是了解整个硬件,判断硬件对于当前的应用来说是否合适。嵌入式系统中需要使用到CPU和各种外围设备,由此需要收集相关硬件的资料,包括CPU,芯片手册和各种外围设备的手册以及相关的各种电路图等,并对整体系统有较深入的了解。

  了解硬件后,下一步就该准备需要使用的Linux工具以及其他工具,这些工具包括:针对所用CPU的编译器/汇编器/连接器,相应的库工具,目标文件分析/管理工具,符号查看器等等。幸运的是,由于Linux的开放性,针对不同目标平台的Linux工具都可在网上免费得到,绝大部分的这些工具都由GNU提供。所需要的其他工具还包括硬件厂商提供给公司的工具,如编程器,下载工具和查错器等等。所有这些工具对以后的开发、调试等都可说是必不可少的。

  做好以上的准备工作后,就要进入实质性的工作阶段了。首先需要安排内存地址,如SDRAM的内存地址,Flash的内存地址等,这需要与实际应用和硬件状况相结合来考虑,要根据硬件的限制以及实际应用的需要对内存地址进行合理的安排,同时要注意内存地址的安排要具有一定的伸缩性,以便于将来需要改动时所做的变动达到最小。一般来说,嵌入式Linux的内存地址安排体现在连接脚本当中。

  接着就该进入编写启动代码和机器相关代码阶段了。各种不同目标系统,甚至相同目标系统的启动代码和机器相关代码也是不相同的。启动代码一般需要完成硬件初始化,装载内核及安装根文件系统以及开始内核执行的工作,不同目标平台的启动代码一般可通过参考Linux下已有的启动代码和相关CPU的手册进行编写。

  启动代码和机器相关代码编程完成并可以启动系统后,下一步就可以开始驱动程序的编写了。Linux编写驱动程序与一般情况下编写驱动程序并没有太大的区别,都需要对相关的硬件作出了解,同时需要遵循Linux编写驱动程序的一些规则进行,编写完一个驱动程序后,一般就写一个相应的测试程序已便随时进行测试。Linux下各种不同类型的设备都有相当多的驱动程序源码可以参考,因此实际编写时更多的时间是花在对特定硬件特性的熟悉上。

  除了以上提到的这些步骤外,进行实际开发时,很多时候还要进行库(这里所提到的库均指C库),GUI和系统程序的移植。这是因为嵌入式Linux中所用的库一般不能直接使用标准库,而需要进行精简,虽然已有些精简的C库如uClibc等可供使用,但还是需要经常对其进行修改。嵌入式Linux常用的GUI有Microwindows,MiniGUI,QT/Embedded,TinyX等等,各自均有其使用的场合,所针对的目标平台和应用层次也不一样,必须根据实际需要进行选择。系统程序如mount,ls等等有些是应用时所必须的,有些则是进行调试时所需要的,初始时则需要一些通用的系统程序即可。


作者:李晓平
现任职于:博利思软件有限公司项目工程师

本文曾刊登在《共创软件》杂志
转载:嵌入式 Linux

嵌入式Linux开发简介

Linux 正在嵌入式开发领域稳步发展。因为 Linux 使用 GPL(请参阅本文后面的参考资料),所以任何对将 Linux 定制于 PDA、掌上机或者可佩带设备感兴趣的人都可以从因特网免费下载其...
  • xjbclz
  • xjbclz
  • 2016年07月04日 22:34
  • 291

嵌入式Linux操作系统简介

嵌入式Linux操作系统介绍  嵌入式Linux操作系统,是个与生俱来的网络操作系统且成熟稳定。其为开源软件且源代码开放,不存在黑箱技术,按照GPL公约任何人都可以对它进行修改添加新的功能形成自己的...
  • yyyljw
  • yyyljw
  • 2015年12月27日 21:04
  • 606

嵌入式Linux下开源路由器OpenWRT简介

OpenWrt支持各种处理器架构,无论是对ARM,X86,PowerPC或者MIPS都有很好的支持。其多达3000多种软件包,囊括从工具链(toolchain),到内核(linux kernel),到...
  • wavemcu
  • wavemcu
  • 2013年01月26日 10:58
  • 9677

搭建嵌入式开发环境总结

由于之前电脑坏了,又得重新安装ubuntu,搭建嵌入式开发环境,故做一个小结,方便自己看,也方便给其他的同学。 1、tftp 环境搭建 TFTP(Trivial File Transfer Pr...
  • xy010902100449
  • xy010902100449
  • 2015年06月02日 21:06
  • 1168

嵌入式应用层开发要学习什么

                                              如果从应用层的应用开发出发,建议先熟悉API函数,推荐《UNIX环境...
  • JoysonQin
  • JoysonQin
  • 2016年12月20日 16:48
  • 1985

linux:嵌入式linux开发环境搭建(整理)

1、安装VMware、安装ubuntu 2、配置网络,保证开发板可以ping通服务器  > 纯ubuntu系统只要保证开发板和ubuntu系统处于同一网段即可。  > 虚拟机中需要注意三点:   1...
  • sinat_36184075
  • sinat_36184075
  • 2017年05月05日 12:34
  • 2859

{嵌入式学习笔记(一)}ubuntu下嵌入式开发环境搭建

从C51到ARM,比想象中要难得多,好几天了,进展缓慢,嵌入式是基于Linux开发的,所以这次没有在Windows下,而是选择直接在Linux环境上搭建开发环境。记录下遇到的各种问题,做下备忘。...
  • zhangsheng19860919
  • zhangsheng19860919
  • 2015年06月26日 15:20
  • 3453

Golang在ARM/Linux平台上函数参数的传递

一.前言     作为一名初级的嵌入式软件开发从业者,工作中大部分项目以C语言实现。使用C语言来编写代码,通常我们可以预测到编译生成的汇编/机器编码的大致情况,在不同的芯片架构上,有其相应的ABI标准...
  • yeholmes
  • yeholmes
  • 2016年10月12日 22:54
  • 1176

基于ARM的嵌入式Linux应用程序开发

 0 引 言   当今社会,嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,不仅继承了Linu...
  • JoysonQin
  • JoysonQin
  • 2017年02月09日 16:36
  • 2501

收集整理的ARM嵌入式linux开发入门视频教程

嵌入式Linux作为一个系统学科,具有知识点多,知识难度大,实践操作性强等特点,很多踌躇满志的同学最终倒在了学习嵌入式Linux的道路上,绝大部分也是因为没有掌握嵌入式Linux 的知识规律和学习...
  • asdf87520
  • asdf87520
  • 2017年01月06日 11:29
  • 1774
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 Linux 开发简介
举报原因:
原因补充:

(最多只允许输入30个字)