1、uboot源码下载:
    https://github.com/TinkerBoard2/u-boot

tinkerboard 2s相关资料汇总:
    https://smartfire.cn/forum.php?mod=viewthread&tid=5240&highlight=tinker%2Bboard%2Bs
    
2、uboot下tftp 网络不通

原因为网络GMAC的时钟由CPU提供,dts配置按照输入配置,其次时钟频率配置并非125M,具体修改如下:

diff --git a/arch/arm/dts/rk3399-evb.dts b/arch/arm/dts/rk3399-evb.dts
index 7bb0688..abc2748 100644
--- a/arch/arm/dts/rk3399-evb.dts
+++ b/arch/arm/dts/rk3399-evb.dts
@@ -364,18 +364,19 @@
 };
 
 &gmac {
-        phy-supply = <&vcc_phy>;
+        phy-supply = <&vcc3v3_sys>;
        phy-mode = "rgmii";
-       clock_in_out = "input";
+       clock_in_out = "output";
+       assigned-clock-rates = <125000000>;
        snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
        snps,reset-active-low;
        snps,reset-delays-us = <0 10000 50000>;
        assigned-clocks = <&cru SCLK_RMII_SRC>;
-       assigned-clock-parents = <&clkin_gmac>;
+       assigned-clock-parents = <&cru SCLK_MAC>;
        pinctrl-names = "default";
        pinctrl-0 = <&rgmii_pins>;
-       tx_delay = <0x28>;
-       rx_delay = <0x11>;
+       tx_delay = <0x25>;
+       rx_delay = <0x20>;
        status = "okay";
 };
 
diff --git a/arch/arm/include/asm/arch-rockchip/cru_rk3399.h b/arch/arm/include/asm/arch-rockchip/cru_rk3399.h
index 55d09af..4d60bc5 100644
--- a/arch/arm/include/asm/arch-rockchip/cru_rk3399.h
+++ b/arch/arm/include/asm/arch-rockchip/cru_rk3399.h
@@ -81,7 +81,7 @@ check_member(rk3399_cru, sdio1_con[1], 0x594);
 #define APLL_HZ                (600*MHz)
 #define GPLL_HZ                (800 * MHz)
 #define CPLL_HZ                (384*MHz)
-#define NPLL_HZ                (600 * MHz)
+#define NPLL_HZ                (625 * MHz)
 #define PPLL_HZ                (676*MHz)
 
 #define PMU_PCLK_HZ    (48*MHz)
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index 3e59105..a78ee1d 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -722,7 +722,7 @@ config ROCKCHIP_VENDOR_PARTITION
 config USING_KERNEL_DTB
        bool "Using dtb from Kernel/resource for U-Boot"
        depends on RKIMG_BOOTLOADER && OF_LIVE
-       default y
+       default n
        help
          This enable support to read dtb from resource and use it for U-Boot,
          the uart and emmc will still using U-Boot dtb, but other devices like
          
