完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我正在考虑将我的应用程序的一些校准数据存储到FLASH存储器中,因为我的EEPROM空间非常有价值,而且我无法保留任何数据。校准数据只能写入一次(在设备第一次上电时),然后每次上电时都会读取。 做这种事情的好方法是什么?我可以“保留”一些FLASH,以便编译器不会将该特定位置用于主程序吗? 谢谢 以上来自于谷歌翻译 以下为原文 Hello, I'm looking into storing some calibration data for my application into FLASH memory since my EEPROM space is very valuable and I cannot spare any of it. The cal data would only be written once (upon the first powerup of the device) and from then on would be read everytime on powerup. What is a good way of doing this sort of thing? Can I ''reserve'' some FLASH so that the compiler doesn't use that particular location(s) for the main program? Thanks |
|
相关推荐
1个回答
|
|
你可以做到这一点。 C编译器有特殊的关键字,它将数据放入flash(或eeprom)。
只需在闪存区域的专用地址保留足够的大字节数组(请参阅文档中的“内存组织”)。 你甚至可以做两个项目。其中一个包含唯一的可执行代码和指针在闪存中的数据专用区域中执行固定地址。第二个是唯一的数据。 .hex文件可以单独写入芯片。 另一方面,STM8器件中的闪存不能同时读写,因此,写入代码不能从闪存执行。因此,如果您想通过芯片本身将校准数据写入主闪存区域,则必须准备写入存储到RAM的程序,然后将其从Flash复制到RAM,然后从RAM执行写入代码。 请参阅芯片和STM8 Ref Man的数据表,4.6.1。 因此,最好选择具有足够EEPROM的芯片,或连接任何外部数据存储器,或使用更先进的STM32器件。 以上来自于谷歌翻译 以下为原文 You can do that. C compilers have special keyword which puts the data to flash(or to eeprom). Just reserve enough big byte array at dedicated address in the flash area (refer to ''memory organization'' in the docs). You could even make two projects. One of them contains the only executable code and pointer do the fixed address in your data-dedicated area in flash. The 2nd one has the only data. .hex files could be written to the chips separately. On the other hand, flash memory in STM8 devices can't be read and written at the same time, and, thus, the writing code can't be executed from flash. So if you wanna write calibration data to main flash area by the chip itself, you have to prepare writing procedure for storing to RAM, then copy it from Flash to RAM, then execute the writing code from RAM. See datasheet for your chip and STM8 Ref Man, 4.6.1. So, it's better for you to choose a chip with enough EEPROM, or connect any external data storage, or use STM32 devices, which are more advanced. |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2798 浏览 1 评论
3258 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1832 浏览 1 评论
3682 浏览 6 评论
6079 浏览 21 评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
384浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
473浏览 2评论
STM32处理增量式编码器Z信号如何判断中断是正转的还是反向转的?
303浏览 2评论
使用STM32F407VET6的USB2.0功能,发现ctl后芯片无数据返回,是什么原因可能导致的呢?
222浏览 2评论
用STM32G431开发工程,1.50版本的Package包文件无法输出项目工程
328浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-24 01:29 , Processed in 1.052842 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号