Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
bug反馈
RISC-V_milk-v_CV1800B
risc-v_RISCV
MilkV DOUS SD RT-Thread 适配调试记录
发布于 2024-08-24 23:04:24 浏览:205
订阅该版
[tocm] 本文记录适配 MilkV Duos SD 的 RT-Thread BSP 是遇到的问题和调试思路。 ## 问题描述 适配该 BSP 时,首先根据 `rt-thread/bsp/cvitek` 中其他的开发板的格式,在 `rt-thread/bsp/cvitek/cv18xx_risc-v/dtb` 中添加对应的 `.dtb` 和 `multi.its` 文件(均来自于 duo-buildroot-sdk 编译结果),然后在 `drv_pinmux` 和 `drv_uart` 文件中根据芯片手册添加对应的引脚信息,这样才能正常的输出运行日志。`Kconfig` `Scons` 和 `board_env.sh` 等编译脚本文件也需要添加相关的内容。 但是在确认以上文件都进行了正确的修改以后,编译烧录测试发现卡死在启动阶段: ```shell DRAM: 510 MiB gd->relocaddr=0x951c8000. offset=0x14fc8000 set_rtc_register_for_power MMC: cv-sd@4310000: 0, wifi-sd@4320000: 1 Loading Environment from nowhere... OK In: serial Out: serial Err: serial Net: Warning: ethernet@4070000 (eth0) using random MAC address - de:ec:2c:5b:77:bf eth0: ethernet@4070000 Hit any key to stop autoboot: 1 ``` 输入无响应。 反复仔细对比其他开发板确认以上改动文件和引脚配置没有问题,但始终是卡死不能正常启动。 初步判断是 fip.bin 异常导致的该问题,于是一步步分析 fip.bin 文件的生成过程,发现 `bsp/cvitek/c906_little/board/script/cv181x/cvi_board_memmap.ld` 文件中内容与 duo-`buildroot-sdk/build/output/cv1813h_milkv_duos_sd/cvi_board_memmap.ld` 的不一致,而是 duo256m 对应的,于是对该文件进行替换,重新编译烧录,终于可以正常运行了,板载LED也正常闪烁: ```shell \ | / - RT - Thread Operating System / | \ 5.2.0 build Aug 24 2024 22:23:16 2006 - 2024 Copyright by RT-Thread team lwIP-2.1.2 initialized! [I/sal.skt] Socket Abstraction Layer initialize success. Hello RISC-V! msh /> ``` ## 总结分析 启动阶段卡死的问题是由于 `cvi_board_memmap.ld` 文件需要对 Duo256m 和 DuoS 做出区分,否则就会导致 DRAM 等异常。 在 `bsp/cvitek/combine-fip.sh` 中存在以下代码: ```shell if [ ! -d opensbi/build/platform/generic ] || [ ! -d fsbl/build/${MV_BOARD_LINK} ] || [ ! -d u-boot-2021.10/build/${MV_BOARD_LINK} ]; then do_build CHIP_ARCH_L=$(echo $CHIP_ARCH | tr '[:upper:]' '[:lower:]') cp -rf build/output/${MV_BOARD_LINK}/cvi_board_memmap.ld ${ROOT_PATH}/c906_little/board/script/${CHIP_ARCH_L} else echo "Build already done, skip build" do_combine if [ $? -ne 0 ]; then do_build fi fi ``` 正常来说,这段代码应该会拷贝对应开发板的 `cvi_board_memmap.ld` 文件到 `c906_little/board/script` 目录下,但发现这段代码只有在第一次构建时会被调用,因此之后更换开发板进行编译就会出现问题。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
螺丝松掉的人
这家伙很懒,什么也没写!
文章
42
回答
0
被采纳
0
关注TA
发私信
相关文章
1
studio能否支持risc-v的工程,包括调试。
2
移植rt-nano至risc-v时,无法在main函数创建用户线程
3
risc-v移植rtthread,程序莫名跳转到异常Exception
4
GD32VF103出现to free a bad data block:错误
5
rtt os riscv Store address misaligned异常
6
仅实现机器模式的芯片是否可以移植RT-THREAD系统
7
nano版本移植finsh(基于risc-v)
8
C++在多核下cout打印引起崩溃
9
RT-SMART求助
10
RT-Thread在RISC-V架构的芯片上有成熟的市场项目吗?
推荐文章
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
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部