Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
cortex-A
Armv7-A 系列芯片异常调试方法
发布于 2021-01-29 11:20:29 浏览:2170
订阅该版
[tocm] # Armv7-A 系列芯片异常调试方法 本周解决了两个在 Armv7-A 系列芯片上出现的错误,包括一个由于软浮点配置导致的未定义指令错误以及一个由于数据未对齐导致的 data abort 错误,通过解决这两个问题,学会了如何在 A 系列芯片上根据错误调用栈来 debug,进而找出错误原因并修正。 ## Undefined instruction 首先是一个 undefined instruction 错误,通过系统的 pc 指针减去 4 的位置(因为是 ARM 模式所以要 -4)找到出错位置的反汇编指令,发现是一个硬浮点指令,进而发现系统中没有开启芯片系统中的硬浮点处理功能。本来想开启该功能,后来发现在线程切换等地方没有对先关的硬件浮点寄存器压栈,因此这条路暂时走不通,因此在编译的时候重新指定使用软浮点来进行计算,就解决了这个 undefined instruction 的错误。出现这个问题的原因是系统的 cp15 协处理器的硬浮点计算功能没有开启,此时系统不支持该硬浮点运算指令,当系统看到该指令时,就会出现错误。 ## Data abort 另外一个问题发生在当想把新开发版上开发的程序运行在 microzed 开发板上的时候,运行一会儿就会出现 data abort。 解决这个问题是通过查询 arm-v7 说明手册(1477 页)将 DFAR(数据错误地址寄存器)和 DFSR(数据错误状态寄存器)中的值通过汇编指令在异常出现时打印出来,指令如下: ```asm asm volatile ("mrc p15, 0, %0, c6, c0, 0\n" : "=r" (data_addr)); Read DFAR into data_addr ``` 发现错误地址是一个非四字节对齐的地址,猜想错误是由于非对齐取数据造成的。通过观察 DFSR 中的值,指令如下: ```asm asm volatile ("MRC p15, 0, %0, c5, c0, 0\n" : "=r" (data_stat)); Read DFSR into data_stat ``` 得出错误的原因是确实是数据未对齐(验证了先前的猜想)。 ![1593397701371.png](https://oss-club.rt-thread.org/uploads/20210129/61100ac441052263fbf36952d1ba5a7f.png)
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
我夏了夏天
Life isn't about finding yourself, life is about creating yourself.
文章
24
回答
1319
被采纳
20
关注TA
发私信
相关文章
1
Cortex-A+M共通的版本
2
rk3308 armv8a多核有没有推荐的参考移植模版
3
请问有没有支持arm A7的移植案例。
4
将rt-thread移植到sama5d2上从现有的哪个板子入手比较接近?
5
[rt-smart] 对于armv7a 在mmu映射改变后的操作讨论
6
undefined instruction 错误
7
Zynq7000的Rt-thread移植
8
请问rtthread移植cortex-a7多核的参考案例有吗?
9
GIC 默认使用group0,需要处理器进入secure状态才可以访问么?
10
Cortex-A7, 如果使用结构体直接赋值,或者memcpy,CPU就崩溃
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
7
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部