OpenHarmony标准系统认证
环境配置该部分在Windows上完成
确保python版本为3.7以上,3.7.8是推荐的,但不是绝对的:
python --versionPython 3.7.8
安装包:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple setuptoolspip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyserialpip install -i https://pypi.tuna.tsinghua.edu.cn/simple rsapip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-dateutil
Acts应用兼容性测试在这里选择OH对应的版本的套件和资源文件。
需要注意的一点就是,Acts套件如果是arm32可以直接下载,但是其他的需要在OH源代码目录进行编译。
由于这里是arm64, 所以要编译一下Acts套件。
进入OH的源码根目录后:
$ cd test/xts/acts$ ./bu ...
rk3568移植主线内核
EnvBoard: Lubancat-2io
这篇文章需要用到之前移植的uboot和extlinux的基础知识。
Get source❯ git clone [email protected]:torvalds/linux.git
查看一下dts的内容:
❯ ls arch/arm64/boot/dts/rockchip/rk3568* | grep lubancatarch/arm64/boot/dts/rockchip/rk3568-lubancat-2.dts
主线是有lubancat-2的设备树的,这就很大的方便了我们,可以稍作修改设备树即可完美在2io上全适配。
内核config配置❯ ls arch/arm64/configsdefconfig hardening.config virt.config
这里并没有rk3568 evb板子的配置文件,所以我们就先使用defconfig就好,遇到什么问题再解决什么问题。
❯ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig❯ make ARCH=arm6 ...
rk3568的minipcie无法使用usb功能
From a8f5220957ebf1e7b45b9093319e4a5a9da13024 Mon Sep 17 00:00:00 2001From: Troy Mitchell <[email protected]>Date: Fri, 30 Aug 2024 14:11:28 +0800Subject: [PATCH 1/1] modify rk3568-hbis-p68.dtsi: add usb hub regulator node and the controling gpio that enables the hub.Signed-off-by: Troy Mitchell <[email protected]>--- .../rk3568/kernel/dts/rk3568-hbis-p68.dtsi | 86 +++++++++++++++++-- 1 file changed, 81 insertions(+), 5 deletions(-)diff --git a/device/board/hihope ...
野火uboot使用extboot启动内核流程
查看野火uboot参数:
=> printenv bootcmdbootcmd=run distro_bootcmd;boot_android ${devtype} ${devnum};boot_fit;bootrkp;
可以看到第一个命令是distro_bootcmd,事实上,野火的extboot也就是从这里启动的:
=> printenv distro_bootcmd distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
关于distro_bootcmd更详细的内容可以查看:https://blog.505218.xyz/2024/08/23/Rockchip-%E7%B3%BB%E5%88%97%E8%8A%AF%E7%89%87uboot-distro-cmd/
这里直接进入到bootcmd_mmc0,也就是从emmc启动,sd卡大同小异:
=> printenv bootcmd ...
rk3568移植uboot
EnvSystemt: Ubuntu 22.04
Content首先克隆仓库:
❯ git clone --depth=1 https://github.com/Caesar-github/u-boot# 这是rkbin仓库,至于为什么克隆见https://blog.505218.xyz/2024/08/23/rk3568%E7%A7%BB%E6%A4%8Duboot/❯ git clone --depth=1 [email protected]:Caesar-github/rkbin.git
执行以下命令:
❯ cd uboot && ./make.sh rk3568
生成以下文件:
❯ ls rk356x_spl_loader_v1.13.112.binrk356x_spl_loader_v1.13.112.bin❯ ls uboot.imguboot.img
其中rk356x_spl_loader_v1.13.112.bin是由rkbin仓库的ddr init.bin和miniloader合并成的,了解原理并手动合成可以看https://blog.505218.x ...
docker搭建的ha无法使用homekit bridge
Refhttps://juejin.cn/post/7075383203820732430
home assistant远程访问
根据链接创建内网穿透:https://sspai.com/post/79278
此时打开域名会显示如下信息:
查看home assistant的日志:
此时可以看到一个ip,记录下来。
打开homeassistant的配置文件:
vim # 文件末尾添加以下内容http: use_x_forwarded_for: true trusted_proxies: - <log中的ip地址>
重启ha,问题解决
Refhttps://cloud.tencent.com/developer/article/2260090
rk3568 uboot distro_cmd
bootcmd在uboot的shell中使用printenv命令可以看到bootcmd的字符串:
=> printenv bootcmdbootcmd=boot_android ${devtype} ${devnum};boot_fit;bootrkp;run distro_bootcmd;
命令解析: - boot_android: 查找并尝试启动安卓镜像。 - boot_fix: 查找并尝试启动fit格式镜像。 - bootrkp: 查找并尝试启动rk分区镜像。 - run distro_bootcmd: 这就是这篇文章的主角了,distro_bootcmd可以根据不同介质去启动kernel内核,比如kernel可以在sd卡,emmc上,都可以顺利启动。
以上提到的bootcmd可以在include/configs/rockchip-common.h中看到相关定义:
#if defined(CONFIG_AVB_VBMETA_PUBLIC_KEY_VALIDATE)#define RKIMG_BOOTCOMMA ...
Rockchip 系列启动流程解读
Soc启动流程Soc在上电之后,第一个执行的代码是芯片是BootRom,通常来说,SoC厂家都会做一个ROM在SoC的内部,这个ROM很小,里面固化了上电启动的代码(一经固化,永不能改,是芯片做的时候,做进去的);这部分代码呢,我们管它叫做BootROM,也叫作一级启动程序。
BootRom需要做的事情:初始化系统,CPU的配置,关闭看门狗,初始化时钟,初始化一些外设(比如 USB Controller、MMC Controller,Nand Controller等);
BootROM的代码除了去初始化硬件环境以外,还需要去外部存储器上面,将接下来可执行的程序读到内存来执行。
但此时dram还没有初始化完成,所以并不能直接读取程序到dram上执行,这时候芯片内部自带的sram就派上用场了,但sram造价高昂,所以通常内存容量较小,只能加载一小段程序到sram运行,这一小段程序只需要负责初始化dram。
初始化好dram之后将跳会到BootRom,BootRom再加载一段程序用以将uboot和trust复制到dram并运行。
上文提到了一个专业名词叫做trust,因为RK3399是ARM ...
OpenHarmony on rk3568使能can
EnvOH: v3.2.3chip: rk3568
Content首先查看源码中是否具有CAN_ROCKCHIP选项:
❯ find -name "Kconfig" -exec grep -n "CAN_ROCKCHIP" {} +❯
发现什么都没有..好吧,那看到官方的rk3568的补丁并没有打到这里,需要自己进行适配。
去rockchip的kernel仓库找到关于can的部分:https://github.com/rockchip-linux/kernel/blob/develop-5.10/drivers/net/can/rockchip/
进入到我们的内核工作目录,没有Makefile创建的可以见这篇文章:https://blog.505218.xyz/2024/08/16/rk3568%E7%A7%BB%E6%A4%8DopenHarmony-v3-2-3-%E7%B3%BB%E7%BB%9F%E7%A7%BB%E6%A4%8D/
将刚才仓库的文件无论用什么方式放到driver/net/can/rockchip目 ...