中级会员
 
- 积分
- 264
- 金钱
- 264
- 注册时间
- 2016-10-19
- 在线时间
- 77 小时
|
发表于 2020-1-2 11:45:59
|
显示全部楼层
首先要了解自己使用的单片机型号的FLASH和RAM的大小,以mini板LCD显示实验为例,用的是STM32F103RCT6 FLASH 256K SRAM 48K
一般情况下存储地址 FLASH 是从0x0800 0000 开始,如果是256k,则size为256*1024 = 0x40000 。RAM的存储地址为0x2000 0000 如果是48k 则size为48*1024 = 0xC000
建立好工程后,最好先编译一下,或者自己大体知道程序占FLASH 大约多少RAM大约多少,如果不知道的话可以看一下编译后大小,如下图所示
好像是左边这两个加起来是FLASH占用大小,右边两个加起来是RAM
知道了这些后就可以把48k的SRAM进行分配了。首先FLASH 24458+6474=30932 然后除以1024得30k ,RAM 16+1848=1864 约1.8k多。分配的时候就可以分FLASH占用31k(可以再多点),剩下的分给RAM 17k。
开始设置,点击魔术棒工具打开option对话框,点击target选项卡,显示如下图
左边是FLASH 的起始地址和尺寸,右边是RAM的起始地址和尺寸,把FLASH的起始地址改成RAM的总起始地址0x2000 0000 尺寸改为31k 0x7C00 ,右边的RAM起始地址改为0x20007C00,尺寸改为17k 0x4400.
选择debug选项卡,如下图 ,首先选择使用STLINK,然后把下面的两个√打上,然后选择初始化文件RAM.ini,文件内容如下,自己建一个文本,把下面的内容复制进去,然后把文件名改成RAM.ini,建成后最好把文件放在工程的根目录下。
RAM.ini中内容:
/*****************************************************************************/
/* RAM.INI: RAM Initialization File */
/******************************************************************************/
// <<< Use Configuration Wizard in Context Menu >>> //
/******************************************************************************/
/* This file is part of the uVision/ARM development tools. */
/* Copyright (c) 2005-2007 Keil Software. All rights reserved. */
/* This software may only be used under the terms of a valid, current, */
/* end user licence from KEIL for a compatible version of KEIL software */
/* development tools. Nothing else gives you the right to use this software. */
/******************************************************************************/
FUNC void Setup (void) {
SP = _RDWORD(0x20000000); // Setup Stack Pointer
PC = _RDWORD(0x20000004); // Setup Program Counter
// _WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
}
LOAD RAM\Blinky.axf INCREMENTAL // Download
Setup(); // Setup for Running
g, main
/*****************************************************************************/
最后点击设置,进入设置界面
一般选择SW模式,然后点击flash download选项卡
第一步按图设置 2.填写刚才的RAM起始地址和尺寸 3.填写刚才的FLASH 地址和尺寸,确定后编译代码。
编译后把BOOT0和BOOT1改成高电平,也就是从SRAM中启动,然后不能点 ,因为这样程序不会运行,还不知道原因。点解仿真按钮 ,程序会被下载到RAM中。可以继续仿真,也可以退出仿真,程序都会一直工作,直至复位或断电。
必须用仿真工具下载才能实现,串口只能下载到FLASH中。
|
|