Openwrt增加对 sd card 支持

本文介绍如何在OpenWRT系统中增加对SDCard的支持,包括修改dts文件、添加驱动程序支持、语言格式支持及vfat文件系统支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、硬件平台

1.1 控制器:MT7620(A9内核)

二、软件平台

2.1、开发环境:Ubuntu12.04 
2.2、软件版本:openwrt 官方15.05版本SDK开发包(CHAOS CALMER 15.05版本)

三、功能说明

本文章所选择的目标芯片为MT7620,profile 选择的为“Xiaomi MiWiFi Mini ”。
对于openwrt增加对于sd card的支持,需要配置四个方面:
1、dts文件增加对sdhci的支持,开启硬件对sd card接口驱动支持,硬件初始化。
2、增加对sd card的驱动程序支持,用于检测sd card插拔和驱动。
3、增加对语言格式的支持,如utf8、cp437、iso8859-1,用于识别sd card里面的内容,避免乱码。
4、增加对vfat文件系统的支持,否则无法挂载sd card。

四、操作步骤

4.1 修改dts文件

对于默认的小米开发板的dts文件,没有对sd接口的硬件初始化,故需要修改“openwrt/target/linux/ramips/dts/XIAOMI-MIWIFI-MINI.dts”文件。
在文件中,增加如下代码:

        sdhci@10130000 {
                compatible = "ralink,mt7620-sdhci";
                reg = <0x10130000 4000>;

                interrupt-parent = <&intc>;
                interrupts = <14>;

                status = "okay";
        };

4.2 增加sd card 驱动支持

在openwrt sdk包中,执行命令 make menuconfig命令。
Kernel modules —> Other modules —>
-*- kmod-sdhci…………..
<*> kmod-sdhci-mt7620
配置如图4-1所示。
图4-1 增加sd card 接口驱动
图4-1 增加sd card 接口驱动

注意事项:在make menuconfig中配置了sd card 驱动,请勿再 make kernel_menuconfig中配置sd card驱动,否则在开机的时候,出现提示信息:

mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)
sdhci-pltfm: SDHCI platform and OF driver helper
mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)
mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)
mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)
mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)
mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)

如提示信息所示,sd 卡mmc_core重复导出,所以最终导致无法sd 卡驱动成功!!!!

4.3 增加语言模块支持

对于openwrt系统,仅仅开启sd card接口驱动是不够的,还需要增加语言的支持,否则sd card无法识别里面的文件内容,或者出现乱码显现。
在openwrt sdk包中,执行命令 make menuconfig命令。
Kernel modules —> Native Language Support —>,
<*> kmod-nls-cp437
<*> kmod-nls-iso8859-1
<*> kmod-nls-utf8
设置如图4-2所示。
图4-2 增加语言支持
图4-2 增加语言支持

对于语言,说明如下:
nls codepage 437 – 美国/加拿大英语
nls codepage 737 – 希腊语
nls codepage 775 – 波罗的海语
nls codepage 850 – 包括西欧语种(德语,西班牙语,意大利语)中的一些字符
nls codepage 852 – Latin 2 包括中东欧语种(阿尔巴尼亚语,克罗地亚语,捷克语,英语,芬兰语,匈牙利语,爱尔兰语,德语,波兰语,罗马利亚语,塞尔维亚语,斯洛伐克语,斯洛文尼亚语,Sorbian语)
nls codepage 855 – 斯拉夫语
nls codepage 857 – 土耳其语
nls codepage 860 – 葡萄牙语
nls codepage 861 – 冰岛语
nls codepage 862 – 希伯来语
nls codepage 863 – 加拿大语
nls codepage 864 – 阿拉伯语
nls codepage 865 – 日尔曼语系
nls codepage 866 – 斯拉夫语/俄语
nls codepage 869 – 希腊语(2)
nls codepage 874 – 泰语
nls codepage 936 – 简体中文GBK
nls codepage 950 – 繁体中文Big5
nls iso8859-1 – 西欧语系(阿尔巴尼亚语,西班牙加泰罗尼亚语,丹麦语,荷兰语,英语,Faeroese语,芬兰语,法语,德语,加里西亚语,爱尔兰语,冰岛语,意大利语,挪威语,葡萄牙语,瑞士语.)这同时适用于美国英语.
nls iso8859-2 – Latin 2 字符集,斯拉夫/中欧语系(捷克语,德语,匈牙利语,波兰语,罗马尼亚语,克罗地亚语,斯洛伐克语,斯洛文尼亚语)
nls iso8859-3 – Latin 3 字符集, (世界语,加里西亚语,马耳他语,土耳其语)
nls iso8859-4 – Latin 4 字符集, (爱莎尼亚语,拉脱维亚语,立陶宛语),是Latin 6 字符集的前序标准
nls iso8859-5 – 斯拉夫语系(保加利亚语,Byelorussian语,马其顿语,俄语,塞尔维亚语,乌克兰语) 一般推荐使用 KOI8-R codepage
nls iso8859-6 – 阿拉伯语.
nls iso8859-7 – 现代希腊语
nls iso8859-8 – 希伯来语
nls iso8859-9 – Latin 5 字符集, (去掉了 Latin 1中不经常使用的一些冰岛语字符而代以土耳其语字符)
nls iso8859-10 – Latin 6 字符集, (因纽特(格陵兰)语,萨摩斯岛语等Latin 4 中没有包括的北欧语种)
nls iso8859-15 – Latin 9 字符集, 是Latin 1字符集的更新版本,去掉一些不常用的字符,增加了对爱莎尼亚语的支持,修正了法语和芬兰语部份,增加了欧元字符)
nls koi8-r – 俄语的缺省支持

