RTOS笔记01——基础知识

1-ARM架构、堆与

(只想记录栈,其他的也没怎么看懂)

1-如何避免LR寄存器被覆盖:

每个函数调用前,都会给LR寄存器赋值,作为归来的地址,,但若是嵌套调用就被覆盖了,于是再每次函数调用前没通过汇编代码PUSH,来保存LR还有重要寄存器(其实就是将即将调用的函数的栈的开头向后推,这样就不会被覆盖了)

2-怎么记录变量

不允许优化或存满的(可能是)直接存到内存中,允许优化且没有满的时候,存到寄存器中去(没学明白,回头再问再看)

3-RTOS为何每一个任务都要有单独的栈

因为在调度过程中需要不断从中间切换代码,所以所有的东西都需要不断的保存(保存现场),设定栈之后,就有一段独立稳定的空间可以保存了

2-源码阅读与内存管理

1-核心文件位置

这是IDE配置文件,同样需要移植

2-类型前缀、函数前缀、宏的前缀、基本数据类型

BaseType是此核心最流畅基本的类型,比如在stm32上就是int(32位)

TickType时钟类型(忘记了)

03-创建任务,写任务调度函数

1-创建任务的函数

重点:任务函数(做什么),栈(在那儿做),优先级

在RTOSInit,初始化函数中写任务列表,以后通过链表寻找相关的任务

02-栈大小估算

主要包括:

每次需要保留的寄存器空间等(最大为R4~R11+LR)(主要通过深度最大的一条来估算)

局部变量占据的空间(具体怎么叠加忘了)

保留现场需要的空间(通常为16*4=64byte)

4-写的时候遇到的问题:

1-忘记了参数啥意思:

这三个地方什么意思

答:最后一个地方参数写错了,不是TCB结构体的句柄,随即区域函数不需要这个,直接放句柄就行

2-报错:

明白了,报错是因为调用的创造任意区域的任务,而我参考的却是创造固定区域的任务的函数,所以最后地方的参数应该是句柄,前面应该是basetype的参数(不知道什么用)

所以有什么用呢,这个ret?

3-句柄在这儿定义就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值