赞
踩
是启明智显针对工业、行业以及车载产品市场推出的系列HMI芯片,主要应用于工业自动化、智能终端HMI、车载仪表盘、两轮车彩屏仪表、串口屏、智能中控、智能家居、充电桩显示屏、储能显示屏、工业触摸屏等领域。此系列具有高性能、低成本的特点,支持工业宽温、2D加速、PNG解码、JPEG编解码引擎及屏幕高达60FPS的刷新,RS485\CAN\串口\网口等丰富灵活的接口以及SDK软硬件开源。主流芯片型号有Model3C、Model3A、Model3及Model4等,其中,Model3C更是以其个位数价格结合工业级品质,在市场中受到了广泛的追捧。
在烧录过程中,为了缓解用户因不清楚烧录进度而产生的焦虑,我们特别增加了进度条显示功能。以下将详细介绍这一功能的技术指导:
ZX 平台支持 SDCard / Udisk 烧录时显示进度条和数字百分比。进度条和数字百分比通过 CPU 进行绘制。 进度条默认居中,显示蓝绿两种颜色。数字百分比通过 fb console 实现,fb console 默认支持 32x32 点阵字体,ASCII 32 - 127。
在 zx-rtt-sdk 根目录下执行 scons –menuconfig, 进入 BootLoader 工程配置界面
- Baremetal APP options --->
- Bootloader options --->
- Upgrading --->
- [*] Upgrading by SD Card
- Board options --->
- [*] Using Display Engine (DE)
- Display Parameter --->
配置显示子系统参数,详情参考 参数配置 章节,屏幕参数需要与项目工程保持一致(背光除外)
BootLoader 工程需要
GPIO
控制背光,不支持 PWM 调节亮度,其余屏幕参数需要与项目工程保持一致framebuffer format 支持 argb8888 和 rgb565, 配置项
select framebuffer format (rgb565) --->
, 推荐 rgb565 格式 ,内存占用小
烧录进度条支持三种场景
同时显示进度条和 fb console
只显示进度条
只显示 fb console
- Baremetal APP options --->
- Bootloader options --->
- Commands --->
- [*] boot progress bar
- (0) progress bar rotate degress (0/90/270) (NEW)
- [ ] only fb console (NEW)
自定义配置支持修改进度条颜色、进度条宽高、进度条位置、fb console 字体颜色、fb console 字体大小。
自定义配置需要修改 SDK 源代码,源码路径:
application/baremetal/bootloader/cmd/progress_bar.c
修改宏定义
- #define BAR_BACKGROUND_COLOR 0x00, 0xA2, 0xE9 // r, g, b
- #define BAR_FILL_COLOR 0x18, 0xD4, 0x0A
进度条高度宏定义,以 pixel 为单位
#define BAR_HEIGHT 35
进度条宽度宏定义,进度条宽度自适应 LCD 分辨率,默认为 LCD 宽度的 5/6,配置不同的比例调整进度条宽度
- #define WIDTH_SPLIT_NUMERATOR 5
- #define WIDTH_SPLIT_DENOMINATOR 6
修改进度条绘制逻辑,默认居中显示
- void aicfb_draw_bar(unsigned int value)
- {
- ...
- bar_x = (info.width - width) / 2; // 居中显示
- bar_y = (info.height - height) / 2;
- ...
- }
fb console 支持 16 种颜色,通过宏定义指定
- enum color_idx {
- CONSOLE_BLACK = 0,
- CONSOLE_RED,
- CONSOLE_GREEN,
- CONSOLE_BROWN,
- CONSOLE_BLUE,
- CONSOLE_MAGENTA,
- CONSOLE_CYAN,
- CONSOLE_LIGHT_GRAY,
- CONSOLE_GRAY,
- CONSOLE_LIGHT_RED,
- CONSOLE_LIGTH_GREEN,
- CONSOLE_YELLOW,
- CONSOLE_LIGHT_BLUE,
- CONSOLE_LIGHT_MAGENTA,
- CONSOLE_LIGHT_CYAN,
- CONSOLE_WHITE,
- CONSOLE_COLOR_COUNT
- };
- #define CONSOLE_COLOR_FG CONSOLE_LIGHT_GRAY
- #define CONSOLE_COLOR_BG CONSOLE_BLACK
修改 fb console 逻辑,默认居中显示
- void aicfb_draw_bar(unsigned int value)
- {
- ...
- console_x = info.width / 2; // 居中显示
- console_y = bar_y + BAR_HEIGHT + 5;
- ...
- }
字体数据源
fb console 字体大小修改需要提供新的字体点阵数据源,数据源保存路径:
application/baremetal/bootloader/include/video_font_data.h
可通过点阵字库工具导出点阵数据,推荐第三方开源工具 点阵字库生成工具
将数据源复制到数组中,并修改数据类型,默认数据类型为 uint32_t
。
- static uint32_t video_fontdata[VIDEO_FONT_SIZE] = {
- ...
- ...
- };
- #define VIDEO_FONT_CHARS 96 // 支持的字符个数
- #define VIDEO_FONT_WIDTH 32 // 字体宽度,以 pixel 为单位
- #define VIDEO_FONT_HEIGHT 32 // 字体高度,以 pixel 为单位
节选部分代码,需要重新指定数据索引,数据类型和掩码
- static void aicfb_console_putc(struct aicfb_screeninfo *info,
- unsigned int x, unsigned int y, char ch)
- {
- int pbytes = info->bits_per_pixel / 8;
- int i, row;
- void *line;
-
- line = (unsigned char *)(info->framebuffer + y * info->stride + x * pbytes);
-
- for (row = 0; row < VIDEO_FONT_HEIGHT; row++) {
- unsigned int idx = (ch - 32) * VIDEO_FONT_HEIGHT + row; // 根据新数据源重新索引
- uint32_t bits = video_fontdata[idx]; // 修改数据类型
-
- switch (info->format) {
- case MPP_FMT_RGB_565:
- {
- uint16_t *dst = line;
-
- for (i = 0; i < VIDEO_FONT_WIDTH; i++) {
- *dst++ = (bits & 0x80000000) ? colour_fg : colour_bg; // 根据数据类型修改掩码 0x80000000
- bits <<= 1;
- }
- break;
- }
- case MPP_FMT_ARGB_8888:
- {
- uint32_t *dst = line;
-
- for (i = 0; i < VIDEO_FONT_WIDTH; i++) {
- *dst++ = (bits & 0x80000000) ? colour_fg : colour_bg; // 根据数据类型修改掩码 0x80000000
- bits <<= 1;
- }
- break;
- }
- }
- }
Bootloader options --->
当前未处于 BootLoader 工程,需要切换到 BootLoader 工程
BootLoader 工程编译后需要再次编译项目工程
检查 zx-rtt-sdk 版本,v1.0.4 及以上版本支持 fb console
BootLoader 工程需要 GPIO 控制背光,不支持 PWM 调节亮度
检查 display 参数配置,确认 BootLoader 工程与项目工程配置一致(背光除外)
BootLoader 内存不足
推荐 RGB565 格式,减少内存占用
修改 BootLoader 工程的 ld 链接文件,增大内存 heap
以 ZXM3A7D0_bootloader 工程为例,其 ld 链接文件路径为:
application/baremetal/bootloader/ldscript/m3a_bootloader_gcc.ld.S
调整内存 heap
MEMORY { /* The last 256KB for bootloader */ SRAM_SW : ORIGIN = 0x30040000, LENGTH = 0x8000 PSRAM_BOOT_SW : ORIGIN = 0x40400100, LENGTH = 0x200000 }
备注
部分工程支持 menuconfig 配置内存 heap,注意是否存在宏定义
未调整 BootLoader 加载/启动地址,BootLoader 无法正确运行。
以 ZXM3A7D0_bootloader 工程为例,调整 BootLoader 加载/启动地址
//target/m3a/ZXM3A7D0/pack/image_cfg.json "bootloader.aic": { ... "loader": { ... "load address ext": "0x40400000", "entry point ext": "0x40400100", }, ...
fb console 数据类型与数据源不匹配。
当前 fb console 框架支持宽度为
8/16/32/64 的字体
,对应的数据类型分别为uint8_t/uint16_t/uint32_t/uint64_t
数据掩码与数据类型不匹配
数据类型
uint8_t/uint16_t/uint32_t/uint64_t
对应的数据掩码分别为0x80/0x8000/0x80000000/0x8000000000000000
通过引入进度条显示功能,我们为用户提供了一个更加友好、高效的烧录体验。在未来的发展中,我们将继续优化这一功能,并探索更多创新的技术解决方案,以不断提升用户满意度和体验。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。