移植常见问题
用户数据
生成用户数据bin镜像时,需要考虑flash_map.h中的用户数据地址。通常,生成脚本中的地址与flash_map.h中的用户数据地址一致。如果由于mppgtool要求,用户数据bin需要添加图像数据头,则生成脚本中的地址必须增加图像数据头大小。
JS分配堆内存
JS(javascript)包含在GUI模块中,JS使用的堆空间可能会受到资源限制,导致malloc失败。如果SoC支持psram特性,可以将此堆空间重定位到psram。具体信息请参考api void *context_alloc(size_t size, void *cb_data_p)
。
喂狗
GUI任务不支持喂狗功能,因此应用程序应在APP注册的hook函数中进行喂狗操作,并由GUI使用。注册函数为 void gui_task_ext_execution_sethook(void (*hook)(void))
.
不支持FPU
如果SoC不支持FPU,一些头文件和代码不应该包含在内,例如RTL8763EP。
文件系统
SoC需要通过文件系统从flash中读取图像和字体资源,文件系统中的起始地址应与用户数据生成脚本中的地址一致。GUI已经提供了相关文件,其中起始地址为 ROMFS_ADDR
.
realloc函数
GUI需要此函数,但如果使用C库的realloc函数会导致hardfault,应用程序可以使用malloc函数代替realloc函数。
Flash设置
Flash速度模式应设置为4位模式;根据芯片的能力,Flash时钟应设置为更高的值。
CPU频率
根据芯片的能力,CPU频率应设置为更高的值。
SCONS版本
需要特定的SCONS版本,请使用 pip install scons==4.4.0
命令进行下载。