【Model系列芯片】
是启明智显针对工业、行业以及车载产品市场推出的系列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 工程配置界面
使能 SDCard/Udisk 烧录
Baremetal APP options --->
Bootloader options --->
Upgrading --->
[*] Upgrading by SD Card
使能 Display Engine
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 字体颜色
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 显示位置
修改 fb console 逻辑,默认居中显示
void aicfb_draw_bar(unsigned int value)
{
...
console_x = info.width / 2; // 居中显示
console_y = bar_y + BAR_HEIGHT + 5;
...
}
fb console 字体大小
字体数据源
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 为单位
修改 fb console 逻辑
节选部分代码,需要重新指定数据索引,数据类型和掩码
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;
}
}
}
常见问题
1. menuconfig 配置中未出现 BootLoader options 选项
Bootloader options --->
当前未处于 BootLoader 工程,需要切换到 BootLoader 工程
2. 重编 BootLoader 工程后配置未生效
BootLoader 工程编译后需要再次编译项目工程
3. 烧录过程未显示 fb console
检查 zx-rtt-sdk 版本,v1.0.4 及以上版本支持 fb console
4. 烧录过程屏幕不亮
BootLoader 工程需要 GPIO 控制背光,不支持 PWM 调节亮度
检查 display 参数配置,确认 BootLoader 工程与项目工程配置一致(背光除外)
5. 串口输出 alloc fb0 failed
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,注意是否存在宏定义
6. 调整内存 heap 起始地址后无法烧录
未调整 BootLoader 加载/启动地址,BootLoader 无法正确运行。
以 ZXM3A7D0_bootloader 工程为例,调整 BootLoader 加载/启动地址
//target/m3a/ZXM3A7D0/pack/image_cfg.json "bootloader.aic": { ... "loader": { ... "load address ext": "0x40400000", "entry point ext": "0x40400100", }, ...
7. fb console 字体显示偏瘦或颜色不对
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
通过引入进度条显示功能,我们为用户提供了一个更加友好、高效的烧录体验。在未来的发展中,我们将继续优化这一功能,并探索更多创新的技术解决方案,以不断提升用户满意度和体验。