NES(FC) FPGA游戏卡开发笔记(15)---- 更新AT32F407VGT7开发板BSP包和调试SDIO

1. BSP包代码替换

因rt-thread mch下操作SDIO的一些命令需要用到RTC功能,用于创建文件时间的设置。所以使能项目硬件配置的RTC模块。在使用RT-Thread Studio自带的AT32F407VGT7开发板BSP包进行编译的时候有编译错误。硬件驱动drv_rtc.c有两个宏没有定义,另外函数名称和组件驱动rtc.c相重。自带的BSP包可能太久没更新了,所以考虑把BSP包更新为https://gitee.com/rtthread/rt-thread 官网上的BSP代码。

没有采用RT-Thread Studio创建BSP的方式,而是自己替换Studio下的BSP包文件。

RT-Thread Studio下AT32F407VGT7开发板BSP代码存放在安装目录

RT-ThreadStudio\repo\Extract\Board_Support_Packages\RealThread\AT32F407-AT-START\1.0.0\project_0下。

1)删除applications, board, Libraries三个目录下的所有文件,保留原文件夹不变。

从gitee下载rt-thread代码,在bsp/at32目录如下:

2)把bsp/at32/libraries目录下的rt_drivers文件夹和AT32F403A_407_Firmware_Library文件夹拷贝到AT32F407-AT-START\1.0.0\project_0\libraries文件夹下。拷贝完之后,把AT32F403A_407_Firmware_Library文件夹名修改为AT32_Std_Driver(就是之前的文件夹名)。

3)把bsp\at32\at32f407-start下的applications和board文件夹拷贝到AT32F407-AT-START\1.0.0\project_0\目录下。

4)修改AT32F407-AT-START\1.0.0\project_0\board\Sconsript文件。

把文件中AT32F403A_407_Firmware_Library替换为AT32_Std_Driver(如下内容)。

5)完成之后,在Stduio创建项目(基于开发板)时使用的代码就是新的代码了。

AT32F407-AT-START\1.0.0\project_0\rt-thread下的代码没有替换(应该也可以替换了),比较了下rt-thread\components\drivers\sdio和dfs目录下和最新代码的差异,改动不多,也就没有替换了。

2. 调试SDIO模块

1)启动信息,可以发现SDIO卡了。

2)加载失败

读写0x85扇区失败。

我采用杜邦线连接开发板上的排线和SDIO模块插针接口。线长大概15cm。检查线没有插错。是线太长了。SDIO代码中,默认时钟频率是1MHz。在drv_sdio.c文件sdio_host_create()函数中设置。

所以先往下调,还是有问题,后来设置为10MHz,可以mount,但不能写文件。

最后试了试25MHz,一切正常。

可以使能组件SDIO的调试和内核的调试,可以打印更多信息。

3) 正常使用的打印信息

 \ | /
- RT -     Thread Operating System
 / | \     5.0.2 build Apr 27 2024 22:42:48
 2006 - 2022 Copyright by RT-Thread team
do components initialization.
initialize rti_board_end:0 done
initialize rt_mmcsd_core_init:0 done
initialize dfs_init:0 done
initialize rt_hw_rtc_init:0 done
initialize rt_hw_sdio_init[D/drv.sdio] enable sdio irq
:0 done
initialize elm_init:0 done
initialize finsh_system_init:0 done
msh />[D/drv.sdio] clk:0 width:1 power:UP
[D/drv.sdio] clk:25000000 width:1 power:ON
[D/drv.sdio] clk:25000000 width:1 power:ON
[D/drv.sdio] CMD:0 ARG:0x00000000 RES:NONE rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000080 [00000000 00000000 00000000 00000000]
[D/drv.sdio] clk:25000000 width:1 power:ON
[D/drv.sdio] CMD:8 ARG:0x000001aa RES:R7 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000040 [000001AA 48000001 AA010800 0001AA12]
[D/drv.sdio] CMD:5 ARG:0x00000000 RES:R4 rw:- len:0 blksize:0
[D/drv.sdio] err:0x00000004, CTIMEOUT  cmd:5 arg:0x00000000 rw:- len:0 blksize:0
[D/drv.sdio] CMD:55 ARG:0x00000000 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000040 [00400120 77000000 00013700 4001204E]
[D/drv.sdio] CMD:41 ARG:0x00000000 RES:R3 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000001 [00FF8000 69000000 00013F00 FF8000FE]
[D/drv.sdio] clk:25000000 width:1 power:ON
[D/drv.sdio] clk:25000000 width:1 power:ON
[D/drv.sdio] CMD:0 ARG:0x00000000 RES:NONE rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000080 [00FF8000 69000000 00013F00 FF8000FE]
[D/drv.sdio] clk:25000000 width:1 power:ON
[D/drv.sdio] CMD:8 ARG:0x000001aa RES:R7 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000040 [000001AA 48000001 AA010800 0001AA12]
[D/drv.sdio] CMD:55 ARG:0x00000000 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000040 [00000120 77000000 00013700 00012082]
[D/drv.sdio] CMD:41 ARG:0x40018000 RES:R3 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000001 [00FF8000 69400180 00013F00 FF8000FE]
[D/drv.sdio] CMD:55 ARG:0x00000000 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000040 [00000120 77000000 00013700 00012082]
[D/drv.sdio] CMD:41 ARG:0x40018000 RES:R3 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000001 [80FF8000 69400180 00013F80 FF8000FE]
[D/drv.sdio] CMD:2 ARG:0x00000000 RES:R2 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000040 [00000000 00000000 000000CB 6300715A]
[D/drv.sdio] CMD:3 ARG:0x00000000 RES:R6 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000040 [00010500 43000000 00010300 010500A4]
[D/drv.sdio] clk:25000000 width:1 power:ON
[D/drv.sdio] CMD:9 ARG:0x00010000 RES:R2 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000040 [007F0032 5B5A83B0 F6DBCF80 968000C4]
[I/SDIO] SD card capacity 1935360 KB.
[D/drv.sdio] CMD:7 ARG:0x00010000 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000040 [00000700 47000100 00010700 00070074]
[D/drv.sdio] CMD:55 ARG:0x00010000 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000040 [00000920 77000100 00013700 00092032]
[D/drv.sdio] CMD:51 ARG:0x00000000 RES:R1 rw:r len:8 blksize:8
[D/drv.sdio] sta:0x00000500 [00000920 73000000 00013300 00092090]
[D/drv.sdio] CMD:6 ARG:0x00fffff1 RES:R1 rw:r len:64 blksize:64
[D/drv.sdio] sta:0x00000500 [00000900 4600FFFF F1010600 000900DC]
[D/drv.sdio] CMD:6 ARG:0x80fffff1 RES:R1 rw:r len:64 blksize:64
[D/drv.sdio] sta:0x00000500 [00000900 4680FFFF F1010600 000900DC]
[D/drv.sdio] clk:48000000 width:1 power:ON
[D/drv.sdio] CMD:55 ARG:0x00010000 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000440 [00000920 77000100 00013700 00092032]
[D/drv.sdio] CMD:6 ARG:0x00000002 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000440 [00000920 46000000 02010600 000920B8]
[D/drv.sdio] clk:48000000 width:4 power:ON
[D/SDIO] probe mmcsd block device!
[D/drv.sdio] CMD:16 ARG:0x00000200 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000440 [00000900 50000002 00011000 0009000A]
[D/drv.sdio] CMD:17 ARG:0x00000000 RES:R1 rw:r len:512 blksize:512
[D/drv.sdio] sta:0x00000500 [00000900 51000000 00011100 00090066]
[D/drv.sdio] CMD:16 ARG:0x00000200 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000440 [00000900 50000002 00011000 0009000A]
[D/drv.sdio] CMD:17 ARG:0x00000000 RES:R1 rw:r len:512 blksize:512
[D/drv.sdio] sta:0x00000500 [00000900 51000000 00011100 00090066]
found part[0], begin: 68096, size: 1.865GB

