摘要:
在写这篇blog之前,不得不感慨一句:纸上得来终觉浅,绝知此事要躬行.作为EE出身的,虽然好久好久没用汇编写单片机的中断了,但自我感觉对中断的理解还是比较深入的,本以为在GNU ARM汇编下搞个中断会很容易,谁知道断断续续花了我几周.完全用汇编写中断和用c中的_irq写中断还是有区别的,谁用谁知道.还是那句话:深入细节是必须的,也是值得的. 这一篇blog的理论知识主要来源于:《ARM System Developer's Guide》. ARM的异常和相应的模式之间的对应关系见下表:当一个异常导致模式的改变时,内核自动地:1、把cpsr保存到相应模式下的spsr2、把pc保存到相应模 阅读全文
posted @ 2012-10-15 22:16
Daniel.G
阅读(951)
评论(0)
推荐(0)
摘要:
这一篇的知识来源全部来自《ARM System Developer's Guide》 从编程人员的视角来看,arm核是由数据总线连接的功能单元组成,如下图所示: 数据通过数据总线流向处理器核心,这里的数据可以是将要执行的指令,也可以是数据项.上面的图是Von Neumann体系的arm核,数据项和指令共用同一总线.而h哈佛结构体系的arm核就会用两个不同的总线. 就像所有的RISC处理器,arm采用load-store体系结构.也就是说它含有两条不同的指令类型来出入处理器.loar指令将数据从内存拷贝到寄存器,store指令是将数据从寄存器拷贝到内存.没有直接操作内存中... 阅读全文
posted @ 2012-10-15 22:14
Daniel.G
阅读(532)
评论(0)
推荐(0)
摘要:
GNU的汇编器是GNU Tools的一部分,可以用来ARM的汇编语言源代码编译为二进制文件.关于GNU汇编器的介绍可以搜索《GNU Assembler Manual》.这里我们只是做一个简短的介绍,对GNU汇编器有一个大概的认识,同时通过两个例子了解一下GNU ARM汇编. 给出一个模板文件:[cpp]view plaincopyprint?.text;Executablecodefollows_start:.global_start;"_start"isrequiredbythelinker.globalmain;"main"isourmainprog 阅读全文
posted @ 2012-10-15 21:33
Daniel.G
阅读(948)
评论(0)
推荐(0)
摘要:
在大学的时候,汇编就是学的很烂.一是对汇编这门语言没概念,二是那些指令集很难记清楚,用的机会也少,自然学的不好.但是现在觉得相当有必要重头学习一下汇编.部分原因我在上一篇写完设备模型的总结时提到了而.最近在看一本书《ARM:Assembly Language Programming》,作者是Peter Knaggs & Stephen Welsh.作者在开头也提出学习汇编的必要性和重要性,借他们的话重新说一下: 他们首先用三个问句来引出为什么要学习汇编: 外科医生为了知道手术刀的用法而需要学习冶金吗?飞行员需要学习热力学理论来理解飞机引擎是如何工作的?报社的记者要学习电子学来理解照.. 阅读全文
posted @ 2012-10-15 21:31
Daniel.G
阅读(480)
评论(0)
推荐(0)
浙公网安备 33010602011771号