历史上的今天
返回首页

历史上的今天

今天是:2024年08月22日(星期四)

正在发生

2018年08月22日 | STM32 Flash读写;Flash地址对应的存储内容及方式

2018-08-22 来源:eefocus

概念:计算机中最小的信息单位是bit,也就是一个二进制位,8个bit组成一个Byte,也就是1个字节,

1个存储单元存放1个字节,每个存储单元对应一个32位(bit)地址,所以重要的话说三遍:对于32bit的ARM CPU

一个32位地址指向1个字节!!!  一个32位地址指向1个字节!!!   一个32位地址指向1个字节!!!

我们常说的flash空间,多少多少K,指的是多少多少K byte


假如我们执行下面的函数操作:

FlashWriteWord_P(0x1082,&WordVar); /* 向0x1082、0x1083中写入0xABCD */


经过编译,从map文件查看flash内容如下:



注意,前面的1080是十六进制,所以从0x1080到0x1090,共16个地址跨越,因为还有0x108A....0x108F


从这个map中,我们能发现一些问题


(1)验证了一个32位地址存放的是1个字节。


(2)将一个16位数,也就是2个字节,存放的顺序是低字节在前,高字节在后,这个跟感官上不一样。


(3)未存放数据的闪存单元是0xFF,这个不是巧合,因为flash说到底,内部也是只有1和0两种状态,CPU默认都是1.


另外,一个潜规定,向Flash中写数据,起始地址最好是偶数,否则容易出现错误,所以:


可以在0x1080、0x1081中存放一个uint16_t类型的数据;

可以在0x1082、0x1083中存放一个uint16_t类型的数据;

但是不能在0x1081、0x1082中存放一个uint16_t类型的数据。


从上可以看出,数据在flash中存放顺序是低在前,高在后,那么读flash时呢,答案是,会再反转,高在前,低在后,因为读flash必须一次至少读16位,不太允许读8位,所以正好又反过来了。


在编程时,要注意给要分配要存储的内容地址,每个数据对应地址,都是偶数,因为1个数据要占用2个地址。


推荐阅读

史海拾趣

Dearborn Electronics Inc公司的发展小趣事

Dearborn Electronics Inc.始终将品质放在首位,建立了严格的质量管理体系。公司从原材料采购到生产、检验、包装等各个环节都进行严格的质量控制,确保每一件产品都符合最高标准。此外,公司还不断引进先进的生产设备和技术,提高生产效率和产品质量。

D3 Semiconductor公司的发展小趣事

作为一家以技术创新为核心竞争力的公司,D3 Semiconductor始终保持对新技术、新应用的关注和研究。公司不断投入研发资源,推出了一系列具有创新性的半导体产品,满足了市场的多样化需求。这种持续创新的精神推动了D3 Semiconductor的不断发展,也使其在竞争激烈的电子行业中保持领先地位。

Data Translation Inc公司的发展小趣事

在电子行业中,市场竞争激烈、技术更新换代迅速。Data Translation在发展过程中也遇到了不少挑战和困难。但公司始终坚持以客户为中心、以技术创新为驱动的发展理念,积极应对市场变化和挑战。公司通过加大研发投入、优化产品结构、拓展市场渠道等方式不断提升自身的竞争力和适应能力。这些努力使公司在面对市场变化和挑战时能够保持稳健的发展态势。

德尔创(Dersonic)公司的发展小趣事

面对不断变化的市场环境和客户需求,德尔创始终坚持可持续发展的理念。公司注重环境保护和资源节约,积极推行绿色生产和循环经济。同时,德尔创还加强了内部管理和团队建设,通过优化流程和提高效率来降低成本和提升效益。对于未来,德尔创已经制定了明确的发展规划和目标,将继续加大在技术研发、市场拓展和品牌建设等方面的投入力度,努力成为全球电子元器件行业的领军企业之一。

Aavid Niagra公司的发展小趣事

