ARM与嵌入式linux的入门建议

发布者:平和心态最新更新时间:2011-06-23 关键字:ARM  嵌入式linux  入门建议 手机看文章 扫描二维码
随时随地手机看文章

    由于很多人总问这个问题,所以这里做一个总结文档供大家参考。这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。也许你会注意到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家提供的资料也是以linux为主。我一直很难理解,其实WinCE的界面比linux的界面好看多了,使用起来也很方便,更为重要的是,WinCE的开发和Windows下的开发基本一样,学起来简单得多,但是学linux或者使用linux做嵌入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在WinCE6.0听说也开源,不过在成本和资源上linux已经有了无人能挡的优势。与此相对应的是,越来越多的电子厂商已经开始使用linux开发产品。举个例子,Google近期开发的智能手机操作系统Android其实就是使用linux-2.6.23内核进行改进得到的。

    第一,学习基本的裸机编程。

    对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS去编程,第一个实验就是控制led。学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复杂的系统最终都会落实到这些最底层的硬件控制,因此对这些硬件的控制有了感性的认识就好很多了


    学习裸机的编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?还有,norflash内部的每一个单元在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是一样的吗?而与norflash相对应的nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映射在内存空间上进行使用?或者简单地说应该怎么用nandflash?再有,使用ADS进对ARM9行编程时都需要使用到一个初始化的汇编文件,这个文件究竟有什么用?他里面的代码是什么意思?不要这个可以吗?

    诸如此类都是对硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助,如果跳过这一步,我相信越往后学越会觉得迷茫,越觉得这写东西深不可测。因为,你的根基没打好。

    不过先声明一下,本人并没有使用ADS对ARM9进行编程,我是学完ARM7后直接就使用ARM9学linux系统的,因此涉及使用ADS对ARM9进行编程的问题我很难回答^_^,自己去研究研究吧。
对于这部分不久将提供一份教程,这个教程中的例程并不是我为我们所代理的板子写的,是我在我们学院实验室拿的,英培特为他们自己 的实验箱写的,不过很有借鉴意义,可以作为一份有价值的参考。

    第二,使用linux系统进行一些基本的实验。

    在买一套板子的时候一般会提供一些linux的试验例程,好好做一段时间这个吧,这个过程也是很有意义的,也是为进一步的学习积累感性认识,你能想象一个从没有使用过linux系统的人能学好linux的编程吗?好好按照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点弱智,但是我想很多高手都会经历这个过程。

    在这方面我们深蓝科技目前没有计划提供相应的例程,主要是开发板的提供商会提供很丰富的例程,我们不做重复工作,只提供他们没有的、最有价值的东西给大家。

    第三,研究完整的linux系统的的运行过程。

    所谓完整的linux系统包括哪些部分呢?

    三部分:bootloader、linux kernel(linux内核)、rootfile(根文件系统)。
那么这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的执行流程又是怎么样的呢?搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制作这个linux系统就打下了另一个重要的根基。介绍这方面的资料网上可以挖掘到几吨,自己好好研究吧。

    第四,开始做系统移植。

    上面说到完整的linux有3部分,而且你也知道了他们之间的关系和作用,那么现在你要做的便是自己动手学会制作这些东西。

    当然我不可能叫你编写这些代码,这不实现。事实上这个3者都能在网下载到相应的源代码,但是这个源代码不可能下载编译后就能在你的系统上运行,需要很多的修改,直到他能运行在你的板子上,这个修改的过程就叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,等你完成了这个过程你会发现你已经算是一个初出茅庐的高手了。

    在这个过程中如果你很有研究精神的话你必然会想到看源代码。很多书介绍你怎么阅读linux源代码,我不提倡无目的地去看linux源代码,用许三多的话说,这没有意义。等你在做移植的时候你觉得你必须去看源代码时再去找基本好书看看,这里我推荐一本好书倪继利的《linux内核的分析与编程》,这是一本针对linux-2.6.11内核的书,说得很深,建议先提高自己的C语言编程水平再去看。
至于每个部分的移植网上也可以找到好多吨的资料,自己研究研究吧,不过要提醒的是,很多介绍自己经验的东西都或多或少有所保留,你按照他说的去做总有一些问题,但是他不会告诉你怎么解决,这时就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保证能解决你的问题,因为我未必遇到过你的问题,不过我相信能给你一点建议,也许有助你解决问题。

    这一步的最终目的是,从源代码的官方主页上(都是外国的,悲哀)下载标准的源代码包,然后进行修改,最终运行在板子上。

    盗用阿基米德的一句话:“给我一根网线,我能将linux搞定”。

    第五,研究linux驱动程序的编写。

    移植系统并不是最终的目的,最终的目的是开发产品,做项目,这些都要进行驱动程序的开发。
