燒寫SD卡指令碼

2021-09-01 05:50:09 字數 2847 閱讀 1246

#!/bin/bash

# $n 指令碼引數n

# $* 所有引數,將所有引數視為乙個字串

# $@ 所有引數,不含$0,將所有引數視為單個字串

# $# 引數個數

# shift 引數左移,$#自動-1

# test expression 或者用 [expression] 代替 , 判斷條件 [ = != -z(==0) -n(!=0) str(=="")(字串判斷) -eq -le -ge -lt -gt -ne(int判斷)-a(and) -o[or] ! ]

# test file [-d dir -e 存在 -f file -r 程序可讀檔案 -s file長度不為0 -w 程序可寫檔案 -x 可執行檔案 -l file為符號化鏈結]

# "" $有效

# '' $無效

# `` 命令有效

# 數值運算方法

# 1.sum=`expr $1 + $2` #要用空格隔開各個引數 \* /

# 2.sum=$(($1 + $2))

# 3.sum=$(expr $1 + $2)

# 字串操作

# str=absdfadf , string必須是變數

# $ 字串長度

# expr match "$1" "$2" /expr $1 : $2 匹配子串開頭的子串長度

# expr index $1 $2 子串索引

# $ 提取子串

# $ 截掉最短匹配的子串 $ 最長匹配

# #換成%則表示從結尾開始

# $ 替換匹配到的第乙個字串

# $ 所有

# $ 從結尾開始

# $ 如果子串是字串開頭則替換

# basename / dirname 檔名/目錄名擷取

block_size=512 #b

env_bsize=32

bl2_bsize=600

bl1_bsize=16

x=$(($bl2_bsize * $block_size))

flag=0

if [ ! -f $1 ] #判斷檔案是否存在

then

echo "file not exist!"

else

file_name=`basename $1`

dir_name=`dirname $1` #獲取dir不含最後乙個/

echo "generate sd_writer_file.bin.temp file"

cp $1 $/sd_writer_file.bin.temp

dd if=/dev/zero bs=1 count=1 seek=$x of=$/sd_writer_file.bin.temp

echo "generate sd_writer_file.dev.temp file"

sudo fdisk -l > $/sd_writer_file.dev.temp

if [ `dirname $2` != "/dev" ]

then

echo "sd not exist!"

else

# for i in `cat $/sd_writer_file.dev.temp`

# do

# echo $i

# if [ $i = $2: ]

# then

# # break

# fi

# done

cat $/sd_writer_file.dev.temp | while read line

do flag=0

for i in $line

doif [ $flag -eq 0 -a $i = "disk" ]

then

flag=$(( $flag + 1 ))

fiif [ $flag -eq 1 -a $i = $2: ]

then

flag=$(( $flag + 1 ))

fiif [ $flag -ge 2 ]

then

flag=$(( $flag + 1 ))

fiif [ $flag -eq 6 ]

then

break

fidone

if [ $flag -eq 6 ]

then

seek=$(( $i / $block_size - 1024 - 2 - $bl1_bsize ))

#echo "sudo dd if=$/sd_writer_file.bin.temp of=$2 bs=$block_size count=$bl1_bsize seek=$seek"

sudo dd if=$/sd_writer_file.bin.temp of=$2 bs=$block_size count=$bl1_bsize seek=$seek

seek=$(( $i / $block_size - 1024 - 2 - $bl1_bsize - $env_bsize - $bl2_bsize ))

#echo "sudo dd if=$/sd_writer_file.bin.temp of=$2 bs=$block_size count=$bl2_bsize seek=$seek"

sudo dd if=$/sd_writer_file.bin.temp of=$2 bs=$block_size count=$bl2_bsize seek=$seek

break

fidone

fi echo "remove all sd_writer_file.*.temp file"

rm -rf $/sd_writer_file.*.temp

fi

mini2440 SD卡燒寫系統

mini2440 已經支援通過 sd 卡離線燒寫系統,即燒寫系統不再需要 pc 和 usb 資料 線,這個功能需要借助 nor flash 中的 superboot 來進行,mini2440 開發板在出廠時已經往 nor flash 中燒寫好 superboot,無需客戶自行燒寫,你只需要做的是 準...

dm365 SD卡燒寫工具使用

目標平台 tms320dm365 開發平台 ubuntu10.04 首先插入sd卡,在 dev 下找到sd卡的裝置節點號,我的是 dev sdb,有乙個分割槽 dev sdb1,我是通過把 dev sdb1掛載到乙個臨時目錄檢視裡面的內容確認的,確認後解除安裝 dev sdb1 mount dev ...

彙編 LED驅動 燒寫bin檔案到SD卡

stm32燒寫到內部flash 6ull支援sd卡,emmc,nand,nor,spi flash等等啟動。邏輯例程選擇燒寫到sd卡裡面,將sd卡插在開發板上,選擇從sd卡啟動。燒寫前,將tf卡格式化,fat32格式。在unbuntu下向sd卡燒寫裸機bin檔案。燒寫不是將bin檔案copy到sd卡...