awtk/docs/hardware_req.md
2023-12-26 19:03:51 +08:00

6.3 KiB
Raw Blame History

#AWTK 硬件资源需求评估

一、CPU

CPU 的要求与 LCD 的尺寸关系很大如果不启用动画对于320x240x16的 LCD52M的32位CPU应该够用。

目前我们测试过的最低硬件配置是STM32F103(Cortex-M3内核 CPU 72 MH)更低的CPU只能支持更低尺寸的LCD了。

二、Flash 的需求

AWTK 基本代码(包括常用控件),在 STM32上编译之后大概 150K。字体、图片和输入法要看具体的应用了。

一般来说,至少要 256K FLASH不包括裸系统和输入法以及图片字体等资源

下列模块为 AWTK 可增加模块STM32F103等低端平台会禁止下列模块故无此FLASH开销

模块名称 FLASH大小 备注
PNGJPG 和 GIF 图片解码器 大约57.64KB
Truetype 字体解码器 大约27.3KB
标准的 UNICODE 换行算法 大约49.4KB
Google 拼音输入法 大约1.15MB
加载文件系统资源模块 大约7.1KB
启用 AGGE 作为矢量画布 大约21KB
窗口动画 大约9.42KB 窗口动画需要矢量画布功能支持

三、内存需求评估指南

假设:

  • LCD的宽度为LCD_W
  • LCD的高度为LCD_H
  • LCD的每像素占用的字节数为BPP

1.Framebuffer

  • 单 framebuffer 需要LCD_W * LCD_H * BPP

  • 双 framebuffer 需要2 * LCD_W * LCD_H * BPP

  • 三 framebuffer 需要3 * LCD_W * LCD_H * BPP

STM32F103等低端平台无需Framebuffer故无此内存开销。

2.窗口动画

  • 如果启用窗口动画,需要两个 framebuffer 大小的内存2 * LCD_W * LCD_H * BPP
  • 窗口动画需要开启矢量画布功能

STM32F103等低端平台禁用窗口动画故无此内存开销。

3.图片解码

  • 图片解码器解码的时候大约占用 2 * 图片宽* 图片高 * BPP 的内存。
  • 一般带 alpha 通道的图片解码后每像素占用4字节。
  • 不带 alpha 通道的图片解码后,如果定义 WITH_BITMAP_BGR565每像素占用2字节否则占用4字节。

STM32F103等低端平台直接使用位图编译到常量中故无此内存开销。

4.输入法

  • 配套的控件
  • Google 拼音输入大约占用700KB。

STM32F103等低端平台不启用输入法故无此内存开销。

5.字体

  • 字体文件本身大小。
  • 字体解码器大约200B
  • 长度为256的字体图片缓冲区的大约占用4.2KB。
  • 字体图片缓存大小(字体图片的大小会根据字号和字体形状来决定一个字体图片的内存大小)。

STM32F103等低端平台直接使用位图字体编译到常量中故无此内存开销。

6.控件

一般控件占用100B左右(64位系统会多一些)一般复杂度的应用程序控件占用内存的峰值小于100K。

对于低端平台,可以简化界面,关闭后台窗口,以减少内存的需求。

7.AGGE矢量画布

  • nanovg 作为前端大约占用18.3KB左右的缓冲区(64位系统会多一些)。
  • AGGE 作为后端大约占用300B左右。
  • AGGE 在计算时候会根据不同的效果会创建一些大小不等的缓冲区和临时变量具体需要看效果来决定一般效果峰值小于10K

STM32F103等低端平台不启用矢量画布故无此内存开销。

四、附录

1. AWTK 对应模块内存表:

功能名称 ROM RAM 说明
PNG JPG 和 GIF 图片解码器 WITH_STB_IMAGE 大约57.64KB 大于2 * 255KB + 16KB 一张16位色分辨率为480 * 272的图片内存为255KB
Truetype 字体解码器 WITH_STB_FONT 大约27.3KB 4.2KB+18.5KB 100个方正水云的18号字的内存大约为18.5KB长度为256的字体图片缓冲区的大约占用4.2KB
标准的 UNICODE 换行算法 WITH_UNICODE_BREAK 大约49.4KB 大于1.39KB
Google 拼音输入法 取消定义 WITHOUT_INPUT_METHOD 或者取消定义 WITH_NULL_IM 大约1.15MB 大于700KB
加载文件系统资源模块 WITH_FS_RES 大约7.1KB 0B
启用 AGGE 作为矢量画布 WITH_NANOVG_AGGE 大约21KB 大于18.4KB + 10KB AGGE 计算时候开辟内存保守估计峰值为10KB
窗口动画 WITHOUT_WINDOW_ANIMATORS 大约9.42KB 大于2 * 255KB 一块16位色分辨率为480 * 272的 framebuffer 为255KB
裁剪布局算法 WITHOUT_LAYOUT 大约3.64KB 0B
裁剪控件动画 WITHOUT_WIDGET_ANIMATORS 大约1.3KB 0B
裁剪剪切板算法 WITHOUT_CLIPBOARD 472B 0B
裁剪对话框高亮策略代码 WITHOUT_DIALOG_HIGHLIGHTER 大约1.46KB 0B