#!/usr/bin/env bash usage() { echo "USAGE: $0 parameters: -s|--spl-dir -i|--isw-handoff -b|--board optional: -e|--embedded-sdk " echo "EXAMPLE: $0 -i ~/cv_soc_devkit_ghrd/hps_isw_handoff/soc_system_hps_0/ -b arch/arm/boards/altera-socdk -e ~/altera-embedded-sdk/" exit 1 } die() { printf '%s\n' "$1" >&2 exit 1 } generate= splroot= embeddedsw= handoff= boardroot= while :; do case $1 in -e|--embedded-sdk) if [ "$2" ]; then generate=1 splroot="$(mktemp -d)" embeddedsw=${2} shift else die 'ERROR: "--embedded-sdk" requires a non-empty option argument.' fi ;; -s|--spl-dir) if [ "$2" ]; then splroot="$2" shift else die 'ERROR: "--spl-dir" requires a non-empty option argument.' fi ;; -i|--isw-handoff) if [ "$2" ]; then handoff="$2" shift else die 'ERROR: "--isw-handoff" requires a non-empty option argument.' fi ;; -b|--board) if [ "$2" ]; then boardroot="$2" shift else die 'ERROR: "--board" requires a non-empty option argument.' fi ;; *) break esac shift done bareboxsrc=. cd ${bareboxsrc} copy_source() { local src local tgt src=$1 tgt=$2 echo "Merging source code $src to $tgt" cp $src $tgt dos2unix $tgt echo " Fixing conditional compilation..." unifdef -D HCX_COMPAT_MODE=1 -D ENABLE_INST_ROM_WRITE=1 $tgt -o $tgt echo " Fixing extern/static keywords..." # Statify all global variables with missing static keyword sed -i 's/^const /static const /g' $tgt sed -i 's/^unsigned long sys_mgr_init_table/static unsigned long sys_mgr_init_table/g' $tgt echo " Remove unused defines..." sed -i 's/\[CONFIG_HPS_PINMUX_NUM\]/\[\]/g' $tgt echo " Translating altera int types..." # Replace altera types sed -i 's/alt_u32/uint32_t/g' $tgt sed -i 's/alt_u16/uint16_t/g' $tgt sed -i 's/alt_16/int16_t/g' $tgt sed -i 's/alt_32/int32_t/g' $tgt sed -i 's/alt_u8/uint8_t/g' $tgt sed -i 's/alt_8/int8_t/g' $tgt sed -i 's/#include "alt_types.h"//g' $tgt echo " Fixing include paths..." # Fix include pathes sed -i 's/#include /#include /g' $tgt sed -i 's/#include /#include /g' $tgt sed -i 's/#include "sequencer_auto.h"//g' $tgt sed -i 's/#include "sequencer_defines.h"//g' $tgt echo " Automated readability fixup..." indent -npro -kr -i8 -ts8 -sob -l100 -ss -ncs -cp1 -il0 $tgt sed -i 's/ $//g' $tgt } generate_spl() { USE_SOCEDS_PYTHON=1 SOCEDS_DESTROY_PATH=1 \ ${embeddedsw}/embedded/embedded_command_shell.sh python \ ${embeddedsw}/embedded/ip/altera/preloader/scripts/iswgen.py \ -i ${handoff} -o ${splroot}/ } if [ -z $splroot ] || [ -z $boardroot ] || [ -z $handoff ]; then usage fi if [ $generate ]; then generate_spl fi copy_source ${splroot}/iocsr_config_cyclone5.c ${boardroot}/iocsr_config_cyclone5.c copy_source ${splroot}/pinmux_config_cyclone5.c ${boardroot}/pinmux_config.c copy_source ${splroot}/pll_config.h ${boardroot}/pll_config.h copy_source ${splroot}/sdram/sdram_config.h ${boardroot}/sdram_config.h copy_source ${handoff}/sequencer_auto.h ${boardroot}/sequencer_auto.h copy_source ${handoff}/sequencer_auto_ac_init.c ${boardroot}/sequencer_auto_ac_init.c copy_source ${handoff}/sequencer_auto_inst_init.c ${boardroot}/sequencer_auto_inst_init.c copy_source ${handoff}/sequencer_defines.h ${boardroot}/sequencer_defines.h if [ $generate ]; then rm -r ${splroot} fi echo "DONE"