Self leanning note 之 初始化篇
根据我自己的学习经历,技术行业都是靠自学的。凡是进入了技术领域的同胞们,他们的自身最大核心竞争力就是自我学习能力。大家都知道技术革新速度之快,但是当所有旧的技术被淘汰之时,唯一留下的就是自己(的思想)。以下是我进入ARM技术领域的学习过程,不求详细,但求真实完整。经常抽时间写写总结,于己于人都是非常有益的。
编程基础背景
在学校时学过C语言, x86汇编。C语言这门课程对我的影响甚大,从它开始我就对编程产生了浓厚的兴趣。其实写C代码并不多,一直到工作之后的现在,我做过的项目里没有一个是用C写的。C语言方面的成果主要有两个,一是通过二级考试,二是通过计算机软件程序员资格考核,为了节省二十块钱,当时没拿证书。
出来工作后,在单位里面用汇编写了两年多,所以对MCU的汇编比较熟悉。
ARM和Linux基础背景
毕业实习期间,在一家网络公司里面用过红帽子linux操作系统。因为服务器都是用linux系统,所以自己也知道一些常用命令。比如ls,cd ../, mv….对我最有用的命令莫过于startx。
在linux上用过skyeye仿真来仿真ARM,实际上ARM的学习也是这里开始的,但是都是跟着别人的说明一步步操作安装,除了写Helloworld之外,并没有做其他事情。现在要我在重新搭建一个skyeye的环境,还得两三天时间。其他ARM硬件完全没有接触。
看来自己的本钱并不多,一是当年扎实的C语言基础(现在好久没用C了),二是对8位MCU汇编比较熟悉,三是有过linux操作基础,最后是自己浓厚的兴趣。
第一阶段,开发板之旅
1, 购买开发板
狠心要买个开发板了,经同学介绍,友善之臂不错。在网上找了一下,买了个s3c2440
的1250块大洋。板子隔天就拿到手了,接上电源,看到漂亮的LCD界面,玩了半天的QT,给开发板接上网线,将路由设置为局域网同一网段,连接上google,baidu,163这些网站。后来跟着用户手册做了些开发板测试,再后来就不知道做什么了。于是想起了原来自己没有一点理论基础,什么都做不了。
2,到图书管借书去
先后看了两本书,一本是ARM结构体系与编程,另一本是ARM嵌入式常用模块与综合系统设计实例精讲。说实话,这两本书对与初学者来说实用性也不怎么好。但是根据我自己的看书经验,往往只看一本书是不够的。同一个技术点,在不同的书籍和资料里面,解说的方式和程度是不一样的,只有将他们都结合起来思考,自己才能有更深一步的理解。
通过阅读书籍和在网上搜索资料,主要学习了以下知识。
1)ARM的
汇编(伪)指令。这方面花了很多时间去学习,但是现在能记住的只有常用几条指令和几种基本的寻址方式。忘记了不要紧,用到的时候知道在哪里找回来就行了。
教模电的老师说过,出来后学东西不是为了应付考试,而是为了赚钱。很实际吧?我想他的意思就是说,学习的过程主要是理解的过程,最后记住该记住的,确实记
不住,以后用到的时候知道在哪里可以查找回来。重点在知识的应用。
2)存储器重映射和bootloader的概念。一开始是看了周立功先生的资料,没搞清楚。后来也在网上找了一些资料,最后还是看了LPC2124的英文datasheet才理解的。
3)Keil环境和Proteus联机,这里主要用LPC2124,详细解读了LPC的启动代码。
4)elf镜像文件,加载地址和运行地址。
等等。
3, 利用开发板做JTAG实验
先是按照用户手册一步步做,熟悉了ADS1.2的开发环境,以及一些编译和链接参数的设置,特别记得的是编译基址和入口点的设置。成功从零开始建立一个项目,并且通过H-JTAG下载到开发板的SDRAM空间运行。
4, 结合开发板的原理图和用户说明,阅读s3c2440的芯片规格书。
在这步骤里,主要是搞清楚了2440的启动方式和硬件地址。比如SROM,Nnad Flash。Nor Flash的实际地址。还有2440的启动方式控制,LED端口的地址,整个芯片的pin分布。
下一步开始,就要全面阅读s3c2440的规格书,参考别人的程序,写一些测试每种功能的代码,争取把这块片子的资源掌握,包括GPIO,IIC,UART,等等。这些工作将在第二阶段实验中完成。(2008-5-10 bob.xue@163.com)
文章评论(0条评论)
登录后参与讨论