From a0d77faf4b7f9772598c7ad4e4e393d410491abd Mon Sep 17 00:00:00 2001 From: James Cotton Date: Sat, 6 Aug 2011 20:20:46 -0500 Subject: [PATCH] PiOS: Move pios_iap out of common. It is STM32F1x specific. Created an STM32F2xx stub version. This needs cleaning up - there is some common code, most of which can probably move to the bl_helper function. --- flight/AHRS/Makefile | 2 +- flight/Bootloaders/AHRS/Makefile | 3 +- flight/Bootloaders/CopterControl/Makefile | 2 +- flight/Bootloaders/INS/Makefile | 2 +- flight/Bootloaders/OpenPilot/Makefile | 2 +- flight/Bootloaders/PipXtreme/Makefile | 2 +- flight/CopterControl/Makefile | 2 +- flight/OpenPilot/Makefile | 2 +- flight/PiOS/{Common => STM32F10x}/pios_iap.c | 0 flight/PiOS/STM32F2xx/.pios_sys.c.swp | Bin 16384 -> 0 bytes flight/PiOS/STM32F2xx/pios_iap.c | 131 +++++++++++++++++++ 11 files changed, 139 insertions(+), 9 deletions(-) rename flight/PiOS/{Common => STM32F10x}/pios_iap.c (100%) delete mode 100644 flight/PiOS/STM32F2xx/.pios_sys.c.swp create mode 100644 flight/PiOS/STM32F2xx/pios_iap.c diff --git a/flight/AHRS/Makefile b/flight/AHRS/Makefile index 46405ca6c..932c07c89 100644 --- a/flight/AHRS/Makefile +++ b/flight/AHRS/Makefile @@ -101,12 +101,12 @@ SRC += $(PIOSSTM32F10X)/pios_i2c.c SRC += $(PIOSSTM32F10X)/pios_gpio.c SRC += $(PIOSSTM32F10X)/pios_spi.c SRC += $(PIOSSTM32F10X)/pios_exti.c +SRC += $(PIOSSTM32F10X)/pios_iap.c ## PIOS Hardware (Common) SRC += $(PIOSCOMMON)/pios_com.c SRC += $(PIOSCOMMON)/pios_hmc5843.c SRC += $(PIOSCOMMON)/printf-stdarg.c -SRC += $(PIOSCOMMON)/pios_iap.c SRC += $(PIOSCOMMON)/pios_bl_helper.c ## CMSIS for STM32 diff --git a/flight/Bootloaders/AHRS/Makefile b/flight/Bootloaders/AHRS/Makefile index 18bf8a269..bcd5b4166 100644 --- a/flight/Bootloaders/AHRS/Makefile +++ b/flight/Bootloaders/AHRS/Makefile @@ -83,9 +83,9 @@ SRC += $(PIOSSTM32F10X)/pios_led.c SRC += $(PIOSSTM32F10X)/pios_delay.c SRC += $(PIOSSTM32F10X)/pios_usart.c SRC += $(PIOSSTM32F10X)/pios_irq.c -#SRC += $(PIOSSTM32F10X)/pios_i2c.c SRC += $(PIOSSTM32F10X)/pios_gpio.c SRC += $(PIOSSTM32F10X)/pios_spi.c +SRC += $(PIOSSTM32F10X)/pios_iap.c ## PIOS Hardware (Common) #SRC += $(PIOSCOMMON)/pios_com.c @@ -94,7 +94,6 @@ SRC += $(PIOSCOMMON)/pios_board_info.c SRC += $(PIOSCOMMON)/pios_opahrs_proto.c SRC += $(PIOSCOMMON)/printf-stdarg.c SRC += $(PIOSCOMMON)/pios_bl_helper.c -SRC += $(PIOSCOMMON)/pios_iap.c ## CMSIS for STM32 SRC += $(CMSISDIR)/core_cm3.c diff --git a/flight/Bootloaders/CopterControl/Makefile b/flight/Bootloaders/CopterControl/Makefile index fe613f909..1adf33918 100644 --- a/flight/Bootloaders/CopterControl/Makefile +++ b/flight/Bootloaders/CopterControl/Makefile @@ -103,6 +103,7 @@ SRC += $(PIOSSTM32F10X)/pios_usart.c SRC += $(PIOSSTM32F10X)/pios_irq.c SRC += $(PIOSSTM32F10X)/pios_debug.c SRC += $(PIOSSTM32F10X)/pios_gpio.c +SRC += $(PIOSSTM32F10X)/pios_iap.c # PIOS USB related files (seperated to make code maintenance more easy) @@ -116,7 +117,6 @@ SRC += $(PIOSSTM32F10X)/pios_usb_hid_pwr.c SRC += $(PIOSCOMMON)/pios_board_info.c SRC += $(PIOSCOMMON)/pios_com.c SRC += $(PIOSCOMMON)/pios_bl_helper.c -SRC += $(PIOSCOMMON)/pios_iap.c SRC += $(PIOSCOMMON)/printf-stdarg.c ## Libraries for flight calculations diff --git a/flight/Bootloaders/INS/Makefile b/flight/Bootloaders/INS/Makefile index 6e4b22ac5..2e95cf481 100644 --- a/flight/Bootloaders/INS/Makefile +++ b/flight/Bootloaders/INS/Makefile @@ -85,6 +85,7 @@ SRC += $(PIOSSTM32FXX)/pios_irq.c #SRC += $(PIOSSTM32FXX)/pios_i2c.c SRC += $(PIOSSTM32FXX)/pios_gpio.c SRC += $(PIOSSTM32FXX)/pios_spi.c +SRC += $(PIOSSTM32FXX)/pios_iap.c ## PIOS Hardware (Common) #SRC += $(PIOSCOMMON)/pios_com.c @@ -93,7 +94,6 @@ SRC += $(PIOSCOMMON)/pios_board_info.c SRC += $(PIOSCOMMON)/pios_opahrs_proto.c SRC += $(PIOSCOMMON)/printf-stdarg.c SRC += $(PIOSCOMMON)/pios_bl_helper.c -SRC += $(PIOSCOMMON)/pios_iap.c ## CMSIS for STM32 SRC += $(CMSISDIR)/core_cm3.c diff --git a/flight/Bootloaders/OpenPilot/Makefile b/flight/Bootloaders/OpenPilot/Makefile index e4285f7e0..5f41e8056 100644 --- a/flight/Bootloaders/OpenPilot/Makefile +++ b/flight/Bootloaders/OpenPilot/Makefile @@ -107,6 +107,7 @@ SRC += $(PIOSSTM32F10X)/pios_irq.c SRC += $(PIOSSTM32F10X)/pios_spi.c SRC += $(PIOSSTM32F10X)/pios_debug.c SRC += $(PIOSSTM32F10X)/pios_gpio.c +SRC += $(PIOSSTM32F10X)/pios_iap.c # PIOS USB related files (seperated to make code maintenance more easy) SRC += $(PIOSSTM32F10X)/pios_usb_hid.c @@ -120,7 +121,6 @@ SRC += $(PIOSCOMMON)/pios_board_info.c SRC += $(PIOSCOMMON)/pios_com.c SRC += $(PIOSCOMMON)/pios_opahrs_v0.c SRC += $(PIOSCOMMON)/pios_bl_helper.c -SRC += $(PIOSCOMMON)/pios_iap.c SRC += $(PIOSCOMMON)/pios_opahrs_proto.c SRC += $(PIOSCOMMON)/printf-stdarg.c diff --git a/flight/Bootloaders/PipXtreme/Makefile b/flight/Bootloaders/PipXtreme/Makefile index 64f13d0d2..18ef15a27 100644 --- a/flight/Bootloaders/PipXtreme/Makefile +++ b/flight/Bootloaders/PipXtreme/Makefile @@ -103,6 +103,7 @@ SRC += $(PIOSSTM32F10X)/pios_usart.c SRC += $(PIOSSTM32F10X)/pios_irq.c SRC += $(PIOSSTM32F10X)/pios_debug.c SRC += $(PIOSSTM32F10X)/pios_gpio.c +SRC += $(PIOSSTM32F10X)/pios_iap.c # PIOS USB related files (seperated to make code maintenance more easy) SRC += $(PIOSSTM32F10X)/pios_usb_hid.c @@ -115,7 +116,6 @@ SRC += $(PIOSSTM32F10X)/pios_usb_hid_pwr.c SRC += $(PIOSCOMMON)/pios_board_info.c SRC += $(PIOSCOMMON)/pios_com.c SRC += $(PIOSCOMMON)/pios_bl_helper.c -SRC += $(PIOSCOMMON)/pios_iap.c SRC += $(PIOSCOMMON)/printf-stdarg.c ## Libraries for flight calculations diff --git a/flight/CopterControl/Makefile b/flight/CopterControl/Makefile index 78e62bb89..040d13d6a 100644 --- a/flight/CopterControl/Makefile +++ b/flight/CopterControl/Makefile @@ -189,6 +189,7 @@ SRC += $(PIOSSTM32F10X)/pios_gpio.c SRC += $(PIOSSTM32F10X)/pios_exti.c SRC += $(PIOSSTM32F10X)/pios_rtc.c SRC += $(PIOSSTM32F10X)/pios_wdg.c +SRC += $(PIOSSTM32F10X)/pios_iap.c # PIOS USB related files (seperated to make code maintenance more easy) @@ -204,7 +205,6 @@ SRC += $(PIOSCOMMON)/pios_flash_w25x.c SRC += $(PIOSCOMMON)/pios_adxl345.c SRC += $(PIOSCOMMON)/pios_com.c SRC += $(PIOSCOMMON)/pios_i2c_esc.c -SRC += $(PIOSCOMMON)/pios_iap.c SRC += $(PIOSCOMMON)/pios_bl_helper.c SRC += $(PIOSCOMMON)/pios_rcvr.c SRC += $(PIOSCOMMON)/printf-stdarg.c diff --git a/flight/OpenPilot/Makefile b/flight/OpenPilot/Makefile index 60f9d6d30..6f39080a6 100644 --- a/flight/OpenPilot/Makefile +++ b/flight/OpenPilot/Makefile @@ -170,6 +170,7 @@ SRC += $(PIOSSTM32F10X)/pios_gpio.c SRC += $(PIOSSTM32F10X)/pios_exti.c SRC += $(PIOSSTM32F10X)/pios_rtc.c SRC += $(PIOSSTM32F10X)/pios_wdg.c +SRC += $(PIOSSTM32F10X)/pios_iap.c # PIOS USB related files (seperated to make code maintenance more easy) @@ -187,7 +188,6 @@ SRC += $(PIOSCOMMON)/pios_com.c SRC += $(PIOSCOMMON)/pios_bmp085.c SRC += $(PIOSCOMMON)/pios_hcsr04.c SRC += $(PIOSCOMMON)/pios_i2c_esc.c -SRC += $(PIOSCOMMON)/pios_iap.c SRC += $(PIOSCOMMON)/pios_bl_helper.c SRC += $(PIOSCOMMON)/pios_rcvr.c SRC += $(PIOSCOMMON)/printf-stdarg.c diff --git a/flight/PiOS/Common/pios_iap.c b/flight/PiOS/STM32F10x/pios_iap.c similarity index 100% rename from flight/PiOS/Common/pios_iap.c rename to flight/PiOS/STM32F10x/pios_iap.c diff --git a/flight/PiOS/STM32F2xx/.pios_sys.c.swp b/flight/PiOS/STM32F2xx/.pios_sys.c.swp deleted file mode 100644 index 4b5c2847d79a6911b3b750aabc9a935a23a5fca2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 + +/**************************************************************************************** + * Private Definitions/Macros + ****************************************************************************************/ + +/* these definitions reside here for protection and privacy. */ +#define IAP_MAGIC_WORD_1 0x1122 +#define IAP_MAGIC_WORD_2 0xAA55 + +#define IAP_REQLOC_1 BKP_DR1 +#define IAP_CRCLOC_LOW BKP_DR2 +#define IAP_CRCLOC_UPPER BKP_DR3 +#define IAP_PORTLOC BKP_DR4 +#define IAP_REQLOC_2 BKP_RR5 + +#define IAP_UPLOAD_REQ_1 0x20AA +#define IAP_UPLOAD_REQ_2 0x2055 +#define IAP_DNLOAD_REQ_1 0x30AA +#define IAP_DNLOAD_REQ_2 0x3055 + +#define UPPERWORD16(lw) (uint16_t)((uint32_t)(lw)>>16) +#define LOWERWORD16(lw) (uint16_t)((uint32_t)(lw)&0x0000ffff) +#define UPPERBYTE(w) (uint8_t)((w)>>8) +#define LOWERBYTE(w) (uint8_t)((w)&0x00ff) + +/**************************************************************************************** + * Private Functions + ****************************************************************************************/ + +/**************************************************************************************** + * Private (static) Data + ****************************************************************************************/ + +/**************************************************************************************** + * Public/Global Data + ****************************************************************************************/ + +/*! + * \brief PIOS_IAP_Init - performs required initializations for iap module. + * \param none. + * \return none. + * \retval none. + * + * Created: Sep 8, 2010 10:10:48 PM by joe + */ +void PIOS_IAP_Init( void ) +{ +#if 0 + /* Enable CRC clock */ + RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); + + /* Enable PWR and BKP clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); + + /* Enable write access to Backup domain */ + PWR_BackupAccessCmd(ENABLE); + + /* Clear Tamper pin Event(TE) pending flag */ + BKP_ClearFlag(); +#endif +} + +/*! + * \brief Determines if an In-Application-Programming request has been made. + * \param *comm - Which communication stream to use for the IAP (USB, Telemetry, I2C, SPI, etc) + * \return TRUE - if correct sequence found, along with 'comm' updated. + * FALSE - Note that 'comm' will have an invalid comm identifier. + * \retval + * + */ +uint32_t PIOS_IAP_CheckRequest( void ) +{ +#if 0 uint32_t retval = FALSE; + uint16_t reg1; + uint16_t reg2; + + reg1 = BKP_ReadBackupRegister( MAGIC_REG_1 ); + reg2 = BKP_ReadBackupRegister( MAGIC_REG_2 ); + + if( reg1 == IAP_MAGIC_WORD_1 && reg2 == IAP_MAGIC_WORD_2 ) { + // We have a match. + retval = TRUE; + } else { + retval = FALSE; + } + return retval; +#endif +} + + + +/*! + * \brief Sets the 1st word of the request sequence. + * \param n/a + * \return n/a + * \retval + */ +void PIOS_IAP_SetRequest1(void) +{ +#if 0 + BKP_WriteBackupRegister( MAGIC_REG_1, IAP_MAGIC_WORD_1); +#endif +} + +void PIOS_IAP_SetRequest2(void) +{ +#if 0 + BKP_WriteBackupRegister( MAGIC_REG_2, IAP_MAGIC_WORD_2); +#endif +} + +void PIOS_IAP_ClearRequest(void) +{ +#if 0 + BKP_WriteBackupRegister( MAGIC_REG_1, 0); + BKP_WriteBackupRegister( MAGIC_REG_2, 0); +#endif +}