0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在博途环境下载但不重新初始化数据块呢?

jf_61nrsJTz 来源:方正智芯 2023-11-10 09:25 次阅读

现场设备运行过程中有时候我们需要更改在线数据块的结构(比如增加一些变量),但是如果直接更改数据块并下载会导致其重新初始化。这意味着CPU会将数据块中变量的实际值用初始值替换,将会导致实际数据的丢失,甚至引起设备故障。一种变通的方法是:使用快照先将实际值保存到初始值,然后尽快修改下载。这种方法只适用于实际值短时间变化影响不大的情况。有没有一种方法既能更改在线数据块的结构,又不引起数据块重新初始化呢?答案是:有的。下面我来详细介绍下。本文包括如下几个主题:

结构性更改;

下载但不重新初始化的工作原理

重置预留存储区

1、结构性更改

默认情况下,数据块的结构性更改会导致其下载时重新初始化。

数据块的结构性更改包括:

①其中变量名称的更改;

②其中变量的增加或删除;

③其中变量保持特性的更改;

从上面描述来看,我们在数据块中增加变量属于结构性更改,怎样使其不重新初始化呢?这需要使用数据块的一个属性——预留存储区。

注①:初始值修改不属于结构性更改,因此下载时不会引起数据块重新初始化。

注②:这里的数据块既可以是全局数据块,也可以是函数块的背景数据块。

2、数据块下载但不重新初始化的工作原理

首先,只有“优化的块”才支持该功能。勾选“优化的块访问”属性的数据块或函数块默认有一个预留存储区,激活该预留区后,后续声明的变量/参数都存放在该区域中。

选中数据块,右键单击,选择【属性】菜单,可以看到“优化的块访问”选项,如下图所示:

5a9490c0-7f55-11ee-939d-92fbcf53809c.png

在上述属性对话框中,单击【下载但不重新初始化】。勾选【启用下载,但不重新初始化变量】便启用该功能。在【存储器预留区域】中设置预留存储区的大小,比如100字节;在【预留可保持型存储器】中设置保持型存储器的大小,如下图所示:

5aa72e7e-7f55-11ee-939d-92fbcf53809c.png

设置完成后单击【确定】,该数据块便有了设定大小的预留存储区,但尚未激活。在未激活的情况下,往数据块中添加的变量仍存放在默认存储区。如果进行了结构性更改,则下载时仍会提示需要重新初始化。

那么怎样激活呢?

打开数据块,在其上方有一个红色的、激活预留存储区的按钮,如下图所示:

5ab0e22a-7f55-11ee-939d-92fbcf53809c.png

单击该按钮会弹出一个对话框:

5ac3c7c8-7f55-11ee-939d-92fbcf53809c.png

单击【确定】后,再次往数据块中添加的变量,都存放在预留存储区中。此时下载不会再提示需要重新初始化。

3、重置预留存储区

随着变量的添加,预留存储区会越来越小。在【下载但不重新初始化】页面可以查看剩余的存储区字节数。若项目已经阶段性完成,可以在适当的时候将预留存储区的数据集成到常规存储区,以清空预留存储区便于后续使用。此时可以选中数据块并单击右键,在弹出的对话框中选择【编译】→【软件(复位存储器预留区域)】,如下图所示:

5ad404d0-7f55-11ee-939d-92fbcf53809c.png

系统会提示下载时需要重新初始化,单击【确定】,完成重置,此时预留存储区的可使用字节数恢复成设定值。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7534

    浏览量

    164487
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10922

    浏览量

    213283

原文标题:怎样在博途环境下载但不重新初始化数据块?

