- 参考CPLD场外vme文件打包进行环境准备
- 需要修改package.sh文件中内容:
function update_image_filelist()
{
local sha256val=$(sha256sum devkit.hpm | awk '{print $1}')
cat <<EOF > image.filelist
Manifest Version: 1.0
Create By: openUBMC
Name: cpld_mf.hpm
SHA256-Digest: ${sha256val}
EOF
}
- 修改update.cfg文件。可以直接在csr_packet文件夹中的update.cfg进行修改:
这里以拓展版CPLD部件升级操作为例,以#表示注释,实际写入不需要注释
[Basic]
Version=1.0
Revision=14
[Firmware]
FileNum=2
# Firmware0文件实际就是valid.vme文件,这个文件时生效文件,根据华为反馈可以用一个bypass或者check id功能的空vme文件。Firmware0了吗除了UID、MultipleSuppliersMode、CPLDChipNummbers可以根据实际变化,其他的都不需要改动
[Firmware0]
ProductID=0
ComponentID=0
FRUID=0
DllLen=0
Updatefile=libupgrade_0.so
BoardID=65535
BoardIDList=65535
Uid=XXXX
MultipleSuppliersMode=1 # 我们用的是但厂商,一个CPLD。这里用1,还有2与3可行,实际使用会出问题。后面用1就能正常升级
CPLDChipNummbers=1
# Firmware1文件就是实现的cpld.vme文件。这个地方ComponentID需根据[固件ID管理](https://support.huawei.com/enterprise/zh/doc/EDOC1100078642/80b2be7f)配置。目前验证拓展版、风扇板都是5、硬盘背板用24
[Firmware1]
ProductID=0
ComponentID=5
FRUID=0
DllLen=0
Updatefile=libupgrade_5.so # 这里需要注意 libupgrade_ComponentID.so
BoardID=65535
BoardIDList=65535
Uid=XXXX
MultipleSuppliersMode=1
CPLDChipNummbers=1
- 修改hpm_devkit.config文件。调整文件中prepare_components值,确保prepare_components值为所有upload_components的或
//===============升级操作记录========================
//Upgrade action type.升级操作类型。
//00h = Backup component(s) 备份部件,如果不需要备份部件,action为0xff
//01h = Prepare component(s) 准备部件,如果不需要准备部件,action为0xff
//02h = Upload firmware image 上传软件镜像
backup_action = 0xff
backup_components = 0
prepare_action = 1
prepare_components = 0x00000021 #prepare_components值为所有upload_components的或
//上传软件镜像1
//版本辅助信息在文件中占用4字节,对应一个4字节长的16进制数,第一节对应这个数的低8位,其余类推。
//firmware_description为字符串
//file_name为这个镜像文件的文件名,这个文件必须和这个配置文件放在同一目录下
//这个镜像文件的文件路径从这个congfig文件的路径获取
//file_number表示这个部件里包含的文件个数
//firmware_description描述软件镜像的字符串,要适合显示给用户。最长21字节
//upload_components是掩码,相应bit代表相应的部件,比如值为8代表部件4,1代表部件1
//版本和IPMC一致
upload_action = 2
upload_components = 0x00000001
firmware_version = 5.16
auxiliary_firmware_revision = 0x00000000
firmware_description = CONFIG
file_number = 1
file_path = /data/conf.tar.gz
file_name = conf.tar.gz
upload_action = 2
upload_components = 0x00000020
firmware_version = 0.00
auxiliary_firmware_revision = 0x00000000
firmware_description = EEPROM
file_number = 1
file_path = /data/eeprom.tar.gz
file_name = eeprom.tar.gz
- 完成上述文件修改后,就可以进行CPLD打包操作了。打包分为三步:分别是package、签名、rebuild。
- 对cpld程序进行package:通过命令
./packet.sh package . False对CPLD进去打包。
- 对文件进行签名。参考自签名CA创建以及HPM签名指导。通过
hpm_signer -s signer.pem -t ts_signer.pem -T tsa.cnf -i image.filelist -o image.filelist.cms对package中生成的image.filelist进行签名。生成文件image.filelist.cms放入csr_packet文件夹中。
- 完成签名并将签名image.filelist.cms放入csr_packet文件夹后,执行
./packet.sh rebuild .进行打包。最终生成的devkit.hpm就是完成打包的CPLD程序。
2 个赞