- 博客(5)
- 收藏
- 关注
原创 任务调度管理-保存现场和恢复现场
在FreeRTOS移植到ARM Cortex-A9,关于任务调度的模块,前面的文章中讲到了任务调度的原理,这里讲一下如何保存现场和恢复现场;保存现场保存上文信息汇编实现的函数为portSAVE_CONTEXT。在Arm Cortext-A9平台保护现场都通过system模式进行访问,因为system mode和usr mode看到的是一份寄存器内容,能反应usr模式下的运行状态,又不会影响其他特权模式;针对每个任务,在其创建的时候都会在栈内开辟一段固定大小的空间用来保存任务的上下文(包括CPU状态,运
2021-04-07 20:01:43 2575
原创 任务调度管理-触发任务调度的机制
FREERTOS 移植到ARM Cortex-A9触发任务调度的机制有两种中断;1.OSTaskRun/OSTaskSaveRun/OSTaskLoadRun/OSTaskSaveLoadRun这种机制是通过调用软中断ARM SWI异常触发任务切换。调用软中断:#define OSTaskRun(PRunTcb) osek_switch_type = 1; __asm volatile ( "SWI 0");#define OSTaskSaveRun(PSavedTcb,PRunTcb) os
2021-04-07 19:56:47 1002
原创 任务调度管理-任务切换机制
在ARM Cortex-A9上移植AUTOSAR。任务切换是移植工作的核心内容,在理解OSEK任务调度机制的基础上,分析目标平台中需要保存的上下文内容和任务返回方法。任务调度包含三个部分:1.保存上文;2.选择下一个执行的任务(任务初始化);3.恢复下文。根据是否保存上文和恢复下文,任务切换分为四种不同的调度方法;调度方式保存旧任务的上下文恢复新任务的上下文OSTaskRun否否OSTaskSaveRun是否OSTaskLoadRun否是OSTaskS
2021-04-07 19:52:18 1420
原创 任务调度管理-任务堆栈空间
根据FreeRTOS porting AUTOSAR到ARM Cortex-A9,看了下任务堆栈空间管理;每个任务拥有各自独立的堆栈区,任务的上下文是保存在各自的堆栈上的。如下图1所示,除了系统栈,每个任务都有各自独立的堆栈,因此发生任务切换的时候,需要切换任务的堆栈指针。图1在ARM Cortex-A9体系结构下,任务堆栈空间由高至低依次保存着CPSR、task,因为在初始化时不需要恢复上下文,所以不需要对R0~R12、LR做有效初始化,在做任务切换时使PC指针指向task入口。初始状态的堆
2021-04-07 19:41:59 966
原创 Xilinx SDK 汇编文件函数单步调试设置
Xilinx SDK 汇编函数单步调试设置在Xilinx SDK中调试Debug汇编文件在Xilinx SDK中调试Debug汇编文件选中工程右键选择“C/C++ building setting”;打开gcc assembler配置页面,在Expert settings加上-g选项,如下图;我加的是-g3 debug的最大level然后clean project->build project,加断点,即可单步调试...
2021-03-05 11:03:21 2254 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人