30 for (i=0; i<33; i++) 31 { 32 | if ((i%16) == 0) 33 | { printf("%02d ",i-1); 34 | | printf("\n");} 35 | else 36 | printf("%02d ",i-1); 37 ····|···|···|···|···|···|···|···|···|···|··········· 38 } 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 .PHONY: $(noconfig_targets) for(i=0;i<16;i++) { libc_printf("-0x%x-",salt_key[i]); } libc_printf("\n %s-%d hmac val is: \n",__FUNCTION__,__LINE__); for(i=0;i<32;i++) { libc_printf("-0x%x-",output[i]); } libc_printf("\n"); GEN_HMAC_PRINTF("%s-%d: hamc fixed === === \n",__FUNCTION__,__LINE__); for (addr = 0; addr <= 0xff; addr ++) { if (!(addr % 4)) { printf("\n"); printf("0x%08X:", addr * 4); } otp_read(addr * 4, &value, 4); printf("%08X ", value); } printf("\nYour otp read end and succeed !\n"); { UINT8 *buf1 = NULL; buf1 = buf; int i=0; for (i=0; i<16; i++) { FIXED_PRINTF("%2.2x,",*buf++); } buf1 = NULL; FIXED_PRINTF("\n"); } 把show AV的数据 前面16个 打印出来 if ((i%16) == 0) FIXED_PRINTF("\n"); else FIXED_PRINTF("%02x ",*buf1++); RET_CODE bl_show_logo(UINT8 *buf, UINT32 len) {UINT8 *buf1 = NULL; buf1 = buf; for (int i=0; i<16; i++) { FIXED_PRINTF("%2x",*buf++); } buf1 = NULL; } for(i=0;i<16;i++) { libc_printf("-0x%x-",salt_key[i]); } for(i=0;i<32;i++) { libc_printf("-0x%x-",output[i]); } libc_printf("%d-%s(): 000 True (%x %x %x %x)\n",\ __LINE__, __FUNCTION__, salt_key[0], salt_key[1], salt_key[2], salt_key[3]); libc_printf("%d-%s(): True (%x %x %x %x)\n",\ __LINE__, __FUNCTION__, output[0], output[1], output[2], output[3]); libc_printf("%d-%s(): 000 True (%x %x %x %x)\n",\ __LINE__, __FUNCTION__, otp_value[0], otp_value[1], otp_value[2], otp_value[3]); libc_printf("%d-%s(): True (%x %x %x %x)\n",\ __LINE__, __FUNCTION__, otp_key_value[0], otp_key_value[1], otp_key_value[2], otp_key_value[3]); @##ifdef的使用和#if defined()的用法一致 \\alinet\tpe\DMS\STB\STB_Project\Fuse_setting\C3503D\OTP Fuse table OTP路径 原理图。 #undef TEST_A #undef TEST_CLASS_A #ifndef xxxx #endif #ifdef xxxx #endif #if defined(xxx) #endif #if (xx == 50)||(xx == 20) #endif #if defined(CONFIG_CMD_PCI) || defined (CONFIG_PCI) #endif #################### dd 命令 ############### dd if=loader_core.bin of=loader_core2.bin conv=notrunc 把文件loader_core.bin 和loader_core2.bin合并 比如loader_core.bin 有4行 loader_core2.bin 有5行 loader_core.bin 就会覆盖掉loader_core2.bin的前面4行,保留loader_core2.bin的第5行。 ########## len=$(stat -c %s u-boot.bin) padding_len=$((16-($len%16))) dd if=/dev/zero bs=1 count=$padding_len >> padding.bin cat u-boot.bin padding.bin > u-boot.bin.tmp cp u-boot.bin.tmp u-boot.bin rm padding.bin u-boot.bin.tmp cat u-boot.bin padding.bin > u-boot.bin.tmp 把u-boot.bin 和 padding.bin 按照先后顺序写入 u-boot.bin.tmp中 cat u-boot.bin padding.bin >> u-boot.bin.tmp 把u-boot.bin 和 padding.bin 按照先后顺序写入 u-boot.bin.tmp中,然后再次写入一次,共两次。 【生成2M全0xff文件】 '\000'是0,'\377'是255,即0-255 tr 命令 替换 把00 替换成 FF tr '\000' '\377' < /dev/zero | dd of=allones bs=1024 count=2k echo svvvvvvs > aa.sh 先清空,再写入 echo dsvvvvvvsd >> aa.sh 换行。追加写入 svvvvvvs dsvvvvvvsd |
|
来自: charlie_linux > 《linux》