劳特巴赫脚本学习二

数组的使用:

Var.NEWLOCAL char[&VARIANTS_COUNT][0x20] \SPACE_VARIANTS
Var.set \SPACE_VARIANTS[0x00]=""
Var.set \SPACE_VARIANTS[0x01]="&SPACE_BOOTLOADER"
Var.set \SPACE_VARIANTS[0x02]="&SPACE_APPLICATION"
Var.set \SPACE_VARIANTS[0x03]="&SPACE_GM_NVM"
Var.set \SPACE_VARIANTS[0x04]="&SPACE_GM_CALLIBRATION"
Var.set \SPACE_VARIANTS[0x05]="&SPACE_STS"
Var.set \SPACE_VARIANTS[0x06]=""
  • Var.NEWLOCAL:这是定义局部变量的指令。char[&VARIANTS_COUNT][0x20] 表示定义一个局部二维字符数组,&VARIANTS_COUNT 是行数,0x20 是每行的长度(32个字符)。\SPACE_VARIANTS 是这个变量的名字。
  • Var.set:这是设置变量值的指令。它将每个索引处的 \SPACE_VARIANTS 数组元素设置为指定的字符串。

输入参数的获取

  获得输入参数:通过 ENTRY 命令接受输入参数并赋值给相应的全局变量。

ENTRY &_operation &_variant &_operation_file ;input
  • ENTRY:这是一个输入命令,它将输入的参数分配给 _operation_variant 和 _operation_file 这三个全局变量。输入的参数可以通过命令行或其他方式传递给脚本。
  • &_operation&_variant&_operation_file:这三个变量是全局变量,用于接收从外部传递进来的参数。
  • ;input:分号后面的内容通常是注释。注释部分在脚本运行时不会被执行,它主要用于说明代码的作用或提供额外的信息。在CMM脚本中,分号 ; 表示注释的开始,后面的所有内容都是注释。例如,这里的 ;input 表示注释,说明这行是用于输入参数。

对输入参数检查字符串长度并设置变量

IF (STRing.LENgth("&_variant")>0)
(
    &SELECTED_VARIANT=&_variant
    PRINT "SELECTED_VARIANT: &SELECTED_VARIANT"
)
IF (STRing.LENgth("&_operation")>0)
(
    &SELECTED_OPERATION=&_operation
    PRINT "SELECTED_OPERATION: &SELECTED_OPERATION"
)
IF (STRing.LENgth("&_operation_file")>0)
(
    &OPERATION_FILE="&_operation_file"
    PRINT "OPERATION_FILE: &OPERATION_FILE"
)
  • IF:这是条件判断语句。如果条件为真,则执行括号内的语句。
  • STRing.LENgth:这是一个字符串函数,返回字符串的长度。
  • PRINT:这是一个打印命令,用于在控制台输出信息。

经常使用指令介绍:

  • SYSTEM 指令用于控制和管理目标系统。
  • FLASH 指令用于闪存操作,包括擦除、编程和配置。
  • DATA 指令用于内存和数据操作,包括数据加载、保存和设置。
  • AREA 指令用于定义和管理内存区域。

SYSTEM 指令

SYSTEM 相关指令主要用于控制和管理目标系统,常用于调试和开发过程中。

  1. SYStem.RESetTarget

    • 作用:重置目标系统。
    • 示例
      SYStem.RESetTarget
  2. SYStem.Mode

    • 作用:设置系统模式,如 RUNHALT 等。
    • 示例
      SYStem.Mode HALT
  3. SYStem.Up

    • 作用:启动目标系统。
    • 示例
      SYStem.Up
  4. SYStem.Down

    • 作用:停止目标系统。
  5. 示例
    SYStem.Down

FLASH 指令

FLASH 相关指令用于闪存操作,包括擦除、编程和配置等。

常见指令及其作用
  1. FLASH.AUTO

    • 作用:启用或配置闪存自动操作模式。
    • 通常情况下,当启用 FLASH.AUTO 模式后,你只需要提供目标地址和数据文件,系统会自动执行以下步骤:擦除闪存(Erase),编程闪存(Program),验证闪存(Verify)

    • 示例
      FLASH.AUTO ED:&SPACE_CURRENT_OPERATION
  2. FLASH.Erase

    • 作用:擦除指定的闪存区域。
    • 示例
      FLASH.Erase ED:&SPACE_CURRENT_OPERATION
  3. FLASH.Program

    • 作用:编程(写入)指定的闪存区域。
    • 示例
      FLASH.Program &MY_FILE ED:&SPACE_CURRENT_OPERATION
  4. FLASH.Verify

    • 作用:验证闪存区域是否正确编程。
    • 示例
      FLASH.Verify &MY_FILE ED:&SPACE_CURRENT_OPERATION

DATA 指令

DATA DATA 指令主要用于操作内存数据,包括加载、保存、设置和修改内存中的数据。它们是调试和编程过程中非常重要的工具。

常见指令及其作用
  1. Data.LOAD.Elf

    • 作用:加载 ELF 文件到目标系统。
    • 示例
      Data.LOAD.Elf &OPERATION_FILE /NoCode
  2. Data.LOAD.AUTO

    • 作用:自动加载数据文件到指定内存区域。
    • 示例
      Data.LOAD.AUTO &OPERATION_FILE ED:&SPACE_CURRENT_OPERATION
  3. Data.Set

    • 作用:设置指定内存区域的数据值。
    • 示例
      Data.Set ED:&SPACE_CURRENT_OPERATION %Long 0x00
      Data.Set 0x20000000 %Long 0x12345678
      Data.Set 0x20000004 %Byte 0x1A
  4. DATA.SAVE.S3record

    • 作用:保存数据为 S3 记录文件。
    • 示例
      DATA.SAVE.S3record "HWIO_PROF.ptp" &SPACE_BOOTLOADER||&SPACE_APPLICATION||&SPACE_GM_NVM||&SPACE_GM_CALLIBRATION||&SPACE_STS /SkipErrors
  5. DATA.SAVE.Bin

    • 作用:将内存数据保存为二进制文件。
    • 示例
      Data.SAVE.Bin memory_dump.bin 0x20000000--0x2000FFFF

  6.   DATA.Compare
    • 作用:比较内存中的数据和文件中的数据。
    • 示例
      Data.Compare 0x08000000 firmware.bin

AREA 指令

AREA 指令用于定义和管理内存区域,通常用于批量操作或分段管理内存。它们并不直接改变内存数据,但可以帮助组织和管理这些数据。

常见的 AREA 指令及其作用
  1. AREA

    • 作用:定义一个内存区域。
    • 示例
      AREA MyArea 0x20000000..0x20000FFF
  2. AREA.Select

    • 作用:选择一个已定义的内存区域以进行操作。
    • 示例
      AREA.Select MyArea
  3. AREA.Clear

    • 作用:清除一个已定义的内存区域。
    • 示例
      AREA.Clear MyArea
  4. AREA.Fill

    • 作用:用指定的值填充一个已定义的内存区域。
    • 示例
      AREA.Fill MyArea %Long 0xFFFFFFFF
  5. AREA.RESet

    • 作用:重置所有定义的内存区域。
    • 示例
      AREA.RESet

 

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值