diff --git a/drivers/clk/rockchip/clk_rk3399.c b/drivers/clk/rockchip/clk_rk3399.c
index cce0b48..284c96c 100644
--- a/drivers/clk/rockchip/clk_rk3399.c
+++ b/drivers/clk/rockchip/clk_rk3399.c
@@ -171,6 +171,15 @@ enum {
        ACLK_PERIHP_DIV_CON_SHIFT       = 0,
        ACLK_PERIHP_DIV_CON_MASK        = 0x1f,
 
+       /* CLKSEL_CON20 */
+       GMAC_PLL_SHIFT        = 14,
+       GMAC_PLL_MASK                   = 0x3,
+       GMAC_PLL_SELECT_CPLL            = 0x0,
+       GMAC_PLL_SELECT_GPLL            = 0x1,
+       GMAC_PLL_SELECT_NPLL            = 0x2,
+       GMAC_DIV_CON_MASK               = GENMASK(12, 8),
+       GMAC_DIV_CON_SHIFT              = 0x8,
+
        /* CLKSEL_CON21 */
        ACLK_EMMC_PLL_SEL_SHIFT         = 7,
        ACLK_EMMC_PLL_SEL_MASK          = 0x1 << ACLK_EMMC_PLL_SEL_SHIFT,
@@ -897,8 +906,47 @@ static ulong rk3399_gmac_set_clk(struct rk3399_cru *cru, ulong rate)
                 * Implement this once it becomes necessary and print an error
                 * if someone tries to use it (while it remains unimplemented).
                 */
-               pr_err("%s: internal clock is UNIMPLEMENTED\n", __func__);
-               ret = 0;
+               pr_err("go %s: internal clock is UNIMPLEMENTED\n", __func__);
+
+
+               u32 con = readl(&cru->clksel_con[20]);
+                ulong pll_rate;
+                u8 div;
+
+                if (((con >> GMAC_PLL_SHIFT) & GMAC_PLL_MASK) ==
+                    GMAC_PLL_SELECT_CPLL){
+                       printf("zeng CPLL\n");
+                        pll_rate = CPLL_HZ;
+               }
+                else if (((con >> GMAC_PLL_SHIFT) & GMAC_PLL_MASK) ==
+                         GMAC_PLL_SELECT_GPLL){
+                       printf("zeng GPLL\n");
+                        pll_rate = GPLL_HZ;
+               }
+                else if (((con >> GMAC_PLL_SHIFT) & GMAC_PLL_MASK) ==
+                         GMAC_PLL_SELECT_NPLL){
+                       printf("zeng NPLL\n");
+                          pll_rate = NPLL_HZ;
+               }
+               else if (((con >> GMAC_PLL_SHIFT) & 0x3) ==
+                               GMAC_PLL_SELECT_NPLL){
+                       printf("zeng NPLL\n");
+                       pll_rate = NPLL_HZ;
+               }
+                else /* CPLL is not set */{
+                       printf("zeng error!\n");
+                        return -EPERM;
+               }
+
+                div = DIV_ROUND_UP(pll_rate, rate) - 1;
+               printf("zeng:div=%x\n",div);
+                if (div <= 0x1f)
+                        rk_clrsetreg(&cru->clksel_con[20], GMAC_DIV_CON_MASK,
+                                     div << GMAC_DIV_CON_SHIFT);
+                else
+                        debug("Unsupported div for gmac:%d\n", div);
+
+                return DIV_TO_RATE(pll_rate, div);
        }
 
        return ret;
@@ -1002,6 +1050,7 @@ static ulong rk3399_tsadc_set_clk(struct rk3399_cru *cru, uint hz)
        return rk3399_tsadc_get_clk(cru);
 }

3、uboot下mmc命令写emmc报错:

Writing to MMC(0)... sdhci_transfer_data: Error detected in status(0x608000)!
MMC error: The cmd index is 25, ret is -70
mmc write failed

原因驱动没有对emmc的phy进行初始化设置,修改如下:

