ARM经典问题.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM经典问题.doc

第101 问: Q:单步调试i2cINT.C 在ISendStr 中启动总线后,程序怎么又跑到vectors.o 中,进行初 始化了呢 A:由于VIC 的限制,程序不能在0x18 停下来,否则执行非向量中断.如果没有设置,则非 向量中断为0,将从0 地址执行. 建议:有中断时不要单步执行程序,可以手动暂时关中断或设置断点代替单步. (编者注:下载必威体育精装版的驱动可以解决这个问题) 第102 问: Q:请教:如何修改 ADS 的启动代码,从__main 到main,按道理应该有一个文件,修改这 个小文件, 就可以修改 启动代码. A:__main 是ADS 运行库,最好不要修改,要是不使用库就不要用main()函数,起个别的名 字.直接跳转过去就行了. 详见:《ARM 体系结构与编程》P328. 第103 问: Q:我在JTAG 仿真时出现的对话框,提示: Warnning! interrupt vectors data is not correct! Program you downloaded can not run freely! A:参见《ARM 微控制器基础与实战》附录一第一个问题的第二部分,选择源代码的启动代 码文件夹下的vectors.s,并参照《ARM 微控制器基础与实战》图7.11 设置. 第104 问: Q:初始化代码中分配堆栈的问题 MSR CPSR_c, #0xd3 ;进入特定的处理器模式 LDR SP, StackSvc ;给当前处理器模式的堆栈指针赋值,这只是一个值而已, ;他在接下去的DCD 语句赋值 SvcStackSpace SPACE SVC_STACK_LEGTH * 4 这个语句开辟一个SVC_STACK_LEGTH * 4 大小的内存,SvcStackSpace 是这块内存的标 号,我想应该就是内存的首地址,这样应该好理解了. StackSvc DCD SvcStackSpace + (SVC_STACK_LEGTH - 1)* 4 这个语句就是把这个首地址加上堆栈大小值. A:计算出堆栈指针来,我想这个堆栈是向下生长的,所以SP 赋值的是堆栈地址最高的那个. 第105 问: Q:请问启动代码中这句是什么意思 24 __user_initial_stackheap LDR r0,=bottom_of_heap MOV pc,lr ; AREA Myheap, DATA, NOINIT, ALIGN=2 bottom_of_heap SPACE 256 ;库函数的堆空间 我的问题是: 1.这个函数在哪里被调用 2.赋值给r0 以后就完事了 r0 起什么作用 A:堆和栈的分配函数,由ADS 提供的初始化代码调用,具体参考配套《ARM 微控制器基础 与实战》的相关部分. 第106 问: Q:2104 的启动代码是否适用2124 呢 网站上下载的那个easyarm2104 工程模版里面写着arm executable imag for lpc21**, 是否说也适用2124 呢 如果不行,哪些地方需要修改 希望能够指点一下! A:您可以下载2100 的工程模板. 第107 问: Q:我在用ARM 的IAP 功能,要把已经烧到flash 中的数据写到RAM 中,我是这么写的: uint32 *q,data; q = 0 data = *q; 这是要读的flash 的起始地址,但是第二句编译出错,我想应该是C 编译器不许给指针 直接赋值, 我用汇编解决了这个简单的问题,但是怎么用C 来解决呢 A:q = (uint32 *)0 第108 问: Q:问一个有关汇编的基础问题. 例程: ANDS R1,R1,#0x0400 BEQ WAITOK 请问 ANDS 是如何影响标志位的,而BEQ 判断的是那两个操作数相等时执行 A:R10x0400 = R1,若结果为0(即R1 为0),则标志位Z=1. 当Z=1 时,BEQ WAITOK 有效执行. 第109 问: Q:请教:在ADS 中怎么给某个变量确定固定物理地址 就是类似KEIL 中的 XDATA xxx _AT_ 0x4456 的功能. A:使用分散加载机制,mem_c.scf 等就是例子. 25 第110 问: Q:哪里有介绍ARM 的C 语言编程的 A:其实大多数嵌入式系统的C 语言都差不多,可找一本写嵌入式C 语言的书即可. 第111 问: Q:请问在系统复位后首先执行的是否为Boot Block 的中断向量 然后由boot block 里面的程序决定是执行用户程序还是ISP 程序. 那么这时启动的boot block 里的中断向量表和用户程序里的中断向量表是如何在flash 里安排的 在《ARM 微控制器基础

文档评论(0)

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

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

1亿VIP精品文档

相关文档