Linux4.14的设备树下已经对itop4412做了支持,本来应该很容易进行移植,可是在使用讯为给的资料中,对exynos4412-itop-scp-core.dtsi中原本的代码全部进行了注释,并自己添加了部分节点。导致我移植完成后cpu只有一个核心在工作。

于是重新到linux官网下载源码得到exynos4412-itop-scp-core.dtsi文件,编译烧写后发现卡在

  Starting kernel ...

  Uncompressing Linux... done, booting the kernel.

经过网上搜索发现是无法解析firmware节点导致,于是把这段代码注释掉

  firmware@0203F000 {
  compatible = "samsung,secure-firmware";
  reg = <0x0203F000 0x1000>;
  };

重点来了,注释掉上段代码后,可以正常启动linux,可就是挂载不上根文件系统,往上翻log显示:

  [ 2.504695] mmcblk1: error -5 sending status command, retrying

  ...

  [ 3.024971] dwmmc_exynos 12550000.mmc: Busy; trying anyway
  [ 3.528986] mmc_host mmc1: Timeout sending command (cmd 0x202000 arg 0x0 status 0x80202000)
  [ 3.562416] mmc_host mmc1: Bus speed (slot 0) = 50000000Hz (slot req 400000Hz, actual 396825HZ div = 63)

  (我把根文件系统放在emmc中,在uboot中emmc为mmc0,可是被linux识别成emmc1,所以root=/dev/mmcblk1p2,暂时没搞清楚怎么更改)

从log可以看出是与emmc通讯受阻,因为在用讯为给的exynos4412-itop-scp-core.dtsi文件是可以正常使用emmc的,所以查看设备树的emmc节点  

首先是exynos4412.dtsi:

  329 mshc_0: mmc@12550000 {
  330 compatible = "samsung,exynos4412-dw-mshc";
  331 reg = <0x12550000 0x1000>;
  332 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
  333 #address-cells = <1>;
  334 #size-cells = <0>;
  335 fifo-depth = <0x80>;
  336 clocks = <&clock CLK_SDMMC4>, <&clock CLK_SCLK_MMC4>;
  337 clock-names = "biu", "ciu";
  338 status = "disable";
  339 };

exynos4412-itop-scp-core.dtsi:

  &mshc_0 {

    pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
    pinctrl-names = "default";
    status = "okay";
    vmmc-supply = <&buck9_reg>;
    broken-cd;
    card-detect-delay = <200>;
    samsung,dw-mshc-ciu-div = <3>;
    samsung,dw-mshc-sdr-timing = <2 3>;
    samsung,dw-mshc-ddr-timing = <1 2>;
    bus-width = <8>;
    cap-mmc-highspeed;
  };

上面都是在官方linux下的设备树中的片段,而讯为做出以下改动

exynos4412-itop-scp-core.dtsi:  

  mshc_0: mmc@12550000 {
    compatible = "samsung,exynos4412-dw-mshc";
    reg = <0x12550000 0x1000>;
    interrupts = <0 77 0>;
    #address-cells = <1>;
    #size-cells = <0>;
    fifo-depth = <0x80>;
    clocks = <&clock CLK_SDMMC4>, <&clock CLK_SCLK_MMC4>;
    clock-names = "biu", "ciu";
    status = "disabled";
   };

讯为无论是在dts还是dtsi中都没有描述vmmc-supply = <&buck9_reg>;这个节点,而查看S5M8767A的原理图

可以看到刚启动的时候,BUCK9是OFF状态也就是没有电压,接下来看emmc的原理图

原理图明确标出emmc的供电就是VDDF28_EMMC,这就是问题所在,在uboot中我也用到了emmc,而这时pmu根本没有初始化,也就是说如果原理图正确的话emmc在uboot是不能工作的。所以结论就是讯为给的原理图居然是错误的,导致官方的设备树文件emmc的供电部分给出了vmmc-supply = <&buck9_reg>,经过我的查找确定了emmc的供电为VDDIOAP_MMC012_28,就是最下面这个,这个供电默认状态是开启的。

于是修改vmmc-supply = <&buck9_reg>为vmmc-supply = <&ldo17_reg>,编译后正常启动并可以挂载根文件系统,也有四颗核心在工作了。

[ 0.002640] CPU: Testing write buffer coherency: ok
[ 0.003759] CPU0: thread -1, cpu 0, socket 10, mpidr 80000a00
[ 0.040055] Setting up static identity map for 0x40100000 - 0x40100060
[ 0.060012] Hierarchical SRCU implementation.
[ 0.119998] smp: Bringing up secondary CPUs ...
[ 0.200218] CPU1: thread -1, cpu 1, socket 10, mpidr 80000a01
[ 0.280091] CPU2: thread -1, cpu 2, socket 10, mpidr 80000a02
[ 0.360092] CPU3: thread -1, cpu 3, socket 10, mpidr 80000a03
[ 0.360292] smp: Brought up 1 node, 4 CPUs
[ 0.360319] SMP: Total of 4 processors activated (192.00 BogoMIPS).

...

[    2.528840] VFS: Mounted root (ext4 filesystem) on device 179:2.

...

十一放假,解决这个问题排查了好长时间,在这不得不吐槽讯为,原理图都是错的,照着官方的设备树居然改不好自己的设备树,这个方案估计是照着哪里抄的的吧,抄就抄了,你把原理图搞对好吧。录的视频和没有一样,毫无技术含量可言。

  

  

  

在itop4412移植linux4.14和设备树遇到的问题及解决的更多相关文章

  1. 移植linux4.14内核到四核Exynos4412开发板

    最近法师收到了很多留言,其中有一部分问法师什么时候更新,还有一大部分问法师我是买迅为的IMX6UL精英版好呢还是买4412精英版好呢,因为我们这俩个都不贵.法师的建议的是入手4412!为什么呢? 第一 ...

  2. 基于tiny4412的Linux内核移植 -- 设备树的展开

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  3. 基于tiny4412的Linux内核移植 -- 设备树的展开【转】

    转自:https://www.cnblogs.com/pengdonglin137/p/5248114.html#_lab2_3_1 阅读目录(Content) 作者信息 平台简介 摘要 正文 一.根 ...

  4. 基于设备树的TQ2440触摸屏驱动移植

    平台 开发板:tq2440 内核:Linux-4.9 u-boot:u-boot-2015.04   概述 之前移植了LCD驱动,下面继续移植触摸屏驱动,然后将tslib也移植上去. 正文 一.移植触 ...

  5. tiny4412学习(四)之移植linux-设备树(1)设备树基础知识及GPIO中断【转】

    本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/74177978 版权声明:本文为博主原创文章,转载请注明http://blog.c ...

  6. linux设备驱动程序-i2c(2)-adapter和设备树的解析

    linux设备驱动程序-i2c(2)-adapter和设备树的解析 (注: 基于beagle bone green开发板,linux4.14内核版本) 在本系列linux内核i2c框架的前两篇,分别讲 ...

  7. Linux设备树语法详解

    概念 Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离.在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写.引入了设备树之后,驱动代 ...

  8. Linux设备树语法详解【转】

    转自:http://www.cnblogs.com/xiaojiang1025/p/6131381.html 概念 Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离.在设备 ...

  9. 设备树(device tree)学习笔记

    作者信息 作者:彭东林 邮箱:pengdonglin137@163.com 1.反编译设备树 在设备树学习的时候,如果可以看到最终生成的设备树的内容,对于我们学习设备树以及分析问题有很大帮助.这里我们 ...

随机推荐

  1. layout_gravity 属性和 gravity属性的区别

    安卓中  LinearLayout有两个非常相似的属性: android:gravity与android:layout_gravity. 区别在于: android:gravity 属性是对该view ...

  2. Docker 多终端登录

    版权声明:starRTC免费im直播会议一对一视频,by elesos.com & starRTC.com https://blog.csdn.net/elesos/article/detai ...

  3. v2 配置

    记录一下怕自己忘记了 v2配置 v2加速 cdn加速 hostwind 服务器 namesilo 域名网站

  4. 基于react-app搭建react-router+redux项目

    前言 总括: 本文采用react+redux+react-router+less+es6+webpack,以实现一个简易备忘录(todolist)为例尽可能全面的讲述使用react全家桶实现一个完整应 ...

  5. element-ui 上传图片或视频时,先回显在上传

    <el-upload class="upload-demo" ref="vidos" :action="URL+'/api/post/file' ...

  6. JavaScript 之 基本包装类型

    基本包装类型 为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:String/Number/Boolean.  下面先看一段代码: var s1 = "Hello ...

  7. 单词CAEMENT水泥CAEMENT英文

    caement Archaic spelling of cement. caement Alternative forms caement (archaic) c?ment (archaic) Hyp ...

  8. Python数据分析 之时间序列基础

    1. 时间序列基础 import numpy as np import pandas as pd np.random.seed(12345) import matplotlib.pyplot as p ...

  9. Spring Boot加载application.properties配置文件顺序规则

    SpringApplication会从以下路径加载所有的application.properties文件: 1.file:./config/(当前目录下的config文件夹) 2.file:./(当前 ...

  10. 关于mysql数据库涉及的一些规范

    tips:如果本文对你有用,请爱心点个赞,提高排名,让这篇文章帮助更多的人.谢谢大家!比心❤~ 如果解决不了,可以在文末加我微信,进群交流. 设计规范,在分工协作的工作场景中尤其重要,否则团队之间互相 ...