⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 read me.txt

📁 IAPBootLoader源程序是单片机ARM的在系统编程方法1
💻 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 + -