为了拓展市场份额,Aavid Niagra公司开始实施全球化战略布局。公司先后在多个国家和地区设立了生产基地和研发中心,以便更好地服务当地客户。同时,公司还积极参与国际电子行业的交流与合作,不断提升自身的国际影响力。全球化战略的实施为公司带来了更多的发展机遇,也使其在全球电子散热市场上占据了重要地位。

博众电气(BZCN)公司的发展小趣事

在追求经济效益的同时,博众电气也始终关注环保问题。公司积极响应国家绿色发展的号召,将环保理念融入产品研发和生产过程中。通过采用环保材料和节能技术,博众电气成功降低了产品对环境的影响,实现了经济效益和环境保护的双赢。这一举措不仅提升了公司的社会形象,也为公司的可持续发展注入了新动力。

问答坊 | AI 解惑

ARM学习经验-开始贴

现在ARM处理器优点突出,正在日益成为嵌入式领域的标杆,大家上招聘网站看下就知道了,电子工程师岗位基本上都要求熟悉ARM或DSP,熟悉linux下程序开发。这对我们都是个挑战啊,为了赶上这班车,自己也开始了ARM学习之旅。以后,我会把自己的过程和 ...…

查看全部问答>

兼职:诚意找人编写PADS /AD电路设计的图书

我们现有关于PADS /Altium Designer 电路设计的图书选题,诚找有写书意向的作者合作。要求作者有一些实战经验和写作资源,有一定的业余时间、能够保证写作进度。有意者请直接发信 联系方式:haohong99@163.com、478057587(QQ)。欢迎有实践开发 ...…

查看全部问答>

附件格式要求

可不可以加一种doc的啊?word是咱们常用的处理工具啊!…

查看全部问答>

【大讲台】安森美半导体LED照明电源设计

【大讲台】安森美半导体LED照明电源设计 LED照明有着广阔的应用前景,其中LED照明电源的设计至关重要,但LED照明设计给包括中国工程师在内的工程社群带来了挑战,因为LED照明的应用范围非常广泛,应用的功率等级、可以采用的驱动电源种类及电源拓 ...…

查看全部问答>

WINCE 键盘驱动 '*' '.' 错误

请教各位高手:     现在我在做键盘驱动,发现一个问题,     我想 用某个按键做标准键盘里面的 * 和 . 两个符号,     我差了键盘值,         *   ----->  0x6a & ...…

查看全部问答>

界面开发的烦恼

做了1,2个EVC开发的项目。基本是工控的,就是触摸屏然后控制硬件完成一些动作。 用户总是对界面有点不满意,想弄得鲜艳一些,各种状态明了一些, 比如不同状态下换个颜色,贴个图片,按钮变成圆的等等。 但是大家都知道EVC控件种类实在是少,而 ...…

查看全部问答>

WINCE5.0 /6.0 EBOOT启动有何异同?

最近项目发生些意外,具体是因为2443的核心板原来使用的RAM是MobileDDR128MB,但是因为特殊情况改了普通DDR128MB的RAM后一直无法正常通过USB下载Stpldr/Eboot.bin/NK.bin WINCE6.0的项目在这种变更情况下出现问题了,可是WINCE5.0还是很正常,而且什么 ...…

查看全部问答>

CeGetLastError()的返回值为ERROR_ACCESS_DENIED

是这样的,写了一个DLL,放到手机上。(不需要考虑CPU问题,因为我是在POCKET PC 2003的平台下写的) 然后在PC端用CeRapiInvoke连接。 但是总是失败 使用CeGetLastError()得到的返回值为ERROR_ACCESS_DENIED,也就是错误码为5,拒绝访问。 有人 ...…

查看全部问答>

值得期待:全套家电概念呼之欲出

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 从2011年中国家电博览会启动仪式现场获悉,已成功举办了7届的家博会将首次变脸,除了传统的白色家电产品外,还将融合彩电、数码、音响等消费类电子产品。本届展会主办方也由中国家用电器协会一 ...…

查看全部问答>