Itop4412开发板emmc驱动移植(设备树)
来源:互联网 发布:js 上传文件 前台实现 编辑:程序博客网 时间:2024/06/05 14:33
硬件设备:itop4412开发板 内核版本linux-3.8.1
设备树方式减少了设备的冗余编码,同时使移植变得更加高效。eMMC作为开发板的基础,十分重要。
设备树用的是内核自带的smdk4412.dts
vim arch/arm/boot/dts/exynos4412-smdk4412.dts
在设备树中添加如下代码:
87 ldo22_reg: LDO22 { 88 regulator-name = "VMEM_VDD_2.8V"; 89 regulator-min-microvolt = <2800000>; 90 regulator-max-microvolt = <2800000>; 91 maxim,ena-gpios = <&gpk0 2 1>; 92 };
146 mmc@12550000 {147 compatible = "samsung,exynos4412-dw-mshc";148 reg = <0x12550000 0x1000>;149 interrupts = <0 77 0>;150 #address-cells = <1>;151 #size-cells = <0>;152 fifo-depth = <0x80>;153 clocks = <&clock 301>, <&clock 149>;154 clock-names = "biu", "ciu";155 num-slots = <1>;156 broken-cd;157 non-removable;158 card-detect-delay = <200>;159 vmmc-supply = <&ldo22_reg>;160 clock-frequency = <400000000>;161 samsung,dw-mshc-ciu-div = <0>;162 samsung,dw-mshc-sdr-timing = <2 3>;163 samsung,dw-mshc-ddr-timing = <1 2>;164 pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;165 pinctrl-names = "default";166 status = "okay";167 bus-width = <8>;168 cap-mmc-highspeed;169 };
在驱动中增加设备属性匹配:
vim drivers/mmc/host/dw_mmc-exynos.c
221 static const struct of_device_id dw_mci_exynos_match[] = {222 { .compatible = "samsung,exynos4412-dw-mshc",},223 { .compatible = "samsung,exynos5250-dw-mshc",224 .data = &exynos5250_drv_data, },225 {},226 };
make menuconfig 配置emmc内核驱动
编译烧写进开发板后启动会出现错误:
mmc1: unrecognised EXT_CSD revision 7
解决方法:将296行的6改为7
vim drivers/mmc/core/mmc.c
295 /* amended by cqx:6->7 */ 296 if (card->ext_csd.rev > 7) { 297 pr_err("%s: unrecognised EXT_CSD revision %d\n", 298 mmc_hostname(card->host), card->ext_csd.rev); 299 err = -EINVAL; 300 goto out; 301 }
重新编译后烧写入开发板,启动打印如下信息说明emmc驱动移植成功。
mmcblk0: mmc1:0001 4YMD3R 3.64 GiB
mmcblk0boot0: mmc1:0001 4YMD3R partition 1 4.00 MiB
mmcblk0boot1: mmc1:0001 4YMD3R partition 2 4.00 MiB
mmcblk0: p1 p2 p3 p4
mmcblk0boot1: unknown partition table
mmcblk0boot0: unknown partition table
mmc0: mmc_rescan_try_freq: trying to init card at 1562500 Hz
mmc0: new high speed SD card at address 0260
使用fdisk -l命令查看详细信息
Disk /dev/mmcblk0: 3909 MB, 3909091328 bytes
226 heads, 33 sectors/track, 1023 cylinders
Units = cylinders of 7458 * 512 = 3818496 bytes
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 653 1020 1372272 c Win95 FAT32 (LBA)
/dev/mmcblk0p2 6 287 1051578 83 Linux
/dev/mmcblk0p3 288 569 1051578 83 Linux
/dev/mmcblk0p4 570 652 309507 83 Linux
Partition table entries are not in disk order
Disk /dev/mmcblk0boot1: 4 MB, 4194304 bytes
4 heads, 16 sectors/track, 128 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Disk /dev/mmcblk0boot1 doesn't contain a valid partition table
Disk /dev/mmcblk0boot0: 4 MB, 4194304 bytes
4 heads, 16 sectors/track, 128 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Disk /dev/mmcblk0boot0 doesn't contain a valid partition table
Disk /dev/mmcblk1: 1992 MB, 1992294400 bytes
4 heads, 16 sectors/track, 60800 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
- Itop4412开发板emmc驱动移植(设备树)
- eMMC/SD 设备驱动开发(一)
- 【分享】iTOP4412开发板-Bluetooth移植文档
- 移植opencv2.4.9到itop4412开发板
- 移植mplayer到itop4412开发板
- 【分享】iTOP4412开发板-Bluetooth移植文档
- itop4412 LCD设备驱动详解(一)之DEVICE
- itop4412 LCD设备驱动详解(二)之DRIVER
- itop4412 LCD设备驱动详解(三)之PROBE
- 《Linux驱动》iTop4412开发板LCD驱动 详细分析 (一)
- 《Linux驱动》iTop4412开发板LCD驱动 详细分析 (二)
- 《Linux驱动》iTop4412开发板LCD驱动 详细分析 (三)
- 移植linux3.7.4系统到itop4412开发板记录
- [转帖]移植mplayer到迅为itop4412开发板
- iTop4412之DS18B20驱动开发
- iTop4412之ADC驱动开发
- LINUX之块设备整理(二) EMMC 驱动,emmc驱动
- itop4412的安卓驱动移植
- 2.3.1:二维数组中的查找
- 四种参数传递的形式
- JavaScript 自定义文本框光标——初级版
- 测鬼记(上)——写在前面
- springmvc文件上传,上传图片存储到tomcat虚拟图片服务器
- Itop4412开发板emmc驱动移植(设备树)
- 插入排序之java实现
- 练习
- python字符串格式化
- 测鬼记(上)——离乡(一)
- 利用一个栈倒序另外一个栈中的数
- 生日蜡烛
- Synchronized 原理
- unique的用法