嵌入式程序存储结构
最近有同事说资源不够用了,这里的资源说的是RAM(内存),但是硬件资源就这么点,怎么解决呢?实际上资源是够用的,只是分配不合理罢了,作为软硬通吃的全栈工程师,这点难不倒我。
我们知道,所有的程序只有两部分结构,指令和变量,指令是让控制器知道要干啥,而变量(数据)是那个被干的对象(操作数),程序是指令和变量的合集,那么他们在CPU系统里面如何存储,存在哪里?下面这张图总结的很好,
对于小型的嵌入式CPU(51单片机,M核单片机等),没有足够的RAM,程序一般运行在flash中,即.text内容不需要搬运到RAM,对于高端一点的CPU(如R核,A核单片机),运行的功能比较多,系统资源也比较多的场景,可以将.text搬运到RAM运行,一般的跑大型操作系统的设备程序都是运行在内存中。
在资源(flash和RAM)紧张的平台上,根据上面的图我们就可以对程序进行一定的优化,合理安排变量的类型,将资源合理的分布在flash和RAM里。