diff --git a/drivers/mmc/rockchip_sdhci.c b/drivers/mmc/rockchip_sdhci.c
index 378eb97..ceddd00 100644
--- a/drivers/mmc/rockchip_sdhci.c
+++ b/drivers/mmc/rockchip_sdhci.c
@@ -91,6 +91,11 @@ struct sdhci_data {
 
 static int rk3399_emmc_phy_init(struct udevice *dev)
 {
+    struct rockchip_sdhc *priv = dev_get_priv(dev);
+    
+    writel(0xFFFF3B00, &priv->phy->emmcphy_con[0]);
+    writel(0xFFFF03FF, &priv->phy->emmcphy_con[2]);
+    writel(0xFFFF01FF, &priv->phy->emmcphy_con[3]);
        return 0;
 }
 
--

【无标题】华硕tinkerboard 2s uboot下网络及emmc问题相关推荐

  1. 华硕tinkerboard 2s Android11系列-bootloader部分的编译

    前一篇<第一款能运行Android11 的RK3399开发板tinkerboard2>已经对tinkerboard2的Android 11有个大致的介绍,这一期来聊聊tinkerboard ...

  2. t4240 uboot下网络调试(88e1111)

    目前有两个网口,分别从t4240的EC1, EC2出来连接的88e1111 phy芯片.其中一个phy接rj45从板子直出,另一个是过背板的(后面再说). marvell的phy驱动在uboot下dr ...

  3. uboot下tftp下载文件失败的排查步骤

    1.排查步骤 (1)网线是否已经插上单板并连接正常; (2)可以先把网线插到其他设备上,确认网线是否可以正常工作; (3)确认单板与PC之间是否是网络直连:如果不是网络直连,则要先尝试去ping网关地 ...

  4. mysql输入命令1002无标题_Linux下远程连接MySQL数据库的方法

    步骤 1.在服务器端开启远程访问 首先进入mysql数据库,然后输入下面两个命令: grant all privileges on *.* to 'root'@'%' identified by 'p ...

  5. linux网络驱动rtl8211f,RTL8211F在uboot下使用mii工具配置RJ45网口灯详解

    RTL8211F在uboot下使用mii工具配置RJ45网口灯详解. 首先要明确使用这个工具的目的,类似于i2c-test工具测试i2c,使用这个工具验证测试网口灯的配置.然后再通过软件或者驱动来实现 ...

  6. Linux下网络流量实时监控工具 大全

    Linux下网络流量实时监控工具 大全 在工作中发现,经常因为业务的原因,需要即时了解某台服务器网卡的流量,虽然公司也部署了cacti软件,但cacti是五分钟统计的,没有即时性,并且 有时候打开监控 ...

  7. Linux下网络流量实时监控工具大全

    Linux下网络流量实时监控工具 大全 在工作中发现,经常因为业务的原因,需要即时了解某台服务器网卡的流量,虽然公司也部署了cacti软件,但cacti是五分钟统计的,没有即时性,并且有时候打开监控页 ...

  8. Android 无标题 全屏设置

    Android 无标题 全屏设置 标题栏和状态栏 Android程序默认情况下是包含状态栏和标题栏的. 在Eclipse中新建一个Android程序,运行后显示如下: 图中标出了状态栏(显示时间.电池 ...

  9. 03 TI OMAPL138E Linux移植 (Davinci) (资源获取+从串口启动UBoot+从网络启动Linux与文件系统)

    Date: 2018-02-08 [1.从实际硬件上获取主芯片型号为TI的OMAPL138E ],所属系列为OMAPL1,编译默认配置为davinci或者da850. <以下内容失效>&l ...

最新文章

  1. 计算机虚拟网络毕业论文,计算机毕业论文——基于WEB的虚拟计算机网络实验平台.doc...
  2. 2022秋招算法岗卷成人间地狱!高薪惹眼,招录比100:1
  3. 人工智能电磁车模如何入手?
  4. Keil5报错:error: more than one instance overload function “xx“ has C linkage
  5. invalid argument 0: Sizes of tensors must match except in dimension 0. Got 1
  6. 使用String.format简化代码
  7. 调用 GetProcAddress 失败,在 ISAPI 筛选器 C:\Windows\Microsoft.NET...
  8. 网友爆料乘顺风车被司机拿刀砍伤:或面临截肢危险...
  9. java回收内存_JAVA之内存回收
  10. 机器人学中的状态估计 中文版_机器人学——学习笔记18(Minpulator Traj Planning Example)...
  11. 国外手机短信验证码接收神器(转自美国华人网FuninUSA)
  12. 软件工程7条基本原理
  13. 快速实现win11恢复win10系统 分享无损恢复win10系统
  14. MT4 DDE数据交换
  15. 打开新材料世界的大门:拓扑电子材料目录问世
  16. Pingouin: 基于pandas和numpy的统计包
  17. Android程序员必看,资深Android面试题
  18. 计算机无法连接到手机热点,电脑搜不到手机的热点是为什么_电脑无法发现手机热点的处理方法...
  19. android_图片转视频_image2video
  20. mip-NeRF代码debug

热门文章

  1. java位宽_在系统verilog中保留枚举中的位宽
  2. qt 工具栏显示图标和文字_菜单和工具条上图标显示不了,为什么?
  3. 讲故事带你理解消息队列
  4. 乔布斯留下的那颗「苹果」已经45岁啦!库克:旅程才刚刚开始
  5. 西门子200指针求平均值,最大值,最小值,适用于多种程序要求,注释全面
  6. 卷积神经网络和神经网络,单层卷积神经网络
  7. 《Hierarchical User Profiling forE-commerce Recommender Systems》原文
  8. 信用卡协商还款80后90后速看
  9. Fuchsia开发指南
  10. 2015年春运火车票购票指南、放假指南