【ART-PI】使用STM32H750的隐藏2MB ROM
【ART-PI】使用STM32H750的隐藏2MB ROM
- 一:KEIL MDK开发环境
- 二:RT-Thread Studio开发环境
ART-PI使用的主控MCU为STM32H750XBH6,官方芯片手册介绍该MCU片内FLASH只有128KB,但是实测2MB均可正常使用,该2MB内存自测或者学习可以使用,但产品开发不建议使用,毕竟官方未说明这部分,可能存在稳定性或者其他问题,以下介绍下如何在RT-Thread Studio与KEIL MDK开发环境下使用这2MB FLASH。
一:KEIL MDK开发环境
KEIL MDK开发环境下配置比较简单的一种方法是将芯片类型更改为STM322H742系列,或者采用一下方法:
Step 1:将Option->Target中的IROM1大小改为2MB(0x200000)
Step 2:将Option->Linker配置成下图所示,使用自定义分散加载link.sct
Step 3:编辑link.sct文件,如下:
LR_IROM1 0x08000000 0x00200000 ; load region size_region
{ ;On chip flash, defined as 128 KB, but actual up to 2MBER_IROM1 0x08000000 0x00200000 ; load address = execution address{ *.o (RESET, +First)*(InRoot$$Sections).ANY (+RO).ANY (+XO)}; RW data -> 128KB DTCMRW_IRAM1 0x20000000 0x00020000 {.ANY (+RW +ZI)*(.DTCM) }; RW data -> 512KB AXI SRAMRW_IRAM2 0x24000000 0x00080000 {.ANY (+RW +ZI);*(.RAM_D1) }; RW data -> 288KB = 128KB SRAM1(0x30000000) + 128KB SRAM2(0x3002 0000) + 32KB SRAM3(0x30040000)RW_IRAM3 0x30000000 0x00048000 { *(.RAM_D2)}; RW data -> 64KB SRAM4(0x38000000)RW_IRAM4 0x38000000 0x00010000 { *(.RAM_D3)}
}
Step 4:添加下载算法,这里选择STM32H7x_2048,保存配置
Step 5:编译下载,可以看到,实际代码已经超出128KB,但软件能够正常下载且正常运行!
linking...
Program Size: Code=399814 RO-data=21238 RW-data=107380 ZI-data=79584
".\Obj\tool_box.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:05
Load "D:\\Firmware_STM32\\project\\Obj\\tool_box.axf"
Erase Done.
Programming Done.
Verify OK.
Application running ...
Flash Load finished at 11:40:34
二:RT-Thread Studio开发环境
Step 1:建立RT-Thread工程这里不叙述,默认你已经建立并打开了RT-Thread Studio建立的工程,编译后下载,此时下载是没问题的,因为默认下载到了外部8MB的QSPI FLASH中,要使用内部2MBFLASH运行软件,我们需要将代码下载到内部FLASH并且在内部FLASH运行。
Step 2:修改配置,将代码下载到内部FLASH,首先打开link.lds(在board\linker_scripts\STM32H750XBHx目录),修改存储区域如下:
RT-Thread Studio下修改link.lds:直接修改或者添加存储区域即可。
文本模式下修改link.lds:
MEMORY
{
ROM (rx) : ORIGIN =0x8000000,LENGTH =2048k
RAM (rw) : ORIGIN =0x24000000,LENGTH =512k
RxDecripSection (rw) : ORIGIN =0x30040000,LENGTH =32k
TxDecripSection (rw) : ORIGIN =0x30040060,LENGTH =32k
RxArraySection (rw) : ORIGIN =0x30040200,LENGTH =32k
DTCM (rw) : ORIGIN =0x20000000,LENGTH =128k
SRAM12 (rw) : ORIGIN =0x30000000,LENGTH =256k
SRAM4 (rw) : ORIGIN =0x38000000,LENGTH =64k
}
此时我们编译下载,会发现下载失败了,原因是使用STM32CubeProgrammer下载时,FLASH操作超区了,输出日志如下:
-------------------------------------------------------------------STM32CubeProgrammer v2.7.0-RC1 -------------------------------------------------------------------
Warning: The external loader file does not exist:
mode=normal
ST-LINK SN : 066CFF554957886687083011
ST-LINK FW : V2J37M26
Board : --
Voltage : 3.29V
SWD freq : 4000 KHz
Connect mode: Normal
Reset mode : Software reset
Device ID : 0x450
Revision ID : Rev V
Device name : STM32H7xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M7
Memory Programming ...
Opening and parsing file: rtthread.elfFile : rtthread.elfSize : 488772 BytesAddress : 0x08000000
Erasing memory corresponding to segment 0:
Error: Operation exceeds memory limits //这里FLASH操作超区导致FLASH操作失败
Error: failed to erase memory
Error: Unable to reset MCU!
因此要将代码下载进去,我们得修改STM32CubeProgrammer 的配置参数了,接下来我们就来更改STM32CubeProgrammer 配置参数。
Step 3:更改STM32CubeProgrammer 配置参数,解除H750的128KB下载限制
首先我们文本方式打开ST-LINK_Debugger\1.6.0\tools\Data_Base目录下的STM32_Prog_DB_0x450.xml,找到以下代码段,将内部FLASH的128KB 0x20000改为2MB 0x200000,然后保存退出。
<!-- Embedded Flash --><Peripheral><Name>Embedded Flash</Name><Type>Storage</Type><Description>The Flash memory interface manages CPU AHB I-Code and D-Code accesses to the Flash memory. It implements the erase and program Flash memory operations and the read and write protection mechanisms</Description><ErasedValue>0xFF</ErasedValue><Access>RWE</Access><FlashSize address="0x1FF1E880" default="0x200000"/><!-- 2MB Dual Bank --><Configuration config="0,1,2,3"><Parameters address="0x08000000" name="2 MBytes Dual Bank Embedded Flash" size="0x200000"/><Description/><Organization>Dual</Organization><Allignement>0x20</Allignement><Bank name="Bank 1"><Field><Parameters address="0x08000000" name="sector0" occurence="0x8" size="0x20000"/></Field></Bank><Bank name="Bank 2"><Field><Parameters address="0x08100000" name="sector8" occurence="0x8" size="0x20000"/></Field></Bank></Configuration><!-- RomLess 128KB --><Configuration config="4,5,6,7"><Parameters address="0x08000000" name="RomLess 128 KB Embedded Flash" size="0x200000"/><Description/><Organization>Single</Organization><Allignement>0x20</Allignement><Bank name="Bank 1"><Field><Parameters address="0x08000000" name="sector0" occurence="0x1" size="0x200000"/></Field></Bank></Configuration></Peripheral>
Step 4:编译下载,可以看到,实际代码已经可以下载进去了,但软件却没有正常运行,这是因为项目工程代码中跳转到了外部FLASH,中断向量表映射到了0x90000000UL位置而不是内部的0x8000000UL位置,所以我们屏蔽掉跳转即可,代码如下,屏蔽或者删除main.c中的以下代码块即可;
-------------------------------------------------------------------STM32CubeProgrammer v2.7.0-RC1 -------------------------------------------------------------------
Warning: The external loader file does not exist:
mode=normal
ST-LINK SN : 066CFF554957886687083011
ST-LINK FW : V2J37M26
Board : --
Voltage : 3.29V
SWD freq : 4000 KHz
Connect mode: Normal
Reset mode : Software reset
Device ID : 0x450
Revision ID : Rev V
Device name : STM32H7xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M7
Memory Programming ...
Opening and parsing file: rtthread.elfFile : rtthread.elfSize : 488772 BytesAddress : 0x08000000
Erasing memory corresponding to segment 0:
Download in Progress:
Progress: 100%
File download complete
Time elapsed during download operation: 00:00:08.946
//#include "stm32h7xx.h"
//static int vtor_config(void)
//{
// /* Vector Table Relocation in Internal QSPI_FLASH */
// SCB->VTOR = QSPI_BASE;
// return 0;
//}
//INIT_BOARD_EXPORT(vtor_config);
Step 5:编译下载,实际代码已经可以下载进去了,软件也正常运行了。
【ART-PI】使用STM32H750的隐藏2MB ROM相关推荐
- 隐藏马尔科夫模型HMM
概率图模型 HMM 先从一个具体的例子入手,看看我们要解决的实际问题.例子引自wiki.https://en.wikipedia.org/wiki/Hidden_Markov_model Consid ...
- 香蕉派 Banana pi BPI-M1+ 双核开源单板计算机. 板载WIFI
Banana PI BPI-M1+是一款高性能双核开源硬件单板计算机,Banana PI BPI-M1+是一款比树莓派更强悍的双核Android4.4与Linux产品. Banana PI BP ...
- android 4.4 art模式,安卓4.4的ART模式怎么打开 安卓4.4开启art模式方法图解
ART模式是Android系统新增的一个新的底层运行模式,目前仅有Android 4.4系统才拥有ART模式,与传统的安卓Dalvik模式有很大的区别.通过在ART模式运行程序应用,可以达到省电.节约 ...
- Android ART详细介绍及配置参数详解
配置 ART 本文介绍了如何配置 ART 及其编译选项.讨论的主题包括:系统映像预编译配置.dex2oat 编译选项,以及如何在 system 分区空间.data 分区空间和性能这三者之间取得平衡. ...
- Dalvik ART
Android 4.4 到 Android 5.0有一个很大的变化,就是从Dalvik 到 ART,以下是根据我的理解做的总结. 有不对的地方,欢迎指正. 虚拟机 Dalvik Dalvik VM ...
- android作用是什么意思,安卓ART模式是什么意思 ART模式有什么作用及功能
ART模式相信大家都比较陌生,不过ART模式越来越多的被媒体提及,很多网友对于ART模式是什么以及有什么用确认详细的了解.以下脚本之家为大家详细汇总了ART模式相关知识汇总,通过本文,您可以全面了解A ...
- ART与Dalvik哪个好 ART模式和Dalvik模式区别对比
最新的安卓4.4系统中引入了全新的ART模式 对比项目 CPU RAM内存 ROM内存 流畅度 省电 APP加载速度 兼容性 ART模式 -- 小 大 更佳 更佳 慢 有待优化 Dalvik模式 ...
- android 4.4 art模式,从未如此流畅 Android 4.4 ART模式体验
Android 4.4系统最大的亮点莫过于针对RAM的占用进行了深度的优化,以至于谷歌官方宣称运行内存仅有512MB的老款手机,同样可以流畅运行Android 4.4系统,这说明谷歌已经对该系统有了充 ...
- android odex版本调试_android 基础-Dalvik ,ART,JIT,AOT,Dex,Odex
Dalvik 和 ART Dalvik:Dalvik 虚拟机,android 5.0 以前所使用的虚拟机,可执行文件为 dex 格式,基于寄存器的虚拟机(jvm 基于堆栈).通过 dx 工具将 .cl ...
最新文章
- 【DND图形库】四、文本绘制和按键检测
- 锁相放大器sr830_各位谁会用Stanford SR830啊,我都快被这个锁相放大器折腾死了!!!!-北京搜狐焦点...
- asp 使用TreeView控件
- CString类(转)
- VR全景可视化制作小程序功能模块源码v1.0.28
- 服务器2003系统黑屏怎么办,windows-server-2003 – Windows Server 2003 – 黑屏,光标在启动时...
- [设想]增加比较的多元运算符
- 如何在 Mac 上控制对摄像头的访问?
- 19.docker attach
- 分享几十年来记录下的编程技巧
- java ftp 上传失败,java ftp上传时,代码不报错,也上传不过去文件
- Win10系统去掉桌面图标小箭头导致打开管理和任务栏处图标报错,且右键开始菜单无反应
- P9813驱动RGB灯珠
- 不义联盟网站无法连接服务器,不义联盟2总是显示无法连接网络
- 杀戮空间2服务器协议,杀戮空间2服务器设置
- openwrt屏蔽广告不生效
- 【AWS+Drupal应用案例】如何让一个千万级流量网站从一直挂机到起死回生?
- 陈 好 性 感 写 真 ,难得一见哦[贴图]
- apache基于端口的虚拟主机配置
- 如何报p20手机数据导入计算机,华为P20系列手机与电脑共享内容传输文件的方法...