全志Tina 系统dump固件制作方法
【适用范围】
适用于Tina1.0 ,Tina2.1 平台 ( 两个平台对应修改的内容不同 )
【问题现象】
目前tina 平台缺少将烧录的固件dump出来的功能。(android 平台的lichee目录,通过./build.sh pack_dump 就可以编译出来,该功能常用于客退分析)
【问题原因】
Tina 平台的编译方式不一样,所以需要修改pack 的代码。
【解决办法】
Tina1.0 修改内容如下:
1. 修改对应的 scripts/setenv.sh
— a/scripts/setenv.sh
+++ b/scripts/setenv.sh
@@ -178,13 +178,27 @@ function pack()
local T=
(gettop)/staging_dir/host/bin/
export PATH=
PATH
- if [ “
arg in
+ d)
+ D=card0
+ ;;
+ m)
+ M=dump
+ ;;
+ ?)
+ return 1
+ ;;
+ esac
+ done
if [ "$T" ]; then
if [ "x${CHIP}" = "xsun5i" ]; then
@@ -202,7 +216,7 @@ function pack()
make $U/install >> /dev/null
if [ -x $P ]; then
-
O -c
D -b
P -r
CHIP -d
BOARD -m $M
fi
}
function make_img_md5(){
修改对应的 target/linux/xxx/image/pack_img.sh
— a/target/linux/sunxi/image/pack_img.sh
+++ b/target/linux/sunxi/image/pack_img.sh
@@ -6,7 +6,7 @@ PACK_SIG=none
PACK_MODE=none
PACK_DIR=
-while getopts “c:p:b:d:r:sh” arg
+while getopts “c:p:b:d:r:m:sh” arg
do
case OPTARG
;;- m)
- PACK_MODE=$OPTARG
;;
s)
PACK_SIG=sig
;;
@@ -81,6 +84,11 @@ function do_prepare()
sed -i ‘s/\\/\//g’ image.cfg
sed -i ‘s/^imagename/;imagename/g’ image.cfgif [ “x${PACK_MODE}” = “xdump” ] ; then
- cp -vf sys_partition_dump.fex sys_partition.fex
- cp -vf usbtool_test.fex usbtool.fex
- fi
+
if [ “x {PACK_MODE}” != “xdump” \
-a “x${PACK_FUNC}” != “xprvt” ] ; then
uart_switch
Tina2.0 对应修改的内容如下:
function pack() {
local T=
(get_build_var TARGET_BUILD_VARIANT)
local board_platform=
(get_build_var TARGET_BOARD)
local debug=uart0
+ local mode=normal
local sigmode=none
local securemode=none
local mode=normal
unset OPTIND
- while getopts “dsvh” arg
+ while getopts “dsvmh” arg
do
case $arg in
d)
debug=card0
;;
s)
sigmode=secure
;;
v)
securemode=secure
;;
+ m)
+ mode=dump
+ ;;
h)
usage
return 0
;;
?)
return 1
;;
esac
done
chip=$(get_chip)
if [ "x$chip" = "x" ]; then
echo "platform($TARGET_PLATFORM) not support"
return
fi
-
chip -p
board -d
sigmode -v
T
+
chip -p
board \
-d
sigmode -m
securemode -t $T
}
所以用方法
1. 使用pack -m [-d] (”-m” 选项),打包成固件名类似:sun8iw5p1_tina_evb_card0_dump.img
2. 在D盘中创建目录:test,即D:/test
3. 使用打包成的固件进行正常烧录,在烧录过程中并不会把固件烧写到flash中,而是自动把flash中的固件按分区dump到D:/test