tiny4412 --Uboot移植(6) SD卡驱动,启动内核
开发环境:win10 64位 + VMware12 + Ubuntu14.04 32位
工具链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi
要移植的u-boot版本:u-boot-2016-11
Tiny4412开发板硬件版本为:
底板: Tiny4412SDK 1312B
核心板:Tiny4412 - 1306
----------------------------------------------------------------------------------------------------------------------------------------------
经过两天的调试,终于发现上一节ext2文件格式的问题,其实是SD卡驱动有问题,在/arch/arm/dts/exynos4412-tiny4412.dts下
diff --git a/arch/arm/dts/exynos4412-tiny4412.dts b/arch/arm/dts/exynos4412-tiny
index 36e2c6a..88c336a
--- a/arch/arm/dts/exynos4412-tiny4412.dts
+++ b/arch/arm/dts/exynos4412-tiny4412.dts @@ -, +, @@
}; sdhci@ {
- compatible = "samsung,exynos4412-sdhci";
status = "disable";
}; sdhci@ {
- compatible = "samsung,exynos4412-sdhci";
status = "disable";
}; sdhci@ {
- compatible = "samsung,exynos4412-sdhci";
samsung,bus-width = <>;
samsung,timing = < >;
cd-gpios = <&gpk2 >;
}; sdhci@ {
- compatible = "samsung,exynos4412-sdhci";
status = "disable";
}; @@ -, +, @@
compatible = "samsung,emmc-reset";
reset-gpio = <&gpk1 >;
};
+
};
status = "disable";
}; sdhci@ {
- compatible = "samsung,exynos4412-sdhci";
status = "disable";
}; sdhci@ {
- compatible = "samsung,exynos4412-sdhci";
samsung,bus-width = <>;
samsung,timing = < >;
cd-gpios = <&gpk2 >;
}; sdhci@ {
- compatible = "samsung,exynos4412-sdhci";
status = "disable";
};
原因就在于设备树的compatible信息,compatible属性中的字符和操作系统选择什么样的驱动来初始化设备有关,网上查到的信息如下:compatible属性,该属性的值是string list,定义了一系列的modle(每个string是一个model)。这些字符串列表被操作系统用来选择用哪一个driver来驱动该设备。假设定义该属性:compatible = “aaaaaa”, “bbbbb”。那么操作操作系统可能首先使用aaaaaa来匹配适合的driver,如果没有匹配到,那么使用字符串bbbbb来继续寻找适合的driver。在/drives/mmc/s5p_sdhci.c。设备定义的信息为samsung,exynos4412-sdhci,但不知为何设备数中加上这句后,就找不到该驱动。
修改后

修改环境变量:
setenv bootcmd "load mmc 0 0x40007000 uImage; load mmc 0 0x48000000 ramdisk.img; load mmc 0 0x42000000 exynos4412-tiny4412.dtb; bootm 0x40007000 0x48000000 0x42000000"

boot启动:

注意,在第一次修改驱动相关代码后,会出现如下情况

