打印

【STM32H743实验例程】实验11:程序在ITCM执行,中断向量表和所有变量全部放在DTCM,方法很简单--原创

[复制链接]
567|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
实验介绍
开发平台:官方STM32H743 NUCLEO板子
开发环境:MDK5.25正式版
软件版本:
(1)CMSIS软件包 V5.3.0
(2)H7的HAL库版本 V1.2.0
例程下载:





实验11:程序运行在ITCM,中断向量表和所有变量使用DTCM.7z

(1.08 MB, 下载次数: 778)



2018-4-14 17:31 上传
点击文件名下载附件









    昨天有网友问了这个问题,今天就花了点时间研究了下,现在将其分享出来。实现方法比较简单,基于MDK的Option选项设置下即可,无需操作分散加载。使用分散加载的好处是灵活,在设置复杂工程的内存映射方面比较方便。

    实现这个功能的关键是要把所有程序都下载到Flash,系统上电后让MDK中的库函数去将所需的程序加载到RAM里面,用户不要自己去加载,太麻烦。如果用户自己去加载就得搞个bootloader加载应用程序到ITCM。这里所说的库函数是MDK里面的__main封装起来了。

知识点普及:
    TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于指令,DTCM用于数据,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。很多时候我们希望将需要实时性的程序和变量分别放在ITCM和DTCM里面执行。本帖就是解决这个问题。

1、添加ITCM空间


2、设置DTCM空间,前0x400大小的空间用于中断向量表,所以这里从0x20000400开始


3、右击所有MDK分组,选择使用ITCM,而进入main函数之前的所有代码,含main函数所在的文件main.c切不要设置,这个之前的代码我们都需要在flash里面执行。这些代码仅执行一次以后不会执行,所以不用管他们,之后的所有代码全部放在ITCM里面。


特别注意,直接右击分组选择设置



4、前面三步设置完毕后,将中断向量表从flash中复制到DTCM,主要存储的DTCM地址要0x200对齐。




通过上面四步就完成了此功能,是不是超级简单。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

370

主题

370

帖子

0

粉丝