找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 5691|回复: 32

记华北工控EMB-3531(RK3399) 的 openwrt 适配过程

[复制链接]
发表于 2022-12-4 05:26 | 显示全部楼层 |阅读模式
最近拿到两块华北工控的EMB-3531,RK3399核心。
网上资料不多,除了官方的wiki,http://android1.norco.com.cn:7070/index.php/EMB-3531
还有下面的帖子可以参考一下。


https://www.right.com.cn/forum/thread-8251255-1-1.html 《入手华北工控RK3399板子(盒子)型号EMB-3531值得一玩

官方的资料其实只提供一些描述和使用的方法,提供ubuntu、android等的镜像下载,没有提供源代码和原理图,这给后续的适配带来巨大挑战。
这个板子的最大特点是:除了其他RK3399都带的usb 3.0 ,千兆网卡外,还带了一个标准的pcie接口。扩展性大大提高。实测NVME可以支持,Intel I225v 2.5G网卡也支持。

我需要一个支持 I225v 的OpenWRT,而且能跑在EMB-3531上,问了好多网友,也没找到。上面提到的帖子提供的openwrt能够启动,但问题很多,而且因为版本问题,无法驱动I225,也没法找到匹配内核的驱动。
只能靠自己适配了。第一次适配一个新的硬件,还是很有挑战的,网上的资料基本上都不完整。只能自己摸索。
在浩如烟海的代码中,没有什么教程和帮助,去摸索添加一个硬件,真的是非常困难。
经过几周时间的摸索,基本上理清的适配的流程,特此记录一下,希望这个帖子能够帮助那些想自己适配的网友。

1、首先,去github下载opnwrt,推荐下面两个,里面包含支持rockchip的代码,可以在他们的基础上适配。
https://github.com/coolsnowwolf/lede
https://github.com/DHDAXCW/lede-rockchip
按照github上的说明,下载代码,准备编译环境。。。。。
2、适配的过程开始了
   a. 修改的第一文件是:target/linux/rockchip/image/armv8.mk
在文件最下面增加一下内容。这样后面才能在 make menuconfig的界面里,看到新硬件的选项。


define Device/emb-3531
  DEVICE_VENDOR := EMB
  DEVICE_MODEL := EMB-3531
  SOC := rk3399
  UBOOT_DEVICE_NAME := rk3399-emb-3531
  IMAGE/sysupgrade.img.gz := boot-common | boot-script emb-3531 | pine64-bin | gzip | append-metadata
  DEVICE_PACKAGES := kmod-r8168 -urngd
endef
TARGET_DEVICES += emb-3531

   b. 在 package/boot/uboot-rockchip/Makefile 文件里增加 EMB-3531的内容


  c、这两个文件应该按实际修改,我觉得不太重要,就没有修改,理论上应该根据实际修改
     target/linux/rockchip/armv8/base-files/etc/board.d/01_leds
     target/linux/rockchip/armv8/base-files/etc/board.d/02_network


  d、patch文件,这个两个patch是关键。patch是干啥的呢?我理解,原理的代码是不包含我们的板子的内容,
       在编译过程中,就需要我们在原来的代码上打补丁,这样编译过程才会把我们的板子编译进去。


./target/linux/rockchip/patches-5.4/212-rockchip-rk3399-add-support-for-emb-3531.patch
./package/boot/uboot-rockchip/patches/317-rockchip-rk3399-Add-support-for-emb3531.patch


先说第一个简单的patch


./target/linux/rockchip/patches-5.4/212-rockchip-rk3399-add-support-for-emb-3531.patch

--- a/arch/arm64/boot/dts/rockchip/Makefile

+++ b/arch/arm64/boot/dts/rockchip/Makefile
@@ -32,3 +32,4 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-ro
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rockpro64.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire-excavator.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-emb-3531.dtb




第二个 ./package/boot/uboot-rockchip/patches/317-rockchip-rk3399-Add-support-for-emb3531.patch 是核心
           因为内容太长了,就节选一段,下面可以看到patch 了几个文件。比较重要的就是这个 /arch/arm/dts/rk3399-emb-3531.dts文件


--- /dev/null
+++ b/configs/rk3399-emb-3531_defconfig
@@ -0,0 +1,73 @@
+CONFIG_ARM=y
+CONFIG_SKIP_LOWLEVEL_INIT=y
+CONFIG_COUNTER_FREQUENCY=24000000
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_SPL_GPIO_SUPPORT=y
+CONFIG_SYS_TEXT_BASE=0x00200000
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_ENV_OFFSET=0x3F8000
+CONFIG_DEFAULT_DEVICE_TREE="rk3399-emb-3531"
+CONFIG_ROCKCHIP_RK3399=y
+CONFIG_TARGET_EVB_RK3399=y



--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -161,7 +161,8 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
        rk3399-rock-pi-4c.dtb \
        rk3399-rock960.dtb \
        rk3399-rockpro64.dtb \
-       rk3399pro-rock-pi-n10.dtb
+       rk3399pro-rock-pi-n10.dtb \
+        rk3399-emb-3531.dtb


dtb-$(CONFIG_ROCKCHIP_RK3568) += \
        rk3568-evb.dtb


