- 论坛徽章:
- 0
|
一直想在CU开个博客,学习一下嵌入式linux,然而这里的的高手如云!怕写出来的反遭到高手的笑话,不过尽管如此,本人还是写一下自己的博客,来整理一下自己的思绪!为什么说是整理一下自己的思绪呢:原因有几点:
1.因为以前没有接触过嵌入式,甚至51(我只自学过一个多月);所以对嵌入式的学习很模糊,不知道重点和脉络;这就引起自己的思想很乱,不能统一!
2.因为学习ARM,或者说自己想吃这碗饭;学习ARM又没有人指导,目前接触过的开发板有博创的ARM3000、莱顿的QQ2440以及周立功的easyarm2104由于没有专门的配套教材,所以自己学习起来真吃力!而且思维很乱!
3.自己学习arm了一段时间;QQ2440在linux下编程,博创在windows的ads下编程,但是都很模糊,拿到一个新的arm处理器又不能很快上手!很耽误时间,感觉就是自己思维很乱,不成系统。
现在就来总结一下自己的感受:
像一位学者一样,想脱离windows在linux下编程,发觉很困难,很多时候企业还是习惯在windows下编程的。所以自己也要两方面具备才行;首先要明确单片机的五脏是什么,我查了一些资料,认为这五脏是:cpu,rom,ram,计时器和定时器,还有I/O接口。因此,我想,如果搞嵌入式的话,必须做好以下工作:
1.要搞清楚arm的这个五脏及其连接(特别是ram和rom是在片内还是在片外);
2.要搞清楚arm片内的数据总线(有可能是2类或者是3类数据总线,他们的主要区别是时钟频率不一样);
3.要搞清楚arm复位后是如何启动的(例:QQ2440中的s3c2440就是将nand flash中的前4KB的数据通过硬件拷贝到0x00000000位置前4Kstepping stone中,然后开始运行,如果程序太大的话,那么我们要把nand flash 4KB后的一些代码拷到我们的外部的存储器sdram中, 只把一些重要的启动代码通过硬件拷贝到stepping stone中)
4.要搞清楚arm存储器空间的分配,这个极关重要!因为外部存储器,和一些I/O接口的地址都要跟他挂钩的,所以要搞清楚了;
5.要搞清楚有没有mmu和cashe(s3c2440有);
我想搞清楚了前面几点,那就可以开始做一些简单而必要的驱动了:
1.串口驱动的编写(这是最基本的,也是最重要的,很多驱动开发要它来监控);
2.系统时钟和电源的管理(因为,我们用的外部时钟频率是较为低的,如果想开发arm就要用到它的优势,所以要学会将时钟频率提高);
3.定时器和计数器的应用;
4.中断的应用;
5.内存的分配与控制(主要是内存bank的分配与设置,包括数据宽度);
6.(若有的话)内存的管理(主要是内存的映射);
7.flash的读写;
如果把这几个必要的驱动熟悉了,我想编写一些其他的驱动应改能入手了!
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/45498/showart_413447.html |
|