在设置好芯片类型,弄好芯片寄存器的宏界说后,接下来的编程便是走C的规范程序设计了。主意正确,可是ARM程序设计与曾经大家学的8051是有不同的。
曾经在KeilC51里边,在树立竣工程之后,Keil会提示是否参加startup.a51的文件,这个文件用来初始化51芯片的各个硬件资源。假设不加,往往程序会运转犯错。
关于ARM裸机,也相同,只不过RVDS编译器不会给你供给初始化的文件,都要自己写。一般工程文件为汇编和C的混合。因为现在的学习还不行深化,所以现在也只清楚一些简略的程序设计结构。
例如,一般在工程文件中加一个init.s的汇编文件。里边仅有一句用于跳转的汇编句子。假设你的C言语的进口函数为main,那么这句句子便是: BL main
init.s的写法,一般为如下;
AREA init , CODE ,READONLY //段名,很重要,因为在设置开端段时有用
GLOBAL start //应该设置为大局的,在设置进口点的时分有用,不然编译器找不到
IMPORT main //因为main函数是外部函数,所以要用import来声明
ENTRY
start
BL main //跳转到了C言语中的main函数了,也可所以其它函数
End
写好“引导”汇编程序及C言语程序后,还要进行设置。在Edit菜单下的 Debug setting 或许 Release setting(要害看你设置的是调试还生成)的
link选项中挑选RealView Linker
这些设置完结之后,还必须设置进口点,RealView Linker里边能够看到下面的命令行,参加
–entry=start 就能够了,现在编译链接后,在Axd里边就能够经过Jtag调试了。
假设start在汇编中不是设置的global,那么链接的时分,链接器会正告无法找到进口。
也能够不必加汇编作“引导”,可是在设置的时分,你要清楚C转为汇编后,你要用的段在哪里,进口函数在哪里。