ZHCU813A April   2021  – February 2022 DLPC6540

 

  1.   商标
  2. 范围
  3. 参考文献
  4. 首字母缩写词
  5. 系统引导
    1. 4.1 闪存中的数据
    2. 4.2 引导加载程序
    3. 4.3 主应用程序
    4. 4.4 引导加载程序和主应用程序支持的命令
    5. 4.5 调试终端
    6. 4.6 HOST_IRQ/SYSTEM_BUSY
    7. 4.7 心跳
    8. 4.8 低级故障
  6. 系统状态
  7. 版本
  8. 功耗模式
  9. 显示模式
  10. 源检测和配置
  11. 10内部源
    1. 10.1 测试图形 (TPG)
    2. 10.2 纯色域 (SFG) 颜色
    3. 10.3 幕布
  12. 11显示格式
  13. 12图像处理
  14. 13照明控制
  15. 14外设
    1. 14.1 GPIO
  16. 15接口协议
    1. 15.1 支持的接口
    2. 15.2 I2C 目标
    3. 15.3 USB
  17. 16命令协议
    1. 16.1 命令数据包
    2. 16.2 响应数据包
    3. 16.3 目标详细信息
    4. 16.4 错误处理和恢复
    5. 16.5 系统繁忙 - I2C 场景
      1. 16.5.1 GPIO 实现
      2. 16.5.2 短缺状态响应
    6. 16.6 支持可变数据大小
  18. 17自动初始化批处理文件
  19. 18命令说明
  20. 19系统命令
    1. 19.1  3D
    2. 19.2  管理事务
    3. 19.3  自动锁定
    4. 19.4  引导加载程序
    5. 19.5  校准
    6. 19.6  内部调试
    7. 19.7  调试
    8. 19.8  常规运行
    9. 19.9  照明
    10. 19.10 图像处理
    11. 19.11 外设
    12. 19.12 扭曲
    13. 19.13 手动 WPC
  21.   修订历史记录

引导加载程序

引导加载程序

表 19-21 引导暂停原因 [操作码:12h | 目标:1]
获取引导暂停原因
返回参数
字节说明
字节 0

原因代码

0x00 BOOT_HOLD 跳线处于 HOLD 位置

0x01 已切换到由主要应用启动的编程模式

0x02 读取闪存信息失败

0x03 闪存布局不匹配

0x04 无法初始化 ARM 外设

0x05 无法分配存储器池

0x06 初始化任务失败

0x07 控制器无效,无法运行应用程序

0x08 USB 初始化错误

0x09 i2c 初始化错误

0x0A 获取应用配置时出错

0x0B 应用配置布局不匹配

返回指明处于引导加载程序模式的原因的代码。

表 19-22 闪存信息 [操作码:20h | 目标:1]
获取闪存信息
读取参数
字节说明
字节 0

闪存器件的片选

0 = 闪存片选 0 存储器域

1 = 闪存片选 1 存储器域

2 = 闪存片选 2 存储器域

返回参数
字节说明
字节 0-1

制造商 ID

字节 2-9

器件 ID

字节 10-13

器件大小(以字节为单位)

字节 14 - *

扇区信息

位 0-31:扇区大小

位 32-47:扇区数量

字节 14

可用性

位 0:0 = 闪存可用于编程;1 = 闪存不可用于编程。

此命令用于返回闪存器件和制造商 ID。仅支持符合 CFI 标准的闪存器件。系统可以具有多个闪存器件。该命令用于返回在给定片选位置存在的闪存的信息。

注意:系统运行需要片选 0 闪存。其他闪存片选在技术上是可选的,但却是启动界面捕获和扭曲操作所需的。

表 19-23 可编程闪存扇区信息 [操作码:21h | 目标:1]
获取可编程闪存扇区信息
返回参数
字节说明
字节 0 - *

扇区信息

位 0-31:扇区大小

位 32-47:扇区数量

此命令用于返回从符合 CFI 标准的闪存器件读取的闪存扇区信息。如果闪存不符合 CFI 标准,此命令将失败。此命令返回的扇区是唯一可用于闪存图像编程的扇区。根据系统设计,闪存图像位于连续的存储器空间中。如果系统具有多个闪存部件,则软件会检查 ChipSelect 0 处的闪存大小。如果此大小等于支持的最大大小 (32MB),则 ChipSelect 1 处的闪存器件(如果存在)也将支持闪存编程。同样,如果 ChipSelect 0 和 1 处的闪存器件大小均为 32MB,则 ChipSelect 2 处的闪存器件(如果存在)也将支持闪存编程。该命令用于附加每个部件的扇区信息以用于闪存编程,并将它们作为输出提供。

