最近在项目里要实现出厂机身UID的存储,至于保存在哪儿是个问题。在SDK的工具包里有个SN_WERITER的工具,尝试使用多次后发觉此软件有问题,后来电话全志开发人员,他们很确定告诉此工具已经停止维护。
后来就直接在flash分区中将nandj作为不可擦除的分区:
在lichee\tools\pack\chips\sun7i\configs\android\wing-k70\sys_partition.fex中将nandj分区改为如下设置:
[partition]
name = private
size = 32768
keydata = 1 私有数据分区,重新量产数据将不丢失
ro = 0
但是应用层怎么使用这个分区,那就需要挂载此分区:
在adb shell 中查看/dev/block/的分区状况;
nandj分区被链接在private,现在就需要把private链接挂载到根目录下:
在android\device\softwinner\wing-k70\init.sun7i.rc中增加如下操作:
在on early-init中创建目录private1
mkdir /private1 0000 system system
并且增加挂载的操作:
#try to mount /private1
wait /dev/block/private
mount ext4 /dev/block/private /private1 wait noatime nosuid nodev barrier=0
setupfs /dev/block/private
umount /private1
exec /system/bin/logwrapper /system/bin/e2fsck -y /dev/block/private
exec /system/bin/busybox mount -t ext4 -o noatime,nosuid,nodev,barrier=0,journal_checksum,noauto_da_alloc /dev/block/private /private1
保存然后重新编译打包,烧录固件后在根目录下就会出现private1的目录:
后来尝试在private1中创建文件,然后重新升级固件,重新启动后文件并没有删除,成功!