您尚未登录。

楼主 #1 2020-04-01 14:04:05

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,191
积分: 9197

分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

pack.sh

#!/bin/bash

_UBOOT_SIZE=1

###第一个分区(FAT)大小,单位MiB##
_P1_SIZE=16

###TF卡镜像文件名称###
_IMG_FILE='f1c100s_tfcard_img.bin'

###TF卡镜像文件大小, 单位MiB###
_IMG_SIZE=120

temp_root_dir=$PWD

_UBOOT_FILE="${temp_root_dir}/data/u-boot-sunxi-with-spl.bin"
_SPLASH_BMP_FILE="${temp_root_dir}/data/splash.bmp"
_BOOT_SCR_FILE="${temp_root_dir}/data/boot.scr"
_KERNEL_IMAGE_FILE="${temp_root_dir}/data/zImage"
_DTB_FILE="${temp_root_dir}/data/dtb.bin"
_ROOTFS_TGZ_FILE="${temp_root_dir}/data/rootfs.tgz"

        ###初始化镜像文件###
        dd if=/dev/zero of=$_IMG_FILE bs=1M count=$_IMG_SIZE

        ###判断镜像文件是否初始化成功###
        if [ $? -ne 0 ]
        then
                echo  "getting error in creating dd img!"
                exit
        fi


        ###获取一个循环设备###
        _LOOP_DEV=$(sudo losetup -f)
        #echo ${_LOOP_DEV}



        ##再次判断此设备是否存在###
        if [ -z $_LOOP_DEV ]
        then
                echo  "can not find a loop device!"
                exit
        fi

        ###把镜像文件和循环设备关联###
        sudo losetup $_LOOP_DEV $_IMG_FILE
        if [ $? -ne 0 ]
        then
                echo  "dd img --> $_LOOP_DEV error!"
                sudo losetup -d $_LOOP_DEV >/dev/null 2>&1 && exit
        fi
        echo  "--->creating partitions for tf image ..."
        #blockdev --rereadpt $_LOOP_DEV >/dev/null 2>&1
        # size only can be integer



###分区###
cat <<EOT |sudo  sfdisk ${_IMG_FILE}
${_UBOOT_SIZE}M,${_P1_SIZE}M,c
,,L
EOT


