multiple firmware configs at the same time

This commit is contained in:
2021-08-09 14:43:33 +02:00
parent 673f68d2c1
commit 8f47ce7b63
9 changed files with 1798 additions and 80 deletions

4
.gitignore vendored
View File

@ -1,7 +1,11 @@
desktop.ini
/build
/build_*
/CMakeLists.txt.user*
/cmake-build-debug
/platformio.pro*
/config.cmake
/sdkconfig
/sdkconfig.old*
/.idea
/.ccache

View File

@ -1,85 +1,10 @@
cmake_minimum_required(VERSION 3.16.3)
add_definitions(
-DUSER_SETUP_LOADED=1
-DLOAD_GLCD=1
-DLOAD_FONT2=1
-DLOAD_FONT4=1
-DLOAD_FONT7=1
-DFEATURE_ADC_IN
-DPINS_GAS=34
-DPINS_BREMS=35
# -DPINS_LED=23
-DILI9341_DRIVER=1
-DTFT_MOSI=13
-DTFT_SCLK=15
-DTFT_CS=14
-DTFT_DC=12
-DTFT_RST=2
-DSPI_FREQUENCY=27000000
-DDEFAULT_SWAPSCREENBYTES=false
-DFEATURE_CAN
# -DFEATURE_SERIAL
# -DPINS_RX1=4
# -DPINS_TX1=5
# -DPINS_RX2=22
# -DPINS_TX2=23
-DDEFAULT_INVERTFRONTLEFT=false
-DDEFAULT_INVERTFRONTRIGHT=true
-DDEFAULT_INVERTBACKLEFT=false
-DDEFAULT_INVERTBACKRIGHT=true
-DDEFAULT_WHEELDIAMETER=255
# -DFEATURE_MOSFETS
# -DPINS_MOSFET0=18
# -DPINS_MOSFET1=19
# -DPINS_MOSFET2=21
-DDEFAULT_IMOTMAX=35
-DDEFAULT_IDCMAX=37
-DDEFAULT_NMOTMAX=2000
-DDEFAULT_FIELDWEAKMAX=7
-DDEFAULT_FIELDADVMAX=40
-DDEVICE_PREFIX=bobbyquad
-DAP_PASSWORD=Passwort_123
-DFEATURE_WEBSERVER
-DFEATURE_OTA
-DFEATURE_DPAD_5WIRESW
-DPINS_DPAD_5WIRESW_OUT=18
-DPINS_DPAD_5WIRESW_IN1=19
-DPINS_DPAD_5WIRESW_IN2=27
-DPINS_DPAD_5WIRESW_IN3=32
-DPINS_DPAD_5WIRESW_IN4=33
-DDPAD_5WIRESW_UP=6
-DDPAD_5WIRESW_DOWN=3
-DDPAD_5WIRESW_CONFIRM=7
-DDPAD_5WIRESW_BACK=2
-DDPAD_5WIRESW_PROFILE0=1
-DDPAD_5WIRESW_PROFILE1=5
-DDPAD_5WIRESW_PROFILE2=0
-DDPAD_5WIRESW_PROFILE3=4
# -DDPAD_5WIRESW_DEBUG
-DDEFAULT_GASMIN=150
-DDEFAULT_GASMAX=1300
-DDEFAULT_BREMSMIN=200
-DDEFAULT_BREMSMAX=1500
-DFEATURE_BLE
# -DFEATURE_BLUETOOTH
# -DFEATURE_BMS
# -DFEATURE_GAMETRAK
# -DPINS_GAMETRAKX=34
# -DPINS_GAMETRAKY=39
# -DPINS_GAMETRAKDIST=36
# -DDEFAULT_GAMETRAKXMIN=0
# -DDEFAULT_GAMETRAKXMAX=4095
# -DDEFAULT_GAMETRAKYMIN=0
# -DDEFAULT_GAMETRAKYMAX=4095
# -DDEFAULT_GAMETRAKDISTMIN=0
# -DDEFAULT_GAMETRAKDISTMAX=4095
# -DFEATURE_CLOUD
)
include(config.cmake)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project(boardcomputer)
project(${BOBBY_APP_NAME})

View File

