| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #!/bin/bash
- # You can test different download mode such as ilm,flashxip,sram
- DOWNLOAD=${1:-ilm}
- # TODO: Change CORE is not yet supported
- CORE=n300
- UPLOAD=${UPLOAD:-1}
- # TODO: Change this ROOTs according to your environment settings
- IAR_WORKBENCH_ROOT="/c/Program Files/IAR Systems/Embedded Workbench 9.2"
- NUCLEI_TOOLCHAIN_ROOT="/c/Software/NucleiStudio/toolchain"
- # TODO: you need to modify the default remote to your real machine gdb remote such as localhost:3333
- GDBREMOTE=${GDBREMOTE:-whss3.corp.nucleisys.com:20005}
- # Export riscv gdb and iarbuild into system PATH, please modify it according to your environment settings
- export PATH="${NUCLEI_TOOLCHAIN_ROOT}/gcc/bin/":$PATH
- export PATH="${IAR_WORKBENCH_ROOT}/common/bin":"${IAR_WORKBENCH_ROOT}/riscv/bin":$PATH
- SCRIPTDIR=$(dirname $(readlink -f $BASH_SOURCE))
- IARPRODIR=$(readlink -f ${SCRIPTDIR}/..)
- if which riscv64-unknown-elf-gdb > /dev/null ; then
- GDB=riscv64-unknown-elf-gdb
- else
- GDB=riscv-nuclei-elf-gdb
- fi
- function tool_check() {
- local tool=$1
- if ! which $tool > /dev/null ; then
- echo "$tool not found in PATH, please check!"
- exit 1
- fi
- }
- function upload_program() {
- local file=$1
- echo "Upload and test $file"
- $GDB -ex "set remotetimeout 240" -ex "target remote $GDBREMOTE" \
- --batch -ex 'thread apply all monitor reset halt' -ex 'thread apply all info reg pc' \
- -ex 'thread 1' -ex "load $file" -ex "file $file" \
- -ex 'thread apply all set $pc=__alias_hw_reset' -ex 'thread apply all info reg pc' \
- -ex 'thread 1' -ex 'monitor resume' -ex 'quit'
- }
- function build_iar_project() {
- local iarprj=$1
- local config=${2:-Debug}
- echo "Build project $iarprj, configuration $config"
- iarbuild $iarprj -build Debug -log errors -parallel 8
- }
- function disa_out() {
- local iarout=$1
- local iardis=${iarout}.dasm
- echo "Disassemble $iarout to ${iardis}"
- ielfdumpriscv -a $iarout > $iardis
- }
- function change_linkscript() {
- local iarprj=$1
- local download=${2:-flashxip}
- echo "Change download mode to $download"
- sed -i "s/IAR\\\\iar_evalsoc_.*\.icf/IAR\\\\iar_evalsoc_${download}.icf/g" $iarprj
- }
- # check tool existance
- tool_check $GDB
- tool_check iarbuild
- #upload_program rtos/Debug/Exe/freertos_demo.out
- #exit 0
- folders=(rtos baremetal)
- faillist=""
- # Push to iar project directory
- pushd $IARPRODIR
- for folder in "${folders[@]}"
- do
- for file in $(find $folder -type f -name "*.ewp")
- do
- change_linkscript $file $DOWNLOAD
- build_iar_project $file
- outfile="$(dirname $file)/Debug/Exe/$(basename $file ewp)out"
- if [ -f $outfile ] ; then
- disa_out $outfile
- if [ "x$UPLOAD" != "x1" ] ; then
- echo "Will not upload and test $file"
- else
- upload_program $outfile
- sleep 15
- fi
- else
- faillist=" $file"
- fi
- done
- done
- popd
- if [ "x$faillist" != "x" ] ; then
- echo "These cases are failing, please check the following items!"
- echo "$faillist"
- exit -1
- fi
- exit 0
|