No.81475 作者:tiao58 邮件:584828375@163.com ID:148792 登陆:14次 文章数:81篇 最后登陆IP:219.134.30.150 最后登陆:2013/6/26 21:59:09 注册:2012/7/17 10:24:04 财富:494 发帖时间:2012/8/26 9:39:51 发贴者IP:218.18.72.170 标题:tiao58:[分享]【荐-深圳信盈达】ARM与嵌入式linux的入门建议 (六步曲)! 摘要:No.81475[分享]【荐-深圳信盈达】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部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么 联系?怎么联 ......
>>返回讨论的主题
|