野火的6ull开发板TF卡问题
项目场景:
野火的6ull开发板将内核和文件系统都放在tf卡中运行
问题描述:
Uboot能正常运行,在Uboot中能正常读写TF卡,能正常启动内核,完成其它初始化后,卡在TF卡初始化部分,但偶尔也能启动成功。
@Override
mmcblk0: error -110 transferring data, sector 1228802, nr 2, cmd response 0x0, card status 0xc00b00
mmc0: tried to reset card
EXT3-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (2c0)
EXT2-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (2c4)
mmc0: Timeout waiting for hardware interrupt.
------------[ cut here ]------------
WARNING: CPU: 0 PID: 0 at drivers/mmc/host/sdhci.c:1008 sdhci_send_command+0x8e4/0xea8()
原因分析:
野火6ull开发板的TF与wifi/蓝牙模块是共用sdhci接口,怀疑是wifi/蓝牙模块影响了tf卡。将wifi/蓝牙模块拆掉后问题依然还在。怀疑是信号完整性的问题引起的,因为tf卡距离核心板的距离有点远,如果pcb布线不好的话容易引起问题。用示波器量了一下波形,在Uboot阶段clk的频率比kernal阶段低很多。kernal阶段clk的波形变形严重,问题应该是clk的频率过高引起的。
解决方案:
打开内核源码drivers/mmc/host/sdhci.c, 在int sdhci_add_host(struct sdhci_host *host)函数中3059行后添加修改sdhci的clk频率:
@Overridehost->max_clk *= 1000000;if (host->max_clk == 0 || host->quirks &SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN) {if (!host->ops->get_max_clock) {pr_err("%s: Hardware doesn't specify base clock ""frequency.\n", mmc_hostname(mmc));return -ENODEV;}host->max_clk = host->ops->get_max_clock(host);}pr_info("SDHCI max clock:%d\n",host->max_clk);host->max_clk = 100000000;pr_info("change SDHCI max clock to :%d\n",host->max_clk);
编译内核后,上电运行,SD的max clock 由原来的132M改成100M后,成功运行。
@Override
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
/soc/aips-bus@02100000/usdhc@02190000: voltage-ranges unspecified
SDHCI max clock:132000000
change SDHCI max clock to :100000000
sdhci-esdhc-imx 2190000.usdhc: No vqmmc regulator found
mmc0: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
fsl-asrc 2034000.asrc: driver registered
mmc0: host does not support reading read-only switch, assuming write-enable
imx-wm8960 sound: wm8960-hifi <-> 202c000.sai mapping ok
imx-wm8960 sound: snd-soc-dummy-dai <-> 2034000.asrc mapping ok
imx-wm8960 sound: wm8960-hifi <-> 202c000.sai mapping ok
mmc0: new ultra high speed SDR104 SDHC card at address 0001
mmcblk0: mmc0:0001 SD16G 14.5 GiB mmcblk0: p1 p2
野火的6ull开发板TF卡问题相关推荐
- 野火EBF 6ULL 开发板 烧录ubuntu18 emmc 固件 并安装桌面
一. 选择官方教程 镜像构建 镜像构建 使用MfgTool进行烧录 烧录 一. 选择下载我打包好的工具和镜像进行烧录 下载地址 镜像配置在cfg.ini 默认是ubuntu18.04 bionic 是 ...
- 基于野火F407骄阳开发板的苹果采摘机器人机械臂的采摘轨迹与夹持器的采摘动作的设计(1)
基于野火F407骄阳开发板的苹果采摘机器人机械臂的采摘轨迹与夹持器的采摘动作的设计(1) 苹果采摘机器人 1.采摘流程与硬件设计 2.机械臂驱动以及采摘轨迹设计 2.1.台达A2电机驱动实现 2.2. ...
- 野火的DSP28335开发板吧代码烧写到Flash中
说明是针对野火的DSP28335开发板里的例程进行实验的,环境是CCS5.5,已经验证.开发板里的例程都是在RAM里运行的,每次开机都是祝你生日快乐的音乐,经过一周的努力终于不用再受音乐的困扰.可以随 ...
- 使用轮询方式进行ADC转换(野火STM32 MINI开发板)
实验器材:野火STM32 MINI开发板 任务目标:利用ADC采集电位器的电压,并通过串口调试助手输出变化的电压值 任务内容:调整开发板上的滑动变阻器,将电压值通过开发板到PC进行显示 开发板原理图: ...
- 基于阿尔法开发板构建卡启动固件
基于阿尔法开发板构建卡启动固件 1.前言 2.u-boot 2.1 u-boot修改 2.2 u-boot编译 2.3 u-boot烧录 3.kernel 3.1 kenrel编译 4.rootfs ...
- 野火iMX6ULL Pro开发板移植SDL2
承诺的Linux三部曲移植还没写完,差个根文件系统没有写呢,但实在压抑不住内心的亢奋情绪,先把SDL2移植奉献给大家吧.关于SDL的移植,已经进行一个月了,之前把SDL移植成功后打算写Python的模 ...
- android 开发刷rom,Android ROM开发(7) TF卡(金卡)自引导刷机
Andrew Huang 转载请注明作者及网址 官方的RUU对于刷机要求严格.必须使用PC通过USB在线刷机,检查也比较严格.如果想刷CID不一致的ROM,或者降版刷机.用这个方法不行. 因此如果你的 ...
- 春节烟花特效(基于野火stm32指南者开发板屏幕)
先来看看效果 就是一个基于stm32的野火例程的一个改进,实现了一个小小的烟花特效 没啥创新点 就改了一个函数(基于野火stm32的例程进行了应用的修改而已) 可以更方便的画直线 配了点蜂鸣器电路 声 ...
- imx6ull开发板SD卡烧录方式---援引正点原子
#! /bin/sh #I.MX6 SD卡启动系统烧写脚本 #版本v1.0 #Author:ALIENTEK VERSION="1.0" #打印用法 usage () {echo ...
最新文章
- eclipse启动maven项目报类找不到
- 树莓派 ubuntu 安装Python+OpenCV
- linux支持sshd救援模式,单用户、救援模式、克隆、两机互联
- 17、有名管道与无名管道之间的区别
- xcode 修改 infodictionary_安卓系统修改复位键生效时间
- Matlab 格式化字符串sscanf
- hive数据写入elasticsearch
- ubuntu使用python_Ubuntu+Python环境配置(III)—用Python
- DeskClock选择闹钟声音时有重复选项
- 关于DM8168中移植算法速度慢、效率低的新发现
- 给 Java 说句公道话
- fairygui 与 spine动画的适配处理
- SPSS说明附学习方法
- Python打包exe文件并换图标【最强版教程】
- “L3级”自动驾驶落地指导思想:高速辅助人,低速替代人
- 【Day4.5】走人行天桥去百丽宫海生馆
- 软件测试基础知识 - 单元测试、集成测试、系统测试、回归测试、验收测试这几步中最重要的是哪一步
- NCBI|宏基因组原始数据上传
- “很抱歉,出现错误,Word不能启动(2)。”解决方法(转载),2023-3-3
- 2022自学kali linux学习笔记