FreeRTOS深入理解优先级翻转
Foreword 深入理解FreeRTOS中的互斥量、信号量、优先级反转、优先级继承等概念 理解基础 有一些知识基础才能看明白下为什么这么设计,这么说 中断不应该被阻塞 操作系统相关优先级远低于硬件中断,仅仅讨论操作系统内的情况,不考虑中断介入的更复杂情况 优先级翻转 假设: 系统中有3个任务Task1,Task2和Task3,优先级分别为3,2,1,也就是Task1的优先级最高 任务Task1和Task3互斥访问串口打印printf,采用二值信号实现互斥访问。 起初Task3通过二值信号量正在调用printf,被任务Task1抢占,开始执行任务Task1。 问题产生: 任务Task1运行的过程需要调用..
更多SES使用Ozone调试FreeRTOS
Foreword Debug遇到一个诡异情况,之前没注意过 单步失效 简单说系统里有很多地方在read,但是debug的那个read,在进入read内部以后,会出现整个堆栈指针都跳变成另外一个线程中read流程 ssize_t read(struct file *filep, void *buf, size_t nbytes) { struct inode *inode; int ret = -EBADF; configASSERT(filep); inode = filep->f_inode; /* Was this file opened for read access? */ if ((filep->f_oflags & O_RDOK) == ..
更多