mirror of
https://github.com/opentx/opentx.git
synced 2025-07-19 22:35:12 +03:00
Switch to CMake - Taranis bootloader added. Tests done.
This commit is contained in:
parent
356faefb6d
commit
d02d0f26db
14 changed files with 215 additions and 120 deletions
|
@ -28,6 +28,7 @@ add_subdirectory(translations)
|
||||||
add_subdirectory(bitmaps)
|
add_subdirectory(bitmaps)
|
||||||
add_subdirectory(lua)
|
add_subdirectory(lua)
|
||||||
|
|
||||||
|
set(EEPROM_VARIANT 0)
|
||||||
set(GVARS_VARIANT 1)
|
set(GVARS_VARIANT 1)
|
||||||
set(FRSKY_VARIANT 2)
|
set(FRSKY_VARIANT 2)
|
||||||
set(3POS_VARIANT 4)
|
set(3POS_VARIANT 4)
|
||||||
|
@ -93,6 +94,7 @@ if(PCB STREQUAL HORUS)
|
||||||
STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dma2d.c
|
STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dma2d.c
|
||||||
)
|
)
|
||||||
elseif(PCB STREQUAL TARANIS)
|
elseif(PCB STREQUAL TARANIS)
|
||||||
|
option(PCBREV "PCB Revision" REVPLUS)
|
||||||
option(SHUTDOWN_CONFIRMATION "Shutdown confirmation" OFF)
|
option(SHUTDOWN_CONFIRMATION "Shutdown confirmation" OFF)
|
||||||
option(LCD_DUAL_BUFFER "Dual LCD Buffer" OFF)
|
option(LCD_DUAL_BUFFER "Dual LCD Buffer" OFF)
|
||||||
option(TARANIS_INTERNAL_PPM "Taranis internal module hack to output PPM" OFF)
|
option(TARANIS_INTERNAL_PPM "Taranis internal module hack to output PPM" OFF)
|
||||||
|
@ -132,6 +134,7 @@ elseif(PCB STREQUAL TARANIS)
|
||||||
set(SRC ${SRC} bmp.cpp)
|
set(SRC ${SRC} bmp.cpp)
|
||||||
set(GUI_SRC ${GUI_SRC} menu_general_diagkeys.cpp menu_general_diaganas.cpp menu_general_hardware.cpp view_channels.cpp view_telemetry.cpp view_text.cpp view_about.cpp)
|
set(GUI_SRC ${GUI_SRC} menu_general_diagkeys.cpp menu_general_diaganas.cpp menu_general_hardware.cpp view_channels.cpp view_telemetry.cpp view_text.cpp view_about.cpp)
|
||||||
set(TARGET_SRC ${TARGET_SRC} board_taranis.cpp rtc_driver.cpp)
|
set(TARGET_SRC ${TARGET_SRC} board_taranis.cpp rtc_driver.cpp)
|
||||||
|
set(FIRMWARE_SRC ${FIRMWARE_SRC} loadboot.cpp)
|
||||||
set(FIRMWARE_TARGET_SRC
|
set(FIRMWARE_TARGET_SRC
|
||||||
${FIRMWARE_TARGET_SRC}
|
${FIRMWARE_TARGET_SRC}
|
||||||
lcd_driver.cpp
|
lcd_driver.cpp
|
||||||
|
@ -154,7 +157,6 @@ elseif(PCB STREQUAL 9X OR PCB STREQUAL 9XR)
|
||||||
set(MCU atmega64)
|
set(MCU atmega64)
|
||||||
string(TOLOWER ${PCB} FLAVOUR)
|
string(TOLOWER ${PCB} FLAVOUR)
|
||||||
set(EEPROM_VARIANT_NEEDED ON)
|
set(EEPROM_VARIANT_NEEDED ON)
|
||||||
set(EEPROM_VARIANT 0)
|
|
||||||
set(EEPROM EEPROM_RLC)
|
set(EEPROM EEPROM_RLC)
|
||||||
set(GUI_DIR 9x)
|
set(GUI_DIR 9x)
|
||||||
set(TARGET_DIR 9x)
|
set(TARGET_DIR 9x)
|
||||||
|
@ -276,6 +278,8 @@ endif()
|
||||||
|
|
||||||
if(ARCH STREQUAL ARM)
|
if(ARCH STREQUAL ARM)
|
||||||
option(TIMERS "Timers count" 2)
|
option(TIMERS "Timers count" 2)
|
||||||
|
option(CLI "Command Line Interface" OFF)
|
||||||
|
option(DEBUG "Debug mode" OFF)
|
||||||
option(SPORT_FILE_LOG "S.PORT Logs on SD card" OFF)
|
option(SPORT_FILE_LOG "S.PORT Logs on SD card" OFF)
|
||||||
option(TRACE_SD_CARD "Traces SD enabled" OFF)
|
option(TRACE_SD_CARD "Traces SD enabled" OFF)
|
||||||
option(TRACE_FATFS "Traces FatFS enabled" OFF)
|
option(TRACE_FATFS "Traces FatFS enabled" OFF)
|
||||||
|
@ -292,22 +296,31 @@ if(ARCH STREQUAL ARM)
|
||||||
endif()
|
endif()
|
||||||
if(TRACE_SD_CARD)
|
if(TRACE_SD_CARD)
|
||||||
add_definitions(-DTRACE_SD_CARD)
|
add_definitions(-DTRACE_SD_CARD)
|
||||||
# DEBUG = YES
|
set(DEBUG ON)
|
||||||
# DEBUG_TRACE_BUFFER = YES
|
set(DEBUG_TRACE_BUFFER ON)
|
||||||
endif()
|
endif()
|
||||||
if(TRACE_FATFS)
|
if(TRACE_FATFS)
|
||||||
add_definitions(-DTRACE_FATFS)
|
add_definitions(-DTRACE_FATFS)
|
||||||
# DEBUG = YES
|
set(DEBUG ON)
|
||||||
# DEBUG_TRACE_BUFFER = YES
|
set(DEBUG_TRACE_BUFFER ON)
|
||||||
endif()
|
endif()
|
||||||
if(TRACE_AUDIO)
|
if(TRACE_AUDIO)
|
||||||
add_definitions(-DTRACE_AUDIO)
|
add_definitions(-DTRACE_AUDIO)
|
||||||
# DEBUG = YES
|
set(DEBUG ON)
|
||||||
# DEBUG_TRACE_BUFFER = YES
|
set(DEBUG_TRACE_BUFFER ON)
|
||||||
endif()
|
endif()
|
||||||
if(DEBUG_TRACE_BUFFER)
|
if(DEBUG_TRACE_BUFFER)
|
||||||
add_definitions(-DDEBUG_TRACE_BUFFER)
|
add_definitions(-DDEBUG_TRACE_BUFFER)
|
||||||
endif()
|
endif()
|
||||||
|
if(CLI)
|
||||||
|
add_definitions(-DCLI)
|
||||||
|
set(SRC ${SRC} cli.cpp dump.cpp)
|
||||||
|
elseif(DEBUG)
|
||||||
|
set(SRC ${SRC} dump.cpp)
|
||||||
|
endif()
|
||||||
|
if(DEBUG)
|
||||||
|
add_definitions(-DDEBUG)
|
||||||
|
endif()
|
||||||
if(SUPPORT_D16_EU_ONLY)
|
if(SUPPORT_D16_EU_ONLY)
|
||||||
add_definitions(-DMODULE_D16_EU_ONLY_SUPPORT)
|
add_definitions(-DMODULE_D16_EU_ONLY_SUPPORT)
|
||||||
endif()
|
endif()
|
||||||
|
@ -409,7 +422,7 @@ else()
|
||||||
include_directories(${THIRDPARTY} targets/common_avr)
|
include_directories(${THIRDPARTY} targets/common_avr)
|
||||||
set(SRC ${SRC} telemetry/mavlink.cpp targets/common_avr/serial_driver.cpp)
|
set(SRC ${SRC} telemetry/mavlink.cpp targets/common_avr/serial_driver.cpp)
|
||||||
set(GUI_SRC ${GUI_SRC} view_mavlink.cpp)
|
set(GUI_SRC ${GUI_SRC} view_mavlink.cpp)
|
||||||
MATH(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${MAVLINK_VARIANT})
|
math(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${MAVLINK_VARIANT})
|
||||||
elseif(EXT STREQUAL TELEMETREZ)
|
elseif(EXT STREQUAL TELEMETREZ)
|
||||||
add_definitions(-DTELEMETREZ)
|
add_definitions(-DTELEMETREZ)
|
||||||
set(SRC ${SRC} telemetry/jeti.cpp)
|
set(SRC ${SRC} telemetry/jeti.cpp)
|
||||||
|
@ -442,7 +455,7 @@ else()
|
||||||
add_definitions(-DVARIO)
|
add_definitions(-DVARIO)
|
||||||
set(SRC ${SRC} vario.cpp)
|
set(SRC ${SRC} vario.cpp)
|
||||||
endif()
|
endif()
|
||||||
MATH(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${FRSKY_VARIANT})
|
math(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${FRSKY_VARIANT})
|
||||||
endif()
|
endif()
|
||||||
add_definitions(-DTIMERS=2)
|
add_definitions(-DTIMERS=2)
|
||||||
if(EEPROM_VARIANT_NEEDED)
|
if(EEPROM_VARIANT_NEEDED)
|
||||||
|
@ -538,7 +551,7 @@ endif()
|
||||||
|
|
||||||
if(GVARS)
|
if(GVARS)
|
||||||
add_definitions(-DGVARS)
|
add_definitions(-DGVARS)
|
||||||
MATH(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${GVARS_VARIANT})
|
math(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${GVARS_VARIANT})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FAI STREQUAL YES)
|
if(FAI STREQUAL YES)
|
||||||
|
@ -656,13 +669,30 @@ if(ARCH STREQUAL ARM)
|
||||||
set(CMAKE_SYSTEM_VERSION 1)
|
set(CMAKE_SYSTEM_VERSION 1)
|
||||||
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -o <OBJECT> <SOURCE>")
|
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -o <OBJECT> <SOURCE>")
|
||||||
|
|
||||||
set(COMMON_FLAGS "-mcpu=${MCU} -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=opentx.lst -DRUN_FROM_FLASH=1 -O${OPT} -gdwarf-2 -DHSE_VALUE=${HSE_VALUE} -fno-exceptions -fdata-sections -ffunction-sections ${WARNING_FLAGS}")
|
set(COMMON_FLAGS "-mcpu=${MCU} -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=opentx.lst -O${OPT} -gdwarf-2 -DHSE_VALUE=${HSE_VALUE} -fno-exceptions -fdata-sections -ffunction-sections ${WARNING_FLAGS}")
|
||||||
set(CMAKE_C_FLAGS "${COMMON_FLAGS} -Wimplicit")
|
set(CMAKE_C_FLAGS "${COMMON_FLAGS} -Wimplicit")
|
||||||
set(CMAKE_CXX_FLAGS "${COMMON_FLAGS}")
|
set(CMAKE_CXX_FLAGS "${COMMON_FLAGS}")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "-mcpu=${MCU} -mthumb -nostartfiles -lm -T${RADIO_SRC_DIRECTORY}/${LINKER_SCRIPT} -Wl,-Map=opentx.map,--cref,--no-warn-mismatch,--gc-sections")
|
set(CMAKE_EXE_LINKER_FLAGS "-mcpu=${MCU} -mthumb -nostartfiles -lm -T${RADIO_SRC_DIRECTORY}/${LINKER_SCRIPT} -Wl,-Map=opentx.map,--cref,--no-warn-mismatch,--gc-sections")
|
||||||
|
|
||||||
add_executable(firmware.bin ${SRC})
|
if(PCB STREQUAL TARANIS)
|
||||||
add_dependencies(firmware.bin ${FIRMWARE_DEPENDENCIES})
|
add_subdirectory(targets/${TARGET_DIR}/bootloader)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT bootloader.bin bootloader.lbm
|
||||||
|
COMMAND arm-none-eabi-objcopy -O binary targets/${TARGET_DIR}/bootloader/bootloader.elf bootloader.bin
|
||||||
|
COMMAND python ${RADIO_DIRECTORY}/util/bin2lbm.py bootloader.bin bootloader.lbm
|
||||||
|
DEPENDS bootloader.elf
|
||||||
|
)
|
||||||
|
add_custom_target(bootloader DEPENDS bootloader.lbm)
|
||||||
|
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} bootloader)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_executable(firmware.elf ${SRC} ${FIRMWARE_HEADERS})
|
||||||
|
add_dependencies(firmware.elf ${FIRMWARE_DEPENDENCIES})
|
||||||
|
|
||||||
|
add_custom_target(firmware.bin
|
||||||
|
COMMAND arm-none-eabi-objcopy -O binary firmware.elf firmware.bin
|
||||||
|
DEPENDS firmware.elf
|
||||||
|
)
|
||||||
else()
|
else()
|
||||||
cmake_force_c_compiler(avr-gcc GNU)
|
cmake_force_c_compiler(avr-gcc GNU)
|
||||||
cmake_force_cxx_compiler(avr-gcc GNU)
|
cmake_force_cxx_compiler(avr-gcc GNU)
|
||||||
|
@ -688,7 +718,7 @@ else()
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(firmware.bin
|
add_custom_target(firmware.bin
|
||||||
COMMAND avr-objcopy -O binary firmware.elf firmware.hex
|
COMMAND avr-objcopy -O binary firmware.elf firmware.bin
|
||||||
DEPENDS firmware.elf
|
DEPENDS firmware.elf
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -696,7 +726,6 @@ else()
|
||||||
COMMAND avr-size --mcu=${MCU} --format=avr firmware.elf
|
COMMAND avr-size --mcu=${MCU} --format=avr firmware.elf
|
||||||
DEPENDS firmware.hex
|
DEPENDS firmware.hex
|
||||||
)
|
)
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_custom_target(firmware.lss
|
add_custom_target(firmware.lss
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
add_bitmaps_target(taranis_xbm_1bit ${RADIO_SRC_DIRECTORY}/bitmaps/*.xbm 128 1bit)
|
add_bitmaps_target(taranis_xbm ${RADIO_SRC_DIRECTORY}/bitmaps/*.xbm 128 1bit)
|
||||||
add_bitmaps_target(taranis_fonts_1bit ${RADIO_SRC_DIRECTORY}/fonts/std/*.png 128 "")
|
add_bitmaps_target(taranis_fonts ${RADIO_SRC_DIRECTORY}/fonts/std/*.png 128 "")
|
||||||
add_bitmaps_target(taranis_bitmaps ${RADIO_SRC_DIRECTORY}/bitmaps/taranis/*.png 212 4bits)
|
add_bitmaps_target(taranis_bitmaps ${RADIO_SRC_DIRECTORY}/bitmaps/taranis/*.png 212 4bits)
|
||||||
add_dependencies(taranis_bitmaps taranis_fonts_1bit taranis_xbm_1bit)
|
add_dependencies(taranis_bitmaps taranis_fonts taranis_xbm)
|
|
@ -45,9 +45,7 @@
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#if !defined(SIMU)
|
#include "opentx.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#if defined(PCBSKY9X)
|
#if defined(PCBSKY9X)
|
||||||
#include "AT91SAM3S4.h"
|
#include "AT91SAM3S4.h"
|
||||||
|
@ -188,4 +186,3 @@ void _bootStart()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -975,74 +975,7 @@ void checkAll();
|
||||||
#include "sbus.h"
|
#include "sbus.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void backlightOn();
|
void backlightOn();
|
||||||
|
|
||||||
enum Analogs {
|
|
||||||
STICK1,
|
|
||||||
STICK2,
|
|
||||||
STICK3,
|
|
||||||
STICK4,
|
|
||||||
#if defined(PCBHORUS)
|
|
||||||
POT1,
|
|
||||||
POT2,
|
|
||||||
POT3,
|
|
||||||
POT_LAST=POT3,
|
|
||||||
SLIDER1,
|
|
||||||
SLIDER2,
|
|
||||||
SLIDER3,
|
|
||||||
SLIDER4,
|
|
||||||
#elif defined(PCBFLAMENCO)
|
|
||||||
POT1,
|
|
||||||
POT2,
|
|
||||||
POT_LAST = POT2,
|
|
||||||
SLIDER1,
|
|
||||||
SLIDER2,
|
|
||||||
SWITCHES1,
|
|
||||||
SWITCHES2,
|
|
||||||
SWITCHES3,
|
|
||||||
SWITCHES4,
|
|
||||||
#elif defined(PCBTARANIS)
|
|
||||||
POT1,
|
|
||||||
POT2,
|
|
||||||
POT3,
|
|
||||||
#if defined(REV9E)
|
|
||||||
POT4,
|
|
||||||
POT_LAST = POT4,
|
|
||||||
#else
|
|
||||||
POT_LAST = POT3,
|
|
||||||
#endif
|
|
||||||
SLIDER1,
|
|
||||||
SLIDER2,
|
|
||||||
#if defined(REV9E)
|
|
||||||
SLIDER3,
|
|
||||||
SLIDER4,
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
POT1,
|
|
||||||
POT2,
|
|
||||||
POT3,
|
|
||||||
POT_LAST = POT3,
|
|
||||||
#endif
|
|
||||||
#if defined(TELEMETRY_MOD_14051) || defined(TELEMETRY_MOD_14051_SWAPPED)
|
|
||||||
// When the mod is applied, ADC7 is connected to 14051's X pin and TX_VOLTAGE
|
|
||||||
// is connected to 14051's X0 pin (one of the multiplexed inputs). TX_VOLTAGE
|
|
||||||
// value is filled in by processMultiplexAna().
|
|
||||||
|
|
||||||
// This shifts TX_VOLTAGE from 7 to 8 and makes X14051 take the 7th position
|
|
||||||
// corresponding to ADC7.
|
|
||||||
X14051,
|
|
||||||
#endif
|
|
||||||
TX_VOLTAGE,
|
|
||||||
#if defined(PCBSKY9X) && !defined(REVA)
|
|
||||||
TX_CURRENT,
|
|
||||||
#endif
|
|
||||||
#if defined(PCBHORUS)
|
|
||||||
MOUSE1,
|
|
||||||
MOUSE2,
|
|
||||||
#endif
|
|
||||||
NUMBER_ANALOG
|
|
||||||
};
|
|
||||||
|
|
||||||
void checkBacklight();
|
void checkBacklight();
|
||||||
void doLoopCommonActions();
|
void doLoopCommonActions();
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,27 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// ADC driver
|
// ADC driver
|
||||||
|
enum Analogs {
|
||||||
|
STICK1,
|
||||||
|
STICK2,
|
||||||
|
STICK3,
|
||||||
|
STICK4,
|
||||||
|
POT1,
|
||||||
|
POT2,
|
||||||
|
POT3,
|
||||||
|
POT_LAST = POT3,
|
||||||
|
#if defined(TELEMETRY_MOD_14051) || defined(TELEMETRY_MOD_14051_SWAPPED)
|
||||||
|
// When the mod is applied, ADC7 is connected to 14051's X pin and TX_VOLTAGE
|
||||||
|
// is connected to 14051's X0 pin (one of the multiplexed inputs). TX_VOLTAGE
|
||||||
|
// value is filled in by processMultiplexAna().
|
||||||
|
|
||||||
|
// This shifts TX_VOLTAGE from 7 to 8 and makes X14051 take the 7th position
|
||||||
|
// corresponding to ADC7.
|
||||||
|
X14051,
|
||||||
|
#endif
|
||||||
|
TX_VOLTAGE,
|
||||||
|
NUMBER_ANALOG
|
||||||
|
};
|
||||||
void adcInit();
|
void adcInit();
|
||||||
void adcPrepareBandgap();
|
void adcPrepareBandgap();
|
||||||
void getADC();
|
void getADC();
|
||||||
|
|
|
@ -217,6 +217,25 @@ void watchdogInit(unsigned int duration);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ADC driver
|
// ADC driver
|
||||||
|
enum Analogs {
|
||||||
|
STICK1,
|
||||||
|
STICK2,
|
||||||
|
STICK3,
|
||||||
|
STICK4,
|
||||||
|
POT1,
|
||||||
|
POT2,
|
||||||
|
POT3,
|
||||||
|
POT_LAST=POT3,
|
||||||
|
SLIDER1,
|
||||||
|
SLIDER2,
|
||||||
|
SLIDER3,
|
||||||
|
SLIDER4,
|
||||||
|
TX_VOLTAGE,
|
||||||
|
MOUSE1,
|
||||||
|
MOUSE2,
|
||||||
|
NUMBER_ANALOG
|
||||||
|
};
|
||||||
|
|
||||||
void adcInit(void);
|
void adcInit(void);
|
||||||
void adcRead(void);
|
void adcRead(void);
|
||||||
uint16_t getAnalogValue(uint32_t value);
|
uint16_t getAnalogValue(uint32_t value);
|
||||||
|
|
|
@ -228,6 +228,21 @@ void disable_dsm2(uint32_t port);
|
||||||
#define isBacklightEnable() (PWM->PWM_CH_NUM[0].PWM_CDTY != 100)
|
#define isBacklightEnable() (PWM->PWM_CH_NUM[0].PWM_CDTY != 100)
|
||||||
|
|
||||||
// ADC driver
|
// ADC driver
|
||||||
|
enum Analogs {
|
||||||
|
STICK1,
|
||||||
|
STICK2,
|
||||||
|
STICK3,
|
||||||
|
STICK4,
|
||||||
|
POT1,
|
||||||
|
POT2,
|
||||||
|
POT3,
|
||||||
|
POT_LAST = POT3,
|
||||||
|
TX_VOLTAGE,
|
||||||
|
#if !defined(REVA)
|
||||||
|
TX_CURRENT,
|
||||||
|
#endif
|
||||||
|
NUMBER_ANALOG
|
||||||
|
};
|
||||||
void adcInit();
|
void adcInit();
|
||||||
void adcRead(void);
|
void adcRead(void);
|
||||||
inline uint16_t getAnalogValue(uint32_t value);
|
inline uint16_t getAnalogValue(uint32_t value);
|
||||||
|
|
|
@ -155,6 +155,7 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
void delaysInit(void);
|
void delaysInit(void);
|
||||||
void delay_01us(uint16_t nb);
|
void delay_01us(uint16_t nb);
|
||||||
|
void delay(uint32_t ms);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -250,8 +251,32 @@ void watchdogInit(unsigned int duration);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ADC driver
|
// ADC driver
|
||||||
|
enum Analogs {
|
||||||
|
STICK1,
|
||||||
|
STICK2,
|
||||||
|
STICK3,
|
||||||
|
STICK4,
|
||||||
|
POT1,
|
||||||
|
POT2,
|
||||||
|
POT3,
|
||||||
|
#if defined(REV9E)
|
||||||
|
POT4,
|
||||||
|
POT_LAST = POT4,
|
||||||
|
#else
|
||||||
|
POT_LAST = POT3,
|
||||||
|
#endif
|
||||||
|
SLIDER1,
|
||||||
|
SLIDER2,
|
||||||
|
#if defined(REV9E)
|
||||||
|
SLIDER3,
|
||||||
|
SLIDER4,
|
||||||
|
#endif
|
||||||
|
TX_VOLTAGE,
|
||||||
|
NUMBER_ANALOG
|
||||||
|
};
|
||||||
void adcInit(void);
|
void adcInit(void);
|
||||||
void adcRead(void);
|
void adcRead(void);
|
||||||
|
extern uint16_t adcValues[NUMBER_ANALOG];
|
||||||
uint16_t getAnalogValue(uint32_t value);
|
uint16_t getAnalogValue(uint32_t value);
|
||||||
|
|
||||||
#define BATT_SCALE 150
|
#define BATT_SCALE 150
|
||||||
|
|
67
radio/src/targets/taranis/bootloader/CMakeLists.txt
Normal file
67
radio/src/targets/taranis/bootloader/CMakeLists.txt
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
if(PCBREV STREQUAL REV9E)
|
||||||
|
set(BOOTLOADER_SRC
|
||||||
|
${BOOTLOADER_SRC}
|
||||||
|
../system_stm32f4xx.c
|
||||||
|
../../../${STM32LIB_DIR}/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc_ride7/startup_stm32f40_41xxx.s
|
||||||
|
../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c
|
||||||
|
../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c
|
||||||
|
../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_spi.c
|
||||||
|
../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_i2c.c
|
||||||
|
../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/misc.c
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
set(BOOTLOADER_SRC
|
||||||
|
${BOOTLOADER_SRC}
|
||||||
|
../system_stm32f2xx.c
|
||||||
|
../../../${STM32LIB_DIR}/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s
|
||||||
|
../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c
|
||||||
|
../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c
|
||||||
|
../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c
|
||||||
|
../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c
|
||||||
|
../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/misc.c
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(BOOTLOADER_SRC
|
||||||
|
${BOOTLOADER_SRC}
|
||||||
|
../../../gui/taranis/lcd.cpp
|
||||||
|
../../../gui/taranis/fonts.cpp
|
||||||
|
../../../keys.cpp
|
||||||
|
../../../strhelpers.cpp
|
||||||
|
../../../${STM32USB_DIR}/STM32_USB_OTG_Driver/src/usb_core.c
|
||||||
|
../../../${STM32USB_DIR}/STM32_USB_OTG_Driver/src/usb_dcd.c
|
||||||
|
../../../${STM32USB_DIR}/STM32_USB_OTG_Driver/src/usb_dcd_int.c
|
||||||
|
../../../${STM32USB_DIR}/STM32_USB_Device_Library/Core/src/usbd_core.c
|
||||||
|
../../../${STM32USB_DIR}/STM32_USB_Device_Library/Core/src/usbd_ioreq.c
|
||||||
|
../../../${STM32USB_DIR}/STM32_USB_Device_Library/Core/src/usbd_req.c
|
||||||
|
../../../${STM32USB_DIR}/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c
|
||||||
|
../../../${STM32USB_DIR}/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c
|
||||||
|
../../../${STM32USB_DIR}/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c
|
||||||
|
../../../${STM32USB_DIR}/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c
|
||||||
|
../../../${FATFS_DIR}/ff.c
|
||||||
|
../../../${FATFS_DIR}/option/ccsbcs.c
|
||||||
|
../lcd_driver.cpp
|
||||||
|
../configure_pins.cpp
|
||||||
|
../keys_driver.cpp
|
||||||
|
../i2c_driver.cpp
|
||||||
|
../flash_driver.cpp
|
||||||
|
../diskio.cpp
|
||||||
|
../usbd_usr.cpp
|
||||||
|
../usbd_storage_msd.cpp
|
||||||
|
../delays.c
|
||||||
|
../usbd_desc.c
|
||||||
|
../aspi.c
|
||||||
|
../usb_bsp.c
|
||||||
|
../usb_driver.c
|
||||||
|
../pwr_driver.c
|
||||||
|
init.c
|
||||||
|
boot.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
remove_definitions(-DUSB_JOYSTICK -DUSB_SERIAL -DDEBUG)
|
||||||
|
add_definitions(-DBOOT -DUSB_MASS_STORAGE)
|
||||||
|
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "-mcpu=${MCU} -mthumb -nostartfiles -lm -T${RADIO_SRC_DIRECTORY}/targets/taranis/stm32_ramboot.ld -Wl,-Map=bootloader.map,--cref,--no-warn-mismatch,--gc-sections")
|
||||||
|
|
||||||
|
add_executable(bootloader.elf ${BOOTLOADER_SRC})
|
||||||
|
add_dependencies(bootloader.elf taranis_fonts firmware_translations)
|
|
@ -55,3 +55,10 @@ void delay_01us(uint16_t nb)
|
||||||
while(TIM13->CNT < nb);
|
while(TIM13->CNT < nb);
|
||||||
TIM13->CR1 = 0x02;
|
TIM13->CR1 = 0x02;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void delay(uint32_t ms)
|
||||||
|
{
|
||||||
|
while(ms--) {
|
||||||
|
delay_01us(10000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -27,16 +27,6 @@
|
||||||
bool lcdInitFinished = false;
|
bool lcdInitFinished = false;
|
||||||
void lcdInitFinish();
|
void lcdInitFinish();
|
||||||
|
|
||||||
/*
|
|
||||||
delaysInit() must be called before the first call to this function!
|
|
||||||
*/
|
|
||||||
static void Delay(uint32_t ms)
|
|
||||||
{
|
|
||||||
while(ms--) {
|
|
||||||
delay_01us(10000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(REVPLUS)
|
#if defined(REVPLUS)
|
||||||
|
|
||||||
// New hardware SPI driver for LCD
|
// New hardware SPI driver for LCD
|
||||||
|
@ -71,7 +61,7 @@ void initLcdSpi()
|
||||||
static void LCD_Init()
|
static void LCD_Init()
|
||||||
{
|
{
|
||||||
WriteCommand(0x2F); //Internal pump control
|
WriteCommand(0x2F); //Internal pump control
|
||||||
Delay(20);
|
delay(20);
|
||||||
WriteCommand(0x24); //Temperature compensation
|
WriteCommand(0x24); //Temperature compensation
|
||||||
WriteCommand(0xE9); //set bias=1/10
|
WriteCommand(0xE9); //set bias=1/10
|
||||||
WriteCommand(0x81); //Set Vop
|
WriteCommand(0x81); //Set Vop
|
||||||
|
@ -106,7 +96,7 @@ static void LCD_Init()
|
||||||
static void LCD_Init()
|
static void LCD_Init()
|
||||||
{
|
{
|
||||||
AspiCmd(0x2B); //Panel loading set ,Internal VLCD.
|
AspiCmd(0x2B); //Panel loading set ,Internal VLCD.
|
||||||
Delay(20);
|
delay(20);
|
||||||
AspiCmd(0x25); //Temperature compensation curve definition: 0x25 = -0.05%/oC
|
AspiCmd(0x25); //Temperature compensation curve definition: 0x25 = -0.05%/oC
|
||||||
AspiCmd(0xEA); //set bias=1/10 :Command table NO.27
|
AspiCmd(0xEA); //set bias=1/10 :Command table NO.27
|
||||||
AspiCmd(0x81); //Set Vop
|
AspiCmd(0x81); //Set Vop
|
||||||
|
@ -349,7 +339,7 @@ void lcdOff()
|
||||||
to re-init LCD without any delay
|
to re-init LCD without any delay
|
||||||
*/
|
*/
|
||||||
AspiCmd(0xAE); //LCD sleep
|
AspiCmd(0xAE); //LCD sleep
|
||||||
Delay(3); //wait for caps to drain
|
delay(3); //wait for caps to drain
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -357,7 +347,7 @@ void lcdOff()
|
||||||
soon as possible after the reset because LCD takes a lot of
|
soon as possible after the reset because LCD takes a lot of
|
||||||
time to properly power-on.
|
time to properly power-on.
|
||||||
|
|
||||||
Make sure that Delay() is functional before calling this function!
|
Make sure that delay() is functional before calling this function!
|
||||||
*/
|
*/
|
||||||
void lcdInit()
|
void lcdInit()
|
||||||
{
|
{
|
||||||
|
@ -367,7 +357,7 @@ void lcdInit()
|
||||||
|
|
||||||
//reset LCD module
|
//reset LCD module
|
||||||
LCD_RST_LOW();
|
LCD_RST_LOW();
|
||||||
Delay(1); // only 3 us needed according to data-sheet, we use 1 ms
|
delay(1); // only 3 us needed according to data-sheet, we use 1 ms
|
||||||
LCD_RST_HIGH();
|
LCD_RST_HIGH();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -404,13 +394,13 @@ void lcdInitFinish()
|
||||||
#if !defined(BOOT)
|
#if !defined(BOOT)
|
||||||
while(g_tmr10ms < (RESET_WAIT_DELAY_MS/10)) {}; //wait measured from the power-on
|
while(g_tmr10ms < (RESET_WAIT_DELAY_MS/10)) {}; //wait measured from the power-on
|
||||||
#else
|
#else
|
||||||
Delay(RESET_WAIT_DELAY_MS);
|
delay(RESET_WAIT_DELAY_MS);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
LCD_Init();
|
LCD_Init();
|
||||||
AspiCmd(0xAF); //dc2=1, IC into exit SLEEP MODE, dc3=1 gray=ON, dc4=1 Green Enhanc mode disabled
|
AspiCmd(0xAF); //dc2=1, IC into exit SLEEP MODE, dc3=1 gray=ON, dc4=1 Green Enhanc mode disabled
|
||||||
Delay(20); //needed for internal DC-DC converter startup
|
delay(20); //needed for internal DC-DC converter startup
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcdSetRefVolt(uint8_t val)
|
void lcdSetRefVolt(uint8_t val)
|
||||||
|
|
|
@ -65,12 +65,7 @@
|
||||||
#define USBD_SERIALNUMBER_FS_STRING "00000000001B"
|
#define USBD_SERIALNUMBER_FS_STRING "00000000001B"
|
||||||
|
|
||||||
|
|
||||||
#if defined(BOOT)
|
#if defined(USB_JOYSTICK)
|
||||||
#define USBD_PID 0x5720
|
|
||||||
#define USBD_PRODUCT_FS_STRING "FrSky Taranis Bootloader"
|
|
||||||
#define USBD_CONFIGURATION_FS_STRING "MSC Config"
|
|
||||||
#define USBD_INTERFACE_FS_STRING "MSC Interface"
|
|
||||||
#elif defined(USB_JOYSTICK)
|
|
||||||
#define USBD_PID 0x5710
|
#define USBD_PID 0x5710
|
||||||
#define USBD_PRODUCT_FS_STRING "FrSky Taranis Joystick"
|
#define USBD_PRODUCT_FS_STRING "FrSky Taranis Joystick"
|
||||||
#define USBD_CONFIGURATION_FS_STRING "HID Config"
|
#define USBD_CONFIGURATION_FS_STRING "HID Config"
|
||||||
|
|
|
@ -72,12 +72,6 @@ void TaskStack<SIZE>::paint()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<int SIZE>
|
|
||||||
uint16_t TaskStack<SIZE>::size()
|
|
||||||
{
|
|
||||||
return SIZE*4;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t getStackAvailable(void * address, uint16_t size)
|
uint16_t getStackAvailable(void * address, uint16_t size)
|
||||||
{
|
{
|
||||||
uint32_t * array = (uint32_t *)address;
|
uint32_t * array = (uint32_t *)address;
|
||||||
|
|
|
@ -62,7 +62,10 @@ class TaskStack
|
||||||
public:
|
public:
|
||||||
TaskStack() { }
|
TaskStack() { }
|
||||||
void paint();
|
void paint();
|
||||||
uint16_t size();
|
uint16_t size()
|
||||||
|
{
|
||||||
|
return SIZE * 4;
|
||||||
|
}
|
||||||
uint16_t available()
|
uint16_t available()
|
||||||
{
|
{
|
||||||
return getStackAvailable(stack, SIZE);
|
return getStackAvailable(stack, SIZE);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue