单片机如何分散加载文件

本篇文章将通过实际操作介绍如何实现分散加载文件的方法。开发工具为:mdk;开发板:野火stm32f407

一、建立工程

通过实现简单的加法计算的软件算法,来了解分散加载image 的方法。

建立工程,创建文件夹以及相应的文件,设置路径;

c09394d530c7c44878582f2f6a1089ec.png

对应的c文件如下:

单片机如何分散加载文件_第1张图片

对应的h文件如下:

单片机如何分散加载文件_第2张图片

主函数,测试函数如下:

单片机如何分散加载文件_第3张图片

编译之后,查看map文件信息,如下:

单片机如何分散加载文件_第4张图片

查看工程输出是否正确,结果正确,如下:

d4df290a83ab9b495d14cd8adf0b2341.png

二、设置分散加载的方法

①打开工程的选项页面,设置去掉 Linker 下默认的选项,使用分散加载文

件来分配工程的内存位置。分散加载文件的文件后缀名为sct

单片机如何分散加载文件_第5张图片

修改前内容如下:

单片机如何分散加载文件_第6张图片

修改分散文件,因为单片机的rom大小这里是1M,分成了2部分,每部分大小为0x0007FFFF,区域大小需要根据实际进行配置。在默认的分散加载文件中做如下修改,将第一个加载区域LR_IROM1的大小改为0x0007FFFF,将其第一个执行区ER_IROM1大小也改为0x0007FFFF,同时新建一个 LR_MY_ADD 的加载区,其起始地址紧接着 LR_IROM1,大小也是 0x0007FFFF,在其中定义一个执行区 ADD_TEST起始地址与 LR_MY_ADD 一致,并将 myadd.o 所有的代码都放置到该区域。

单片机如何分散加载文件_第7张图片

③编译,查看map信息

单片机如何分散加载文件_第8张图片

在线仿真,函数地址如下,和map中的信息相匹配

单片机如何分散加载文件_第9张图片

三、总结

    编译器在生成可执行文件时,先将每个.c文件编译成.o文件(此过程叫编译),然后将很多个.o文件链接成可执行文件(此过程叫链接)。在链接的过程中,通过链接文件来指定链接时的行为。通过修改分散加载文件sct,可以将不同的文件放到指定的位置上。

欢迎关注公众号:嵌入式学习与实践

你可能感兴趣的:(单片机,嵌入式硬件,分散加载)