Exist OS APP开发指南
本仓库主要用于存放APP开发相关的教程、API用法以及示例工程项目。
应用开发环境和系统开发环境类似,安装CMake、gcc-arm-none-eabi 10.3版本、Ninja/GNU Make并配置好环境变量即可。
项目的创建只需将 example_0_empty 该空白工程复制过来修改为自己的项目名即可。
APP运行时需要调用相关的系统函数以及运行库,引出编译前需将系统的符号表 sys_symtab.txt 放置在项目工程源码目录下(即.crt.c所在目录)
example_0_empty 实现了一个最小的Exist OS APP构建过程,APP程序从main.c的main函数开始执行,并展示了系统简单API的使用(如直接写屏绘图、写出文本以及按键API)。
example_1_LvGL 示范了系统LvGL库的使用,实现了一个GUI窗口程序的运行流程。
example_2_TinyGL 提供了引入外部图形库TinyGL(OpenGL子集)渲染3D图形的示范,以及FatFS文件系统操作文件的简单示例。
example_3_doom 演示了较大型app如doom移植的示例工程。
example_4_multithread 提供一个使用FreeRTOS进行多线程编程的示范。
example_5_coremark 为Core Mark CPU跑分测试。
printf等标准输出会重定向到USB串口中显示,可以使用相应的串口软件进行观看输出日志。
系统自带相关库以及提供的API函数声明均在项目工程的include目录下,include/existosapi内为系统提供最基本功能的API,包括屏幕原生绘图,按键获取等。syscall.h为系统最底层API,提供了如Flash FTL层扇区读写、CPU电源管理、频率控制等API。
void api_vram_initialize(uint8_t *vram_addr);初始化帧缓冲区
vram_addr : 用户提供帧缓冲区地址,可以通过malloc或定义数组。
void *api_vram_get_current(void);获取已经初始化帧的缓冲区。
void api_vram_flush(void);刷新显示帧缓冲区,一般情况下写入帧缓冲区时屏幕不会显示,需要通过该函数刷新方可显示。
void api_vram_clear(uint16_t color);用给定颜色填充整个缓冲区。
void api_vram_put_char(int x0, int y0, char ch, int fg, int bg, int fontSize);在给定坐标(x0,y0)输出一个字符ch, fg为前景色(即字体颜色),bg为背景色,fontSize字号可选8、12、16。
void api_vram_put_string(int x0, int y0, char *s, int fg, int bg, int fontSize);在给定坐标(x0,y0)输出一个字符串s, fg为前景色(即字体颜色),bg为背景色,fontSize字号可选8、12、16,字符串超出屏幕右边后会到下一行从头继续输出。
void api_vram_set_pixel(uint32_t x, uint32_t y, uint8_t c);设置给定坐标(x,y)处的像素点颜色。
void api_vram_draw_HLine(int y, int x1, int x2, unsigned short c);在y处绘制一条从x1到x2颜色为c的水平线。
void api_vram_draw_VLine(int x, int y1, int y2, unsigned short c);在x处绘制一条从y1到y2颜色为c的垂直线。
void api_vram_draw_line(int x1, int y1, int x2, int y2, unsigned short c);从(x1,y1)到(x2,y2)绘制一条颜色为c的线段。
void api_vram_fill_rect(int x, int y, int w, int h, unsigned short c);以(x,y)为左上角填充一个宽w高h颜色为c的矩形
int api_get_key(int check_key);获取按键输入或状态。
若check_key为-1,则进入阻塞状态无限等待,直到有按键按下后返回键值(键值见keyboard_gii39.h)。
若check_key为某个键值,则立即返回所给键值在该函数调用时刻是否按下。






