protothreads协程浅析
protothreads是一个C语言对协程的巧妙精简实现, 可应用于资源不足的单片机系统。对于不移植嵌入式操作系统的单片机程序, 可替代原先复杂的for大循环实现, 应用协程可优化程序结构, 提高可读性。(用protothreads在C51和STM32F1片子上应用,没有问题)
protothreads浅析协程是一种轻量级的线程,通过用户态调度和主动交出控制权的方式,提高了程序的性能和响应速度。protothreads仓库地址
使用协程的优势:第一个是协程的执行效率高, 因为子程序切换不是线程切换, 而是由程序自身控制。因此没有线程切换的开销, 和多线程相比, 线程数量越多, 协程的性能优势就越明显。第二个是不需要多线程的锁机制, 因为只有一个线程, 也不存在同时写变量冲突, 在协程中控制共享资源不加锁, 只需要判断撞他就好, 所以执行效率比多线程高很多。
数据结构protothreads提供了三种实现方式,可通过宏来配置。默认是switch/case实现方式, 其次可通过 PT_USE_SETJMP 或 PT_USE_GOTO来切换实现方式。
12345678910/* ...
交叉编译LVGL进度条
交叉编译, LVGL 进度条小工具。
编译环境:Linux ubuntu 4.15.0-122-generic #124~16.04.1-Ubuntu SMP Thu Oct 15 16:08:36 UTC 2020 x86_64 x86_64 GNU/Linux目标板:Linux linaro-alip 4.19.232 #113 SMP Sat Apr 20 19:13:09 CST 2024 aarch64 GNU/Linux
编译环境整体的方案是 LVGL8.3 + SDL2 + FreeType。
背景及资料需求开发一小的进度条工具, 运行在”智慧能源单元”上。进度条工具, 通过文件通信方式, 通信方式 文件名: /tmp/lvgl_comm 通信格式: {state},{progress},{text}
state: 进度条工具状态, 0 隐藏; 1 显示progress: 进度, 0-100text: 提示文案
提供资料libSDL2-2.0.so.0.10.0applesimhei.otflibfree ...