前言:
学习嵌入式,ARM接口知识还是很重要的。学好接口可以明白底层硬件是如何工作的以及程序员如何控制这些硬件工作。如果想将来从事嵌入式底层开发方面的工作的话,如bootloader(uboot)移植、ARM驱动开发等,这些知识也都是必备的。
本文对自己以前学习ARM接口知识时的笔记做了个整理,做成专题的形式。一方面复习巩固一下已学过的知识,另一方面和大家分享自己的经验,也希望能给初学者提供帮助!
学习ARM接口最好的办法莫过于自己动手写几行代码,控制硬件工作。这样才能对硬件有更深入的了解。如果只是看Datasheet而不写代码的话,效果甚微!
写接口代码并非很难,通常我们可以把它归结为两个步骤:一、看懂硬件datasheet 二、往寄存器赋值(控制硬件工作)。难点往往集中在第一步,看懂datasheet,这一点需要一定的硬件基础和英语基础。没有硬件基础的话就需要硬着头皮往下看,另外再找些相关资料和代码来互补学习。另外,英语也很重要,因为datasheet基本都是E文的。所以学嵌入式英语也一定要好啊!在大学里意识不到,等出来后真正应用到的时候就越来越发现英语的重要性了。现在得拼命地补啊! J
下面介绍一下我的开发环境:
1.开发板:Armsys2410
板子是s3c2410 (arm920t core)的,做工不错,可惜价格贵了点,近一年前买时花了俺1700大洋,还没屏。本来以为还行,不过现在后悔了,提供的uboot只有bin文件,不送源码。上次uboot移植碰到点难题,打电话问他们要,讲了半天也没肯给。郁闷!花这么多钱还没技术支持! 好歹uboot还是开源的,一点开源精神都没有。还好自己后来移植成功了,uboot移植系列文章会在ARM接口专题结束后分享发出来。
2.开发工具:ads 1.2
ADS的使用就不介绍了,可以参考《ARM应用程序开发详解》,附录里有下。如果要用仿真器的话,必须用这个工具。还要注意的是,ADS里使用的汇编是ARM公司的标准汇编,和Linux 下的GNU汇编是不一样的,语法有少许差异,差异可以参考这篇文章:
http://blog.chinaunix.net/u2/60011/showart_470995.html
注意,这个专题里使用的是ARM标准汇编。
3.仿真器:Hjtag
没钱买仿真器的兄弟就用这个吧,绝对好东西啊。软仿真,不需要硬仿真器,完全免费。基本调试功能都有,支持ARM9,支持ADS。对于调试些小的接口程序足够了。强烈推荐!:)
使用参考:
http://blog.chinaunix.net/u2/60011/showart.php?id=471527
4.烧录工具:sjflash (for windows)+ jflash-s3c2410 (for linux)
工具及使用方法见附件:
参考资料:
1.S3c2410 datasheet
学习ARM硬件接口最好的资料就是该ARM的Datasheet,比任何资料都权威、详细。市面上大部分的ARM接口方面的书都是翻译的这上面的。
2.S3C2410完全开发流程
非常好的s3c2410 接口学习文档,强烈推荐。自己以前大部分的的接口代码都是参考的上面的。另外整个文档也写了非常好。
附件:
1.《ARM应用程序开发详解》
http://blogimg.chinaunix.net/blog/upfile2/080124235942.pdf
2.sjflash (for windows)+ jflash-s3c2410 (for linux)
![]() |
|
ARM9硬件接口学习之一 WatchDog
ARM9硬件接口学习之二 RTC
ARM9硬件接口学习之三 GPIO
ARM9硬件接口学习之四 CLOCK
ARM9硬件接口学习之五 UART
文章待续~~~~
(Interrupt、sdram、NandFlash、NorFlash)