编译环境
- 主板: OrangePi-3b
- 芯片: RK3566
- 环境: Debian(12-x86_64) + Docker(Debian:12)
内容说明
OrangePi-3b
搭载了一颗 紫光展锐
的 WIFI & BT
一体的无线模组,型号是 UWE5622
。
目前主线 Kernel
当中没有对应的驱动,需要移植一下。
OrangePi-3b
搭载了一颗 紫光展锐
的 WIFI & BT
一体的无线模组,型号是 UWE5622
。
目前主线 Kernel
当中没有对应的驱动,需要移植一下。
研究HTTPS的双向认证实现与原理,踩了不少坑,终于整个流程都跑通了,现在总结出一篇文档来,把一些心得,特别是容易踩坑的地方记录下来。
买了这个 OrangePi 3b
之后,顺手给它配一个5寸的屏幕。
淘宝里面找到一款设计给树莓派使用的屏幕,刚好 OrangePi 3b
的打孔位置和这个屏幕完全匹配,所有果断入手。
但是,这块屏实测默认只有香橙派的 Android
固件能够点亮它,其他的都不能直接点亮(LCD 屏通常需要特殊适配),不过至少也证明硬件是可以兼容的。
这就来适配一下。
搞了这么久,U-Boot
、Kernel
和 RootFS
这三大件基本已经搞出来了,接下来的目标就是适配各种特殊硬件。
比如我给这个香橙派配了一个屏幕,使用 MIPI
接口的。目前还是点不亮的,接下来就是来适配这个。
这一篇文章主要是记录一下之前使用到的编译环境,方便今后快速调用。
一般嵌入式系统构建根文件系统会使用 buildroot
这个项目,构建的根文件系统足够小。但这个项目构建根文件系统时严重依赖外网, 导致编译过程很慢。
为了能够使用包管理器安装各种软件包,也可以选择基于强大的 Debian
来构建根文件系统。
构建可以分为两部分,分别是构建 rootfs
文件系统和构建 initramfs
文件系统。前者是 Linux
发行版,后者给 Kernel
作为 ramfs
使用。
个人理解 initramfs
的主要作用是方便在挂载真正的根分区时执行一些用户空间的操作,比如磁盘检查等操作,还是很有必要存在的。
把 U-Boot
搞到差不多了,现在转战 Kernel
。
香橙派
和 瑞芯微
的 Kernel
都经过了一定程度的修改。
这里就直接上主线 Kernel
,另外两个主要是用来对比学习。
要研究 U-Boot
,就不得不学习一下芯片是如何启动的。
玩过单片机的朋友都知道,单片机中基本是一个芯片内置了 CPU
、MEM
、FLASH
,单片机的内置引导程序能够直接让 CPU
调用 MEM
和 FLASH
,用户只需要将程序写入 FLASH
就能开始运行。
但是类似 RK3566
这一类芯片则不同,它们更像是PC的CPU,芯片内除了 CPU
之外只有一些额外的控制器,不能给芯片本身下载程序;需要搭配外设才能运行,最主要的有 DRAM
和 eMMC
下挂的各种存储设备;比如 OrangePi-3b
则是外挂了一个 DDR4
内存,存储则是支持 SDCard
、eMMC
、NVME
等设备,使用的使用用户程序则是存放在这些存储设备中。
和单片机相比,RK3566
运行指令存在于外扩的各种存储设备中,这些设备不是 XIP
设备,访问它们需要经过 eMMC
控制器,并且将其指令复制到 DRAM
中再运行;同时外扩的 DRAM
规格也各不相同,芯片难以在内嵌固件中初始化这些设备;现代芯片还需要支持芯片级的加密支持,这些任务组合在一起很难由片内固件和 SRAM
来完成(也有可能是兼容之前的方案故意为之,毕竟之前由于工艺和成本的原因,很难在片内集成大容量的 FLASH
和 SRAM
)。
XIP:eXecute In Place,即芯片内执行,指应用程序可以直接在
FLASH
闪存内运行,不必再把代码读到系统DRAM
中。FLASH
内执行是指NOR FLASH
不需要初始化,可以直接读取FLASH
中的指令。
Orange Pi 3B
采用了瑞芯微 RK3566
四核64位处理器,22nm
先进工艺,主频最高可达 1.8GHz
,集成 ARM Mali G52 2EE
图形处理器,支持 OpenGL ES 1.1/2.0/3.2
、OpenCL 2.0
、Vulkan 1.1
,内嵌高性能 2D
加速模块;内置 0.8Tops
算力的 AI
加速器NPU
,支持 Caffe/TensorFlow/TFLite/ONNX/PyTorch/Keras/Darknet
等主流架构模型的一键转换;VPU可实现 4K@60fps H.265/H.264/VP9
视频解码和 1080P@100fps H.265
视频编码,1080P@60fps H.264
视频编码,支持 8M ISP
和 HDR
;拥有 2GB/4GB/8GB(LPDDR4/4X)
,支持 16GB/32GB/64GB/128GB/256GB
的eMMC模块、支持 16MB/32MB SPI Flash
,具有 Wi-Fi5、BT5.0
,支持 BLE
。
Orange Pi 3B
引用了相当丰富的接口,包括 HDMI输出
、M.2 M-KEY(可选
)、TF卡槽
、千兆网口
、USB2.0
、USB3.0
、3.5mm耳机插孔
、MIPI DSI接口
、eDP接口
、MIPI CSI摄像头接口
、多功能40 Pin扩展接口
等,可广泛适用于电视盒子、高端平板、边缘计算、人脸识别、智能安防、智能家居等领域,赋能丰富的AI应用和物联网场景。
Traceback (most recent call last):
File "/home/liux/projects/android_lineage/.repo/repo/main.py", line 56, in <module>
from subcmds.version import Version
File "/home/liux/projects/android_lineage/.repo/repo/subcmds/__init__.py", line 35, in <module>
mod = __import__(__name__,
^^^^^^^^^^^^^^^^^^^^
File "/home/liux/projects/android_lineage/.repo/repo/subcmds/help.py", line 20, in <module>
from formatter import AbstractFormatter, DumbWriter
ModuleNotFoundError: No module named 'formatter'
reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d “” /f
reg delete “HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}” /f