文章出处:【微信号:方正智芯,微信公众号:方正智芯】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    EE-359:ADSP-CM40x启动时间优化和器件初始化

    电子发烧友网站提供《EE-359:ADSP-CM40x启动时间优化和器件初始化.pdf》资料免费下载
    发表于 01-13 16:33 0次下载
    EE-359:ADSP-CM40x启动时间优化和器件<b class='flag-5'>初始化</b>

    EE-88:使用21xx编译器在C中初始化变量

    电子发烧友网站提供《EE-88:使用21xx编译器在C中初始化变量.pdf》资料免费下载
    发表于 01-13 15:54 0次下载
    EE-88:使用21xx编译器在C中<b class='flag-5'>初始化</b>变量

    LDC1614在使用过程中,ldc的数据会突然全变成0,并且只能复位重新初始化才会恢复,为什么?

    LDC1614在使用过程中,ldc的数据会突然全变成0,并且只能复位重新初始化才会恢复。我测试过,在使用过程中切断i2c信号线和时钟线都是会让数值变为0xffff,并且重新连接后不用
    发表于 01-02 08:01

    OMAP5912多媒体处理器初始化参考指南

    电子发烧友网站提供《OMAP5912多媒体处理器初始化参考指南.pdf》资料免费下载
    发表于 12-17 16:20 0次下载
    OMAP5912多媒体处理器<b class='flag-5'>初始化</b>参考指南

    STM32F407 MCU使用SD NAND 不断电初始化失效解决方案

    STM32F407微控制器单元(MCU)与SD NAND的结合提供了强大的存储解决方案。然而,不断电初始化失效问题可能会导致系统稳定性和数据完整性受损。我们将STM32F407与SD NAND集成时可能遇到的初始化问题,并提供专
    的头像 发表于 12-11 10:51 477次阅读
    STM32F407 MCU使用SD NAND 不断电<b class='flag-5'>初始化</b>失效解决方案

    何在同步主机模式下完成初始化并且获取到ADS131A04的数据

    我想要使用ADS131A04的同步主机模式,但是并没有找到相关的说明或者例程。我目前可以收到时钟信号并且可以在示波器上看到FF04的返回,因为时钟没有间隙所以使用spi从机去读取会一直收到0。我想知道如何在同步主机模式下完成初始化并且获取到adc的
    发表于 11-18 06:47

    基于旋转平移解耦框架的视觉惯性初始化方法

    精确和鲁棒的初始化对于视觉惯性里程计(VIO)至关重要,因为不良的初始化会严重降低姿态精度。
    的头像 发表于 11-01 10:16 463次阅读
    基于旋转平移解耦框架的视觉惯性<b class='flag-5'>初始化</b>方法

    TMS320C6000 McBSP初始化

    电子发烧友网站提供《TMS320C6000 McBSP初始化.pdf》资料免费下载
    发表于 10-26 10:10 0次下载
    TMS320C6000 McBSP<b class='flag-5'>初始化</b>

    何在i.MX RT微控制器上初始化LWIP协议栈

    在i.MX RT微控制器上初始化LWIP协议栈是一个复杂但有趣的过程,它涉及多个步骤和关键组件的配置.
    的头像 发表于 10-12 11:48 456次阅读
    如<b class='flag-5'>何在</b>i.MX RT微控制器上<b class='flag-5'>初始化</b>LWIP协议栈

    esp8266_rtos_sdk串口初始化异常是什么原因

    硬件环境:nodeMCU 我从github下载了最新的RTOS SDK,并且仅仅在初始化 user_init() 函数里添加了一个函数 uart_init_new() 然后编译。生成bin文件,
    发表于 07-11 06:04

    何在tc377启动软件时检查SSH实例的内存是否已初始化

    我有一个关于 SSH 内存初始化的问题。 问题是:如何在 tc377 启动软件时检查 SSH 实例的内存是否已初始化? 谢谢。
    发表于 05-22 06:48

    STM32F4重新初始化UART1,不能正常接收数据怎么解决?

    程序中UART1 一开始是正常接收数据,后面卸载UART1功能,将RX改成上升沿外部中断, 触发中断后 屏蔽外部中断,重新初始化UART1,但这时候不能正常接收数据。 伪代码如下
    发表于 03-25 07:07

    字符型、指针型等变量等该如何初始化

     对于数值类型的变量往往初始化为0,但对于其他类型的变量,如字符型、指针型等变量等该如何初始化
    的头像 发表于 03-18 11:02 1648次阅读

    用于电路初始化的微型电源电压监控器TPS3307系列数据

    电子发烧友网站提供《用于电路初始化的微型电源电压监控器TPS3307系列数据表.pdf》资料免费下载
    发表于 03-13 14:23 0次下载
    用于电路<b class='flag-5'>初始化</b>的微型电源电压监控器TPS3307系列<b class='flag-5'>数据</b>表

    MCU单片机GPIO初始化该按什么顺序配置?为什么初始化时有电平跳变?

    GPIO初始化时有时钟配置、模式配置、输出配置、复用配置,那么在编写初始化代码时,到底该按什么顺序执行?如果顺序不当那初始化过程可能会出现短暂的电平跳变。
    的头像 发表于 02-22 11:07 1707次阅读
    MCU单片机GPIO<b class='flag-5'>初始化</b>该按什么顺序配置?为什么<b class='flag-5'>初始化</b>时有电平跳变?