arm经典300问(271~291)免费下载.doc 8页

  • 0
  • 0
  • 0
  • 约7.16千字
  • 2020-09-18 发布
文档工具:
    1. 1、本文档共8页,可阅读全部内容。
    2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
    3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
    4. 文档侵权举报电话:19940600175。
    PAGE / NUMPAGES 第271 问: Q:我用开发板自带的一个程序Debug 调试,然后AXD 提示: Warnning! interrupt vectors data is not correct! Program you downloaded can not run freely! 我不知道其中中断向量的地址是如何算出来的,也就是说程序中的异常向量所指向的位 置我不清楚.我买的《ARM 微控制器基础与实战》中提到这儿有一句话解释了下面的程 序:在保留的异常向量位置填数据0xb9205f80,是为了使向量表中所有的数据32 位累 加和为0.(没明白,0xb9205f80 是如何计算出来的!) Vectors LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0xb9205f80 LDR PC, [PC, #-0xff0] LDR PC, FIQ_Addr ResetAddr DCD Reset UndefinedAddr DCD Undefined SWI_Addr DCD SoftwareInterrupt PrefetchAddr DCD PrefetchAbort DataAbortAddr DCD DataAbort Nouse DCD 0 IRQ_Addr DCD 0 FIQ_Addr DCD FIQ_Handler A:从mem 窗口看这些地址是什么数(32 位方式),然后加起来. 第272 问: Q:我将光盘里的EINT1 中的: 71 config,init.s, LPC2106.h target.c target.h vectors.s eint1_led.c 加入项目中,设置的编译环境为:debug, Release DebugRel 中的R0 base 为0 Rw base 为: 0Image entry point 为0编译通过,调试,f5 出 现第一个默认断点,在全速执行,程序在while(1) ;循环,按k1 键led4 不闪烁,我 想是没有进入中断,但我不知道这是为什么,另外我将r0base 设为0是认为 0到0之间要放置remanp 后的中断向量表,不知道这样做对否. A:如果设置robase 设为0那么你要把向量表的代码复制到0然后 再REMAP 操作.另处用我们的EasyJTAG 暂时不能单步调试中断,否则会破坏VIC 的状态. 请用先设置断点,然后全速执行的方式调试.特别注意不能在0x18 处设置断点(别的仿 真器也不能在这设置断点,否则破坏VIC 的状态). 第273 问: Q:贵公司网站上提供的可固化的中断程序中,是将中断向量表先拷贝到0再 REMAP 到FLASH 的底部(我的理解).我认为既然是固化到FLASH 里,把完成上述功能的 程序去掉不是也可以吗 即下面的程序段: ; 实现REMAP 操作 REMAPS MOV R2,#0; 复制中断向量代码,设置目标地址 LDR R1,=Vectors ; 设置源地址 LDMIA R1!,{R3-R10} ; 共复制16 个字(64 字节) STMIA R2!,{R3-R10} LDMIA R1!,{R3-R10} STMIA R2!,{R3-R10} LDR R2,=MEMMAP ; REMAP 操作 MOV R1,#0x02 STR R1,[R2] A:可以去掉,只是这样做可以动态改变向量表. 第274 问: Q:在《ARM 微控制器基础与实践》中的157 页,在0X0000018 处加LDR PC,[PC,#-0XFF0] 指令,为什么就会将VICVectAddr 寄存器中保存的地址装入PC A:like this: VICVectAddr = 0xFFFFF030 00x08-0xFF0 = 0xFFFFF030 therefore PC = [FFFFF030] 72 A:为什么不能进入中断,init.s,target.c 都是贵公司的提供的启动代码!!! 向量的初始化为: Vectors LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0xB8A06F58 LDR PC, [PC,#-0

    文档评论(0)

    • 内容提供方:158****3234
    • 审核时间:2020-09-18
    • 审核编号:6211143102002242

    相似文档