一、重定位
1、对于有强大ROM的板子,他们会将上电后的程序放到指定RAM内存
2、无强大片内ROM的板子,自己编程序让他知道RAM内存指定位置
指定位置:就是链接地址,指定哪里,哪里就被编译好一块内存用来存放上电的程序
二、如何重定位
复制copy(源、目的、长度)
源:加载地址
目的:链接地址
三、什么时候需要重定位?
源(加载地址) != 目的(链接地址)
四、不重定位会咋样?
一堆乱码,相反如果串口发送数据等有一堆乱码,可能就是没重定位。
五、段的概念
1、段的概念是怎么引入的呢?
因为重定位不一定把所有数据都重定位吧,那样浪费,所以我们把ROM(无论是强大的ROM还是不强大的ROM)发给RAM(MPU是RAM,MCU太穷了,一会说给谁)程序分为三段,重定位只需要将其中代码段和数据段copy到链接地址处就行了
2、三段
代码段-----------可以重定位也可以不重定位
数据段(可读可写、只读)-------必须重定位
BSS/ZI段------------不需重定位
六、MCU和MPU区别
一、MCU
一个字穷,ROM给的哪些程序RAM装不下啊,所以将三段段放在FLASH,需要的时候数据段(可读可写、只读)-------那些全局变量和静态变量等等必须重定位的给RAM的链接地址。
二、MPU
一个字,够用,我的RAM大啊,直接接收了ROM的程序,如果需要重定位我直接干到链接地址就行了。
总结:
这次记录了重定位的原理、方法等,下一次记录一下具体怎么写这部分copy代码,实现重定位