- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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_stackheapLDR r0,=bottom_of_heapMOV pc,lr;AREA Myheap, DATA, NOINIT, ALIGN=2bottom_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 = 0data = *q;这是要读的flash 的起始地址,但是第二句编译出错,我想应该是C 编译器不许给指针直接赋值, 我用汇编解决了这个简单的问题,但是怎么用C 来解决呢A:q = (uint32 *)0第108 问:Q:问一个有关汇编的基础问题.例程: ANDS R1,R1,#0x0400BEQ 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)