Linux的驱动程序可以说是五花八门,linux2.4和linux2.6的编写有相当大的区别,就是同为linux2.6但是不同版本间的驱动程序也有区别,因此编写linux的驱动程序变都不是那么容易的事情,对于最新版本的驱动程序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。
这部分的推荐书籍可以参考另一篇文章《推荐几本学习嵌入式linux的书籍》。

    第六,研究应用程序的编写。

    做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。我一直就使用这个函数库来开发自己的应用程序,不过我希望你能使用国产的MiniGUI函数库。盗用周杰伦的广告词就是“支持国产,支持MiniGUI”。MiniGUI的编程比较相似Windows下的VC编程,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。不过MiniGUI最大的不好就是没有像qtopia这样的图形操作平台,这大大限制了他的推广,我曾经幻想过与北京飞漫公司(就是MiniGUI的版权拥有者)合作使用MiniGUI函数库开发像qtopia这样的图形操作平台,不过由于水平有限这只能是幻想了,呵呵。

    完成这一步你基本就学完了嵌入式linux的全部内容了。

    还有一个小小的经验想和大家分享。我在学习嵌入式linux的过程中很少问人,客观原因是身边的老师、同学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样做有个好处,就是可以提高自己解决问题的能力,因为做这些东西总有很多问题你难以理解,别人也没有这方面的经验,也不是所有问题都有人给你答案,这时必须要自己解决问题,这样,个人的解决问题能力就显得非常关键了。因此我的建议就是一般的问题到网上搜索一下,确实找不到答案了就问问高手,还是不行了就自己去研究,不要一味去等别人帮你解决问题。
记住,问题是学习的最好机会。

关键字:ARM  嵌入式linux  入门建议 引用地址:ARM与嵌入式linux的入门建议

上一篇:利用ARM微处理器和ZigBee模块组成无线串口集线器
下一篇:给大学生学习ARM与FPGA的建议

推荐阅读最新更新时间:2024-03-16 12:37

基于ARM7TDMI的SoC语音处理系统的设计
摘要:基于ARM7TDMI的SoC片内AC97模块和片外CODEC-UCB1400,采用ITU-T的G.721算法设计语音处理系统;提出一种基于低端RISC核的语音系统设计方案。该方案结合SoC的片内eSRAM模块进行性能优化;通过在流片后的实际样机上验证,编码速率为19.88 KB/s,解码速率为22.68 KB/s,达到了语音实时性要求。 关键词:ARM7TDMI G.721 双Buffer机制 eSRAM优化 引 言   随着微电子和计算机技术的高速发展,许多嵌入式应用系统应运而生。其中,各种语音处理系统不断被开发出来,在各行业得到广泛应用,如语音报站器、自动解说装置、采访录音笔等,为人类的生产、生活提供了极大的便利。
[嵌入式]
QWT移植到嵌入式linux步骤
注意:安装QWT之前要确保QT已经安装完成。包括X86和ARM版本QT 编译X86下的QWT 1.设置环境变量 export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-x86/bin/:$PATH 2.解压QWT源码 tar -jxvf qwt-5.2.0.tar.bz2 3.重命名该文件夹 mv qwt-5.2.0 qwt-5.2.0-x86 4.执行qmake 5.执行make 编译ARM下的QWT 1.设置环境变量 export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin/:$PATH 2.解压QW
[单片机]
外媒:多家科技巨头反对英伟达收购ARM,英特尔、高通等
据fudzilla报道,多名消息人士透露,硅谷多家科技企业反对英伟达收购ARM的交易。除ARM和英伟达外,多家科技公司表示这笔交易对行业不利。 fudzilla指出,鉴于传统形式上完成一宗重大合并案需耗时18至24个月的时间,未来中国和欧盟的监管机构可能会强烈反对这桩交易。 报道称,包括英特尔、高通、特斯拉以及其他几家芯片市场的主要厂商正讨论采取协调行动,并向美国和世界各国当局表达他们的担忧。苹果也参与了谈判,但苹果可能会退出该“联盟”,因为它可能会与ARM-Nvidia单独达成协议。 目前的中美关系、华为问题以及美国与欧盟之间的关系都给这笔交易平添了几分不确定性。更重要的是,ARM的授权商不希望像英伟达这样的芯片公司占据主导地
[手机便携]
ARM推动物联网设备生态链创新
在亚洲,中国科技界的几家领导品牌正陆续借助ARM mbed 物联网设备平台推出许多实际应用的解决方案。上海世界移动大会 (MWC Shanghai)正是一个绝佳时机,让我们可以开始看到商业可用的IoT设备如何将智能创新元素带入品牌体验。 两大关键趋势: 家用安全启用语音人工智能 协议栈认证让创新者迅速将产品推向市场 领先的安全技术,用于语音AI的智能家庭IoT体验 当前物联网时代最重要的趋势之一,是能针对消费电子产品及服务型企业提供更具价值的新客户接触点,便是在物联网设备中扩展语音AI功能。亚太区是该趋势很重要的一个市场,到2021年,在亚洲和大洋洲地区,预估将有超过47%具有声音AI功能的设备。ARM mbe
[网络通信]
揭秘ARM单片机超声波监测预警系统电路设计
  随着信息化、智能化、网络化的发展,嵌入式系统技术获得广阔的发展空间,工业控制领域也进行着一场巨大的变革,以32位高端处理器为平台的实时嵌入式软硬件技术将应用在工业控制的各个角落。嵌入控制器因其体积小、可靠性高、功能强、灵活方便等许多优点,其应用已深入到工业、农业、教育、国防、科研以及日常生活等各个领域,对各行各业的技术改造、产品更新换代、加速自动化化 进程、提高生产率等方面起到了极其重要的推动作用。   障碍物距离检测电路的设计   在本系统中超声波测距电路是由MICROCHIP的PIC16C57设计而成的,选用的超声波传感器是T/R40-16压电陶瓷传感器。在工作中,主控器PIC16C57发出信号使发射端的超声波换能器发
