STM32F4Discovery开发帮使用的STM32F407VGT6芯片,内部FLASH有1M之多.平时写的代码,烧写完之后还有大量的剩余.有效利用这剩余的FLASH能存储不少数据.因此研究了一下STM32F4读写内部FLASH的一些操作. [STM32F4 内部Flash的一些信息] STM32F407VG的内部FLASH的地址是:0x08000000,大小是0x00100000. 写FLASH的时候,如果发现写入地址的FLASH没有被擦出,数据将不会写入.FLASH的擦除操作,只能按Sec…
第50章     读写内部FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx 中文参考手册>.<STM32F4xx规格书>.库说明文档<stm32f4xx_dsp_stdperiph_lib_um.chm>. 50.1 STM32的内部FLASH简介 在STM32芯片内部有一个FLASH存储器,它主要用于存储…
一.介绍 首先我们需要了解一个内存映射: stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同. RAM起始地址是0x2000 0000,结束地址是0x2000 0000加上芯片的RAM大小.不同的芯片RAM也不同. Flash中的内容一般用来存储代码和一些定义为const的数据,断电不丢失, RAM可以理解为内存,用来存储代码运行时的数据,变量等等.掉电数据丢失. STM32将外设等都映射为地址的形式…
源:STM32 对内部FLASH读写接口函数 因为要用内部FLASH代替外部EEPROM,把参数放在STM32的0x08000000+320K处,其中20K是bootloader,300K是应用程序. 原理:先要把整页FLASH的内容搬到RAM中,然后在RAM中改动,然后擦除整页FLASH,再把改动后的内容写入原Flash页.下面程序调试通过. /***************************************************************************…
最近做到的项目在运行需要把一组uint8_t(unsigned char)的数据进行掉电储存,想到单片机STM32f030f4p6内部flash可以直接由程序操作,写了以下代码用于uint8_t数据打包保存和读取. 1.程序清单 与 测试结果 本程序包含5个文件,分别是: 1.Flash.c:内部flash读取储存相关函数 2.Flash.h:flash头文件 3.USART1.c:STM32F030F4P6的串口驱动,串口仅用于打印数据观察. 4.USART1.h:串口头文件 5.main.c…
 一.实验内容: 通过串口发送单个字符到NRF51822,NRF51822 接收到字符后将其写入到FLASH 的最后一页,之后将其读出并通过串口打印出数据. 二.nRF51822芯片内部flash知识: EN-nRF51D 开发板使用NRF51822 芯片为nRF51822-QFAA,如下图所示,共有256KBFLASH,256 页,页大小为1024 字节. NRF51822 内部FLASH 写流程如下: 三.代码解析: main: int main(void) { ... 串口初始化 prin…
因为要用内部FLASH代替外部EEPROM,把参数放在STM32的0x08000000+320K处,其中20K是bootloader,300K是应用程序. 原理:先要把整页FLASH的内容搬到RAM中,然后在RAM中改动,然后擦除整页FLASH,再把改动后的内容写入原Flash页.下面程序调试通过. /******************************************************************************** Function Name  :…
​ /* Base address of the Flash sectors */ #define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000) /* Base @ of Sector 0, 16 Kbytes */ #define ADDR_FLASH_SECTOR_1 ((uint32_t)0x08004000) /* Base @ of Sector 1, 16 Kbytes */ #define ADDR_FLASH_SECTOR_2 ((uint…
在我们应用开发时,经常会有一些程序运行参数需要保存,如一些修正系数.这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能.将这类数据存在指定的位置,需要修改时直接修改存储位置的数值,需要使用时则直接读取,会是一种方便的做法.考虑到这些数据量比较少,使用专门的存储单元既不经济,也没有必要,而STM32F103内部的Flash容量较大,而且ST的库函数中还提供了基本的Flash操作函数,实现起来也比较方便. 以大容量产品STM32F103VE…
今天在进行STM32内部falsh存储的时候,发现固件库历程的函数原型是这样的: 第一个是地址,在我的STM32中是2K一页的,第二个是要写入的数据. 问题就来了,存储一个小数该怎么办呢?固件库给的是整形数据啊! 三种解决办法: 第一:最具大众性的 把小数乘以系数放大,当做整数存储,然后再除以放大系数得到小数本身.例如 float  a=1.23; int b=a*100;把b存进去,取出来的时候再除以100,就可以得到小数a了.这是最简单可能也是最好想到的了,但同时,这也是最麻烦的了.稍有C语…
1.基本简介 TMS570LS3137内部Flash分为三个 Bank,主Flash 数据存储区3MB,是Bank1和Bank2.还有一个Bank7是作为内部Flash模拟EEPROM使用.内部存储器如下图所示: FEE功能只是用于Bank7,需要使用这块存储器就需要相应的函数实现数据的读取.写入和擦除.Ti为我们准备了F021FLASH-library实现了程序代码和系统存储器之间的桥梁.因此我们只需要调用F021FLASH-library的接口代码即可实现对存储器的读写操作.这可比翻手册写代…
@20119-01-29 [小记] STM32擦除内部FLASH时间过长导致IWDG复位分析…
012_STM32程序移植之_内部flash开机次数管理lib库建立 1. 测试环境:STM32C8T6 2. 测试接口: 3. 串口使用串口一,波特率9600 单片机引脚------------CH340引脚 VCC--------------------VCC GND-------------------GND PA9--------------------RXD PA10-------------------TXD 1.       紧接011,下面进行lib可的移植 2.       需…
011_STM32程序移植之_内部flash开机次数管理 1. 测试环境:STM32C8T6 2. 测试接口: 3. 串口使用串口一,波特率9600 单片机引脚------------CH340引脚 VCC--------------------VCC GND-------------------GND PA9--------------------RXD PA10-------------------TXD 1.       功能: 1.       使用STM32内部falsh进行开机次数记…
Flash 中文名字叫闪存,是一种长寿命的非易失性(断电数据不丢失)的存储器.可以对称为块的存储器单元块进行擦写和再编程,在进行写入操作之前必须先执行擦除.一个Nand Flash由多个块(Block)组成,每个块里面又包含很多页(page).每个页对应一个空闲区域/冗余区域(spare area),这个区域不是用来存储数据的,用于放置数据的校验值检测和纠错的.块,是Nand Flash的擦除操作的基本/最小单位.页,是Nand Flash的写入操作的基本/最小的单位. 首先简要写一下FLASH…
嵌入式闪存 闪存存储器有主存储块和信息块组成 大容量产品主存储块最大为64K×64位,每个存储块划分为256个2K字节的页 编程和擦除闪存 闪存编程一次可以写入16位(半字) 闪存擦除操作可以按页面擦除或完全擦除(全擦除).全擦除不影响信息块 编程过程 页擦除过程 操作步骤 1.解锁 2.读操作 3.擦除操作 4.写操作 5.获取FLASH状态 6.锁定 举例 #define STM32_FLASH_BASE 0x08000000 #define STM32_PAGE_NUM 256 #defi…
找到正点原子的官网,下载他的HAL库:http://www.openedv.com/thread-109778-1-1.html 找到此例程,并打开其工程文件. 找到此文件,复制到自己工程里 复制到自己的工程: stm32f1xx_hal_flash.h 322行添加 void FLASH_PageErase(uint32_t PageAddress);(如果重新使用STM32CUBEMX请重新添加) 我修改的地方:…
举例 typedef enum { FLASH_MEMTYPE_PROG = (u8)0x00, /*!< Program memory */ FLASH_MEMTYPE_DATA = (u8)0x01 /*!< Data EEPROM memory */ } FLASH_MemType_TypeDef; int main() { u32 addr = 0x4000; CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); while(1) { FLASH…
第51章     设置FLASH的读写保护及解除 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx 中文参考手册>.<STM32F4xx规格书>.库说明文档<stm32f4xx_dsp_stdperiph_lib_um.chm>以及<Proprietary code read-out protection on…
第24章     SPI—读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx 中文参考手册>.<STM32F4xx规格书>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>及<SPI总线协议介绍>. 若对SPI通讯协议不了解,可先阅读<SPI总线协议…
stm32——Flash读写 一.Flash简介 通过对stm32内部的flash的读写可以实现对stm32的编程操作. stm32的内置可编程Flash在许多场合具有十分重要的意义.如其支持ICP(In Circuit Programming,在电路编程:在线编程)特性使得开发人员对stm32可以警醒调试开发,可以通过JTAG和SWD接口对stm32进行程序烧写:支持IAP(In Application Programming,在应用中编程)使得开发人员可以在stm32运行程序的时候对其内部程…
首先声明,手册上给出的FlashSize地址是错误的,正确的应该是0x1FFF7A20,取高16位.确切说应该是(0x1FFF7A23,0x1FFF7A22两个字节), 芯片的这96位ID是产品唯一身份标识.可以从特定的寄存器中读出来.FlashSize表示内部flash的大小,也是固化在芯片内部的. 手册上讲的ChipID的基地址是0x1FFF7A10,ChipSize的基地址也是0x1FFF7A10.肯定是不对的 谷歌了半天才发现真正的ChipSize地址0x1FFF7A20.知道了地址,直…
我们的项目中需要保存一些系统配置参数,这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能.这就需要考虑这些参数保存的问题.将这类数据存在指定的位置,需要修改时直接修改存储位置的数值,需要使用时则直接读取,会是一种方便的做法.考虑到这些数据量比较少,使用专门的存储单元既不经济,也没有必要,恰好有些MCU拥有比较大的FLASH,使用少量来存储这些参数则既方便有经济.STM32F4的Flash架构如下: 这次NUCLEO-F412ZG测试板上…
为了支持长文件名,需要用到FATFS源码中的cc936.c的两个函数ff_convert,ff_wtoupper:这里面直接用了两个大数组(127KB)来做unicode转gbk(OEM)的对照表,这两个对照表太大,太占用内部flash,所以,一般将它们做成一个.bin的文件,叫做UNIGBK.BIN,将这个文件烧录到外部FLASH中,然后需要转换的时候,读外部FLASH中的这个文件内容. 下面是转自野火论坛的一篇FATFS的移植教材,有一定的参考价值. 本章参考资料:<00index_e.ht…
本文将提到以下内容: 位带操作 中断 printf重定向 随机数发生器RNG AD/DA DMA 高性能计算能力 加密 ART加速 一.位带操作 在学习51单片机的时候就使用过位操作,通过关键字sbit对单片机IO口进行位定义.但是stm32没有这样的关键字, 而是通过访问位带别名区来实现,即将每个比特位膨胀成一个32位字,通过位带别名区指针指向位带区内容. 支持位带操作的两个内存区的范围是:              0x2000_0000‐0x200F_FFFF(SRAM 区中的最低 1MB…
智能设备逆向工程之外部Flash读取与分析篇 唐朝实验室 · 2015/10/19 11:19 author: rayxcp 0x00 前言 目前智能家居设备的种类很多,本文内容以某智能豆浆机为例完成对其的固件提取和分析. 究其分析内部逻辑的原因可能会有很多种,和安全相关的原因主要有: 了解设备内部运行逻辑,逆向后有条件更改原有逻辑 通过逆向后的代码找到可利用的漏洞或原有隐藏功能 0x01 读取Flash 首先,准备好螺丝刀,镊子等工具.把设备拆解.取出设备主控板.如下图: 正面,其中红圈所在的…
标准51系列内核的逻辑空间为哈佛结构,也就是说,程序空间和地址空间是分开的.具体分为: CODE区:存放程序代码和一些常量信息,有16根地址总线,寻址范围为0x0000~0xFFFF,共计64K DATA区:存放运行中的数据,8根地址总线,寻址范围为0x00~0xFF,共计256个字节,其中,低128字节可直接寻址,高128字节可间接寻址. XDATA:外部数据存储器,间接寻址,16根地址总线,寻址范围为0x0000~0xFFFF.共计64K. Technorati 标签: CC2530 Fla…
本文简要介绍一下本人在Cortex-M3系统的STM32F10x芯片上开发的一个日志文件系统(与其说是系统,不如说是小小的库).该库的特点是将在STM32F10x芯片上处理数据(历史记录)变得简单可靠.因为我所做的项目基本上都为监控系统,需要记录各种各样的日志,并可随时上传至中心服务器.利用该库就可以很容易的使用该接口完成数据的初始化.读取.写入和删除.而且随着该库的应用,稳定性也得到了验证,应用到其它项目中也更有底气了.本库分两部分,一部分支持内部FLASH,一部分支持外部FLASH.由于硬件…
讨论到eMMC的发展历程,必须要从介绍Flash的历史开始 Flash分为两种规格:NOR Flash和NAND Flash,两者均为非易失性闪存模块. 1988年,Intel首次发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.NOR类似于DRAM, 以存储程序代码为主,可以让微处理器直接读取.因为读取速度较快,但晶片容量较低,所以多应用在通讯产品中,如手机. 19***,东芝公司发表NAND flash结构,强调降低每比特的成本,更高的性能,并且像磁盘一样可…
from://http://blog.chinaunix.net/uid-26727976-id-3146895.html 在2.x的版本中,在manifest中配置的权限android.permission.WRITE_EXTERNAL_STORAGE确实是用来使得sd卡获得写的权限.而在4.0开发的源码当中,由于有了内外置sd卡的区分,android.permission.WRITE_EXTERNAL_STORAGE的权限用来设置了内置sd卡的写权限,如果在manifest中只是配置了这个权…