ARM下C语言编程解析.pptVIP

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2. C程序调用汇编程序 . 汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。 . 在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子程序。 . 在C语言中使用extern关键字声明外部函数(声明要调用的汇编子程序)。 在C语言的环境内开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序,跳到C语言下的主程序,然后,执行C程序,在C环境下读写硬件的寄存器,一般是通过宏调用,在每个项目文件的Startup2410/INC目录下都有一个2410addr.h的头文件,那里面定义了所有关于2410的硬件寄存器的宏,对宏读写,就能操作2410的硬件,具体的编程规则同标准C语言。 2.4.2 初始化程序和开发环境设置 基于ARM芯片的应用系统,多数为复杂的片上系统,在系统中,多数硬件模块都是可配置的,需要由软件来预先设置其需要的工作状态,因此在用户的应用程序之前,需要由专门的一段代码来完成对系统基本的初始化工作。由于此类代码直接面对处理器内核和硬件控制器进行编程,故一般均用汇编语言实现。系统的基本初始化内容一般包括: . 分配中断向量表 . 初始化存储器系统 . 初始化各工作模式的堆栈 . 初始化有特殊要求的硬件模块 . 初始化用户程序的执行环境 . 切换处理器的工作模式 此外,还要对项目的交叉编译环境进行设置,这其中包括处理器设置、仿真器设置和调试设置等20几个大项、近100个小项。 系统的初始化程序和交叉编译环境设置是初次学习ARM程序设计最难掌握的内容之一,初次学习ARM程序设计,有哪些硬件模块需要预先设置其需要的工作状态,如何设置?初始化程序代码直接面对处理器内核和硬件控制器进行编程,故一般均用汇编语言实现,初学者对ARM的汇编语言不熟;交叉编译环境设置大约有20几个大项,近100个小项要设置,如何保证各项都设置的正确,这些都是我们需要解决的问题。 最简单的做法是我们打开一个和我们开发的项目相近的系统提供的例子项目,在例子项目中,系统的初始化程序和交叉编译环境都是设置好的,我们可先不去修改,而是先保留,我们只是把其中的主程序内容换成我们新项目内容,把我们项目所需函数加入进去,这样,我们就绕过了系统初始化程序和交叉编译环境设置的困惑,节省系统开发时间。 比如,我们要开发一个LCD显示项目,项目的初始化程序可能很难,简单作法是我们打开一个例子项目lcd.mcp,如图2-33所示,在项目窗口我们看到,初始化程序在一个文件夹组startup2410中,在其中包括3个汇编语言程序2410INIT.S、OPTION.S和2410SLIB.S,2个C语言程序2410LIB.C和TARGET.C,五个C语言头文件2410addr.h、2410lib.h、2410slib.h、和option.h,很复杂。 现在我们先不去研究这些程序,把startup2410文件夹保留,只修改Application文件夹中的MAIN.C,把我们项目所需要函数加到其中一个文件夹或新建一个文件夹加到项目中,可以很快完成嵌入式系统开发。 图2-33 lcd.mcp的项目窗口 3. 在Memory Start address文本框图上,用户可以根据要查看或修改的存储器地址输入起始地址,在下面的表格中会列出连续的64个地址。因为I/O模式控制寄存器和I/O数据控制寄存器都是32位的控制寄存器,所以从0始的连续4个地址空间存放的是I/O模式控制寄存器的值,从图中可以读出该控制寄存器的值,数据控制寄存器的内容,注意因为用的是小端模式,所以读数据时注意高地址中存放的高字节,低地址存放的是低字节。 4. 断点设置、查看 在程序调试时经常设置断点,即在程序的某处设置断点,当程序执行到断点处即可停下,这时开发人员可通过前面的方法查看寄存器、存储器或变量的值,以判定程序是否正常。设置断点的方法是将光标移到需设置断点处,使用快捷键F9在此处设置断点。 查看断点的方法是:选择System Views∣breakpoint view命令或按Alt+K键,在断点状态对话框中右击,利用快捷菜单可增加或删除断点。按F5键,程序将运行到断点,如果要进入函数内查看如何运行的,可以选择Execte∣Step Inw命令或按下F8键,进入到子函数内部进行单步程序的调试。 2.3.2 JTAG概述 JTAG是Joint Test Action Group(联合测试行动小组)的简称,由于IEEE 1149.1标准是由JTAG这个组织最初提出的,最终由IEEE批准并且标准化的。所以IEEE 1149.1这个标准一般也俗称JTAG调试标准。 JTAG标准主要用于芯片内部测试及对系统进行仿真、调试。JTAG技术是一种嵌入式调试技

文档评论(0)

金华 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档