[单片机]
揭秘<font color='red'>ARM</font>单片机超声波监测预警系统电路设计
浅析基于GPRS无线智能家居系统解决方案
  通信技术的不断发展以及人们对生活要求的不断提高,实现家庭智能的远程控制已经成为必然的趋势。国家建设部住宅产业化促进中心提出住宅小区要实现六项智能化要求,其中包括实行安全防范自动化监控管理:对住宅的火灾、有害气体的泄漏实行自动报警;防盗报警系统应安装红外或微波等各种类型报警探测器;系统应能与计算机安全综合管理系统联网;计算机系统能对防盗报警系统进行集中管理和控制。   由于目前无线通讯技术的不成熟、运行费用高等弊端,智能家居控制器与外网无线通讯技术成为导致市场接受度低的重要因素,而GPRS系统的特点能够很好的解决该问题。GPRS网络通信业务是通讯公司推出的一项数据传输通信业务,在GPRS网络覆盖区域内,传输距离不受限制,通信费
[单片机]
协作,创新,腾飞:庆祝ARM 创立25周年
1990年11月27日,Advanced RISC Machines (ARM)从 Acorn 和 Apple Computer的合资公司中拆分出来,开始展开今日主载全球智能装置微处理器架构的新旅程。随后的25年里,基于ARM架构的芯片全球出货量超过750亿,应用范围覆盖传感器、智能手机及服务器,成为全球先进数字产品的核心。 ARM始终专注于实现智能互联未来的技术发展和投资,值此25周年之际,我们希望借着回顾走过的岁月, 列举ARM发展过程中的十大里程碑,见证与产业生态合作伙伴们共同书写的记录科技创新与产业更迭的炫丽篇章。 1990年,ARM公司正式成立 ARM不再仅仅是 先进精简指令集机器 (Advanced R
[嵌入式]
协作,创新,腾飞:庆祝<font color='red'>ARM</font> 创立25周年
ARM CPU 寄存器组织
ARM CPU 为用户模式提供了 16 个通用寄存器和一个状态寄存器 (CPSR), 不同模式间还提供有备份状态寄存器(SPSR). 对于软硬件的一些约定, 下面三个寄存器有着不同的含义, 使用时要注意: R13 is used as stack pointer (SP) that holds the current stack address(堆栈指针) R14 is used as link register (LR) that saves return address for the BL and BLX instruction(链接寄存器) R15 is used as program counter (PC) t
[单片机]
<font color='red'>ARM</font> CPU 寄存器组织
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved