打印

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

[复制链接]
2099|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elever|  楼主 | 2007-7-27 15:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
jimsboy| | 2007-7-27 23:35 | 只看该作者

买板回来折腾

使用特权

评论回复
板凳
zlg315| | 2007-7-28 10:46 | 只看该作者

我的体会

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

使用特权

评论回复
地板
无智| | 2007-7-28 22:53 | 只看该作者

那就是说理论要学习操作系统原理?硬件自己做?
回答明确一些嘛!

使用特权

评论回复
5
zlgarm| | 2007-7-29 08:49 | 只看该作者

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

     重点要抓住中断,中断是一条极其重要的主线,贯穿到18个外围功能部件环环相扣,即就是说每一个外设都与中断紧密相连。由此可见,如果以中断为根,以外围为枝,VIC中断向量控制器就是它们之间的桥梁,从而构成了“中断关联多叉树”,于是学习ARM也就有主线了。

    当CPSR中的F、I为1时,则禁止使用中断,反之允许IRQ、FIQ中断使能,即就是“CPU可以响应中断了”。那么到底需要满足什么条件CPU才能“响应外设中断”呢?那么到底需要满足什么条件CPU的“外设才能产生中断”呢?由此可见,居于ARM内核中的I、F是就是中断的总开关,如果不允许IRQ、FIQ使能,即便外设产生了中断也不能真正地起到作用。
    只要解决了中断问题,余下的就是如何使用外设了,而是如何使用外设也就非常简单了。

    学习中最重要的一个环节就是要学会使用“图解法”,将每一段自己理解的文字变成简单易懂的“图”,也可以由此检验您是否真的懂了,很多人读书就是将书一遍一遍地翻过去,然后就是一边编程一边查资料。

    我们知道,所有的外设都是通过设定寄存器的控制位来实现的,也就是说寄存器的每一位控制位不是“0”便是“1”,要想将书读懂唯一的办法就是画图,画出外设“寄存器逻辑开关控制图”,一个外设只要一张纸就可以说明清楚了,这张纸就是编程指南。    

    学习中的第二个环节就是学习写技术笔记,比如,从内核开始到VIC中断向量控制器,再到相关的外设,以中断为主线连贯起来写成一篇论文,可以取名为“LPC2000系列ARM中断机理”,详细阐述中断的使能,CPU是如何响应外设中断的以及外设是如何产生中断的,这就是人们常常说的读书之道--“由厚到薄”的过程。

    还有比如学习处理器的模式,用户模式、系统模式与管理模式之间的切换与关联,以uC/OS-II为例,使用汇编程序探索OS底层“任务调度与任务切换”的秘密。移植一个OS在C语言中要调用汇编,一般来说是通过SWI软件中断来实现的,还有临界区的保护,当由用户模式切换到管理模式时,OS需要保护当前任务的环境和现场数据,然后再切换到系统模式,在系统模式下将OSPrioHighRdy赋值给OSPrioCur,使OSTCBCur与OSTCBHighRdy指向同一位置,最后切换到管理模式返回,PC指向将要执行的函数(函数名即就是任务的首地址,也就是程序开始的地方),因此可以将凡是与这些相关的内容连贯起来写成一篇论文。
 
    比如说,汇编程序“LDR R5,=OSTCBHighRdy”与“MOV R5,=OSTCBHighRdy”之间“细节”的区别,还有C程序通过SWI调用汇编程序的细节就更需要知道了,当C语言程序中出现“OS_TASK_SW()”语句时,编译器就将它编译成以下汇编指令:“MOV    R0, #0    //设置功能号为0”和“SWI 0    //实现中断,但不指明调用的功能号”。比如还有压栈指令,编译器首先判SP后面是否有“!”,有没有“!”SP的值是不一样的,还要看指令后面是否有“^”,有了“^”之后还要看大刮号里面是否有“PC”,那么压栈的过程呢?一定要注意,寄存器与内存单元的对应关系是:编号低的寄存器对应于内存中低地址单元,编号高的寄存器对应于内存中高地址单元。

    通过上述写技术笔记的学习方法,我们学到的知识就全部变成了自己的知识,否则还是别人的。由此可见,认真学习只能达到一般的效果,而用心学习才能产生意外的惊喜。

    最后一句话,学习ARM什么最重要?打好基础最重要,其次最好有一个好教练,可以起到事半功倍的效果。

    由于篇幅有限,很难在此全面解说,非常抱歉!

使用特权

评论回复
6
后学| | 2007-7-30 08:32 | 只看该作者

re

1、C语言;
2、你使用的开发环境和函数库;多为gcc;
3、你使用的OS;

使用特权

评论回复
7
wangharry| | 2007-7-30 09:30 | 只看该作者

如何会使用ARM

其实用ARM主要在于你是否有好项目 如果你发挥到不用U-BOOT自己编写bootlaoder对ARM内核软件的优化 你就是ARM中精英。

                   原于ARM公司的Dominic Symes Doctor

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