本篇文章将通过实际操作介绍如何实现分散加载文件的方法。开发工具为:mdk;开发板:野火stm32f407
一、建立工程
通过实现简单的加法计算的软件算法,来了解分散加载image 的方法。
建立工程,创建文件夹以及相应的文件,设置路径;
对应的c文件如下:
对应的h文件如下:
主函数,测试函数如下:
编译之后,查看map文件信息,如下:
查看工程输出是否正确,结果正确,如下:
二、设置分散加载的方法
①打开工程的选项页面,设置去掉 Linker 下默认的选项,使用分散加载文
件来分配工程的内存位置。分散加载文件的文件后缀名为sct 。
修改前内容如下:
②修改分散文件,因为单片机的rom大小这里是1M,分成了2部分,每部分大小为0x0007FFFF,区域大小需要根据实际进行配置。在默认的分散加载文件中做如下修改,将第一个加载区域LR_IROM1的大小改为0x0007FFFF,将其第一个执行区ER_IROM1大小也改为0x0007FFFF,同时新建一个 LR_MY_ADD 的加载区,其起始地址紧接着 LR_IROM1,大小也是 0x0007FFFF,在其中定义一个执行区 ADD_TEST起始地址与 LR_MY_ADD 一致,并将 myadd.o 所有的代码都放置到该区域。
③编译,查看map信息
在线仿真,函数地址如下,和map中的信息相匹配
三、总结
编译器在生成可执行文件时,先将每个.c文件编译成.o文件(此过程叫编译),然后将很多个.o文件链接成可执行文件(此过程叫链接)。在链接的过程中,通过链接文件来指定链接时的行为。通过修改分散加载文件sct,可以将不同的文件放到指定的位置上。
欢迎关注公众号:嵌入式学习与实践