这篇文章讲的是如何设置芯片使用FLASH的大小,比如新塘的芯片N76E003的FLASH大小只有18K,但是我需要一些空间存储一些别的信息,掉电不丢失,那么我就要把FLASH空间分成两部分,第一部分用作存储代码,第二部分用作存储信息。如果你不设置,默认工程FLASH全部空间都是存储代码的,擦除也是擦除整个芯片。如果要将FLASH分为两部分我这里提供两个思路。
第一:设置擦除使用扇区,计算程序代码大小,将所需要的数据放入代码占用空间之后(最好用最后的地址空间)。
首先设置只擦除使用扇区,如下图,设置Setttings选项时需要Nu-Link连接到目标板,勾选Erase Used Sectors。
之后是计算程序代码大小,在程序编译链接之后在Build Output会有信息提示,只要看Code的大小即可,单位为字节。如下图:
在这个前提下,我就可以把其他的数据放入Code代码占用地址之后了。这个方法可行,已经过验证。
第二:将数据放入LDROM中
LDROM和APROM的空间一共是18K,如下图:
在此可以将数据丢到LDROM中,只存所需要数据,不存代码,每次从APROM启动,这只是个想法,没有经过验证。有想法的小伙伴可以挑战一下。
关键字:N76E003 Keil FLASH 地址空间
引用地址:
N76E003 Keil设置芯片使用FLASH的地址空间
推荐阅读最新更新时间:2024-11-11 10:19
STM32关于操作内部FLASH整理
stm32的FLASH分为主存储块、信息块和闪存存储器接口寄存器等 3 部分组成。 主存储块用于保存具体的程序代码和用户数据。起始地址0x08000000,b0和b1接GND从这里开始执行程序。 信息块用于负责由stm32出厂时放置2KB的启动程序(BootLoader)和512B的用户配置信息区。启动程序代码,是用来存储ST 自带的启动程序,b0接3.3v,b1接GND运行的就是这部分代码 ,用作串口下载代码。 闪存存储器接口寄存器,该部分用于控制闪存读写等,是整个闪存模块的控制机构 。在执行闪存写操作时,任何对闪存的读操作都会锁住总线,在写操作完成后读操作才能正确地进行;既在进行写或擦除操作时,不能进行代码或数据
[单片机]
Keil IAR - Cortex M3 调试问题及解决方法(3)
上次谈到由于stm32官方库和iar ew arm 的不断升级, 多出配置都发生了 变化, 1在使用 ewarm 6.30 升级stm32 stdlib 3.5 出现了这个错误 Error(Pe47) declaration is incompatible with __interwork__softfp unsigned long __get_PSP(void) , ”declaration “ 说明有文件中定义冲突。 查了一下,IAR自己带了CMSIS的库文件,而我们本地工程下也有CMSIS, 因此我们选择IAR自带的就没有问题了。 步骤如下: Please follow the followi
[单片机]
STM32 Flash 擦除 读写 成功
要点: 将数据写入flash之前,每次都要擦除,否则会写入不成功,出现的错误状态为:FLASH_Status=FLASH_ERROR_PG 写入数据成功后可以在Memory 中查看刚刚写入的数据,具体在Memory 窗口中输入:0x08010000,既可以看到此处的数据为 :Data = 0x15041979;//要写入的地址 擦除的起始地址与终止地址 #define StartAddr ((u32)0x08010000) #define EndAddr ((u32)0x0807ffff) //擦除 char IAP_Init()//初始化loaded 的flash { FLASHStatu
[单片机]
stm32驱动NOR Flash 之MX25L51245G(64MB)
MX25L51245G 支持SPI的MODE0/MODE3,一般都选择mode3 #define FLASH_SECTOR_SIZE (4*1024) #define FLASH_PAGE_SIZE 256 引脚定义 /* * SPI1 * @SCK : PA5 * @MISO : PA6 * @MOSI : PA7 * * @CS : PA0 */ 读写接口 static u8 SPI_Write(u8 byte) { u32 timeout = 0xFFFF; while(!(SPI1- SR & SPI_I2S_FLAG_TXE)) { if(--timeout == 0) { printf(
[单片机]
STM32CubeMX(Keil5)开发之路——6外部中断
运行环境 Windows10 STM32CubeMX___Version 5.0.0 Keil5(MDK5)___Version 5.15 简介 本例程主要讲解如何设置外部中断,采用中断的方式按键是否按下,在中断中进行打印数据。 STM32CubeMx基本配置 基础配置过程请参考 STM32CubeMx(Keil5)开发之路—配置第一个项目 STM32CubeMx 外部中断配置 查看电路图,如下图所示 K1——K3为外部输入引脚,连接PE2——PE4,并且按下按键时为低电平,因此待会儿需要设置为下降沿触发 为了方便调试,重定向printf,进行usart设置 1——点击USART1进行设置 2——模式选择Asyn
[单片机]
Keil MDK STM32系列(六) 基于抽象外设库HAL的ADC模数转换
配置 ADC 模式: 如果只启用了一个ADC, 这里只能配置为Independent mode 时钟分频: 这个选项是ADC的预分频器, 可设置为2/4/6/8, 决定了一个ADC时钟周期. 加入设置为2, 由于ADC是挂载在APB2总线(84M)上, 所以一个ADC时钟便是84 * M/2=42M 分辨率: 最高为12位分辨率, 分辨率越高转换时间越长 数据对齐方式: 如果选择12位分辨率, 右对齐, 得到的结果最大便是4096. 扫描模式: 转换完一个通道会不会继续转换下一个通道 连续转换模式: 使能的话转换将连续进行 不连续转换模式: 当使能多个转换通道时, 可单独设置不连续转换通道. DMA连续请求: 是否连续请求DMA.
[单片机]
KEIL(MDK)同时兼容STM32和51系列单片机的方法
keil4 方法一: 首先安装KEIL4,然后安装KEIL3到MDK相同目录,安装过的就跳过。然后以管理员身份打开KEIL4,用KEIL4的注册机,注册ARM和C51。 破解结果 方法二: 下面这个方法可以让keilMDK兼容51的工程,只要一个keil就都能编译51和stm32的工程了: 1、安装keilC51,并破解,安装目录 T:keilC51 2、安装keilMDK,并破解,安装目录 T:keilMDK 3、把T:keilC51 里面的 C51 文件夹复制到 T:keilMDK 里 4、把 T:keilC51 里面的 UV4 文件夹复制到 T:keilMDK 里,提示有同名文件都不要
[单片机]
STM32开发笔记40: Keil链接时”No section matches selector“解决方法
单片机型号:STM32F070F6P6 首先指明,此问题是STM32CubeMX升级时造成的,我现在STM32CubeMX的版本是4.27.0,原先的版本生成的程序在Keil中打开是不报错的。 这个问题是链接错误,仔细查看工程目录就可以看见4.27.0版本生成的程序,在工程目录中缺少启动的汇编文件startup_stm32f070x6.s,只需将此文件加载到工程中,再重新生成,此问题就可以解决。
[单片机]