arm 2D 移植到lvgl(v8)

Arm-2D 本身并非GPU,而是一个 面向微控制器的2DGPU的硬件抽象层 ,支持从Cortex-M0到最新的Cortex-M85等所有的Cortex-M处理器。

Arm-2D提供两种加速方式加速LVGL9: 同步模式(Synchronouse Mode) 和 异步模式(Asynchronous Mode) 。

  • 当芯片支持 Helium 或者 ACI(Arm Custom Instruction) 时,推荐使用 同步模式 来加速LVGL;

  • 当芯片中存在Arm-2D所支持的2D GPU时,(例如:基于Arm DMAC-350所派生出来的2D GPU),推荐使用 异步模式 来加速LVGL。

上述来源于Arm-2D GPU (Arm-2D 图形处理器) — LVGL 文档

移植过程

配置宏

        要使 LVGL 适配 ARM-2D,需要在 lv_conf.h 配置文件中设置相应的宏。根据 LVGL 的文档 ,可以通过以下方式启用 ARM-2D 加速:

        在 lv_conf.h 配置文件中,设置宏 LV_USE_GPU_ARM2D 为 1 来启用 ARM-2D 加速。Arm-2D提供两种加速方式加速LVGL,根据需要进行选择:

  1. 同步模式:如果处理器支持 Helium 或 ACI(Arm Custom Instruction),可以在 lv_conf.h 中将宏 LV_USE_DRAW_ARM2D_SYNC 设置为 1,并把 LV_DRAW_SW_ASM 设置为 LV_DRAW_SW_ASM_HELIUM 来启用 ARM-2D 的同步加速模式。

  2. 异步模式:如果设备中包含 ARM-2D 支持的 2D GPU(例如基于 Arm DMAC-350 的 2D GPU),可以在 lv_conf.h 中将宏 LV_USE_DRAW_ARM2D_ASYNC 设置为 1 来启用 ARM-2D 的异步加速模式。

代码移植

首先下载Arm-2D代码,下载后是Arm-2D-main包,我将\Arm-2D-main\Library\Source里面的code和cmsis放在一起的,后面打算调整位置。

主要移植了Arm-2D的source code和头文件

还需要将Library\Include\templatearm_2d_cfg.h文件拷贝到lvgl\src\draw\arm2d这个目录

编译

1.下载的arm 2d中使用了restrict 关键字,导致有部分函数出现编译问题,我是将报错的地方关键字去掉的,改项目中的太麻烦。

在 C99 标准中,restrict 关键字用于告诉编译器,该指针是访问所指内存的唯一方式,这样编译器可以进行更多的优化。如果两个非 restrict 指针指向相同的内存,编译器允许它们之间可能的别名;但如果其中一个是 restrict 指针,编译器则不允许它们之间有别名,因为这可能导致未定义行为。

2.缺失数学库函数,开启cmsis数学库的宏; 

CONFIG_CMSIS_DSP=y

CONFIG_CMSIS_DSP_FASTMATH=y

3.cmsis版本和arm 2d版本没有匹配上,下载了最新版本的cmsis(CMSIS Version 6),替换了部分文件。不记得替换的什么文件了,所以直接用最新的吧。

4.需要开启GNU99 

5.有部分函数冲突,如__ROR 函数被重复定义,注释掉none.h中的__ROR 定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值