楼主:
zzss2003 (brotherD)
2017-09-21 17:42:45https://imgur.com/a/q0v5u
https://imgur.com/a/aXwIA
疑问:对我来说,在嵌入式系统里的stack就是file register,里面可以放return address
、进入functio前使用到的变量、在function里面所宣告的变量
我的直觉告诉我应该是所有的function共用一个stack,因为在嵌入式系统里面stack的总
个数是固定的,不会因为function的多寡而变化。
另外,RTOS有自己private的data structure,请问这句是什么意思?
想请教前辈,我的观念上哪里有错误吗?
embedded system可以做到跟PC一样,但通常没必要embedded system的OS的内存管理会比Windows/Linux简化
作者:
Lipraxde (Lipraxde)
2017-09-22 17:10:00MCU跟CPU不一样啦,他要跑的是RTOS不是一般的OS
作者:
chuegou (chuegou)
2017-09-22 15:53:00算一样吧 mmu在x86和arm的实现没有大差异是那一颗阿?听叙述感觉没有mmu也没有os阿
你需要去了解C语言执行指令时 memory发生了什么事情stack和heap区在每次执行不同的事情 行为是如何你已经不是multi-thread或subroutine的问题 而是根本这个问题不管在哪个系统都一样简单说global static变量一开始就会存在memoryfunction内变量在每次进入都会push到stack所以有一段时期写程式变量一定要先宣告 放在一起做malloc则是去heap区配置memory离开任何区间ex: for while function stack就会清掉而heap上的东西一定要free才会清掉global static则是英勇长存只要fork出去就会有一个概念上的stack给你用所以fork进入了区间 会把区域变量推到这个stack
作者:
PkmX (阿猫)
2017-09-21 19:09:00你对thread有概念吗?
作者:
Lipraxde (Lipraxde)
2017-09-21 19:14:00通常会有一组暂存器存放stack pointer,要让每个task有自己的stack,就会在切换task的时候把stack pointer指到task自己的stack上。上网查查FreeRTOS,有个成大资工的网页介绍的很好
作者:
chuegou (chuegou)
2017-09-21 19:19:00看了这篇我确定你该先翻一下os