flash多进程写操作
1 应用场景介绍
硬件条件:使用stm32 MCU
软件条件:协议栈应用
协议栈简单介绍如下:
类似于OSI七层模型,所涉及的协议栈包括应用层,网络层,链路层,物理层,如下图:

在协议栈应用层,网络层和链路层都会产生数据,但是大部分的数据是网络层产生的,数据管理尽量放在某一层统一管理。数据的管理无外乎读,写两个操作,读数据在哪一层都可以,只要能得到flash地址,不管在哪一层,都能读到预定的数据。写数据则不然,尽量放在同一层统一写入,否则在多任务读写时,就会存在问题。
2 应用方法
多任务,多进程进行写数据的时候,也得是进程之间有个先后顺序,如果在多个层分别进行数据的写入处理,有可能是处理出现错误,或者写入数据无效。解释如下:
因为flash的数据写入特性是“先擦除再写入”,即先把flash中的数据读入RAM中,之后擦除Flash中的数据,在RAM中进行相应处理之后,再把数据重新写入Flash。
理解了flash的读写操作之后,再来看数据放在多个层写入为什么会产生数据错误或者数据无效。举个栗子:
在应用层和网络层都有数据写入,而且是对同一数据的操作。当网络层把Flash中这个数据读入RAM中后,cpu转去执行应用层对于同一数据的修改并且写入操作,写操作执行完后,cpu又返回来执行网络层的写操作。如此一来,应用层对于该数据的修改已经被网络层写入的数据覆盖,也就是说应用层对该数据的修改无效。
所以说,对数据的处理,特别是写操作,尽量放在同一层进行处理。
进程是具有优先级的,上述问题也可以使用进程的优先级进行保护,这仅适用于少量的数据操作,如果使用大量的高优先级进程,相当于对数据的处理很多都设置为高优先级,也无法起到保护作用。
所以,对数据处理最好的办法是放在同一层进行处理。
不当之处,请多指教,感谢!
flash多进程写操作的更多相关文章
- NOR Flash擦写和原理分析
NOR Flash擦写和原理分析 1. NOR FLASH 的简单介绍 NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直 ...
- NOR Flash擦写和原理分析 (一)
1. NOR FLASH 的简单介绍 NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行(这意味着存 ...
- 【转】NOR Flash擦写和原理分析
1. NOR FLASH 的简单介绍 NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行(这意味着存 ...
- nor flash的一般操作与分析
是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM(Electrically Programmable Read-Only-Me ...
- 转载:NOR Flash擦写和原理分析
1. NOR FLASH 的简单介绍 NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行(这意味着存 ...
- NOR Flash擦写和原理分析 (二)
Nor Flash上电后处于数据读取状态(Reading Array Data).此状态可以进行正常的读.这和读取SDRAM/SRAM/ROM一样.(要是不一样的话,芯片上电后如何从NorFlash中 ...
- 怎么看时序图--nand flash的读操作详解(转载)
出处:http://blog.chinaunix.net/uid-28852942-id-3992727.html这篇文章不是介绍 nand flash的物理结构和关于nand flash的一些基本知 ...
- DM6446开发攻略:UBOOT-2009.03移植及nand flash烧写
有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-boot-2009.03差别不大,只不过这个u-boot-2009.03是从TI的网站上下载 ...
- 怎么看时序图--nand flash的读操作详解
出处:http://blog.chinaunix.net/uid-28852942-id-3992727.html 这篇文章不是介绍 nand flash的物理结构和关于nand flash的一些基本 ...
随机推荐
- 【数据库开发】windows环境下通过c++使用redis
1.Windows下Redis的安装使用 Redis是一个key-value存储系统.Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起 ...
- Dapper连接MySql数据库
首先通过NuGet在项目中分别安装Dapper和MySql.Data的引用 PM> Install-Package Dapper -Version PM> Install-Package ...
- nginx之配置proxy_set_header问题梳理
客户端请求web服务,客户端:ip:192.168.223.1 nginx作为反向代理服务器:192.168.223.136 nginx作为后端web服务器:192.168.223.137 前提条件: ...
- JS的BOM操作语法
整理了一下JS的BOM操作语法,这里记录一下. <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...
- python 脚本bak文件还原mssql数据库
# -*- coding=utf-8 -*- import pyodbc from datetime import datetime import pymssql import decimal cla ...
- WUSTOJ 1247: 递增或递减排序(Java)
1247: 递增或递减排序 题目 有n个整数,求它的递增排序序列或递减排序序列.更多内容点击标题. 分析 统一升序排序,输出的时候做区分. 先区分是升序还是降序,调用库函数. 代码 方法1,将 ...
- PyCharm 2018.3.3激活(亲测有效)
转自:简书某大佬 https://www.jianshu.com/p/351dee5d7e54 附截图:
- asp.net mvc抓取微信文章里面所有的图片
/// <summary> /// 下载指定URL下的所有图片 /// </summary> public class WebPageImage { /// <summa ...
- Python+Appium启动手机APP或者浏览器
一.设备信息配置 脚本如下: from appium import webdriver class my_app(): def __init__(self): desired_caps = {} # ...
- SCALA基础知识学习
注:本文只说和Java不同的地方. 总结自: Scala详细教程 Scala教程 scala基础语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ";" 是 ...