本文介绍了在STM32F407上移植LVGL图形库的方法,以及LCD屏幕的型号和驱动程序的修改。LVGL是一个免费开源的图形库,提供了创建嵌入式GUI所需的一切。它具有丰富的图形组件和高级的图形引擎,支持多种输入设备和多显示设备。LVGL不依赖特定的硬件平台,可以在任何显示屏上运行。文章还提供了接线说明和代码下载地址。
FreeRTOS是一个高度可定制和可剥夺的多任务内核,允许用户创建多个独立的任务。它提供了实时操作系统所需的各种功能,包括资源管理、同步和任务通信等。通过CMSIS-RTOS接口,可以方便地移植FreeRTOS。本文介绍了创建任务和事件的方法,并展示了任务间的简单通信。
本文介绍了瑞米派(Remi Pi)开发板的快速入门教程,包括LVGL显示、RT-Linux实时补丁、Ethercat主站和FreeRTOS应用开发。同时列出了内核驱动各个模块的源码路径。
FreeRTOS中创建和删除任务时,使用的是静态分配的内存,而不是动态分配的内存。内存分配可以分为静态分配和动态分配两种方式。FreeRTOS的内存是在FreeRTOSConfig.h文件中分配的一个全局数组,创建任务、信号量、队列等都会调用这个堆栈。删除任务时会调用vPortFree()函数释放对应的内存。
FreeRTOS任务切换的代码占据了整个代码的一半,通过任务切换找到优先级最高的就绪任务并让其获得CPU运行权。任务切换有两种方法:执行系统调用和系统节拍时钟中断。PendSV中断通过向中断状态寄存器写入1来产生。任务切换过程中保存和恢复寄存器值,更新任务堆栈指针。任务切换方法可以是通用方法或特殊方法,特殊方法使用硬件提供的计算前导零指令选择下一个要执行的任务。
FreeRTOS的信号量包括二进制信号量、计数信号量、互斥信号量和递归互斥信号量。信号量的API函数都是以宏的方式实现的,使用了现有的队列机制。创建信号量需要包含semphr.h头文件。二进制信号量、计数信号量和互斥量的创建API函数是独立的,但是获取和释放API函数是相同的;递归互斥量的创建、获取和释放API函数是独立的。释放信号量使用xSemaphoreGive()函数,获取信号量使用xSemaphoreTake()函数。递归互斥量可以重复获取和释放。
FreeRTOS从V9.0.0开始,应用程序可以完全静态分配,无需堆内存管理器。FreeRTOS提供了五个示例实现pvPortMalloc()和vPortFree(),分别是heap_1、heap_2、heap_3、heap_4和heap_5。heap_1最简单,不允许释放内存;heap_2允许释放内存,但不能合并相邻的空闲块;heap_3使用标准库函数malloc()和free(),保证线程安全;heap_4合并相邻的空闲块以避免碎片;heap_5可以跨多个不相邻的内存区域扩展堆的能力。
本文介绍了RTOS任务状态机的概念和API的作用,包括任务状态的四种类型和进入/退出挂起态和阻塞态的方法。正确理解任务状态对于正确使用RTOS很重要。
本文介绍了四种常见的信号灯:计数信号灯、二值型信号灯、互斥信号灯和递归互斥信号灯。计数信号灯用于限制线程访问数量,二值型信号灯用于同步线程运行,互斥信号灯用于确保多个线程不能同时访问共享资源,递归互斥信号灯提供递归互斥锁的API。每种信号灯都有相应的API函数和示例代码。
本文记录了作者在使用S32K144芯片过程中遇到的问题,并分享了一些使用经验。作者选择使用S32 Design Studio for Arm版本2.2进行开发,但觉得这个工具不太方便。作者尝试过自己移植freertos,但后来发现直接使用软件更方便。作者介绍了如何在工程中配置freertos,并提到可以参考之前的freertos系列文章。
本文讨论了在使用RTOS时遇到的时钟异常问题。经过问题定位和分析,发现问题出现在configSYSTICK_CLOCK_HZ的定义上。解决办法是取消对该宏的定义。总结指出,在RTOS中出现内核时钟异常时,应首先检查Systick配置问题。
定时器是MCU的外设之一,可以执行周期性处理任务。FreeRTOS提供了软件定时器功能,精度较硬件定时器低,但足够普通任务使用。定时器服务任务处理定时器命令队列中的命令。配置需在FreeRTOSConfig.h中设置。软件定时器分为单次和周期定时器,单次定时器执行一次回调函数后停止,周期定时器会自动重启。可通过API函数复位、创建、开启和停止软件定时器。
FreeRTOS是一个灵活可裁剪、可抢占的多任务内核,没有任务数量限制。任务之间相互独立,互不干扰。FreeRTOS提供了实时操作系统所需的所有功能,包括任务通信。可以使用现成的轮子如CMSIS-RTOS进行进一步封装,方便移植。可以通过任务句柄实现任务通信,使用osEventFlagsWait函数等待信号,使用osEventFlagsSet函数发送信号。
本文介绍了在FreeRTOS中创建任务所需的堆栈分配量的计算方法。堆管理方式为heap_4,通过为系统资源分配堆来实现内存管理。计算任务所需的堆栈大小和可用堆的大小将有助于确定创建任务所需的合适堆栈分配量。任务堆栈用于存放任务的变量数据,包括任务自身需要的空间和应用程序临时变量。建议根据实际情况分配堆栈大小。
本文介绍了Cortex-M3处理器中断和FreeRTOS中断优先级配置方面的内容,包括STM32的NVIC和中断输入向量表,中断和异常的区别,以及FreeRTOS中断优先级配置的问题。
EW2020是在德国举办的嵌入式世界大会,μC/OS将在会后免费开源供商业使用,Silicon Labs计划提供技术支持。FreeRTOS升级至V10.3.0,加强了对RISC-V和ARM内核的支持。MWC大会因新型冠状病毒肺炎疫情取消。
Foreword Debug遇到一个诡异情况,之前没注意过 单步失效 简单说系统里有很多地方在read,但是debug的那个read,在进入read内部以后,会出现整个堆栈指针都跳变成另外一个线程中read流程 ssize_t read(struct file *filep, void *buf, size_t nbytes) { struct inode *inode; int...
本文介绍了FreeRTOS的开发笔记,包括参考与致谢以及下载安装的步骤。
本文分享了 FreeRTOS 开发笔记的参考与致谢,提供了官方网站和 STM32F429 FreeRTOS 开发手册的链接,以及下载最新安装器的步骤。
本文介绍了FreeRTOS的开发笔记,提供了参考和致谢的链接,以及STM32F429 FreeRTOS开发手册的链接。同时提供了下载安装FreeRTOS的步骤和链接。
完成下面两步后,将自动完成登录并继续当前操作。