eeprom

STM32L0 内部FLASH和EEPROM写读

孤街醉人 提交于 2020-01-02 12:39:47
STM32L0 内部FLASH和EEPROM写读 说明 STM32L0内部的FLASH和EEPROM访问方式一致,写操作由解锁,擦除,写入,加锁过程组成,读过程则无需解锁。至于STM32L0内部的非易失空间区分为FLASH和EEPROM,主要体现在用ST-LINK等工具进行整片擦除时,只擦除FLASH的空间,EEPROM的部分不会被擦除,如同外部EEPROM芯片,MPU的代码升级不影响EEPROM的内容。后面以内部EEPROM的写读作为范例。 基础写读函数 定义内部EEPROM的地址空间: //STM32L031K6T6 #define EEPROM_BASE_ADDR 0x08080000 #define EEPROM_BYTE_SIZE 0x03FF 基础字节写函数 //Byte write void FLASHEx_EEPROM_WRITE(uint16_t BiasAddress, uint8_t *Data, uint8_t len) { uint8_t i; HAL_StatusTypeDef status = HAL_OK; HAL_FLASHEx_DATAEEPROM_Unlock(); for(i=0;i<len;i++) { status +=HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_BYTE,

Linux: Instantiate from user-space : eeprom new_device

五迷三道 提交于 2019-12-25 03:49:10
问题 Environment : x86 / Ubuntu 14.04 I want obtain something similar to &i2c0 { eeprom: eeprom@50 { compatible = "at,24c32"; reg = <0x50>; }; }; But because in x86 no Device Tree is available, I am follow i2c/instantiating-device document in the Linux kernel and use "Method 4: Instantiate from user-space". Process to instantiate: Load at24 driver Load i2c-dev driver Instantiate: # echo eeprom 0x50 > /sys/bus/i2c/devices/i2c-0/new_device Response from kernel in dmesg: i2c i2c-0: new_device:

Arduino reading json from EEPROM / converting uint8_t to char

天涯浪子 提交于 2019-12-24 08:29:41
问题 I'm using ArduinoJSON to write a couple of data points to my EEPROM on Arduino Uno. I'm running into a problem with getGroundedPR where I need to convert a uint8_t to a char to pass retrieved data into my JSON parser. This is my first time using EEPROM so I'm willing to bet there's a better way to do this. Should I continue to use JSON or is there a better way? I'm being cautious of the 10k write limit (give or take) on the EEPROM. the EEPROM read/write is commented out until I have my

Linux DM9000网卡驱动程序完全分析

我是研究僧i 提交于 2019-12-23 09:27:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 说明1:本文分析基于内核源码版本为linux-2.6.31 说明2:本文在理解了linux中总线、设备和驱动模型的基础上加以分析代码 天猫爆款 联想 ibm ThinkPad E320 129862C 代替55C 笔记本 包邮 虽然Linux驱动程序应该是和具体的硬件平台分离的,但是为了更好的理解DM9000的驱动程序,这里还是结合一下Mini2440开发板,这样也可以更好的体会如何实现驱动和平台分离。 本文分成以下几个部分: 一、Mini2440开发板上DM9000的电气连接和Mach-mini2440.c文件的关系。 二、两个重要的结构体介绍:sk_buff和net_device 三、具体代码分析 一、Mini2440开发板上DM9000的电气连接和Mach-mini2440.c文件的关系 Mini2440开发板上DM9000与S3C2440的连接关系如下: 其中片选信号AEN使用了nGCS4,所以网卡的内存区域在BANK4,也就是从地址0x20000000开始。DM9000的TXD[2:0]作 为strap pin在电路图中是空接的,所以IO base是300H。中断使用了EINT7。这些内容在Mach文件中有如下体现: [c-sharp] view plain copy #define S3C2410

Verilog IIC通信实验笔记

