代码拉取完成,页面将自动刷新
function hmm() {
cat <<EOF
Invoke ". source/melis-env.sh" from your shell to add the following functions to your environment:
== before all ==
- lunch: lunch <product_name>-<build_variant>
== build project ==
- Cleaning targets:
- clean - Remove most generated files but keep the config and
- enough build support to build external modules
- mrproper - Remove all generated files + config + various backup files
- distclean - mrproper + remove editor backup and patch files
-
- Configuration targets:
- make menuconfig to to do the customilize configuration.
-
- Other generic targets:
- all - Build all targets marked with [*]
- * melis - Build the bare kernel
- * modules - Build all modules
- gtags - Generate GNU GLOBAL index
-
- Static analysers:
- checkstack - Generate a list of stack hogs
- namespacecheck - Name space analysis on compiled kernel
- versioncheck - Sanity check on version.h usage
- includecheck - Check for duplicate included header files
- export_report - List the usages of all exported symbols
- headers_check - Sanity check on exported headers
- headerdep - Detect inclusion cycles in headers
- coccicheck - Check with Coccinelle
-
- Kernel selftest:
- running kselftest on it
- kselftest-clean - Remove all generated kselftest files
- kselftest-merge - Merge all the config dependencies of kselftest to existing
- jump directory:
- croot: Jump to the top of the tree.
- cboot: Jump to uboot.
- cboot0: Jump to boot0.
- cdts: Jump to device tree.
- cbin: Jump to uboot/boot0 bin directory.
- ckernel: Jump to kernel.
- cdevice: Jump to target.
- ccommon: Jump to platform common.
- cconfigs: Jump to configs of target.
- cout: Jump to out directory of target.
- ctarget: Jump to target of compile directory.
- crootfs: Jump to rootfs of compile directory.
- ctoolchain: Jump to toolchain directory.
- callwinnerpk: Jump to package allwinner directory.
- ctinatest: Jump to tinateset directory.
- godir: Go to the directory containing a file.
== grep file ==
- cgrep: Greps on all local C/C++ files.
Look at the source to view more functions. The complete list is:
EOF
T=$(gettop)
local A
A=""
for i in `cat $T/envsetup.sh | sed -n "/^[ \t]*function /s/function \([a-z_]*\).*/\1/p" | sort | uniq`; do
A="$A $i"
done
echo $A
}
function gettop()
{
local source_path=${MELIS_BASE}
if [ "$source_path" ]; then
(\cd $source_path; PWD= /bin/pwd)
else
echo "Couldn't locate the melis-sdk top dir."
fi
unset source_path
}
function ctoolchain()
{
local T=$(gettop)
[ -z "$T" ] \
&& echo "Couldn't locate the top of the tree. Try setting TOP." \
&& return
\cd $T/../toolchain/bin
}
function check_opensbi()
{
local sbi_file=${MELIS_BASE}/projects/$TARGET_BOARD/sbi-bin/sbi.bin
local sbi_tmp=${MELIS_BASE}/projects/$TARGET_BOARD/sbi-bin/sbi_temp.bin
cp $sbi_file $sbi_tmp
${MELIS_BASE}/tools/packtool/update_chip_melis $sbi_file > /dev/null
rm -rf $sbi_file
mv $sbi_tmp $sbi_file
}
function make()
{
check_opensbi
local start_time=$(date +"%s")
command make V=s "$@"
local ret=$?
local end_time=$(date +"%s")
local tdiff=$(($end_time-$start_time))
local hours=$(($tdiff / 3600 ))
local mins=$((($tdiff % 3600) / 60))
local secs=$(($tdiff % 60))
local board=${TARGET_BOARD}
echo
if [ $ret -eq 0 ] ; then
echo -n -e "#### make completed successfully "
else
echo -n -e "#### make failed to build some targets "
fi
if [ $hours -gt 0 ] ; then
printf "(%02g:%02g:%02g (hh:mm:ss))" $hours $mins $secs
elif [ $mins -gt 0 ] ; then
printf "(%02g:%02g (mm:ss))" $mins $secs
elif [ $secs -gt 0 ] ; then
printf "(%s seconds)" $secs
fi
echo -e " ####"
echo
return $ret
}
function mopensbi()
{
local platformid=$(get_platform)
opensbi_path=${MELIS_BASE}/../../brandy-2.0/opensbi
if [ "$opensbi_path" ]; then
pushd $opensbi_path
else
echo "Couldn't locate the opensbi."
return -1
fi
local start_time=$(date +"%s")
./build.sh -p $platformid
local ret=$?
local end_time=$(date +"%s")
local tdiff=$(($end_time-$start_time))
local hours=$(($tdiff / 3600 ))
local mins=$((($tdiff % 3600) / 60))
local secs=$(($tdiff % 60))
echo
if [ $ret -eq 0 ] ; then
echo -n -e "#### make opensbi completed successfully "
cp build/platform/thead/c910/firmware/fw_jump.bin ${MELIS_BASE}/projects/$TARGET_BOARD/sbi-bin/sbi.bin
else
echo -n -e "#### make opensbi failed to build some targets "
fi
if [ $hours -gt 0 ] ; then
printf "(%02g:%02g:%02g (hh:mm:ss))" $hours $mins $secs
elif [ $mins -gt 0 ] ; then
printf "(%02g:%02g (mm:ss))" $mins $secs
elif [ $secs -gt 0 ] ; then
printf "(%s seconds)" $secs
fi
echo -e " ####"
echo
unset opensbi_path
popd
return $ret
}
function muboot()
{
local platformid=$(get_platform)
uboot_path=${MELIS_BASE}/../../brandy-2.0/u-boot-2018
if [ "$uboot_path" ]; then
pushd $uboot_path
else
echo "Couldn't locate the uboot."
return -1
fi
local start_time=$(date +"%s")
make distclean
make ${platformid}_rtos_nor_defconfig
make -j16
local ret=$?
local end_time=$(date +"%s")
local tdiff=$(($end_time-$start_time))
local hours=$(($tdiff / 3600 ))
local mins=$((($tdiff % 3600) / 60))
local secs=$(($tdiff % 60))
echo
if [ $ret -eq 0 ] ; then
echo -n -e "#### make u-boot completed successfully "
cp u-boot-${platformid}.bin ${MELIS_BASE}/projects/$TARGET_BOARD/bin/u-boot_${platformid}_nor.bin
else
echo -n -e "#### make u-boot failed to build some targets "
fi
if [ $hours -gt 0 ] ; then
printf "(%02g:%02g:%02g (hh:mm:ss))" $hours $mins $secs
elif [ $mins -gt 0 ] ; then
printf "(%02g:%02g (mm:ss))" $mins $secs
elif [ $secs -gt 0 ] ; then
printf "(%s seconds)" $secs
fi
echo -e " ####"
echo
unset uboot_path
popd
return $ret
}
function mboot0()
{
local platformid=$(get_platform)
boot0_path=${MELIS_BASE}/../../brandy-2.0/spl
if [ "$boot0_path" ]; then
pushd $boot0_path
else
echo "Couldn't locate the boot0."
return -1
fi
local start_time=$(date +"%s")
if [ -d board/${platformid}_backup ]; then
rm board/${platformid}_backup
fi
mv board/${platformid} board/${platformid}_backup
cp board/${platformid}_rtos board/${platformid} -rf
make distclean
make p=${platformid}
make
local ret=$?
rm board/${platformid} -rf
mv board/${platformid}_backup board/${platformid}
local end_time=$(date +"%s")
local tdiff=$(($end_time-$start_time))
local hours=$(($tdiff / 3600 ))
local mins=$((($tdiff % 3600) / 60))
local secs=$(($tdiff % 60))
echo
if [ $ret -eq 0 ] ; then
echo -n -e "#### make boot0 completed successfully "
cp nboot/boot0_spinor_${platformid}.bin ${MELIS_BASE}/projects/$TARGET_BOARD/bin/boot0_${platformid}_nor.bin
cp nboot/boot0_sdcard_${platformid}.bin ${MELIS_BASE}/projects/$TARGET_BOARD/bin/boot0_${platformid}_card.bin
cp nboot/boot0_nand_${platformid}.bin ${MELIS_BASE}/projects/$TARGET_BOARD/bin/boot0_${platformid}_nand.bin
cp fes/fes1_sun20iw1p1.bin ${MELIS_BASE}/projects/$TARGET_BOARD/bin/fes1_${platformid}.bin
else
echo -n -e "#### make boot0 failed to build some targets "
fi
if [ $hours -gt 0 ] ; then
printf "(%02g:%02g:%02g (hh:mm:ss))" $hours $mins $secs
elif [ $mins -gt 0 ] ; then
printf "(%02g:%02g (mm:ss))" $mins $secs
elif [ $secs -gt 0 ] ; then
printf "(%s seconds)" $secs
fi
echo -e " ####"
echo
unset boot0_path
popd
return $ret
}
function get_char()
{
SAVEDSTTY=`stty -g`
stty -echo
stty cbreak
dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -raw
stty echo
stty $SAVEDSTTY
}
function pause()
{
if [ "x$1" != "x" ] ;then
echo $1
fi
echo "Press any key to continue!"
char=`get_char`
}
function godir ()
{
if [[ -z "$1" ]]; then
echo "Usage: godir <regex>"
return
fi
local T=$(gettop)
if [[ ! -f $T/filelist ]]; then
echo -n "Creating index..."
(\cd $T; find . -type f > filelist)
echo " Done"
echo ""
fi
local lines
lines=($(\grep "$1" $T/filelist | sed -e 's/\/[^/]*$//' | sort | uniq))
if [[ ${#lines[@]} = 0 ]]; then
echo "Not found"
return
fi
local pathname
local choice
if [[ ${#lines[@]} > 1 ]]; then
while [[ -z "$pathname" ]]; do
local index=1
local line
for line in ${lines[@]}; do
printf "%6s %s\n" "[$index]" $line
index=$(($index + 1))
done
echo
echo -n "Select one: "
unset choice
read choice
if [[ $choice -gt ${#lines[@]} || $choice -lt 1 ]]; then
echo "Invalid choice"
continue
fi
pathname=${lines[$(($choice-1))]}
done
else
pathname=${lines[0]}
fi
\cd $T/$pathname
}
pack_usage()
{
printf "Usage: pack [-cCHIP] [-pPLATFORM] [-bBOARD] [-d] [-s] [-m] [-w] [-i] [-h]
-c CHIP (default: $chip)
-p PLATFORM (default: $platform)
-b BOARD (default: $board)
-d pack firmware with debug info output to card0
-s pack firmware with signature
-m pack dump firmware
-w pack programmer firmware
-i pack sys_partition.fex downloadfile img.tar.gz
-n pack norflash volume, 8: 8Mbytes, 16: 16Mbytes, default parameter is 8
-a pack storage type , eg nor sdcard nand,default parameter is nor
-h print this help message
"
}
function pack() {
local T=$(gettop)
local chip=$(get_platform)
local platform=melis
local board_platform=none
local board=${TARGET_BOARD}
local debug=uart0
local sigmode=none
local securemode=none
local mode=normal
local programmer=none
local tar_image=none
local nor_volume=8
local storage_type=nor
if [ "v459-perf1" == "$TARGET_BOARD" ] ; then
nor_volume=16
fi
unset OPTIND
while getopts "dsvmwihn:a:" arg
do
case $arg in
d)
debug=card0
;;
s)
sigmode=secure
;;
v)
securemode=secure
;;
m)
mode=dump
;;
w)
programmer=programmer
;;
i)
tar_image=tar_image
;;
n)
nor_volume=$OPTARG;
;;
a)
storage_type=$OPTARG;
;;
h)
pack_usage
return 0
;;
?)
return 1
;;
esac
done
if [ "x$chip" = "x" ]; then
echo "platform($TARGET_PLATFORM) not support"
#return
fi
if [ -f $T/tools/scripts/pack_img.sh ]; then
$T/tools/scripts/pack_img.sh -c $chip -p $platform -b $board -d $debug -s $sigmode -m $mode -w $programmer -v $securemode -i $tar_image -t $T -n $nor_volume -a $storage_type
#pause
else
echo "pack_img script not exist!"
fi
}
function cconfigs()
{
select_config_path=${MELIS_BASE}/projects/${board_name}/configs
if [ "$select_config_path" ]; then
\cd $select_config_path
else
echo "Couldn't locate the ${select_config_path}."
fi
unset select_config_path
}
function add_lunch_menu(){
echo "MELIS_BASE:${MELIS_BASE}"
board_config_path=${MELIS_BASE}/projects
IFS=$(echo -en "\n\b")
local j=0
for i in `ls -1 $board_config_path`
do
#if [[ "$i" =~ ^config_.* ]]; then
if [[ -d ${MELIS_BASE}/projects/$i ]]; then
board_name=${i#*config_}
config_list[j]=$board_name
j=`expr $j + 1`
fi
done
}
function print_lunch_menu(){
local i=1
for config_list_id in ${config_list[@]}
do
echo " $i. $config_list_id"
i=$(($i+1))
done
}
function copy_config(){
board_name=$1
echo "You have select $board_name "
export TARGET_BOARD=$board_name
export UDISK_PATH=${MELIS_BASE}/projects/${TARGET_BOARD}/data/UDISK
dotconfig=${MELIS_BASE}/projects/${board_name}/configs/defconfig
parttable=${MELIS_BASE}/projects/${board_name}/configs/sys_partition.fex
sysconfig=${MELIS_BASE}/projects/${board_name}/configs/sys_config.fex
if [ -f ${MELIS_BASE}/projects/${board_name}/configs/chip.mk ];then
source ${MELIS_BASE}/projects/${board_name}/configs/chip.mk
fi
if [ -f ${dotconfig} ]; then
cp -rf ${dotconfig} ${MELIS_BASE}/.config
else
echo "fatal error, no default .config file."
return -1
fi
CONFIG_TARGET_PLATFORM=$(get_platform)
if [ "${CONFIG_TARGET_PLATFORM}" = "sun8iw19p1" ]; then
cp -fr ${sysconfig} ${MELIS_BASE}/ekernel/arch/boot/fex/
fi
}
function get_platform() {
unset CONFIG_SOC_SUN3IW2P2
unset CONFIG_SOC_SUN3IW2P1
unset CONFIG_SOC_SUN3IW1P1
unset CONFIG_SOC_SUN8IW18P1
unset CONFIG_SOC_SUN8IW19P1
unset CONFIG_SOC_SUN20IW1P1
unset CONFIG_SOC_SUN20IW3P1
. ${MELIS_BASE}/.config
YES="y"
if [ "$CONFIG_SOC_SUN3IW2P2" = "$YES" ]; then
echo "sun3iw2p2"
elif [ "$CONFIG_SOC_SUN3IW2P1" = "$YES" ]; then
echo "sun3iw2p1"
elif [ "$CONFIG_SOC_SUN3IW1P1" = "$YES" ]; then
echo "sun3iw1p1"
elif [ "$CONFIG_SOC_SUN8IW18P1" = "$YES" ]; then
echo "sun8iw18p1"
elif [ "$CONFIG_SOC_SUN8IW19P1" = "$YES" ]; then
echo "sun8iw19p1"
elif [ "$CONFIG_SOC_SUN20IW1P1" = "$YES" ]; then
echo "sun20iw1p1"
elif [ "$CONFIG_SOC_SUN20IW3P1" = "$YES" ]; then
echo "sun20iw3p1"
fi
}
function get_targetboard(){
echo "$TARGET_BOARD"
}
function platform_verbose(){
export TARGET_PLATFORM=$(get_platform)
echo "============================================"
echo "Project Based On Platform" $TARGET_PLATFORM $TARGET_BOARD
echo "============================================"
}
function lunch(){
local uname=$(uname -a)
local board_choice
echo
echo "You're building on" $uname
echo
echo "Lunch menu... pick a combo:"
echo "The supported board:"
if [ "$1" ] ; then
board_choice=$1
else
print_lunch_menu
echo -n "What is your choice? "
read board_choice
fi
if (echo -n $board_choice | grep -q -e "^[0-9][0-9]*$"); then
if [ "$board_choice" -gt ${#config_list[@]} ]; then
echo "Too much number, exceed the maxium support board!"
return -1
fi
if [ "$board_choice" -gt 0 ] ;then
echo "The $board_choice is number." > /dev/null
else
echo "The soc family [$board_choice] not supported!"
return -1
fi
[ $board_choice -le ${#config_list[@]} ] \
&& board_choice=${config_list[$(($board_choice-1))]}
else
board_choice="$board_choice"
fi
for config_list_id in ${config_list[@]}
do
if [ "$config_list_id" == "$board_choice" ] ; then
copy_config $config_list_id
fi
done
platform_verbose
check_elf_store_directory
if [ -n $(grep "^CONFIG_ARM=y" "${MELIS_BASE}/.config") ] ; then
export PATH=${PATH}:${MELIS_BASE}/../toolchain/gcc-arm-melis-eabi-9-2020-q2-update-x86_64-linux/bin
fi
if [ -n `grep "^CONFIG_RISCV=y" "${MELIS_BASE}/.config"` ] ; then
export PATH=${PATH}:${MELIS_BASE}/../toolchain/riscv64-elf-x86_64-20201104/bin
fi
#create platform info file
echo "chip=$(get_platform)" > platform.txt
echo "platform=melis" >> platform.txt
echo "board_platform=none" >> platform.txt
echo "board=${TARGET_BOARD}" >> platform.txt
echo "debug=uart0" >> platform.txt
echo "sigmode=none" >> platform.txt
echo "securemode=none" >> platform.txt
echo "mode=normal" >> platform.txt
echo "programmer=none" >> platform.txt
echo "tar_image=none" >> platform.txt
echo "nor_volume=8" >> platform.txt
echo "torage_type=nor" >> platform.txt
}
function _lunch() {
local cur prev
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
if [[ ${cur} == * ]] ; then
COMPREPLY=( $(compgen -W "${config_list[*]}" -- ${cur}) )
return 0
fi
}
function check_elf_store_directory(){
if [ ! -d "${MELIS_BASE}/emodules/bin/" ] ; then
mkdir -pv "${MELIS_BASE}/emodules/bin/"
fi
if [ ! -d "${MELIS_BASE}/emodules/bin/cedar" ] ; then
mkdir -pv "${MELIS_BASE}/emodules/bin/cedar"
fi
if [ ! -d "${MELIS_BASE}/emodules/bin/willow" ] ; then
mkdir -pv "${MELIS_BASE}/emodules/bin/willow"
fi
if [ ! -d ${MELIS_BASE}/projects/${TARGET_BOARD}/data/UDISK/mod/ ] ; then
mkdir -pv ${MELIS_BASE}/projects/${TARGET_BOARD}/data/UDISK/mod/
fi
if [ ! -d ${MELIS_BASE}/projects/${TARGET_BOARD}/data/UDISK/mod/cedar/ ] ; then
mkdir -pv ${MELIS_BASE}/projects/${TARGET_BOARD}/data/UDISK/mod/cedar/
fi
if [ ! -d ${MELIS_BASE}/projects/${TARGET_BOARD}/data/UDISK/mod/willow/ ] ; then
mkdir -pv ${MELIS_BASE}/projects/${TARGET_BOARD}/data/UDISK/mod/willow/
fi
}
function envsetup() {
unset config_list
add_lunch_menu
complete -F _lunch lunch
}
envsetup
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。