###格式化###
        sleep 2
        sudo partx -u $_LOOP_DEV
        sudo mkfs.vfat ${_LOOP_DEV}p1 ||exit
        sudo mkfs.ext4 ${_LOOP_DEV}p2 ||exit
        if [ $? -ne 0 ]
        then
                echo  "error in creating partitions"
                sudo losetup -d $_LOOP_DEV >/dev/null 2>&1 && exit
                #sudo partprobe $_LOOP_DEV >/dev/null 2>&1 && exit
        fi

        ###u-boot写到TF卡8K偏移处###
        #pack uboot
        echo  "--->writing u-boot-sunxi-with-spl to $_LOOP_DEV"
        # sudo dd if=/dev/zero of=$_LOOP_DEV bs=1K seek=1 count=1023  # clear except mbr
        sudo dd if=$_UBOOT_FILE of=$_LOOP_DEV bs=1024 seek=8
        if [ $? -ne 0 ]
        then
                echo  "writing u-boot error!"
                sudo losetup -d $_LOOP_DEV >/dev/null 2>&1 && exit
                #sudo partprobe $_LOOP_DEV >/dev/null 2>&1 && exit
        fi



        ###新建 p1,p2 目录,并挂载TF卡两个分区###
        sudo sync
        mkdir -p ${temp_root_dir}/output/p1 >/dev/null 2>&1
        mkdir -p ${temp_root_dir}/output/p2 > /dev/null 2>&1
        sudo mount ${_LOOP_DEV}p1 ${temp_root_dir}/output/p1
        sudo mount ${_LOOP_DEV}p2 ${temp_root_dir}/output/p2
        echo  "--->copy boot and rootfs files..."
        sudo rm -rf  ${temp_root_dir}/output/p1/* && sudo rm -rf ${temp_root_dir}/output/p2/*


        ###复制zImage, dtb, boot.scr, splash.bmp 等文件到第一分区 ###
        sudo cp ${_KERNEL_IMAGE_FILE} ${temp_root_dir}/output/p1/zImage &&\
        sudo cp ${_DTB_FILE} ${temp_root_dir}/output/p1/ &&\
        sudo cp ${_BOOT_SCR_FILE} ${temp_root_dir}/output/p1/ &&\
        sudo cp ${_SPLASH_BMP_FILE} ${temp_root_dir}/output/p1/ &&\
        echo "--->p1 done~"

        ###解压 rootfs.tgz 到第二分区###
        sudo tar xvf ${_ROOTFS_TGZ_FILE} -C ${temp_root_dir}/output/p2/ &&\
        echo "--->p2 done~"



        ###同步, 等待, 卸载, 退出###
        sudo sync
        sleep 2
        sudo umount ${temp_root_dir}/output/p1 ${temp_root_dir}/output/p2  && sudo losetup -d $_LOOP_DEV
        if [ $? -ne 0 ]
        then
                echo  "umount or losetup -d error!!"
                exit
        fi

目录结构:

.
..
pack.sh
data/
    u-boot-sunxi-with-spl.bin
    boot.scr
    dtb.bin
    rootfs.tgz
    splash.bmp    
    zImage

以上脚本参考本站 @xiaohui 的打包脚本, 我加了部分注释, 把其他非打包脚本剥离开了。

离线

楼主 #2 2020-04-01 14:07:11

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,191
积分: 9197

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

如果以前你按这个帖子: 【视频分享】制作荔枝派Zero开发板(全志V3s) TF/SD卡启动盘,

那么现在就可以把这个 GParted 扔掉了。

离线

楼主 #3 2020-04-01 14:09:17

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,191
积分: 9197

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

今天偶然翻到以前许诺@达克罗德 大神做一个TF打包脚本的,

后来事多忘记,今天突然看到,把这个坑给填了。

离线

#4 2020-04-08 16:26:30

光头程序员
会员
注册时间: 2020-03-03
已发帖子: 14
积分: 14

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

这个脚本真是 666666

离线

#5 2020-04-17 11:07:14

renhuge
会员
注册时间: 2020-04-17
已发帖子: 14
积分: 14

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

这个脚本可以打包F1C200S么

离线

楼主 #6 2020-04-17 11:12:49

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,191
积分: 9197

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

renhuge 说:

这个脚本可以打包F1C200S么

当然可以,而且本来就是。

离线

#7 2020-04-17 16:44:55

Jmhh247
会员
注册时间: 2018-12-21
已发帖子: 262
积分: 262

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

向大神学习, 学习

离线

#8 2020-04-17 19:55:56

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 386
积分: 370

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

只能mark支持一下了

离线

#9 2020-04-20 23:30:55

XZHDJH
会员
注册时间: 2020-01-18
已发帖子: 37
积分: 37

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

入坑了,当初荔枝派的脚本找了很久.....

离线

#10 2020-05-07 09:20:23

tianjjff
会员
注册时间: 2018-12-24
已发帖子: 111
积分: 69

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

这个脚本好!

离线

#11 2020-05-08 18:46:01

wonrowl
会员
注册时间: 2020-05-08
已发帖子: 79
积分: 75.5

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

自己画一个板子,需要做什么才能让它从spiflash引导启动呢?

离线

#12 2020-05-09 13:36:11

苍狼青雯
会员
注册时间: 2020-05-09
已发帖子: 0
积分: 0

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

感谢楼主分享,新买的Tiny200,正好下载下来测试一下

离线

#13 2020-05-13 09:42:21

weiyongwill
会员
注册时间: 2019-08-08
已发帖子: 55
积分: 49

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

新的BuildRoot里面有个support/scripts/genimage.sh,不过完全看不懂

#!/usr/bin/env bash

die() {
  cat <<EOF >&2
Error: $@

Usage: ${0} -c GENIMAGE_CONFIG_FILE
EOF
  exit 1
}

# Parse arguments and put into argument list of the script
opts="$(getopt -n "${0##*/}" -o c: -- "$@")" || exit $?
eval set -- "$opts"

GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"

while true ; do
	case "$1" in
	-c)
	  GENIMAGE_CFG="${2}";
	  shift 2 ;;
	--) # Discard all non-option parameters
	  shift 1;
	  break ;;
	*)
	  die "unknown option '${1}'" ;;
	esac
done

[ -n "${GENIMAGE_CFG}" ] || die "Missing argument"

# Pass an empty rootpath. genimage makes a full copy of the given rootpath to
# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk
# space. We don't rely on genimage to build the rootfs image, just to insert a
# pre-built one in the disk image.

trap 'rm -rf "${ROOTPATH_TMP}"' EXIT
ROOTPATH_TMP="$(mktemp -d)"

rm -rf "${GENIMAGE_TMP}"

