rtos
文章平均质量分 94
小陈同学123
这个作者很懒,什么都没留下…
展开
-
freertos
freertos原创 2022-10-06 16:31:16 · 1576 阅读 · 0 评论 -
FreeRtos_内存管理
内存管理每当任务,队列或是信号量被创建时,内核需要进行动态内存分配。虽然可以调用标准的 malloc()与 free()库函数,但必须承担以下若干问题:这两个函数在小型嵌入式系统中可能不可用。这两个函数的具体实现可能会相对较大,会占用较多宝贵的代码空间。这两个函数通常不具备线程安全特性。这两个函数具有不确定性。每次调用时的时间开销都可能不同。这两个函数会产生内存碎片。这两个函数会使得链接器配置得复杂不同的嵌入式系统具有不同的内存配置和时间要求。所以单一的内存分配算法只可能适合部分应用程序。原创 2021-11-22 13:38:41 · 341 阅读 · 0 评论 -
FreeRtos——错误排查
printf-stdarg.c当调用标准 C 库函数时,栈空间使用量可能会急剧上升,特别是 IO 与字符串处理函数,比如sprintf()。在 FreeRTOS 下载包中有一个名为 printf-stdarg.c 的文件。这个文件实现了一个栈效率优化版的小型 sprintf(),可以用来代替标准 C 库函数版本。在大多数情况下,这样做可以使得调用 sprintf()及相关函数的任务对栈空间的需求量小很多。printf-stdarg.c 源代码开放,但是为第三方所有。所以此源代码的 license 独立于原创 2021-11-28 15:47:19 · 1306 阅读 · 0 评论 -
FreeRTOS--资源管理
函数重入如果一个函数可以安全地被多个任务调用,或是在任务与中断中均可调用,则这个函数是可重入的。每个任务都单独维护自己的栈空间及其自身在的内存寄存器组中的值。如果一个函数除了访问自己栈空间上分配的数据或是内核寄存器中的数据外,不会访问其它任何数据,则这个函数就是可重入的。可重入的函数:```css/* 一个参数被传递到函数中。要么是传递到堆栈或在CPU寄存器中。 两种方法都是安全的 每个任务维护自己的堆栈和自己的寄存器集值。 */ long lAddOneHundered( long l原创 2021-11-18 13:51:30 · 919 阅读 · 0 评论 -
FreeRtos_任务管理学习记录
在 FreeRTOS 中,每个执行线程都被称为”任务”。在嵌入式社区中,对此并没有一个公允的术语,但我更喜欢用”任务”而不是”线程”,因为从以前的经验来看,线程具有更多的特定含义。任务函数任务是由 C 语言函数实现的。唯一特别的只是任务的函数原型,其必须返回 void,而且带有一个 void 指针参数。其函数原型参见程序清单 1。void ATaskFunction( void *pvParameters );//这个东西就相当于c语言的函数,这个名字是可以自己定义的每个任务都是在自己权限范原创 2021-11-10 21:06:17 · 588 阅读 · 0 评论 -
FreeRtos--队列
基于 FreeRTOS 的应用程序由一组独立的任务构成——每个任务都是具有独立权限的小程序。这些独立的任务之间很可能会通过相互通信以提供有用的系统功能。FreeRTOS 中所有的通信与同步机制都是基于队列实现的。通常情况下,队列被作为 FIFO(先进先出)使用,即数据由队列尾写入,从队列首读出。当然,由队列首写入也是可能的。往队列写入数据是通过字节拷贝把数据复制存储到队列中;从队列读出数据使得把队列中的数据拷贝删除。...原创 2021-11-15 19:41:32 · 865 阅读 · 0 评论 -
FreeRtos--中断
采用二值信号量同步二值信号量可以在某个特殊的中断发生时,让任务解除阻塞,相当于让任务与中断同步。这样就可以让中断事件处理量大的工作在同步任务中完成,中断服务例程(ISR)中只是快速处理少部份工作。如此,中断处理可以说是被”推迟(deferred)”到一个”处理handler)”任务。延迟处理任务对一个信号量进行带阻塞性质的”take”调用,意思是进入阻塞态以等待事件发生。当事件发生后,ISR 对同一个信号量进行”give”操作,使得延迟处理任务解除阻塞,从而事件在延迟处理任务中得到相应的处理。“获取(原创 2021-11-16 17:09:43 · 5525 阅读 · 0 评论