╄→гoц情女王★ 提交于 2019-12-22 06:33:10
Verilog IIC通信实验笔记 Write by Gianttank 我实验的是 AT24C08的单字节读,单字节写,页读和页写,在高于3.3V系统中他的通信速率最高400KHZ的,我实验里用的是100KHZ的速率。图1是硬件原理图 图1 图2 图2是器件地址,我的原理图是A2接高。 IIC通信协议中要注意的地方: 1. 当时钟线SCL 高电平时,如果把数据线SDA 从高电平拉到低电平,则表示通信开始(START);如果把数据线SDA 从低电平拉到高电平,则表示通信结束(STOP)。SDA数据不变,视为数据采样。 2. 前一个STOP 结束后。与下一个START开始要保证5ms的间隔。 3. 页写有字节限制,而页读没有,可以一次读出所有的数据。 4. SDA信号在FPGA为接受方时要设置为高阻态。 5. 应答信号永远是接收方发送的,这个很重要,我就是卡在这里几天没找到原因。FPGA在读数据的时候,第9个周期是FPGA发低电平给EEPROM的。 图3为RTL视图 图3 引脚定义 信号名称 方向 描述 clk input 50M的主时钟 rst_n input 复位信号 sw1 input 按键1 低电平有效 按下执行字节写 sw2 input 按键2 低电平有效 按下执行字节读 sw3 input 按键3 低电平有效 按下执行 页写 sw4 input 按键4 低电平有效

Symptoms of EEPROM damage

こ雲淡風輕ζ 提交于 2019-12-18 12:39:12
问题 Suppose there is a bug in a Java Card applet: a temporary byte array is stored in EEPROM instead of RAM. Moreover, suppose this byte array is overwritten with each APDU. This bug should damage the card sooner or later. What symptoms could we expect? Incorrect values in the array without any explicit warnings or errors? Some exceptions thrown when accessing this array? The applet unselectable? The whole card completely unresponsive? Should the card be damaged "once and forever", or will these

FlASH && EEPROM

醉酒当歌 提交于 2019-12-12 10:45:41
原文:https://blog.csdn.net/qq_38405680/article/details/83048201 FLASH按扇区操作,EEPROM则按字节操作 ,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的 MCU 设计会集成FLASH和EEPROM两种非易失性存储器,而廉价型设计往往只有 FLASH,早期可电擦写型MCU则都是EEPRM结构,现在已基本上停产了。 在芯片的内电路中,FLASH和EEPROM不仅电路不同,地址空间也不同,操作方法和指令自然也不同,不论冯诺伊曼结构还是哈佛结构都是这样。技术上,程序存储器和非易失数据存储器都可以只用FALSH结构或EEPROM结构,甚至可以用“变通”的技术手段在程序存储区模拟“数据存储区”,但就算如此,概念上二者依然不同,这是基本常识问题。 EEPROM:电可擦除可编程只读存储器,Flash的操作特性完全符合EEPROM的定义,属EEPROM无疑,首款Flash推出时其数据手册上也清楚的标明是EEPROM,现在的多数Flash手册上也是这么标明的, 二者的关系是“白马”和“马” 。至于为什么业界要区分二者

Read EEPROM entry from linux module

筅森魡賤 提交于 2019-12-12 03:49:45
问题 I'm writing a linux driver for a custom RF board. The RF board have an EEPROM contain some information and I want to load this information to my driver. Linux kernel already has EEPROM module, this module read all memory of the EEPROM and export to userspace by sysfs. Can I read this sysfs to get EEPROM's memory? If not, how can I get this information? Thank you. 回答1: There are userspace applications which read the data exported by the eeprom module. So if you know Perl a bit, I suggest that

Read and write to spi eeprom on linux

主宰稳场 提交于 2019-12-11 04:57:07
问题 I want to use my spi eeprom (at25) under debian (Beaglebone Black). I have edited the device tree, so now i can read and write to eeprom. There is already a spi-at25-driver in Linux. Reading from eeprom cat /sys/class/spi_master/spi1/spi1.o/eeprom writing to eeprom echo hello > /sys/class/spi_master/spi1/spi1.o/eeprom But i want to write and read from specific address of the eeprom. Is there any way to do this within a C-Program? thx 回答1: As the eeprom here is mapped to a file representation