--- /dev/null
+++ b/arch/arm/dts/rk3399-emb-3531-u-boot.dtsi
@@ -0,0 +1,14 @@
+#include "rk3399-u-boot.dtsi"
+/ {
+       chosen {
+               stdout-path = "serial2:115200n8";
+               u-boot,spl-boot-order = "same-as-spl", &sdmmc;
+       };
+               config {
+                       sysreset-gpio = <&gpio1 RK_PA6 GPIO_ACTIVE_HIGH>;
+               };
+};
+&gpio1  {
+       u-boot,dm-pre-reloc;
+};
+
--- /dev/null
+++ b/arch/arm/dts/rk3399-emb-3531.dts
@@ -0,0 +1,775 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd
+ */
+
+/dts-v1/;



3.好了。现在可以编译了。先是 make menuconfig 选择新适配进去的硬件板子,各种选项选好。
  然后,make V=s -j10
  顺利的话,固件就会自动生成了。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
 楼主| 发表于 2022-12-4 05:57 | 显示全部楼层

后续: 可以看到 两个网口都已经驱动。



看上去基本正常,可是,问题来了。当我某次reboot的时候,发现卡死在这里



估计是DTS的问题,前面说过,这个板子资料很少。没有DTS。只有一个反编译的DTS。问题非常多。
这个反编译的DTS没法用着uboot里,用在uboot里会无法启动,uboot里的dts需要自己写。因为没有原理图,
所以我估计某个或某些配置不正确,导致机器没有正常复位。

尝试了各种方法,不是硬件问题,因为(原厂的ubuntu可以正常reboot)。相关文件在附件中,请哪位高手,帮助指点。
另外,谁有官方的DTS,赐小弟一份,万份感激。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

你从哪反编译的dts?Android固件里?用什么方法反编译的?  详情 回复 发表于 2022-12-16 10:43
附件是TTL log  详情 回复 发表于 2022-12-4 06:00
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 06:00 | 显示全部楼层
openmsss_cn 发表于 2022-12-4 05:57
后续: 可以看到 两个网口都已经驱动。



附件是TTL log

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 06:10 | 显示全部楼层

最后来一张,PCIE插网卡的照片


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

求教一下大佬,这3个文件是直接加到对应目录,然后再进行编译吗?这个rk3399-emb-3531.dts文件,具体是哪个文件,应该加到哪个目录呢?  发表于 2023-5-23 16:10
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-12-4 13:34 | 显示全部楼层
既然有官方的系统,有官方论坛么,去问下?
另外既然有ubuntu,可以去系统下面找一下相关内容,譬如
  1. /proc/device-tree 或者 /sys/firmware/devicetree/base
复制代码
  1. sudo apt-get install device-tree-compiler
  2. dtc -I fs -O dts /sys/firmware/devicetree/base
复制代码

点评

你说的对! 反编译的dts就是这样得到的。但是,uboot需要的dts用这个不行。  详情 回复 发表于 2022-12-4 23:28
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 23:28 | 显示全部楼层
avin4 发表于 2022-12-4 13:34
既然有官方的系统,有官方论坛么,去问下?
另外既然有ubuntu,可以去系统下面找一下相关内容,譬如

你说的对! 反编译的dts就是这样得到的。但是,uboot需要的dts用这个不行。

点评

虽然帮不到你,帮你顶,已经很厉害了,我也有个板子有电路图有DTS源码,但源码不支持PCIE网卡,你能不能帮我在DTS中加入pcie 网卡,适当收费也行,谢谢!  详情 回复 发表于 2022-12-9 16:56
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-12-9 16:56 | 显示全部楼层
openmsss_cn 发表于 2022-12-4 23:28
你说的对! 反编译的dts就是这样得到的。但是,uboot需要的dts用这个不行。

虽然帮不到你,帮你顶,已经很厉害了,我也有个板子有电路图有DTS源码,但源码不支持PCIE网卡,你能不能帮我在DTS中加入pcie 网卡,适当收费也行,谢谢!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-12-16 10:43 | 显示全部楼层
openmsss_cn 发表于 2022-12-4 05:57
后续: 可以看到 两个网口都已经驱动。

你从哪反编译的dts?Android固件里?用什么方法反编译的?

点评

都可以的。。  详情 回复 发表于 2022-12-18 00:56
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-12-16 13:35 | 显示全部楼层
可以驱动了吗
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-12-16 13:35 | 显示全部楼层
可以驱动了吗

点评

驱动可以,只是不能reboot  详情 回复 发表于 2022-12-18 00:55
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-18 00:55 | 显示全部楼层

驱动可以,只是不能reboot
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-18 00:56 | 显示全部楼层
raulmadrid777 发表于 2022-12-16 10:43
你从哪反编译的dts?Android固件里?用什么方法反编译的?

都可以的。。

点评

uboot中用fdt print就能打印出原dts吧  详情 回复 发表于 2022-12-23 15:16
能详细讲讲吗,大神?真心求教  详情 回复 发表于 2022-12-19 08:26
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-12-19 08:26 | 显示全部楼层

能详细讲讲吗,大神?真心求教
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-12-23 15:16 | 显示全部楼层

uboot中用fdt print就能打印出原dts吧
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-3-20 13:52 | 显示全部楼层
大佬解决了吗?我也有块这个板子
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-9-23 20:23

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表