- 博客(6)
- 收藏
- 关注
原创 .a和.o的微妙区别
为什么先链接静态库再链接.o就会有重复定义的问题,而先链接.o 再链接静态库就不会有重复定义的问题。如果符号已在前面的目标文件中定义,静态库中的同名符号会被忽略。链接器按需从静态库提取符号(未被引用的符号不会被加载)。目标文件的所有符号强制参与链接,无论是否被引用。得到myfun1.o和myfun2.o。可见与链接的顺序有关,但是并不会报错。工程如上所示,先讲.c分别编译成.o。鄙人觉得挺有道理,来个大佬确认一下。
2025-04-18 14:29:43
195
原创 FreeRTOS个人总结【任务调度】
如果这时候Task3执行完了(并不代表以后不执行了,可能是进入到阻塞态挂起态),还剩Task1和Task2两个同等优先级的任务,那么这两个任务轮流执行1Tick,Task1执行1Tick后插入到链表末尾······循环执行。好比是你在家里做饭是A任务,看小孩是B任务,CPU对任务的调度执行是根据任务的状态和优先级来管理的(优先级在上一篇的创建任务函数中设定)。上一篇说的是创建任务时的函数和参数的含义,想要更好的理解任务,我们需要知道任务有哪几种状态;高优先级的任务不停止,低优先级的任务永不执行;
2025-02-07 16:45:42
307
原创 FreeRTOS个人总结【创建任务】
因为进入任务函数时会把该函数的返回地址放在lr(函数返回地址)中,如果该任务没有调用其他函数,则lr的值不用保存在任务栈中,但是一旦该任务中调用了其他函数,那么这个lr寄存器一定会被调用的函数使用,lr的值会被覆盖,所以一旦有函数调用就会把lr的值放入任务栈中存起来。那么任务在切换时需要保存当前cpu寄存器的数据,根据上一节文章末尾提到的保存现场而知,这些数据是需要在内存中申请一片任务栈空间来存储的(虽然叫做栈,但是与栈区的概念不是很一样,该栈是申请出来的,不是局部变量存放的那个栈,所以不要混淆;
2024-09-30 21:31:19
423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人