4.4 增加 vfat文件系统的支持

对于增加vfat文件系统的支持,有两个方法,选择其中一种即可。

4.4.1、menuconfig 增加支持

执行 make menuconfig
Filesystems —>
配置如图4-3所示。
图4-3 增加vfat文件系统的支持
图4-3 增加vfat文件系统的支持

4.4.2 kernel_menuconfig增加支持

执行make kernel_menuconfig
File systems —> DOS/FAT/NT Filesystems —>
图4-4 增加vfat支持
图4-4 增加vfat文件系统的支持

如此,openwrt配置完成。

五、测试

烧录程序之后,关于SD卡的开机信息如下:

[    9.050000] MTK MSDC device init.
[    9.090000] mtk-sd: MediaTek MT6575 MSDC Driver
[    9.090000] sdhci: Secure Digital Host Controller Interface driver
[    9.100000] sdhci: Copyright(c) Pierre Ossman
[    9.110000] sdhci-pltfm: SDHCI platform and OF driver helper
[    9.140000] mmc0: new high speed SD card at address b368
[    9.150000] mmcblk0: mmc0:b368 00000 1.86 GiB (ro)
[    9.160000]  mmcblk0:

将sd卡进行挂载

root@OpenWrt:/# mount -t vfat /dev/mmcblk0 /mnt/

查看sd卡的内容,如图5-1所示。
图5-1 sd卡内容
图5-1 sd卡内容

### 如何在OpenWRT中添加新的Target平台 #### 添加新目标平台的流程 对于特定硬件的支持,如MT7628AN芯片组下的LinkIt7688设备,在源码中的`target/linux/rampis/dts`目录下定义了对应的Device Tree Source文件(mt7628an.dtsi)[^1]。为了支持一个新的目标平台,通常需要创建或调整DTS(Device Tree Source)文件来描述硬件特性。 当向OpenWrt项目引入全新的目标平台时,除了准备必要的DTS文件外,还需要编辑Makefile以及Kconfig文件以注册该平台并提供编译选项给用户选择。具体来说: - **修改内核配置**:通过编辑位于`target/linux/<platform>/config-default`路径下的默认内核配置文件,可以指定适用于此平台的一系列预设值[^3]。 - **更新顶层Makefile**:确保项目的根目录下的Makefile能够识别新增加的目标架构,并允许其参与构建过程。 - **扩展Kconfig菜单**:为了让开发者能够在图形化界面中轻松找到并启用这个新加入的目标板型,应该适当扩充`menuconfig`工具内的条目,这涉及到对多个地方的`.config`文件进行相应的更改[^2]。 #### 实际操作指南 假设要为一款基于ARM Cortex-A9处理器的新开发板增加支持,则可以在`target/linux/generic/pending-4.14/patches`目录里放置针对Linux Kernel 4.x版本所做的补丁集;同时,在`target/linux/armvirt/Makefile`中声明新的机器类型编号与名称关联关系。 另外,还需编写一个名为`<new_board>.dts`的文件放入`target/linux/sunxi/dts`子目录之中,用来详尽说明SoC内部资源布局情况及其连接方式。完成上述准备工作之后,记得同步修正`meta-data.json`文档以便于官方仓库审核人员审查提交的内容是否合规。 ```bash # 假定当前处于openwrt源代码树结构顶部 cd target/linux/ mkdir -p sunxi/dts && cd $_ nano <new_board>.dts # 编辑器打开用于定义新板载外围接口信息的数据表单 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值