应用场景:有的时候,我们想获取某个文件中的一部分,比如我们想从一个完整的flash image文件中只抽取kernel,或者file system。
特点:参数支持16进制,这对嵌入式开发很重要。
用dd命令扩展某个文件到指定的长度,然后用cat命令把两个文件连起来。
应用场景:把bootloader,kernel,file system连起来生成一个最终的image文件。
弱点:dd命令扩展某个文件的时候貌似不可以指定填充的内容。
示例:
xxd命令的使用:
应用场景:有的时候,你需要通过某种bus加载一个image文件到系统的DSP或者某种控制器里面,image本身可以放在文件系统里面,但有的时候,你可以直接把image编进代码里。xxd可以帮你把image文件转成一个数组,并且还会定义一个与image length有关的变量。
示例代码:
特点:参数支持16进制,这对嵌入式开发很重要。
- #! /bin/sh
- #get a piece of content from a file.
- #$1:file name.
- #$2:offset of the file.[in hexdecimal]
- #$3:length of the piece of file you want to get.[in hexdecimal]
- #$4:the output piece of file name.
- #example:./get_piece_of_file.sh xxx_2M_FLASH.bin 0x1f0000 0x10000 config.bin
- OFFSET=`echo $(($2))`
- LEN=`echo $(($3))`
- dd if=$1 of=$4 bs=1 skip=$OFFSET count=$LEN
用dd命令扩展某个文件到指定的长度,然后用cat命令把两个文件连起来。
应用场景:把bootloader,kernel,file system连起来生成一个最终的image文件。
弱点:dd命令扩展某个文件的时候貌似不可以指定填充的内容。
示例:
- dd if=$BOOTLOADER_FILE_NAME of=bootloader_extend bs=$FS_OFFSET_DEC count=1 conv=sync
- cat bootloader_extend $FS_FILE_NAME >bootloader_fs
xxd命令的使用:
应用场景:有的时候,你需要通过某种bus加载一个image文件到系统的DSP或者某种控制器里面,image本身可以放在文件系统里面,但有的时候,你可以直接把image编进代码里。xxd可以帮你把image文件转成一个数组,并且还会定义一个与image length有关的变量。
示例代码:
- echo "you need load me to xxx chip by xxx bus and i will run in xxx chip" >xxx_chip_firmware.bin
- xxd -i xxx_chip_firmware.bin xxx_chip_firmware.bin.h