解决方法为:
diff --git a/arch/arm/mach-exynos/clock.c b/arch/arm/mach-exynos/clock.c
index 3d31f9d..a8fc72a
--- a/arch/arm/mach-exynos/clock.c
+++ b/arch/arm/mach-exynos/clock.c
@@ -, +, @@ unsigned long get_mmc_clk(int dev_index)
void set_mmc_clk(int dev_index, unsigned int div)
{
/* If want to set correct value, it needs to substract one from div.*/
- if (div > )
- div -= ;
+// if (div > 0)
+// div -= 1; if (cpu_is_exynos5()) {
if (proid_is_exynos5420() || proid_is_exynos5422())
具体原因未知,据说4G卡不会出现此情况;;
参考:
https://www.cnblogs.com/LoTGu/p/6405131.html
https://blog.csdn.net/u013779722/article/details/60311216
tiny4412 --Uboot移植(6) SD卡驱动,启动内核的更多相关文章
- X-009 FriendlyARM tiny4412 uboot移植之SD Card用起来Kernel boot起来
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- tiny4412 --Uboot移植(5) DDR3内存
开发环境:win10 64位 + VMware12 + Ubuntu14.04 32位 工具链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-g ...
- sd卡无法启动及zc706更改主频后可以进入uboot无法启动kernel的坑
好长的标题 +_+ 1.sd卡无法启动 起因:kernel底下通过dd测试速度,擦写了sd卡,再启动时发现无法启动 于是重新格式化,再将BOOT.bin 相关dtb u-rootfs zImage和u ...
- X-008 FriendlyARM tiny4412 uboot移植之copy u-boot到DDR内存
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- X-007 FriendlyARM tiny4412 u-boot移植之内存初始化
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- X-004 FriendlyARM tiny4412 uboot移植之点亮指路灯
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- u-boot 移植 --->6、引导Linux启动测试
在引导Linux开机之前需要先清楚Linux启动的必要或者说是先决条件,这里就是提到了u-boot的作用了引用百度云---主要用于嵌入式系统的引导加载,其实在我调试下来总结一下就是初始化硬件这里的硬件 ...
- X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件
X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件 <<<<<<<<<<<<<< ...
- 使用FreeRTOS在SD卡驱动使用非系统延时导致上电重启不工作的情况
一.问题描述在一个使用FreeRTOS的工程中,只做了SD卡的驱动,由于RTOS使用了Systick,故非系统延时函数使用的是 DWT中的时钟周期(CYCCNT)计数功能,但是在SD卡驱动中使用了这个 ...
随机推荐
- VB 调用 webservice 出现:WSDLReader:Loading of the WSDL file failed HRESULT=0×80040154: 没有注册类别 解决方案
有些 VB 程序在调用 webservice 的时候出现“WSDLReader:Loading of the WSDL file failed HRESULT=0×80040154: 没有注册类别 ...
- Android学习笔记一之第一个Android程序
/** *Title:总结昨天下午至今天上午的学习成果 *Author:zsg *Date:2017-8-13 / 一.了解Android 1.Android架构 Android大致可分为四层架构:L ...
- CCF2017-9-1
题目: 分析:将所有可能列出来,80可以分为8个10块(这时候最多也是8个),在这种情况下,可以分为2个30块, 3个循环嵌套,判断是不是输入的总钱数,因为不是所有的都是加起来是80,就是分为买多少个 ...
- vue.js 自定义事件
<div id="app"> <h2>{{num}}</h2> <h1>全局组件</h1> <my-compone ...
- IntelliJ IDEA 工程Java文件上红色的无效符
IntelliJ IDEA 工程Java文件上红色的无效符(红色表示该类是不可编译文件) 1.查看Java.resources文件夹 如图所示,是因为没有配置 2.在Java文件夹点击右键找到Mark ...
- 关于python的一些想法
我来自信息管理与信息系统专业,大一学过c语言但不太精通.学习python是为了学会这门新语言,据了解python会慢慢成为主流编程语言. 因为对绘图方面很感兴趣,希望老师能够在课上多讲一些这方面的东西 ...
- JEECG 3.7.8 新版表单校验提示风格使用&升级方法(validform 新风格漂亮,布局简单)
JEECG 表单校验采用的是validform,默认的校验提示需要占用页面布局,提示效果较传统.jeecg这个自定义的校验提示风格,不占用页面布局,提示效果也更美观,简单易用,让表单看起来更漂亮!!! ...
- css样式基础详解
一.字体属性:(font) 1.大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 2.样式 {font-styl ...
- 超详细的遗传算法(Genetic Algorithm)解析
https://blog.csdn.net/u010451580/article/details/51178225 https://www.jianshu.com/p/c82f09adee8f 00 ...
- Linux网络编程学习(十) ----- Socket(第六章)
前言:由于第五章主要介绍了TCP和UDP协议以及两者的包头的字段以及相应的功能,这里就不介绍了,对着字段看功能就好了,后续开始学习第六章 1.Socket Socket实质上就是提供了通信的端点,每个 ...