linux内核从4.x升级到到5.4之后,输入cat /sys/fsl_otp/HW_OCOTP_CFG0 和cat /sys/fsl_otp/HW_OCOTP_CFG1都显示的没有这个文件 , 在搜索引擎中搜到原来是OCOTP 寄存器的机制变了,可以通过nvmem 接口读取 OCOTP 寄存器。
链接如下
https://community.nxp.com/t5/i-MX-Processors/IMX6UL-sys-fsl-otp-HW-OCOTP-LOCK-is-not-found-in-5-4-kernel/m-p/1079343
但是他的问题与我们这次发现的,仅仅是有关联,仍然需要确定,原来的HW_OCOTP_CFG0和HW_OCOTP_CFG1在nvmem中对应位置。
经过本人在升级前后做对比
使用下面脚本可以将原有的文件保存到etc下,因此,只需要在原来的代码处更改路径即可
4.x版本下读取内容为
root@myd-y6ull14x14:~# cat /sys/fsl_otp/HW_OCOTP_CFG0
0x5a9e9b09
root@myd-y6ull14x14:~# cat /sys/fsl_otp/HW_OCOTP_CFG1
0x223219d7
5.4版本内容使用nvmem如下
hexdump /sys/bus/platform/drivers/imx_ocotp/21bc000.ocotp-ctrl/imx-ocotp0/nvmem
已经确定位置之后,就可以 ,通过shell脚本,获取内容 并拼接保存
hexdump /sys/bus/platform/drivers/imx_ocotp/21bc000.ocotp-ctrl/imx-ocotp0/nvmem > /etc/nvmem
HW_OCOTP_CFG0_1=`cat /etc/nvmem | head -n 1 | awk '{print $4}'`
HW_OCOTP_CFG0_2=`cat /etc/nvmem | head -n 1 | awk '{print $5}'`
HW_OCOTP_CFG0=$HW_OCOTP_CFG0_2$HW_OCOTP_CFG0_1
HW_OCOTP_CFG1_1=`cat /etc/nvmem | head -n 1 | awk '{print $5}'`
HW_OCOTP_CFG1_2=`cat /etc/nvmem | head -n 1 | awk '{print $6}'`
HW_OCOTP_CFG1=$HW_OCOTP_CFG1_2$HW_OCOTP_CFG1_1
echo $HW_OCOTP_CFG0 > /etc/HW_OCOTP_CFG0
echo $HW_OCOTP_CFG1 > /etc/HW_OCOTP_CFG1