ZHCU813A April 2021 – February 2022 DLPC6540
获取引导暂停原因 | |
---|---|
返回参数 | |
字节 | 说明 |
字节 0 | 原因代码 0x00 BOOT_HOLD 跳线处于 HOLD 位置 0x01 已切换到由主要应用启动的编程模式 0x02 读取闪存信息失败 0x03 闪存布局不匹配 0x04 无法初始化 ARM 外设 0x05 无法分配存储器池 0x06 初始化任务失败 0x07 控制器无效,无法运行应用程序 0x08 USB 初始化错误 0x09 i2c 初始化错误 0x0A 获取应用配置时出错 0x0B 应用配置布局不匹配 |
返回指明处于引导加载程序模式的原因的代码。 |
获取闪存信息 | |
---|---|
读取参数 | |
字节 | 说明 |
字节 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 闪存。其他闪存片选在技术上是可选的,但却是启动界面捕获和扭曲操作所需的。 |
获取可编程闪存扇区信息 | |
---|---|
返回参数 | |
字节 | 说明 |
字节 0 - * | 扇区信息 位 0-31:扇区大小 位 32-47:扇区数量 |
此命令用于返回从符合 CFI 标准的闪存器件读取的闪存扇区信息。如果闪存不符合 CFI 标准,此命令将失败。此命令返回的扇区是唯一可用于闪存图像编程的扇区。根据系统设计,闪存图像位于连续的存储器空间中。如果系统具有多个闪存部件,则软件会检查 ChipSelect 0 处的闪存大小。如果此大小等于支持的最大大小 (32MB),则 ChipSelect 1 处的闪存器件(如果存在)也将支持闪存编程。同样,如果 ChipSelect 0 和 1 处的闪存器件大小均为 32MB,则 ChipSelect 2 处的闪存器件(如果存在)也将支持闪存编程。该命令用于附加每个部件的扇区信息以用于闪存编程,并将它们作为输出提供。 |
设置解锁闪存更新 | |
---|---|
写入参数 | |
字节 | 说明 |
字节 0-3 | 闪存更新锁定/解锁 0 = 锁定 4154802215 = 解锁 |
此命令用于解锁闪存更新操作(下载、擦除)。默认情况下,闪存更新操作是锁定的。这是为了防止意外修改闪存内容。若要进行解锁,应发送预定义的密钥作为解锁码。使用任何其他参数来调用此命令将锁定闪存更新命令。 |
获取解锁闪存更新 | |
---|---|
返回参数 | |
字节 | 说明 |
字节 0 | 0 = 已锁定 1 = 未锁定 |
此命令用于返回闪存是否处于未锁定状态。 |
设置擦除扇区 | |
---|---|
写入参数 | |
字节 | 说明 |
字节 0-3 | 扇区地址 |
此命令用于擦除指定地址所在的闪存扇区。此命令是一种闪存更新命令,需要使用解锁闪存更新命令来解锁闪存操作。扇区地址应指定为相对于闪存起始地址的偏移量。例如,在所有扇区大小均为 64KB 的闪存器件中,扇区地址应指定为如下形式: 扇区 0 = 0 扇区 1 = 0x10000 扇区 2 = 0x20000 依此类推... |
设置初始化闪存读写设置 | |
---|---|
写入参数 | |
字节 | 说明 |
字节 0-3 | 用于数据编程的起始地址偏移量,其中偏移量 0 表示闪存中的第一个字节,1 表示第二个字节,依此类推。此偏移量必须是偶数。 |
字节 4-7 | 这用于指定闪存写入命令需要的字节数或闪存读取命令应该返回的字节数。必须是偶数。 |
此命令用于初始化闪存读取/写入操作。应在发送闪存写入命令之前调用此命令。 注意:对于“闪存写入”,“地址”和下载大小设置均应为偶数。 |
设置闪存写入 | |
---|---|
写入参数 | |
字节 | 说明 |
字节 0 - * | 要写入闪存的数据 |
此命令用于将数据编程到闪存。只有在使用初始化闪存读写设置命令设置起始地址和大小后,才能调用此命令。此命令是一种闪存更新命令,需要使用解锁闪存更新命令来解锁闪存操作。 可以链接闪存写入命令,直到初始化的字节数完成编程。引导加载程序将自动递增每条命令的地址和大小。即使提供了更多数据,也只会对初始化的字节数进行编程。 为确保写入所有字节,仅为每条闪存写入命令发送偶数个字节非常重要。这样做是为了根据闪存器件支持的多字写入来优化所有闪存写入。 此命令用于支持可变大小的有效载荷。 |
获取闪存写入 | |
---|---|
读取参数 | |
字节 | 说明 |
字节 0-1 | 要在此命令中读取的字节数 |
返回参数 | |
字节 | 说明 |
字节 0 - * | 从闪存读取的字节数 |
此命令用于从闪存中读取数据。只有在使用初始化闪存读写设置命令设置起始地址和大小后,才能调用此命令。 可以链接闪存读取命令,直到返回初始化的字节数。引导加载程序将自动递增每条命令的地址和大小。只会返回初始化的字节数。在返回请求的数据后调用该函数将返回命令失败的信息。此命令用于支持可变大小的响应。 |
获取校验和 | |
---|---|
读取参数 | |
字节 | 说明 |
字节 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; } |
设置复位闪存 | |
---|---|
写入参数 | |
字节 | 说明 |
字节 0 |
片选 0 = 闪存片选 0 存储器域 1 = 闪存片选 1 存储器域 2 = 闪存片选 2 存储器域 |
此命令用于将连接给定片选信号的闪存器件复位。给定的任何不完整命令都会被重置,并且将闪存置于读取模式下。 |