From 02be6fef95e14d075687045db8078f76cce9283e Mon Sep 17 00:00:00 2001 From: Frank Voorburg Date: Thu, 15 Aug 2013 14:20:46 +0000 Subject: [PATCH] - added support for CAN1 and CAN2 on the STM32CM4 target. git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@57 5dc33758-31d5-4daf-9ae8-b24bf3d40d73 --- Host/openblt_uart.ini | 2 +- .../Boot/bin/openbtl_olimex_stm32p103.out | Bin 316964 -> 317104 bytes .../Boot/bin/openbtl_olimex_stm32p103.srec | 6 +- .../Boot/ide/settings/stm32f103.wsdt | 10 +- .../Boot/ide/stm32f103.dep | 1604 ++++++++--------- .../Boot/bin/openbtl_olimex_stm32e407.elf | Bin 251498 -> 251669 bytes .../Boot/bin/openbtl_olimex_stm32e407.map | 405 +++-- .../Boot/bin/openbtl_olimex_stm32e407.srec | 743 ++++---- .../Boot/blt_conf.h | 27 + .../Boot/ide/stm32f407_crossworks.hzp | 2 + .../Boot/ide/stm32f407_crossworks.hzs | 5 +- .../Boot/main.c | 20 + .../Prog/boot.c | 180 ++ .../Prog/ide/stm32f407_crossworks.hzs | 8 +- .../Boot/bin/openbtl_olimex_stm32e407.elf | Bin 239068 -> 239507 bytes .../Boot/bin/openbtl_olimex_stm32e407.map | 142 +- .../Boot/bin/openbtl_olimex_stm32e407.srec | 879 ++++----- .../Boot/blt_conf.h | 27 + .../Boot/ide/DemoBoot.project | 10 + .../Boot/main.c | 20 + .../Boot/makefile | 2 + .../Prog/boot.c | 180 ++ .../Boot/bin/openbtl_olimex_stm32e407.out | Bin 407560 -> 409556 bytes .../Boot/bin/openbtl_olimex_stm32e407.srec | 4 +- .../Boot/blt_conf.h | 27 + .../Boot/ide/settings/stm32f407.dbgdt | 4 +- .../Boot/ide/settings/stm32f407.dni | 2 +- .../Boot/ide/settings/stm32f407.wsdt | 28 +- .../Boot/ide/stm32f407.dep | 907 +++++----- .../Boot/ide/stm32f407.ewp | 6 + .../Boot/main.c | 20 + .../Prog/bin/demoprog_olimex_stm32e407.out | Bin 137172 -> 137172 bytes .../Prog/boot.c | 180 ++ .../Prog/ide/settings/stm32f407.wsdt | 10 +- .../Prog/ide/stm32f407.dep | 829 ++++----- Target/Source/ARMCM3_STM32/can.c | 4 - Target/Source/ARMCM4_STM32/can.c | 388 ++++ Target/Source/ARMCM4_STM32/can.h | 47 + Target/Source/boot.h | 2 +- Target/Source/file.c | 54 +- Target/Source/file.h | 42 +- 41 files changed, 3999 insertions(+), 2827 deletions(-) create mode 100644 Target/Source/ARMCM4_STM32/can.c create mode 100644 Target/Source/ARMCM4_STM32/can.h diff --git a/Host/openblt_uart.ini b/Host/openblt_uart.ini index 302a0bbe..56b278d5 100644 --- a/Host/openblt_uart.ini +++ b/Host/openblt_uart.ini @@ -1,5 +1,5 @@ [sci] -port=7 +port=3 baudrate=8 [xcp] seedkey= diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/bin/openbtl_olimex_stm32p103.out b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/bin/openbtl_olimex_stm32p103.out index db397b447c38bcaf3c9365ce7b4ab9bbe4ca37e9..9f5362cc80224200371b1992ea5d1764fe77fc77 100644 GIT binary patch delta 21330 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 D0ylf! delta 21449 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 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/bin/openbtl_olimex_stm32p103.srec b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/bin/openbtl_olimex_stm32p103.srec index 78a5d1fe..5eec4084 100644 --- a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/bin/openbtl_olimex_stm32p103.srec +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/bin/openbtl_olimex_stm32p103.srec @@ -706,7 +706,7 @@ S31508002BF009480068401C08490860704780B5FFF717 S31508002C00F3FF0548006802BD14E000E03F19010023 S31508002C1018E000E010E000E03C0F002080B5DFF887 S31508002C20780600210170DFF874160020FEF707FD0C -S31508002C30C0B2002804D09E21DFF8640600F0C0FB6D +S31508002C30C0B2002804D07C21DFF8640600F0C0FB8F S31508002C4001BDDFF854060078002801D1012000E014 S31508002C500020704780B500F0F1FB012801D1002063 S31508002C6011E0DFF834060078002801D000200AE0D9 @@ -785,8 +785,8 @@ S315080030E0A41C200000F047F90500AE19A41C200016 S315080030F000F041F986196D1EA41CADB2022DF6DA50 S31508003100F6B2F643200000F036F9F6B2864201D050 S31508003110002000E0012070BD2DE9F04105000E00F9 -S3150800312014005FF00008002E01D0002D04D14FF4E2 -S3150800313016715B4800F044F92800FFF7AFFF070057 +S3150800312014005FF00008002E01D0002D04D140F2F3 +S3150800313036215B4800F044F92800FFF7AFFF070087 S31508003140FFB2032F01D10020A3E02800FFF7C5FF37 S31508003150002802D15FF0FF309BE0FFB2002F03D0BA S31508003160022F5AD028D392E0AD1C280000F003F9AC diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/ide/settings/stm32f103.wsdt b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/ide/settings/stm32f103.wsdt index 8e02e1d5..7aa0bc88 100644 --- a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/ide/settings/stm32f103.wsdt +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/ide/settings/stm32f103.wsdt @@ -12,12 +12,12 @@ - 214272727 + 287272727 300Debug-Log20105928270300Build201413664941138 - + TabID-32216-31616 @@ -29,20 +29,20 @@ - 0TabID-13144-32069BuildBuildTabID-25023-6652Debug LogDebug-LogTabID-18334-26223Find in FilesFind-in-Files0 + 0TabID-13144-32069BuildBuildTabID-25023-6652Debug LogDebug-LogTabID-18334-26223Find in FilesFind-in-Files0 - TextEditor$WS_DIR$\..\main.c000001621982198TextEditor$WS_DIR$\..\hooks.c0000026613853138531TextEditor$WS_DIR$\..\lib\fatfs\mmc.c00000109464846700100000010000001 + TextEditor$WS_DIR$\..\main.c000001621982198TextEditor$WS_DIR$\..\hooks.c000002661385313853TextEditor$WS_DIR$\..\lib\fatfs\mmc.c0000010946484670TextEditor$WS_DIR$\..\blt_conf.h0000072470147013TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_STM32\can.c0000031014069140690100000010000001 - iaridepm.enu1-2-2617305-2-2176166136012201701237249752126-2-21611296-2-212981631003091198056104328198056 + iaridepm.enu1-2-2621378-2-2218167136250201691237500752415-2-21621602-2-216041641002500198068104375198068 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/ide/stm32f103.dep b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/ide/stm32f103.dep index 5b0df865..d9df9014 100644 --- a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/ide/stm32f103.dep +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_IAR/Boot/ide/stm32f103.dep @@ -22,17 +22,41 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_spi.h $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_usart.h - $PROJ_DIR$\..\config.h + $PROJ_DIR$\..\blt_conf.h $PROJ_DIR$\..\hooks.c $PROJ_DIR$\..\main.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\IAR\vectors.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\IAR\cstart.s + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\IAR\vectors.c $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\can.c - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\can.h $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\cpu.c $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\cpu.h + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_exti.h + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_flash.h + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_fsmc.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_fsmc.h + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_i2c.h + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_iwdg.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_iwdg.h + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_pwr.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_pwr.h + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_rtc.h + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_sdio.h + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_tim.h + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_wwdg.h + $PROJ_DIR$\..\obj\stm32f10x_adc.o + $TOOLKIT_DIR$\lib\shb_l.a + $PROJ_DIR$\..\memory.x $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\flash.c + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\flash.h $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\nvm.c $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\nvm.h @@ -62,7 +86,7 @@ $PROJ_DIR$\..\..\..\..\Source\plausibility.h $PROJ_DIR$\..\..\..\..\Source\xcp.c $PROJ_DIR$\..\..\..\..\Source\xcp.h - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c + $PROJ_DIR$\..\config.h $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_adc.h $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_can.c $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_cec.h @@ -73,8 +97,8 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_cec.c $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_can.h $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dac.c - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\misc.c $PROJ_DIR$\Debug\Obj\stm32f10x_crc.o + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\misc.c $PROJ_DIR$\Debug\Obj\stm32f10x_i2c.o $PROJ_DIR$\..\obj\system_stm32f10x.lst $PROJ_DIR$\..\obj\os.lst @@ -123,6 +147,66 @@ $PROJ_DIR$\Debug\Obj\stm32f10x_spi.pbi $TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h $PROJ_DIR$\Debug\Obj\stm32f10x_sdio.o + $PROJ_DIR$\..\obj\nvm.pbi + $PROJ_DIR$\..\obj\uart.pbi + $PROJ_DIR$\..\obj\usb.pbi + $PROJ_DIR$\..\obj\mmc.o + $PROJ_DIR$\..\obj\mmc.pbi + $PROJ_DIR$\..\obj\unicode.lst + $PROJ_DIR$\..\obj\ff.lst + $TOOLKIT_DIR$\inc\c\stdarg.h + $PROJ_DIR$\..\obj\file.o + $PROJ_DIR$\..\obj\file.pbi + $TOOLKIT_DIR$\inc\c\xtls.h + $TOOLKIT_DIR$\inc\c\xmtx.h + $TOOLKIT_DIR$\inc\c\xlocaleuse.h + $TOOLKIT_DIR$\inc\c\xlocale.h + $TOOLKIT_DIR$\inc\c\stdlib.h + $PROJ_DIR$\..\obj\file.lst + $TOOLKIT_DIR$\inc\c\xlocale_c.h + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\ccsbcs.c + $TOOLKIT_DIR$\inc\c\wchar.h + $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c + $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h + $PROJ_DIR$\..\cstart.s + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_tim.h + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_wwdg.h + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_usart.h + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_spi.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_sdio.h + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_spi.h + $PROJ_DIR$\..\obj\hw.lst + $PROJ_DIR$\..\obj\core_cm3.lst + $PROJ_DIR$\Debug\Obj\stm32f10x_tim.pbi + $TOOLKIT_DIR$\inc\c\stdint.h + $TOOLKIT_DIR$\inc\c\ysizet.h + $TOOLKIT_DIR$\inc\c\DLib_Product_string.h + $TOOLKIT_DIR$\inc\c\ctype.h + $TOOLKIT_DIR$\inc\c\string.h + $PROJ_DIR$\..\boot.c + $PROJ_DIR$\..\boot.h + $PROJ_DIR$\..\header.h + $PROJ_DIR$\..\irq.c + $PROJ_DIR$\..\irq.h + $PROJ_DIR$\..\led.c + $PROJ_DIR$\..\led.h + $PROJ_DIR$\..\timer.c + $PROJ_DIR$\..\timer.h + $PROJ_DIR$\..\vectors.c + $PROJ_DIR$\..\src\app\app.c + $PROJ_DIR$\..\src\app\app.h + $PROJ_DIR$\..\src\hw\cstart.s + $PROJ_DIR$\..\src\os\os.h + $PROJ_DIR$\Debug\Obj\stm32f10x_fsmc.o + $PROJ_DIR$\..\src\header.h + $PROJ_DIR$\..\src\os\os.c + $TOOLKIT_DIR$\inc\c\DLib_Defaults.h + $PROJ_DIR$\..\src\hw\hw.h + $PROJ_DIR$\..\src\hw\hw.c $PROJ_DIR$\..\obj\assert.lst $PROJ_DIR$\..\obj\openbtl_olimex_stm32p103.map $PROJ_DIR$\..\obj\flash.lst @@ -137,8 +221,8 @@ $PROJ_DIR$\..\obj\com.lst $PROJ_DIR$\..\obj\stm32f10x_sdio.o $PROJ_DIR$\..\obj\stm32f10x_spi.o - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\IAR\memory.x $PROJ_DIR$\..\obj\stm32f10x_tim.o + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\IAR\memory.x $PROJ_DIR$\..\obj\stm32f10x_usart.o $PROJ_DIR$\..\obj\stm32f10x_wwdg.o $PROJ_DIR$\..\obj\system_stm32f10x.o @@ -212,67 +296,6 @@ $PROJ_DIR$\Debug\Exe\stm32f103.out $PROJ_DIR$\..\obj\flash.pbi $PROJ_DIR$\..\obj\cpu.pbi - $PROJ_DIR$\..\obj\nvm.pbi - $PROJ_DIR$\..\obj\uart.pbi - $PROJ_DIR$\..\obj\usb.pbi - $PROJ_DIR$\..\obj\mmc.o - $PROJ_DIR$\..\obj\mmc.pbi - $PROJ_DIR$\..\obj\unicode.lst - $PROJ_DIR$\..\obj\ff.lst - $TOOLKIT_DIR$\inc\c\stdarg.h - $PROJ_DIR$\..\obj\file.o - $PROJ_DIR$\..\obj\file.pbi - $TOOLKIT_DIR$\inc\c\xtls.h - $TOOLKIT_DIR$\inc\c\xmtx.h - $TOOLKIT_DIR$\inc\c\xlocaleuse.h - $TOOLKIT_DIR$\inc\c\xlocale.h - $TOOLKIT_DIR$\inc\c\stdlib.h - $PROJ_DIR$\..\obj\file.lst - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\ccsbcs.c - $TOOLKIT_DIR$\inc\c\xlocale_c.h - $TOOLKIT_DIR$\inc\c\wchar.h - $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c - $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h - $PROJ_DIR$\..\cstart.s - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c - $PROJ_DIR$\..\blt_conf.h - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_tim.h - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_wwdg.h - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_usart.h - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_spi.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_sdio.h - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_spi.h - $PROJ_DIR$\..\obj\hw.lst - $PROJ_DIR$\..\obj\core_cm3.lst - $PROJ_DIR$\Debug\Obj\stm32f10x_tim.pbi - $TOOLKIT_DIR$\inc\c\stdint.h - $TOOLKIT_DIR$\inc\c\ysizet.h - $TOOLKIT_DIR$\inc\c\DLib_Product_string.h - $TOOLKIT_DIR$\inc\c\ctype.h - $TOOLKIT_DIR$\inc\c\string.h - $PROJ_DIR$\..\boot.c - $PROJ_DIR$\..\boot.h - $PROJ_DIR$\..\header.h - $PROJ_DIR$\..\irq.c - $PROJ_DIR$\..\irq.h - $PROJ_DIR$\..\led.c - $PROJ_DIR$\..\led.h - $PROJ_DIR$\..\timer.c - $PROJ_DIR$\..\timer.h - $PROJ_DIR$\..\vectors.c - $PROJ_DIR$\..\src\app\app.c - $PROJ_DIR$\..\src\app\app.h - $PROJ_DIR$\..\src\hw\cstart.s - $PROJ_DIR$\..\src\os\os.h - $PROJ_DIR$\Debug\Obj\stm32f10x_fsmc.o - $PROJ_DIR$\..\src\header.h - $PROJ_DIR$\..\src\os\os.c - $TOOLKIT_DIR$\inc\c\DLib_Defaults.h - $PROJ_DIR$\..\src\hw\hw.h - $PROJ_DIR$\..\src\hw\hw.c $PROJ_DIR$\Debug\Obj\os.o $PROJ_DIR$\..\obj\stm32f10x_crc.o $PROJ_DIR$\..\obj\stm32f10x_cec.o @@ -375,10 +398,10 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_cec.h $PROJ_DIR$\..\lib\stdperiphlib\stm32f10x_conf.h $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_crc.c - $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.h $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_crc.h - $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.c + $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.h $TOOLKIT_DIR$\inc\c\intrinsics.h + $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.c $PROJ_DIR$\Debug\Obj\stm32f10x_usart.o $PROJ_DIR$\Debug\Obj\core_cm3.pbi $PROJ_DIR$\Debug\Obj\stm32f10x_spi.o @@ -393,50 +416,27 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_dbgmcu.h $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dma.c $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_dma.h - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_exti.h - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_flash.h - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_fsmc.c - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_fsmc.h - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_i2c.h - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_iwdg.c - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_iwdg.h - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_pwr.c - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_pwr.h - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_rtc.h - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_sdio.h - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_tim.h - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_wwdg.h - $PROJ_DIR$\..\obj\stm32f10x_adc.o - $TOOLKIT_DIR$\lib\shb_l.a - $PROJ_DIR$\..\memory.x $PROJ_DIR$\..\lib\CMSIS\CM3\CoreSupport\core_cm3.c - BICOMP - 137 + ICCARM + 174 298 - ICCARM - 240 275 + BICOMP + 221 - BICOMP - 242 107 198 264 115 195 165 169 + ICCARM + 176 131 282 198 139 279 249 253 - ICCARM - 242 107 198 264 115 195 165 169 + BICOMP + 176 131 282 198 139 279 249 253 @@ -444,22 +444,22 @@ $PROJ_DIR$\..\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c - BICOMP - 355 + ICCARM + 94 219 - ICCARM - 70 135 + BICOMP + 378 - BICOMP - 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + ICCARM + 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - ICCARM - 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + BICOMP + 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 @@ -467,22 +467,22 @@ $PROJ_DIR$\..\lib\fatfs\mmc.c - BICOMP - 210 + ICCARM + 332 144 - ICCARM - 309 209 + BICOMP + 145 - BICOMP - 37 40 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 46 32 42 229 53 25 50 29 27 31 44 52 38 5 48 55 + ICCARM + 61 64 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 70 56 66 16 77 25 74 53 51 55 68 76 62 5 72 79 - ICCARM - 37 40 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 46 32 42 229 53 25 50 29 27 31 44 52 38 5 48 55 + BICOMP + 61 64 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 70 56 66 16 77 25 74 53 51 55 68 76 62 5 72 79 @@ -490,22 +490,22 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c - BICOMP - 105 + ICCARM + 238 404 - ICCARM - 154 381 + BICOMP + 129 - BICOMP - 9 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 + ICCARM + 9 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 - ICCARM - 9 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 + BICOMP + 9 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 @@ -513,18 +513,18 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c - BICOMP - 341 + ICCARM + 242 124 - ICCARM - 158 100 + BICOMP + 364 ICCARM - 11 3 0 242 107 198 264 115 195 165 169 372 1 7 9 13 15 + 11 3 0 176 131 282 198 139 279 249 253 394 1 7 9 13 15 @@ -532,22 +532,22 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_spi.c - BICOMP - 349 + ICCARM + 245 214 - ICCARM - 161 130 + BICOMP + 372 - BICOMP - 13 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 15 + ICCARM + 13 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 15 - ICCARM - 13 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 15 + BICOMP + 13 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 15 @@ -555,22 +555,22 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c - BICOMP - 345 + ICCARM + 248 217 - ICCARM - 164 133 + BICOMP + 368 - BICOMP - 15 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 + ICCARM + 15 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 - ICCARM - 15 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 + BICOMP + 15 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 @@ -578,22 +578,22 @@ $PROJ_DIR$\..\hooks.c - BICOMP - 122 + ICCARM + 126 207 - ICCARM - 102 123 + BICOMP + 206 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 @@ -601,45 +601,45 @@ $PROJ_DIR$\..\main.c - BICOMP - 327 + ICCARM + 356 97 - ICCARM - 333 73 + BICOMP + 350 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\IAR\vectors.c + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c - BICOMP - 329 + ICCARM + 230 46 - ICCARM - 332 322 + BICOMP + 339 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + ICCARM + 81 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + BICOMP + 81 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 @@ -648,62 +648,53 @@ AARM - 313 + 336 - [ROOT_NODE] + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\IAR\vectors.c - ILINK - 103 118 + ICCARM + 355 345 + + + BICOMP + 352 + + + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 + + + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\can.c - BICOMP - 95 + ICCARM + 210 115 - ICCARM - 126 91 + BICOMP + 119 - - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 - - - - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c - BICOMP - 311 - - - ICCARM - 212 310 - - - - - BICOMP - 38 40 5 37 213 107 198 264 115 195 165 169 - - - ICCARM - 38 40 5 37 213 107 198 264 115 195 165 169 + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 @@ -711,22 +702,261 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\cpu.c - BICOMP - 205 + ICCARM + 208 117 - ICCARM - 124 93 + BICOMP + 289 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 + + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 + + + + + [ROOT_NODE] + + + ILINK + 127 202 + + + + + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c + ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + 235 359 + + + BICOMP + 276 + + + + + ICCARM + 27 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 + + + BICOMP + 27 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 + + + + + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c + + + ICCARM + 236 360 + + + BICOMP + 361 + + + + + ICCARM + 29 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 + + + BICOMP + 29 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 + + + + + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_fsmc.c + + + ICCARM + 237 337 + + + BICOMP + 366 + + + + + ICCARM + 31 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + BICOMP + 31 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + + + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c + + + ICCARM + 239 121 + + + BICOMP + 374 + + + + + ICCARM + 33 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + BICOMP + 33 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + + + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_iwdg.c + + + ICCARM + 240 122 + + + BICOMP + 373 + + + + + ICCARM + 35 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + BICOMP + 35 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + + + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_pwr.c + + + ICCARM + 241 123 + + + BICOMP + 375 + + + + + ICCARM + 37 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + BICOMP + 37 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + + + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c + + + ICCARM + 243 125 + + + BICOMP + 363 + + + + + ICCARM + 39 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + BICOMP + 39 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + + + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c + + + ICCARM + 244 213 + + + BICOMP + 376 + + + + + ICCARM + 41 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + BICOMP + 41 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + + + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c + + + ICCARM + 247 215 + + + BICOMP + 369 + + + + + ICCARM + 43 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + BICOMP + 43 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + + + $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c + + + ICCARM + 225 218 + + + BICOMP + 365 + + + + + ICCARM + 45 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 + + + BICOMP + 45 3 0 176 131 282 198 139 279 249 253 394 1 7 11 13 15 @@ -734,22 +964,45 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\flash.c - BICOMP - 204 + ICCARM + 203 118 - ICCARM - 119 94 + BICOMP + 288 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 + + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 + + + + + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c + ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + 147 333 + + + BICOMP + 334 + + + + + ICCARM + 62 64 5 61 148 131 282 198 139 279 249 253 + + + BICOMP + 62 64 5 61 148 131 282 198 139 279 249 253 @@ -757,22 +1010,18 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\nvm.c - BICOMP - 206 + ICCARM + 112 114 - ICCARM - 88 90 + BICOMP + 141 - - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 @@ -780,22 +1029,22 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\timer.c - BICOMP - 328 + ICCARM + 357 346 - ICCARM - 334 323 + BICOMP + 351 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 @@ -803,22 +1052,22 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\uart.c - BICOMP - 207 + ICCARM + 209 120 - ICCARM - 125 96 + BICOMP + 142 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 @@ -826,22 +1075,22 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM3_STM32\usb.c - BICOMP - 208 + ICCARM + 113 116 - ICCARM - 89 92 + BICOMP + 143 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 @@ -849,22 +1098,22 @@ $PROJ_DIR$\..\..\..\..\Source\assert.c - BICOMP - 80 + ICCARM + 201 128 - ICCARM - 117 104 + BICOMP + 104 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 @@ -872,22 +1121,22 @@ $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\unicode.c - BICOMP - 308 + ICCARM + 146 330 - ICCARM - 211 307 + BICOMP + 331 - BICOMP - 38 40 5 222 + ICCARM + 62 64 5 158 - ICCARM - 38 40 5 222 + BICOMP + 62 64 5 158 @@ -895,22 +1144,22 @@ $PROJ_DIR$\..\..\..\..\Source\backdoor.c - BICOMP - 83 + ICCARM + 204 103 - ICCARM - 120 79 + BICOMP + 107 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 @@ -918,22 +1167,22 @@ $PROJ_DIR$\..\..\..\..\Source\boot.c - BICOMP - 324 + ICCARM + 353 99 - ICCARM - 330 75 + BICOMP + 347 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 @@ -941,22 +1190,22 @@ $PROJ_DIR$\..\..\..\..\Source\com.c - BICOMP - 84 + ICCARM + 212 106 - ICCARM - 128 82 + BICOMP + 108 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 34 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 58 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 34 + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 23 @@ -964,22 +1213,22 @@ $PROJ_DIR$\..\..\..\..\Source\cop.c - BICOMP - 85 + ICCARM + 211 105 - ICCARM - 127 81 + BICOMP + 109 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 @@ -987,22 +1236,22 @@ $PROJ_DIR$\..\..\..\..\Source\file.c - BICOMP - 215 + ICCARM + 156 149 - ICCARM - 221 214 + BICOMP + 150 - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 246 107 198 264 115 195 165 169 243 244 245 219 216 217 220 218 223 224 + ICCARM + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 180 131 282 198 139 279 249 253 177 178 179 154 151 152 155 153 157 159 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 246 107 198 264 115 195 165 169 243 244 245 219 216 217 220 218 223 224 + BICOMP + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 180 131 282 198 139 279 249 253 177 178 179 154 151 152 155 153 157 159 @@ -1010,45 +1259,22 @@ $PROJ_DIR$\..\..\..\..\Source\xcp.c - BICOMP - 86 + ICCARM + 111 102 - ICCARM - 87 78 + BICOMP + 110 - - BICOMP - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 - ICCARM - 46 32 42 229 53 25 50 29 27 31 44 52 38 40 5 48 55 + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 - - - - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c - BICOMP - 316 - - - ICCARM - 146 407 - - - - - BICOMP - 57 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 - - - ICCARM - 57 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + 70 56 66 16 77 25 74 53 51 55 68 76 62 64 5 72 79 @@ -1056,22 +1282,22 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_can.c - BICOMP - 187 + ICCARM + 229 293 - ICCARM - 145 270 + BICOMP + 271 - BICOMP - 65 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + ICCARM + 89 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - ICCARM - 65 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + BICOMP + 89 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 @@ -1079,22 +1305,22 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_bkp.c - BICOMP - 186 + ICCARM + 228 296 - ICCARM - 144 273 + BICOMP + 270 - BICOMP - 63 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + ICCARM + 87 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - ICCARM - 63 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + BICOMP + 87 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 @@ -1102,22 +1328,22 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_crc.c - BICOMP - 189 + ICCARM + 231 291 - ICCARM - 147 268 + BICOMP + 273 - BICOMP - 61 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + ICCARM + 85 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - ICCARM - 61 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + BICOMP + 85 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 @@ -1125,22 +1351,22 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_cec.c - BICOMP - 188 + ICCARM + 226 292 - ICCARM - 142 269 + BICOMP + 272 - BICOMP - 59 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + ICCARM + 83 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - ICCARM - 59 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + BICOMP + 83 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 @@ -1148,22 +1374,22 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dac.c - BICOMP - 190 + ICCARM + 233 343 - ICCARM - 149 320 + BICOMP + 274 - BICOMP - 382 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + ICCARM + 405 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - ICCARM - 382 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + BICOMP + 405 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 @@ -1172,7 +1398,7 @@ BICOMP - 138 + 222 @@ -1181,13 +1407,13 @@ OBJCOPY - 77 + 101 ILINK - 409 75 275 313 72 74 73 272 407 273 270 269 268 320 319 321 336 337 314 381 97 98 99 100 101 129 130 132 133 134 135 323 322 408 172 339 167 + 48 99 298 336 96 98 97 295 46 296 293 292 291 343 342 344 359 360 337 404 121 122 123 124 125 213 214 215 217 218 219 346 345 47 256 362 251 @@ -1196,17 +1422,17 @@ ILINK - 118 + 202 OBJCOPY - 121 + 205 ILINK - 131 104 79 75 91 82 81 275 93 313 310 214 94 123 73 209 90 381 100 130 133 135 323 96 307 92 322 78 408 172 339 167 + 216 128 103 99 115 106 105 298 117 336 333 149 118 207 97 144 114 404 124 214 217 219 346 120 330 116 345 102 47 256 362 251 @@ -1215,22 +1441,13 @@ OBJCOPY - 344 + 367 ILINK - 409 75 275 313 72 74 73 272 407 273 270 269 268 320 319 321 336 337 314 381 97 98 99 100 101 129 130 132 133 134 135 323 322 408 172 339 167 - - - - - $PROJ_DIR$\Debug\Exe\stm32f103.out - - - ILINK - 409 315 197 274 282 267 312 278 201 202 68 277 175 177 178 179 261 174 69 281 109 170 171 116 375 184 373 376 380 408 172 339 167 + 48 99 298 336 96 98 97 295 46 296 293 292 291 343 342 344 359 360 337 404 121 122 123 124 125 213 214 215 217 218 219 346 345 47 256 362 251 @@ -1238,18 +1455,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c - BICOMP - 355 + ICCARM + 94 219 - ICCARM - 70 135 + BICOMP + 378 ICCARM - 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 + 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1258,7 +1475,7 @@ AARM - 313 + 336 @@ -1266,18 +1483,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c - BICOMP - 353 + ICCARM + 244 213 - ICCARM - 160 129 + BICOMP + 376 ICCARM - 237 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 238 230 235 233 362 + 171 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 172 164 169 167 385 @@ -1285,18 +1502,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c - BICOMP - 346 + ICCARM + 247 215 - ICCARM - 163 132 + BICOMP + 369 ICCARM - 230 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 235 233 362 + 164 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 169 167 385 @@ -1304,18 +1521,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c - BICOMP - 342 + ICCARM + 225 218 - ICCARM - 141 134 + BICOMP + 365 ICCARM - 233 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 362 + 167 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 385 @@ -1323,18 +1540,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c - BICOMP - 345 + ICCARM + 248 217 - ICCARM - 164 133 + BICOMP + 368 ICCARM - 235 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 233 362 + 169 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 167 385 @@ -1342,18 +1559,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_spi.c - BICOMP - 349 + ICCARM + 245 214 - ICCARM - 161 130 + BICOMP + 372 ICCARM - 238 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 230 235 233 362 + 172 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 164 169 167 385 @@ -1361,18 +1578,18 @@ $PROJ_DIR$\..\boot.c - BICOMP - 324 + ICCARM + 353 99 - ICCARM - 330 75 + BICOMP + 347 ICCARM - 249 16 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 248 251 253 255 + 183 80 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 182 185 187 189 @@ -1380,18 +1597,18 @@ $PROJ_DIR$\..\irq.c - BICOMP - 325 + ICCARM + 358 96 - ICCARM - 335 72 + BICOMP + 348 ICCARM - 249 16 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 248 251 253 255 + 183 80 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 182 185 187 189 @@ -1399,18 +1616,18 @@ $PROJ_DIR$\..\led.c - BICOMP - 326 + ICCARM + 354 98 - ICCARM - 331 74 + BICOMP + 349 ICCARM - 249 16 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 248 251 253 255 + 183 80 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 182 185 187 189 @@ -1418,18 +1635,18 @@ $PROJ_DIR$\..\timer.c - BICOMP - 328 + ICCARM + 357 346 - ICCARM - 334 323 + BICOMP + 351 ICCARM - 249 16 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 248 251 253 255 + 183 80 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 182 185 187 189 @@ -1437,18 +1654,18 @@ $PROJ_DIR$\..\vectors.c - BICOMP - 329 + ICCARM + 355 345 - ICCARM - 332 322 + BICOMP + 352 ICCARM - 249 16 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 248 251 253 255 + 183 80 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 182 185 187 189 @@ -1456,18 +1673,18 @@ $PROJ_DIR$\..\src\app\app.c - BICOMP - 347 + ICCARM + 299 220 - ICCARM - 276 136 + BICOMP + 370 ICCARM - 262 260 265 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 258 + 196 194 199 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 192 @@ -1476,7 +1693,7 @@ AARM - 313 + 336 @@ -1484,18 +1701,18 @@ $PROJ_DIR$\..\src\os\os.c - BICOMP - 354 + ICCARM + 95 224 - ICCARM - 71 140 + BICOMP + 377 ICCARM - 260 + 194 @@ -1503,18 +1720,27 @@ $PROJ_DIR$\..\src\hw\hw.c - BICOMP - 193 + ICCARM + 173 223 - ICCARM - 239 139 + BICOMP + 277 ICCARM - 262 260 265 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 258 + 196 194 199 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 192 + + + + + $PROJ_DIR$\Debug\Exe\stm32f103.out + + + ILINK + 48 338 281 297 305 290 335 301 285 286 91 300 259 261 262 263 195 258 93 304 133 254 255 140 398 268 396 399 403 47 256 362 251 @@ -1522,18 +1748,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c - BICOMP - 105 + ICCARM + 238 404 - ICCARM - 154 381 + BICOMP + 129 ICCARM - 297 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 304 301 300 302 306 237 238 230 235 233 362 + 320 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 327 324 323 325 329 171 172 164 169 167 385 @@ -1541,18 +1767,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dac.c - BICOMP - 190 + ICCARM + 233 343 - ICCARM - 149 320 + BICOMP + 274 ICCARM - 283 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 + 306 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1560,18 +1786,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c - BICOMP - 338 + ICCARM + 236 360 - ICCARM - 152 337 + BICOMP + 361 ICCARM - 287 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 296 297 304 301 300 302 306 237 238 230 235 233 362 + 310 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 319 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1579,18 +1805,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dma.c - BICOMP - 191 + ICCARM + 246 344 - ICCARM - 162 321 + BICOMP + 275 ICCARM - 288 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 + 311 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1598,18 +1824,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c - BICOMP - 192 + ICCARM + 235 359 - ICCARM - 151 336 + BICOMP + 276 ICCARM - 286 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 287 296 297 304 301 300 302 306 237 238 230 235 233 362 + 309 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 310 319 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1617,18 +1843,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dbgmcu.c - BICOMP - 185 + ICCARM + 234 342 - ICCARM - 150 319 + BICOMP + 269 ICCARM - 293 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 + 316 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1636,18 +1862,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_fsmc.c - BICOMP - 343 + ICCARM + 237 337 - ICCARM - 153 314 + BICOMP + 366 ICCARM - 296 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 297 304 301 300 302 306 237 238 230 235 233 362 + 319 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1655,18 +1881,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c - BICOMP - 351 + ICCARM + 239 121 - ICCARM - 155 97 + BICOMP + 374 ICCARM - 304 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 301 300 302 306 237 238 230 235 233 362 + 327 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 324 323 325 329 171 172 164 169 167 385 @@ -1674,18 +1900,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_pwr.c - BICOMP - 352 + ICCARM + 241 123 - ICCARM - 157 99 + BICOMP + 375 ICCARM - 300 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 302 306 237 238 230 235 233 362 + 323 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 325 329 171 172 164 169 167 385 @@ -1693,18 +1919,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c - BICOMP - 341 + ICCARM + 242 124 - ICCARM - 158 100 + BICOMP + 364 ICCARM - 302 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 306 237 238 230 235 233 362 + 325 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 329 171 172 164 169 167 385 @@ -1712,18 +1938,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_iwdg.c - BICOMP - 350 + ICCARM + 240 122 - ICCARM - 156 98 + BICOMP + 373 ICCARM - 301 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 300 302 306 237 238 230 235 233 362 + 324 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 323 325 329 171 172 164 169 167 385 @@ -1731,18 +1957,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c - BICOMP - 340 + ICCARM + 243 125 - ICCARM - 159 101 + BICOMP + 363 ICCARM - 306 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 237 238 230 235 233 362 + 329 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 171 172 164 169 167 385 @@ -1751,7 +1977,7 @@ BILINK - 280 374 279 168 194 377 378 379 108 196 180 181 182 143 183 173 271 166 110 111 113 199 112 114 241 200 176 317 + 303 397 302 252 278 400 401 402 132 280 264 265 266 227 267 257 294 250 134 135 137 283 136 138 175 284 260 340 @@ -1759,18 +1985,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\misc.c - BICOMP - 138 + ICCARM + 232 295 - ICCARM - 148 272 + BICOMP + 222 ICCARM - 362 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 + 385 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 @@ -1778,18 +2004,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_bkp.c - BICOMP - 186 + ICCARM + 228 296 - ICCARM - 144 273 + BICOMP + 270 ICCARM - 358 357 369 242 107 198 264 115 195 165 169 372 226 367 363 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 + 381 380 393 176 131 282 198 139 279 249 253 394 161 390 386 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1797,18 +2023,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c - BICOMP - 316 + ICCARM + 230 46 - ICCARM - 146 407 + BICOMP + 339 ICCARM - 363 357 369 242 107 198 264 115 195 165 169 372 226 367 358 364 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 + 386 380 393 176 131 282 198 139 279 249 253 394 161 390 381 387 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1816,18 +2042,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_can.c - BICOMP - 187 + ICCARM + 229 293 - ICCARM - 145 270 + BICOMP + 271 ICCARM - 364 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 366 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 + 387 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 389 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1835,18 +2061,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_cec.c - BICOMP - 188 + ICCARM + 226 292 - ICCARM - 142 269 + BICOMP + 272 ICCARM - 366 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 370 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 + 389 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 392 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1854,18 +2080,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_crc.c - BICOMP - 189 + ICCARM + 231 291 - ICCARM - 147 268 + BICOMP + 273 ICCARM - 370 357 369 242 107 198 264 115 195 165 169 372 226 367 363 358 364 366 283 293 288 286 287 296 297 304 301 300 302 306 237 238 230 235 233 362 + 392 380 393 176 131 282 198 139 279 249 253 394 161 390 386 381 387 389 306 316 311 309 310 319 320 327 324 323 325 329 171 172 164 169 167 385 @@ -1873,18 +2099,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.c - BICOMP - 137 + ICCARM + 174 298 - ICCARM - 240 275 + BICOMP + 221 ICCARM - 242 107 198 264 115 195 165 169 + 176 131 282 198 139 279 249 253 @@ -1892,22 +2118,22 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dbgmcu.c - BICOMP - 185 + ICCARM + 234 342 - ICCARM - 150 319 + BICOMP + 269 - BICOMP - 384 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + ICCARM + 407 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - ICCARM - 384 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + BICOMP + 407 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 @@ -1915,252 +2141,22 @@ $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dma.c - BICOMP - 191 + ICCARM + 246 344 - ICCARM - 162 321 + BICOMP + 275 - - BICOMP - 386 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 - ICCARM - 386 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 + 409 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 - - - - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c - BICOMP - 192 - - - ICCARM - 151 336 - - - - - BICOMP - 388 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 - - - ICCARM - 388 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 - - - - - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c - - - BICOMP - 338 - - - ICCARM - 152 337 - - - - - BICOMP - 390 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 - - - ICCARM - 390 3 0 242 107 198 264 115 195 165 169 372 1 7 9 11 13 15 - - - - - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_fsmc.c - - - BICOMP - 343 - - - ICCARM - 153 314 - - - - - BICOMP - 392 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - ICCARM - 392 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - - - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c - - - BICOMP - 351 - - - ICCARM - 155 97 - - - - - BICOMP - 394 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - ICCARM - 394 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - - - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_iwdg.c - - - BICOMP - 350 - - - ICCARM - 156 98 - - - - - BICOMP - 396 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - ICCARM - 396 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - - - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_pwr.c - - - BICOMP - 352 - - - ICCARM - 157 99 - - - - - BICOMP - 398 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - ICCARM - 398 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - - - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c - - - BICOMP - 340 - - - ICCARM - 159 101 - - - - - BICOMP - 400 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - ICCARM - 400 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - - - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c - - - BICOMP - 353 - - - ICCARM - 160 129 - - - - - BICOMP - 402 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - ICCARM - 402 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - - - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c - - - BICOMP - 346 - - - ICCARM - 163 132 - - - - - BICOMP - 404 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - ICCARM - 404 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - - - $PROJ_DIR$\..\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c - - - BICOMP - 342 - - - ICCARM - 141 134 - - - - - BICOMP - 406 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 - - - ICCARM - 406 3 0 242 107 198 264 115 195 165 169 372 1 7 11 13 15 + 409 3 0 176 131 282 198 139 279 249 253 394 1 7 9 11 13 15 diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/bin/openbtl_olimex_stm32e407.elf b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/bin/openbtl_olimex_stm32e407.elf index 1e49fe6a129ac2e17450d380b91552effddf37f9..ad9eaa5c30825a28afaed998960f51fd178b4e64 100644 GIT binary patch delta 24177 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 PC{n)&ls|Juzh?U%dU^PF delta 24336 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 z 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 diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/bin/openbtl_olimex_stm32e407.map b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/bin/openbtl_olimex_stm32e407.map index 7fac0575..53841f4d 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/bin/openbtl_olimex_stm32e407.map +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/bin/openbtl_olimex_stm32e407.map @@ -1633,6 +1633,18 @@ Discarded input sections .text 0x00000000 0x0 THUMB Debug/../../obj/uart.o .data 0x00000000 0x0 THUMB Debug/../../obj/uart.o .bss 0x00000000 0x0 THUMB Debug/../../obj/uart.o + .text 0x00000000 0x0 THUMB Debug/../../obj/can.o + .data 0x00000000 0x0 THUMB Debug/../../obj/can.o + .bss 0x00000000 0x0 THUMB Debug/../../obj/can.o + .debug_info 0x00000000 0x64 THUMB Debug/../../obj/can.o + .debug_abbrev 0x00000000 0x26 THUMB Debug/../../obj/can.o + .debug_aranges + 0x00000000 0x18 THUMB Debug/../../obj/can.o + .debug_line 0x00000000 0x1d THUMB Debug/../../obj/can.o + .debug_str 0x00000000 0x18a THUMB Debug/../../obj/can.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/can.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/can.o .text 0x00000000 0x0 THUMB Debug/../../obj/assert.o .data 0x00000000 0x0 THUMB Debug/../../obj/assert.o .bss 0x00000000 0x0 THUMB Debug/../../obj/assert.o @@ -2449,7 +2461,7 @@ CM3_System_Control_Space 0xe000e000 0x00001000 xw Linker script and memory map - 0x08006624 __do_debug_operation = __do_debug_operation_mempoll + 0x08006648 __do_debug_operation = __do_debug_operation_mempoll 0x08000000 __FLASH_segment_start__ = 0x8000000 0x08008000 __FLASH_segment_end__ = 0x8008000 0x10000000 __DATA_SRAM_segment_start__ = 0x10000000 @@ -2534,7 +2546,7 @@ Linker script and memory map 0x00000001 . = ASSERT (((__init_end__ >= __FLASH_segment_start__) && (__init_end__ <= __FLASH_segment_end__)), error: .init is too large to fit in FLASH memory segment) 0x08000328 __text_load_start__ = ALIGN (__init_end__, 0x4) -.text 0x08000328 0x6340 +.text 0x08000328 0x6364 0x08000328 __text_start__ = . *(.text .text.* .glue_7t .glue_7 .gnu.linkonce.t.* .gcc_except_table .ARM.extab* .gnu.linkonce.armextab.*) .glue_7 0x00000000 0x0 linker stubs @@ -2932,43 +2944,50 @@ Linker script and memory map 0x08005df0 0x1c THUMB Debug/../../obj/file.o .text.FileLibByteToHexString 0x08005e0c 0x24 THUMB Debug/../../obj/file.o - .text.SrecParseLine - 0x08005e30 0x258 THUMB Debug/../../obj/file.o .text.FileInit - 0x08006088 0x30 THUMB Debug/../../obj/file.o - 0x08006088 FileInit + 0x08005e30 0x30 THUMB Debug/../../obj/file.o + 0x08005e30 FileInit .text.FileIsIdle - 0x080060b8 0x14 THUMB Debug/../../obj/file.o - 0x080060b8 FileIsIdle + 0x08005e60 0x14 THUMB Debug/../../obj/file.o + 0x08005e60 FileIsIdle .text.FileHandleFirmwareUpdateRequest - 0x080060cc 0x3c THUMB Debug/../../obj/file.o - 0x080060cc FileHandleFirmwareUpdateRequest + 0x08005e74 0x3c THUMB Debug/../../obj/file.o + 0x08005e74 FileHandleFirmwareUpdateRequest + .text.FileSrecGetLineType + 0x08005eb0 0x44 THUMB Debug/../../obj/file.o + 0x08005eb0 FileSrecGetLineType + .text.FileSrecVerifyChecksum + 0x08005ef4 0x94 THUMB Debug/../../obj/file.o + 0x08005ef4 FileSrecVerifyChecksum + .text.FileSrecParseLine + 0x08005f88 0x1a4 THUMB Debug/../../obj/file.o + 0x08005f88 FileSrecParseLine .text.FileTask - 0x08006108 0x4b4 THUMB Debug/../../obj/file.o - 0x08006108 FileTask + 0x0800612c 0x4b4 THUMB Debug/../../obj/file.o + 0x0800612c FileTask .text.libc.isdigit - 0x080065bc 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) - 0x080065bc isdigit + 0x080065e0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) + 0x080065e0 isdigit .text.libc.toupper - 0x080065cc 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) - 0x080065cc toupper + 0x080065f0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) + 0x080065f0 toupper .text.libc.memcpy - 0x080065dc 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2_asm.o) - 0x080065dc __aeabi_memcpy - 0x080065dc __aeabi_memcpy4 - 0x080065dc __aeabi_memcpy8 - 0x080065dc memcpy + 0x08006600 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2_asm.o) + 0x08006600 __aeabi_memcpy + 0x08006600 __aeabi_memcpy4 + 0x08006600 __aeabi_memcpy8 + 0x08006600 memcpy .text.libdebugio.__do_debug_operation_mempoll - 0x08006624 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) - 0x08006624 __do_debug_operation_mempoll + 0x08006648 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) + 0x08006648 __do_debug_operation_mempoll .text.libc.__debug_io_lock - 0x08006660 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) - 0x08006660 __debug_io_lock + 0x08006684 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) + 0x08006684 __debug_io_lock .text.libc.__debug_io_unlock - 0x08006664 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) - 0x08006664 __debug_io_unlock - 0x08006668 __text_end__ = (__text_start__ + SIZEOF (.text)) - 0x08006668 __text_load_end__ = __text_end__ + 0x08006688 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) + 0x08006688 __debug_io_unlock + 0x0800668c __text_end__ = (__text_start__ + SIZEOF (.text)) + 0x0800668c __text_load_end__ = __text_end__ .vfp11_veneer 0x00000000 0x0 .vfp11_veneer 0x00000000 0x0 linker stubs @@ -2979,87 +2998,87 @@ Linker script and memory map .iplt 0x00000000 0x0 .iplt 0x00000000 0x0 THUMB Debug/../../obj/mmc.o 0x00000001 . = ASSERT (((__text_end__ >= __FLASH_segment_start__) && (__text_end__ <= __FLASH_segment_end__)), error: .text is too large to fit in FLASH memory segment) - 0x08006668 __dtors_load_start__ = ALIGN (__text_end__, 0x4) + 0x0800668c __dtors_load_start__ = ALIGN (__text_end__, 0x4) -.dtors 0x08006668 0x0 - 0x08006668 __dtors_start__ = . +.dtors 0x0800668c 0x0 + 0x0800668c __dtors_start__ = . *(SORT(.dtors.*)) *(.dtors) *(.fini_array .fini_array.*) - 0x08006668 __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors)) - 0x08006668 __dtors_load_end__ = __dtors_end__ + 0x0800668c __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors)) + 0x0800668c __dtors_load_end__ = __dtors_end__ 0x00000001 . = ASSERT (((__dtors_end__ >= __FLASH_segment_start__) && (__dtors_end__ <= __FLASH_segment_end__)), error: .dtors is too large to fit in FLASH memory segment) - 0x08006668 __ctors_load_start__ = ALIGN (__dtors_end__, 0x4) + 0x0800668c __ctors_load_start__ = ALIGN (__dtors_end__, 0x4) -.ctors 0x08006668 0x0 - 0x08006668 __ctors_start__ = . +.ctors 0x0800668c 0x0 + 0x0800668c __ctors_start__ = . *(SORT(.ctors.*)) *(.ctors) *(.init_array .init_array.*) - 0x08006668 __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors)) - 0x08006668 __ctors_load_end__ = __ctors_end__ + 0x0800668c __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors)) + 0x0800668c __ctors_load_end__ = __ctors_end__ 0x00000001 . = ASSERT (((__ctors_end__ >= __FLASH_segment_start__) && (__ctors_end__ <= __FLASH_segment_end__)), error: .ctors is too large to fit in FLASH memory segment) - 0x08006668 __rodata_load_start__ = ALIGN (__ctors_end__, 0x4) + 0x0800668c __rodata_load_start__ = ALIGN (__ctors_end__, 0x4) -.rodata 0x08006668 0x96c - 0x08006668 __rodata_start__ = . +.rodata 0x0800668c 0x96c + 0x0800668c __rodata_start__ = . *(.rodata .rodata.* .gnu.linkonce.r.*) .rodata.firmwareFilename - 0x08006668 0x20 THUMB Debug/../../obj/hooks.o + 0x0800668c 0x20 THUMB Debug/../../obj/hooks.o .rodata.str1.4 - 0x08006688 0xd THUMB Debug/../../obj/hooks.o + 0x080066ac 0xd THUMB Debug/../../obj/hooks.o 0x10 (size before relaxing) - *fill* 0x08006695 0x3 00 + *fill* 0x080066b9 0x3 00 .rodata.str1.4 - 0x08006698 0x8c THUMB Debug/../../obj/vectors.o + 0x080066bc 0x8c THUMB Debug/../../obj/vectors.o .rodata.flashSectorNumToMask - 0x08006724 0x30 THUMB Debug/../../obj/flash.o + 0x08006748 0x30 THUMB Debug/../../obj/flash.o .rodata.flashLayout - 0x08006754 0x78 THUMB Debug/../../obj/flash.o + 0x08006778 0x78 THUMB Debug/../../obj/flash.o .rodata.str1.4 - 0x080067cc 0x7e THUMB Debug/../../obj/uart.o + 0x080067f0 0x7e THUMB Debug/../../obj/uart.o 0x80 (size before relaxing) - *fill* 0x0800684a 0x2 00 + *fill* 0x0800686e 0x2 00 .rodata.xcpStationId - 0x0800684c 0x8 THUMB Debug/../../obj/xcp.o + 0x08006870 0x8 THUMB Debug/../../obj/xcp.o .rodata.str1.4 - 0x08006854 0x13 THUMB Debug/../../obj/ff.o + 0x08006878 0x13 THUMB Debug/../../obj/ff.o 0x14 (size before relaxing) - *fill* 0x08006867 0x1 00 - .rodata.ExCvt 0x08006868 0x80 THUMB Debug/../../obj/ff.o + *fill* 0x0800688b 0x1 00 + .rodata.ExCvt 0x0800688c 0x80 THUMB Debug/../../obj/ff.o .rodata.LfnOfs - 0x080068e8 0x10 THUMB Debug/../../obj/ff.o + 0x0800690c 0x10 THUMB Debug/../../obj/ff.o .rodata.tbl_lower.3809 - 0x080068f8 0x1e0 THUMB Debug/../../obj/unicode.o - .rodata.Tbl 0x08006ad8 0x100 THUMB Debug/../../obj/unicode.o + 0x0800691c 0x1e0 THUMB Debug/../../obj/unicode.o + .rodata.Tbl 0x08006afc 0x100 THUMB Debug/../../obj/unicode.o .rodata.tbl_upper.3810 - 0x08006bd8 0x1e0 THUMB Debug/../../obj/unicode.o + 0x08006bfc 0x1e0 THUMB Debug/../../obj/unicode.o .rodata.str1.4 - 0x08006db8 0x21c THUMB Debug/../../obj/file.o + 0x08006ddc 0x21c THUMB Debug/../../obj/file.o 0x220 (size before relaxing) - 0x08006fd4 __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata)) - 0x08006fd4 __rodata_load_end__ = __rodata_end__ + 0x08006ff8 __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata)) + 0x08006ff8 __rodata_load_end__ = __rodata_end__ .rel.dyn 0x08000000 0x0 .rel.iplt 0x00000000 0x0 THUMB Debug/../../obj/mmc.o 0x00000001 . = ASSERT (((__rodata_end__ >= __FLASH_segment_start__) && (__rodata_end__ <= __FLASH_segment_end__)), error: .rodata is too large to fit in FLASH memory segment) - 0x08006fd4 __ARM.exidx_load_start__ = ALIGN (__rodata_end__, 0x4) + 0x08006ff8 __ARM.exidx_load_start__ = ALIGN (__rodata_end__, 0x4) -.ARM.exidx 0x08006fd4 0x0 - 0x08006fd4 __ARM.exidx_start__ = . - 0x08006fd4 __exidx_start = __ARM.exidx_start__ +.ARM.exidx 0x08006ff8 0x0 + 0x08006ff8 __ARM.exidx_start__ = . + 0x08006ff8 __exidx_start = __ARM.exidx_start__ *(.ARM.exidx .ARM.exidx.*) - 0x08006fd4 __ARM.exidx_end__ = (__ARM.exidx_start__ + SIZEOF (.ARM.exidx)) - 0x08006fd4 __exidx_end = __ARM.exidx_end__ - 0x08006fd4 __ARM.exidx_load_end__ = __ARM.exidx_end__ + 0x08006ff8 __ARM.exidx_end__ = (__ARM.exidx_start__ + SIZEOF (.ARM.exidx)) + 0x08006ff8 __exidx_end = __ARM.exidx_end__ + 0x08006ff8 __ARM.exidx_load_end__ = __ARM.exidx_end__ 0x00000001 . = ASSERT (((__ARM.exidx_end__ >= __FLASH_segment_start__) && (__ARM.exidx_end__ <= __FLASH_segment_end__)), error: .ARM.exidx is too large to fit in FLASH memory segment) - 0x08006fd4 __fast_load_start__ = ALIGN (__ARM.exidx_end__, 0x4) + 0x08006ff8 __fast_load_start__ = ALIGN (__ARM.exidx_end__, 0x4) -.fast 0x20000000 0x0 load address 0x08006fd4 +.fast 0x20000000 0x0 load address 0x08006ff8 0x20000000 __fast_start__ = . *(.fast .fast.*) 0x20000000 __fast_end__ = (__fast_start__ + SIZEOF (.fast)) - 0x08006fd4 __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast)) + 0x08006ff8 __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast)) 0x00000001 . = ASSERT (((__fast_load_end__ >= __FLASH_segment_start__) && (__fast_load_end__ <= __FLASH_segment_end__)), error: .fast is too large to fit in FLASH memory segment) .fast_run 0x20000000 0x0 @@ -3068,9 +3087,9 @@ Linker script and memory map 0x20000000 __fast_run_end__ = (__fast_run_start__ + SIZEOF (.fast_run)) 0x20000000 __fast_run_load_end__ = __fast_run_end__ 0x00000001 . = ASSERT (((__fast_run_end__ >= __RAM_segment_start__) && (__fast_run_end__ <= __RAM_segment_end__)), error: .fast_run is too large to fit in RAM memory segment) - 0x08006fd4 __data_load_start__ = ALIGN ((__fast_load_start__ + SIZEOF (.fast)), 0x4) + 0x08006ff8 __data_load_start__ = ALIGN ((__fast_load_start__ + SIZEOF (.fast)), 0x4) -.data 0x20000000 0x18 load address 0x08006fd4 +.data 0x20000000 0x18 load address 0x08006ff8 0x20000000 __data_start__ = . *(.data .data.* .gnu.linkonce.d.*) .data.DMAEndOfTransfer @@ -3080,13 +3099,13 @@ Linker script and memory map .data.APBAHBPrescTable 0x20000008 0x10 THUMB Debug/../../obj/stm32f4xx_rcc.o 0x20000018 __data_end__ = (__data_start__ + SIZEOF (.data)) - 0x08006fec __data_load_end__ = (__data_load_start__ + SIZEOF (.data)) + 0x08007010 __data_load_end__ = (__data_load_start__ + SIZEOF (.data)) .igot.plt 0x00000000 0x0 .igot.plt 0x00000000 0x0 THUMB Debug/../../obj/mmc.o 0x00000001 . = ASSERT (((__data_load_end__ >= __FLASH_segment_start__) && (__data_load_end__ <= __FLASH_segment_end__)), error: .data is too large to fit in FLASH memory segment) -.data_run 0x20000000 0x18 load address 0x08006fd4 +.data_run 0x20000000 0x18 load address 0x08006ff8 0x20000000 __data_run_start__ = . 0x20000018 . = MAX ((__data_run_start__ + SIZEOF (.data)), .) *fill* 0x20000000 0x18 00 @@ -3095,7 +3114,7 @@ Linker script and memory map 0x00000001 . = ASSERT (((__data_run_end__ >= __RAM_segment_start__) && (__data_run_end__ <= __RAM_segment_end__)), error: .data_run is too large to fit in RAM memory segment) 0x20000018 __bss_load_start__ = ALIGN (__data_run_end__, 0x4) -.bss 0x20000018 0x1028 +.bss 0x20000018 0x1024 0x20000018 __bss_start__ = . *(.bss .bss.* .gnu.linkonce.b.*) .bss.TransferError @@ -3124,115 +3143,114 @@ Linker script and memory map 0x20000514 0x204 THUMB Debug/../../obj/flash.o .bss.millisecond_counter 0x20000718 0x4 THUMB Debug/../../obj/timer.o - .bss.xcpCtoRxInProgress.7303 - 0x2000071c 0x1 THUMB Debug/../../obj/uart.o - *fill* 0x2000071d 0x3 00 - .bss.xcpCtoReqPacket.7301 - 0x20000720 0x44 THUMB Debug/../../obj/uart.o - .bss.xcpCtoRxLength.7302 - 0x20000764 0x1 THUMB Debug/../../obj/uart.o - *fill* 0x20000765 0x3 00 + .bss.xcpCtoReqPacket.7320 + 0x2000071c 0x44 THUMB Debug/../../obj/uart.o + .bss.xcpCtoRxLength.7321 + 0x20000760 0x1 THUMB Debug/../../obj/uart.o + .bss.xcpCtoRxInProgress.7322 + 0x20000761 0x1 THUMB Debug/../../obj/uart.o + *fill* 0x20000762 0x2 00 .bss.assert_failure_file - 0x20000768 0x4 THUMB Debug/../../obj/assert.o + 0x20000764 0x4 THUMB Debug/../../obj/assert.o .bss.assert_failure_line - 0x2000076c 0x4 THUMB Debug/../../obj/assert.o + 0x20000768 0x4 THUMB Debug/../../obj/assert.o .bss.backdoorOpen - 0x20000770 0x1 THUMB Debug/../../obj/backdoor.o - *fill* 0x20000771 0x3 00 + 0x2000076c 0x1 THUMB Debug/../../obj/backdoor.o + *fill* 0x2000076d 0x3 00 .bss.backdoorOpenTime - 0x20000774 0x4 THUMB Debug/../../obj/backdoor.o + 0x20000770 0x4 THUMB Debug/../../obj/backdoor.o .bss.comEntryStateConnect - 0x20000778 0x1 THUMB Debug/../../obj/com.o - *fill* 0x20000779 0x3 00 - .bss.xcpCtoReqPacket.3915 - 0x2000077c 0x40 THUMB Debug/../../obj/com.o - .bss.xcpInfo 0x200007bc 0x4c THUMB Debug/../../obj/xcp.o - .bss.LfnBuf 0x20000808 0x200 THUMB Debug/../../obj/ff.o - .bss.Fsid 0x20000a08 0x2 THUMB Debug/../../obj/ff.o - *fill* 0x20000a0a 0x2 00 - .bss.FatFs 0x20000a0c 0x4 THUMB Debug/../../obj/ff.o + 0x20000774 0x1 THUMB Debug/../../obj/com.o + *fill* 0x20000775 0x3 00 + .bss.xcpCtoReqPacket.3934 + 0x20000778 0x40 THUMB Debug/../../obj/com.o + .bss.xcpInfo 0x200007b8 0x4c THUMB Debug/../../obj/xcp.o + .bss.LfnBuf 0x20000804 0x200 THUMB Debug/../../obj/ff.o + .bss.Fsid 0x20000a04 0x2 THUMB Debug/../../obj/ff.o + *fill* 0x20000a06 0x2 00 + .bss.FatFs 0x20000a08 0x4 THUMB Debug/../../obj/ff.o .bss.loggingStr - 0x20000a10 0x40 THUMB Debug/../../obj/file.o + 0x20000a0c 0x40 THUMB Debug/../../obj/file.o .bss.firmwareUpdateState - 0x20000a50 0x1 THUMB Debug/../../obj/file.o - *fill* 0x20000a51 0x3 00 + 0x20000a4c 0x1 THUMB Debug/../../obj/file.o + *fill* 0x20000a4d 0x3 00 .bss.eraseInfo - 0x20000a54 0x8 THUMB Debug/../../obj/file.o + 0x20000a50 0x8 THUMB Debug/../../obj/file.o .bss.fatFsObjects - 0x20000a5c 0x458 THUMB Debug/../../obj/file.o + 0x20000a58 0x458 THUMB Debug/../../obj/file.o .bss.lineParseObject - 0x20000eb4 0x184 THUMB Debug/../../obj/file.o + 0x20000eb0 0x184 THUMB Debug/../../obj/file.o .bss.libdebugio.dbgCommWord - 0x20001038 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) - 0x20001038 dbgCommWord + 0x20001034 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) + 0x20001034 dbgCommWord .bss.libdebugio.dbgCntrlWord_mempoll - 0x2000103c 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) - 0x2000103c dbgCntrlWord_mempoll + 0x20001038 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) + 0x20001038 dbgCntrlWord_mempoll *(COMMON) - 0x20001040 __bss_end__ = (__bss_start__ + SIZEOF (.bss)) - 0x20001040 __bss_load_end__ = __bss_end__ + 0x2000103c __bss_end__ = (__bss_start__ + SIZEOF (.bss)) + 0x2000103c __bss_load_end__ = __bss_end__ 0x00000001 . = ASSERT (((__bss_end__ >= __RAM_segment_start__) && (__bss_end__ <= __RAM_segment_end__)), error: .bss is too large to fit in RAM memory segment) - 0x20001040 __non_init_load_start__ = ALIGN (__bss_end__, 0x4) + 0x2000103c __non_init_load_start__ = ALIGN (__bss_end__, 0x4) -.non_init 0x20001040 0x0 - 0x20001040 __non_init_start__ = . +.non_init 0x2000103c 0x0 + 0x2000103c __non_init_start__ = . *(.non_init .non_init.*) - 0x20001040 __non_init_end__ = (__non_init_start__ + SIZEOF (.non_init)) - 0x20001040 __non_init_load_end__ = __non_init_end__ + 0x2000103c __non_init_end__ = (__non_init_start__ + SIZEOF (.non_init)) + 0x2000103c __non_init_load_end__ = __non_init_end__ 0x00000001 . = ASSERT (((__non_init_end__ >= __RAM_segment_start__) && (__non_init_end__ <= __RAM_segment_end__)), error: .non_init is too large to fit in RAM memory segment) - 0x20001040 __heap_load_start__ = ALIGN (__non_init_end__, 0x4) + 0x2000103c __heap_load_start__ = ALIGN (__non_init_end__, 0x4) -.heap 0x20001040 0x800 - 0x20001040 __heap_start__ = . +.heap 0x2000103c 0x800 + 0x2000103c __heap_start__ = . *(.heap .heap.*) - 0x20001840 . = ALIGN (MAX ((__heap_start__ + __HEAPSIZE__), .), 0x4) - *fill* 0x20001040 0x800 00 - 0x20001840 __heap_end__ = (__heap_start__ + SIZEOF (.heap)) - 0x20001840 __heap_load_end__ = __heap_end__ + 0x2000183c . = ALIGN (MAX ((__heap_start__ + __HEAPSIZE__), .), 0x4) + *fill* 0x2000103c 0x800 00 + 0x2000183c __heap_end__ = (__heap_start__ + SIZEOF (.heap)) + 0x2000183c __heap_load_end__ = __heap_end__ 0x00000001 . = ASSERT (((__heap_end__ >= __RAM_segment_start__) && (__heap_end__ <= __RAM_segment_end__)), error: .heap is too large to fit in RAM memory segment) - 0x20001840 __stack_load_start__ = ALIGN (__heap_end__, 0x4) + 0x2000183c __stack_load_start__ = ALIGN (__heap_end__, 0x4) -.stack 0x20001840 0x800 - 0x20001840 __stack_start__ = . +.stack 0x2000183c 0x800 + 0x2000183c __stack_start__ = . *(.stack .stack.*) - 0x20002040 . = ALIGN (MAX ((__stack_start__ + __STACKSIZE__), .), 0x4) - *fill* 0x20001840 0x800 00 - 0x20002040 __stack_end__ = (__stack_start__ + SIZEOF (.stack)) - 0x20002040 __stack_load_end__ = __stack_end__ + 0x2000203c . = ALIGN (MAX ((__stack_start__ + __STACKSIZE__), .), 0x4) + *fill* 0x2000183c 0x800 00 + 0x2000203c __stack_end__ = (__stack_start__ + SIZEOF (.stack)) + 0x2000203c __stack_load_end__ = __stack_end__ 0x00000001 . = ASSERT (((__stack_end__ >= __RAM_segment_start__) && (__stack_end__ <= __RAM_segment_end__)), error: .stack is too large to fit in RAM memory segment) - 0x20002040 __stack_process_load_start__ = ALIGN (__stack_end__, 0x4) + 0x2000203c __stack_process_load_start__ = ALIGN (__stack_end__, 0x4) -.stack_process 0x20002040 0x0 - 0x20002040 __stack_process_start__ = . +.stack_process 0x2000203c 0x0 + 0x2000203c __stack_process_start__ = . *(.stack_process .stack_process.*) - 0x20002040 . = ALIGN (MAX ((__stack_process_start__ + __STACKSIZE_PROCESS__), .), 0x4) - 0x20002040 __stack_process_end__ = (__stack_process_start__ + SIZEOF (.stack_process)) - 0x20002040 __stack_process_load_end__ = __stack_process_end__ + 0x2000203c . = ALIGN (MAX ((__stack_process_start__ + __STACKSIZE_PROCESS__), .), 0x4) + 0x2000203c __stack_process_end__ = (__stack_process_start__ + SIZEOF (.stack_process)) + 0x2000203c __stack_process_load_end__ = __stack_process_end__ 0x00000001 . = ASSERT (((__stack_process_end__ >= __RAM_segment_start__) && (__stack_process_end__ <= __RAM_segment_end__)), error: .stack_process is too large to fit in RAM memory segment) - 0x20002040 __tbss_load_start__ = ALIGN (__stack_process_end__, 0x4) + 0x2000203c __tbss_load_start__ = ALIGN (__stack_process_end__, 0x4) -.tbss 0x20002040 0x0 - 0x20002040 __tbss_start__ = . +.tbss 0x2000203c 0x0 + 0x2000203c __tbss_start__ = . *(.tbss .tbss.*) - 0x20002040 __tbss_end__ = (__tbss_start__ + SIZEOF (.tbss)) - 0x20002040 __tbss_load_end__ = __tbss_end__ + 0x2000203c __tbss_end__ = (__tbss_start__ + SIZEOF (.tbss)) + 0x2000203c __tbss_load_end__ = __tbss_end__ 0x00000001 . = ASSERT (((__tbss_end__ >= __RAM_segment_start__) && (__tbss_end__ <= __RAM_segment_end__)), error: .tbss is too large to fit in RAM memory segment) - 0x08006fec __tdata_load_start__ = ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + 0x08007010 __tdata_load_start__ = ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) -.tdata 0x20002040 0x0 load address 0x08006fec - 0x20002040 __tdata_start__ = . +.tdata 0x2000203c 0x0 load address 0x08007010 + 0x2000203c __tdata_start__ = . *(.tdata .tdata.*) - 0x20002040 __tdata_end__ = (__tdata_start__ + SIZEOF (.tdata)) - 0x08006fec __tdata_load_end__ = (__tdata_load_start__ + SIZEOF (.tdata)) - 0x08006fec __FLASH_segment_used_end__ = (ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + SIZEOF (.tdata)) + 0x2000203c __tdata_end__ = (__tdata_start__ + SIZEOF (.tdata)) + 0x08007010 __tdata_load_end__ = (__tdata_load_start__ + SIZEOF (.tdata)) + 0x08007010 __FLASH_segment_used_end__ = (ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + SIZEOF (.tdata)) 0x00000001 . = ASSERT (((__tdata_load_end__ >= __FLASH_segment_start__) && (__tdata_load_end__ <= __FLASH_segment_end__)), error: .tdata is too large to fit in FLASH memory segment) -.tdata_run 0x20002040 0x0 - 0x20002040 __tdata_run_start__ = . - 0x20002040 . = MAX ((__tdata_run_start__ + SIZEOF (.tdata)), .) - 0x20002040 __tdata_run_end__ = (__tdata_run_start__ + SIZEOF (.tdata_run)) - 0x20002040 __tdata_run_load_end__ = __tdata_run_end__ - 0x20002040 __RAM_segment_used_end__ = (ALIGN (__tbss_end__, 0x4) + SIZEOF (.tdata_run)) +.tdata_run 0x2000203c 0x0 + 0x2000203c __tdata_run_start__ = . + 0x2000203c . = MAX ((__tdata_run_start__ + SIZEOF (.tdata)), .) + 0x2000203c __tdata_run_end__ = (__tdata_run_start__ + SIZEOF (.tdata_run)) + 0x2000203c __tdata_run_load_end__ = __tdata_run_end__ + 0x2000203c __RAM_segment_used_end__ = (ALIGN (__tbss_end__, 0x4) + SIZEOF (.tdata_run)) 0x00000001 . = ASSERT (((__tdata_run_end__ >= __RAM_segment_start__) && (__tdata_run_end__ <= __RAM_segment_end__)), error: .tdata_run is too large to fit in RAM memory segment) START GROUP LOAD THUMB Debug/../../obj/mmc.o @@ -3277,6 +3295,7 @@ LOAD THUMB Debug/../../obj/flash.o LOAD THUMB Debug/../../obj/nvm.o LOAD THUMB Debug/../../obj/timer.o LOAD THUMB Debug/../../obj/uart.o +LOAD THUMB Debug/../../obj/can.o LOAD THUMB Debug/../../obj/assert.o LOAD THUMB Debug/../../obj/backdoor.o LOAD THUMB Debug/../../obj/boot.o @@ -3296,7 +3315,7 @@ LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib END GROUP OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/ide/../bin/openbtl_olimex_stm32e407.elf elf32-littlearm) -.debug_frame 0x00000000 0x3b20 +.debug_frame 0x00000000 0x3b54 .debug_frame 0x00000000 0x4e0 THUMB Debug/../../obj/mmc.o .debug_frame 0x000004e0 0x38 THUMB Debug/../../obj/system_stm32f4xx.o .debug_frame 0x00000518 0x2c8 THUMB Debug/../../obj/stm32f4xx_flash.o @@ -3320,13 +3339,13 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossw .debug_frame 0x00001698 0x80 THUMB Debug/../../obj/xcp.o .debug_frame 0x00001718 0x688 THUMB Debug/../../obj/ff.o .debug_frame 0x00001da0 0x30 THUMB Debug/../../obj/unicode.o - .debug_frame 0x00001dd0 0x120 THUMB Debug/../../obj/file.o - .debug_frame 0x00001ef0 0x12e0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) - .debug_frame 0x000031d0 0x120 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2_asm.o) - .debug_frame 0x000032f0 0x790 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) - .debug_frame 0x00003a80 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) + .debug_frame 0x00001dd0 0x154 THUMB Debug/../../obj/file.o + .debug_frame 0x00001f24 0x12e0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) + .debug_frame 0x00003204 0x120 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2_asm.o) + .debug_frame 0x00003324 0x790 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) + .debug_frame 0x00003ab4 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) -.debug_info 0x00000000 0x1000f +.debug_info 0x00000000 0x10008 .debug_info 0x00000000 0x35cb THUMB Debug/../../obj/mmc.o .debug_info 0x000035cb 0x61d THUMB Debug/../../obj/system_stm32f4xx.o .debug_info 0x00003be8 0x8a0 THUMB Debug/../../obj/stm32f4xx_flash.o @@ -3351,12 +3370,12 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossw .debug_info 0x00009ba6 0x83a THUMB Debug/../../obj/xcp.o .debug_info 0x0000a3e0 0x3562 THUMB Debug/../../obj/ff.o .debug_info 0x0000d942 0x169 THUMB Debug/../../obj/unicode.o - .debug_info 0x0000daab 0x122d THUMB Debug/../../obj/file.o - .debug_info 0x0000ecd8 0xd02 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) - .debug_info 0x0000f9da 0x55f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) - .debug_info 0x0000ff39 0xd6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) + .debug_info 0x0000daab 0x1226 THUMB Debug/../../obj/file.o + .debug_info 0x0000ecd1 0xd02 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) + .debug_info 0x0000f9d3 0x55f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) + .debug_info 0x0000ff32 0xd6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) -.debug_abbrev 0x00000000 0x27e3 +.debug_abbrev 0x00000000 0x2799 .debug_abbrev 0x00000000 0x370 THUMB Debug/../../obj/mmc.o .debug_abbrev 0x00000370 0x158 THUMB Debug/../../obj/system_stm32f4xx.o .debug_abbrev 0x000004c8 0x1a9 THUMB Debug/../../obj/stm32f4xx_flash.o @@ -3381,12 +3400,12 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossw .debug_abbrev 0x00001e2a 0x24d THUMB Debug/../../obj/xcp.o .debug_abbrev 0x00002077 0x337 THUMB Debug/../../obj/ff.o .debug_abbrev 0x000023ae 0xa8 THUMB Debug/../../obj/unicode.o - .debug_abbrev 0x00002456 0x25c THUMB Debug/../../obj/file.o - .debug_abbrev 0x000026b2 0xcb C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) - .debug_abbrev 0x0000277d 0x3e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) - .debug_abbrev 0x000027bb 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) + .debug_abbrev 0x00002456 0x212 THUMB Debug/../../obj/file.o + .debug_abbrev 0x00002668 0xcb C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) + .debug_abbrev 0x00002733 0x3e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) + .debug_abbrev 0x00002771 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) -.debug_loc 0x00000000 0xeb2d +.debug_loc 0x00000000 0xeb43 .debug_loc 0x00000000 0x2289 THUMB Debug/../../obj/mmc.o .debug_loc 0x00002289 0x1a7 THUMB Debug/../../obj/system_stm32f4xx.o .debug_loc 0x00002430 0x83a THUMB Debug/../../obj/stm32f4xx_flash.o @@ -3409,11 +3428,11 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossw .debug_loc 0x00005c84 0x248 THUMB Debug/../../obj/xcp.o .debug_loc 0x00005ecc 0x68fe THUMB Debug/../../obj/ff.o .debug_loc 0x0000c7ca 0x179 THUMB Debug/../../obj/unicode.o - .debug_loc 0x0000c943 0x964 THUMB Debug/../../obj/file.o - .debug_loc 0x0000d2a7 0x1092 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) - .debug_loc 0x0000e339 0x7f4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) + .debug_loc 0x0000c943 0x97a THUMB Debug/../../obj/file.o + .debug_loc 0x0000d2bd 0x1092 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) + .debug_loc 0x0000e34f 0x7f4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) -.debug_aranges 0x00000000 0x1360 +.debug_aranges 0x00000000 0x1370 .debug_aranges 0x00000000 0x140 THUMB Debug/../../obj/mmc.o .debug_aranges @@ -3463,15 +3482,15 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossw .debug_aranges 0x00000b58 0x28 THUMB Debug/../../obj/unicode.o .debug_aranges - 0x00000b80 0x60 THUMB Debug/../../obj/file.o + 0x00000b80 0x70 THUMB Debug/../../obj/file.o .debug_aranges - 0x00000be0 0x508 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) + 0x00000bf0 0x508 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) .debug_aranges - 0x000010e8 0x218 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) + 0x000010f8 0x218 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) .debug_aranges - 0x00001300 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) + 0x00001310 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) -.debug_ranges 0x00000000 0x1468 +.debug_ranges 0x00000000 0x1420 .debug_ranges 0x00000000 0x1f0 THUMB Debug/../../obj/mmc.o .debug_ranges 0x000001f0 0x18 THUMB Debug/../../obj/system_stm32f4xx.o .debug_ranges 0x00000208 0x108 THUMB Debug/../../obj/stm32f4xx_flash.o @@ -3495,12 +3514,12 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossw .debug_ranges 0x00000910 0x80 THUMB Debug/../../obj/xcp.o .debug_ranges 0x00000990 0x2c8 THUMB Debug/../../obj/ff.o .debug_ranges 0x00000c58 0x18 THUMB Debug/../../obj/unicode.o - .debug_ranges 0x00000c70 0xa8 THUMB Debug/../../obj/file.o - .debug_ranges 0x00000d18 0x4f8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) - .debug_ranges 0x00001210 0x208 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) - .debug_ranges 0x00001418 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) + .debug_ranges 0x00000c70 0x60 THUMB Debug/../../obj/file.o + .debug_ranges 0x00000cd0 0x4f8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) + .debug_ranges 0x000011c8 0x208 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) + .debug_ranges 0x000013d0 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) -.debug_line 0x00000000 0x5e02 +.debug_line 0x00000000 0x5e4c .debug_line 0x00000000 0xb4f THUMB Debug/../../obj/mmc.o .debug_line 0x00000b4f 0x21c THUMB Debug/../../obj/system_stm32f4xx.o .debug_line 0x00000d6b 0x49f THUMB Debug/../../obj/stm32f4xx_flash.o @@ -3525,12 +3544,12 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossw .debug_line 0x00003bcf 0x1fd THUMB Debug/../../obj/xcp.o .debug_line 0x00003dcc 0xfb9 THUMB Debug/../../obj/ff.o .debug_line 0x00004d85 0x185 THUMB Debug/../../obj/unicode.o - .debug_line 0x00004f0a 0x381 THUMB Debug/../../obj/file.o - .debug_line 0x0000528b 0x5b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) - .debug_line 0x0000583e 0x550 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) - .debug_line 0x00005d8e 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) + .debug_line 0x00004f0a 0x3cb THUMB Debug/../../obj/file.o + .debug_line 0x000052d5 0x5b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) + .debug_line 0x00005888 0x550 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) + .debug_line 0x00005dd8 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) -.debug_str 0x00000000 0x4a49 +.debug_str 0x00000000 0x4a55 .debug_str 0x00000000 0x1460 THUMB Debug/../../obj/mmc.o 0x1526 (size before relaxing) .debug_str 0x00001460 0x276 THUMB Debug/../../obj/system_stm32f4xx.o @@ -3577,13 +3596,13 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossw 0x74c (size before relaxing) .debug_str 0x00003cc4 0x99 THUMB Debug/../../obj/unicode.o 0x165 (size before relaxing) - .debug_str 0x00003d5d 0x2f8 THUMB Debug/../../obj/file.o - 0x7dd (size before relaxing) - .debug_str 0x00004055 0x56f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) + .debug_str 0x00003d5d 0x304 THUMB Debug/../../obj/file.o + 0x7e9 (size before relaxing) + .debug_str 0x00004061 0x56f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7em_t_le_eabi.a(libc2.o) 0x655 (size before relaxing) - .debug_str 0x000045c4 0x3b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) + .debug_str 0x000045d0 0x3b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7em_t_le_eabi.a(libdebugio.o) 0x3fc (size before relaxing) - .debug_str 0x00004977 0xd2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) + .debug_str 0x00004983 0xd2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7em_t_le_eabi.a(user_libc.o) 0x11b (size before relaxing) .comment 0x00000000 0x4e diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/bin/openbtl_olimex_stm32e407.srec b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/bin/openbtl_olimex_stm32e407.srec index 4ca15ada..bbd17502 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/bin/openbtl_olimex_stm32e407.srec +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/bin/openbtl_olimex_stm32e407.srec @@ -1,5 +1,5 @@ S02B0000433A2F576F726B2F736F6674776172652F4F70656E424C542F5461726765742F44656D6F2F41524DEF -S315080000004020002017020008D1220008D12200084B +S315080000003C20002017020008D1220008D12200084F S31508000010D1220008D1220008D1220008D1220008E6 S31508000020D1220008D1220008D1220008D1220008D6 S31508000030D1220008D1220008D1220008D1220008C6 @@ -44,12 +44,12 @@ S3150800028803BCF7E700208646EC4600200021234AEF S315080002989047FEE7884207D0521A05D003780130FE S315080002A80B700131013AF9D17047884202D00270C1 S315080002B80130FAE77047000008ED00E00000000882 -S315080002C840200020D46F00080000002018000020F5 -S315080002D8280300082803000868660008D46F000881 -S315080002E8000000200000002068660008686600080C -S315080002F86866000868660008686600086866000890 -S315080003086866000868660008D46F000818000020A8 -S315080003184010002040100020401800204522000800 +S315080002C83C200020F86F00080000002018000020D5 +S315080002D828030008280300088C660008F86F000839 +S315080002E800000020000000208C6600088C660008C4 +S315080002F88C6600088C6600088C6600088C66000800 +S315080003088C6600088C660008F86F0008180000203C +S315080003183C1000203C1000203C180020452200080C S3150800032808B54FF43053C4F20103586B10F0450F63 S3150800033807D14FF43052C4F20102506B10F0450F42 S31508000348FBD010F0040F06D04FF0040001F01EFE93 @@ -376,13 +376,13 @@ S3150800174840F20402C2F20002107808BD2DE9B0433F S31508001758ADF5027D88461746C8B120E04FF0000966 S315080017684FF40075E219009502A84FEA42224B4643 S31508001778FFF71AFDB0B9FFF7A3FF0128FBD008EB5E -S31508001788442002A92A4604F025FF8CB90DE003F186 +S31508001788442002A92A4604F037FF8CB90DE003F174 S31508001798FF34E4B2002BE1D14FF001000CE04FF022 S315080017A8010009E04FF0010006E04FF0000003E0F1 S315080017B804F1FF30C4B2D5E70DF5027DBDE8B08364 S315080017C82DE9F043ADF5037D0F469046E8B124E0D0 S315080017D84FF400754FF0000902A807EB44212A4682 -S315080017E804F0F8FE04EB0802009502A84FEA422224 +S315080017E804F00AFF04EB0802009502A84FEA422211 S315080017F84B46FFF7F3FD064608B1052810D1FFF753 S315080018085FFF0128FBD08CB90DE003F1FF34E4B281 S31508001818002BDDD14FF001000CE04FF0010009E084 @@ -527,18 +527,18 @@ S315080020B823F400514FEA01424FEA124383817047DD S315080020C84FEAC1514FEAD1528280704780884FEA59 S315080020D8C0514FEAD1507047038819420CBF0020F7 S315080020E80120704700B589B04FF0000300930193AB -S315080020F802930393049305930693079346F268603D +S315080020F802930393049305930693079346F28C6019 S31508002108C0F60000694603F0BFFC40B9009848B11C S315080021189DF8081081F01002C2F3001004E04FF091 -S31508002128000001E04FF0000009B000BD46F2686003 +S31508002128000001E04FF0000009B000BD46F28C60DF S31508002138C0F60000704700BF08B540F2E800C2F2D2 -S3150800214800004FF0000380F8243246F28861C0F692 +S3150800214800004FF0000380F8243246F2AC61C0F66E S3150800215800014FF00A0203F09BF838B940F2E8008C S31508002168C2F200004FF0010280F8242208BD00BF21 S3150800217838B540F2E803C2F2000393F824020128AE S3150800218805D140F2E800C2F2000003F093FB4FF4D1 S31508002198A054C4F201044FF0400520462946FFF72B -S315080021A89BFF0028F9D046F26860C0F6000003F0E5 +S315080021A89BFF0028F9D046F28C60C0F6000003F0C1 S315080021B893FC38BD08B540F2E803C2F2000393F869 S315080021C82402012805D140F2E800C2F2000003F013 S315080021D871FB08BD70B5064640F2E803C2F2000373 @@ -556,7 +556,7 @@ S315080022882BFD4FF000038DF806304FF001008DF84E S3150800229807004FF002058DF804504FF040010091F1 S315080022A88DF8055020466946FFF760FC8DF80450FE S315080022B84FF08002009220466946FFF757FC00F067 -S315080022C85DFD00F069FDFCE708B546F29860C0F6C2 +S315080022C85DFD00F069FDFCE708B546F2BC60C0F69E S315080022D800004FF03D0100F009FD08BD08B500F003 S315080022E891FB80B100F08EFD00F09AFB4EF608537C S315080022F8CEF200034FF400421A6048F20400C0F612 @@ -588,7 +588,7 @@ S31508002488B4F1016F38BF09211AD326E04FF00001CD S3150800249816E04FF0010113E04FF0020110E04FF08B S315080024A803010DE04FF004010AE04FF0050107E0CB S315080024B84FF0060104E04FF0070101E04FF008016C -S315080024C801EB410346F25472C0F6000202EB8300A0 +S315080024C801EB410346F27872C0F6000202EB83007C S315080024D8007A10BD4FF0FF0010BD4FF0FF0010BD89 S315080024E82DE9F04105460068FFF742FFFF283BD073 S315080024F8FFF776FA4FF0F300FFF792FAFFF796FA26 @@ -640,7 +640,7 @@ S315080027C8FFF7D6FD054606F1FF300019FFF7D0FDDD S315080027D80446FF2D59D0FF285BD0854249D8012DDC S315080027E84BD90B284DD8FFF7FBF84FF0F300FFF746 S315080027F817F9FFF71BF9012805D1FFF707F94FF075 -S315080028080000BDE8F08146F22476C0F600064FF0CF +S315080028080000BDE8F08146F24876C0F600064FF0AB S315080028180207631B03F0010800F00CFB36F81500E5 S315080028283946FFF76BF9082837D008E000F002FBAD S3150800283836F815003946FFF761F9082805D0FFF775 @@ -694,10 +694,10 @@ S31508002B280000ADF80400ADF80600ADF80800ADF8E9 S31508002B380C004FF00C01ADF80A104FF4A054C4F27B S31508002B48010420466946FFF727FA20464FF0010197 S31508002B58FFF7A6FA04B010BD2DE9F84305460C465A -S31508002B68402907D946F2CC70C0F600004FF0760126 +S31508002B68402907D946F2F070C0F600004FF0760102 S31508002B7800F0BCF82046FFF7A9FF012807D046F25F -S31508002B88CC70C0F600004FF0790100F0AFF8264681 -S31508002B9844B346F2CC77C0F600074FF081084FF0E9 +S31508002B88F070C0F600004FF0790100F0AFF826465D +S31508002B9844B346F2F077C0F600074FF081084FF0C5 S31508002BA8000406F1FF3303F0010900F043F9285D34 S31508002BB8FFF78CFF012817D11AE000F03BF9285DCA S31508002BC8FFF784FF012803D03846414600F08EF8FF @@ -708,51 +708,51 @@ S31508002C0800F018F9285DFFF761FF012803D0384658 S31508002C18414600F06BF804F10104A1B2B142CCD3E5 S31508002C28BDE8F8833846414600F060F804F1010427 S31508002C38A2B2B242C1D3BDE8F88300BF10B50446B4 -S31508002C4840F21C73C2F200031878B0B940F220703B -S31508002C58C2F20000FFF720FF01283CD140F21C739E +S31508002C4840F26173C2F200031878B0B940F21C70FA +S31508002C58C2F20000FFF720FF01283CD140F2617359 S31508002C68C2F200034FF0010018704FF0000040F25E -S31508002C786471C2F20001087010BD40F26471C2F2B4 -S31508002C8800010A7802F1010240F22073C2F2000339 -S31508002C989818FFF701FF012820D140F26470C2F2A4 -S31508002CA80000017801F10101CAB2027040F22073EE +S31508002C786071C2F20001087010BD40F26071C2F2BC +S31508002C8800010A7802F1010240F21C73C2F200033D +S31508002C989818FFF701FF012820D140F26070C2F2A8 +S31508002CA80000017801F10101CAB2027040F21C73F2 S31508002CB8C2F200031878904213D120460A49FFF752 -S31508002CC823FB40F21C71C2F200014FF000020A70A1 +S31508002CC823FB40F26171C2F200014FF000020A705C S31508002CD84FF0010010BD4FF0000010BD4FF0000086 -S31508002CE810BD4FF0000010BD2107002008B540F2BE -S31508002CF86873C2F20003186040F26C70C2F20000F2 +S31508002CE810BD4FF0000010BD1D07002008B540F2C2 +S31508002CF86473C2F20003186040F26870C2F20000FA S31508002D08016000F097F8FCE708B500F08DF801288F -S31508002D1820D003F0CDF9E8B140F27073C2F200038F -S31508002D281878012816D1FFF7ADFE40F27471C2F281 -S31508002D3800010A6802F1320290420BD340F270731E -S31508002D48C2F200034FF00000187003F0BBF908B987 -S31508002D58FFF7C4FA08BD00BF08B540F27073C2F29F -S31508002D6800034FF001021A70FFF78CFE40F27471E7 +S31508002D1820D003F0A1F8E8B140F26C73C2F20003C0 +S31508002D281878012816D1FFF7ADFE40F27071C2F285 +S31508002D3800010A6802F1320290420BD340F26C7322 +S31508002D48C2F200034FF00000187003F08FF808B9B4 +S31508002D58FFF7C4FA08BD00BF08B540F26C73C2F2A3 +S31508002D6800034FF001021A70FFF78CFE40F27071EB S31508002D78C2F200010860FFF7C7FF08BD08B500F0F2 -S31508002D8857F8FFF755FEFFF731FE03F079F900F01B +S31508002D8857F8FFF755FEFFF731FE03F04DF800F048 S31508002D980FF8FFF7E1FF08BD08B500F04BF8FFF795 -S31508002DA85FFE03F0ADF900F01DF8FFF7ADFF08BDAB +S31508002DA85FFE03F0BFF900F01DF8FFF7ADFF08BD99 S31508002DB800B583B04FF0FF038DF804304FF00000DC -S31508002DC88DF8050000F04EF8FFF7A4FE40F278717A +S31508002DC88DF8050000F04EF8FFF7A4FE40F274717E S31508002DD8C2F200010A78012A02D101A800F066F8B1 -S31508002DE803B000BD08B540F27C70C2F20000FFF7D8 -S31508002DF825FF012805D140F27C70C2F2000000F0D8 +S31508002DE803B000BD08B540F27870C2F20000FFF7DC +S31508002DF825FF012805D140F27870C2F2000000F0DC S31508002E0855F808BD704700BF08B5C9B2FFF7A4FE54 -S31508002E1800F042F808BD00BF40F27873C2F200031A +S31508002E1800F042F808BD00BF40F27473C2F200031E S31508002E284FF001021A70704708B500F02BF808BD74 -S31508002E38704700BF704700BF40F2BC73C2F2000378 -S31508002E484FF000025A70704740F2BC73C2F2000392 +S31508002E38704700BF704700BF40F2B873C2F200037C +S31508002E484FF000025A70704740F2B873C2F2000396 S31508002E584FF0FE02DA7018714FF00200A3F844002A -S31508002E68704700BF40F2BC73C2F200034FF000027D +S31508002E68704700BF40F2B873C2F200034FF0000281 S31508002E781A709A6483F84320A3F844209A705A7003 -S31508002E88704700BF40F2BC73C2F2000318780030DE -S31508002E9818BF0120704700BF40F2BC73C2F2000396 +S31508002E88704700BF40F2B873C2F2000318780030E2 +S31508002E9818BF0120704700BF40F2B873C2F200039A S31508002EA84FF0000283F84320704700BF38B5044640 -S31508002EB80378FF2B25D103F0FBF820B94FF0100053 -S31508002EC8FFF7C2FFC7E1FFF7B7FF40F2BC73C2F2CC +S31508002EB80378FF2B25D102F0CFFF20B94FF0100079 +S31508002EC8FFF7C2FFC7E1FFF7B7FF40F2B873C2F2D0 S31508002ED800034FF001021A704FF0FF00D8704FF048 S31508002EE8100119714FF0000159714FF0400098719F S31508002EF8D87119725A729A724FF00802A3F84420C8 -S31508002F08A9E140F2BC72C2F200021078012840F02A +S31508002F08A9E140F2B872C2F200021078012840F02E S31508002F18BC81A3F1C903352B00F29981DFE813F0C8 S31508002F28FD009701970192019701970184011E01F7 S31508002F386A0154019701970197019701970197012B @@ -761,53 +761,53 @@ S31508002F58970197019701970197019701970197019B S31508002F68970197019701970197019701970197018B S31508002F78970197018200540036007400970197015B S31508002F889701B9009701D300D800EC0062783F2A68 -S31508002F9804D94FF02200FFF757FF5CE140F2BC75F1 +S31508002F9804D94FF02200FFF757FF5CE140F2B875F5 S31508002FA8C2F2000505F10400A96CFFF7ADF94FF068 S31508002FB8FF00E8706178AB6CCA18AA64607800F1FB S31508002FC80100A5F8440046E161783F2904D94FF085 -S31508002FD82200FFF739FF3EE1616840F2BC75C2F28C +S31508002FD82200FFF739FF3EE1616840F2B875C2F290 S31508002FE80005A96405F104006278FFF78DF94FF02A S31508002FF8FF03EB706278A86C1118A964637803F16B -S315080030080103A5F8443026E140F2BC70C2F200007C +S315080030080103A5F8443026E140F2B870C2F2000080 S315080030184FF0FF01C170636883644FF00102A0F89E -S31508003028442018E140F2BC70C2F200004FF0FF02DB +S31508003028442018E140F2B870C2F200004FF0FF02DF S31508003038C270836C6468C4B1E4186FEA030108199E S3150800304800F0010213F8011BA34240F01F810EE0AD S315080030581A4612F8010B09185B7853FA81F0C1B2BF S3150800306802F10103A342F3D101E04FF0000140F257 -S31508003078BC73C2F20003C3F807104FF001021A71B5 +S31508003078B873C2F20003C3F807104FF001021A71B9 S315080030884FF00001597199714FF00800A3F84400F0 -S31508003098E1E040F2BC70C2F200004FF0FF03C370D3 -S315080030A846F64C02C0F6000282644FF00001017130 +S31508003098E1E040F2B870C2F200004FF0FF03C370D7 +S315080030A846F67002C0F6000282644FF0000101710C S315080030B8417181714FF00703C0F807304FF00802D5 S315080030C8A0F84420C7E04FF00000FFF7BDFEC2E0B5 -S315080030D840F2BC70C2F200004FF0FF01C1704FF019 +S315080030D840F2B870C2F200004FF0FF01C1704FF01D S315080030E800030371427842718371C37103724FF00A -S315080030F80601A0F84410AEE040F2BC74C2F200041F +S315080030F80601A0F84410AEE040F2B874C2F2000423 S315080031084FF000012170FFF797FE4FF0FF03E370B9 -S315080031184FF00102A4F844209DE040F2BC73C2F2C5 +S315080031184FF00102A4F844209DE040F2B873C2F2C9 S315080031280003986C4FF03F0104F10102FFF762FCB7 -S3150800313820B94FF03100FFF787FE8CE040F2BC70EB +S3150800313820B94FF03100FFF787FE8CE040F2B870EF S31508003148C2F200004FF0FF01C170826C02F13F0223 S3150800315882644FF00103A0F844307CE063783E2B84 -S3150800316804D94FF02200FFF76FFE74E040F2BC70F6 +S3150800316804D94FF02200FFF76FFE74E040F2B870FA S31508003178C2F200004FF0FF01C1704FF00102A0F83B S315080031884420617841B9FFF741FC002863D14FF024 -S315080031983100FFF759FE5EE040F2BC73C2F2000345 +S315080031983100FFF759FE5EE040F2B873C2F2000349 S315080031A8986C04F10202FFF725FC20B94FF03100AC -S315080031B8FFF74AFE4FE040F2BC70C2F200006178A1 -S315080031C8826C8B18836446E040F2BC73C2F2000333 +S315080031B8FFF74AFE4FE040F2B870C2F200006178A5 +S315080031C8826C8B18836446E040F2B873C2F2000337 S315080031D84FF0FF02DA704FF00000187158714FF07F S315080031E840019971D871187258724FF00702A3F8FE -S315080031F8442030E040F2BC73C2F20003986C616860 +S315080031F8442030E040F2B873C2F20003986C616864 S31508003208FFF7FCFB20B94FF03100FFF71DFE22E05F -S3150800321840F2BC70C2F200004FF0FF01C1704FF0D7 -S315080032280102A0F8442016E0FFF79EF840F2BC70A9 +S3150800321840F2B870C2F200004FF0FF01C1704FF0DB +S315080032280102A0F8442016E0FFF79EF840F2B870AD S31508003238C2F200004FF0FF01C1704FF00102A0F87A S31508003248442008E04FF03100FFF7FEFD03E04FF099 -S315080032582000FFF7F9FD40F2BC73C2F2000393F8A9 +S315080032582000FFF7F9FD40F2B873C2F2000393F8AD S315080032684310012903D14FF01000FFF7EDFD40F296 -S31508003278BC73C2F200034FF0010083F8430003F160 +S31508003278B873C2F200034FF0010083F8430003F164 S315080032880300B3F84410FFF7BFFD38BD002A3FF422 S31508003298DFAE13F8010B0918C9B2A3427FF4D8AEFA S315080032A8E5E600BF10B4E2B182186FEA0004131904 @@ -852,7 +852,7 @@ S31508003508030010BD4FF0020010BD4FF0000010BDBB S315080035182DE9F041154603681C78A4F13004092CF6 S3150800352800F2E5815A783A2A40F0E18103F102036C S3150800353803604FF000030B60002C40F08C8140F6C6 -S315080035480C24C2F200042468002C00F088810C6060 +S315080035480824C2F200042468002C00F088810C6064 S31508003558217889B16078FEF7DFF810F0010F0BD1F2 S31508003568002D00F0808100F00401C8B2002814BFBD S315080035780A200020BDE8F0814FF000002070607036 @@ -912,7 +912,7 @@ S315080038C80D00BDE8F0814FF00D00BDE8F0814FF01E S315080038D80D00BDE8F0814FF00D00BDE8F0814FF00E S315080038E80D00BDE8F0814FF00D00BDE8F0814FF0FE S315080038F80000086023E603F10203A3612562EF19B5 -S3150800390867625619E6624FF00306F3E6080A0020CE +S3150800390867625619E6624FF00306F3E6040A0020D2 S315080039182DE9F0410C4601F109020369002B00F074 S31508003928E28043691E7B1978202900F08A800529D8 S3150800393814BF0A46E52206F0080505F0FF0135B169 @@ -1138,8 +1138,8 @@ S315080046E82DE9F04F87B001908B460B782F2B01D018 S315080046F85C2B01D10BF1010B4FF000000199886082 S315080047089BF800201F2A0AD808464FF00001FFF731 S31508004718AFFB02464FF0000301994B6198E146F654 -S315080047285404C0F60004039446F66006C0F600066C -S31508004738049646F66803C0F6000305935E461BF81A +S315080047287804C0F60004039446F68406C0F6000624 +S31508004738049646F68C03C0F6000305935E461BF8F6 S31508004748010B2F28FAD05C28F8D00199CA69029279 S3150800475830781F2840F256812F2800F045815C28BA S3150800476800F047811746A7F1020735464FF00104BE @@ -1296,7 +1296,7 @@ S315080050C800D022B905F10105AF4201D191E0454664 S315080050D820463146FFF720F881460028E5D0A2E0A9 S315080050E8E088C31B204699B2FEF7C2FE814600280F S315080050F840F09980A069FEF743F901904FF000083F -S315080051084FF6FF7546F6E806C0F6000620682169D8 +S315080051084FF6FF7546F60C16C0F6000620682169A4 S31508005118FEF78EFD8146002840F08580D4F81C905D S3150800512861695FFA87FB019A4A734FF00F00C872E4 S3150800513881F80C8081F81A8081F81B800BF1FF33FF @@ -1318,13 +1318,13 @@ S3150800522881460028CAD0484607B0BDE8F08F05F180 S315080052380105ADB2384603A932462B46FFF722FECA S315080052482046FFF711F8814600287FF4F1AE05F1EC S315080052580105ADB2642D7FF4CCAEE6E6A0B940F6FA -S315080052680C23C2F20003186810B14FF0000202704E -S3150800527811B14FF000030B7040F60C20C2F2000083 +S315080052680823C2F20003186810B14FF00002027052 +S3150800527811B14FF000030B7040F60820C2F2000087 S3150800528801604FF0000070474FF00B00704700BFF1 S315080052982DE9F0438FB0019116460546002800F01F S315080052A8A5804FF00003036001A805A902F01E02B5 S315080052B8FEF72EF90446002840F0B78006F01F08C6 -S315080052C802A80B9040F60801C2F200010C9105A845 +S315080052C802A80B9040F60401C2F200010C9105A849 S315080052D80199FFF705FA0A9F0146002840F08F80D2 S315080052E8002F40F0868088E059B1042940F0928062 S315080052F805A8FFF767FE48F008080A9F50B1044654 @@ -1450,12 +1450,12 @@ S31508005A687F03A3714FF001070CE0A561A368E268FC S31508005A78934207D9E360A17941F02000A07101E0BB S31508005A884FF002073846F8BD30B58FB00EAB43F86D S31508005A98340D0D46184605A94FF00002FDF738FDE6 -S31508005AA80446A8B902A80B9040F60801C2F20001FC +S31508005AA80446A8B902A80B9040F60401C2F2000100 S31508005AB80C9105A80199FEF713FE044640B90A9AFF S31508005AC822B105A82946FDF723FF01E04FF0060491 S31508005AD820460FB030BD00BF30B599B018AB43F8B3 S31508005AE85C0D18460FA94FF00102FDF711FD024695 -S31508005AF8002857D103A8159040F60801C2F20001FC +S31508005AF8002857D103A8159040F60401C2F2000100 S31508005B0816910FA80199FEF7EBFD0246002849D120 S31508005B18149959B3CC7A14F0010F2AD12CE0012D27 S31508005B2834D906A80FA94FF02402FDF7BBFB089540 @@ -1481,314 +1481,317 @@ S31508005C5800043146FFF7DAFFB0F1FF3F09D004F137 S31508005C68010415F8010F0028F3D104E04FF00004E9 S31508005C7801E04FF0FF34204670BD00BF7F282DD9BC S31508005C8811B9C7280BD121E0FF2825D8A0F1800033 -S31508005C9846F6D822C0F6000232F8100070474FF0D0 -S31508005CA8010346F6D822C0F6000232F8021F8142DE +S31508005C9846F6FC22C0F6000232F8100070474FF0AC +S31508005CA8010346F6FC22C0F6000232F8021F8142BA S31508005CB815D10DE032F8021F814209D003F101031C S31508005CC89BB232F8021F81420DD101E04FF0000362 S31508005CD803F18000C0B270474FF00000704703F127 S31508005CE801039BB2E6E703F101039BB2802BE1D1DE -S31508005CF8EEE700BF61280ED046F6F801C0F60001A7 +S31508005CF8EEE700BF61280ED046F61C11C0F6000173 S31508005D084FF0000202F1010231F8023F5BB183420B -S31508005D18F8D113B970474FF0000246F6D830C0F6E6 +S31508005D18F8D113B970474FF0000246F6FC30C0F6C2 S31508005D28000030F81200704730B402464CF6CD44ED S31508005D38CCF6CC4401F10101A4FB0223DA08F9D117 S31508005D484FF0000501F8015902464CF6CD45CCF648 S31508005D58CC450846A5FB02434FEAD30303EB830465 S31508005D68A2EB440202F1300201F801291A46002B77 S31508005D78EFD130BC704700BF38B50546007800F04B -S31508005D8821FCC0B2A0F13004E4B2162C20D8A0F148 +S31508005D8833FCC0B2A0F13004E4B2162C20D8A0F136 S31508005D983A02D1B206291ED9092C84BFA0F13704C4 -S31508005DA8E4B2687800F00EFCC0B2A0F13003D9B2AC +S31508005DA8E4B2687800F020FCC0B2A0F13003D9B29A S31508005DB8162913D8A0F13A02D3B2062B11D9092904 S31508005DC884BFA0F13701C9B201EB0414E0B238BDAB S31508005DD84FF0000038BD4FF0000038BD4FF0000006 S31508005DE838BD4FF0000038BD08B500F00F03092884 -S31508005DF802D903F1370008BD03F1300000F0E2FBD1 +S31508005DF802D903F1370008BD03F1300000F0F4FBBF S31508005E08C0B208BD38B505460C464FEA1010FFF76C S31508005E18EBFF207005F00F00FFF7E6FF60704FF004 -S31508005E280003A370204638BD2DE9F04F85B080469B -S31508005E381646894601B138B946F6B850C0F6000084 -S31508005E484FF41671FCF752FF98F8000000F0BAFBF9 -S31508005E58532840F0DA8098F8010000F0ABFB0028D8 -S31508005E6800F0D38098F80130312B00F0D180322B1E -S31508005E7800F0D180332B40F0C880CFE02046FFF7EA -S31508005E887BFF3918CFB205F1FF3204F1020495B247 -S31508005E982046FFF771FF3B18DFB205F1FF3085B2E0 -S31508005EA804F10204012DE9D82046FFF765FF6FEAD9 -S31508005EB80701CFB2874240F0A180BAF1010F32D06C -S31508005EC8BAF1000F04D0BAF1020F40F09A805CE0EC -S31508005ED80198FFF751FF05460298FFF74DFF4FEA6D -S31508005EE80024C9F8004008F10600FFF745FF231803 -S31508005EF8C9F8003008F10808A5F10305ADB2002E67 -S31508005F0800F081802FB2002F7DDD4FF00004404657 -S31508005F18FFF732FF305508F1020804F10104A4B26C -S31508005F28BC42F4DB6FE00198FFF726FF05460298A6 -S31508005F38FFF722FF4FEA0044C9F8004008F10600B7 -S31508005F48FFF71AFF04EB0024C9F8004008F1080017 -S31508005F58FFF712FF2018C9F8000008F10A08A5F18A -S31508005F680405ADB2002E4ED02FB2002F4BDD4FF0F0 -S31508005F7800044046FFF700FF305508F1020804F10F -S31508005F880104A4B2BC42F4DB3DE00198FFF7F4FE35 -S31508005F9805460298FFF7F0FE4FEA0064C9F8004084 -S31508005FA808F10600FFF7E8FE04EB0044C9F80040CC -S31508005FB808F10800FFF7E0FE04EB0024C9F80040E2 -S31508005FC808F10A00FFF7D8FE2218C9F8002008F1D8 -S31508005FD80C08A5F10505ADB2AEB12FB2002F12DD3A -S31508005FE84FF000044046FFF7C7FE305508F102088F -S31508005FF804F10104A4B2BC42F4DB04E04FF6FF75D1 -S3150800600801E04FF0000528B224E04FF00005FAE752 -S315080060184FF0000A04E04FF0010A01E04FF0020AC7 -S3150800602808F102000190FFF7A7FE044608F10401EB -S315080060380291039100F0010B0846FFF79DFE22180E -S31508006048D7B204F1FF339DB2039C04F10204012D73 -S3150800605803D829E705B0BDE8F08F0FFA8BF00028BA -S315080060683FF40CAF2046FFF787FE3F18FFB205F14D -S31508006078FF35ADB204F10204012D3FF6FFAE13E772 -S3150800608808B54FF0000040F65023C2F20003187016 -S3150800609840F65C21C2F20001FFF7E0F838B146F68F -S315080060A8B850C0F600004FF09E01FCF71FFE08BD69 -S315080060B840F65023C2F200031878D0F1010038BF21 -S315080060C80020704708B5FCF7AFFE01280FD040F648 -S315080060D85023C2F20003187860B9FCF703F80128C0 -S315080060E80BD140F65021C2F20001087008BD4FF0E6 -S315080060F8000008BD4FF0000008BD4FF0000008BDBD -S3150800610870B540F65023C2F200031878002800F04C -S315080061184D82012843D1FCF70FF846F62C60C0F6E5 -S315080061280000FCF757F846F65060C0F60000FCF782 -S3150800613851F8FBF7FBFF0146C6484FF00102FFF787 -S31508006148A7F850B146F67860C0F60000FCF742F8A2 -S315080061584FF00100FCF72EF870BD46F68060C0F6D1 -S315080061680000FCF737F846F68860C0F60000FCF72A -S3150800617831F846F6AC60C0F60000FCF72BF840F696 -S315080061885423C2F200034FF000021A605A6040F620 -S315080061985020C2F200004FF00201017070BD0228BB -S315080061A840F0088140F65C24C2F2000440F6B46068 -S315080061B8C2F200004FF4807104F50D72FFF7F6FC81 -S315080061C894F93A12002915DA46F67860C0F60000FE -S315080061D8FCF700F84FF00200FBF7ECFF04F50D702A -S315080061E8FFF768FB40F65020C2F200004FF00001A6 -S315080061F8017070BD18B340F6B466C2F200063046A0 -S3150800620806F5C0714FF00002FFF70EFE0646B0F11C -S31508006218FF3F14D146F67860C0F60000FBF7DAFFB0 -S315080062284FF00300FBF7C6FF8A48FFF743FB40F623 -S315080062385023C2F200034FF000021A7070BD32B242 -S31508006248002A2CDD40F65423C2F20003586868B9C0 -S3150800625840F65421C2F2000140F6B463C2F20003C4 -S31508006268D3F88001086036B24E6018E040F6B4618B -S31508006278C2F20001D1F8802140F65423C2F2000385 -S3150800628819688A4204D240F65423C2F200031A60F7 -S3150800629800FA86F040F65422C2F20002506040F630 -S315080062A85C21C2F20001D1F83C22D1F840329A4268 -S315080062B840F07C8167484FF00001FFF707FBA0B163 -S315080062C846F67860C0F60000FBF784FF4FF0040036 -S315080062D8FBF770FF5F48FFF7EDFA40F65020C2F269 -S315080062E800004FF00001017070BD46F68060C0F6E8 -S315080062F80000FBF76FFF46F6DC60C0F60000FBF708 -S3150800630869FF40F65424C2F2000440F61025C2F28A -S31508006318000560682946FFF707FD2846FBF75AFF78 -S3150800632846F6E860C0F60000FBF754FFE078294611 -S31508006338FFF768FDA07805F10201FFF763FD6078AD -S3150800634805F10401FFF75EFD207805F10601FFF760 -S3150800635859FD2846FBF73EFF46F68C70C0F6000046 -S31508006368FBF738FF20686168FCF748FBA0B946F6D2 -S315080063787860C0F60000FBF72DFF4FF00500FBF725 -S3150800638819FF3448FFF796FA40F65023C2F200037D -S315080063984FF000021A7070BD46F68060C0F600001D -S315080063A8FBF718FF40F65020C2F200004FF0030131 -S315080063B8017070BD032840F0F98040F65C24C2F2EB -S315080063C8000440F6B460C2F200004FF4807104F588 -S315080063D80D72FFF7EBFB94F93A12002915DA46F61F -S315080063E80470C0F60000FBF7F5FE4FF00200FBF755 -S315080063F8E1FE04F50D70FFF75DFA40F65023C2F288 -S3150800640800034FF00000187070BD28B340F6B46258 -S31508006418C2F20002104602F5C07102F58072FFF753 -S3150800642803FD0546B0F1FF3F16D146F62870C0F6BB -S315080064380000FBF7CFFE4FF00300FBF7BBFE05484D -S31508006448FFF738FA40F65021C2F200014FF0000271 -S315080064580A7070BD900C00202BB2002B5EDD46F644 -S315080064684C70C0F60000FBF7B5FE2EB240F61024B5 -S31508006478C2F2000430462146FFF756FC2046FBF7D1 -S31508006488A9FE46F65C70C0F60000FBF7A3FE40F6C8 -S31508006498B465C2F2000595F883012146FFF7B2FCF8 -S315080064A895F8820104F10201FFF7ACFC95F8810121 -S315080064B804F10401FFF7A6FC95F8800104F106012A -S315080064C8FFF7A0FC2046FBF785FE46F68C70C0F65B -S315080064D80000FBF77FFED5F88001314605F5807286 -S315080064E8FCF788FAA0B946F67860C0F60000FBF70C -S315080064F871FE4FF00600FBF75DFE2D48FFF7DAF947 -S3150800650840F65023C2F200034FF00000187070BD21 -S3150800651846F68060C0F60000FBF75CFE40F65C2095 -S31508006528C2F20000D0F83C12D0F8402291423DD180 -S3150800653846F67470C0F60000FBF74CFEFCF766FAE0 -S31508006548A0B946F67860C0F60000FBF743FE4FF0A0 -S315080065580700FBF72FFE1648FFF7ACF940F650215F -S31508006568C2F200014FF000020A7070BD46F680605C -S31508006578C0F60000FBF72EFE46F69070C0F600003F -S31508006588FBF728FE0A48FFF795F946F6A870C0F6FD -S315080065980000FBF71FFE40F65023C2F200034FF037 -S315080065A800001870FBF7E4FDFBF798FE70BD00BF06 -S315080065B8900C0020A0F1300009288CBF002001208B -S315080065C8704700BFA0F16103D9B2192998BF2038CE -S315080065D8704700BF844640EA010313F0030F40F0F2 -S315080065E81080242AC0F00D802DE9F00FB1E8F80FC5 -S315080065F8A0E8F80FA2F12402242ABFF4F7AFBDE8F1 -S31508006608F00F002A00F0078011F8013B00F8013B5B -S31508006618013A7FF4F9AF6046704700BF38B50446BB -S315080066280D4600F019F841F23803C2F200031D605E -S3150800663844F0800441F23C00C2F2000004600246BD -S3150800664811680029FCD100F009F841F23803C2F2B2 -S315080066580003186838BD00BF704700BF704700BF01 -S315080066682F64656D6F70726F675F6F6C696D65789B -S315080066785F73746D3332653430372E737265630011 -S315080066882F626F6F746C6F672E7478740000000041 -S31508006698433A2F576F726B2F736F667477617265FB -S315080066A82F4F70656E424C542F5461726765742F6C -S315080066B844656D6F2F41524D434D345F53544D33E6 -S315080066C8325F4F6C696D65785F53544D3332453484 -S315080066D830375F43726F7373776F726B732F426FBE -S315080066E86F742F6964652F2E2E2F2E2E2F2E2E2F80 -S315080066F82E2E2F536F757263652F41524D434D34B5 -S315080067085F53544D33322F43726F7373776F726BBF -S31508006718732F766563746F72732E63000000080022 -S3150800672810001800200028003000380040004800F3 -S31508006738500058008000880090009800A000A80023 -S31508006748B000B800C000C800D000D8000080000813 -S31508006758004000000200000000C0000800400000D9 -S315080067680300000000000108000001000400000002 -S3150800677800000208000002000500000000000408E6 -S3150800678800000200060000000000060800000200DB -S3150800679807000000000008080000020008000000C2 -S315080067A800000A08000002000900000000000C08A2 -S315080067B8000002000A00000000000E08000002009F -S315080067C80B000000433A2F576F726B2F736F66746E -S315080067D8776172652F4F70656E424C542F546172FB -S315080067E86765742F44656D6F2F41524D434D345F6D -S315080067F853544D33325F4F6C696D65785F53544D0A -S315080068083332453430375F43726F7373776F726B01 -S31508006818732F426F6F742F6964652F2E2E2F2E2EB5 -S315080068282F2E2E2F2E2E2F536F757263652F4152DA -S315080068384D434D345F53544D33322F756172742E60 -S31508006848630000004F70656E424C5400222A3A3C99 -S315080068583E3F7C7F000000002B2C3B3D5B5D000023 -S31508006868809A90418E418F804545454949498E8F82 -S315080068789092924F994F555559999A9B9C9D9E9FD0 -S3150800688841494F55A5A5A6A7A8A9AAABAC21AEAF5D -S31508006898B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF6A -S315080068A8C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF5A -S315080068B8D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF4A -S315080068C8E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF3A -S315080068D8F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF2A -S315080068E801030507090E10121416181C1E000000CD -S315080068F8610062006300640065006600670068005E -S3150800690869006A006B006C006D006E006F0070000D -S3150800691871007200730074007500760077007800BD -S3150800692879007A00A100A200A300A500AC00AF0078 -S31508006938E000E100E200E300E400E500E600E70025 -S31508006948E800E900EA00EB00EC00ED00EE00EF00D5 -S31508006958F000F100F200F300F400F500F600F80084 -S31508006968F900FA00FB00FC00FD00FE00FF0001012B -S3150800697803010501070109010B010D010F011101A9 -S3150800698813011501170119011B011D011F01210119 -S3150800699823012501270129012B012D012F01310189 -S315080069A83301350137013A013C013E0140014201F4 -S315080069B84401460148014B014D014F01510153015C -S315080069C85501570159015B015D015F0161016301C9 -S315080069D86501670169016B016D016F017101730139 -S315080069E8750177017A017C017E019201B103B20330 -S315080069F8B303B403B503B603B703B803B903BA03B5 -S31508006A08BB03BC03BD03BE03BF03C003C103C30363 -S31508006A18C403C503C603C703C803C903CA033004A6 -S31508006A28310432043304340435043604370438048C -S31508006A3839043A043B043C043D043E043F0440043C -S31508006A4841044204430444044504460447044804EC -S31508006A5849044A044B044C044D044E044F0451049B -S31508006A685204530454045504560457045804590444 -S31508006A785A045B045C045E045F0470217121722168 -S31508006A8873217421752176217721782179217A2134 -S31508006A987B217C217D217E217F2141FF42FF43FF07 -S31508006AA844FF45FF46FF47FF48FF49FF4AFF4BFF9C -S31508006AB84CFF4DFF4EFF4FFF50FF51FF52FF53FF4C -S31508006AC854FF55FF56FF57FF58FF59FF5AFF000056 -S31508006AD8C700FC00E900E200E400E000E500E70082 -S31508006AE8EA00EB00E800EF00EE00EC00C400C50081 -S31508006AF8C900E600C600F400F600F200FB00F9003B -S31508006B08FF00D600DC00A200A300A500A72092017A -S31508006B18E100ED00F300FA00F100D100AA00BA007E -S31508006B28BF001023AC00BD00BC00A100AB00BB0031 -S31508006B389125922593250225242561256225562522 -S31508006B4855256325512557255D255C255B25102583 -S31508006B58142534252C251C2500253C255E255F256E -S31508006B685A25542569256625602550256C256725E7 -S31508006B7868256425652559255825522553256B25E5 -S31508006B886A2518250C25882584258C259025802591 -S31508006B98B103DF009303C003A303C303B500C4030B -S31508006BA8A6039803A903B4031E22C603B50329221C -S31508006BB86122B1006522642220232123F700482296 -S31508006BC8B0001922B7001A227F20B200A025A0001B -S31508006BD8410042004300440045004600470048007B -S31508006BE849004A004B004C004D004E004F0050002B -S31508006BF851005200530054005500560057005800DB -S31508006C0859005A002100E0FFE1FFE5FFE2FFE3FF34 -S31508006C18C000C100C200C300C400C500C600C70042 -S31508006C28C800C900CA00CB00CC00CD00CE00CF00F2 -S31508006C38D000D100D200D300D400D500D600D800A1 -S31508006C48D900DA00DB00DC00DD00DE00780100018F -S31508006C5802010401060108010A010C010E011001CE -S31508006C6812011401160118011A011C011E0120013E -S31508006C7822012401260128012A012C012E013001AE -S31508006C8832013401360139013B013D013F01410119 -S31508006C984301450147014A014C014E015001520181 -S31508006CA85401560158015A015C015E0160016201EE -S31508006CB86401660168016A016C016E01700172015E -S31508006CC87401760179017B017D0191019103920393 -S31508006CD893039403950396039703980399039A03D2 -S31508006CE89B039C039D039E039F03A003A103A30381 -S31508006CF8A403A503A603A703A803A903AA031004C4 -S31508006D0811041204130414041504160417041804A9 -S31508006D1819041A041B041C041D041E041F04200459 -S31508006D282104220423042404250426042704280409 -S31508006D3829042A042B042C042D042E042F040104E8 -S31508006D4802040304040405040604070408040904E1 -S31508006D580A040B040C040E040F0460216121622145 -S31508006D6863216421652166216721682169216A21D1 -S31508006D786B216C216D216E216F2121FF22FF23FFD4 -S31508006D8824FF25FF26FF27FF28FF29FF2AFF2BFFB9 -S31508006D982CFF2DFF2EFF2FFF30FF31FF32FF33FF69 -S31508006DA834FF35FF36FF37FF38FF39FF3AFF000053 -S31508006DB8433A2F576F726B2F736F667477617265D4 -S31508006DC82F4F70656E424C542F5461726765742F45 -S31508006DD844656D6F2F41524D434D345F53544D33BF -S31508006DE8325F4F6C696D65785F53544D333245345D -S31508006DF830375F43726F7373776F726B732F426F97 -S31508006E086F742F6964652F2E2E2F2E2E2F2E2E2F58 -S31508006E182E2E2F536F757263652F66696C652E6300 -S31508006E28000000004669726D7761726520757064A6 -S31508006E386174652072657175657374206465746517 -S31508006E48637465640A0D00004F70656E696E672085 -S31508006E586669726D776172652066696C6520666F0A -S31508006E68722072656164696E672E2E2E0000000016 -S31508006E784552524F520A0D004F4B0A0D00000000AA -S31508006E885374617274696E67207468652070726FCE -S31508006E986772616D6D696E672073657175656E6376 -S31508006EA8650A0D0050617273696E67206669726DAE -S31508006EB8776172652066696C6520746F206F6274E5 -S31508006EC861696E2065726173652073697A652E2E0D -S31508006ED82E00000045726173696E67200000000085 -S31508006EE82062797465732066726F6D206D656D6FA3 -S31508006EF87279206174203078000000005265616458 -S31508006F08696E67206C696E652066726F6D206669A2 -S31508006F186C652E2E2E4552524F520A0D000000005F -S31508006F28496E76616C696420636865636B73756D11 -S31508006F3820666F756E642E2E2E4552524F520A0DD4 -S31508006F480000000050726F6772616D6D696E672088 -S31508006F580000000020627974657320746F206D65DF -S31508006F686D6F7279206174203078000057726974E1 -S31508006F78696E672070726F6772616D2063686563F2 -S31508006F886B73756D2E2E2E00436C6F73696E6720B2 -S31508006F986669726D776172652066696C650A0D00A7 -S31508006FA84669726D776172652075706461746520CB -S31508006FB87375636365737366756C6C7920636F6D37 -S31108006FC8706C657465640A0D000000001A -S31508006FD40100000001000000000000000102030493 -S30D08006FE401020304060708096F +S31508005E280003A370204638BD08B54FF0000040F6B9 +S31508005E384C23C2F20003187040F65821C2F200013A +S31508005E48FFF70CFA38B146F6DC50C0F600004FF0FA +S31508005E587C01FCF74BFF08BD40F64C23C2F2000351 +S31508005E681878D0F1010038BF0020704708B5FCF74C +S31508005E78DBFF01280FD040F64C23C2F2000318783E +S31508005E8860B9FCF72FF901280BD140F64C21C2F26C +S31508005E980001087008BD4FF0000008BD4FF000006B +S31508005EA808BD4FF0000008BD10B50446007800F09C +S31508005EB89BFB53280DD1607800F08EFB60B16078A3 +S31508005EC831280CD032280DD0332814BF03200220DD +S31508005ED810BD4FF0030010BD4FF0030010BD4FF082 +S31508005EE8000010BD4FF0010010BD00BFF8B504460C +S31508005EF800F10200FFF740FF0646054604F10404D0 +S31508005F0800F001072046FFF737FF3018C6B205F13B +S31508005F18FF318DB204F10204012D21D815E020467F +S31508005F28FFF72AFF3018C6B205F1FF3504F1020457 +S31508005F38ADB22046FFF720FF3118CEB205F1FF3281 +S31508005F4895B204F10204012DE9D82046FFF714FF9B +S31508005F586FEA0603DEB2864214BF00200120F8BDA8 +S31508005F683FB2002FDBD02046FFF706FF3218D6B21D +S31508005F7805F1FF339DB204F10204012DCFD8E4E7F9 +S31508005F882DE9F04104461546884601B138B946F662 +S31508005F98DC50C0F6000040F23621FCF7A7FE204682 +S31508005FA8FFF782FF0646032800F0B0802046FFF771 +S31508005FB89DFF002800F0AD80012E34D01EB1022EB8 +S31508005FC840F0AA8065E004F10200FFF7D5FE07460F +S31508005FD804F10400FFF7D0FE4FEA0026C8F800606F +S31508005FE804F10600FFF7C8FE3118C8F8001004F1D6 +S31508005FF80804A7F10307BFB2002D00F08F800FFA37 +S3150800600887F8B8F1000F40F389804FF0000620465C +S31508006018FFF7B2FEA85504F1020406F10106B6B266 +S315080060284645F4DB7AE004F10200FFF7A5FE0746C9 +S3150800603804F10400FFF7A0FE4FEA0046C8F800601E +S3150800604804F10600FFF798FE06EB0026C8F800607C +S3150800605804F10800FFF790FE3218C8F8002004F18A +S315080060680A04A7F10407BFB2002D57D00FFA87F81C +S31508006078B8F1000F52DD4FF000062046FFF77CFE08 +S31508006088A85504F1020406F10106B6B24645F4DB42 +S3150800609844E004F10200FFF76FFE074604F1040026 +S315080060A8FFF76AFE4FEA0066C8F8006004F10600C2 +S315080060B8FFF762FE06EB0046C8F8006004F1080020 +S315080060C8FFF75AFE06EB0026C8F8006004F10A0036 +S315080060D8FFF752FE3018C8F8000004F10C04A7F1BF +S315080060E80507BFB2D5B10FFA87F8B8F1000F15DD65 +S315080060F84FF000062046FFF73FFEA85504F10204B4 +S3150800610806F10106B6B24645F4DB07E04FF000078C +S3150800611804E04FF6FF7701E04FF0000738B2BDE814 +S31508006128F08100BF70B540F64C23C2F20003187818 +S31508006138002800F04D82012843D1FBF7FDFF46F6FB +S315080061485060C0F60000FCF745F846F67460C0F6DD +S315080061580000FCF73FF8FBF7E9FF0146C6484FF091 +S315080061680102FFF795F850B146F69C60C0F60000A4 +S31508006178FCF730F84FF00100FCF71CF870BD46F63E +S31508006188A460C0F60000FCF725F846F6AC60C0F631 +S315080061980000FCF71FF846F6D060C0F60000FCF7CA +S315080061A819F840F65023C2F200034FF000021A60AD +S315080061B85A6040F64C20C2F200004FF00201017006 +S315080061C870BD022840F0088140F65824C2F200043F +S315080061D840F6B060C2F200004FF4807104F50D7203 +S315080061E8FFF7E4FC94F93A12002915DA46F69C609A +S315080061F8C0F60000FBF7EEFF4FF00200FBF7DAFFE8 +S3150800620804F50D70FFF756FB40F64C20C2F2000065 +S315080062184FF00001017070BD18B340F6B066C2F2BF +S315080062280006304606F5C0714FF00002FFF7A8FED3 +S315080062380646B0F1FF3F14D146F69C60C0F600004A +S31508006248FBF7C8FF4FF00300FBF7B4FF8A48FFF7D0 +S3150800625831FB40F64C23C2F200034FF000021A70D5 +S3150800626870BD32B2002A2CDD40F65023C2F2000374 +S31508006278586868B940F65021C2F2000140F6B06382 +S31508006288C2F20003D3F88001086036B24E6018E0FF +S3150800629840F6B061C2F20001D1F8802140F65023D9 +S315080062A8C2F2000319688A4204D240F65023C2F2A1 +S315080062B800031A6000FA86F040F65022C2F200027D +S315080062C8506040F65821C2F20001D1F83C22D1F8B4 +S315080062D840329A4240F07C8167484FF00001FFF748 +S315080062E8F5FAA0B146F69C60C0F60000FBF772FF07 +S315080062F84FF00400FBF75EFF5F48FFF7DBFA40F64E +S315080063084C20C2F200004FF00001017070BD46F63D +S31508006318A460C0F60000FBF75DFF46F60070C0F6FD +S315080063280000FBF757FF40F65024C2F2000440F677 +S315080063380C25C2F2000560682946FFF7F5FC2846D1 +S31508006348FBF748FF46F60C70C0F60000FBF742FF5D +S31508006358E0782946FFF756FDA07805F10201FFF710 +S3150800636851FD607805F10401FFF74CFD207805F129 +S315080063780601FFF747FD2846FBF72CFF46F6B070DF +S31508006388C0F60000FBF726FF20686168FCF736FBB5 +S31508006398A0B946F69C60C0F60000FBF71BFF4FF055 +S315080063A80500FBF707FF3448FFF784FA40F64C2345 +S315080063B8C2F200034FF000021A7070BD46F6A460D8 +S315080063C8C0F60000FBF706FF40F64C20C2F20000B4 +S315080063D84FF00301017070BD032840F0F98040F6BC +S315080063E85824C2F2000440F6B060C2F200004FF426 +S315080063F8807104F50D72FFF7D9FB94F93A12002952 +S3150800640815DA46F62870C0F60000FBF7E3FE4FF0EB +S315080064180200FBF7CFFE04F50D70FFF74BFA40F6BE +S315080064284C23C2F200034FF00000187070BD28B361 +S3150800643840F6B062C2F20002104602F5C07102F5D3 +S315080064488072FFF79DFD0546B0F1FF3F16D146F667 +S315080064584C70C0F60000FBF7BDFE4FF00300FBF7D3 +S31508006468A9FE0548FFF726FA40F64C21C2F20001B4 +S315080064784FF000020A7070BD8C0C00202BB2002B5E +S315080064885EDD46F67070C0F60000FBF7A3FE2EB276 +S3150800649840F60C24C2F2000430462146FFF744FCB5 +S315080064A82046FBF797FE46F68070C0F60000FBF715 +S315080064B891FE40F6B065C2F2000595F883012146BB +S315080064C8FFF7A0FC95F8820104F10201FFF79AFC90 +S315080064D895F8810104F10401FFF794FC95F8800109 +S315080064E804F10601FFF78EFC2046FBF773FE46F615 +S315080064F8B070C0F60000FBF76DFED5F8800131468E +S3150800650805F58072FCF776FAA0B946F69C60C0F6DF +S315080065180000FBF75FFE4FF00600FBF74BFE2D4821 +S31508006528FFF7C8F940F64C23C2F200034FF0000003 +S31508006538187070BD46F6A460C0F60000FBF74AFE60 +S3150800654840F65820C2F20000D0F83C12D0F8402293 +S3150800655891423DD146F69870C0F60000FBF73AFE20 +S31508006568FCF754FAA0B946F69C60C0F60000FBF79B +S3150800657831FE4FF00700FBF71DFE1648FFF79AF99C +S3150800658840F64C21C2F200014FF000020A7070BDB5 +S3150800659846F6A460C0F60000FBF71CFE46F6B47083 +S315080065A8C0F60000FBF716FE0A48FFF783F946F619 +S315080065B8CC70C0F60000FBF70DFE40F64C23C2F27D +S315080065C800034FF000001870FBF7D2FDFBF786FEB4 +S315080065D870BD00BF8C0C0020A0F1300009288CBFC4 +S315080065E800200120704700BFA0F16103D9B219291C +S315080065F898BF2038704700BF844640EA010313F065 +S31508006608030F40F01080242AC0F00D802DE9F00F02 +S31508006618B1E8F80FA0E8F80FA2F12402242ABFF47B +S31508006628F7AFBDE8F00F002A00F0078011F8013B24 +S3150800663800F8013B013A7FF4F9AF6046704700BF9E +S3150800664838B504460D4600F019F841F23403C2F28B +S3150800665800031D6044F0800441F23800C2F20000CD +S315080066680460024611680029FCD100F009F841F2D5 +S315080066783403C2F20003186838BD00BF704700BF6C +S30908006688704700BF8A +S3150800668C2F64656D6F70726F675F6F6C696D657877 +S3150800669C5F73746D3332653430372E7372656300ED +S315080066AC2F626F6F746C6F672E747874000000001D +S315080066BC433A2F576F726B2F736F667477617265D7 +S315080066CC2F4F70656E424C542F5461726765742F48 +S315080066DC44656D6F2F41524D434D345F53544D33C2 +S315080066EC325F4F6C696D65785F53544D3332453460 +S315080066FC30375F43726F7373776F726B732F426F9A +S3150800670C6F742F6964652F2E2E2F2E2E2F2E2E2F5B +S3150800671C2E2E2F536F757263652F41524D434D3490 +S3150800672C5F53544D33322F43726F7373776F726B9B +S3150800673C732F766563746F72732E630000000800FE +S3150800674C10001800200028003000380040004800CF +S3150800675C500058008000880090009800A000A800FF +S3150800676CB000B800C000C800D000D80000800008EF +S3150800677C004000000200000000C0000800400000B5 +S3150800678C03000000000001080000010004000000DE +S3150800679C00000208000002000500000000000408C2 +S315080067AC00000200060000000000060800000200B7 +S315080067BC070000000000080800000200080000009E +S315080067CC00000A08000002000900000000000C087E +S315080067DC000002000A00000000000E08000002007B +S315080067EC0B000000433A2F576F726B2F736F66744A +S315080067FC776172652F4F70656E424C542F546172D7 +S3150800680C6765742F44656D6F2F41524D434D345F48 +S3150800681C53544D33325F4F6C696D65785F53544DE5 +S3150800682C3332453430375F43726F7373776F726BDD +S3150800683C732F426F6F742F6964652F2E2E2F2E2E91 +S3150800684C2F2E2E2F2E2E2F536F757263652F4152B6 +S3150800685C4D434D345F53544D33322F756172742E3C +S3150800686C630000004F70656E424C5400222A3A3C75 +S3150800687C3E3F7C7F000000002B2C3B3D5B5D0000FF +S3150800688C809A90418E418F804545454949498E8F5E +S3150800689C9092924F994F555559999A9B9C9D9E9FAC +S315080068AC41494F55A5A5A6A7A8A9AAABAC21AEAF39 +S315080068BCB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF46 +S315080068CCC0C1C2C3C4C5C6C7C8C9CACBCCCDCECF36 +S315080068DCD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF26 +S315080068ECE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF16 +S315080068FCF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF06 +S3150800690C01030507090E10121416181C1E000000A8 +S3150800691C6100620063006400650066006700680039 +S3150800692C69006A006B006C006D006E006F007000E9 +S3150800693C7100720073007400750076007700780099 +S3150800694C79007A00A100A200A300A500AC00AF0054 +S3150800695CE000E100E200E300E400E500E600E70001 +S3150800696CE800E900EA00EB00EC00ED00EE00EF00B1 +S3150800697CF000F100F200F300F400F500F600F80060 +S3150800698CF900FA00FB00FC00FD00FE00FF00010107 +S3150800699C03010501070109010B010D010F01110185 +S315080069AC13011501170119011B011D011F012101F5 +S315080069BC23012501270129012B012D012F01310165 +S315080069CC3301350137013A013C013E0140014201D0 +S315080069DC4401460148014B014D014F015101530138 +S315080069EC5501570159015B015D015F0161016301A5 +S315080069FC6501670169016B016D016F017101730115 +S31508006A0C750177017A017C017E019201B103B2030B +S31508006A1CB303B403B503B603B703B803B903BA0390 +S31508006A2CBB03BC03BD03BE03BF03C003C103C3033F +S31508006A3CC403C503C603C703C803C903CA03300482 +S31508006A4C3104320433043404350436043704380468 +S31508006A5C39043A043B043C043D043E043F04400418 +S31508006A6C41044204430444044504460447044804C8 +S31508006A7C49044A044B044C044D044E044F04510477 +S31508006A8C5204530454045504560457045804590420 +S31508006A9C5A045B045C045E045F0470217121722144 +S31508006AAC73217421752176217721782179217A2110 +S31508006ABC7B217C217D217E217F2141FF42FF43FFE3 +S31508006ACC44FF45FF46FF47FF48FF49FF4AFF4BFF78 +S31508006ADC4CFF4DFF4EFF4FFF50FF51FF52FF53FF28 +S31508006AEC54FF55FF56FF57FF58FF59FF5AFF000032 +S31508006AFCC700FC00E900E200E400E000E500E7005E +S31508006B0CEA00EB00E800EF00EE00EC00C400C5005C +S31508006B1CC900E600C600F400F600F200FB00F90016 +S31508006B2CFF00D600DC00A200A300A500A720920156 +S31508006B3CE100ED00F300FA00F100D100AA00BA005A +S31508006B4CBF001023AC00BD00BC00A100AB00BB000D +S31508006B5C91259225932502252425612562255625FE +S31508006B6C55256325512557255D255C255B2510255F +S31508006B7C142534252C251C2500253C255E255F254A +S31508006B8C5A25542569256625602550256C256725C3 +S31508006B9C68256425652559255825522553256B25C1 +S31508006BAC6A2518250C25882584258C25902580256D +S31508006BBCB103DF009303C003A303C303B500C403E7 +S31508006BCCA6039803A903B4031E22C603B5032922F8 +S31508006BDC6122B1006522642220232123F700482272 +S31508006BECB0001922B7001A227F20B200A025A000F7 +S31508006BFC4100420043004400450046004700480057 +S31508006C0C49004A004B004C004D004E004F00500006 +S31508006C1C51005200530054005500560057005800B6 +S31508006C2C59005A002100E0FFE1FFE5FFE2FFE3FF10 +S31508006C3CC000C100C200C300C400C500C600C7001E +S31508006C4CC800C900CA00CB00CC00CD00CE00CF00CE +S31508006C5CD000D100D200D300D400D500D600D8007D +S31508006C6CD900DA00DB00DC00DD00DE00780100016B +S31508006C7C02010401060108010A010C010E011001AA +S31508006C8C12011401160118011A011C011E0120011A +S31508006C9C22012401260128012A012C012E0130018A +S31508006CAC32013401360139013B013D013F014101F5 +S31508006CBC4301450147014A014C014E01500152015D +S31508006CCC5401560158015A015C015E0160016201CA +S31508006CDC6401660168016A016C016E01700172013A +S31508006CEC7401760179017B017D019101910392036F +S31508006CFC93039403950396039703980399039A03AE +S31508006D0C9B039C039D039E039F03A003A103A3035C +S31508006D1CA403A503A603A703A803A903AA0310049F +S31508006D2C1104120413041404150416041704180485 +S31508006D3C19041A041B041C041D041E041F04200435 +S31508006D4C21042204230424042504260427042804E5 +S31508006D5C29042A042B042C042D042E042F040104C4 +S31508006D6C02040304040405040604070408040904BD +S31508006D7C0A040B040C040E040F0460216121622121 +S31508006D8C63216421652166216721682169216A21AD +S31508006D9C6B216C216D216E216F2121FF22FF23FFB0 +S31508006DAC24FF25FF26FF27FF28FF29FF2AFF2BFF95 +S31508006DBC2CFF2DFF2EFF2FFF30FF31FF32FF33FF45 +S31508006DCC34FF35FF36FF37FF38FF39FF3AFF00002F +S31508006DDC433A2F576F726B2F736F667477617265B0 +S31508006DEC2F4F70656E424C542F5461726765742F21 +S31508006DFC44656D6F2F41524D434D345F53544D339B +S31508006E0C325F4F6C696D65785F53544D3332453438 +S31508006E1C30375F43726F7373776F726B732F426F72 +S31508006E2C6F742F6964652F2E2E2F2E2E2F2E2E2F34 +S31508006E3C2E2E2F536F757263652F66696C652E63DC +S31508006E4C000000004669726D776172652075706482 +S31508006E5C61746520726571756573742064657465F3 +S31508006E6C637465640A0D00004F70656E696E672061 +S31508006E7C6669726D776172652066696C6520666FE6 +S31508006E8C722072656164696E672E2E2E00000000F2 +S31508006E9C4552524F520A0D004F4B0A0D0000000086 +S31508006EAC5374617274696E67207468652070726FAA +S31508006EBC6772616D6D696E672073657175656E6352 +S31508006ECC650A0D0050617273696E67206669726D8A +S31508006EDC776172652066696C6520746F206F6274C1 +S31508006EEC61696E2065726173652073697A652E2EE9 +S31508006EFC2E00000045726173696E67200000000061 +S31508006F0C2062797465732066726F6D206D656D6F7E +S31508006F1C7279206174203078000000005265616433 +S31508006F2C696E67206C696E652066726F6D2066697E +S31508006F3C6C652E2E2E4552524F520A0D000000003B +S31508006F4C496E76616C696420636865636B73756DED +S31508006F5C20666F756E642E2E2E4552524F520A0DB0 +S31508006F6C0000000050726F6772616D6D696E672064 +S31508006F7C0000000020627974657320746F206D65BB +S31508006F8C6D6F7279206174203078000057726974BD +S31508006F9C696E672070726F6772616D2063686563CE +S31508006FAC6B73756D2E2E2E00436C6F73696E67208E +S31508006FBC6669726D776172652066696C650A0D0083 +S31508006FCC4669726D776172652075706461746520A7 +S31508006FDC7375636365737366756C6C7920636F6D13 +S31108006FEC706C657465640A0D00000000F6 +S31508006FF8010000000100000000000000010203046F +S30D0800700801020304060708094A S70508000217D9 diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/blt_conf.h b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/blt_conf.h index af48480c..129cee01 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/blt_conf.h +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/blt_conf.h @@ -61,6 +61,33 @@ /**************************************************************************************** * C O M M U N I C A T I O N I N T E R F A C E C O N F I G U R A T I O N ****************************************************************************************/ +/* The CAN communication interface is selected by setting the BOOT_COM_CAN_ENABLE + * configurable to 1. Configurable BOOT_COM_CAN_BAUDRATE selects the communication speed + * in bits/second. Two CAN messages are reserved for communication with the host. The + * message identifier for sending data from the target to the host is configured with + * BOOT_COM_CAN_TXMSG_ID. The one for receiving data from the host is configured with + * BOOT_COM_CAN_RXMSG_ID. The maximum amount of data bytes in a message for data + * transmission and reception is set through BOOT_COM_CAN_TX_MAX_DATA and + * BOOT_COM_CAN_RX_MAX_DATA, respectively. It is common for a microcontroller to have more + * than 1 CAN controller on board. The zero-based BOOT_COM_CAN_CHANNEL_INDEX selects the + * CAN controller channel. + * + */ +/** \brief Enable/disable CAN transport layer. */ +#define BOOT_COM_CAN_ENABLE (0) +/** \brief Configure the desired CAN baudrate. */ +#define BOOT_COM_CAN_BAUDRATE (500000) +/** \brief Configure CAN message ID target->host. */ +#define BOOT_COM_CAN_TX_MSG_ID (0x7E1) +/** \brief Configure number of bytes in the target->host CAN message. */ +#define BOOT_COM_CAN_TX_MAX_DATA (8) +/** \brief Configure CAN message ID host->target. */ +#define BOOT_COM_CAN_RX_MSG_ID (0x667) +/** \brief Configure number of bytes in the host->target CAN message. */ +#define BOOT_COM_CAN_RX_MAX_DATA (8) +/** \brief Select the desired CAN peripheral as a zero based index. */ +#define BOOT_COM_CAN_CHANNEL_INDEX (1) + /* The UART communication interface is selected by setting the BOOT_COM_UART_ENABLE * configurable to 1. Configurable BOOT_COM_UART_BAUDRATE selects the communication speed * in bits/second. The maximum amount of data bytes in a message for data transmission diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/ide/stm32f407_crossworks.hzp b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/ide/stm32f407_crossworks.hzp index d6fecfb5..710c6b8f 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/ide/stm32f407_crossworks.hzp +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/ide/stm32f407_crossworks.hzp @@ -102,6 +102,8 @@ + + diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/ide/stm32f407_crossworks.hzs b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/ide/stm32f407_crossworks.hzs index 80916529..968089fa 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/ide/stm32f407_crossworks.hzs +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/ide/stm32f407_crossworks.hzs @@ -63,7 +63,8 @@ - + + - + diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/main.c b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/main.c index 6f40c218..430f685d 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/main.c +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Boot/main.c @@ -79,6 +79,8 @@ static void Init(void) #elif (BOOT_FILE_SYS_ENABLE > 0) GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; +#elif (BOOT_COM_CAN_ENABLE > 0) + GPIO_InitTypeDef GPIO_InitStructure; #endif /* disable all interrupts to prevent possible jump back to the user program */ @@ -134,6 +136,24 @@ static void Init(void) /* enable UART */ USART_Cmd(USART6, ENABLE); #endif +#if (BOOT_COM_CAN_ENABLE > 0) + /* enable clocks for CAN2 transmitter and receiver pins */ + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); + /* select alternate function for the CAN2 pins */ + GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_CAN2); + GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_CAN2); + /* configure CAN2 RX and TX pins */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* enable CAN clock. Note that CAN2 shares reception filters with CAN1 so for CAN2 + * the CAN1 peripheral also needs to be enabled. + */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2 | RCC_APB1Periph_CAN1, ENABLE); +#endif } /*** end of Init ***/ diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Prog/boot.c b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Prog/boot.c index 6c6be2f0..da1a9c5f 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Prog/boot.c @@ -182,4 +182,184 @@ static unsigned char UartReceiveByte(unsigned char *data) #endif /* BOOT_COM_UART_ENABLE > 0 */ +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +/** \brief Structure type for grouping CAN bus timing related information. */ +typedef struct t_can_bus_timing +{ + unsigned char tseg1; /**< CAN time segment 1 */ + unsigned char tseg2; /**< CAN time segment 2 */ +} tCanBusTiming; + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/** \brief CAN bittiming table for dynamically calculating the bittiming settings. + * \details According to the CAN protocol 1 bit-time can be made up of between 8..25 + * time quanta (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC + * always being 1. The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * + * 100%. This array contains possible and valid time quanta configurations with + * a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/************************************************************************************//** +** \brief Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** \param baud The desired baudrate in kbps. Valid values are 10..1000. +** \param prescaler Pointer to where the value for the prescaler will be stored. +** \param tseg1 Pointer to where the value for TSEG2 will be stored. +** \param tseg2 Pointer to where the value for TSEG2 will be stored. +** \return 1 if the CAN bustiming register values were found, 0 otherwise. +** +****************************************************************************************/ +static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned short *prescaler, + unsigned char *tseg1, unsigned char *tseg2) +{ + unsigned char cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/4) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/4)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return 1; + } + } + } + /* could not find a good bus timing configuration */ + return 0; +} /*** end of CanGetSpeedConfig ***/ + + +/************************************************************************************//** +** \brief Initializes the CAN communication interface. +** \return none. +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + CAN_InitTypeDef CAN_InitStructure; + CAN_FilterInitTypeDef CAN_FilterInitStructure; + unsigned short prescaler; + unsigned char tseg1, tseg2; + + /* enable clocks for CAN2 transmitter and receiver pins */ + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); + /* select alternate function for the CAN2 pins */ + GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_CAN2); + GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_CAN2); + /* configure CAN2 RX and TX pins */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* enable CAN clock. Note that CAN2 shares reception filters with CAN1 so for CAN2 + * the CAN1 peripheral also needs to be enabled. + */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2 | RCC_APB1Periph_CAN1, ENABLE); + /* CAN register init */ + CAN_DeInit(CAN2); + CAN_StructInit(&CAN_InitStructure); + /* obtain the bittiming configuration for this baudrate */ + CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + /* CAN controller init */ + CAN_InitStructure.CAN_TTCM = DISABLE; + CAN_InitStructure.CAN_ABOM = DISABLE; + CAN_InitStructure.CAN_AWUM = DISABLE; + CAN_InitStructure.CAN_NART = DISABLE; + CAN_InitStructure.CAN_RFLM = DISABLE; + CAN_InitStructure.CAN_TXFP = DISABLE; + CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; + /* CAN Baudrate init */ + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + CAN_InitStructure.CAN_BS1 = tseg1 - 1; + CAN_InitStructure.CAN_BS2 = tseg2 - 1; + CAN_InitStructure.CAN_Prescaler = prescaler; + CAN_Init(CAN2, &CAN_InitStructure); + /* CAN filter init - receive all messages */ + CAN_FilterInitStructure.CAN_FilterNumber = 14; + CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; + CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; + CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; + CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; + CAN_FilterInit(&CAN_FilterInitStructure); +} /*** end of BootComInit ***/ + + +/************************************************************************************//** +** \brief Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** \return none. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + CanRxMsg RxMessage; + + /* check if a new message was received */ + if (CAN_MessagePending(CAN2, CAN_FIFO0) > 0) + { + /* receive the message */ + CAN_Receive(CAN2, CAN_FIFO0, &RxMessage); + if (RxMessage.StdId == BOOT_COM_CAN_RX_MSG_ID) + { + /* check if this was an XCP CONNECT command */ + if ((RxMessage.Data[0] == 0xff) && (RxMessage.Data[1] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + /*********************************** end of boot.c *************************************/ diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Prog/ide/stm32f407_crossworks.hzs b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Prog/ide/stm32f407_crossworks.hzs index aab4cc60..324f7084 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Prog/ide/stm32f407_crossworks.hzs +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_Crossworks/Prog/ide/stm32f407_crossworks.hzs @@ -50,9 +50,9 @@ - - + + @@ -65,8 +65,8 @@ - - + + diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/bin/openbtl_olimex_stm32e407.elf b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/bin/openbtl_olimex_stm32e407.elf index 71751e95fc982389d15bc9e85c3b40efde12e3e9..a0cdf7723110b957ba523328cfe59ee7b12498de 100644 GIT binary patch delta 22185 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�D?Sg z`aS5Ps8pO6s@L3Oni2=AXDiG?yi)vE1>S(yTPF!qFNU_@*2-Nc-{z7ob7HjfM zv%Nd+HAB={k5eNYzs4JD?IJqyBLe|`PPBWnDN-!=EHm90R$_ITWp*?clvt&J?#(5p z$hQ_zbiTrR9<1*9b4;-qFP?b{`2soT0f%@v3SR{4&;DmjalHDMS!S4wYu*;6XaR+O zR`eV*HO_vc%nCMpqcw1jIVz`l)06`5?8RJX6UDBjYA+9Nsy2PX+B?TQ6R-Zy5gLOU z-t`Ln4e{2wSVnTIKc8#9{lhXdV8m@ye;P=M6upqhjn#|( zfQ382d{tma)phWGS}i4-ru?zr$+@(I%J+xRtk1P3RGx@kR@0Po?Q!VQf())aT7eGh zuoY^Wa&C>9rhF`J|20kd+7O!ZKU!@cF;n6`MLYR}`h2h?M$bR3;g4W*d&Qa#sd3q~ z9(lxUCtcR2N6b_iXT1y1A&mph`MAV|CYo%IU#a7r1`@^Dp39xw2(AYre`vLeyGIY9DsbC_4wl$ zRY$E&k7HDw2Io9}Waz>i)}v}gbFYhYkn4{gr`)o%#eYNo3uta(y3^ZW+tPA2f!mm- zo1mY@ZOzsXs3wgKQBXMvq1nW>AvEQD2+{^A7uc6HO*wZ%O;f($cQk)2XUhYoh{ey{ z$QTR`GtdDve>{i9E|?M0b_G-Phn&Bq3zd`BaynGM1yl^X&+4#6+n;Drg8KU7%59m^r>hbPU{A?HKP z&@A_M+l;Li8?rr7&b>ZVo>6LLtuR|px(zP-q4^vqdI05PySG2lV)lOsY2EK^wZWM{ z>o5GBKATu>ZCQZ>!h_bwD==g$q4Cz$_WesdeEu)!mY9XS{2=`j=)r?P9{#wj#B(7$4aRz;XpW=s4d_N}o`q6X($Hfu4c}Wa6*wmBL9d#v|qH zoD7@;Jrfc8oeDpJUV=e4$DtcRuf%ypXP_;T?e2+}W{$iw=p{yQkcr`-7ln+0v7l!T z6yBr!(LW=c2*$%mF@U0{0BOW#rU%_@&}}iObQjzYI?q|AVzJEe&-&M6mN=tYJPP__ z(0v?xPl4wDMX0-EE$C;NG5A*wUj`!@5$Zv-9dt7KkUIebd>iz5EYw3C`hC#DF^zUQ z^yi@0gf!rvpckS3&yM^8XutZ$L1~Ihpi8d8MZV8bxB^Chv~ZY1w+Kgs2&l*zgnrQ7 zA=lF`8}t&;x(f>=FkpUg>e$Z2}ux)VazYls3 z{<109$KQg{0sryKV~)ak&==6c3WvS|`q=@^DR<*Xnrkp?^ejmL{Z|A~=ID01vUvSm2(yFfQ0Bf7;4K<~mVsdMBHfc|SI z`?syk=%b*gppV~hx}*}c8}^qu`uvXu0wXX@bV}a>qeEPCg(INx@$)Md2a*$%W7-sf zrh`vGj|f@$z5?AH0c(5bK_3fiZt*41D?=LC6oL8o1+OCkWE52H99ge>iAl#}85kTnu^J01zT|N%)Y8?A- zfS!&n%y#S@41j_EU?@24@E0)xtDCpNiSQz6%yZr65g5)Zv2@OH3?zd7*EP-SLVM7m z3sYy%y+g)KKIk~C{Y6gwKp_~(Sef+7Rt9<(DrovH(9thXGYkpLn_NAIN_uMsW((Kvf=T@(J4nOn{Uda9SvaWhxm02L; d^i5vywyxT>-t1;1Xnym}-=yjuFPK}5{{wo>8!`X@ delta 21593 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 qO`p54host. */ +#define BOOT_COM_CAN_TX_MSG_ID (0x7E1) +/** \brief Configure number of bytes in the target->host CAN message. */ +#define BOOT_COM_CAN_TX_MAX_DATA (8) +/** \brief Configure CAN message ID host->target. */ +#define BOOT_COM_CAN_RX_MSG_ID (0x667) +/** \brief Configure number of bytes in the host->target CAN message. */ +#define BOOT_COM_CAN_RX_MAX_DATA (8) +/** \brief Select the desired CAN peripheral as a zero based index. */ +#define BOOT_COM_CAN_CHANNEL_INDEX (1) + /* The UART communication interface is selected by setting the BOOT_COM_UART_ENABLE * configurable to 1. Configurable BOOT_COM_UART_BAUDRATE selects the communication speed * in bits/second. The maximum amount of data bytes in a message for data transmission diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/ide/DemoBoot.project b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/ide/DemoBoot.project index da15e695..e1656684 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/ide/DemoBoot.project +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/ide/DemoBoot.project @@ -229,6 +229,16 @@ continue + + + + + + + + + + diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/main.c b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/main.c index 74e3697e..2f41b3b0 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/main.c +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/main.c @@ -79,6 +79,8 @@ static void Init(void) #elif (BOOT_FILE_SYS_ENABLE > 0) GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; +#elif (BOOT_COM_CAN_ENABLE > 0) + GPIO_InitTypeDef GPIO_InitStructure; #endif /* disable all interrupts to prevent possible jump back to the user program */ @@ -134,6 +136,24 @@ static void Init(void) /* enable UART */ USART_Cmd(USART6, ENABLE); #endif +#if (BOOT_COM_CAN_ENABLE > 0) + /* enable clocks for CAN2 transmitter and receiver pins */ + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); + /* select alternate function for the CAN2 pins */ + GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_CAN2); + GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_CAN2); + /* configure CAN2 RX and TX pins */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* enable CAN clock. Note that CAN2 shares reception filters with CAN1 so for CAN2 + * the CAN1 peripheral also needs to be enabled. + */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2 | RCC_APB1Periph_CAN1, ENABLE); +#endif } /*** end of Init ***/ diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/makefile b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/makefile index bbd0078e..82519436 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/makefile +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Boot/makefile @@ -126,6 +126,8 @@ main.c \ ../../../Source/assert.h \ ../../../Source/plausibility.h \ ../../../Source/ARMCM4_STM32/types.h \ +../../../Source/ARMCM4_STM32/can.c \ +../../../Source/ARMCM4_STM32/can.h \ ../../../Source/ARMCM4_STM32/cpu.c \ ../../../Source/ARMCM4_STM32/cpu.h \ ../../../Source/ARMCM4_STM32/flash.c \ diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Prog/boot.c b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Prog/boot.c index edaa0fbd..96988f60 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_GCC/Prog/boot.c @@ -182,4 +182,184 @@ static unsigned char UartReceiveByte(unsigned char *data) #endif /* BOOT_COM_UART_ENABLE > 0 */ +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +/** \brief Structure type for grouping CAN bus timing related information. */ +typedef struct t_can_bus_timing +{ + unsigned char tseg1; /**< CAN time segment 1 */ + unsigned char tseg2; /**< CAN time segment 2 */ +} tCanBusTiming; + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/** \brief CAN bittiming table for dynamically calculating the bittiming settings. + * \details According to the CAN protocol 1 bit-time can be made up of between 8..25 + * time quanta (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC + * always being 1. The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * + * 100%. This array contains possible and valid time quanta configurations with + * a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/************************************************************************************//** +** \brief Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** \param baud The desired baudrate in kbps. Valid values are 10..1000. +** \param prescaler Pointer to where the value for the prescaler will be stored. +** \param tseg1 Pointer to where the value for TSEG2 will be stored. +** \param tseg2 Pointer to where the value for TSEG2 will be stored. +** \return 1 if the CAN bustiming register values were found, 0 otherwise. +** +****************************************************************************************/ +static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned short *prescaler, + unsigned char *tseg1, unsigned char *tseg2) +{ + unsigned char cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/4) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/4)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return 1; + } + } + } + /* could not find a good bus timing configuration */ + return 0; +} /*** end of CanGetSpeedConfig ***/ + + +/************************************************************************************//** +** \brief Initializes the CAN communication interface. +** \return none. +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + CAN_InitTypeDef CAN_InitStructure; + CAN_FilterInitTypeDef CAN_FilterInitStructure; + unsigned short prescaler; + unsigned char tseg1, tseg2; + + /* enable clocks for CAN2 transmitter and receiver pins */ + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); + /* select alternate function for the CAN2 pins */ + GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_CAN2); + GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_CAN2); + /* configure CAN2 RX and TX pins */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* enable CAN clock. Note that CAN2 shares reception filters with CAN1 so for CAN2 + * the CAN1 peripheral also needs to be enabled. + */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2 | RCC_APB1Periph_CAN1, ENABLE); + /* CAN register init */ + CAN_DeInit(CAN2); + CAN_StructInit(&CAN_InitStructure); + /* obtain the bittiming configuration for this baudrate */ + CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + /* CAN controller init */ + CAN_InitStructure.CAN_TTCM = DISABLE; + CAN_InitStructure.CAN_ABOM = DISABLE; + CAN_InitStructure.CAN_AWUM = DISABLE; + CAN_InitStructure.CAN_NART = DISABLE; + CAN_InitStructure.CAN_RFLM = DISABLE; + CAN_InitStructure.CAN_TXFP = DISABLE; + CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; + /* CAN Baudrate init */ + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + CAN_InitStructure.CAN_BS1 = tseg1 - 1; + CAN_InitStructure.CAN_BS2 = tseg2 - 1; + CAN_InitStructure.CAN_Prescaler = prescaler; + CAN_Init(CAN2, &CAN_InitStructure); + /* CAN filter init - receive all messages */ + CAN_FilterInitStructure.CAN_FilterNumber = 14; + CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; + CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; + CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; + CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; + CAN_FilterInit(&CAN_FilterInitStructure); +} /*** end of BootComInit ***/ + + +/************************************************************************************//** +** \brief Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** \return none. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + CanRxMsg RxMessage; + + /* check if a new message was received */ + if (CAN_MessagePending(CAN2, CAN_FIFO0) > 0) + { + /* receive the message */ + CAN_Receive(CAN2, CAN_FIFO0, &RxMessage); + if (RxMessage.StdId == BOOT_COM_CAN_RX_MSG_ID) + { + /* check if this was an XCP CONNECT command */ + if ((RxMessage.Data[0] == 0xff) && (RxMessage.Data[1] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + /*********************************** end of boot.c *************************************/ diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/bin/openbtl_olimex_stm32e407.out b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/bin/openbtl_olimex_stm32e407.out index 14eefae5d37da7d1d9182ee081da55909c2783f4..0d4d7a88e530648b4002c67e43f31eff26cecf23 100644 GIT binary patch delta 38852 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 diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/bin/openbtl_olimex_stm32e407.srec b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/bin/openbtl_olimex_stm32e407.srec index a1c6f9f5..f642a6cb 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/bin/openbtl_olimex_stm32e407.srec +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/bin/openbtl_olimex_stm32e407.srec @@ -1055,7 +1055,7 @@ S315080041B8022B44BF0B7803707047083A07D3B1E857 S315080041C80810083A40F8043B40F804CBF7D25307DE S315080041D8E4E7FF0010B5DFF8D00600210170DFF824 S315080041E8CC160020FDF7DEFB0400E4B2002C04D050 -S315080041F89E21DFF8BC0600F0F7FB10BDDFF8A8061D +S315080041F87C21DFF8BC0600F0F7FB10BDDFF8A8063F S315080042080078002801D1012000E00020704780B519 S3150800421800F02EFC012801D1002011E0DFF88806FD S315080042280078002801D000200AE000F025FC0128C3 @@ -1135,7 +1135,7 @@ S315080046B800F070F90500AE19A41C200000F06AF98C S315080046C8801906006D1EA41CADB2022DF5DAF6B2E5 S315080046D8F643200000F05EF9F6B2864201D00020C3 S315080046E800E0012070BD2DE9F84F82460C00150040 -S315080046F80027002C02D0BAF1000F04D14FF4167126 +S315080046F80027002C02D0BAF1000F04D140F2362167 S315080047086B4800F071F95046FFF7AEFF0600F6B29F S31508004718032E01D10020C4E05046FFF7C4FF002845 S3150800472802D15FF0FF30BCE0F6B2002E03D0022EAD diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/blt_conf.h b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/blt_conf.h index 9937b9a1..f07aad89 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/blt_conf.h +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/blt_conf.h @@ -63,6 +63,33 @@ /**************************************************************************************** * C O M M U N I C A T I O N I N T E R F A C E C O N F I G U R A T I O N ****************************************************************************************/ +/* The CAN communication interface is selected by setting the BOOT_COM_CAN_ENABLE + * configurable to 1. Configurable BOOT_COM_CAN_BAUDRATE selects the communication speed + * in bits/second. Two CAN messages are reserved for communication with the host. The + * message identifier for sending data from the target to the host is configured with + * BOOT_COM_CAN_TXMSG_ID. The one for receiving data from the host is configured with + * BOOT_COM_CAN_RXMSG_ID. The maximum amount of data bytes in a message for data + * transmission and reception is set through BOOT_COM_CAN_TX_MAX_DATA and + * BOOT_COM_CAN_RX_MAX_DATA, respectively. It is common for a microcontroller to have more + * than 1 CAN controller on board. The zero-based BOOT_COM_CAN_CHANNEL_INDEX selects the + * CAN controller channel. + * + */ +/** \brief Enable/disable CAN transport layer. */ +#define BOOT_COM_CAN_ENABLE (0) +/** \brief Configure the desired CAN baudrate. */ +#define BOOT_COM_CAN_BAUDRATE (500000) +/** \brief Configure CAN message ID target->host. */ +#define BOOT_COM_CAN_TX_MSG_ID (0x7E1) +/** \brief Configure number of bytes in the target->host CAN message. */ +#define BOOT_COM_CAN_TX_MAX_DATA (8) +/** \brief Configure CAN message ID host->target. */ +#define BOOT_COM_CAN_RX_MSG_ID (0x667) +/** \brief Configure number of bytes in the host->target CAN message. */ +#define BOOT_COM_CAN_RX_MAX_DATA (8) +/** \brief Select the desired CAN peripheral as a zero based index. */ +#define BOOT_COM_CAN_CHANNEL_INDEX (1) + /* The UART communication interface is selected by setting the BOOT_COM_UART_ENABLE * configurable to 1. Configurable BOOT_COM_UART_BAUDRATE selects the communication speed * in bits/second. The maximum amount of data bytes in a message for data transmission diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.dbgdt b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.dbgdt index 2c970dd9..0d886ade 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.dbgdt +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.dbgdt @@ -83,14 +83,14 @@ - TextEditor$WS_DIR$\..\main.c0000033290029000TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM4_STM32\flash.c000003151940619406TextEditor$WS_DIR$\..\config.h000005754055405TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM4_STM32\nvm.c0000014564796479TextEditor$WS_DIR$\..\lib\fatfs\mmc.c000005972781627816TextEditor$WS_DIR$\..\..\..\..\Source\fatfs\src\ff.c000003114111111111111TextEditor$WS_DIR$\..\..\..\..\Source\xcp.c000002161156011560TextEditor$WS_DIR$\..\..\..\..\Source\boot.c000003327982798TextEditor$WS_DIR$\..\..\..\..\Source\backdoor.c000008957995799TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM4_STM32\cpu.c000009152115211TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM4_STM32\timer.c000006341864186TextEditor$WS_DIR$\..\..\..\..\Source\file.c0000010859936018TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM4_STM32\uart.c0000014474897489TextEditor$WS_DIR$\..\..\..\..\Source\com.c0000013370857085TextEditor$WS_DIR$\..\hooks.c0000033916576166010100000010000001 + TextEditor$WS_DIR$\..\main.c0000033296329630TextEditor$WS_DIR$\..\blt_conf.h0000054338433840100000010000001 - iaridepm.enu1debuggergui.enu1-2-2741198-2-2200200104167198413104167737103-2-2741461-2-2200200104167198413241146737103-2-21981922-2-219242001002083198413104167198413 + iaridepm.enu1debuggergui.enu1-2-2741198-2-2200200104167198413104167737103-2-2741461-2-2200200104167198413241146737103-2-21981922-2-219242001002083198413104167198413 diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.dni b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.dni index 13bcaec1..130e2c90 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.dni +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.dni @@ -9,7 +9,7 @@ TriggerName=main LimitSize=0 ByteLimit=50 [DebugChecksum] -Checksum=-471197012 +Checksum=1695986847 [Exceptions] StopOnUncaught=_ 0 StopOnThrow=_ 0 diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.wsdt b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.wsdt index f59ec3d6..dda105f8 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.wsdt +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/settings/stm32f407.wsdt @@ -12,20 +12,20 @@ - 203272727 + 338272727 - 20139537293 + 200Find-in-Files20139537293 - 19027326 + 19027326200Build FileFunctionLine200700100300 @@ -42,36 +42,20 @@ - 0 - - - TabID-3456-10024 - Build - Build - - - - TabID-19098-11164 - Find in Files - Find-in-Files - - - - - 0 + 0TabID-19870-1384BuildBuild0 - TextEditor$WS_DIR$\..\main.c0000000000100000010000001 + TextEditor$WS_DIR$\..\main.c0000033296329630TextEditor$WS_DIR$\..\blt_conf.h0000054338433840100000010000001 - iaridepm.enu1-2-2778277-2-2135163104328198056215611947752-2-2778374-2-212971631002318198056290572947752 + iaridepm.enu1-2-2963412-2-2200200104167198413215625957341-2-2963420-2-2200200104167198413219792957341 diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/stm32f407.dep b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/stm32f407.dep index 248481a4..1957ebee 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/stm32f407.dep +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/stm32f407.dep @@ -2,7 +2,7 @@ 2 - 3754409461 + 2468415132 Debug @@ -73,19 +73,21 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_wwdg.h $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\Device\ST\STM32F4xx\Source\system_stm32f4xx.c $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h - $PROJ_DIR$\..\config.h + $PROJ_DIR$\..\blt_conf.h $PROJ_DIR$\..\hooks.c $PROJ_DIR$\..\main.c - $TOOLKIT_DIR$\inc\c\string.h + $TOOLKIT_DIR$\inc\c\DLib_Product_string.h $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\IAR\cstart.s $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\IAR\vectors.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\can.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\can.h $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\cpu.c $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\cpu.h $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\flash.c $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\flash.h - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\nvm.c $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\nvm.h + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\timer.c $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\timer.h $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\types.h @@ -110,28 +112,28 @@ $PROJ_DIR$\..\..\..\..\Source\plausibility.h $PROJ_DIR$\..\..\..\..\Source\xcp.c $PROJ_DIR$\..\..\..\..\Source\xcp.h - $PROJ_DIR$\..\obj\stm32f4xx_usart.pbi - $PROJ_DIR$\..\obj\uart.pbi - $TOOLKIT_DIR$\inc\c\DLib_Threads.h - $PROJ_DIR$\..\obj\stm32f4xx_sdio.pbi - $PROJ_DIR$\..\obj\stm32f4xx_wwdg.pbi - $PROJ_DIR$\..\bin\openbtl_olimex_stm32e407.srec - $PROJ_DIR$\..\obj\stm32f4xx_pwr.pbi - $TOOLKIT_DIR$\inc\c\cmsis_iar.h - $PROJ_DIR$\..\obj\stm32f4xx_rcc.pbi - $PROJ_DIR$\..\obj\stm32f4xx_pwr.o - $TOOLKIT_DIR$\inc\c\DLib_Product_string.h $PROJ_DIR$\..\obj\stm32f4xx_tim.o + $PROJ_DIR$\..\obj\uart.pbi $PROJ_DIR$\..\obj\stm32f4xx_usart.o + $PROJ_DIR$\..\obj\stm32f4xx_pwr.pbi + $PROJ_DIR$\..\bin\openbtl_olimex_stm32e407.srec + $PROJ_DIR$\..\obj\stm32f4xx_sdio.pbi + $TOOLKIT_DIR$\inc\c\cmsis_iar.h + $TOOLKIT_DIR$\inc\c\DLib_Threads.h + $PROJ_DIR$\..\obj\stm32f4xx_usart.pbi $PROJ_DIR$\..\obj\stm32f4xx_wwdg.o $PROJ_DIR$\..\obj\stm32f4xx_adc.pbi + $TOOLKIT_DIR$\inc\c\ycheck.h + $PROJ_DIR$\..\obj\stm32f4xx_pwr.o + $TOOLKIT_DIR$\inc\c\string.h + $PROJ_DIR$\..\obj\stm32f4xx_wwdg.pbi + $PROJ_DIR$\..\obj\stm32f4xx_rcc.pbi $PROJ_DIR$\..\obj\stm32f4xx_can.pbi $PROJ_DIR$\..\obj\stm32f4xx_crc.pbi $TOOLKIT_DIR$\inc\c\DLib_Defaults.h $TOOLKIT_DIR$\inc\c\stdint.h $PROJ_DIR$\..\obj\misc.pbi $PROJ_DIR$\..\obj\stm32f4xx_dac.pbi - $TOOLKIT_DIR$\inc\c\ycheck.h $TOOLKIT_DIR$\inc\c\DLib_Product.h $PROJ_DIR$\..\obj\stm32f4xx_exti.pbi $PROJ_DIR$\..\obj\stm32f4xx_iwdg.pbi @@ -227,7 +229,6 @@ $PROJ_DIR$\..\obj\stm32f4xx_cryp_des.lst $TOOLKIT_DIR$\lib\shb_l.a $PROJ_DIR$\..\obj\misc.lst - $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\IAR\memory.x $PROJ_DIR$\..\obj\stm32f4xx_syscfg.pbi $PROJ_DIR$\..\obj\stm32f4xx_hash_sha1.pbi $PROJ_DIR$\..\obj\stm32f4xx_cryp.lst @@ -235,6 +236,7 @@ $PROJ_DIR$\..\obj\stm32f4xx_adc.lst $PROJ_DIR$\..\obj\stm32f4xx_exti.lst $PROJ_DIR$\..\obj\stm32f4xx_dbgmcu.lst + $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\IAR\memory.x $PROJ_DIR$\..\obj\stm32f4xx_crc.lst $PROJ_DIR$\..\obj\stm32f4xx_dcmi.lst $PROJ_DIR$\..\obj\stm32f4xx_flash.lst @@ -280,7 +282,6 @@ $PROJ_DIR$\..\obj\stm32f4xx_rtc.pbi $PROJ_DIR$\..\obj\stm32f4xx_i2c.o $PROJ_DIR$\..\obj\stm32f4xx_syscfg.o - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\ccsbcs.c $PROJ_DIR$\..\obj\stm32f4xx_cryp_des.pbi $PROJ_DIR$\..\obj\stm32f4xx_cryp.pbi $PROJ_DIR$\..\obj\stm32f4xx_iwdg.o @@ -288,32 +289,44 @@ $PROJ_DIR$\..\obj\stm32f4xx_rcc.o $PROJ_DIR$\..\obj\stm32f4xx_flash.pbi $PROJ_DIR$\..\obj\stm32f4xx_rng.o + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\ccsbcs.c $PROJ_DIR$\..\obj\stm32f4xx_rtc.o $PROJ_DIR$\..\obj\stm32f4xx_sdio.o $PROJ_DIR$\..\obj\stm32f4xx_cryp_tdes.pbi $PROJ_DIR$\..\obj\stm32f4xx_spi.o - $PROJ_DIR$\..\blt_conf.h + $PROJ_DIR$\..\obj\can.pbi + $PROJ_DIR$\..\obj\can.o + $PROJ_DIR$\..\obj\can.lst + + [ROOT_NODE] + + + ILINK + 139 258 + + + $PROJ_DIR$\..\lib\fatfs\mmc.c - BICOMP - 262 + ICCARM + 260 263 - ICCARM - 258 261 + BICOMP + 264 - BICOMP - 70 125 151 121 136 126 152 106 130 114 85 88 8 4 122 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 119 117 153 124 138 128 154 113 132 70 87 90 8 4 125 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 70 125 151 121 136 126 152 106 130 114 85 88 8 4 122 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 119 117 153 124 138 128 154 113 132 70 87 90 8 4 125 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -321,22 +334,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\misc.c - BICOMP - 123 + ICCARM + 222 137 - ICCARM - 220 135 + BICOMP + 126 - BICOMP - 7 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 + ICCARM + 7 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 - ICCARM - 7 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 + BICOMP + 7 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 @@ -344,18 +357,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_adc.c - BICOMP - 118 + ICCARM + 227 145 - ICCARM - 226 143 + BICOMP + 116 ICCARM - 10 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + 10 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -363,22 +376,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_can.c - BICOMP - 119 + ICCARM + 219 147 - ICCARM - 217 145 + BICOMP + 122 - BICOMP - 12 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 12 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 12 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 12 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -386,22 +399,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_crc.c - BICOMP - 120 + ICCARM + 231 151 - ICCARM - 229 149 + BICOMP + 123 - BICOMP - 15 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 15 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 15 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 15 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -409,22 +422,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp.c - BICOMP - 276 + ICCARM + 225 148 - ICCARM - 224 146 + BICOMP + 277 - BICOMP - 17 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 17 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 17 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 17 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -432,22 +445,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_aes.c - BICOMP - 278 + ICCARM + 218 140 - ICCARM - 216 138 + BICOMP + 279 - BICOMP - 17 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 17 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 17 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 17 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -455,22 +468,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_des.c - BICOMP - 275 + ICCARM + 220 141 - ICCARM - 218 139 + BICOMP + 276 - BICOMP - 17 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 17 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 17 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 17 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -478,54 +491,45 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_tdes.c - BICOMP - 284 + ICCARM + 226 144 - ICCARM - 225 142 + BICOMP + 286 - BICOMP - 17 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 17 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 17 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 17 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - - [ROOT_NODE] - - - ILINK - 137 256 - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dac.c - BICOMP - 124 + ICCARM + 236 155 - ICCARM - 234 153 + BICOMP + 127 - BICOMP - 22 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 22 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 22 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 22 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -533,22 +537,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dbgmcu.c - BICOMP - 267 + ICCARM + 229 146 - ICCARM - 228 144 + BICOMP + 269 - BICOMP - 24 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 24 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 24 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 24 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -556,22 +560,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dcmi.c - BICOMP - 150 + ICCARM + 232 156 - ICCARM - 230 154 + BICOMP + 152 - BICOMP - 26 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 26 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 26 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 26 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -579,22 +583,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dma.c - BICOMP - 161 + ICCARM + 240 157 - ICCARM - 238 155 + BICOMP + 163 - BICOMP - 28 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 28 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 28 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 28 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -602,22 +606,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_exti.c - BICOMP - 127 + ICCARM + 228 158 - ICCARM - 227 156 + BICOMP + 129 - BICOMP - 30 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 30 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 30 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 30 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -625,22 +629,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_flash.c - BICOMP - 280 + ICCARM + 233 159 - ICCARM - 231 157 + BICOMP + 281 - BICOMP - 32 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 32 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 32 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 32 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -648,22 +652,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_fsmc.c - BICOMP - 129 + ICCARM + 234 160 - ICCARM - 232 158 + BICOMP + 131 - BICOMP - 34 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 34 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 34 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 34 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -671,22 +675,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_gpio.c - BICOMP - 213 + ICCARM + 235 161 - ICCARM - 233 159 + BICOMP + 215 - BICOMP - 36 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 36 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 36 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 36 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -694,22 +698,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash.c - BICOMP - 214 + ICCARM + 237 162 - ICCARM - 235 160 + BICOMP + 216 - BICOMP - 38 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 38 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 38 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 38 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -717,22 +721,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash_md5.c - BICOMP - 215 + ICCARM + 214 149 - ICCARM - 212 147 + BICOMP + 217 - BICOMP - 38 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 38 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 38 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 38 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -740,22 +744,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash_sha1.c - BICOMP - 223 + ICCARM + 239 150 - ICCARM - 237 148 + BICOMP + 224 - BICOMP - 38 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 38 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 38 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 38 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -763,22 +767,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_i2c.c - BICOMP - 162 + ICCARM + 243 274 - ICCARM - 241 272 + BICOMP + 164 - BICOMP - 42 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 42 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 42 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 42 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 44 46 48 50 52 54 56 58 60 62 64 7 @@ -786,22 +790,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_iwdg.c - BICOMP - 128 + ICCARM + 241 278 - ICCARM - 239 277 + BICOMP + 130 - BICOMP - 44 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 44 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 44 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 44 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 46 48 50 52 54 56 58 60 62 64 7 @@ -809,22 +813,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_pwr.c - BICOMP - 110 + ICCARM + 250 118 - ICCARM - 248 113 + BICOMP + 109 - BICOMP - 46 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 48 50 52 54 56 58 60 62 64 7 + ICCARM + 46 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 48 50 52 54 56 58 60 62 64 7 - ICCARM - 46 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 48 50 52 54 56 58 60 62 64 7 + BICOMP + 46 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 48 50 52 54 56 58 60 62 64 7 @@ -832,22 +836,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rcc.c - BICOMP - 112 + ICCARM + 251 280 - ICCARM - 249 279 + BICOMP + 121 - BICOMP - 48 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 50 52 54 56 58 60 62 64 7 + ICCARM + 48 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 50 52 54 56 58 60 62 64 7 - ICCARM - 48 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 50 52 54 56 58 60 62 64 7 + BICOMP + 48 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 50 52 54 56 58 60 62 64 7 @@ -855,22 +859,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rng.c - BICOMP - 269 + ICCARM + 249 282 - ICCARM - 247 281 + BICOMP + 271 - BICOMP - 50 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 52 54 56 58 60 62 64 7 + ICCARM + 50 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 52 54 56 58 60 62 64 7 - ICCARM - 50 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 52 54 56 58 60 62 64 7 + BICOMP + 50 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 52 54 56 58 60 62 64 7 @@ -878,22 +882,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rtc.c - BICOMP - 271 + ICCARM + 252 284 - ICCARM - 250 282 + BICOMP + 273 - BICOMP - 52 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 54 56 58 60 62 64 7 + ICCARM + 52 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 54 56 58 60 62 64 7 - ICCARM - 52 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 54 56 58 60 62 64 7 + BICOMP + 52 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 54 56 58 60 62 64 7 @@ -901,22 +905,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_sdio.c - BICOMP - 107 + ICCARM + 248 285 - ICCARM - 246 283 + BICOMP + 111 - BICOMP - 54 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 56 58 60 62 64 7 + ICCARM + 54 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 56 58 60 62 64 7 - ICCARM - 54 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 56 58 60 62 64 7 + BICOMP + 54 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 56 58 60 62 64 7 @@ -924,22 +928,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_spi.c - BICOMP - 270 + ICCARM + 254 287 - ICCARM - 252 285 + BICOMP + 272 - BICOMP - 56 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 58 60 62 64 7 + ICCARM + 56 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 58 60 62 64 7 - ICCARM - 56 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 58 60 62 64 7 + BICOMP + 56 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 58 60 62 64 7 @@ -947,22 +951,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_syscfg.c - BICOMP - 222 + ICCARM + 247 275 - ICCARM - 245 273 + BICOMP + 223 - BICOMP - 58 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 60 62 64 7 + ICCARM + 58 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 60 62 64 7 - ICCARM - 58 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 60 62 64 7 + BICOMP + 58 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 60 62 64 7 @@ -970,22 +974,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_tim.c - BICOMP - 268 + ICCARM + 256 106 - ICCARM - 254 115 + BICOMP + 270 - BICOMP - 60 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 62 64 7 + ICCARM + 60 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 62 64 7 - ICCARM - 60 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 62 64 7 + BICOMP + 60 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 62 64 7 @@ -993,22 +997,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_usart.c - BICOMP - 104 + ICCARM + 245 108 - ICCARM - 243 116 + BICOMP + 114 - BICOMP - 62 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 64 7 + ICCARM + 62 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 64 7 - ICCARM - 62 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 64 7 + BICOMP + 62 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 64 7 @@ -1016,22 +1020,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_wwdg.c - BICOMP - 108 + ICCARM + 242 115 - ICCARM - 240 117 + BICOMP + 120 - BICOMP - 64 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 7 + ICCARM + 64 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 7 - ICCARM - 64 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 7 + BICOMP + 64 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 7 @@ -1039,22 +1043,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\Device\ST\STM32F4xx\Source\system_stm32f4xx.c - BICOMP - 141 + ICCARM + 244 142 - ICCARM - 242 140 + BICOMP + 143 - BICOMP - 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -1062,22 +1066,22 @@ $PROJ_DIR$\..\hooks.c - BICOMP - 185 + ICCARM + 175 169 - ICCARM - 173 167 + BICOMP + 187 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -1085,22 +1089,22 @@ $PROJ_DIR$\..\main.c - BICOMP - 186 + ICCARM + 178 168 - ICCARM - 176 166 + BICOMP + 188 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -1109,7 +1113,7 @@ AARM - 187 + 189 @@ -1117,22 +1121,45 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\IAR\vectors.c - BICOMP - 181 + ICCARM + 210 201 - ICCARM - 208 199 + BICOMP + 183 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 + + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\can.c + ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + 290 289 + + + BICOMP + 288 + + + + + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 + + + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 @@ -1140,22 +1167,22 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\cpu.c - BICOMP - 190 + ICCARM + 177 184 - ICCARM - 175 182 + BICOMP + 192 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 @@ -1163,45 +1190,22 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\flash.c - BICOMP - 188 + ICCARM + 179 191 - ICCARM - 177 189 + BICOMP + 190 - - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - - - - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c - BICOMP - 263 - - - ICCARM - 257 264 - - - - - BICOMP - 86 88 2 85 260 125 151 121 136 126 152 106 - - - ICCARM - 86 88 2 85 260 125 151 121 136 126 152 106 + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -1209,22 +1213,45 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\nvm.c - BICOMP - 203 + ICCARM + 211 208 - ICCARM - 209 206 + BICOMP + 205 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 + + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 + + + + + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c + ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + 259 266 + + + BICOMP + 265 + + + + + ICCARM + 88 90 2 87 262 117 153 124 138 128 154 113 + + + BICOMP + 88 90 2 87 262 117 153 124 138 128 154 113 @@ -1232,22 +1259,22 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\timer.c - BICOMP - 178 + ICCARM + 213 195 - ICCARM - 211 193 + BICOMP + 180 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -1255,22 +1282,22 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\uart.c - BICOMP - 105 + ICCARM + 257 238 - ICCARM - 255 236 + BICOMP + 107 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 8 4 122 125 151 121 136 126 152 106 1 111 134 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 8 4 125 117 153 124 138 128 154 113 1 112 136 5 3 66 13 10 12 15 17 22 24 26 28 30 32 34 38 36 42 44 46 48 50 52 54 56 58 60 62 64 7 @@ -1278,22 +1305,22 @@ $PROJ_DIR$\..\..\..\..\Source\assert.c - BICOMP - 132 + ICCARM + 135 133 - ICCARM - 133 131 + BICOMP + 134 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 @@ -1301,22 +1328,22 @@ $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\unicode.c - BICOMP - 266 + ICCARM + 261 267 - ICCARM - 259 265 + BICOMP + 268 - BICOMP - 86 88 2 274 + ICCARM + 88 90 2 283 - ICCARM - 86 88 2 274 + BICOMP + 88 90 2 283 @@ -1324,22 +1351,22 @@ $PROJ_DIR$\..\..\..\..\Source\backdoor.c - BICOMP - 196 + ICCARM + 172 166 - ICCARM - 170 164 + BICOMP + 198 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 @@ -1347,22 +1374,22 @@ $PROJ_DIR$\..\..\..\..\Source\boot.c - BICOMP - 194 + ICCARM + 173 167 - ICCARM - 171 165 + BICOMP + 196 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 @@ -1370,22 +1397,22 @@ $PROJ_DIR$\..\..\..\..\Source\com.c - BICOMP - 180 + ICCARM + 176 170 - ICCARM - 174 168 + BICOMP + 182 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 84 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 86 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 84 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 86 @@ -1393,22 +1420,22 @@ $PROJ_DIR$\..\..\..\..\Source\cop.c - BICOMP - 197 + ICCARM + 174 193 - ICCARM - 172 191 + BICOMP + 199 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 @@ -1416,22 +1443,22 @@ $PROJ_DIR$\..\..\..\..\Source\file.c - BICOMP - 198 + ICCARM + 171 194 - ICCARM - 169 192 + BICOMP + 200 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 70 125 151 121 136 126 152 106 130 114 207 205 204 179 183 201 200 202 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 119 117 153 124 138 128 154 113 132 70 209 207 206 181 185 203 202 204 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 70 125 151 121 136 126 152 106 130 114 207 205 204 179 183 201 200 202 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 119 117 153 124 138 128 154 113 132 70 209 207 206 181 185 203 202 204 @@ -1439,22 +1466,22 @@ $PROJ_DIR$\..\..\..\..\Source\xcp.c - BICOMP - 184 + ICCARM + 212 197 - ICCARM - 210 195 + BICOMP + 186 - BICOMP - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + ICCARM + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 - ICCARM - 94 82 90 286 101 74 98 79 76 81 92 100 86 88 2 96 103 + BICOMP + 96 84 92 67 103 76 100 80 78 83 94 102 88 90 2 98 105 @@ -1463,17 +1490,17 @@ ILINK - 256 + 258 OBJCOPY - 109 + 110 ILINK - 221 131 164 165 168 191 182 187 264 192 189 167 166 135 261 206 143 145 149 146 138 139 142 153 144 154 155 156 157 158 159 160 147 148 272 277 113 279 281 282 283 285 273 115 116 117 140 193 236 265 199 195 219 251 253 244 + 230 133 166 167 289 170 193 184 189 266 194 191 169 168 137 263 208 145 147 151 148 140 141 144 155 146 156 157 158 159 160 161 162 149 150 274 278 118 280 282 284 285 287 275 106 108 115 142 195 238 267 201 197 221 253 255 246 diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/stm32f407.ewp b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/stm32f407.ewp index ac861f8b..1834a24f 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/stm32f407.ewp +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/ide/stm32f407.ewp @@ -2079,6 +2079,12 @@ $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\IAR\vectors.c + + $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\can.c + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\can.h + $PROJ_DIR$\..\..\..\..\Source\ARMCM4_STM32\cpu.c diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/main.c b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/main.c index 2cc8341b..3a7977a9 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/main.c +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Boot/main.c @@ -79,6 +79,8 @@ static void Init(void) #elif (BOOT_FILE_SYS_ENABLE > 0) GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; +#elif (BOOT_COM_CAN_ENABLE > 0) + GPIO_InitTypeDef GPIO_InitStructure; #endif /* disable all interrupts to prevent possible jump back to the user program */ @@ -134,6 +136,24 @@ static void Init(void) /* enable UART */ USART_Cmd(USART6, ENABLE); #endif +#if (BOOT_COM_CAN_ENABLE > 0) + /* enable clocks for CAN2 transmitter and receiver pins */ + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); + /* select alternate function for the CAN2 pins */ + GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_CAN2); + GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_CAN2); + /* configure CAN2 RX and TX pins */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* enable CAN clock. Note that CAN2 shares reception filters with CAN1 so for CAN2 + * the CAN1 peripheral also needs to be enabled. + */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2 | RCC_APB1Periph_CAN1, ENABLE); +#endif } /*** end of Init ***/ diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/bin/demoprog_olimex_stm32e407.out b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/bin/demoprog_olimex_stm32e407.out index 81800f5848401ef1df614b4bc03366f1df77f6c9..7d7b57eafa0eeb3657bca03b8315dac26ce2aa2a 100644 GIT binary patch delta 492 zcmcbzp5w}Tjty7i#C{yzJc0EnV^V&8iC!`T%l17$?pvnKuj5WLvqL$P_a=41*}lnh z;p~seOJVHIb5ka;ut5x){3=d)b6DnXb_Cym9cXsr-pvy>`xP!`2D2uAEtvoj>MRw3 zY2ExP&X;-fhZUQy;O}J53p06M0k!a|fX#R|`Q3#UunI1yip_NwP1(7ZIxw<91Qt%- zcO!~>i6bKyFIdNd$;vm&dENkxfGT(~dD+c4o?i%Oe48wA%Y(NKXe$fEh^EfTskgj& tCjmv6WxUnf3siVVrDRF^4F3H5TVXe z5x8cc)jrIdKh)^zz;pvef|xg#t+D1n5{YKsEWBg82+xTQCPp4c4rUfc<|C7@ooVKI z4ir#?2t1ygdiEI4#7-tgEr>wxWb_U5?>QUmec)#i-b+cR!6=GXuLDetjj diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/boot.c b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/boot.c index 5a3dc210..a375d3c9 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/boot.c @@ -182,4 +182,184 @@ static unsigned char UartReceiveByte(unsigned char *data) #endif /* BOOT_COM_UART_ENABLE > 0 */ +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +/** \brief Structure type for grouping CAN bus timing related information. */ +typedef struct t_can_bus_timing +{ + unsigned char tseg1; /**< CAN time segment 1 */ + unsigned char tseg2; /**< CAN time segment 2 */ +} tCanBusTiming; + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/** \brief CAN bittiming table for dynamically calculating the bittiming settings. + * \details According to the CAN protocol 1 bit-time can be made up of between 8..25 + * time quanta (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC + * always being 1. The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * + * 100%. This array contains possible and valid time quanta configurations with + * a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/************************************************************************************//** +** \brief Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** \param baud The desired baudrate in kbps. Valid values are 10..1000. +** \param prescaler Pointer to where the value for the prescaler will be stored. +** \param tseg1 Pointer to where the value for TSEG2 will be stored. +** \param tseg2 Pointer to where the value for TSEG2 will be stored. +** \return 1 if the CAN bustiming register values were found, 0 otherwise. +** +****************************************************************************************/ +static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned short *prescaler, + unsigned char *tseg1, unsigned char *tseg2) +{ + unsigned char cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/4) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/4)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return 1; + } + } + } + /* could not find a good bus timing configuration */ + return 0; +} /*** end of CanGetSpeedConfig ***/ + + +/************************************************************************************//** +** \brief Initializes the CAN communication interface. +** \return none. +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + CAN_InitTypeDef CAN_InitStructure; + CAN_FilterInitTypeDef CAN_FilterInitStructure; + unsigned short prescaler; + unsigned char tseg1, tseg2; + + /* enable clocks for CAN2 transmitter and receiver pins */ + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); + /* select alternate function for the CAN2 pins */ + GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_CAN2); + GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_CAN2); + /* configure CAN2 RX and TX pins */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* enable CAN clock. Note that CAN2 shares reception filters with CAN1 so for CAN2 + * the CAN1 peripheral also needs to be enabled. + */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2 | RCC_APB1Periph_CAN1, ENABLE); + /* CAN register init */ + CAN_DeInit(CAN2); + CAN_StructInit(&CAN_InitStructure); + /* obtain the bittiming configuration for this baudrate */ + CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + /* CAN controller init */ + CAN_InitStructure.CAN_TTCM = DISABLE; + CAN_InitStructure.CAN_ABOM = DISABLE; + CAN_InitStructure.CAN_AWUM = DISABLE; + CAN_InitStructure.CAN_NART = DISABLE; + CAN_InitStructure.CAN_RFLM = DISABLE; + CAN_InitStructure.CAN_TXFP = DISABLE; + CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; + /* CAN Baudrate init */ + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + CAN_InitStructure.CAN_BS1 = tseg1 - 1; + CAN_InitStructure.CAN_BS2 = tseg2 - 1; + CAN_InitStructure.CAN_Prescaler = prescaler; + CAN_Init(CAN2, &CAN_InitStructure); + /* CAN filter init - receive all messages */ + CAN_FilterInitStructure.CAN_FilterNumber = 14; + CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; + CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; + CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; + CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; + CAN_FilterInit(&CAN_FilterInitStructure); +} /*** end of BootComInit ***/ + + +/************************************************************************************//** +** \brief Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** \return none. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + CanRxMsg RxMessage; + + /* check if a new message was received */ + if (CAN_MessagePending(CAN2, CAN_FIFO0) > 0) + { + /* receive the message */ + CAN_Receive(CAN2, CAN_FIFO0, &RxMessage); + if (RxMessage.StdId == BOOT_COM_CAN_RX_MSG_ID) + { + /* check if this was an XCP CONNECT command */ + if ((RxMessage.Data[0] == 0xff) && (RxMessage.Data[1] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + /*********************************** end of boot.c *************************************/ diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/ide/settings/stm32f407.wsdt b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/ide/settings/stm32f407.wsdt index 3b0ed735..c524e4e1 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/ide/settings/stm32f407.wsdt +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/ide/settings/stm32f407.wsdt @@ -12,12 +12,12 @@ - 181272727 + 305272727 20139537293 - + TabID-29163-19963 @@ -29,20 +29,20 @@ - 0TabID-19063-20767BuildBuild0 + 0TabID-19063-20767BuildBuild0 - TextEditor$WS_DIR$\..\main.c000003626272627TextEditor$WS_DIR$\..\led.c0000030225922591TextEditor$WS_DIR$\..\boot.c0000027721472140100000010000001 + TextEditor$WS_DIR$\..\main.c00000452856285600100000010000001 - iaridepm.enu1-2-2617255-2-2135163104328198056198609752126-2-21611296-2-212981631003091198056104328198056 + iaridepm.enu1-2-2765379-2-2200200104167198413198438760913-2-21981922-2-219242001002083198413104167198413 diff --git a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/ide/stm32f407.dep b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/ide/stm32f407.dep index d1b6c1ce..58f00aae 100644 --- a/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/ide/stm32f407.dep +++ b/Target/Demo/ARMCM4_STM32_Olimex_STM32E407_IAR/Prog/ide/stm32f407.dep @@ -83,31 +83,16 @@ $PROJ_DIR$\..\timer.c $PROJ_DIR$\..\timer.h $PROJ_DIR$\..\vectors.c - $PROJ_DIR$\..\obj\stm32f4xx_rtc.pbi - $PROJ_DIR$\..\obj\stm32f4xx_usart.pbi - $TOOLKIT_DIR$\inc\c\DLib_Threads.h - $PROJ_DIR$\..\obj\stm32f4xx_rng.pbi - $PROJ_DIR$\..\obj\stm32f4xx_dbgmcu.pbi - $PROJ_DIR$\..\obj\stm32f4xx_tim.pbi - $PROJ_DIR$\..\obj\stm32f4xx_wwdg.pbi - $TOOLKIT_DIR$\inc\c\cmsis_iar.h - $PROJ_DIR$\..\obj\stm32f4xx_spi.pbi - $PROJ_DIR$\..\obj\stm32f4xx_i2c.o - $PROJ_DIR$\..\obj\stm32f4xx_syscfg.o - $PROJ_DIR$\..\obj\stm32f4xx_cryp_des.pbi - $PROJ_DIR$\..\obj\stm32f4xx_cryp.pbi - $PROJ_DIR$\..\obj\stm32f4xx_sdio.pbi - $PROJ_DIR$\..\obj\stm32f4xx_rng.o $PROJ_DIR$\..\obj\stm32f4xx_iwdg.o $PROJ_DIR$\..\obj\stm32f4xx_rcc.o $PROJ_DIR$\..\obj\stm32f4xx_flash.pbi - $PROJ_DIR$\..\obj\vectors.pbi - $PROJ_DIR$\..\obj\main.pbi - $PROJ_DIR$\..\obj\cstart.o $PROJ_DIR$\..\obj\timer.o - $PROJ_DIR$\..\obj\boot.pbi $PROJ_DIR$\..\obj\vectors.o + $PROJ_DIR$\..\obj\boot.pbi + $PROJ_DIR$\..\obj\cstart.o $PROJ_DIR$\..\obj\vectors.lst + $PROJ_DIR$\..\obj\main.pbi + $PROJ_DIR$\..\obj\vectors.pbi $PROJ_DIR$\..\obj\timer.lst $PROJ_DIR$\..\obj\stm32f4xx_hash_md5.lst $PROJ_DIR$\..\obj\stm32f4xx_gpio.pbi @@ -158,6 +143,21 @@ $PROJ_DIR$\..\obj\main.o $PROJ_DIR$\..\obj\boot.lst $PROJ_DIR$\..\obj\main.lst + $PROJ_DIR$\..\obj\stm32f4xx_rtc.pbi + $PROJ_DIR$\..\obj\stm32f4xx_usart.pbi + $TOOLKIT_DIR$\inc\c\DLib_Threads.h + $PROJ_DIR$\..\obj\stm32f4xx_tim.pbi + $PROJ_DIR$\..\obj\stm32f4xx_dbgmcu.pbi + $PROJ_DIR$\..\obj\stm32f4xx_i2c.o + $TOOLKIT_DIR$\inc\c\cmsis_iar.h + $PROJ_DIR$\..\obj\stm32f4xx_rng.pbi + $PROJ_DIR$\..\obj\stm32f4xx_spi.pbi + $PROJ_DIR$\..\obj\stm32f4xx_wwdg.pbi + $PROJ_DIR$\..\obj\stm32f4xx_syscfg.o + $PROJ_DIR$\..\obj\stm32f4xx_cryp_des.pbi + $PROJ_DIR$\..\obj\stm32f4xx_cryp.pbi + $PROJ_DIR$\..\obj\stm32f4xx_sdio.pbi + $PROJ_DIR$\..\obj\stm32f4xx_rng.o $PROJ_DIR$\..\obj\timer.pbi $PROJ_DIR$\..\obj\stm32f4xx_dac.lst $PROJ_DIR$\..\obj\stm32f4xx_hash.lst @@ -180,7 +180,6 @@ $TOOLKIT_DIR$\lib\m7M_tl.a $PROJ_DIR$\..\obj\stm32f4xx_tim.lst $PROJ_DIR$\..\obj\stm32f407.pbd - $PROJ_DIR$\..\..\Boot\config.h $PROJ_DIR$\..\obj\led.lst $PROJ_DIR$\..\obj\irq.lst $PROJ_DIR$\..\obj\demoprog_olimex_stm32e407.map @@ -224,22 +223,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\misc.c - BICOMP - 194 + ICCARM + 96 198 - ICCARM - 111 199 + BICOMP + 193 - BICOMP - 5 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 + ICCARM + 5 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 - ICCARM - 5 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 + BICOMP + 5 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 @@ -247,22 +246,18 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_adc.c - BICOMP - 197 + ICCARM + 101 109 - ICCARM - 116 124 + BICOMP + 196 - - BICOMP - 8 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 8 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + 8 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -270,18 +265,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_can.c - BICOMP - 210 + ICCARM + 93 111 - ICCARM - 108 126 + BICOMP + 209 ICCARM - 10 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + 10 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + BICOMP + 10 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -289,22 +288,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_crc.c - BICOMP - 211 + ICCARM + 104 115 - ICCARM - 119 130 + BICOMP + 210 - BICOMP - 13 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 13 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 13 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 13 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -312,22 +311,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp.c - BICOMP - 89 + ICCARM + 99 112 - ICCARM - 114 127 + BICOMP + 149 - BICOMP - 15 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 15 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 15 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 15 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -335,22 +334,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_aes.c - BICOMP - 139 + ICCARM + 92 186 - ICCARM - 107 187 + BICOMP + 124 - BICOMP - 15 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 15 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 15 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 15 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -358,22 +357,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_des.c - BICOMP - 88 + ICCARM + 94 187 - ICCARM - 109 188 + BICOMP + 148 - BICOMP - 15 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 15 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 15 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 15 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -381,22 +380,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_tdes.c - BICOMP - 205 + ICCARM + 100 189 - ICCARM - 115 190 + BICOMP + 204 - BICOMP - 15 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 15 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 15 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 15 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -404,22 +403,160 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dac.c - BICOMP - 195 + ICCARM + 153 119 - ICCARM - 153 134 + BICOMP + 194 - BICOMP - 20 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 20 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + BICOMP + 20 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dbgmcu.c + ICCARM - 20 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + 103 110 + + + BICOMP + 141 + + + + + ICCARM + 22 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + BICOMP + 22 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dcmi.c + + + ICCARM + 105 120 + + + BICOMP + 116 + + + + + ICCARM + 24 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + BICOMP + 24 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dma.c + + + ICCARM + 156 121 + + + BICOMP + 131 + + + + + ICCARM + 26 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + BICOMP + 26 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_exti.c + + + ICCARM + 102 122 + + + BICOMP + 190 + + + + + ICCARM + 28 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + BICOMP + 28 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_flash.c + + + ICCARM + 106 123 + + + BICOMP + 79 + + + + + ICCARM + 30 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + BICOMP + 30 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_fsmc.c + + + ICCARM + 107 128 + + + BICOMP + 199 + + + + + ICCARM + 32 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + + + BICOMP + 32 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -428,168 +565,30 @@ ILINK - 179 177 + 178 176 - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dbgmcu.c - - - BICOMP - 81 - - - ICCARM - 118 125 - - - - - BICOMP - 22 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - ICCARM - 22 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dcmi.c - - - BICOMP - 131 - - - ICCARM - 120 135 - - - - - BICOMP - 24 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - ICCARM - 24 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dma.c - - - BICOMP - 146 - - - ICCARM - 156 136 - - - - - BICOMP - 26 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - ICCARM - 26 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_exti.c - - - BICOMP - 191 - - - ICCARM - 117 137 - - - - - BICOMP - 28 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - ICCARM - 28 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_flash.c - - - BICOMP - 94 - - - ICCARM - 121 138 - - - - - BICOMP - 30 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - ICCARM - 30 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_fsmc.c - - - BICOMP - 200 - - - ICCARM - 122 143 - - - - - BICOMP - 32 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - ICCARM - 32 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_gpio.c - BICOMP - 104 + ICCARM + 108 129 - ICCARM - 123 144 + BICOMP + 89 - BICOMP - 34 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 40 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 34 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 40 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 34 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 40 42 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 34 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -597,22 +596,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash.c - BICOMP - 105 + ICCARM + 154 130 - ICCARM - 154 145 + BICOMP + 90 - BICOMP - 36 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 36 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 36 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 36 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -620,22 +619,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash_md5.c - BICOMP - 106 + ICCARM + 88 113 - ICCARM - 103 128 + BICOMP + 91 - BICOMP - 36 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 36 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 36 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 36 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -643,22 +642,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash_sha1.c - BICOMP - 113 + ICCARM + 155 114 - ICCARM - 155 129 + BICOMP + 98 - BICOMP - 36 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 36 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 36 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 36 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -666,22 +665,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_i2c.c - BICOMP - 147 + ICCARM + 159 142 - ICCARM - 159 86 + BICOMP + 132 - BICOMP - 40 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 40 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 40 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 42 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 40 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 42 44 46 48 50 52 54 56 58 60 62 5 @@ -689,22 +688,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_iwdg.c - BICOMP - 206 + ICCARM + 157 77 - ICCARM - 157 92 + BICOMP + 205 - BICOMP - 42 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 42 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 42 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 42 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 44 46 48 50 52 54 56 58 60 62 5 @@ -712,22 +711,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_pwr.c - BICOMP - 142 + ICCARM + 166 125 - ICCARM - 166 140 + BICOMP + 127 - BICOMP - 44 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 46 48 50 52 54 56 58 60 62 5 + ICCARM + 44 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 46 48 50 52 54 56 58 60 62 5 - ICCARM - 44 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 46 48 50 52 54 56 58 60 62 5 + BICOMP + 44 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 46 48 50 52 54 56 58 60 62 5 @@ -735,22 +734,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rcc.c - BICOMP - 141 + ICCARM + 167 78 - ICCARM - 167 93 + BICOMP + 126 - BICOMP - 46 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 48 50 52 54 56 58 60 62 5 + ICCARM + 46 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 48 50 52 54 56 58 60 62 5 - ICCARM - 46 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 48 50 52 54 56 58 60 62 5 + BICOMP + 46 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 48 50 52 54 56 58 60 62 5 @@ -758,22 +757,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rng.c - BICOMP - 80 + ICCARM + 165 151 - ICCARM - 165 91 + BICOMP + 144 - BICOMP - 48 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 50 52 54 56 58 60 62 5 + ICCARM + 48 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 50 52 54 56 58 60 62 5 - ICCARM - 48 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 50 52 54 56 58 60 62 5 + BICOMP + 48 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 50 52 54 56 58 60 62 5 @@ -781,22 +780,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rtc.c - BICOMP - 77 + ICCARM + 168 200 - ICCARM - 168 201 + BICOMP + 137 - BICOMP - 50 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 52 54 56 58 60 62 5 + ICCARM + 50 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 52 54 56 58 60 62 5 - ICCARM - 50 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 52 54 56 58 60 62 5 + BICOMP + 50 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 52 54 56 58 60 62 5 @@ -804,22 +803,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_sdio.c - BICOMP - 90 + ICCARM + 164 206 - ICCARM - 164 207 + BICOMP + 150 - BICOMP - 52 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 54 56 58 60 62 5 + ICCARM + 52 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 54 56 58 60 62 5 - ICCARM - 52 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 54 56 58 60 62 5 + BICOMP + 52 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 54 56 58 60 62 5 @@ -827,22 +826,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_spi.c - BICOMP - 85 + ICCARM + 170 201 - ICCARM - 170 202 + BICOMP + 145 - BICOMP - 54 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 56 58 60 62 5 + ICCARM + 54 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 56 58 60 62 5 - ICCARM - 54 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 56 58 60 62 5 + BICOMP + 54 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 56 58 60 62 5 @@ -850,22 +849,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_syscfg.c - BICOMP - 112 + ICCARM + 163 147 - ICCARM - 163 87 + BICOMP + 97 - BICOMP - 56 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 58 60 62 5 + ICCARM + 56 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 58 60 62 5 - ICCARM - 56 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 58 60 62 5 + BICOMP + 56 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 58 60 62 5 @@ -873,22 +872,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_tim.c - BICOMP - 82 + ICCARM + 172 203 - ICCARM - 172 204 + BICOMP + 140 - BICOMP - 58 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 60 62 5 + ICCARM + 58 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 60 62 5 - ICCARM - 58 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 60 62 5 + BICOMP + 58 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 60 62 5 @@ -896,22 +895,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_usart.c - BICOMP - 78 + ICCARM + 161 202 - ICCARM - 161 203 + BICOMP + 138 - BICOMP - 60 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 62 5 + ICCARM + 60 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 62 5 - ICCARM - 60 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 62 5 + BICOMP + 60 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 62 5 @@ -919,22 +918,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_wwdg.c - BICOMP - 83 + ICCARM + 158 195 - ICCARM - 158 196 + BICOMP + 146 - BICOMP - 62 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 5 + ICCARM + 62 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 5 - ICCARM - 62 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 5 + BICOMP + 62 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 5 @@ -942,22 +941,22 @@ $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\Device\ST\STM32F4xx\Source\system_stm32f4xx.c - BICOMP - 185 + ICCARM + 160 188 - ICCARM - 160 189 + BICOMP + 184 - BICOMP - 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + ICCARM + 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 - ICCARM - 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 + BICOMP + 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 @@ -965,22 +964,22 @@ $PROJ_DIR$\..\boot.c - BICOMP - 99 + ICCARM + 135 133 - ICCARM - 150 148 + BICOMP + 82 - BICOMP - 68 174 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + ICCARM + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 - ICCARM - 68 212 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + BICOMP + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 @@ -989,7 +988,7 @@ AARM - 97 + 83 @@ -997,22 +996,22 @@ $PROJ_DIR$\..\irq.c - BICOMP - 184 + ICCARM + 175 180 - ICCARM - 176 181 + BICOMP + 183 - BICOMP - 68 174 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + ICCARM + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 - ICCARM - 68 212 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + BICOMP + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 @@ -1020,18 +1019,22 @@ $PROJ_DIR$\..\led.c - BICOMP - 183 + ICCARM + 174 181 - ICCARM - 175 182 + BICOMP + 182 ICCARM - 68 212 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + + + BICOMP + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 @@ -1039,22 +1042,22 @@ $PROJ_DIR$\..\main.c - BICOMP - 96 + ICCARM + 136 134 - ICCARM - 151 149 + BICOMP + 85 - BICOMP - 68 174 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + ICCARM + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 - ICCARM - 68 212 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + BICOMP + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 @@ -1062,22 +1065,22 @@ $PROJ_DIR$\..\timer.c - BICOMP - 152 + ICCARM + 87 80 - ICCARM - 102 98 + BICOMP + 152 - BICOMP - 68 174 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + ICCARM + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 - ICCARM - 68 212 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + BICOMP + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 @@ -1085,22 +1088,22 @@ $PROJ_DIR$\..\vectors.c - BICOMP - 95 + ICCARM + 84 81 - ICCARM - 101 100 + BICOMP + 86 - BICOMP - 68 174 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + ICCARM + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 - ICCARM - 68 212 6 0 209 193 132 198 186 192 133 79 3 84 208 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 + BICOMP + 68 211 6 0 208 192 117 197 185 191 118 139 3 143 207 4 2 64 11 8 10 13 15 20 22 24 26 28 30 32 36 34 40 42 44 46 48 50 52 54 56 58 60 62 5 66 70 72 75 @@ -1109,17 +1112,17 @@ ILINK - 177 + 176 OBJCOPY - 180 + 179 ILINK - 178 148 97 181 182 149 199 124 126 130 127 187 188 190 134 125 135 136 137 138 143 144 145 128 129 86 92 140 93 91 201 207 202 87 204 203 196 189 98 100 110 169 171 162 + 177 133 83 180 181 134 198 109 111 115 112 186 187 189 119 110 120 121 122 123 128 129 130 113 114 142 77 125 78 151 200 206 201 147 203 202 195 188 80 81 95 169 171 162 diff --git a/Target/Source/ARMCM3_STM32/can.c b/Target/Source/ARMCM3_STM32/can.c index 1bdd697f..0a5fd4d7 100644 --- a/Target/Source/ARMCM3_STM32/can.c +++ b/Target/Source/ARMCM3_STM32/can.c @@ -289,9 +289,6 @@ void CanInit(void) ****************************************************************************************/ void CanTransmitPacket(blt_int8u *data, blt_int8u len) { - blt_int8u byte_count; - blt_int8u mailbox; - /* make sure that transmit mailbox 0 is available */ ASSERT_RT((CANx->TSR&CAN_BIT_TME0) == CAN_BIT_TME0); /* store the 11-bit message identifier */ @@ -327,7 +324,6 @@ void CanTransmitPacket(blt_int8u *data, blt_int8u len) ****************************************************************************************/ blt_bool CanReceivePacket(blt_int8u *data) { - blt_int8u byte_count; blt_int32u rxMsgId; blt_bool result = BLT_FALSE; diff --git a/Target/Source/ARMCM4_STM32/can.c b/Target/Source/ARMCM4_STM32/can.c new file mode 100644 index 00000000..42eeb995 --- /dev/null +++ b/Target/Source/ARMCM4_STM32/can.c @@ -0,0 +1,388 @@ +/************************************************************************************//** +* \file Source\ARMCM4_STM32\can.c +* \brief Bootloader CAN communication interface source file. +* \ingroup Target_ARMCM4_STM32 +* \internal +*---------------------------------------------------------------------------------------- +* C O P Y R I G H T +*---------------------------------------------------------------------------------------- +* Copyright (c) 2013 by Feaser http://www.feaser.com All rights reserved +* +*---------------------------------------------------------------------------------------- +* L I C E N S E +*---------------------------------------------------------------------------------------- +* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +* modify it under the terms of the GNU General Public License as published by the Free +* Software Foundation, either version 3 of the License, or (at your option) any later +* version. +* +* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +* PURPOSE. See the GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License along with OpenBLT. +* If not, see . +* +* A special exception to the GPL is included to allow you to distribute a combined work +* that includes OpenBLT without being obliged to provide the source code for any +* proprietary components. The exception text is included at the bottom of the license +* file . +* +* \endinternal +****************************************************************************************/ + + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "boot.h" /* bootloader generic header */ + + +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +/** \brief CAN transmission mailbox layout. */ +typedef struct +{ + volatile blt_int32u TIR; + volatile blt_int32u TDTR; + volatile blt_int32u TDLR; + volatile blt_int32u TDHR; +} tCanTxMailBox; + +/** \brief CAN reception FIFO mailbox layout. */ +typedef struct +{ + volatile blt_int32u RIR; + volatile blt_int32u RDTR; + volatile blt_int32u RDLR; + volatile blt_int32u RDHR; +} tCanRxFIFOMailBox; + +/** \brief CAN filter register layout. */ +typedef struct +{ + volatile blt_int32u FR1; + volatile blt_int32u FR2; +} tCanFilter; + +/** \brief CAN controller register layout. */ +typedef struct +{ + volatile blt_int32u MCR; + volatile blt_int32u MSR; + volatile blt_int32u TSR; + volatile blt_int32u RF0R; + volatile blt_int32u RF1R; + volatile blt_int32u IER; + volatile blt_int32u ESR; + volatile blt_int32u BTR; + blt_int32u RESERVED0[88]; + tCanTxMailBox sTxMailBox[3]; + tCanRxFIFOMailBox sFIFOMailBox[2]; + blt_int32u RESERVED1[12]; + volatile blt_int32u FMR; + volatile blt_int32u FM1R; + blt_int32u RESERVED2; + volatile blt_int32u FS1R; + blt_int32u RESERVED3; + volatile blt_int32u FFA1R; + blt_int32u RESERVED4; + volatile blt_int32u FA1R; + blt_int32u RESERVED5[8]; + tCanFilter sFilterRegister[28]; +} tCanRegs; + + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ +/** \brief Reset request bit. */ +#define CAN_BIT_RESET ((blt_int32u)0x00008000) +/** \brief Initialization request bit. */ +#define CAN_BIT_INRQ ((blt_int32u)0x00000001) +/** \brief Initialization acknowledge bit. */ +#define CAN_BIT_INAK ((blt_int32u)0x00000001) +/** \brief Sleep mode request bit. */ +#define CAN_BIT_SLEEP ((blt_int32u)0x00000002) +/** \brief Filter 0 selection bit. */ +#define CAN_BIT_FILTER0 ((blt_int32u)0x00000001) +/** \brief Filter 14 selection bit. */ +#define CAN_BIT_FILTER14 ((blt_int32u)0x00004000) +/** \brief Filter init mode bit. */ +#define CAN_BIT_FINIT ((blt_int32u)0x00000001) +/** \brief Transmit mailbox 0 empty bit. */ +#define CAN_BIT_TME0 ((blt_int32u)0x04000000) +/** \brief Transmit mailbox request bit. */ +#define CAN_BIT_TXRQ ((blt_int32u)0x00000001) +/** \brief Release FIFO 0 mailbox bit. */ +#define CAN_BIT_RFOM0 ((blt_int32u)0x00000020) + + +/**************************************************************************************** +* Register definitions +****************************************************************************************/ +#if (BOOT_COM_CAN_CHANNEL_INDEX == 0) +/** \brief Macro for accessing CAN1 controller registers. */ +#define CANx ((tCanRegs *) (blt_int32u)0x40006400) +#else +/** \brief Macro for accessing CAN2 controller registers. */ +#define CANx ((tCanRegs *) (blt_int32u)0x40006800) +#endif +/** \brief Macro for accessing CAN1 controller registers. */ +#define CAN1 ((tCanRegs *) (blt_int32u)0x40006400) + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +/** \brief Structure type for grouping CAN bus timing related information. */ +typedef struct t_can_bus_timing +{ + blt_int8u tseg1; /**< CAN time segment 1 */ + blt_int8u tseg2; /**< CAN time segment 2 */ +} tCanBusTiming; + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/** \brief CAN bittiming table for dynamically calculating the bittiming settings. + * \details According to the CAN protocol 1 bit-time can be made up of between 8..25 + * time quanta (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC + * always being 1. The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * + * 100%. This array contains possible and valid time quanta configurations with + * a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/************************************************************************************//** +** \brief Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** \param baud The desired baudrate in kbps. Valid values are 10..1000. +** \param prescaler Pointer to where the value for the prescaler will be stored. +** \param tseg1 Pointer to where the value for TSEG2 will be stored. +** \param tseg2 Pointer to where the value for TSEG2 will be stored. +** \return BLT_TRUE if the CAN bustiming register values were found, BLT_FALSE +** otherwise. +** +****************************************************************************************/ +static blt_bool CanGetSpeedConfig(blt_int16u baud, blt_int16u *prescaler, + blt_int8u *tseg1, blt_int8u *tseg2) +{ + blt_int8u cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/4) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/4)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return BLT_TRUE; + } + } + } + /* could not find a good bus timing configuration */ + return BLT_FALSE; +} /*** end of CanGetSpeedConfig ***/ + + +/************************************************************************************//** +** \brief Initializes the CAN controller and synchronizes it to the CAN bus. +** \return none. +** +****************************************************************************************/ +void CanInit(void) +{ + blt_int16u prescaler; + blt_int8u tseg1, tseg2; + blt_bool result; + + /* the current implementation supports CAN1 and 2. throw an assertion error in case a + * different CAN channel is configured. + */ + ASSERT_CT((BOOT_COM_CAN_CHANNEL_INDEX == 0 || BOOT_COM_CAN_CHANNEL_INDEX == 1)); + + /* obtain bittiming configuration information */ + result = CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + ASSERT_RT(result == BLT_TRUE); + /* disable all can interrupt. this driver works in polling mode */ + CANx->IER = (blt_int32u)0; + /* set request to reset the can controller */ + CANx->MCR |= CAN_BIT_RESET ; + /* wait for acknowledge that the can controller was reset */ + while ((CANx->MCR & CAN_BIT_RESET) != 0) + { + /* keep the watchdog happy */ + CopService(); + } + /* exit from sleep mode, which is the default mode after reset */ + CANx->MCR &= ~CAN_BIT_SLEEP; + /* set request to enter initialisation mode */ + CANx->MCR |= CAN_BIT_INRQ ; + /* wait for acknowledge that initialization mode was entered */ + while ((CANx->MSR & CAN_BIT_INAK) == 0) + { + /* keep the watchdog happy */ + CopService(); + } + /* configure the bittming */ + CANx->BTR = (blt_int32u)((blt_int32u)(tseg1 - 1) << 16) | \ + (blt_int32u)((blt_int32u)(tseg2 - 1) << 20) | \ + (blt_int32u)(prescaler - 1); + /* set request to leave initialisation mode */ + CANx->MCR &= ~CAN_BIT_INRQ; + /* wait for acknowledge that initialization mode was exited */ + while ((CANx->MSR & CAN_BIT_INAK) != 0) + { + /* keep the watchdog happy */ + CopService(); + } + +#if (BOOT_COM_CAN_CHANNEL_INDEX == 0) + /* enter initialisation mode for the acceptance filter */ + CAN1->FMR |= CAN_BIT_FINIT; + /* deactivate filter 0 */ + CAN1->FA1R &= ~CAN_BIT_FILTER0; + /* 32-bit scale for the filter */ + CAN1->FS1R |= CAN_BIT_FILTER0; + /* open up the acceptance filter to receive all messages */ + CAN1->sFilterRegister[0].FR1 = 0; + CAN1->sFilterRegister[0].FR2 = 0; + /* select id/mask mode for the filter */ + CAN1->FM1R &= ~CAN_BIT_FILTER0; + /* FIFO 0 assignation for the filter */ + CAN1->FFA1R &= ~CAN_BIT_FILTER0; + /* filter activation */ + CAN1->FA1R |= CAN_BIT_FILTER0; + /* leave initialisation mode for the acceptance filter */ + CAN1->FMR &= ~CAN_BIT_FINIT; +#else + /* enter initialisation mode for the acceptance filter */ + CAN1->FMR |= CAN_BIT_FINIT; + /* deactivate filter 14 */ + CAN1->FA1R &= ~CAN_BIT_FILTER14; + /* 32-bit scale for the filter */ + CAN1->FS1R |= CAN_BIT_FILTER14; + /* open up the acceptance filter to receive all messages */ + CAN1->sFilterRegister[14].FR1 = 0; + CAN1->sFilterRegister[14].FR2 = 0; + /* select id/mask mode for the filter */ + CAN1->FM1R &= ~CAN_BIT_FILTER14; + /* FIFO 0 assignation for the filter */ + CAN1->FFA1R &= ~CAN_BIT_FILTER14; + /* filter activation */ + CAN1->FA1R |= CAN_BIT_FILTER14; + /* leave initialisation mode for the acceptance filter */ + CAN1->FMR &= ~CAN_BIT_FINIT; +#endif +} /*** end of CanInit ***/ + + +/************************************************************************************//** +** \brief Transmits a packet formatted for the communication interface. +** \param data Pointer to byte array with data that it to be transmitted. +** \param len Number of bytes that are to be transmitted. +** \return none. +** +****************************************************************************************/ +void CanTransmitPacket(blt_int8u *data, blt_int8u len) +{ + /* make sure that transmit mailbox 0 is available */ + ASSERT_RT((CANx->TSR&CAN_BIT_TME0) == CAN_BIT_TME0); + /* store the 11-bit message identifier */ + CANx->sTxMailBox[0].TIR &= CAN_BIT_TXRQ; + CANx->sTxMailBox[0].TIR |= ((blt_int32u)BOOT_COM_CAN_TX_MSG_ID << 21); + /* store the message date length code (DLC) */ + CANx->sTxMailBox[0].TDTR = len; + /* store the message data bytes */ + CANx->sTxMailBox[0].TDLR = (((blt_int32u)data[3] << 24) | \ + ((blt_int32u)data[2] << 16) | \ + ((blt_int32u)data[1] << 8) | \ + ((blt_int32u)data[0])); + CANx->sTxMailBox[0].TDHR = (((blt_int32u)data[7] << 24) | \ + ((blt_int32u)data[6] << 16) | \ + ((blt_int32u)data[5] << 8) | \ + ((blt_int32u)data[4])); + /* request the start of message transmission */ + CANx->sTxMailBox[0].TIR |= CAN_BIT_TXRQ; + /* wait for transmit completion */ + while ((CANx->TSR&CAN_BIT_TME0) == 0) + { + /* keep the watchdog happy */ + CopService(); + } +} /*** end of CanTransmitPacket ***/ + + +/************************************************************************************//** +** \brief Receives a communication interface packet if one is present. +** \param data Pointer to byte array where the data is to be stored. +** \return BLT_TRUE is a packet was received, BLT_FALSE otherwise. +** +****************************************************************************************/ +blt_bool CanReceivePacket(blt_int8u *data) +{ + blt_int32u rxMsgId; + blt_bool result = BLT_FALSE; + + /* check if a new message was received */ + if ((CANx->RF0R&(blt_int32u)0x00000003) > 0) + { + /* read out the message identifier */ + rxMsgId = (blt_int32u)0x000007FF & (CANx->sFIFOMailBox[0].RIR >> 21); + /* is this the packet identifier */ + if (rxMsgId == BOOT_COM_CAN_RX_MSG_ID) + { + result = BLT_TRUE; + /* store the received packet data */ + data[0] = (blt_int8u)0xFF & CANx->sFIFOMailBox[0].RDLR; + data[1] = (blt_int8u)0xFF & (CANx->sFIFOMailBox[0].RDLR >> 8); + data[2] = (blt_int8u)0xFF & (CANx->sFIFOMailBox[0].RDLR >> 16); + data[3] = (blt_int8u)0xFF & (CANx->sFIFOMailBox[0].RDLR >> 24); + data[4] = (blt_int8u)0xFF & CANx->sFIFOMailBox[0].RDHR; + data[5] = (blt_int8u)0xFF & (CANx->sFIFOMailBox[0].RDHR >> 8); + data[6] = (blt_int8u)0xFF & (CANx->sFIFOMailBox[0].RDHR >> 16); + data[7] = (blt_int8u)0xFF & (CANx->sFIFOMailBox[0].RDHR >> 24); + } + /* release FIFO0 */ + CANx->RF0R |= CAN_BIT_RFOM0; + } + return result; +} /*** end of CanReceivePacket ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + +/*********************************** end of can.c **************************************/ diff --git a/Target/Source/ARMCM4_STM32/can.h b/Target/Source/ARMCM4_STM32/can.h new file mode 100644 index 00000000..4853f7ef --- /dev/null +++ b/Target/Source/ARMCM4_STM32/can.h @@ -0,0 +1,47 @@ +/************************************************************************************//** +* \file Source\ARMCM4_STM32\can.h +* \brief Bootloader CAN communication interface header file. +* \ingroup Target_ARMCM4_STM32 +* \internal +*---------------------------------------------------------------------------------------- +* C O P Y R I G H T +*---------------------------------------------------------------------------------------- +* Copyright (c) 2013 by Feaser http://www.feaser.com All rights reserved +* +*---------------------------------------------------------------------------------------- +* L I C E N S E +*---------------------------------------------------------------------------------------- +* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +* modify it under the terms of the GNU General Public License as published by the Free +* Software Foundation, either version 3 of the License, or (at your option) any later +* version. +* +* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +* PURPOSE. See the GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License along with OpenBLT. +* If not, see . +* +* A special exception to the GPL is included to allow you to distribute a combined work +* that includes OpenBLT without being obliged to provide the source code for any +* proprietary components. The exception text is included at the bottom of the license +* file . +* +* \endinternal +****************************************************************************************/ +#ifndef CAN_H +#define CAN_H + +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +void CanInit(void); +void CanTransmitPacket(blt_int8u *data, blt_int8u len); +blt_bool CanReceivePacket(blt_int8u *data); +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + +#endif /* CAN_H */ +/*********************************** end of can.h **************************************/ diff --git a/Target/Source/boot.h b/Target/Source/boot.h index 3606af30..4a285064 100644 --- a/Target/Source/boot.h +++ b/Target/Source/boot.h @@ -41,7 +41,7 @@ /** \brief Minor version of the bootloader core. */ #define BOOT_VERSION_CORE_MINOR (96u) /** \brief Bufgix version of the bootloader core. */ -#define BOOT_VERSION_CORE_BUGFIX (0u) +#define BOOT_VERSION_CORE_BUGFIX (1u) /**************************************************************************************** diff --git a/Target/Source/file.c b/Target/Source/file.c index 0c4f7906..4f7d0afd 100644 --- a/Target/Source/file.c +++ b/Target/Source/file.c @@ -40,19 +40,6 @@ #if (BOOT_FILE_SYS_ENABLE > 0) -/**************************************************************************************** -* Defines -****************************************************************************************/ -/** \brief Maximum number of characters that can be on a line in the firmware file. */ -#define MAX_CHARS_PER_LINE (256) -/** \brief Maximum number of data bytes that can be on a line in the firmware file - * (S-record). - */ -#define MAX_DATA_BYTES_PER_LINE (MAX_CHARS_PER_LINE/2) -/** \brief Return code in case an invalid checksum was detected on an S-record line. */ -#define ERROR_SREC_INVALID_CHECKSUM (-1) - - /**************************************************************************************** * Type definitions ****************************************************************************************/ @@ -65,15 +52,6 @@ typedef enum FIRMWARE_UPDATE_STATE_PROGRAMMING /**< programming state */ } tFirmwareUpdateState; -/** \brief Enumeration for the different S-record line types. */ -typedef enum -{ - LINE_TYPE_S1, /**< 16-bit address line */ - LINE_TYPE_S2, /**< 24-bit address line */ - LINE_TYPE_S3, /**< 32-bit address line */ - LINE_TYPE_UNSUPPORTED /**< unsupported line */ -} tSrecLineType; - /** \brief Structure type with information for the memory erase opeartion. */ typedef struct { @@ -88,21 +66,9 @@ typedef struct FIL file; /**< file object for firmware file */ } tFatFsObjects; -/** \brief Structure type for grouping the parsing results of an S-record line. */ -typedef struct -{ - blt_char line[MAX_CHARS_PER_LINE]; /**< string buffer for the line chars */ - blt_int8u data[MAX_DATA_BYTES_PER_LINE]; /**< array for S1, S2 or S3 data bytes*/ - blt_addr address; /**< address on S1, S2 or S3 line */ -} tSrecLineParseObject; - - /**************************************************************************************** * Function prototypes ****************************************************************************************/ -static tSrecLineType SrecGetLineType(const blt_char *line); -static blt_bool SrecVerifyChecksum(const blt_char *line); -static blt_int16s SrecParseLine(const blt_char *line, blt_addr *address, blt_int8u *data); #if (BOOT_FILE_LOGGING_ENABLE > 0) static blt_char FileLibByteNibbleToChar(blt_int8u nibble); static blt_char *FileLibByteToHexString(blt_int8u byte_val, blt_char *destination); @@ -284,7 +250,7 @@ void FileTask(void) /* parse the S-Record line without copying the data values if the line is not empty */ if (read_line_ptr != BLT_NULL) { - parse_result = SrecParseLine(lineParseObject.line, &lineParseObject.address, BLT_NULL); + parse_result = FileSrecParseLine(lineParseObject.line, &lineParseObject.address, BLT_NULL); /* check parsing result */ if (parse_result == ERROR_SREC_INVALID_CHECKSUM) { @@ -399,7 +365,7 @@ void FileTask(void) /* parse the S-Record line if the line is not empty */ if (read_line_ptr != BLT_NULL) { - parse_result = SrecParseLine(lineParseObject.line, &lineParseObject.address, lineParseObject.data); + parse_result = FileSrecParseLine(lineParseObject.line, &lineParseObject.address, lineParseObject.data); /* check parsing result */ if (parse_result == ERROR_SREC_INVALID_CHECKSUM) { @@ -505,7 +471,7 @@ void FileTask(void) ** \return the S-Record line type. ** ****************************************************************************************/ -static tSrecLineType SrecGetLineType(const blt_char *line) +tSrecLineType FileSrecGetLineType(const blt_char *line) { /* check if the line starts with the 'S' character, followed by a digit */ if ( (toupper(line[0]) != 'S') || (isdigit(line[1]) == 0) ) @@ -528,7 +494,7 @@ static tSrecLineType SrecGetLineType(const blt_char *line) } /* still here so not a supported line type found */ return LINE_TYPE_UNSUPPORTED; -} /*** end of SrecGetLineType ***/ +} /*** end of FileSrecGetLineType ***/ /************************************************************************************//** @@ -538,7 +504,7 @@ static tSrecLineType SrecGetLineType(const blt_char *line) ** \return BLT_TRUE if the checksum is correct, BLT_FALSE otherwise. ** ****************************************************************************************/ -static blt_bool SrecVerifyChecksum(const blt_char *line) +blt_bool FileSrecVerifyChecksum(const blt_char *line) { blt_int16u bytes_on_line; blt_int8u checksum = 0; @@ -573,7 +539,7 @@ static blt_bool SrecVerifyChecksum(const blt_char *line) } /* still here so the checksum was correct */ return BLT_TRUE; -} /*** end of SrecVerifyChecksum ***/ +} /*** end of FileSrecVerifyChecksum ***/ /************************************************************************************//** @@ -589,7 +555,7 @@ static blt_bool SrecVerifyChecksum(const blt_char *line) ** in case the checksum validation failed. ** ****************************************************************************************/ -static blt_int16s SrecParseLine(const blt_char *line, blt_addr *address, blt_int8u *data) +blt_int16s FileSrecParseLine(const blt_char *line, blt_addr *address, blt_int8u *data) { tSrecLineType lineType; blt_int16s data_byte_count = 0; @@ -599,7 +565,7 @@ static blt_int16s SrecParseLine(const blt_char *line, blt_addr *address, blt_int /* check pointers and not that data can be a null pointer */ ASSERT_RT((address != BLT_NULL) && (line != BLT_NULL)); /* figure out what type of line we are dealing with */ - lineType = SrecGetLineType(line); + lineType = FileSrecGetLineType(line); /* make sure it is one that we can parse */ if (lineType == LINE_TYPE_UNSUPPORTED) { @@ -607,7 +573,7 @@ static blt_int16s SrecParseLine(const blt_char *line, blt_addr *address, blt_int return 0; } /* verify the checksum */ - if (SrecVerifyChecksum(line) == BLT_FALSE) + if (FileSrecVerifyChecksum(line) == BLT_FALSE) { /* error on data line encountered */ return ERROR_SREC_INVALID_CHECKSUM; @@ -704,7 +670,7 @@ static blt_int16s SrecParseLine(const blt_char *line, blt_addr *address, blt_int } return data_byte_count; -} /*** end of SrecParseLine ***/ +} /*** end of FileSrecParseLine ***/ #if (BOOT_FILE_LOGGING_ENABLE > 0) diff --git a/Target/Source/file.h b/Target/Source/file.h index 1f5e8303..96a47801 100644 --- a/Target/Source/file.h +++ b/Target/Source/file.h @@ -58,14 +58,48 @@ /** \brief Error code because the program's checksum could not be written to memory. */ #define FILE_ERROR_CANNOT_WRITE_CHECKSUM (7) +/** \brief Maximum number of characters that can be on a line in the firmware file. */ +#define MAX_CHARS_PER_LINE (256) +/** \brief Maximum number of data bytes that can be on a line in the firmware file + * (S-record). + */ +#define MAX_DATA_BYTES_PER_LINE (MAX_CHARS_PER_LINE/2) +/** \brief Return code in case an invalid checksum was detected on an S-record line. */ +#define ERROR_SREC_INVALID_CHECKSUM (-1) + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +/** \brief Enumeration for the different S-record line types. */ +typedef enum +{ + LINE_TYPE_S1, /**< 16-bit address line */ + LINE_TYPE_S2, /**< 24-bit address line */ + LINE_TYPE_S3, /**< 32-bit address line */ + LINE_TYPE_UNSUPPORTED /**< unsupported line */ +} tSrecLineType; + +/** \brief Structure type for grouping the parsing results of an S-record line. */ +typedef struct +{ + blt_char line[MAX_CHARS_PER_LINE]; /**< string buffer for the line chars */ + blt_int8u data[MAX_DATA_BYTES_PER_LINE]; /**< array for S1, S2 or S3 data bytes*/ + blt_addr address; /**< address on S1, S2 or S3 line */ +} tSrecLineParseObject; + /**************************************************************************************** * Function prototypes ****************************************************************************************/ -void FileInit(void); -void FileTask(void); -blt_bool FileIsIdle(void); -blt_bool FileHandleFirmwareUpdateRequest(void); +void FileInit(void); +void FileTask(void); +blt_bool FileIsIdle(void); +blt_bool FileHandleFirmwareUpdateRequest(void); +/* functions for reading data from a Motorola S-record file. */ +tSrecLineType FileSrecGetLineType(const blt_char *line); +blt_bool FileSrecVerifyChecksum(const blt_char *line); +blt_int16s FileSrecParseLine(const blt_char *line, blt_addr *address, blt_int8u *data); #endif /* BOOT_FILE_SYS_ENABLE > 0 */