@ -3,16 +3,36 @@
[![Build Status](https://travis-ci.org/bobbycar-graz/bobbycar-boardcomputer-firmware.svg?branch=master)](https://travis-ci.org/bobbycar-graz/bobbycar-boardcomputer-firmware)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/04c264db40c44276833f43b9c083dc14)](https://app.codacy.com/gh/bobbycar-graz/bobbycar-boardcomputer-firmware?utm_source=github.com&utm_medium=referral&utm_content=bobbycar-graz/bobbycar-boardcomputer-firmware&utm_campaign=Badge_Grade_Dashboard)
## How to clone and compile?
## How to clone ? (READ THIS OR YOU WILL FAIL)
```
git clone --recursive git@github.com:bobbycar-graz/bobbycar-boardcomputer-firmware.git
cd bobbycar-boardcomputer-firmware/
./esp-idf/install.sh
. esp-idf/export.sh
idf.py -p /dev/ttyUSB0 -b 921600 flash monitor
./switchconf.sh feedc0de
```
## How to compile
Also do the initialization if you use an IDE, otherwise build will fail.
```
# before you try to build anything, always do this first:
. export.sh
# if needed, switch to the right configuration for your hardware (run with --list to list available configurations)
./switchconf.sh feedc0de
# flash bootloader, partition table and app (only do once)
idf.py -p /dev/ttyUSB0 -b 921600 flash monitor
# flash only app (do this for development as it is much faster)
idf.py -p /dev/ttyUSB0 -b 921600 app-flash monitor
```
if you are inside monitor, hit Ctrl+T then Ctrl+X to exit.
Hit Ctrl+T then Ctrl+A to reflash the app and return to monitor (very handy during development)
## How to wire all connections?
![Wiring diagram](/img/wiring.png)

78
config_comred.cmake Normal file
View File

@ -0,0 +1,78 @@
set(BOBBY_APP_NAME bobbyquad_feedc0de)
add_definitions(
-DUSER_SETUP_LOADED=1
-DLOAD_GLCD=1
-DLOAD_FONT2=1
-DLOAD_FONT4=1
-DLOAD_FONT7=1
-DFEATURE_ADC_IN
-DPINS_GAS=34
-DPINS_BREMS=35
# -DPINS_LED=23
-DILI9341_DRIVER=1
-DTFT_MOSI=13
-DTFT_SCLK=15
-DTFT_CS=14
-DTFT_DC=12
-DTFT_RST=2
-DSPI_FREQUENCY=27000000
-DDEFAULT_SWAPSCREENBYTES=false
-DFEATURE_CAN
# -DFEATURE_SERIAL
# -DPINS_RX1=4
# -DPINS_TX1=5
# -DPINS_RX2=22
# -DPINS_TX2=23
-DDEFAULT_INVERTFRONTLEFT=false
-DDEFAULT_INVERTFRONTRIGHT=true
-DDEFAULT_INVERTBACKLEFT=false
-DDEFAULT_INVERTBACKRIGHT=true
-DDEFAULT_WHEELDIAMETER=255
# -DFEATURE_MOSFETS
# -DPINS_MOSFET0=18
# -DPINS_MOSFET1=19
# -DPINS_MOSFET2=21
-DDEFAULT_IMOTMAX=35
-DDEFAULT_IDCMAX=37
-DDEFAULT_NMOTMAX=2000
-DDEFAULT_FIELDWEAKMAX=7
-DDEFAULT_FIELDADVMAX=40
-DDEVICE_PREFIX=bobbyquad
-DAP_PASSWORD=Passwort_123
-DFEATURE_WEBSERVER
-DFEATURE_OTA
-DFEATURE_DPAD_5WIRESW
-DPINS_DPAD_5WIRESW_OUT=18
-DPINS_DPAD_5WIRESW_IN1=19
-DPINS_DPAD_5WIRESW_IN2=27
-DPINS_DPAD_5WIRESW_IN3=32
-DPINS_DPAD_5WIRESW_IN4=33
-DDPAD_5WIRESW_UP=6
-DDPAD_5WIRESW_DOWN=3
-DDPAD_5WIRESW_CONFIRM=7
-DDPAD_5WIRESW_BACK=2
-DDPAD_5WIRESW_PROFILE0=1
-DDPAD_5WIRESW_PROFILE1=5
-DDPAD_5WIRESW_PROFILE2=0
-DDPAD_5WIRESW_PROFILE3=4
# -DDPAD_5WIRESW_DEBUG
-DDEFAULT_GASMIN=150
-DDEFAULT_GASMAX=1300
-DDEFAULT_BREMSMIN=200
-DDEFAULT_BREMSMAX=1500
-DFEATURE_BLE
# -DFEATURE_BLUETOOTH
# -DFEATURE_BMS
# -DFEATURE_GAMETRAK
# -DPINS_GAMETRAKX=34
# -DPINS_GAMETRAKY=39
# -DPINS_GAMETRAKDIST=36
# -DDEFAULT_GAMETRAKXMIN=0
# -DDEFAULT_GAMETRAKXMAX=4095
# -DDEFAULT_GAMETRAKYMIN=0
# -DDEFAULT_GAMETRAKYMAX=4095
# -DDEFAULT_GAMETRAKDISTMIN=0
# -DDEFAULT_GAMETRAKDISTMAX=4095
# -DFEATURE_CLOUD
)

78
config_feedc0de.cmake Normal file
View File

@ -0,0 +1,78 @@
set(BOBBY_APP_NAME bobbyquad_feedc0de)
add_definitions(
-DUSER_SETUP_LOADED=1
-DLOAD_GLCD=1
-DLOAD_FONT2=1
-DLOAD_FONT4=1
-DLOAD_FONT7=1
-DFEATURE_ADC_IN
-DPINS_GAS=34
-DPINS_BREMS=35
# -DPINS_LED=23
-DILI9341_DRIVER=1
-DTFT_MOSI=13
-DTFT_SCLK=15
-DTFT_CS=14
-DTFT_DC=12
-DTFT_RST=2
-DSPI_FREQUENCY=27000000
-DDEFAULT_SWAPSCREENBYTES=false
-DFEATURE_CAN
# -DFEATURE_SERIAL
# -DPINS_RX1=4
# -DPINS_TX1=5
# -DPINS_RX2=22
# -DPINS_TX2=23
-DDEFAULT_INVERTFRONTLEFT=false
-DDEFAULT_INVERTFRONTRIGHT=true
-DDEFAULT_INVERTBACKLEFT=false
-DDEFAULT_INVERTBACKRIGHT=true
-DDEFAULT_WHEELDIAMETER=255
# -DFEATURE_MOSFETS
# -DPINS_MOSFET0=18
# -DPINS_MOSFET1=19
# -DPINS_MOSFET2=21
-DDEFAULT_IMOTMAX=35
-DDEFAULT_IDCMAX=37
-DDEFAULT_NMOTMAX=2000
-DDEFAULT_FIELDWEAKMAX=7
-DDEFAULT_FIELDADVMAX=40
-DDEVICE_PREFIX=bobbyquad
-DAP_PASSWORD=Passwort_123
-DFEATURE_WEBSERVER
-DFEATURE_OTA
-DFEATURE_DPAD_5WIRESW
-DPINS_DPAD_5WIRESW_OUT=18
-DPINS_DPAD_5WIRESW_IN1=19
-DPINS_DPAD_5WIRESW_IN2=27
-DPINS_DPAD_5WIRESW_IN3=32
-DPINS_DPAD_5WIRESW_IN4=33
-DDPAD_5WIRESW_UP=6
-DDPAD_5WIRESW_DOWN=3
-DDPAD_5WIRESW_CONFIRM=7
-DDPAD_5WIRESW_BACK=2
-DDPAD_5WIRESW_PROFILE0=1
-DDPAD_5WIRESW_PROFILE1=5
-DDPAD_5WIRESW_PROFILE2=0
-DDPAD_5WIRESW_PROFILE3=4
# -DDPAD_5WIRESW_DEBUG
-DDEFAULT_GASMIN=150
-DDEFAULT_GASMAX=1300
-DDEFAULT_BREMSMIN=200
-DDEFAULT_BREMSMAX=1500
-DFEATURE_BLE
# -DFEATURE_BLUETOOTH
# -DFEATURE_BMS
# -DFEATURE_GAMETRAK
# -DPINS_GAMETRAKX=34
# -DPINS_GAMETRAKY=39
# -DPINS_GAMETRAKDIST=36
# -DDEFAULT_GAMETRAKXMIN=0
# -DDEFAULT_GAMETRAKXMAX=4095
# -DDEFAULT_GAMETRAKYMIN=0
# -DDEFAULT_GAMETRAKYMAX=4095
# -DDEFAULT_GAMETRAKDISTMIN=0
# -DDEFAULT_GAMETRAKDISTMAX=4095
# -DFEATURE_CLOUD
)

57
export.sh Normal file
View File

@ -0,0 +1,57 @@
if [[ $_ == $0 ]]
then
echo "export.sh has to be sourced, not run in a subshell"
echo ". export.sh"
exit 1
fi
BOBBY_ROOT="$(dirname "$BASH_SOURCE")"
if [[ ! -f "${BOBBY_ROOT}/esp-idf/export.sh" ]]
then
echo "esp-idf is missing, please check out all needed submodules!"
echo "git submodule update --init --recursive"
return
fi
. ${BOBBY_ROOT}/esp-idf/export.sh
complete -W "$(./switchconf.sh --list)" ./switchconf.sh
BOBBY_INIT_FAILED=
if [[ -e "build" ]] && [[ ! -L "build" ]]
then
echo "ERROR: build folder exists but isnt a symlink!"
BOBBY_INIT_FAILED=1
fi
if [[ -e "sdkconfig" ]]
then
if [[ ! -L "sdkconfig" ]]
then
echo "ERROR: sdkconfig exists but isnt a symlink!"
BOBBY_INIT_FAILED=1
fi
else
echo "ERROR: sdkconfig does not exist"
BOBBY_INIT_FAILED=1
fi
if [[ -e "config.cmake" ]]
then
if [[ ! -L "config.cmake" ]]
then
echo "ERROR: config.cmake exists but isnt a symlink!"
BOBBY_INIT_FAILED=1
fi
else
echo "ERROR: config.cmake does not exist"
BOBBY_INIT_FAILED=1
fi
if [[ ! -z "$BOBBY_INIT_FAILED" ]]
then
echo "run ./switchconf.sh to fix all listed issues"
return
fi

1467
sdkconfig_feedc0de Normal file

File diff suppressed because it is too large Load Diff

89
switchconf.sh Executable file
View File

@ -0,0 +1,89 @@
#!/bin/bash
[[ $_ != $0 ]] && HAS_BEEN_SOURCED=1
VALID_CONFIGS=(feedc0de comred)
function print_usage
{
echo "usage: ./switchconf.sh ${VALID_CONFIGS[@]}"
}
if [[ ! -z "${HAS_BEEN_SOURCED}" ]]
then
echo "switch.sh cannot be sourced, run in a subshell"
print_usage
return
fi
if [[ -z "$1" ]]
then
echo "ERROR: no buildconfig specified"
print_usage
exit 1
fi
if [[ ! " ${VALID_CONFIGS[@]} " =~ " $1 " ]]
then
case "$1" in
"--help")
print_usage
exit
;;
"--list")
for i in ${VALID_CONFIGS[@]}
do
echo "$i"
done
exit
;;
*)
echo "ERROR: invalid buildconfig \"$1\""
print_usage
exit 1
;;
esac
fi
if [[ -L "build" ]]
then
rm -v "build"
else
if [[ -e "build" ]]
then
echo build is not a symlink
mv "build" "build.bak" -v
fi
fi
mkdir -pv "build_$1"
if [[ -L "sdkconfig" ]]
then
rm -v "sdkconfig"
else
if [[ -e "sdkconfig" ]]
then
echo sdkconfig is not a symlink
mv "sdkconfig" "sdkconfig.bak" -v
fi
fi
if [[ -L "config.cmake" ]]
then
rm -v "config.cmake"
else
if [[ -e "config.cmake" ]]
then
echo config.cmake is not a symlink
mv "config.cmake" "config.cmake.bak" -v
fi
fi
ln -vs "build_$1" "build"
ln -vs "sdkconfig_$1" "sdkconfig"
ln -vs "config_$1.cmake" "config.cmake"
echo all ok