msh />date
[I/drv.rtc] RTC hasn't been configured, please use <date> command to config.
local time: Thu Jan  1 08:00:01 1970
timestamps: 1
timezone: UTC+08:00:00
msh />mount sd0 / elm
mount device sd0(elm) onto / ... [D/drv.sdio] CMD:17 ARG:0x00010a00 RES:R1 rw:r len:512 blksize:512
[D/drv.sdio] sta:0x00000500 [00000900 5100010A 00011100 00090066]
succeed!
msh />ls
Directory /:
[D/drv.sdio] CMD:17 ARG:0x0002e600 RES:R1 rw:r len:512 blksize:512
[D/drv.sdio] sta:0x00000500 [00000900 510002E6 00011100 00090066]
sdio.txt            0                        
msh />cat sdio.txt

msh />echo hello hello.txt
[D/drv.sdio] CMD:24 ARG:0x0002e600 RES:R1 rw:w len:512 blksize:512
[D/drv.sdio] sta:0x00000500 [00000900 580002E6 00011800 0009005C]
[D/drv.sdio] CMD:13 ARG:0x00010000 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000440 [00000900 4D000100 00010D00 0009003E]
[D/drv.sdio] CMD:17 ARG:0x00010c00 RES:R1 rw:r len:512 blksize:512
[D/drv.sdio] sta:0x00000500 [00000900 5100010C 00011100 00090066]
[D/drv.sdio] CMD:24 ARG:0x00032600 RES:R1 rw:w len:512 blksize:512
[D/drv.sdio] sta:0x00000500 [00000900 58000326 00011800 0009005C]
[D/drv.sdio] CMD:13 ARG:0x00010000 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000440 [00000900 4D000100 00010D00 0009003E]
[D/drv.sdio] CMD:24 ARG:0x00010c00 RES:R1 rw:w len:512 blksize:512
[D/drv.sdio] sta:0x00000500 [00000900 5800010C 00011800 0009005C]
[D/drv.sdio] CMD:13 ARG:0x00010000 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000440 [00000900 4D000100 00010D00 0009003E]
[D/drv.sdio] CMD:17 ARG:0x0002e600 RES:R1 rw:r len:512 blksize:512
[D/drv.sdio] sta:0x00000500 [00000900 510002E6 00011100 00090066]
[D/drv.sdio] CMD:24 ARG:0x0002e600 RES:R1 rw:w len:512 blksize:512
[D/drv.sdio] sta:0x00000500 [00000900 580002E6 00011800 0009005C]
msh />cat hello.txt
[D/drv.sdio] CMD:13 ARG:0x00010000 RES:R1 rw:- len:0 blksize:0
[D/drv.sdio] sta:0x00000440 [00000900 4D000100 00010D00 0009003E]
[D/drv.sdio] CMD:17 ARG:0x00032600 RES:R1 rw:r len:512 blksize:512
[D/drv.sdio] sta:0x00000500 [00000900 51000326 00011100 00090066]
hello
msh />

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值