📄 read me.txt
字号:
IAP_Driver_modi_1.map 是做如下修改而生成的:
试了一下将Gpio.c中的唯一函数GPIO_Config通过__ramfunc设置为在RAM中运行的函数
于是,map文件有如下变化:
GPIO_Config函数从CODE segment@0x40000184~0x400002e3 (0x160 byte)
移动到了
CODE_I segment@0x20000a00~0x20000b5f (0x160byte)
并且在map文件结尾的总结时,多了
CODE_I 20000A00 - 20000B5F 160 rel 2
CODE segment的size也从0xCF0减少到0xE44
INITTAB的size也从0x24增加到0x30(多了一个element,多了一次搬运的操作)
IAP_Driver_modi_1.map 是做如下修改而生成的:
没有在那四个文件在编译阶段指明override inheriend --> CODE_Flash,就用默认的
linker文件并不用改,无非里面用到的CODE_Flash segment和CODE_ROM segment用不上而已。
但是要在flash.c文件中会被用到的四个函数前面加上__ramfunc来说明。
这样的效果和在编译阶段指明放在CODE_Flash,而在linker文件中用指定CODE_Flasha放在0x2000,0000~0x2000,2000是一样的效果
在map文件结尾的总结时,可以看到
CODE_Flash 20000000 rel 2 并未用到
CODE_ROM 400016F8 rel 2 并未用到
但是,同法一一样,CODE_I和CODE_ID用上了
CODE_I 20000110 - 200001F7 E8 rel 2
CODE_ID 400016F8 - 400017DF E8 rel 2
如果没有像项目本身的配置那样,在编译阶段指定关键的Flash相关函数放在CODE_Flash,而在linker文件中指明该segment放在0x2000,000开始的地方;
也没有像自己的方法一样,在代码级别,函数前用__ramfunc来修饰。
那么,在运行的时候,(因为运行在flash中),当执行对Flash的擦除的时候,就会出错,表现为send file就死在那里了。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -