想搞ARM,不知道得先学那些知识

[复制链接]
 楼主| elever 发表于 2007-7-27 15:09 | 显示全部楼层 |阅读模式
小弟有单片机基础,搞过一段时间,有汇编和c基础。现在想搞ARM,不知道应该需要先学那些基本知识。
jimsboy 发表于 2007-7-27 23:35 | 显示全部楼层

买板回来折腾

  
zlg315 发表于 2007-7-28 10:46 | 显示全部楼层

我的体会

&nbsp;&nbsp;&nbsp;&nbsp;多动手实践是一个很重要的环节,但大多数初学者不注重基础理论的学习和研究,往往会造成后劲不足,最终要跨向Linux、WinCE底层驱动开发的功底不够扎实。<br />&nbsp;&nbsp;&nbsp;&nbsp;为什么会产生这样的情况呢?很多人往往都注重“立竿见影”的效果,这是最大的危害。高手的基础都比较好,所以他们在给初学者指导的时候,最容易忽略一些重要的环节。因此他们给初学者的建议往往非常简单,“买一块板子干啦!”要么就是“读源码啦!”或者就是“选什么OS最有前途啦!”<br />&nbsp;&nbsp;&nbsp;&nbsp;事实上,自己学习与教别人学习完全是两回事。高手有时不一定是好教练,学习需要根据个人不同的情况和工作来制定学习方案,不能一概而论。
无智 发表于 2007-7-28 22:53 | 显示全部楼层

那就是说理论要学习操作系统原理?硬件自己做?<br />回答明确一些嘛!
zlgarm 发表于 2007-7-29 08:49 | 显示全部楼层

比如说,学习NXP半导体的LPC2000系列ARM吧!

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;重点要抓住中断,中断是一条极其重要的主线,贯穿到18个外围功能部件环环相扣,即就是说每一个外设都与中断紧密相连。由此可见,如果以中断为根,以外围为枝,VIC中断向量控制器就是它们之间的桥梁,从而构成了“中断关联多叉树”,于是学习ARM也就有主线了。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;当CPSR中的F、I为1时,则禁止使用中断,反之允许IRQ、FIQ中断使能,即就是“CPU可以响应中断了”。那么到底需要满足什么条件CPU才能“响应外设中断”呢?那么到底需要满足什么条件CPU的“外设才能产生中断”呢?由此可见,居于ARM内核中的I、F是就是中断的总开关,如果不允许IRQ、FIQ使能,即便外设产生了中断也不能真正地起到作用。<br />&nbsp;&nbsp;&nbsp;&nbsp;只要解决了中断问题,余下的就是如何使用外设了,而是如何使用外设也就非常简单了。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;学习中最重要的一个环节就是要学会使用“图解法”,将每一段自己理解的文字变成简单易懂的“图”,也可以由此检验您是否真的懂了,很多人读书就是将书一遍一遍地翻过去,然后就是一边编程一边查资料。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;我们知道,所有的外设都是通过设定寄存器的控制位来实现的,也就是说寄存器的每一位控制位不是“0”便是“1”,要想将书读懂唯一的办法就是画图,画出外设“寄存器逻辑开关控制图”,一个外设只要一张纸就可以说明清楚了,这张纸就是编程指南。&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;学习中的第二个环节就是学习写技术笔记,比如,从内核开始到VIC中断向量控制器,再到相关的外设,以中断为主线连贯起来写成一篇论文,可以取名为“LPC2000系列ARM中断机理”,详细阐述中断的使能,CPU是如何响应外设中断的以及外设是如何产生中断的,这就是人们常常说的读书之道--“由厚到薄”的过程。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;还有比如学习处理器的模式,用户模式、系统模式与管理模式之间的切换与关联,以uC/OS-II为例,使用汇编程序探索OS底层“任务调度与任务切换”的秘密。移植一个OS在C语言中要调用汇编,一般来说是通过SWI软件中断来实现的,还有临界区的保护,当由用户模式切换到管理模式时,OS需要保护当前任务的环境和现场数据,然后再切换到系统模式,在系统模式下将OSPrioHighRdy赋值给OSPrioCur,使OSTCBCur与OSTCBHighRdy指向同一位置,最后切换到管理模式返回,PC指向将要执行的函数(函数名即就是任务的首地址,也就是程序开始的地方),因此可以将凡是与这些相关的内容连贯起来写成一篇论文。<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;比如说,汇编程序“LDR&nbsp;R5,=OSTCBHighRdy”与“MOV&nbsp;R5,=OSTCBHighRdy”之间“细节”的区别,还有C程序通过SWI调用汇编程序的细节就更需要知道了,当C语言程序中出现“OS_TASK_SW()”语句时,编译器就将它编译成以下汇编指令:“MOV&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;#0&nbsp;&nbsp;&nbsp;&nbsp;//设置功能号为0”和“SWI&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;//实现中断,但不指明调用的功能号”。比如还有压栈指令,编译器首先判SP后面是否有“!”,有没有“!”SP的值是不一样的,还要看指令后面是否有“^”,有了“^”之后还要看大刮号里面是否有“PC”,那么压栈的过程呢?一定要注意,寄存器与内存单元的对应关系是:编号低的寄存器对应于内存中低地址单元,编号高的寄存器对应于内存中高地址单元。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;通过上述写技术笔记的学习方法,我们学到的知识就全部变成了自己的知识,否则还是别人的。由此可见,认真学习只能达到一般的效果,而用心学习才能产生意外的惊喜。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;最后一句话,学习ARM什么最重要?打好基础最重要,其次最好有一个好教练,可以起到事半功倍的效果。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;由于篇幅有限,很难在此全面解说,非常抱歉!
后学 发表于 2007-7-30 08:32 | 显示全部楼层

re

1、C语言;<br />2、你使用的开发环境和函数库;多为gcc;<br />3、你使用的OS;
wangharry 发表于 2007-7-30 09:30 | 显示全部楼层

如何会使用ARM

其实用ARM主要在于你是否有好项目&nbsp;如果你发挥到不用U-BOOT自己编写bootlaoder对ARM内核软件的优化&nbsp;你就是ARM中精英。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;原于ARM公司的Dominic&nbsp;Symes&nbsp;Doctor
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部