嵌入式linux开发中一些有用的shell脚本收集整理

来源:互联网 发布:js格式化时间戳format 编辑:程序博客网 时间:2024/05/17 03:43
应用场景:有的时候,我们想获取某个文件中的一部分,比如我们想从一个完整的flash image文件中只抽取kernel,或者file system。
特点:参数支持16进制,这对嵌入式开发很重要。
  1. #! /bin/sh

  2. #get a piece of content from a file.
  3. #$1:file name.
  4. #$2:offset of the file.[in hexdecimal]
  5. #$3:length of the piece of file you want to get.[in hexdecimal]
  6. #$4:the output piece of file name.

  7. #example:./get_piece_of_file.sh xxx_2M_FLASH.bin 0x1f0000 0x10000 config.bin

  8. OFFSET=`echo $(($2))`
  9. LEN=`echo $(($3))`

  10. dd if=$1 of=$4 bs=1 skip=$OFFSET count=$LEN

用dd命令扩展某个文件到指定的长度,然后用cat命令把两个文件连起来。
应用场景:把bootloader,kernel,file system连起来生成一个最终的image文件。
弱点:dd命令扩展某个文件的时候貌似不可以指定填充的内容。
示例:
  1. dd if=$BOOTLOADER_FILE_NAME of=bootloader_extend bs=$FS_OFFSET_DEC count=1 conv=sync
  2. cat bootloader_extend $FS_FILE_NAME >bootloader_fs


xxd命令的使用:
应用场景:有的时候,你需要通过某种bus加载一个image文件到系统的DSP或者某种控制器里面,image本身可以放在文件系统里面,但有的时候,你可以直接把image编进代码里。xxd可以帮你把image文件转成一个数组,并且还会定义一个与image length有关的变量。
示例代码:
  1. echo "you need load me to xxx chip by xxx bus and i will run in xxx chip" >xxx_chip_firmware.bin
  2. xxd -i xxx_chip_firmware.bin xxx_chip_firmware.bin.h

0 0
原创粉丝点击