全志Tina 系统dump固件制作方法

全志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= ( g e t t o p ) l o c a l P = l o c a l O = l o c a l D = u a r t 0 l o c a l U = + l o c a l D = u a r t 0 + l o c a l M = n o n e l o c a l H = (gettop)/staging_dir/host/bin/
export PATH= H : PATH
- if [ “ 1 = d ] ; t h e n D = c a r d 0 f i + + u n s e t O P T I N D + w h i l e g e t o p t s d m a r g + d o + c a s e 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

- P r O -c C H I P d D -b B O A R D + P -r O c CHIP -d D b BOARD -m $M
fi
}
function make_img_md5(){

  1. 修改对应的 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 a r g i n c ) @ @ 18 , 6 + 18 , 9 @ @ d o d ) P A C K D E B U G = 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.cfg

    • if [ “x${PACK_MODE}” = “xdump” ] ; then

    • cp -vf sys_partition_dump.fex sys_partition.fex
    • cp -vf usbtool_test.fex usbtool.fex
    • fi
      +
      if [ “x P A C K D E B U G "=" x c a r d 0 " a " x {PACK_MODE}” != “xdump” \
      -a “x${PACK_FUNC}” != “xprvt” ] ; then
      uart_switch

Tina2.0 对应修改的内容如下:
function pack() {
local T= ( g e t t o p ) l o c a l c h i p = s u n 5 i l o c a l p l a t f o r m = (get_build_var TARGET_BUILD_VARIANT)
local board_platform= ( g e t b u i l d v a r T A R G E T B O A R D P L A T F O R M ) l o c a l b o a r d = (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

- T / s c r i p t s / p a c k i m g . s h c chip -p p l a t f o r m b board -d d e b u g s sigmode -v s e c u r e m o d e t T
+ T / s c r i p t s / p a c k i m g . s h c chip -p p l a t f o r m b board \
-d d e b u g s sigmode -m m o d e v 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

猜你喜欢

转载自blog.csdn.net/weixin_43094346/article/details/82564049