表 19-24 解锁闪存更新 [操作码:22h | 目标:1]
设置解锁闪存更新
写入参数
字节说明
字节 0-3

闪存更新锁定/解锁

0 = 锁定

4154802215 = 解锁

此命令用于解锁闪存更新操作(下载、擦除)。默认情况下,闪存更新操作是锁定的。这是为了防止意外修改闪存内容。若要进行解锁,应发送预定义的密钥作为解锁码。使用任何其他参数来调用此命令将锁定闪存更新命令。

获取解锁闪存更新
返回参数
字节说明
字节 0

0 = 已锁定

1 = 未锁定

此命令用于返回闪存是否处于未锁定状态。

表 19-25 擦除扇区 [操作码:23h | 目标:1]
设置擦除扇区
写入参数
字节说明
字节 0-3

扇区地址

此命令用于擦除指定地址所在的闪存扇区。此命令是一种闪存更新命令,需要使用解锁闪存更新命令来解锁闪存操作。扇区地址应指定为相对于闪存起始地址的偏移量。例如,在所有扇区大小均为 64KB 的闪存器件中,扇区地址应指定为如下形式:

扇区 0 = 0

扇区 1 = 0x10000

扇区 2 = 0x20000

依此类推...

表 19-26 初始化闪存读写设置 [操作码:24h | 目标:1]
设置初始化闪存读写设置
写入参数
字节说明
字节 0-3

用于数据编程的起始地址偏移量,其中偏移量 0 表示闪存中的第一个字节,1 表示第二个字节,依此类推。此偏移量必须是偶数。

字节 4-7

这用于指定闪存写入命令需要的字节数或闪存读取命令应该返回的字节数。必须是偶数。

此命令用于初始化闪存读取/写入操作。应在发送闪存写入命令之前调用此命令。

注意:对于“闪存写入”,“地址”和下载大小设置均应为偶数。

表 19-27 闪存写入 [操作码:25h | 目标:1]
设置闪存写入
写入参数
字节说明
字节 0 - *

要写入闪存的数据

此命令用于将数据编程到闪存。只有在使用初始化闪存读写设置命令设置起始地址和大小后,才能调用此命令。此命令是一种闪存更新命令,需要使用解锁闪存更新命令来解锁闪存操作。

可以链接闪存写入命令,直到初始化的字节数完成编程。引导加载程序将自动递增每条命令的地址和大小。即使提供了更多数据,也只会对初始化的字节数进行编程。

为确保写入所有字节,仅为每条闪存写入命令发送偶数个字节非常重要。这样做是为了根据闪存器件支持的多字写入来优化所有闪存写入。

此命令用于支持可变大小的有效载荷。

获取闪存写入
读取参数
字节说明
字节 0-1

要在此命令中读取的字节数

返回参数
字节说明
字节 0 - *

从闪存读取的字节数

此命令用于从闪存中读取数据。只有在使用初始化闪存读写设置命令设置起始地址和大小后,才能调用此命令。

可以链接闪存读取命令,直到返回初始化的字节数。引导加载程序将自动递增每条命令的地址和大小。只会返回初始化的字节数。在返回请求的数据后调用该函数将返回命令失败的信息。此命令用于支持可变大小的响应。

表 19-28 校验和 [操作码:26h | 目标:1]
获取校验和
读取参数
字节说明
字节 0-3

用于校验和计算的起始地址偏移量,其中偏移量 0 表示闪存中的第一个字节,1 表示第二个字节,依此类推。

字节 4-7

要计算校验和的字节数

返回参数
字节说明
字节 0-3

简单加法校验和

字节 4-7

在每个地址计算的简单加法校验和的总和

此命令用于计算并返回从给定地址开始的指定字节数的校验和。校验和的计算方式如下:

uint32 SimpleChecksum = 0;

uint32 SumofSumChecksum = 0;

uint08 *Addr = (uint08 *) StartAddress;

while (NumBytes--)

{

SimpleChecksum += *Addr++;

SumofSumChecksum += SimpleChecksum;

}

表 19-29 复位闪存 [操作码:27h | 目标:1]
设置复位闪存
写入参数
字节说明
字节 0

片选

0 = 闪存片选 0 存储器域

1 = 闪存片选 1 存储器域

2 = 闪存片选 2 存储器域

此命令用于将连接给定片选信号的闪存器件复位。给定的任何不完整命令都会被重置,并且将闪存置于读取模式下。