arm开发板(初学嵌入式linux及ARM开发板的五点建议)

/ 0评 / 0

Arm开发板(嵌入式linux和ARM开发板初学者的五点建议)

首先,学习基本的单片机编程。

对于学习硬件的人来说,首先要对硬件的根本应用方法有感性认识,更重要的是要对硬件的掌握方法有深入的了解。如果他们一开始就学习Linux系统,学习移植,只会立刻陷入深深的漩涡。刚开始学ARM的时候,我选择了ARM7(重要的是当时ARM9还很贵)。我在学习ARM7的时候,还是坚持学习51单片机的思维,应用ADS编程。第一个实验是掌握led。学过一段时间ARM的人会嘲笑这种愚蠢。其实不是。我觉得有这个流程会好很多,因为再复杂的系统,最终都是要实现掌握这些底层硬件的。所以,对这些硬件有个感性认识就好很多了。在学习单片机编程的同时,要很好的了解这个硬件的架构和原理,我称之为他懂硬件。所谓了解硬件,就是了解这个硬件是如何组织这么多资源的,以及这些资源是如何被cpu和编程掌握的。比如s3c2410,有AD转换器,有GPIO(通用IO口),有nandflash master。这些东西都有一些存储设备需要掌握。这些存储设备都有地址。这些地址是什么意思?如何通过存储设备掌握这些外围设备的操作?另外,norflash中的每个单元在这个芯片的内存中都有对应的地址单元,那么这些地址和刚才提到的内存的地址是什么关系呢?他们是一样的吗?而与norflash对应的nandflash中的存储单元不是线性放电,那么s3c2410如何将nandflash的地址映射到memory 空进行应用呢?或者简单来说,我们应该如何使用nandflash?此外,将ADS应用于ARM9程序行时,必须将其应用于初始化的汇编文件。这个文件到底有什么用?他体内的密码是什么意思?我能拿这个吗?这样的东西都是对硬件的理解。了解这些会让你对硬件有更深的了解,对以后的深造是很大的赞助。如果跳过这一步,我相信以后越学越糊涂,越觉得这文笔深不可测。因为你还没有打好基础。

arm开发板(初学嵌入式linux及ARM开发板的五点建议)

其次,在linux系统上进行了一些基础实验。

买一套板,一般会提供一些linux实验套路。暂时把这个做好。这个过程也很有意义,也为进一步学习积累了感性认识。你能想象一个从未应用过linux系统的人能学好linux编程吗?按照手册上的套路做好实验。虽然有些娃娃学走路有点弱智,但是我想很多高手都会经历这个过程。这方面我们深蓝科技目前还没有计划供应相应的套路。重要的是开发板的供应商会提供丰富的例程。我们不做重复性的工作,只供应他们没有的最有价值的东西。

第三,讨论完整linux系统的运行过程。

一个完整的linux系统由哪些部分组成?第三部分:bootloader,linux内核(linux内核)和rootfile(根文件系统)。那么这三个部分是如何相互配合形成这个体系的呢?各有什么用?三方有什么联系?如何接近?系统的实现流程是怎样的?明白了这个问题,你就清楚了整个系统的运行,这也就为下一步制造这个linux系统打下了又一个重大的基础。关于这个的几吨信息可以在网上找到,所以自己讨论吧。

第四,开始系统移植。

如上所述,完整的linux有三个部分,你知道它们之间的关系和作用,那么你现在要做的就是学会自己制作这些东西。当然,我不能要求你写这些代码,这是无法实现的。其实这三个都可以在网上下载相应的源代码,只是这个源代码不能下载编译运行在你的系统上。它需要大量的修改,直到它可以在你的板上运行。这个修改过程叫做移植。在移植的过程中,你有很多东西要学,有很多相关的知识要知道。当你完成这个过程,你会发现你已经是一个新手了。在这个过程中,如果你有大量的研究精力,你一定会想到看源代码。很多书告诉你如何浏览linux源码技术资源网络代码。我不提倡漫无目的地看linux源代码。用许三多的话说,这毫无意义。当你认为你在做移植的时候需要看源代码的时候,找一本好书。这里推荐倪的一本好书《linux内核的分析与编程》,这是一本针对linux-2.6.11内核的书。很有深意。建议先提高自己的C语言编程水平再看。至于移植网站的各个部分,你也可以找到成吨的信息,自己讨论。但是需要注意的是,很多关于你经历的东西都或多或少的保留了下来。你按他说的做,总会有一些问题,但他不会告诉你怎么解决。这个时候,你就得靠自己了。如果你不能依靠技术资源网站,请找我和你讨论。我不能保证我能解决你的问题,因为我可能没有遇到过你的问题,但我相信我能。这一步的最终目的是从源码的官方主页(都是国外的,sad)下载标准源码包,但是反过来修改,最后在板上运行。偷阿基米德的话:“给我一根网线,我就能修好linux”。

第五,讨论linux驱动程序的编写。

移植系统不是最终目的,最终目的是开发产品和项目,这些都需要开发驱动。Linux驱动可以说是五花八门。linux2.4和linux2.6的写法有一个相当大的区别,就是都是linux2.6,但是不同版本的驱动也不一样。所以写Linux驱动不是那么容易的,最新版本驱动的编写也没有足够的参考资料。那么我的建议是应用并移植一个版本不是很新的内核,这样技术资源网驱动的编程就会有足够的信息。这部分推荐书籍可以参考另一篇文章《推荐一些学习嵌入式Linux的书籍》。第六,讨论应用程序的编写。除了写驱动,我们还需要写应用程序。当前的趋势是开发图形应用程序,而qt/e函数库是图形应用程序中应用最广泛的函数库。我一直在用这个库开发自己的应用程序,但是我希望你能用国产的MiniGUI库。盗用周杰伦的广告词是“支持国产和MiniGUI”。MiniGUI的编程类比类似于Windows下的VC编程,比较好用,后果应该说是相当不错的。我曾经开发ARM7程序。记住,问题是最好的学习机会。