Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
aarch64
risc-v_RISCV
设备驱动
MilkV Duo256M ARM核 HWTIMER 驱动调试记录
发布于 2024-08-20 21:53:02 浏览:106
订阅该版
[tocm] 本文记录一个在对接 cv18xx_aarch64 的 hwtimer 设备驱动时遇到的问题。 ## 问题描述 首先该 hwtimer 设备驱动是已经对接到 c906_little 和 cv18xx_risc-v 了的,并且测试正常通过。根据芯片数据手册描述,这几个核心的外设映射地址都是相同的,只是中断号各自不同需要区分。 但是在运行测试用例时,cv18xx_aarch64 报以下错误日志 ```shell exception info: esr.EC :0x25 esr.IL :0x01 esr.ISS:0x00000045 epc :0x000000008020154c Data abort fault addr = 0x00000000030a0008 abort caused by write instruction Translation fault, first level Execption: X00:0x00000000030a0000 X01:0x0000000000000001 X02:0x0000000080201634 X03:0x0000000000000065 X04:0x0000000000000065 X05:0x0000000000656369 X06:0x0000656c706d6173 X07:0x0000000000000001 X08:0x00000000000848e2 X09:0xffffff7f7f7f7f7f X10:0x0000000000000728 X11:0x0101010101010101 X12:0x000000000000000d X13:0x0000000000000000 X14:0xffffffffffffffff X15:0x0000000000000000 X16:0xffffffffffffffff X17:0x0000000000000000 X18:0x000000008d5ffdf0 X19:0x0000000080252694 X20:0x00000000802604b0 X21:0x0000000000000000 X22:0x0000000000000016 X23:0x0000000000000017 X24:0x0000000000000018 X25:0x0000000000000019 X26:0x000000000000001a X27:0x000000000000001b X28:0x000000000000001c X29:0x0000000080300cf0 X30:0x000000008020168c SP_EL0:0x0000000000000000 SPSR :0x0000000020000005 EPC :0x000000008020154c ``` 粗略判断为是写入异常导致的错误,通过反汇编快速定位异常代码: ```shell sudo apt-get install gcc-aarch64-linux-gnu aarch64-linux-gnu-objdump -l -S rtthread.elf > out.c ``` 去到 `0x000000008020154c`: ``` hal_timer_reset_register(): /home/csc/Project/rt-thread/bsp/cvitek/drivers/drv_timer.c:289 void hal_timer_reset_register(dw_timer_regs_t *timer_base) { 80201540: d10043ff sub sp, sp, #0x10 80201544: f90007e0 str x0, [sp, #8] /home/csc/Project/rt-thread/bsp/cvitek/drivers/drv_timer.c:290 timer_base->TCR = 0U; 80201548: f94007e0 ldr x0, [sp, #8] 8020154c: b900081f str wzr, [x0, #8] /home/csc/Project/rt-thread/bsp/cvitek/drivers/drv_timer.c:291 timer_base->TLC = 0U; 80201550: f94007e0 ldr x0, [sp, #8] 80201554: b900001f str wzr, [x0] /home/csc/Project/rt-thread/bsp/cvitek/drivers/drv_timer.c:292 } ``` `hal_timer_reset_register` 实在外设操作的第一步初始化就出现了写入异常,核对芯片数据手册外设地址是没有问题。 于是去查看其他同时支持了 cv18xx_aarch64 和 cv18xx_risc-v 并可以正常运行的外设驱动有没有进行特殊处理。 在 uart 驱动中发现针对 ARCH_ARM 对外设的基地址进行了重映射 ```c pinmux_config(BSP_UART0_RX_PINNAME, UART0_RX, pinname_whitelist_uart0_rx); pinmux_config(BSP_UART0_TX_PINNAME, UART0_TX, pinname_whitelist_uart0_tx); BSP_INSTALL_UART_DEVICE(0); #if defined(ARCH_ARM) uart->hw_base = (rt_size_t)rt_ioremap((void*)uart->hw_base, 0x10000); #endif /* defined(ARCH_ARM) */ ``` 于是在 hwtimer 也针对 ARCH_ARM 添加 `rt_ioremap` ```c #if defined(ARCH_ARM) _timer_obj[i].base = (dw_timer_regs_t *)rt_ioremap((void*)_timer_obj[i].base, 0x10000); #endif /* defined(ARCH_ARM) */ ``` 重新编译并运行测试用例,顺利通过。 ## 存在的困惑 目前还不清楚为什么针对 ARCH_ARM 需要对外设的基地址进行重映射,如果有了解的大佬,欢迎留言。
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
螺丝松掉的人
这家伙很懒,什么也没写!
文章
42
回答
0
被采纳
0
关注TA
发私信
相关文章
1
aarch64有计划支持SMP吗
2
【sem bug】在aarch64平台,压测过程中发现sem死机概率高?
3
【aarch64】sem压测卡死(无反应)
4
rt-smart 支持64位的编译嘛?
5
RTthread的动态模块支持aarch64位的吗?
6
rtthread对aarch64的支持问题
7
用户态程序xmake配置平台aarch64时提示make not find
8
qemu-virt64-aarch64能不能支持gic-version3
9
让成员函数能作为rt_device中的回调函数
10
关于设备配置时延时的处理
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
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总线
ART-Pi
FinSH
USB
文件系统
DMA
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
ota在线升级
WIZnet_W5500
UART
flash
packages_软件包
cubemx
PWM
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
中断
flashDB
socket
Debug
GD32
编译报错
msh
keil_MDK
rt_mq_消息队列_msg_queue
C++_cpp
at_device
MicroPython
ulog
本月问答贡献
rv666
7
个答案
2
次被采纳
踩姑娘的小蘑菇
5
个答案
2
次被采纳
张世争
8
个答案
1
次被采纳
用户名由3_15位
7
个答案
1
次被采纳
zchong
6
个答案
1
次被采纳
本月文章贡献
Licy
3
篇文章
1
次点赞
rtt_dmx
1
篇文章
5
次点赞
jaffer
1
篇文章
5
次点赞
flytianya2010
1
篇文章
2
次点赞
BRICK PORTER
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部