
RISC-V
文章平均质量分 97
Dingjun798077632
十二年嵌入式开发经验。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RISC-V架构异常处理与栈回溯分析(二)
FreeRTOS\Source\portable\GCC\RISC-V\portASM.S文件中通过宏portcontextSAVE_CONTEXT_INTERNAL保存上下文代码有点漏洞:portcontextSAVE_CONTEXT_INTERNAL最后将sp保存到pxCurrentTCB->pxTopOfStack中,在创建任务和调用vTaskStartScheduler()之前pxCurrentTCB必然是个空指针,此时触发异常处理,跳转到异常函数处理入口原创 2023-09-19 22:12:24 · 630 阅读 · 0 评论 -
RISC-V架构异常处理与栈回溯(一)
前面两篇文章分析了RISC-V上FreeRTOS的启动以及OS任务切换的处理流程,本文基于之前的分析,实现自己的栈回溯函数,程序出错陷入异常处理中,打印处函数调用关系及其上下文数据,方便以后问题调试。还是基于qemu模拟器,使用FreeRTOS官方标准发布包的FreeRTOS/Demo/RISC-V-Qemu-virt_GCC工程调试。原创 2023-09-19 14:46:12 · 2071 阅读 · 0 评论 -
RISC-V FreeRTOS异常处理及任务切换分析(基于qemu+gdb跟踪调试)
也就回到了进入异常前的任务,或者完成任务切换(这里FreeRTOS是实时操作系统,并不是只有在timer中断时才切换任务,比如高优先级任务被唤醒而发生抢占,或者当前运行的任务主动挂起都会触发任务切换)。为了观察prvQueueSendTask上下文的恢复情况,我们先在processed_source最后的mret指令处增加断点,继续运行到新增加断点处,此时理应恢复了prvQueueSendTask的上下文,那我们就再打印一次相关寄存器,与前一次打印的对比,可以看到是一模一样的。原创 2023-09-14 22:35:14 · 1482 阅读 · 0 评论 -
RISC-V FreeRTOS启动过程分析(基于qemu+gdb调试)
最近在学RISC-V架构,有幸找到了一个非常好的课程《循序渐进,学习开发一个RISC-V上的操作系统》,学完后受益匪浅,但是课程上开发的操作系统毕竟只是教学用,想对比学习一下实际商用的RTOS的实现。FreeRTOS以前也用过,是一个非常流行的开源RTOS,所以选择了qume+FreeRTOS分析学习相关代码。本文先分析RISC-V + qume + FreeRTOS的启动流程。环境搭建可以参考。原创 2023-09-14 15:07:01 · 2157 阅读 · 0 评论