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 4b5c2847d..000000000 Binary files a/flight/PiOS/STM32F2xx/.pios_sys.c.swp and /dev/null differ diff --git a/flight/PiOS/STM32F2xx/pios_iap.c b/flight/PiOS/STM32F2xx/pios_iap.c new file mode 100644 index 000000000..3d270d646 --- /dev/null +++ b/flight/PiOS/STM32F2xx/pios_iap.c @@ -0,0 +1,131 @@ +/*! + * @File iap.c + * @Brief + * + * Created on: Sep 6, 2010 + * Author: joe + */ + + +/**************************************************************************************** + * Header files + ****************************************************************************************/ +#include + +/**************************************************************************************** + * 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 +}