分享给初学者们的ARM与嵌入式linux的入门建议

发布者:数据旅人最新更新时间:2016-04-07 来源: eefocus关键字:初学者  ARM  嵌入式linux  入门建议 手机看文章 扫描二维码
随时随地手机看文章
大部分嵌入式开发初学者都在问有没有关于ARM与嵌入式linux的入门建议吗?我也知道大家这样问的原因,所以这里做一个总结供大家参考。事先声明下,以下的步骤都是针对Linux系统的,并不面向WinCE。想要面向WinCE入门建议的朋友勿进。

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

  对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学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函数库。我一直就使用这个函数库来开发自己的应用程序,与Windows下的VC编程很相似,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。完成这一步你基本就学完了嵌入式linux的全部内容了。

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

关键字:初学者  ARM  嵌入式linux  入门建议 引用地址:分享给初学者们的ARM与嵌入式linux的入门建议

上一篇:ARM入门篇之(二)工具
下一篇:linux下ARM汇编程序的调试

推荐阅读最新更新时间:2024-03-16 14:49

内嵌ARM9E内核系统级芯片的原型验证方法
1 引言   目前系统级芯片(SoC)规模飞速增长,嵌入式软件也日趋复杂,但是仿真软件的发展却相对滞后,设计团队已经意识到软件仿真的局限性,这种仿真不仅很难提供系统仿真所需要的仿真性能,而且非常耗时。随着大容量高速度的FPGA的出现,建立一个高性价比的原型验证系统要比其他的方法更加便宜和快速。 2 SoC原型验证的基本流程和优缺点分析   对于SoC设计的流程,每个公司都不尽相同,大的芯片公司都形成了自己特有的成熟的流程与方法。而对于加入原型验证之后的SoC设计基本流程如图1所示。在本文提到的一款内嵌ARM9E用于移动对讲通信的SoC开发中,采用的就是如图1所示的流程。在定义完软、硬件接口,明确软、硬件之间的通信协议后,就可
[单片机]
arm9为何上电时候要改变系统时钟
因为在没有上电时候,开发板是工作在12Mhz,那么用到时钟的硬件资源比如cpu 内存 uart等也工作在12Mhz,那么我知道正常情况下也即上电的话,开发板是工作在500Mhz,这样的话,需要一个切换的过程,这个过程如下: 1 系统工作时钟频率 在对系统时钟进行提速之前,让我们先来了解下 S3C2440 上的工作时钟频率, FCLK , HCLK , PCLK ,其中 FCLK 主要为 ARM920T 内核提供工作频率,如图 2-44 所示: 图 2-44 ARM920T 内核结构 HCLK 主要为 S3C2440 AHB 总线( Advanc
[单片机]
<font color='red'>arm</font>9为何上电时候要改变系统时钟
arm-Linux 编译动态库 简单实例
本文讲述了一个简单的例子 ,很好的解释了“编译动态库”。 一、准备工作 1.使用oracle VM Virtualbox软件安装Ubuntu虚拟机 2.下载好相关的软件并传输到虚拟机下,安装好交叉编译器。 二、编译应用 该例子以 1.c , 2.c, 2.h组成 1. 代码编辑 下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:2.h,一个.c文件:2.c,我们将这个文件编译成一个动态库:libtest2.so。 在Linux下编辑代码,可以使用vi,也可以使用gedit; 使用degit编辑 2.c, 2.h 如下图所示 然后我们用交叉编译器命令 :(用交叉编译是为了让生
[单片机]
<font color='red'>arm</font>-Linux 编译动态库 简单实例
搭载全新ARM Cortex-A73处理器智能手机设计能效及性能再获优化
首先,让我们回顾一下:2009 年发展至今,几乎所有智能手机都已经搭载了 ARM 处理器,性能提升达100倍。想想看,短短七年的时间,100 倍,多么惊人的数字!得益于性能的大幅提升,全新的功能、超高速的用户界面响应、以及沉浸式用户体验已成为现实,而功耗却依旧保持不变,移动设备设计领域的种种难题都得以攻克。毋庸置疑,这是工程技术史上一次空前的壮举。 高性能、全新功能以及优化的用户体验不断推动市场的快速成长,据预测,2016 年全球智能手机销量将突破15亿部。 伴随消费趋势的推动,智能手机设计已在诸多方面成为未来创新的重要平台。增强现实(AR)、虚拟现实(VR)、超高清视觉化、基于对象的音频处理技术和计算机视觉,都对系统性能
[手机便携]
搭载全新<font color='red'>ARM</font> Cortex-A73处理器智能手机设计能效及性能再获优化
基于ARM处理器的CAN节点设计
引言 随着信息技术的飞速发展,基于ARM在嵌入式系统方面的优势和CAN总线的广泛应用,目前越来越多的ARM处理器内部自带了CAN控制器,极大的方便了开发人员对CAN总线的开发。本课题是基于ARM2104的微处理器CAN总线系统节点开发,采用CAN总线可以将节点控制器直接安装在现场,数据经处理后发送到总线上,实现了信息的全数字方式传输,提高了传输的抗干扰能力,增加了信息的传输量。 总体设计方案 本课题中所设计的是CAN总线系统节点,系统节点结构图如图1。 图1 系统节点结构图 CAN总线系统应用要求:CAN总线接口的扩展、点对点通信。 CAN节点的设计主要是CAN通信控制器与微处理器之间、CAN总线收发器与物理总
[工业控制]
基于<font color='red'>ARM</font>处理器的CAN节点设计
基于ARM处理器的微波热疗仪系统设计
引言   随着科学技术的发展,各种医疗设备相继问世并得到广泛应用。其中,微波治疗 以其优越的止血效果、微小的组织损伤等优点,在医疗行业推广应用了多年,其疗效已得到医务界的肯定。微波作用于机体组织时,它会引起组织细胞中离子、水分子和偶极子的高频振荡。当使用小剂量微波时,它会产生低热效应,增强患者患处的血液循环,加快新陈代谢,增强免疫能力,因此能促进水肿吸收,消炎止痛;当使用大剂量微波时,它会产生高热效应,使蛋白质变性、凝固、坏死,此时,微波具有“烧灼”、“切割”的作用。   微波治疗仪是一种利用微波的生物学特性对各种疾病进行治疗的医疗设备,它综合了微波、传感器、自动控制、计算机软件和硬件等高科技技术。市场上的微波治疗仪的控制系统
[医疗电子]
基于<font color='red'>ARM</font>处理器的微波热疗仪系统设计
ubuntu下在连接arm开发板的情况下,使用无线网卡上网设置
一台双网卡电脑拥有两个网关是不可能的,因为默认网关(default gateway)只能是一个。给服务器安装两块网卡,分别设置不同的ip和网关(内网和外网),外网的通过外网网卡来访问,内网的通过内网网卡来访问,似乎实现起来很简单,但有些问题,因为默认网关(default gateway)只能是一个! 解决的办法就是: 1、将其中一块网卡(如外网)设置默认网关,另外一块网卡eth1不设置网关 sudo vi /etc/network/interfaces # The loopback network interface auto lo iface lo inet loopback # The primary network
[单片机]
MIPS首家授权培训中心登陆上海,不让ARM独美!
工业标准处理器架构与内核供应商MIPS科技日前宣布,已指定位于上海的双实科技公司作为其中国首家MIPS授权培训中心。自4月份开始,双实科技将提供关于系统级芯片(SoC)和板级系统(SoB)的专业培训。培训使用业界标准的MIPS架构及低成本的MIPS-Based开发板,培训对象为中国的职业工程师和研究生。 MIPS科技与双实科技还将共同举办一系列特别针对中国市场的技术研讨会。首届研讨会将于3月16日-17日在上海浦东软件园举行,将介绍MIPS科技的公司发展和动向、基础架构和内核及目标市场。介绍讲座对所有听众免费。研讨会的听众将包括IC设计者、嵌入式系统工程师和电子工程与计算机系(EECS)教师。其他研讨会计划在北京和深圳举行。有关
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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