多核结构 设备上每个核心都可以根据用户需求运行不同的 OS。 A53UP: Huawei LiteOS
A73BL: Linux(big.LITTLE) -> Buildroot
DSP0: LiteOS-m
DSP1: Liteos-m
M7: Huawei LiteOS 或者不运行 OS
本节主要介绍"A53UP"和"A73BL"同构和异构下的资源分配的区别以及示例介绍。 PS: A53UP 代表单核的 A53 那个 CPU; A73BL 代表双核 A73 和双核 A53 组成的四 核 CPU (有些文档会描述为A53MP + A73MP意思相同)。 上述对应硬件资源的命名与文档一一对应,但是同步更新可能有延时请以 PDF 最新文档为最终标准。 多核结构 多核异构 "多核异构"主要指 A53UP 和 A73BL 上硬件资源分配上结构的差别。A53UP 可以 分配如 Vi、Vo、Vdec、Hdmi 等等的一些硬件资源,主控 CPU A73BL 专注于 UI 和算法相关的工作。以下是异构的结构图: 官方提供了多核异构的固件和源码,烧录过程和正常烧录相同。固件只做示例展 示,A73BL 上运行"QT GLES"的示例,通过"GPU"把图形绘制到"Framebuff"上, 由 A53UP 控制 Vo、Vpss 和 Hdmi 把图形显示道 Hdmi 屏幕上。 PS: Hi3559av100 平台和把内存分为多个段,这些内存分别作用于不同的 OS、多核 间通信和媒体处理。详细请参考《内存分配》一节。 除了官方提供的示例固件,在源码中 MPP sample 已经适配了 Huawei LiteOS, 可以直接编译烧录。 异构模式下 A53UP Huawei LiteOS 在 Uboot 阶段加载('mmc read 0 0x45000000 0x1C5A800 0x3000; go_a53up 0x45000000)。 多核非异构 "多核非异构"中 A73BL 占据了所有硬件资源,而 A53UP 仅用于运行用户的应用 程序。以下是非异构的结构图: 多核非异构开发起来比较简单,官方非异构固件中只在 A73BL 上运行了" Buildroot + QT",A53UP 上没有运行 OS 需要的用户可以自行编译加载 PS: Hi3559av100 平台和把内存分为多个段,这些内存分别作用于不同的 OS、多核 间通信和媒体处理。详细请参考《内存分配》一节。 非异构模式下 A53UP Huawei LiteOS 在进入系统后通过 load_liteos 命令进行 加载 多核加载 这里主要描述"A53UP"的加载方式,其他的核心加载请参考文档。 异构模式下需要在 uboot 下通过go_a53up进行加载。 编译好的 bin 文件烧写 到对应分区。 通过 mmc read 从存储中读镜像文件到内存当中。 通过 go_a53up 0x45000000 (读入的内存地址)加载。 同构模式下需要在进入系统之后加载。 根军《内存分配》一节计算出,加载 A53UP 的内存地址(即FCONFIG_LITEOS_TEXT_OFFSET之后,4G 版本默认 0x131000000)。 把编译好的镜像拷贝到设备上。 load_liteos 0 0x131000000 ./xxx.bin 加载镜像。 PS: m7 的加载方式类似,具体请参考 PDF 文档。 这里所提及到的 bin 文件和镜像是指源码编译出来用于 A53UP 启动的 Huawei LiteOS 镜像。 参考《源码编译》一节,使用 ./build.sh liteos_a53 可以编译出镜像,镜像 保存在 output/liteos 中。 多核通信 多核间消息的传递使用" IPCM",图像帧数据的传递可以只传图像帧数据的物理地 址到其他的核。IPCM 是 Inter-Processor Communication Module(多核通信模 块)的简称。用于实现 A73BL、A53UP、DSP、Cortex-M7 等相互之间的通信。为 了方便用户的使用,在 IPCM 之上又实现了"HiSysLink"模块并且提供相应 API, 用于管理消息和数据的传输。具体通信方式: virt-tty 命令相当于开启一个虚拟串口,当 A53UP 的 Huawei LiteOS 加载成 功后,/dev/virt-tty 会生成 a53 设备节点,运行 virt_tty a53 就能进入 Huawei LiteOS 了 ~ # virt-tty Usage: virt_tty eg. virt_tty m7 is the device node in /dev/virt-tty sharefs 命令相当于把 A73BL 的文件夹共享到其他核中。当 A53UP 加载成功后 ,并且有初始化 sharefs 在执行 sharefs & 后,使用 virt-tty 进入 Huawei LiteOS 在根目录就会发现 /sharefs 挂载的目录了。sharefs 挂载的目录支持 open/read/write/close、cd/ls/stat 等文件操作。 HiSysLink ,使用 HiSysLink 请参考 API 介绍文档。