在實際生產過程使用一個固件加一個用戶數據文件的形式搭配實現不同類型的產品生產。目前有了解到的方法是編譯時把bin文件包含到fls文件內,而且操作非常繁瑣,這樣的方法不可能在量產過程中使用的。不知道有沒有更簡便的方法或工具寫入用戶數據?
查看更多
我現在手頭沒有工程了,就改那幾個地方就行,你目前的問題是卡在哪一步了,具體描述下
型號 w806
建議以下兩種方式:1.可以通過腳本,將數據打包img固件格式,下載img固件時會自動將數據搬運到flash的指定位置。2.可以搭配應用軟件通過類似串口AT指令的方式實現。
發布 問題
分享 好友
手機 浏覽
回到 頂部
您好,卡在下載進去flash沒改變
目前用命令行下第二遍可以了,不知道為什麼
包含到fls文件裡不管地址怎麼改都沒效果,
用命令行單獨下user.img兩次就可以了
不知道這樣對量產有沒有影響
要連續下兩次,中途不能複位
命令行下載是怎麼下載,.sh文件是不是沒改全,生成的user.img沒有打包.fls文件,可以把.sh文件貼出來看下。
@abcd {{aft_build_project.sh(uploading...)}}
!/bin/sh
ProjName="W806"
signature=0
prikey_sel=0
code_encrypt=0
sign_pubkey_src=0
img_type=1
zip_type=1
sec_img_header=8002000
sec_img_pos=8002400
run_img_header=8010000
run_img_pos=8010400
upd_img_pos=8010000
user_img_header=8080000
user_img_pos=8080400
echo $ProjName
if [ $prikey_sel -gt 0 ]
then
let img_type=$img_type+32*$prikey_sel
fi
if [ $code_encrypt -eq 1 ]
then
let img_type=$img_type+16
fi
if [ $signature -eq 1 ]
then
let img_type=$img_type+256
fi
if [ $sign_pubkey_src -eq 1 ]
then
let img_type=$img_type+512
fi
echo $img_type
csky-elfabiv2-objcopy -O binary ./"$ProjName".elf ./"$ProjName".bin
if [ $code_encrypt -eq 1 ]
then
let prikey_sel=$prikey_sel+1
openssl enc -aes-128-ecb -in ./"$ProjName".bin -out ./"$ProjName"_enc.bin -K 30313233343536373839616263646566 -iv 01010101010101010101010101010101
openssl rsautl -encrypt -in ../Tools/ca/key.txt -inkey ../Tools/ca/capub_"$prikey_sel".pem -pubin -out key_en.dat
cat "$ProjName"_enc.bin key_en.dat > "$ProjName"_enc_key.bin
cat "$ProjName"_enc_key.bin ../Tools/ca/capub_"$prikey_sel"_N.dat > "$ProjName"_enc_key_N.bin
../Tools/wm_tool.exe -b ./"$ProjName"_enc_key_N.bin -o ./"$ProjName" -it $img_type -fc 0 -ra $run_img_pos -ih $run_img_header -ua $upd_img_pos -nh 0 -un 0
else
../Tools/wm_tool.exe -b ./"$ProjName".bin -o ./"$ProjName" -it $img_type -fc 0 -ra $run_img_pos -ih $run_img_header -ua $upd_img_pos -nh 0 -un 0
fi
mkdir -p ../Output
mv ./"$ProjName".map ../Output/"$ProjName".map
if [ $signature -eq 1 ]
then
openssl dgst -sign ../Tools/ca/cakey.pem -sha1 -out "$ProjName"_sign.dat ./"$ProjName".img
cat "$ProjName".img "$ProjName"_sign.dat > "$ProjName"_sign.img
mv ./"$ProjName"_sign.img ../Output/"$ProjName"_sign.img
#when you change run-area image's ih, you must remake secboot img with secboot img's -nh address same as run-area image's ih
../Tools/wm_tool.exe -b ../Tools/W806_secboot.bin -o ../Tools/W806_secboot -it 0 -fc 0 -ra $sec_img_pos -ih $sec_img_header -ua $upd_img_pos -nh $run_img_header -un 0
cat ../Tools/"$ProjName"_secboot.img ../Output/"$ProjName"_sign.img > ../Output/"$ProjName".fls
else
mv ./"$ProjName".img ../Output/"$ProjName".img
#when you change run-area image's ih, you must remake secboot img with secboot img's -nh address same as run-area image's ih
../Tools/wm_tool.exe -b ../Tools/W806_secboot.bin -o ../Tools/W806_secboot -it 0 -fc 0 -ra $sec_img_pos -ih $sec_img_header -ua $upd_img_pos -nh $run_img_header -un 0
../Tools/wm_tool.exe -b ../bin/user.bin -o ../bin/user -it $img_type -fc 0 -ra $user_img_pos -ih $user_img_header
cat ../Tools/"$ProjName"_secboot.img ../Output/"$ProjName".img ../bin/user.img > ../Output/"$ProjName".fls
fi
produce compressed ota firmware*/
if [ $zip_type -eq 1 ]
then
if [ $signature -eq 1 ]
then
else
../Tools/wm_tool.exe -b ../Output/"$ProjName".img -o ../Output/"$ProjName" -it $img_type -fc 1 -ra $run_img_pos -ih $run_img_header -ua $upd_img_pos -nh 0 -un 0
mv ../Output/"$ProjName"_gz.img ../Output/"$ProjName"_ota.img
fi
fi
openssl --help
@abcd 命令行指的是在CMD調用wm_tool.exe,如下
wm_tool.exe -c COM4 -ws 115200 -ds 2000000 -rs none -dl user.img
wm_tool.exe -c COM4 -ws 115200 -ds 2000000 -rs none -dl user.img
@fyd 你這個目錄都改了,但看起來沒啥問題,應該是已經生效了,每次CDK編譯都會把user.bin合到flash文件裡燒錄,怎麼判斷沒改變的?
@fyd 你的下載工具Upgrade_Tools是最新版本的嗎
@abcd 我把數據做到屏幕上了,能直接看到flash的內容