打印
[STM32F7]

CubeMX里关于Cortex-M7的设置问题

[复制链接]
3721|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 sonicll 于 2017-7-6 13:55 编辑

STM32F7使用CubeMX生产代码时,可以在Cortex-M7设置里选择是否开启ART ACCLERATOR,ICache,DCache等,如下图



其中ICache,DCache,开启和关闭,能够在生成的代码里看到有两条语句

SCB_EnableICache();
SCB_EnableDCache();

但是ART ACCLERATOR的开启和关闭,还有FLASH Interface选择TCM还是AXI,在生成的代码里似乎看不到有什么变化,也许是我没找到,有没有人能给我指出对应的代码在哪里?



沙发
sonicll|  楼主 | 2017-7-6 13:51 | 只看该作者
ART ACCLERATOR的开启和关闭代码我找到了,在HAL_Init()里:

#if (ART_ACCLERATOR_ENABLE != 0)
   __HAL_FLASH_ART_ENABLE();

但是FLASH Interface选择TCM还是AXI,这部分的代码还是没找到

使用特权

评论回复
板凳
huotou| | 2017-7-6 14:12 | 只看该作者
没用过STM32CubeM生成,但是我拿STM32Cube例程来测试的。首先ART ACCLERATOR的开启和关闭是在HAL_Init()中有的,TCM和AXI好像是自己配置的,Keil中有选项可以进行ROM加载地址设置的,默认是AXI。从TCM接口启动的话,我需要修改加载镜像地址,看图二和图三。
我拿公司的STM32F767 Nucleo板子试了下,从TCM启动,似乎成功了,看最后一张图的R15(PC),嘿嘿。

QQ图片20170706133834.png (20.59 KB )

QQ图片20170706133834.png

QQ图片20170706140243.png (38.14 KB )

QQ图片20170706140243.png

QQ图片20170706140224.png (49.42 KB )

QQ图片20170706140224.png

QQ图片20170706140339.png (247.04 KB )

QQ图片20170706140339.png

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
sonicll + 3 很给力!
地板
sonicll|  楼主 | 2017-7-6 14:24 | 只看该作者
huotou 发表于 2017-7-6 14:12
没用过STM32CubeM生成,但是我拿STM32Cube例程来测试的。首先ART ACCLERATOR的开启和关闭是在HAL_Init() ...

十分感谢,keil里确实可以手动设置TCM Flash地址。这么看来CubeMX里的FLASH Interface选项似乎就没起作用,还要自己手动修改

使用特权

评论回复
5
huotou| | 2017-7-6 15:20 | 只看该作者
sonicll 发表于 2017-7-6 14:24
十分感谢,keil里确实可以手动设置TCM Flash地址。这么看来CubeMX里的FLASH Interface选项似乎就没起作用 ...

不清楚,没用过,也是刚用STM32F7系列,嘿嘿

使用特权

评论回复
6
huotou| | 2017-7-6 17:45 | 只看该作者
用STM32CubeMX生成了下,它在Keil里已经自动已经更改为TCM地址启动了

test.PNG (359.5 KB )

test.PNG

使用特权

评论回复
7
sonicll|  楼主 | 2017-7-10 16:59 | 只看该作者
huotou 发表于 2017-7-6 17:45
用STM32CubeMX生成了下,它在Keil里已经自动已经更改为TCM地址启动了 ...

可能是我的CubeMX版本问题,更新了版本以后确实在Keil里自动更改TCM地址了,但是我还是有个问题,就是在SystemInit()里面设置向量表地址的语句:
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;
即使设置FLASH为TCM,FLASH_BASE的地址仍然是AXI的地址:

#define FLASHITCM_BASE         0x00200000U /*!< Base address of : (up to 2 MB) embedded FLASH memory  accessible over ITCM              */
#define FLASHAXI_BASE          0x08000000U /*!< Base address of : (up to 2 MB) embedded FLASH memory accessible over AXI                */
#define FLASH_BASE     FLASHAXI_BASE
这个地方不修改为FLASHITCM_BASE能正常运行吗?         

使用特权

评论回复
8
huotou| | 2017-7-11 09:51 | 只看该作者
sonicll 发表于 2017-7-10 16:59
可能是我的CubeMX版本问题,更新了版本以后确实在Keil里自动更改TCM地址了,但是我还是有个问题,就是在S ...

好像不改还是从Keil选中的TCM地址处启动的,但是SCB->VTOR 是0x08000000,还没找到好的文档来解释,如果找到,请分享下

使用特权

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

本版积分规则

17

主题

883

帖子

3

粉丝