3.4.4.1:写入芯片参数
1:介绍
PowerWriter 部分适配芯片,由于应用场景的不同,需要写入动态参数才可以实现特定的功能,因此PowerWriter 提供写入动态参数的接口,以实现对应的功能,以满足开发、生产时的特殊需求。
2:功能入口
以PowerWriter RV 为例,见 ‘PowerWriter RV 主界面 -> 菜单 -> 执行 -> 写入芯片工作参数‘按钮,如下图所示:
进入配置页面后,将看到如下的参数配置入口,如下所示
当某一个芯片需要进行特殊的配置时,可通过此界面写入特殊的参数以满足需求,具体查看芯片的配置教程,当填好好正确的值后,点击确定按钮,参数将传递给PowerWriter 设备,执行对目标芯片的初始化操作,点击取消则退出配置界面。
当前写入芯片参数最大支持的参数为256字节,当芯片参数不足256字节时,请从地址 0x00000000
开始进行排列,设备端将会根据实际芯片使用的参数数据量大小进行裁剪。
由于是尽可能通用的设计,所以编辑时,以字节为单位进行编写,并非以四字节对齐的方式进行强制对齐,不同芯片的配置教程,请参考后续章节的配置方法,可使用导入导出功能,快速进行配置信息的备份和恢复。
3:先缉半导体
先缉半导体的芯片,由于采用外部 FLASH,不同的产品,可能配置外部 Flash 时需要不同的参数,因此,在PowerWriter 的在线模式下,如果需要使用读取功能,读取Flash 数据,则需要先对外部Flash 进行参数配置,才能进行读取。
3.1:配置序列
如需启用读取功能,请参考芯片手册中关于 XPI NOR 配置选项章节内容,或者参考 hpm_sdk-main\boards\hpmxxxx\board.c 中关于Flash 配置的结构定义,以hpm6200evk 为例,结构如下所示:
/**
* @brief FLASH configuration option definitions:
* option[0]:
* [31:16] 0xfcf9 - FLASH configuration option tag
* [15:4] 0 - Reserved
* [3:0] option words (exclude option[0])
* option[1]:
* [31:28] Flash probe type
* 0 - SFDP SDR / 1 - SFDP DDR
* 2 - 1-4-4 Read (0xEB, 24-bit address) / 3 - 1-2-2 Read(0xBB, 24-bit address)
* 4 - HyperFLASH 1.8V / 5 - HyperFLASH 3V
* 6 - OctaBus DDR (SPI -> OPI DDR)
* 8 - Xccela DDR (SPI -> OPI DDR)
* 10 - EcoXiP DDR (SPI -> OPI DDR)
* [27:24] Command Pads after Power-on Reset
* 0 - SPI / 1 - DPI / 2 - QPI / 3 - OPI
* [23:20] Command Pads after Configuring FLASH
* 0 - SPI / 1 - DPI / 2 - QPI / 3 - OPI
* [19:16] Quad Enable Sequence (for the device support SFDP 1.0 only)
* 0 - Not needed
* 1 - QE bit is at bit 6 in Status Register 1
* 2 - QE bit is at bit1 in Status Register 2
* 3 - QE bit is at bit7 in Status Register 2
* 4 - QE bit is at bit1 in Status Register 2 and should be programmed by 0x31
* [15:8] Dummy cycles
* 0 - Auto-probed / detected / default value
* Others - User specified value, for DDR read, the dummy cycles should be 2 * cycles on FLASH datasheet
* [7:4] Misc.
* 0 - Not used
* 1 - SPI mode
* 2 - Internal loopback
* 3 - External DQS
* [3:0] Frequency option
* 1 - 30MHz / 2 - 50MHz / 3 - 66MHz / 4 - 80MHz / 5 - 100MHz / 6 - 120MHz / 7 - 133MHz / 8 - 166MHz
*
* option[2] (Effective only if the bit[3:0] in option[0] > 1)
* [31:20] Reserved
* [19:16] IO voltage
* 0 - 3V / 1 - 1.8V
* [15:12] Pin group
* 0 - 1st group / 1 - 2nd group
* [11:8] Connection selection
* 0 - CA_CS0 / 1 - CB_CS0 / 2 - CA_CS0 + CB_CS0 (Two FLASH connected to CA and CB respectively)
* [7:0] Drive Strength
* 0 - Default value
* option[3] (Effective only if the bit[3:0] in option[0] > 2, required only for the QSPI NOR FLASH that not supports
* JESD216)
* [31:16] reserved
* [15:12] Sector Erase Command Option, not required here
* [11:8] Sector Size Option, not required here
* [7:0] Flash Size Option
* 0 - 4MB / 1 - 8MB / 2 - 16MB
*/
参考如上结构,生成 option[0] ~ option[3] 的 DWORD 字节序列,注意一个 option 是四个字节,一共16字节,填入写入参数对面,点击确定按钮,然后写入操作,如果写入成功,则可以进行在线Flash 的读取操作,写入失败时,将得到对应的提示。