首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TI AM3517 Cortex-A8上浮点设置/错误

TI AM3517 Cortex-A8上浮点设置/错误
EN

Stack Overflow用户
提问于 2015-08-25 16:24:26
回答 1查看 165关注 0票数 1

在执行时,我得到了一个未定义的指令异常:

代码语言:javascript
复制
   0xED2D8B0E         VPUSH    {D8-D14}

(注意:语句是编译器作为C语言函数输入协议的一部分生成的。)

初始化代码:

代码语言:javascript
复制
;; Initialize VFP (if needed).
;; BL      __iar_init_vfp  HJ REMOVED AND REPLACED WITH BELOW
 MRC    p15, #0, r1, c1, c0, #2         ; r1 = Access Control Register
 ORR    r1, r1, #(0xf << 20)            ; enable full access for p10,11
 MCR    p15, #0, r1, c1, c0, #2         ; Access Control Register = r1
 MOV    r1, #0
 MCR    p15, #0, r1, c7, c5, #4         ; flush prefetch buffer because of FMXR below
                                        ; and CP 10 & 11 were only just enabled
                                        ; Enable VFP itself
 MOV    r0,#0x40000000
 FMXR   FPEXC, r0                       ; FPEXC = r0

当目标FPU被设置为VFPv3或VFPV3 + NEON时,我会得到未定义的异常。

初始化代码放在"cstartup.c“文件中,位于__iar_program_start?cstartup代码中,下面是代码片段:

代码语言:javascript
复制
MRC         p15,0,R1,C1,C0,0
LDR         R0,=CP_DIS_MASK      ;; 0xFFFFEFFA
AND         R1,R1,R0
ORR         R1,R1,#(1<<12)
MCR         p15,0,R1,C1,C0,0

登记册(在VPUSH之前):

代码语言:javascript
复制
CPSR:  0x80000113  
APSR:  0x80000000  
SPSR:  0x000001D3

工具:

  • IAR嵌入式工作台IDE &Compiler-7.40
  • 喷射调试探针
  • 变焦AM3517标准板
  • TI AM35X Cortex-A8处理器

问题:

  1. 在上面的初始化代码中,霓虹灯需要哪些语句,VFP需要哪些语句?
  2. 对于霓虹灯和VFP初始化,我是否缺少任何初始化指令?
  3. 是否需要将语句放在调试探针的宏文件中?
EN

回答 1

Stack Overflow用户

发布于 2015-08-31 20:05:23

问题中的代码正确地初始化了Cortex-A8处理器上的浮点处理器。

获取未定义的指令异常(导致此问题)的问题是由于O.S.将无效值写入FPEXC寄存器,导致浮点处理器被禁用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32209203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档