操作系统
嵌入式操作系统
Risun_Lee
这个作者很懒,什么都没留下…
展开
-
[ubuntu] 在linux系统中安装VSCode(Visual Studio Code)
1.从官网下载压缩包(话说下载下来解压就直接可以运行了咧,都不需要make)访问Visual Studio Code官网https://code.visualstudio.com/docs?dv=linux64我是64位的:wgethttps://az764295.vo.msecnd.net/stable/7ba55c5860b152d999dda59393ca3ebeb1b5c85f/code-stable-code_1.7.2-1479766213_amd64.tar.gz2.解压 ..原创 2021-05-11 13:42:07 · 1218 阅读 · 0 评论 -
[ubuntu] 配置xftp命令
sudo apt-get updatesudo apt install openssh-serversudo apt-get install vsftpdsudo service vsftpd restart原创 2021-05-11 13:32:05 · 176 阅读 · 0 评论 -
[sysbios] 同步和通信
Sysbios的同步和通信主要包括队列(Queue)、信号量(Semaphore)、邮箱(Mailbox)、事件(Event)、门(Gates)。队列-Queue要点:1. 基于双向链表实现,可以在任意位置插入或删除元素,并且队列元素没有最大值。2. 要在队列中增加结构体元素,这个元素的第一个字段必须是Queue_Elem类型的。Queue APIs信号量-Semaphore要点1. 信号量主要用于保护关键代码段,以及任务间的...原创 2021-04-15 08:31:56 · 848 阅读 · 0 评论 -
[FreeRTOS] 错误排查
1.printf-stdarg.c在调用标准库函数时,栈空间的用量可能急剧上升,特别是IO与字符串处理函数,比如 sprintf()。在FreeRTOS下载包中有一个名为printf-stdarg.c 的文件,这个文件可以替代标准C库函数版本。在大多数情况下,可以调用sprintf() 及相关函数时,对栈空间的需求量小的很多。2. 栈溢出:uxTaskGetStackHighWaterMark() 用来查询指定任务在运行历史中,其栈空间还差多少溢出。3. 系统运行时,栈侦测的方法:方法.原创 2021-04-15 08:42:20 · 237 阅读 · 0 评论 -
[FreeRTOS] 内存管理
1. 标准malloc() 和 free() 库函数的缺陷:1)在小型的嵌入式系统中,可能不可用。2)具体实现相对较大,占用较多宝贵的代码空间。3)通常不具备线程安全性。4)具有不确定性,每次调用的时间开销可能不同。5)会产生内存碎片。6)会使得链接器、配置的复杂。2. 内存分配方案范例。1)Heap_1.c 仅实现 pvPortMalloc(),而没有实现pvPortFree(),但是 Heap_1.c 总是具有确定性。2)Heap_2.c 采用最佳匹配算法来分配内存,原创 2021-04-15 08:41:49 · 142 阅读 · 0 评论 -
[FreeRTOS] 资源管理
1. 多任务系统存在一个潜在的风险:资源管理。2. 基本临界区:taskENTER_CRITICAL()与taskEXIT_CRITICAL()或taskENTER_CRITICAL_FROM_ISR( x )与taskEXIT_CRITICAL_FROM_ISR()之间的代码。基本临界区可以保证对某个寄存器的访问不被中断。3. 在基本临界区不会切换到其他任务。中断可以执行,也允许嵌套,但只针对优先级高于configMAX_SYSCALL_INTERRUPT_PRIORITY的...原创 2021-04-15 08:41:19 · 60 阅读 · 0 评论 -
[FreeRTOS] 中断管理
1. 只有以“FromISR”或"FROM_ISR"结束的API函数或宏才可以在中断服务函数中使用。2. 除互斥信号量外,所有类型的信号量都可以调用xSemaphoreTake()来获取信号量,但xSemaphoreTake()不能用在中断服务函数中。3. 计数信号量的典型用法:① 事件计数;② 资源管理;4. 中断嵌套:控制中断嵌套的常量:1)configKERNEL_INTERRUPT_PRIORITY:设置系统心跳时钟的中断优先级。2)configMAX_SYSCALL_...原创 2021-04-15 08:40:33 · 105 阅读 · 0 评论 -
[FreeRTOS] 队列管理
1. 队列主要用于任务与任务、中断与任务之间的消息传递。2.创建队列时,请注意队列中数据单元的长度。3. 通常情况,队列被作为FIFO(先进先出)使用,即数据从队列尾写入,从队列首读。当然,数据也可由队列首写入。4. 向队列中写入数据是通过字节拷贝,将数据拷贝到队列中;从队列中读取数据也是通过字节拷贝,将数据从队列中拷贝出来。说明:读数据分为两种情况:① 读取后,删除队列中的数据;② 读数据后,不删除队列中的数据。5. 队列不属于任何任务。所有的任务或中断函数都可以向同一队列写入或读出.原创 2021-04-15 08:39:53 · 232 阅读 · 0 评论 -
[FreeRTOS] 任务管理
1. FreeRTOS 任务不允许以任何方式从实现函数中返回——他们绝不能有一条“return”语句,也不可能执行到函数的末尾。如果一个函数不需要,可以将其删除,如在任务中使用函数vTaskDelete(NULL),将当前任务删除。2. 在启动任务调度器(osKernelStart())前,最好只创建一个起始任务,在启动任务调度器(osKernelStart())后,在起始任务中创建其他的任务,此时建议关闭中断。如taskENTER_CRITICAL(),...《创建任务》...taskEXI...原创 2021-04-15 08:38:35 · 282 阅读 · 0 评论