genimage \
	--rootpath "${ROOTPATH_TMP}"     \
	--tmppath "${GENIMAGE_TMP}"    \
	--inputpath "${BINARIES_DIR}"  \
	--outputpath "${BINARIES_DIR}" \
	--config "${GENIMAGE_CFG}"

离线

#14 2020-05-28 17:33:00

zhang235hai
会员
注册时间: 2020-04-06
已发帖子: 171
积分: 134

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

我平时用的只有下面四个文件
u-boot-sunxi-with-spl.bin
sun8i-v3s-licheepi-zero-dock.dtb
zImage
rootfs.tar
也能打包成为TF卡的烧写程序吗?
怎么做呢?

离线

#15 2020-05-28 17:59:10

哇酷小二
管理员
注册时间: 2020-04-22
已发帖子: 2,463
积分: 1902

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

zhang235hai 说:

我平时用的只有下面四个文件
u-boot-sunxi-with-spl.bin
sun8i-v3s-licheepi-zero-dock.dtb
zImage
rootfs.tar
也能打包成为TF卡的烧写程序吗?
怎么做呢?

可以的,按一楼那个脚本就行,只要写一个 boot.cmd的文本文件,编译成 boot.scr 就可以了。

离线

#16 2020-08-08 18:05:46

angelsan
会员
注册时间: 2020-04-02
已发帖子: 127
积分: 121

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

怎么编译成 boot.scr啊?不用这个就行了吧?

哇酷小二 说:

可以的,按一楼那个脚本就行,只要写一个 boot.cmd的文本文件,编译成 boot.scr 就可以了。

离线

#17 2020-08-08 19:21:14

jkl
会员
注册时间: 2019-11-18
已发帖子: 196
积分: 119.5

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

angelsan 说:

怎么编译成 boot.scr啊?不用这个就行了吧?

mkimage -C none -A arm -T script -d  boot.cmd boot.scr

离线

#18 2020-08-10 11:37:51

angelsan
会员
注册时间: 2020-04-02
已发帖子: 127
积分: 121

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

非常感谢!boot.cmd是怎么来的,新建一个空的文本文件吗?

jkl 说:

mkimage -C none -A arm -T script -d  boot.cmd boot.scr

离线

#19 2020-08-10 11:56:07

angelsan
会员
注册时间: 2020-04-02
已发帖子: 127
积分: 121

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

请教一下,boot.cmd该怎么写,V3s没有用到啊

哇酷小二 说:

可以的,按一楼那个脚本就行,只要写一个 boot.cmd的文本文件,编译成 boot.scr 就可以了。

离线

#20 2020-08-10 13:49:21

jkl
会员
注册时间: 2019-11-18
已发帖子: 196
积分: 119.5

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

angelsan 说:

非常感谢!boot.cmd是怎么来的,新建一个空的文本文件吗?

是的,将你的一些加载、启动命令写入进去就行了,再按照上面的命令生成boot.src!

离线

#21 2020-08-10 14:43:35

angelsan
会员
注册时间: 2020-04-02
已发帖子: 127
积分: 121

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

实在是看不明白啊,请问是哪些加载、启动命令呢?能介绍清楚一些么?

jkl 说:

是的,将你的一些加载、启动命令写入进去就行了,再按照上面的命令生成boot.src!

离线

#22 2020-08-10 14:45:07

angelsan
会员
注册时间: 2020-04-02
已发帖子: 127
积分: 121

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

麻烦老大,能不能写一个V3s能用的。boot.cmd不知道怎么写,boot.scr 没有文档啊

晕哥 说:

当然可以,而且本来就是。

离线

#23 2020-08-10 15:12:24

jkl
会员
注册时间: 2019-11-18
已发帖子: 196
积分: 119.5

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

angelsan 说:

实在是看不明白啊,请问是哪些加载、启动命令呢?能介绍清楚一些么?

fatload mmc 1:1 0x46000000 zImage
fatload mmc 1:1 0x49000000 sun8i-x3-smallwit-card-taurus.dtb

setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk2p2 rootwait panic=10

bootz 0x46000000 - 0x49000000,类似于这些。

离线

#24 2020-09-17 09:06:05

shawn.d
会员
注册时间: 2020-09-12
已发帖子: 147
积分: 137.5

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

感谢晕哥,这个方便很多了

离线

#25 2020-09-17 09:14:16

touchey
会员
注册时间: 2020-05-18
已发帖子: 48
积分: 13.5

Re: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本

这个实用

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn