贴片电感
贴片电感
・  当前位置::扁平线圈电感 > 行业新闻
在MAX-IDE中自动初始化数据段
作者:    来源:    时间:2014-12-28 12:04:35浏览量:

MAX-IDE的段声明
决定在基于SRAM的数据存储器存储应用程序变量时,如何确定变量的存储地址?

通常,除了调试器使用的最高32个字节的存储空间外,应用程序可以使用其它所有数据存储器。这意味着声明一个变量即可定义其在数据存储器中的位置。程序可通过该地址对变量进行读写,用#define宏命令将变量地址和符号名称关联起来。

#define VarA #0020h
#define VarB #0021h
#define VarC #0022h

move DP[0], VarA ; Point to VarA variable
move Acc, @DP[0] ; Read value of variable
move DP[0], VarB ; Point to VarB variable
move @DP[0], Acc ; Copy VarA to VarB
move DP[0], VarC ; Point to VarC variable
move @DP[0], #1234h ; Set VarC = 123工字电感4h


这种方案可以很好地工作,但是有几个问题需要注意。

必须事先定义每个变量的地址,这项工作比较耗时,特别是确定随后将所有变量移至不同的数据存储区域时。
必须注意一个以上的变量不要占用同一地址,如果发生这种错片式电感器误将很难追踪这些故障。
变量的初始(开始)值必须通过应用程序装载,如上述程序的最后一行。如果有多个变量按照这种方式初始化将会占用大量的程序空间。
比较有效的方案是利用MAX-IDE机制分别声明程序段和数据段。这种方法允许编程人员指定汇编程序的哪一部分定义为程序空间,哪一部分定义为数据空间。

segment code

move DP[0], #VarA ; Point to VarA
move Acc, @DP[0] ; Get current value of VarA
add #1 ; Increment it
move @DP[0], Acc ; Store value back in VarA

segment data

VarA:
dw 0394h ; Initial value for VarA


利用上述方案,在数据段声明的变量地址由编译器解析文件时自动指定,用同样方法为程序空间分配地址标签。标签用于对变量地址指定符号名称,dw和db声明可以在初始化变量时用于设置字宽或字节宽度初始值。这种情况下,假定汇编文件中事先没有segment data指令,编译器将从0000h地址起始数据段。这意味着VarA将存储在字地址0000h。对于程序空间,org声明将强制变量从指定的起始地插件电感器址开始存储。

数据段初始化
在先前的程序清单中,变量VarA定义(用dw声明)的初始值为0394h。但是,该值在程序中并不装载到VarA。那么,如何初始化这一数值? 答案是在编译和运行工程时,MAX-IDE将自动执行数据段初始化。

MaxQAsm编译器通过产生一个二级hex输出文件响应segment data指令。通常,为工程产生的hex文件包含程序数据。例如,如果编译工程"example.prj",将产生一个名称为"example.hex"的hex文件,并包含通过编译工程文件产生的程序数据。如果定义了数据段,则将产生一个名称为"example_d.hex"的附加hex文件,该文件包含该段编译数据。

执行工程时,MAX-IDE检查是否在工程编译中产生了数据段文件(以_d.hex结尾)。如果存在数据段文件,MAX-IDE通过标准的JTAG装载器将该段数据装载到器件的数据SRAM。该过程在标准的hex文件装载到程序存储器之后执行。

这种方案能够很好地工作在开发阶段,当器件连接到JTAG适配器,在应用程序运行之前,MAX-IDE重新装载程序数据和段数据。但是,一旦器件掉电并重新上电,而且允许独立运行(没有连接调试器),在每次运行前MAX-IDE将无法正确装载数据段。变量也无法设置在所要求的数值,导致应用程序不能正确执行。这种故障很难分析,因为一旦器件重新连接到调试器,MAX-IDE将在每次运行前重新开始装载数据段,问题也就消失了。

保存和恢复数据段
一个遗留问题是:一体电感如何使应用程序在连接调试器(每次运行前MAX-IDE重新装载程序和数据)和独立运行(上电后RAM内容不确定)时都能保持工作。显然,解决方法需要两个步骤:应用程序将变量值(一旦经过初始化)保存到闪存,每次复位或上大电流电感电后重新装载这些数值。

对于第一步,应用程序必须将数值保存到闪存。每次主机擦除或装载程序后第一次运行应用程序时执行该操作。

应用程序检测“标志”位置以验证变量之前是否复制到闪存内。该标志可以存储在特殊功能、非易失存储器,或与变量共用存储器,只要变量具有非零初始值(与空RAM地址区分开)。
应用程序将每个变量值从数据RAM复制到闪存,绝大多数带有可重复写操作闪存的MAXQ微控制器(如MAXQ2000)利用UROM_flashWrite函数实现。 扁平线圈电感制造厂

  • 基于Arm的电子束焊机灯丝电源的设计方案 4月08日 第三届·无线通信技术研讨会 立即报名 12月04日 2015•第二届中国IoT大会 精彩回顾 10月30日ETF•智能硬件开发技术培训会 精彩回顾 10月23日ETF•第三届 消费

  • [电源技术资料]高性价比大功率单段线性 PM2014DPM2014D产品介绍-大功率单段线性驱动芯片产品特点 ☆TO-252封装 ☆单颗最大功率可做50W ☆最简配置可过4KV浪涌 ☆PF>0.9 ☆内置过温补偿50W最简方案! 可过4KV浪涌PM2014D方案介绍—40W原理图  浪涌要求    对应方案    500V    5.1Ω/1W*1   无压敏    1000V    5.1Ω/1W*1+7D471 *1    2500V    7.5Ω/1W*1+10D471 *1    4000V    15Ω/2W*1+10D471 *1  PM201

  • 想用358/324/393/339/做一个24V欠压保护想用358/324/393/339/做一个24V欠压保护,但是网上只有12V的,麻烦大家帮忙画个24V欠压保护电路,低于21就保护,谢谢大家

  • 上一篇:CCD信号采集系统的USB接口设计