FreeCalypso > hg > fc-tourmaline
view configure.sh @ 303:f76436d19a7a default tip
!GPRS config: fix long-standing AT+COPS chance hanging bug
There has been a long-standing bug in FreeCalypso going back years:
sometimes in the AT command bring-up sequence of an ACI-only MS,
the AT+COPS command would produce only a power scan followed by
cessation of protocol stack activity (only L1 ADC traces), instead
of the expected network search sequence. This behaviour was seen
in different FC firmware versions going back to Citrine, and seemed
to follow some law of chance, not reliably repeatable.
This bug has been tracked down and found to be specific to !GPRS
configuration, stemming from our TCS2/TCS3 hybrid and reconstruction
of !GPRS support that was bitrotten in TCS3.2/LoCosto version.
ACI module psa_mms.c, needed only for !GPRS, was missing in the TCS3
version and had to be pulled from TCS2 - but as it turns out,
there is a new field in the MMR_REG_REQ primitive that needs to be
set correctly, and that psa_mms.c module is the place where this
initialization needed to be added.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 08 Jun 2023 08:23:37 +0000 |
parents | 8dfdf88d632f |
children |
line wrap: on
line source
#!/bin/sh set -e if [ ! -f configure.sh ] then echo "This script needs to be run from the top of the source tree" 1>&2 exit 1 fi if [ ! -f helpers/makeline ] then echo "Please run make in the helpers directory first" 1>&2 exit 1 fi # start looking at our invokation line if [ "$1" = --clean ] then clean_flag=1 shift else clean_flag=0 fi if [ $# -lt 2 ] then echo "usage: $0 [--clean] target config [vars]" 1>&2 exit 1 fi TARGET="$1" CONFIG="$2" if [ ! -f "targets/$TARGET.conf" -o ! -f "targets/$TARGET.h" ] then echo "Error: target $TARGET not known" 1>&2 exit 1 fi if [ ! -f "configs/$CONFIG" ] then echo "Error: configuration $CONFIG not known" 1>&2 exit 1 fi # target defaults that can be overridden by $TARGET.conf CHIPSET=10 DSP=36 RF=12 DISABLE_SLEEP=0 BUZM_STATE=0 FCHG_STATE=0 VIBR_STATE=0 RVTMUX_ON_MODEM=0 . "targets/$TARGET.conf" # settings derived from the target-defined DSP version case "$DSP" in 33) AMR=0 L1_DYN_DSP_DWNLD=0 L1_VOICE_MEMO_AMR=0 MELODY_E2=0 SPEECH_RECO=0 ;; 34) AMR=1 L1_DYN_DSP_DWNLD=0 L1_VOICE_MEMO_AMR=0 MELODY_E2=0 SPEECH_RECO=0 ;; 36) AMR=1 L1_DYN_DSP_DWNLD=1 L1_VOICE_MEMO_AMR=1 MELODY_E2=1 SPEECH_RECO=1 ;; *) echo "Error: DSP=$DSP setting not understood" 1>&2 exit 1 esac # functional configuration part # these vars MUST be set by the functional config GPRS= MMI= R2D_STATE= SRVC= # dummy defaults for sans-UI configs R2D_EMBEDDED_LCD=7 UI_CONFIG=bigcolor # apply functional config . "configs/$CONFIG" # verify it if [ -z "$GPRS" ] then echo "Error: configs/$CONFIG must set GPRS=" 1>&2 exit 1 fi if [ -z "$MMI" ] then echo "Error: configs/$CONFIG must set MMI=" 1>&2 exit 1 fi if [ -z "$R2D_STATE" ] then echo "Error: configs/$CONFIG must set R2D_STATE=" 1>&2 exit 1 fi if [ -z "$SRVC" ] then echo "Error: configs/$CONFIG must set SRVC=" 1>&2 exit 1 fi if [ "$MMI" != 0 ] then FCHG_STATE=1 fi # miscellaneous configurable feature settings ALLOW_CSIM_GSM=1 MEMSUPER=0 OSL=0 OSX=0 SERIAL_DYNAMIC_SWITCH=0 TI_PROFILER=0 TRACEMASK_IN_FFS=0 TR_BAUD_CONFIG=TR_BAUD_115200 USE_CACHE=1 USE_STR2IND=0 SUFFIX= # allow the user to override these defaults shift shift while [ $# != 0 ] do eval "$1" shift done BUILD_DIR="build-$TARGET-$CONFIG$SUFFIX" echo "Building configuration $CONFIG for target $TARGET in $BUILD_DIR" if [ "$clean_flag" = 1 ] then rm -rf $BUILD_DIR fi mkdir -p $BUILD_DIR : > $BUILD_DIR/lcfgen # shell functions to be used in the configuration recipe build_lib() { if [ $# != 1 ] then echo "Error: build_lib takes 1 argument" 1>&2 exit 1 fi scripts/mk-component.sh "$1" SUBDIR="$SUBDIR $1" current_lib=$1/$1.lib LIBS="$LIBS $current_lib" } blob_lib() { if [ $# != 1 ] then echo "Error: blob_lib takes 1 argument" 1>&2 exit 1 fi current_lib="../blobs/$1.lib" LIBS="$LIBS $current_lib" } cache_lib() { if [ $# != 1 ] then echo "Error: cache_lib takes 1 argument" 1>&2 exit 1 fi current_lib="../cache/$1.lib" LIBS="$LIBS $current_lib" } lib_link_magic() { if [ $# != 1 ] then echo "Error: lib_link_magic takes 1 argument" 1>&2 exit 1 fi if [ -z "$current_lib" ] then echo "Error: lib_link_magic called before build_lib or blob_lib" 1>&2 exit 1 fi SPECIAL_LINK_LIBS="$SPECIAL_LINK_LIBS $current_lib" echo "$1" >> $BUILD_DIR/lcfgen } # invoke the configuration recipe export BUILD_DIR TARGET USE_STR2IND export CHIPSET DSP RF export AMR L1_DYN_DSP_DWNLD L1_VOICE_MEMO_AMR MELODY_E2 SPEECH_RECO export DISABLE_SLEEP export BUZM_STATE FCHG_STATE R2D_STATE VIBR_STATE export GPRS MMI SRVC RVTMUX_ON_MODEM export R2D_EMBEDDED_LCD UI_CONFIG export ALLOW_CSIM_GSM SERIAL_DYNAMIC_SWITCH TR_BAUD_CONFIG export TI_PROFILER TRACEMASK_IN_FFS export MEMSUPER OSL scripts/config-headers.sh SUBDIR= LIBS= SPECIAL_LINK_LIBS= current_lib= if [ "$USE_CACHE" = 1 ] then cache_lib ccddata else build_lib ccddata fi # ACI libs build_lib aci build_lib aciext build_lib aci_dti_mng build_lib atiext build_lib comlib if [ "$GPRS" = 1 ] then build_lib config_gprs_fl build_lib config_gprs_ir else build_lib config_gsm_fl build_lib config_gsm_ir fi lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' # UI layers if [ "$MMI" = 2 ] then build_lib bmi if [ "$UI_CONFIG" = bigcolor ] then build_lib icn fi build_lib mfw build_lib fcbm fi # G23M protocol stack libs build_lib alr build_lib cc build_lib dl build_lib dti build_lib l1_pei build_lib mm build_lib rr build_lib sim_b_lib build_lib sms build_lib ss build_lib uart_b_lib # fax and data if [ "$SRVC" != 0 ] then build_lib l2r build_lib ra build_lib rlp fi # fax specific if [ "$SRVC" = 1 ] then build_lib fad build_lib t30 fi # GPRS specific if [ "$GPRS" = 1 ] then build_lib cci build_lib cci_ir lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' build_lib cl build_lib gmm build_lib grlc build_lib grlc_ir lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' build_lib grr build_lib llc build_lib sm build_lib sndcp build_lib ppp build_lib ppp_ir lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' build_lib upm fi # Condat drivers build_lib gdi # GPF if [ "$USE_CACHE" = 1 -a "$MEMSUPER" = 0 ] then cache_lib ccd_na7_db elif [ "$USE_CACHE" = 1 -a "$MEMSUPER" = 2 ] then cache_lib ccd_na7_db_ps else build_lib ccd fi if [ "$USE_CACHE" = 1 -a "$MEMSUPER" = 0 -a "$OSL" = 0 ] then cache_lib frame_na7_db_fl cache_lib frame_na7_db_ir elif [ "$USE_CACHE" = 1 -a "$MEMSUPER" = 2 -a "$OSL" = 0 ] then cache_lib frame_na7_db_ps_fl cache_lib frame_na7_db_ps_ir else build_lib frame_fl build_lib frame_ir fi lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' if [ "$USE_CACHE" = 1 ] then cache_lib misc_na7_db_fl cache_lib misc_na7_db_ir else build_lib misc_fl build_lib misc_ir fi lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' if [ "$OSX" = 1 -o "$MEMSUPER" != 0 ] then build_lib osx else blob_lib osx_na7_db fi lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' build_lib tif_fl build_lib tif_ir lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' # core drivers build_lib drivers_flash # Layer 1 build_lib tpudrv lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' build_lib l1_ext lib_link_magic '(BSS_LIBS (.l1s_global))' build_lib l1_int lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' build_lib l1_custom_ext build_lib l1_custom_int lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' build_lib riviera_core_flash build_lib riviera_cust_flash # services build_lib audio build_lib audio_bgd if [ "$BUZM_STATE" = 1 ] then build_lib buzm fi build_lib cst build_lib dar build_lib dar_gbl_var lib_link_magic '(BSS_DAR_LIB (.bss))' build_lib etm build_lib lls if [ "$VIBR_STATE" = 1 ] then build_lib vibr fi # app drivers build_lib abb build_lib buzzer if [ "$FCHG_STATE" = 1 ] then build_lib fchg fi build_lib ffs build_lib ffs_drv build_lib ffs_pcm build_lib kpd build_lib power if [ "$R2D_STATE" = 1 ] then build_lib r2d_drv_custom_flash build_lib r2d_drv_flash build_lib r2d_drv_int_ram lib_link_magic '(CONST_LIBS (.text, .r2dlcd))' fi build_lib rtc_drv build_lib sim_drv build_lib spi_drv build_lib uart_drv # system glue build_lib main build_lib bootloader lib_link_magic '(CONST_BOOT_LIB (.const, .text, .text:v$3) BSS_BOOT_LIB (.bss))' # Nucleus if [ "$USE_CACHE" = 1 ] then cache_lib nucleus_flash cache_lib nucleus_intram else build_lib nucleus_flash build_lib nucleus_intram fi lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))' # TI's libc/libgcc equivalent blob_lib rts16le_flash blob_lib rts16le_int_ram lib_link_magic '(BSS_LIBS (.bss))' # generate the top level Makefile! helpers/makeline def CONFIG_NAME "$CONFIG$SUFFIX" > $BUILD_DIR/Makefile echo >> $BUILD_DIR/Makefile helpers/makeline def TARGET $TARGET >> $BUILD_DIR/Makefile echo >> $BUILD_DIR/Makefile helpers/makeline def SUBDIR $SUBDIR >> $BUILD_DIR/Makefile echo >> $BUILD_DIR/Makefile helpers/makeline def LIBS $LIBS >> $BUILD_DIR/Makefile echo >> $BUILD_DIR/Makefile helpers/makeline def SPECIAL_LINK_LIBS $SPECIAL_LINK_LIBS >> $BUILD_DIR/Makefile echo >> $BUILD_DIR/Makefile helpers/makeline def LINK_SCRIPT_SRC ../$LINK_SCRIPT_SRC >> $BUILD_DIR/Makefile echo >> $BUILD_DIR/Makefile if [ -n "$RAM_LINK_SCRIPT_SRC" ] then helpers/makeline def RAM_LINK_SCRIPT_SRC ../$RAM_LINK_SCRIPT_SRC \ >> $BUILD_DIR/Makefile echo >> $BUILD_DIR/Makefile fi helpers/makeline def FLASH_BASE_ADDR $FLASH_BASE_ADDR >> $BUILD_DIR/Makefile helpers/makeline def FLASH_SECTOR_SIZE $FLASH_SECTOR_SIZE >> $BUILD_DIR/Makefile echo >> $BUILD_DIR/Makefile if [ "$USE_STR2IND" = 1 ] then helpers/makeline def STR2IND_OBJ str2ind.obj >> $BUILD_DIR/Makefile else echo 'STR2IND_OBJ=' >> $BUILD_DIR/Makefile fi echo >> $BUILD_DIR/Makefile cat makefile-frags/first-part >> $BUILD_DIR/Makefile if [ "$USE_STR2IND" = 1 ] then cat makefile-frags/str2ind >> $BUILD_DIR/Makefile fi cat makefile-frags/link-steps >> $BUILD_DIR/Makefile case "$TARGET" in c11x|c139|j100) cat makefile-frags/m0-to-bin-c139 >> $BUILD_DIR/Makefile ;; c155) cat makefile-frags/m0-to-bin-c155 >> $BUILD_DIR/Makefile ;; *) cat makefile-frags/m0-to-bin-std >> $BUILD_DIR/Makefile ;; esac cat makefile-frags/flash-script-gen >> $BUILD_DIR/Makefile if [ -n "$RAM_LINK_SCRIPT_SRC" ] then cat makefile-frags/ram-link-steps >> $BUILD_DIR/Makefile fi cat makefile-frags/clean-always >> $BUILD_DIR/Makefile echo >> $BUILD_DIR/Makefile echo 'FRC:' >> $BUILD_DIR/Makefile # All done! echo "Run make in $BUILD_DIR to compile the firmware"