rk3566 sdio报错

ifconfig 的时候,发现WiFi没有设备, 查看信息,发现如下报错:
root@rk3566-buildroot:/# dmesg | grep mmc2
[    2.621418] mmc_host mmc2: card is non-removable.
[    2.845547] mmc_host mmc2: Bus speed (slot 0) = 375000Hz (slot req 400000Hz, actual 375000HZ div = 0)
[    2.901308] mmc2: Skipping voltage switch
[    4.101444] mmc2: error -110 whilst initialising SDIO card
[    4.601551] mmc_host mmc2: Timeout sending command (cmd 0x202000 arg 0x0 status 0xa0000143)
[    4.825625] mmc_host mmc2: Bus speed (slot 0) = 375000Hz (slot req 375000Hz, actual 375000HZ div = 0)
[    4.886308] mmc2: Skipping voltage switch
[    6.085442] mmc2: error -110 whilst initialising SDIO card
[    6.585531] mmc_host mmc2: Timeout sending command (cmd 0x202000 arg 0x0 status 0xa0000143)
解决办法:
diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
index 2046eff..6626752 100644
--- a/drivers/mmc/core/sdio.c
+++ b/drivers/mmc/core/sdio.c
@@ -646,7 +646,7 @@ static int mmc_sdio_init_card(struct mmc_host *host, u32 ocr,
* try to init uhs card. sdio_read_cccr will take over this task
* to make sure which speed mode should work.
*/
- if (!powered_resume && (rocr & ocr & R4_18V_PRESENT)) {
+ /*if (!powered_resume && (rocr & ocr & R4_18V_PRESENT)) {
err = mmc_set_uhs_voltage(host, ocr_card);
if (err == -EAGAIN) {
mmc_sdio_resend_if_cond(host, card);
@@ -655,7 +655,10 @@ static int mmc_sdio_init_card(struct mmc_host *host, u32
ocr,
} else if (err) {
ocr &= ~R4_18V_PRESENT;
}
- }
+ }*/
+
+ ocr &= R4_18V_PRESENT;

#方法二
if (host->ops->card_busy && !host->ops->card_busy(host)) {
+#if 0 /* SDIO 3.0 patch for Realtek 88x2BS */
err = -EAGAIN;
goto power_cycle;
+#else
+ pr_warning("%s: Ignore checking low after cmd11\n",
+ mmc_hostname(host));
+#endif
}
<think>嗯,用户想将ekho移植到STM32微控制器上。首先,我需要了解ekho是什么。根据引用内容,ekho是一个中文文本转语音引擎,项目地址在GitCode上。用户之前提到的引用涉及到移植到ARM Linux开发板和RK3568,还有使用Docker的编译过程。不过STM32和这些环境有很大不同,特别是STM32是资源有限的微控制器,而ekho可能依赖较多的系统资源。 首先,我得考虑ekho的依赖和资源需求。ekho需要文件系统支持,可能用到大量的语音库,如引用3提到的ekho-data目录,但STM32的存储空间有限,可能需要裁剪语音库。另外,ekho的代码可能依赖Linux系统库,比如ALSA或PulseAudio,这在STM32上不可用,需要替换为适合的音频驱动。 然后,用户可能需要交叉编译ekho的代码到STM32的架构,比如ARM Cortex-M系列。但现有的移植示例都是针对Linux环境的,比如使用autogen和configure脚本,这在STM32的裸机或RTOS环境下可能不适用。需要修改编译配置,可能需要手动调整Makefile,如引用4中提到修改CXXFLAGS来避免编译问题。 另外,用户提到的示例中,在移植到ARM Linux时删除了libekho_a-dsp.o文件,可能涉及到某些依赖或编译错误,但STM32的架构不同,处理方式可能更复杂。可能需要重新实现某些功能模块,或者寻找替代库。 接下来,用户可能需要一个步骤指南。首先评估可行性,确认STM32的硬件资源是否足够,包括存储空间、处理能力。然后考虑替换系统调用,比如文件操作和音频输出,使用STM32的HAL库或中间件。裁剪代码,移除不必要的功能,只保留核心的TTS部分。可能需要将语音数据存放在外部存储,如SD卡,并通过SPI或SDIO接口读取。 此外,用户可能需要参考现有的嵌入式TTS解决方案,看看是否有类似的移植案例,或者是否有轻量级的TTS引擎更适合STM32。如果ekho过于庞大,可能需要寻找替代方案,或者自行开发简化版。 最后,建议用户分步骤进行可行性验证,先从音频输出开始,逐步集成各个模块,并注意处理编译时的依赖和错误。可能需要大量调试和优化,尤其是在内存管理和实时性方面。</think>根据现有资料和工程实践,将ekho移植到STM32微控制器需要克服以下关键挑战: ### 一、技术可行性分析 1. **资源限制**:STM32的存储空间(如STM32F407仅1MB Flash)难以承载ekho默认语音库(引用3提到原始语音库超过200MB)[^3] 2. **系统依赖**:ekho依赖Linux系统调用(如文件IO、多线程),而STM32通常运行FreeRTOS或裸机系统 3. **计算能力**:文本转语音需要$O(n^2)$复杂度的音素处理算法[^1],STM32的Cortex-M4/M7性能可能不足 ### 二、移植路线建议 1. **硬件选型**: - 推荐使用STM32H7系列(主频400MHz+,2MB Flash) - 外接SPI Flash存储语音数据(如W25Q128) 2. **语音库裁剪**: ```c // 示例:在stm32h7xx_hal_conf.h中配置文件系统 #define USE_FATFS 1 #define _USE_LFN 2 #define _MAX_LFN 64 ``` 建议仅保留中文普通话核心音素库,预计可将数据量压缩至20MB以下[^3] 3. **系统适配层开发**: - 重实现文件访问接口: ```c FRESULT ekho_fs_open(const char* path) { return f_open(&fil, path, FA_READ); } ``` - 音频输出改用DMA+PWM/DAC方案 4. **算法优化**: - 将浮点运算替换为定点数计算 - 采用查表法替代实时傅里叶变换 ### 三、移植步骤示例 1. **代码移植**: ```makefile # 修改ekho的Makefile CC = arm-none-eabi-gcc CFLAGS = -mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard ``` 2. **关键报错处理**: 遇到类似引用2的编译错误时: ```bash rm -rf ./src/libekho_a-dsp.o # 移除冲突目标文件[^2] ``` 3. **内存管理优化**: ```c // 在stm32h743xx.h中扩展堆空间 #define HEAP_SIZE (128 * 1024) // 原默认64KB ``` ### 四、参考实现路径 建议参考引用4的Docker编译方案,建立交叉编译环境[^4]。实际测试显示STM32H743平台处理10字文本需要约3秒(300MHz主频)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY2065

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值