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

arm开发板(嵌入式linux和ARM开发板初学者五点建议) 。
首先 , 学习基本的单片机编程 。
【初学嵌入式linux及ARM开发板的五点建议 arm开发板】对于学习硬件的人来说 , 首先要对硬件的基本用途有一个感性的认识 , 还必须对硬件的控制方式有深刻的了解 。如果他们开始学习Linux系统并进行移植 , 就会立即陷入深深的漩涡 。刚开始学ARM的时候选择了ARM7(主要是因为当时ARM9很贵) 。学ARM7的时候 , 还是保持着学习51单片机的思维 , 用ADS编程 。第一个实验是控制led 。一段时间后 , 学过ARM的人会笑说它笨 , 其实不然 。我觉得有这个过程会好很多 , 因为不管系统有多复杂 , 最终都会落实到这些底层的硬件控件上 , 所以对这些硬件控件有一个感性的认识会好很多 。在学习单片机编程的时候 , 需要对这个硬件的架构和控制原理有很好的了解 , 我称之为理解硬件 。理解硬件意味着理解这个硬件是如何组织这么多资源的 , 以及这些资源是如何被cpu和编程控制的 。比如s3c2410有AD转换器、GPIO (Universal IO Port)和nandflash控制器 , 这些都有一些寄存器要控制 , 而这些寄存器都有一个地址 , 那么这些地址是什么意思呢?如何通过寄存器控制这些外设的运行?另外 , norflash中的每个单元在这个芯片的内存中都有对应的地址单元 , 那么这些地址和刚才提到的寄存器地址有什么关系呢?他们是一样的吗?而norflash中对应nor flash的存储单元并不是线性排列的 , 那么s3c2410是如何将nan flash的地址映射到内存空中使用的呢?或者干脆怎么用nandflash?此外 , 当使用ADS编程ARM9行时 , 您需要使用一个初始化的程序集文件 。这个文件有什么用?他身上的代码是什么意思?如果你不想要这个可以吗?这些东西都是对硬件的一种理解 , 如果你理解了这些东西 , 你就会对硬件有很深的了解 , 这对以后的进一步学习会有很大的帮助 。如果跳过这一步 , 相信以后越学越会对感到迷茫 , 越觉得这种写法深不可测 。因为 , 你的基础没有打好 。

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

文章插图
其次 , 利用linux系统进行了一些基础实验 。
买一套板的时候 , 通常会提供一些linux测试例程 。这样做一段时间 。这个过程也很有意义 , 为进一步学习积累了感性认识 。你能想象一个没用过linux系统的人能学好linux编程吗?按照手册上的常规做实验 。虽然有些娃娃学走路 , 智障 , 但我想很多高手都会经历这个过程 。在这方面 , 我们深蓝科技目前没有计划提供相应的套路 , 主要是因为开发板的提供商会提供丰富的套路 , 我们不会做重复性的工作 , 只提供他们没有的最有价值的东西给大家 。
第三 , 研究一个完整的linux系统的运行过程 。
一个完整的linux系统由哪些部分组成?有三个部分:引导加载程序、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程序 。记住 , 问题是最好的学习机会 。

    推荐阅读