分类:
2009-03-29 11:49:18
最近IAR送了我们一套EWARM软件。过几天IAR公司有人要来讲座。
用了一下这个强大的集成开发环境,就一个字,太方便了。
很早之前就想回过头去重新学习一下ARM的体系结构和汇编。
这次正好这个机会。
借助使用EWARM来学习arm汇编。
EWARM的文档相当丰富。
基本上网上的所有资料都来自官方文档,翻译的或是写的也同官方的差不多。
有本书《IAR EWARM 嵌入式系统编程与实践》,北航出的,徐爱钧编著
中间一大段,大概50%以上内容,基本上就是翻译官方文档。
文档在安装目录的arm/doc目录下,有tutor,汇编参考,C,C++参考,还有ADS和RVDS移植到 IAR 的参考,比较了两个编译器,IDE的不同相同点,
不过文档是英文,还有日文的。
同这些文档奋斗了几个小时后,终于有了hello world
PROGRAM hello ;伪指令PROGRAM定义一个汇编程序模块,模块名为hello,也可以用MODULE,NAME
SECTION MYCODE:CODE;ROOT(2) ;SECTION定义一个段的开始,也可以用RSEG,
;段名叫MYCODE,属性可以是CODE,CONST和DATA,
;ROOT NOROOT是这个段名的标志,NOROOT表示如果这个段里
;没有标号被引用,则抛弃,ROOT则一定不抛弃,
;一般除了 startup 代码和中断向量外的所有段都可以标注 NOROOT标记
ARM ;告诉编译器为arm指令,也可以用CODE32
PUBLIC __iar_program_start ;编译器默认的程序入口标号,必不可少,可以用--entry的编译器选项改变
;;;;;;LDR R0,=0x10 ;这句话就算没有被注释掉,也会忽略
__iar_program_start: ;cpu复位后从这里开始执行__iar_program_start
LDR R0,=0x30000000
LDR R1,=0xff
str R1,[R0]
MOV R0,#0x10
MOV R1,#0x20
ADD R0,R0,R1
stop: B stop
ENDMOD ;模块结束
END ;源文件结束