您的位置 首页 电子

做ARM裸机C与程序时的注意事项

在设置好芯片类型,弄好芯片寄存器的宏定义后,接下来的编程就是走C的标准程序设计了。想法正确,但是ARM程序设计与以前大家学的8051是有差

在设置好芯片类型,弄好芯片寄存器的宏界说后,接下来的编程便是走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
设置好自己程序的程序的开端的源地址后,再设置Layout菜单下的
Place at begining of image(放置镜像的开端文件)
这儿用的是方针文件,用于链接时放在镜像文件的最开端,设置如下。意思是将init.o方针文件的init段放在镜像文件的最开端。

这些设置完结之后,还必须设置进口点,RealView Linker里边能够看到下面的命令行,参加
–entry=start 就能够了,现在编译链接后,在Axd里边就能够经过Jtag调试了。

假设start在汇编中不是设置的global,那么链接的时分,链接器会正告无法找到进口。
也能够不必加汇编作“引导”,可是在设置的时分,你要清楚C转为汇编后,你要用的段在哪里,进口函数在哪里。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/dianzi/262938.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部