diff --git a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.elf b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.elf index 0cf17919..ca5ccd4f 100644 Binary files a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.elf and b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.elf differ diff --git a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.map b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.map index c7597035..014a061a 100644 --- a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.map +++ b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.map @@ -7,38 +7,38 @@ start address 0x08000000 Program Header: LOAD off 0x00008000 vaddr 0x08000000 paddr 0x08000000 align 2**15 - filesz 0x00001158 memsz 0x00001158 flags r-x - LOAD off 0x00010000 vaddr 0x20000000 paddr 0x08001158 align 2**15 - filesz 0x00000001 memsz 0x000006f4 flags rw- + filesz 0x00001164 memsz 0x00001164 flags r-x + LOAD off 0x00010000 vaddr 0x20000000 paddr 0x08001164 align 2**15 + filesz 0x00000001 memsz 0x000006f0 flags rw- private flags = 5000202: [Version5 EABI] [soft-float ABI] [has entry point] Sections: Idx Name Size VMA LMA File off Algn - 0 .text 00001158 08000000 08000000 00008000 2**2 + 0 .text 00001164 08000000 08000000 00008000 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .data 00000001 20000000 08001158 00010000 2**0 + 1 .data 00000001 20000000 08001164 00010000 2**0 CONTENTS, ALLOC, LOAD, DATA - 2 .bss 000006f0 20000004 0800115c 00010001 2**2 + 2 .bss 000006ec 20000004 08001168 00010001 2**2 ALLOC - 3 .debug_info 000025d6 00000000 00000000 00010001 2**0 + 3 .debug_info 0000261e 00000000 00000000 00010001 2**0 CONTENTS, READONLY, DEBUGGING - 4 .debug_abbrev 00000fe9 00000000 00000000 000125d7 2**0 + 4 .debug_abbrev 00000fe9 00000000 00000000 0001261f 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_aranges 00000318 00000000 00000000 000135c0 2**0 + 5 .debug_aranges 00000328 00000000 00000000 00013608 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_ranges 00000240 00000000 00000000 000138d8 2**0 + 6 .debug_ranges 00000250 00000000 00000000 00013930 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_line 00000d8d 00000000 00000000 00013b18 2**0 + 7 .debug_line 00000dba 00000000 00000000 00013b80 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_str 00000b8e 00000000 00000000 000148a5 2**0 + 8 .debug_str 00000b97 00000000 00000000 0001493a 2**0 CONTENTS, READONLY, DEBUGGING - 9 .comment 00000030 00000000 00000000 00015433 2**0 + 9 .comment 00000030 00000000 00000000 000154d1 2**0 CONTENTS, READONLY - 10 .ARM.attributes 00000033 00000000 00000000 00015463 2**0 + 10 .ARM.attributes 00000033 00000000 00000000 00015501 2**0 CONTENTS, READONLY - 11 .debug_frame 00000648 00000000 00000000 00015498 2**2 + 11 .debug_frame 00000674 00000000 00000000 00015534 2**2 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 00000f9b 00000000 00000000 00015ae0 2**0 + 12 .debug_loc 00000f9b 00000000 00000000 00015ba8 2**0 CONTENTS, READONLY, DEBUGGING SYMBOL TABLE: 08000000 l d .text 00000000 .text @@ -58,11 +58,11 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 main.c 00000000 l df *ABS* 00000000 boot.c 00000000 l df *ABS* 00000000 com.c -20000004 l O .bss 00000040 xcpCtoReqPacket.4160 +20000004 l O .bss 00000040 xcpCtoReqPacket.4162 20000000 l O .data 00000001 comActiveInterface 00000000 l df *ABS* 00000000 xcp.c 080003a0 l F .text 00000016 XcpSetCtoError -0800105c l O .text 00000008 xcpStationId +08001068 l O .text 00000008 xcpStationId 20000044 l O .bss 0000004c xcpInfo 00000000 l df *ABS* 00000000 backdoor.c 20000090 l O .bss 00000001 backdoorOpen @@ -71,81 +71,81 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 assert.c 00000000 l df *ABS* 00000000 cpu.c 00000000 l df *ABS* 00000000 uart.c -08000840 l F .text 0000004e UartTransmitByte -20000098 l O .bss 00000004 xcpCtoRxStartTime.4186 -2000009c l O .bss 00000001 xcpCtoRxLength.4184 -200000a0 l O .bss 00000041 xcpCtoReqPacket.4183 -200000e4 l O .bss 00000001 xcpCtoRxInProgress.4185 +08000844 l F .text 0000004e UartTransmitByte +20000098 l O .bss 00000004 xcpCtoRxStartTime.4188 +2000009c l O .bss 00000041 xcpCtoReqPacket.4185 +200000e0 l O .bss 00000001 xcpCtoRxLength.4186 +200000e1 l O .bss 00000001 xcpCtoRxInProgress.4187 00000000 l df *ABS* 00000000 nvm.c 00000000 l df *ABS* 00000000 timer.c -200000e8 l O .bss 00000004 millisecond_counter +200000e4 l O .bss 00000004 millisecond_counter 00000000 l df *ABS* 00000000 flash.c -08000ac8 l F .text 00000012 FlashLock -08000adc l F .text 00000044 FlashGetSector -08000b20 l F .text 000000d0 FlashWriteBlock -08000bf0 l F .text 00000062 FlashSwitchBlock -08000c54 l F .text 00000084 FlashAddToBlock -0800108c l O .text 0000009c flashLayout -200000ec l O .bss 00000204 bootBlockInfo -200002f0 l O .bss 00000204 blockInfo +08000acc l F .text 00000012 FlashLock +08000ae0 l F .text 00000044 FlashGetSector +08000b24 l F .text 000000d0 FlashWriteBlock +08000bf4 l F .text 00000062 FlashSwitchBlock +08000c58 l F .text 00000084 FlashAddToBlock +08001098 l O .text 0000009c flashLayout +200000e8 l O .bss 00000204 bootBlockInfo +200002ec l O .bss 00000204 blockInfo 00000000 l df *ABS* 00000000 cpu_comp.c 00000000 l df *ABS* 00000000 cstart.c -08001038 l F .text 00000000 zero_loop +08001040 l F .text 00000000 zero_loop 00000000 l df *ABS* 00000000 00000200 l *ABS* 00000000 __STACKSIZE__ 080002ec g F .text 00000018 ComInit -08000cf4 g F .text 00000050 FlashWrite -080007dc g F .text 00000008 AssertFailure -08000ff8 g F .text 00000054 reset_handler -08000a90 g F .text 00000022 TimerUpdate +08000cf8 g F .text 00000050 FlashWrite +080007e0 g F .text 00000008 AssertFailure +08000ffc g F .text 00000058 reset_handler +08000a94 g F .text 00000022 TimerUpdate 080003e8 g F .text 00000010 XcpPacketTransmitted 08000304 g F .text 0000002c ComTask 080002bc g F .text 0000001c BootInit -080007b0 g F .text 00000022 BackDoorInit -080007d8 g F .text 00000002 CopService -08001158 g .text 00000000 _etext -08000ff0 g F .text 00000004 CpuIrqDisable -08000fd0 g F .text 0000000a FlashGetUserProgBaseAddress -08000a80 g F .text 0000000e TimerReset +080007b4 g F .text 00000022 BackDoorInit +080007dc g F .text 00000002 CopService +08001164 g .text 00000000 _etext +08000ff4 g F .text 00000004 CpuIrqDisable +08000fd4 g F .text 0000000a FlashGetUserProgBaseAddress +08000a84 g F .text 0000000e TimerReset 080002d8 g F .text 00000014 BootTask -08000ec4 g F .text 00000058 FlashWriteChecksum +08000ec8 g F .text 00000058 FlashWriteChecksum 08000334 g F .text 0000001a ComTransmitPacket 080003d4 g F .text 00000012 XcpIsConnected -08000a1c g F .text 00000008 NvmInit -08000cd8 g F .text 0000001a FlashInit -08000a3c g F .text 00000008 NvmGetUserProgBaseAddress -200004f4 g .bss 00000000 _ebss -08000fdc g F .text 00000012 UnusedISR +08000a20 g F .text 00000008 NvmInit +08000cdc g F .text 0000001a FlashInit +08000a40 g F .text 00000008 NvmGetUserProgBaseAddress +200004f0 g .bss 00000000 _ebss +08000fe0 g F .text 00000012 UnusedISR 08000330 g F .text 00000002 ComFree -08000890 g F .text 0000002a UartInit -08000a2c g F .text 00000008 NvmErase +08000894 g F .text 0000002a UartInit +08000a30 g F .text 00000008 NvmErase 20000004 g .bss 00000000 _bss -080003f8 g F .text 00000376 XcpPacketReceived -080007e4 g F .text 00000008 CpuInit -08000f84 g F .text 0000004c FlashDone +080003f8 g F .text 0000037a XcpPacketReceived +080007e8 g F .text 00000008 CpuInit +08000f88 g F .text 0000004c FlashDone 080003b8 g F .text 0000001c XcpInit -08000d44 g F .text 0000017e FlashErase +08000d48 g F .text 0000017e FlashErase 08000150 g F .text 0000016a main -08000a44 g F .text 00000012 NvmDone -080008bc g F .text 00000066 UartTransmitPacket -08000a34 g F .text 00000008 NvmVerifyChecksum -08000820 g F .text 0000001e CpuMemCopy +08000a48 g F .text 00000012 NvmDone +080008c0 g F .text 00000066 UartTransmitPacket +08000a38 g F .text 00000008 NvmVerifyChecksum +08000824 g F .text 0000001e CpuMemCopy 08000374 g F .text 00000024 ComGetActiveInterfaceMaxTxLen -08000924 g F .text 000000f8 UartReceivePacket -08000ff4 g F .text 00000004 CpuIrqEnable +08000928 g F .text 000000f8 UartReceivePacket +08000ff8 g F .text 00000004 CpuIrqEnable 20000000 g .data 00000000 _data -080007d4 g F .text 00000002 CopInit -08000a24 g F .text 00000008 NvmWrite -080007ec g F .text 00000034 CpuStartUserProgram -200006f4 g .bss 00000000 _estack -08000f1c g F .text 00000068 FlashVerifyChecksum +080007d8 g F .text 00000002 CopInit +08000a28 g F .text 00000008 NvmWrite +080007f0 g F .text 00000034 CpuStartUserProgram +200006f0 g .bss 00000000 _estack +08000f20 g F .text 00000068 FlashVerifyChecksum 20000001 g .data 00000000 _edata 08000000 g O .text 00000150 _vectab 08000398 g F .text 00000008 ComIsConnected 08000350 g F .text 00000024 ComGetActiveInterfaceMaxRxLen -08000770 g F .text 00000040 BackDoorCheck -200004f4 g .bss 00000000 _stack -08000ab4 g F .text 00000012 TimerGet -08000a58 g F .text 00000028 TimerInit +08000774 g F .text 00000040 BackDoorCheck +200004f0 g .bss 00000000 _stack +08000ab8 g F .text 00000012 TimerGet +08000a5c g F .text 00000028 TimerInit diff --git a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.srec b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.srec index 6c9ecb29..c6fb6910 100644 --- a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.srec +++ b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/bin/openblt_demoprog_nucleo_stm32f103rb.srec @@ -1,25 +1,25 @@ S02B000062696E2F6F70656E626C745F64656D6F70726F675F6E75636C656F5F73746D33326631303372622EC3 -S31508000000F4060020F90F0008DD0F0008DD0F0008D0 -S31508000010DD0F0008DD0F0008DD0F0008DD0F000802 -S31508000020DD0F0008DD0F0008DD0F0008DD0F0008F2 -S31508000030DD0F0008DD0F0008DD0F0008DD0F0008E2 -S31508000040DD0F0008DD0F0008DD0F0008DD0F0008D2 -S31508000050DD0F0008DD0F0008DD0F0008DD0F0008C2 -S31508000060DD0F0008DD0F0008DD0F0008DD0F0008B2 -S31508000070DD0F0008DD0F0008DD0F0008DD0F0008A2 -S31508000080DD0F0008DD0F0008DD0F0008DD0F000892 -S31508000090DD0F0008DD0F0008DD0F0008DD0F000882 -S315080000A0DD0F0008DD0F0008DD0F0008DD0F000872 -S315080000B0DD0F0008DD0F0008DD0F0008DD0F000862 -S315080000C0DD0F0008DD0F0008DD0F0008DD0F000852 -S315080000D0DD0F0008DD0F0008DD0F0008DD0F000842 -S315080000E0DD0F0008DD0F0008DD0F0008DD0F000832 -S315080000F0DD0F0008DD0F0008DD0F0008DD0F000822 -S31508000100DD0F0008DD0F0008DD0F0008DD0F000811 -S31508000110DD0F0008DD0F0008DD0F0008DD0F000801 -S31508000120DD0F0008DD0F0008DD0F0008DD0F0008F1 -S31508000130DD0F0008DD0F0008DD0F0008DD0F0008E1 -S31508000140DD0F0008DD0F0008DD0F0008DD0F0008D1 +S31508000000F0060020FD0F0008E10F0008E10F0008C8 +S31508000010E10F0008E10F0008E10F0008E10F0008F2 +S31508000020E10F0008E10F0008E10F0008E10F0008E2 +S31508000030E10F0008E10F0008E10F0008E10F0008D2 +S31508000040E10F0008E10F0008E10F0008E10F0008C2 +S31508000050E10F0008E10F0008E10F0008E10F0008B2 +S31508000060E10F0008E10F0008E10F0008E10F0008A2 +S31508000070E10F0008E10F0008E10F0008E10F000892 +S31508000080E10F0008E10F0008E10F0008E10F000882 +S31508000090E10F0008E10F0008E10F0008E10F000872 +S315080000A0E10F0008E10F0008E10F0008E10F000862 +S315080000B0E10F0008E10F0008E10F0008E10F000852 +S315080000C0E10F0008E10F0008E10F0008E10F000842 +S315080000D0E10F0008E10F0008E10F0008E10F000832 +S315080000E0E10F0008E10F0008E10F0008E10F000822 +S315080000F0E10F0008E10F0008E10F0008E10F000812 +S31508000100E10F0008E10F0008E10F0008E10F000801 +S31508000110E10F0008E10F0008E10F0008E10F0008F1 +S31508000120E10F0008E10F0008E10F0008E10F0008E1 +S31508000130E10F0008E10F0008E10F0008E10F0008D1 +S31508000140E10F0008E10F0008E10F0008E10F0008C1 S3150800015000B583B00023009301934FF48053C4F293 S3150800016002031A6842F001021A6059680022CFF6A3 S31508000170FF020A405A601A6822F0847222F480321A @@ -28,8 +28,8 @@ S315080001905A604FF41F029A601A6842F480321A6055 S315080001A04FF48053C4F2020340F2DC52196801F49A S315080001B000310191009901310091019911B9009915 S315080001C09142F3D14FF48053C4F202031B6813F42F -S315080001D0003F06D141F25400C0F600006E2100F03F -S315080001E0FDFA4FF40053C4F202031A6842F01002F3 +S315080001D0003F06D141F26000C0F600006E2100F033 +S315080001E0FFFA4FF40053C4F202031A6842F01002F1 S315080001F01A601A6822F003021A601A6842F00202AC S315080002001A604FF48053C4F202035A685A605A6857 S3150800021042F400525A605A6842F480625A605A6838 @@ -43,15 +43,15 @@ S315080002809A6942F005029A614FF40063C4F20103C9 S315080002901A6822F470621A601A6842F430621A60A8 S315080002A01A6822F470421A601A6842F480421A6088 S315080002B000F004F800F010F8FCE700BF08B500F0FD -S315080002C091FA00F087FA00F0C7FB00F0A7FB00F0F0 -S315080002D00DF800F06DFA08BD08B500F07DFA00F0DB -S315080002E0D7FB00F00FF800F043FA08BD08B500F098 -S315080002F063F800F0CDFA40F20003C2F200030022D0 +S315080002C093FA00F089FA00F0C9FB00F0A9FB00F0E8 +S315080002D00DF800F06FFA08BD08B500F07FFA00F0D7 +S315080002E0D9FB00F00FF800F045FA08BD08B500F094 +S315080002F063F800F0CFFA40F20003C2F200030022CE S315080003001A7008BD08B540F20400C2F2000000F0F9 -S3150800031009FB01280BD140F20003C2F200030022B8 +S315080003100BFB01280BD140F20003C2F200030022B6 S315080003201A7040F20400C2F2000000F065F808BD39 S31508000330704700BF08B540F20003C2F200031B78FD -S3150800034013B9C9B200F0BAFA00F04EF808BD00BFFA +S3150800034013B9C9B200F0BCFA00F04EF808BD00BFF8 S3150800035040F20003C2F200031878022806D00328E8 S3150800036006D001280CBF082040207047002070479F S315080003700020704740F20003C2F2000318780228F2 @@ -63,219 +63,220 @@ S315080003C000221A709A6483F84320A3F844209A708E S315080003D05A70704740F24403C2F20003187800309E S315080003E018BF0120704700BF40F24403C2F2000361 S315080003F0002283F84320704738B504460178FF2960 -S315080004001CD140F24404C2F20004002363700125A3 +S315080004001ED140F24404C2F20004002363700125A1 S315080004102570FF22E270102222716371FFF798FFA0 S31508000420A071FFF7A7FFE071FFF7A4FF000A20728B -S315080004306572A5720823A4F8443079E140F24403B2 -S31508000440C2F200031B78012B40F09081C939352987 -S3150800045000F26B81DFE811F0DB00690169016501D3 -S31508000460690169015901FC0042012F01690169010D +S315080004306572A5720823A4F8443000F0F1FA79E150 +S3150800044040F24403C2F200031B78012B40F090816E +S31508000450C939352900F26B81DFE811F0DB00690143 +S3150800046069016501690169015901FC0042012F0111 S31508000470690169016901690169016901690169011E S31508000480690169016901690169016901690169010E S3150800049069016901690169016901690169016901FE -S315080004A06901690169016901690169017F005400EF -S315080004B036007300690169016901A1006901B90083 -S315080004C0BD00CE004578FFF743FF0138854203DDBE -S315080004D02220FFF765FF2BE140F24405C2F2000532 -S315080004E0281DA96C627800F09BF9FF23EB706278EF -S315080004F0AB6C1344AB6463780133A5F8443017E159 -S315080005004578FFF725FF0138854203DD2220FFF7EE -S3150800051047FF0DE1616840F24405C2F20005A9648F -S31508000520281D627800F07CF9FF23EB706278AB6CCB -S315080005301344AB6463780133A5F84430F8E040F21D -S315080005404403C2F20003FF22DA7042689A64012269 -S31508000550A3F84420ECE040F24403C2F20003FF2271 -S31508000560DA709B6C406840B11844002213F8011BEE -S315080005700A44D2B28342F9D100E0002240F2440391 -S31508000580C2F20003C3F8072001221A7100225A7129 -S315080005909A710822A3F84420CAE040F24403C2F242 -S315080005A00003FF22DA7041F25C02C0F600029A6488 -S315080005B000221A715A719A710721D9711A725A72E0 -S315080005C09A720822A3F84420B2E00020FFF7E8FE5A -S315080005D0AEE040F24403C2F20003FF22DA700022C2 -S315080005E01A71597859719A71DA711A720622A3F832 -S315080005F044209DE040F24403C2F2000300221A7030 -S315080006005A70FF22DA700122A3F8442090E040F2E3 -S315080006104403C2F200039D6CFFF79AFE411E28466A -S31508000620621C00F0FFF918B93120FFF7B9FE7FE028 -S3150800063040F24404C2F20004FF23E370A56CFFF7FE -S3150800064087FE013D2844A0640123A4F844306FE0E6 -S315080006504578FFF77DFE0238854203DD2220FFF745 -S315080006609FFE65E040F24403C2F20003FF22DA70FF -S315080006700122A3F84420617839B900F0E3F900288B -S3150800068056D13120FFF78CFE52E040F24403C2F205 -S315080006900003986CA21C00F0C5F918B93120FFF7C1 -S315080006A07FFE45E040F24403C2F2000361789A6C8B -S315080006B00A449A643CE040F24404C2F20004FF2370 -S315080006C0E370002525716571FFF742FEA071E5719B -S315080006D0257265720723A4F8443029E040F24403E2 -S315080006E0C2F20003986C616800F0A0F918B93120CD -S315080006F0FFF756FE1CE040F24403C2F20003FF2255 -S31508000700DA700122A3F8442012E000F06FF840F2F4 -S315080007104403C2F20003FF22DA700122A3F8442040 -S3150800072006E03120FFF73CFE02E02020FFF738FE06 -S3150800073040F24403C2F2000393F84330012B02D17E -S315080007401020FFF72DFE40F24403C2F20003B3F86F -S3150800075044100BB2002B09DD40F24400C2F200003F -S31508000760012380F843300330FFF7E4FD38BD00BFAE -S3150800077008B5FFF711FE012819D040F29003C2F21E -S3150800078000031B78012B12D100F094F940F2940370 -S31508000790C2F200031B6803F5FA73984207D340F2C6 -S315080007A09003C2F2000300221A7000F01FF808BD79 -S315080007B008B540F29003C2F2000301221A7000F055 -S315080007C079F940F29403C2F200031860FFF7D0FFEC -S315080007D008BD00BF704700BF704700BF08B5FFF7E8 -S315080007E0FBFFFCE708B500F003FC08BD10B500F0F8 -S315080007F021F9A0B1FFF79CFD00F042F900F01EF9BF -S3150800080020F0604020F07F004EF60853CEF2000339 -S31508000810186000F013F9446800F0ECFBA04710BD1F -S3150800082070B5561EB6B24AB14C1E0E44451A14F897 -S31508000830013F2B55FFF7D0FFB442F8D170BD00BF7A -S3150800084010B54FF48843C4F200031B8803F08003F5 -S315080008509BB2B3B14FF48843C4F2000398801B8857 -S3150800086003F080039BB273B94FF48844C4F20004C2 -S31508000870FFF7B2FF238803F080039BB2002BF7D063 -S3150800088003E0002010BD012010BD012010BD00BFEF -S315080008904FF48843C4F2000300221A819A811A820F -S315080008A09A821A8340F271221A819A8992B242F484 -S315080008B0005242F00C029A81704700BF2DE9F041C0 -S315080008C006460C46402906D941F26400C0F60000E7 -S315080008D08D21FFF783FF2046FFF7B2FF012806D0D8 -S315080008E041F26400C0F600009121FFF777FF254624 -S315080008F0ACB1002441F26407C0F600074FF09A082D -S31508000900FFF76AFF305DFFF79BFF012803D03846E3 -S315080009104146FFF763FF0134A3B2AB42F0D3BDE80B -S31508000920F08100BF10B540F2E403C2F200031B7861 -S315080009305BBB4FF48843C4F200031B8803F0200313 -S315080009409BB2002B56D04FF48843C4F200039A8812 -S3150800095092B240F2A003C2F200031A7012F0FF0F1F -S315080009604AD000F0A7F840F29803C2F200031860D4 -S3150800097040F29C03C2F200030020187040F2E40320 -S31508000980C2F2000301221A7010BD40F29C03C2F2A3 -S3150800099000031A784FF48843C4F200031B8803F057 -S315080009A020039BB263B34FF48843C4F200039C88C8 -S315080009B040F2A003C2F2000399184C700132D2B279 -S315080009C040F29C01C2F200010A701B78934215D1CD -S315080009D01149FFF725FF40F2E403C2F200030022A3 -S315080009E01A70012010BD40F2E403C2F20003002091 -S315080009F0187010BD002010BD002010BD002010BDCD -S31508000A0000F058F840F29803C2F200031B686433FA -S31508000A109842E8D8002010BDA100002008B500F0D3 -S31508000A205BF908BD08B500F065F908BD08B500F022 -S31508000A3089F908BD08B500F071FA08BD08B500F0D7 -S31508000A40C7FA08BD08B500F03DFA10B100F09AFAE9 -S31508000A5008BD002008BD00BF4EF21003CEF2000309 -S31508000A6000221A6041F63F11C0F2010159609A60EE -S31508000A700521196040F2E803C2F200031A607047C4 -S31508000A804EF21003CEF2000300221A60704700BF30 -S31508000A904EF21003CEF200031B6813F4803F1FBF0B -S31508000AA040F2E803C2F200031A68013218BF1A605E -S31508000AB0704700BF08B5FFF7EBFF40F2E803C2F244 -S31508000AC00003186808BD00BF4FF40053C4F20203C0 -S31508000AD01A6942F080021A61704700BFF8B50746E6 -S31508000AE00024254641F28C06C0F60006FFF774FE80 -S31508000AF0A359BB420ED8311949680B449F4209D203 -S31508000B0041F28C03C0F6000305EB450203EB8203B2 -S31508000B10187AF8BD01350C349C2CE7D1FF20F8BDB6 -S31508000B202DE9F84380460068FFF7D8FFFF285CD018 -S31508000B304FF40053C4F2020340F22312C4F2675280 -S31508000B405A6048F6AB12CCF6EF525A603422DA6095 -S31508000B50DB6813F0010F04D0FFF7B6FF0020BDE8ED -S31508000B60F8834FF40053C4F202031A6942F00102F3 -S31508000B701A61002508F104094FF40054C4F202046E -S31508000B80D8F80030EF1859F80560B2B2EA52E368AF -S31508000B9013F0010F05D0FFF71FFEE36813F0010FEE -S31508000BA0F9D1330C7B80E36813F0010F05D0FFF70A -S31508000BB013FEE36813F0010FF9D13B68B34204D181 -S31508000BC00435B5F5007FDBD101E0002400E00124FF -S31508000BD04FF40053C4F202031A6922F001021A61A3 -S31508000BE0FFF772FF2046BDE8F8830020BDE8F883CA -S31508000BF038B504460D4640F2EC03C2F200039842AB -S31508000C0009D04FF4C043C0F6000399420BD0FFF752 -S31508000C1087FF20B917E040F2F024C2F20004C5F3BA -S31508000C20080393B903E040F2EC04C2F20004236817 -S31508000C309D420CD0204640F8045B29464FF40072CA -S31508000C40FFF7EEFD03E0002038BD002038BD204642 -S31508000C5038BD00BF2DE9F04106460C4617461D462D -S31508000C604FEA51284FEA48280368B3F1FF3F06D1F7 -S31508000C7040F8048B41464FF40072FFF7D1FD336804 -S31508000C80434505D030464146FFF7B2FF0646D0B188 -S31508000C903368E41A3444043408F50078FFF79CFDF9 -S31508000CA0331DE31AB3F5007F06D330464146FFF7F6 -S31508000CB09FFF064650B1041D17F8013B04F8013B97 -S31508000CC0013DEBD105E00020BDE8F0810020BDE83C -S31508000CD0F0810120BDE8F08140F2F023C2F2000362 -S31508000CE04FF0FF321A6040F2EC03C2F200031A60BA -S31508000CF0704700BF70B504460D461646FFF7EEFE70 -S31508000D00FF281BD0681E2044FFF7E8FEFF2817D0EF -S31508000D10620A4FF4C043C0F60003B3EB422F07BF85 -S31508000D2040F2EC00C2F2000040F2F020C2F20000ED -S31508000D30214632462B46FFF78DFF70BD002070BD59 -S31508000D40002070BD2DE9F84304460E46FFF7C6FE9F -S31508000D500546701E2044FFF7C1FE0446FF2D18BF46 -S31508000D60FF2800F0AB80854200F29F80022D40F2FA -S31508000D709F800F2800F29F804FF40053C4F20203AD -S31508000D8040F22312C4F267525A6048F6AB12CCF608 -S31508000D90EF525A603422DA60DB6813F0010F04D090 -S31508000DA0FFF792FE0020BDE8F8834FF40053C4F223 -S31508000DB002031A6942F002021A6141F28C09C0F66E -S31508000DC000094F460026FFF707FD3B7AAB4208D1DC -S31508000DD041F28C03C0F6000306EB460253F8227074 -S31508000DE005E001360C370D2EEDD14FF0FF37C8461A -S31508000DF00025FFF7F1FC98F80830A34208D141F224 -S31508000E008C03C0F6000305EB450253F8228006E082 -S31508000E10013508F10C080D2DEBD14FF0FF384E4681 -S31508000E200025FFF7D9FC337AA34209D141F28C0396 -S31508000E30C0F6000305EB450203EB82035B6804E09A -S31508000E4001350C360D2DECD10023C7EB08084344B9 -S31508000E50C3F38F23E3B1013B9EB20136B6020025E8 -S31508000E604FF40054C4F20204EB196361236943F09A -S31508000E7040032361E36813F0010F05D0FFF7ACFCCC -S31508000E80E36813F0010FF9D105F58065B542EBD19A -S31508000E904FF40053C4F202031A6922F002021A61DF -S31508000EA0FFF712FE0120BDE8F8830020BDE8F883AD -S31508000EB00020BDE8F8830020BDE8F8830020BDE8DF -S31508000EC0F88300BF00B583B040F2EC03C2F200031A -S31508000ED01B68B3F1FF3F08BF01201CD040F2EC03AA -S31508000EE0C2F2000399685A681144DA6811441A690B -S31508000EF011445A6911449A690A44D96953185B42DC -S31508000F0002AA42F8043D46F25010C0F60000042139 -S31508000F10FFF7F0FEFFE703B05DF804FB46F20402B4 -S31508000F20C0F600024FF4C043C0F6000310681B6801 -S31508000F30184446F20803C0F600031B68184446F234 -S31508000F400C03C0F600031B68184446F21003C0F6EB -S31508000F5000031B68184446F21403C0F600031B6816 -S31508000F60184446F21803C0F600031B68184446F2F4 -S31508000F705013C0F600031B681844D0F1010038BFAF -S31508000F800020704708B540F2EC03C2F200031B6864 -S31508000F90B3F1FF3F06D040F2EC00C2F20000FFF7C3 -S31508000FA0BFFD88B140F2F023C2F200031B68B3F11B -S31508000FB0FF3F0BD040F2F020C2F20000FFF7B0FD71 -S31508000FC0003018BF012008BD002008BD012008BD5B -S31508000FD04FF4C040C0F60000704700BF08B541F2A4 -S31508000FE02810C0F600003121FFF7F8FB08BD00BF46 -S31508000FF072B6704762B6704710B540F20002C2F288 -S31508001000000240F20103C2F200039A4210D2131DF5 -S315080010100D4CE41A24F0030404340023104641F26C -S315080010205811C0F600015A581A500433A342FAD18F -S31508001030064807494FF000028842B8BF40F8042B1B -S31508001040FADBFFF785F810BD040000200400002035 -S31508001050F40400206D61696E2E6300004F70656EA2 -S31508001060424C54002E2E2F2E2E2F2E2E2F536F75B8 -S315080010707263652F41524D434D335F53544D33329E -S3150800108046312F756172742E6300000000600008F7 -S315080010900020000003000000008000080020000077 -S315080010A00400000000A00008002000000500000061 -S315080010B000C00008002000000600000000E000084C -S315080010C000200000070000000000010800200000C2 -S315080010D008000000002001080020000009000000A8 -S315080010E000400108002000000A0000000060010816 -S315080010F0002000000B00000000800108002000000E -S315080011000C00000000A00108002000000D000000EF -S3150800111000C00108002000000E00000000E00108E1 -S31508001120002000000F0000002E2E2F2E2E2F2E2E10 -S315080011302F536F757263652F41524D434D335F537D -S31508001140544D333246312F4743432F766563746FC8 -S30D0800115072732E630000000013 -S306080011580484 +S315080004A069016901690169016901690169016901EE +S315080004B07F00540036007300690169016901A100D3 +S315080004C06901B900BD00CE004578FFF741FF013844 +S315080004D0854203DD2220FFF763FF2BE140F2440546 +S315080004E0C2F20005281DA96C627800F09BF9FF236B +S315080004F0EB706278AB6C1344AB6463780133A5F890 +S31508000500443017E14578FFF723FF0138854203DDBC +S315080005102220FFF745FF0DE1616840F24405C2F26B +S315080005200005A964281D627800F07CF9FF23EB70AA +S315080005306278AB6C1344AB6463780133A5F8443036 +S31508000540F8E040F24403C2F20003FF22DA70426880 +S315080005509A640122A3F84420ECE040F24403C2F274 +S315080005600003FF22DA709B6C406840B118440022F1 +S3150800057013F8011B0A44D2B28342F9D100E00022E3 +S3150800058040F24403C2F20003C3F8072001221A719D +S3150800059000225A719A710822A3F84420CAE040F250 +S315080005A04403C2F20003FF22DA7041F26802C0F681 +S315080005B000029A6400221A715A719A710721D97138 +S315080005C01A725A729A720822A3F84420B2E00020DE +S315080005D0FFF7E6FEAEE040F24403C2F20003FF2254 +S315080005E0DA7000221A71597859719A71DA711A7289 +S315080005F00622A3F844209DE040F24403C2F2000319 +S3150800060000221A705A70FF22DA700122A3F84420D9 +S3150800061090E040F24403C2F200039D6CFFF798FE97 +S31508000620411E2846621C00F0FFF918B93120FFF771 +S31508000630B7FE7FE040F24404C2F20004FF23E370F1 +S31508000640A56CFFF785FE013D2844A0640123A4F8A4 +S3150800065044306FE04578FFF77BFE0238854203DDBC +S315080006602220FFF79DFE65E040F24403C2F2000334 +S31508000670FF22DA700122A3F84420617839B900F024 +S31508000680E3F9002856D13120FFF78AFE52E040F2FE +S315080006904403C2F20003986CA21C00F0C5F918B90D +S315080006A03120FFF77DFE45E040F24403C2F2000325 +S315080006B061789A6C0A449A643CE040F24404C2F2B7 +S315080006C00004FF23E370002525716571FFF740FEDE +S315080006D0A071E571257265720723A4F8443029E0F4 +S315080006E040F24403C2F20003986C616800F0A0F976 +S315080006F018B93120FFF754FE1CE040F24403C2F259 +S315080007000003FF22DA700122A3F8442012E000F069 +S315080007106FF840F24403C2F20003FF22DA700122A6 +S31508000720A3F8442006E03120FFF73AFE02E0202035 +S31508000730FFF736FE40F24403C2F2000393F8433053 +S31508000740012B02D11020FFF72BFE40F24403C2F220 +S315080007500003B3F844100BB2002B09DD40F2440045 +S31508000760C2F20000012380F843300330FFF7E2FDB0 +S3150800077038BD00BF08B5FFF70FFE012819D040F2B3 +S315080007809003C2F200031B78012B12D100F094F9F2 +S3150800079040F29403C2F200031B6803F5FA73984209 +S315080007A007D340F29003C2F2000300221A7000F049 +S315080007B01FF808BD08B540F29003C2F200030122F3 +S315080007C01A7000F079F940F29403C2F20003186037 +S315080007D0FFF7D0FF08BD00BF704700BF704700BFD6 +S315080007E008B5FFF7FBFFFCE708B500F003FC08BDFA +S315080007F010B500F021F9A0B1FFF79AFD00F042F913 +S3150800080000F01EF920F0604020F07F004EF60853F5 +S31508000810CEF20003186000F013F9446800F0ECFB10 +S31508000820A04710BD70B5561EB6B24AB14C1E0E444E +S31508000830451A14F8013F2B55FFF7D0FFB442F8D1FB +S3150800084070BD00BF10B54FF48843C4F200031B887F +S3150800085003F080039BB2B3B14FF48843C4F200039C +S3150800086098801B8803F080039BB273B94FF48844C1 +S31508000870C4F20004FFF7B2FF238803F080039BB29B +S31508000880002BF7D003E0002010BD012010BD012089 +S3150800089010BD00BF4FF48843C4F2000300221A813A +S315080008A09A811A829A821A8340F271221A819A8947 +S315080008B092B242F4005242F00C029A81704700BF8D +S315080008C02DE9F04106460C46402906D941F270004A +S315080008D0C0F600008D21FFF783FF2046FFF7B2FF21 +S315080008E0012806D041F27000C0F600009121FFF7FA +S315080008F077FF2546ACB1002441F27007C0F6000721 +S315080009004FF09A08FFF76AFF305DFFF79BFF012853 +S3150800091003D038464146FFF763FF0134A3B2AB4222 +S31508000920F0D3BDE8F08100BF10B540F2E103C2F292 +S3150800093000031B785BBB4FF48843C4F200031B8893 +S3150800094003F020039BB2002B56D04FF48843C4F221 +S3150800095000039A8892B240F29C03C2F200031A700E +S3150800096012F0FF0F4AD000F0A7F840F29803C2F23F +S315080009700003186040F2E003C2F20003002018707A +S3150800098040F2E103C2F2000301221A7010BD40F2E0 +S31508000990E003C2F200031A784FF48843C4F2000356 +S315080009A01B8803F020039BB263B34FF48843C4F259 +S315080009B000039C8840F29C03C2F2000399184C700D +S315080009C00132D2B240F2E001C2F200010A701B788D +S315080009D0934215D11149FFF725FF40F2E103C2F210 +S315080009E0000300221A70012010BD40F2E103C2F292 +S315080009F000030020187010BD002010BD002010BD97 +S31508000A00002010BD00F058F840F29803C2F2000327 +S31508000A101B6864339842E8D8002010BD9D0000206A +S31508000A2008B500F05BF908BD08B500F065F908BD22 +S31508000A3008B500F089F908BD08B500F071FA08BDD7 +S31508000A4008B500F0C7FA08BD08B500F03DFA10B1C0 +S31508000A5000F09AFA08BD002008BD00BF4EF2100348 +S31508000A60CEF2000300221A6041F63F11C0F20101DE +S31508000A7059609A600521196040F2E403C2F2000346 +S31508000A801A6070474EF21003CEF2000300221A6075 +S31508000A90704700BF4EF21003CEF200031B6813F432 +S31508000AA0803F1FBF40F2E403C2F200031A68013216 +S31508000AB018BF1A60704700BF08B5FFF7EBFF40F292 +S31508000AC0E403C2F20003186808BD00BF4FF40053E0 +S31508000AD0C4F202031A6942F080021A61704700BF25 +S31508000AE0F8B507460024254641F29806C0F60006E2 +S31508000AF0FFF774FEA359BB420ED8311949680B4457 +S31508000B009F4209D241F29803C0F6000305EB45025D +S31508000B1003EB8203187AF8BD01350C349C2CE7D117 +S31508000B20FF20F8BD2DE9F84380460068FFF7D8FF97 +S31508000B30FF285CD04FF40053C4F2020340F223129C +S31508000B40C4F267525A6048F6AB12CCF6EF525A60B6 +S31508000B503422DA60DB6813F0010F04D0FFF7B6FF22 +S31508000B600020BDE8F8834FF40053C4F202031A6963 +S31508000B7042F001021A61002508F104094FF40054F5 +S31508000B80C4F20204D8F80030EF1859F80560B2B27A +S31508000B90EA52E36813F0010F05D0FFF71FFEE3687A +S31508000BA013F0010FF9D1330C7B80E36813F0010FC2 +S31508000BB005D0FFF713FEE36813F0010FF9D13B6880 +S31508000BC0B34204D10435B5F5007FDBD101E000243A +S31508000BD000E001244FF40053C4F202031A6922F01C +S31508000BE001021A61FFF772FF2046BDE8F88300206C +S31508000BF0BDE8F88338B504460D4640F2E803C2F26C +S31508000C000003984209D04FF4C043C0F60003994246 +S31508000C100BD0FFF787FF20B917E040F2EC24C2F2A9 +S31508000C200004C5F3080393B903E040F2E804C2F2EE +S31508000C30000423689D420CD0204640F8045B2946F0 +S31508000C404FF40072FFF7EEFD03E0002038BD0020E8 +S31508000C5038BD204638BD00BF2DE9F04106460C4692 +S31508000C6017461D464FEA51284FEA48280368B3F14C +S31508000C70FF3F06D140F8048B41464FF40072FFF758 +S31508000C80D1FD3368434505D030464146FFF7B2FFEC +S31508000C900646D0B13368E41A3444043408F50078BB +S31508000CA0FFF79CFD331DE31AB3F5007F06D33046E4 +S31508000CB04146FFF79FFF064650B1041D17F8013B52 +S31508000CC004F8013B013DEBD105E00020BDE8F081C9 +S31508000CD00020BDE8F0810120BDE8F08140F2EC2358 +S31508000CE0C2F200034FF0FF321A6040F2E803C2F284 +S31508000CF000031A60704700BF70B504460D461646D5 +S31508000D00FFF7EEFEFF281BD0681E2044FFF7E8FE1B +S31508000D10FF2817D0620A4FF4C043C0F60003B3EBAE +S31508000D20422F07BF40F2E800C2F2000040F2EC2072 +S31508000D30C2F20000214632462B46FFF78DFF70BDF2 +S31508000D40002070BD002070BD2DE9F84304460E460C +S31508000D50FFF7C6FE0546701E2044FFF7C1FE04468F +S31508000D60FF2D18BFFF2800F0AB80854200F29F8058 +S31508000D70022D40F29F800F2800F29F804FF4005307 +S31508000D80C4F2020340F22312C4F267525A6048F6CC +S31508000D90AB12CCF6EF525A603422DA60DB6813F0F5 +S31508000DA0010F04D0FFF792FE0020BDE8F8834FF448 +S31508000DB00053C4F202031A6942F002021A6141F2B0 +S31508000DC09809C0F600094F460026FFF707FD3B7A4B +S31508000DD0AB4208D141F29803C0F6000306EB46027F +S31508000DE053F8227005E001360C370D2EEDD14FF081 +S31508000DF0FF37C8460025FFF7F1FC98F80830A342EC +S31508000E0008D141F29803C0F6000305EB450253F8F2 +S31508000E10228006E0013508F10C080D2DEBD14FF0C4 +S31508000E20FF384E460025FFF7D9FC337AA34209D18D +S31508000E3041F29803C0F6000305EB450203EB820373 +S31508000E405B6804E001350C360D2DECD10023C7EBA9 +S31508000E5008084344C3F38F23E3B1013B9EB201362E +S31508000E60B60200254FF40054C4F20204EB1963617C +S31508000E70236943F040032361E36813F0010F05D0AB +S31508000E80FFF7ACFCE36813F0010FF9D105F58065AF +S31508000E90B542EBD14FF40053C4F202031A6922F0AB +S31508000EA002021A61FFF712FE0120BDE8F88300204E +S31508000EB0BDE8F8830020BDE8F8830020BDE8F88384 +S31508000EC00020BDE8F88300BF00B583B040F2E80310 +S31508000ED0C2F200031B68B3F1FF3F08BF01201CD014 +S31508000EE040F2E803C2F2000399685A681144DA68C6 +S31508000EF011441A6911445A6911449A690A44D9690C +S31508000F0053185B4202AA42F8043D46F25010C0F656 +S31508000F1000000421FFF7F0FEFFE703B05DF804FBCD +S31508000F2046F20402C0F600024FF4C043C0F60003BE +S31508000F3010681B68184446F20803C0F600031B68CD +S31508000F40184446F20C03C0F600031B68184446F220 +S31508000F501003C0F600031B68184446F21403C0F6D3 +S31508000F6000031B68184446F21803C0F600031B6802 +S31508000F70184446F25013C0F600031B681844D0F113 +S31508000F80010038BF0020704708B540F2E803C2F2F6 +S31508000F9000031B68B3F1FF3F06D040F2E800C2F237 +S31508000FA00000FFF7BFFD88B140F2EC23C2F2000350 +S31508000FB01B68B3F1FF3F0BD040F2EC20C2F20000F1 +S31508000FC0FFF7B0FD003018BF012008BD002008BD9E +S31508000FD0012008BD4FF4C040C0F60000704700BFAE +S31508000FE008B541F23410C0F600003121FFF7F8FBCE +S31508000FF008BD00BF72B6704762B6704710B515498E +S315080010008D4640F20002C2F2000240F20103C2F22B +S3150800101000039A4210D2131D0D4CE41A24F003045F +S3150800102004340023104641F26411C0F600015A58F0 +S315080010301A500433A342FAD1074808494FF0000270 +S315080010408842B8BF40F8042BFADBFFF781F810BDD9 +S3150800105004000020F006002004000020F004002010 +S315080010606D61696E2E6300004F70656E424C5400C8 +S315080010702E2E2F2E2E2F2E2E2F536F757263652F21 +S3150800108041524D434D335F53544D333246312F75DC +S315080010906172742E630000000060000800200000E2 +S315080010A00300000000800008002000000400000083 +S315080010B000A00008002000000500000000C000088D +S315080010C0002000000600000000E0000800200000E4 +S315080010D007000000000001080020000008000000CA +S315080010E00020010800200000090000000040010857 +S315080010F0002000000A00000000600108002000002F +S315080011000B00000000800108002000000C00000011 +S3150800111000A00108002000000D00000000C0010822 +S31508001120002000000E00000000E00108002000007A +S315080011300F0000002E2E2F2E2E2F2E2E2F536F75BA +S315080011407263652F41524D434D335F53544D3332CD +S3150800115046312F4743432F766563746F72732E6348 +S30908001160000000007D +S306080011640478 S70508000000F2 diff --git a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/blt_conf.h b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/blt_conf.h index 95a3435a..ff49abaf 100644 --- a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/blt_conf.h +++ b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/blt_conf.h @@ -103,42 +103,6 @@ #define BOOT_COM_UART_CHANNEL_INDEX (1) -/**************************************************************************************** -* F I L E S Y S T E M I N T E R F A C E C O N F I G U R A T I O N -****************************************************************************************/ -/* The file system interface is selected by setting the BOOT_FILE_SYS_ENABLE configurable - * to 1. This enables support for firmware updates from a file stored on a locally - * attached file system such as an SD-card. Note that this interface can be enabled - * together with one of the remote communication interfaces such as UART, CAN or USB. - * - * Set BOOT_FILE_LOGGING_ENABLE to 1 if you would like log messages to be created during - * a firmware update. The hook function FileFirmwareUpdateLogHook() will be called each - * time a new string formatted log entry is available. This could be used during testing - * by outputting the string on UART or to create a log file on the file system itself. - * - * Set BOOT_FILE_ERROR_HOOK_ENABLE to 1 if you would like to be informed in case an error - * occurs during the firmware update. This could for example be used to turn on an error - * LED to inform the user that something went wrong. Inspecting the log messages provides - * additional information on the error cause. - * - * Set BOOT_FILE_STARTED_HOOK_ENABLE to 1 if you would like to be informed when a new - * firmware update is started by the bootloader. - * - * Set BOOT_FILE_COMPLETED_HOOK_ENABLE to 1 if you would like to be informed when a - * firmware update is completed by the bootloader. - */ -/** \brief Enable/disable support for firmware updates from a locally attached storage.*/ -#define BOOT_FILE_SYS_ENABLE (0) -/** \brief Enable/disable logging messages during firmware updates. */ -#define BOOT_FILE_LOGGING_ENABLE (0) -/** \brief Enable/disable a hook function that is called upon detection of an error. */ -#define BOOT_FILE_ERROR_HOOK_ENABLE (0) -/** \brief Enable/disable a hook function that is called at the start of the update. */ -#define BOOT_FILE_STARTED_HOOK_ENABLE (0) -/** \brief Enable/disable a hook function that is called at the end of the update. */ -#define BOOT_FILE_COMPLETED_HOOK_ENABLE (0) - - /**************************************************************************************** * B A C K D O O R E N T R Y C O N F I G U R A T I O N ****************************************************************************************/ diff --git a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/lib/fatfs/ffconf.h b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/lib/fatfs/ffconf.h deleted file mode 100644 index 02ad6ca3..00000000 --- a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/lib/fatfs/ffconf.h +++ /dev/null @@ -1,192 +0,0 @@ -/*---------------------------------------------------------------------------/ -/ FatFs - FAT file system module configuration file R0.09b (C)ChaN, 2013 -/----------------------------------------------------------------------------/ -/ -/ CAUTION! Do not forget to make clean the project after any changes to -/ the configuration options. -/ -/----------------------------------------------------------------------------*/ -#ifndef _FFCONF -#define _FFCONF 82786 /* Revision ID */ - - -/*---------------------------------------------------------------------------/ -/ Functions and Buffer Configurations -/----------------------------------------------------------------------------*/ - -#define _FS_TINY 0 /* 0:Normal or 1:Tiny */ -/* When _FS_TINY is set to 1, FatFs uses the sector buffer in the file system -/ object instead of the sector buffer in the individual file object for file -/ data transfer. This reduces memory consumption 512 bytes each file object. */ - - -#define _FS_READONLY 0 /* 0:Read/Write or 1:Read only */ -/* Setting _FS_READONLY to 1 defines read only configuration. This removes -/ writing functions, f_write, f_sync, f_unlink, f_mkdir, f_chmod, f_rename, -/ f_truncate and useless f_getfree. */ - - -#define _FS_MINIMIZE 0 /* 0 to 3 */ -/* The _FS_MINIMIZE option defines minimization level to remove some functions. -/ -/ 0: Full function. -/ 1: f_stat, f_getfree, f_unlink, f_mkdir, f_chmod, f_truncate and f_rename -/ are removed. -/ 2: f_opendir and f_readdir are removed in addition to 1. -/ 3: f_lseek is removed in addition to 2. */ - - -#define _USE_STRFUNC 2 /* 0:Disable or 1-2:Enable */ -/* To enable string functions, set _USE_STRFUNC to 1 or 2. */ - - -#define _USE_MKFS 0 /* 0:Disable or 1:Enable */ -/* To enable f_mkfs function, set _USE_MKFS to 1 and set _FS_READONLY to 0 */ - - -#define _USE_FASTSEEK 0 /* 0:Disable or 1:Enable */ -/* To enable fast seek feature, set _USE_FASTSEEK to 1. */ - - -#define _USE_LABEL 0 /* 0:Disable or 1:Enable */ -/* To enable volume label functions, set _USE_LAVEL to 1 */ - - -#define _USE_FORWARD 0 /* 0:Disable or 1:Enable */ -/* To enable f_forward function, set _USE_FORWARD to 1 and set _FS_TINY to 1. */ - - -/*---------------------------------------------------------------------------/ -/ Locale and Namespace Configurations -/----------------------------------------------------------------------------*/ - -#define _CODE_PAGE 437 -/* The _CODE_PAGE specifies the OEM code page to be used on the target system. -/ Incorrect setting of the code page can cause a file open failure. -/ -/ 932 - Japanese Shift-JIS (DBCS, OEM, Windows) -/ 936 - Simplified Chinese GBK (DBCS, OEM, Windows) -/ 949 - Korean (DBCS, OEM, Windows) -/ 950 - Traditional Chinese Big5 (DBCS, OEM, Windows) -/ 1250 - Central Europe (Windows) -/ 1251 - Cyrillic (Windows) -/ 1252 - Latin 1 (Windows) -/ 1253 - Greek (Windows) -/ 1254 - Turkish (Windows) -/ 1255 - Hebrew (Windows) -/ 1256 - Arabic (Windows) -/ 1257 - Baltic (Windows) -/ 1258 - Vietnam (OEM, Windows) -/ 437 - U.S. (OEM) -/ 720 - Arabic (OEM) -/ 737 - Greek (OEM) -/ 775 - Baltic (OEM) -/ 850 - Multilingual Latin 1 (OEM) -/ 858 - Multilingual Latin 1 + Euro (OEM) -/ 852 - Latin 2 (OEM) -/ 855 - Cyrillic (OEM) -/ 866 - Russian (OEM) -/ 857 - Turkish (OEM) -/ 862 - Hebrew (OEM) -/ 874 - Thai (OEM, Windows) -/ 1 - ASCII only (Valid for non LFN cfg.) -*/ - - -#define _USE_LFN 1 /* 0 to 3 */ -#define _MAX_LFN 255 /* Maximum LFN length to handle (12 to 255) */ -/* The _USE_LFN option switches the LFN support. -/ -/ 0: Disable LFN feature. _MAX_LFN and _LFN_UNICODE have no effect. -/ 1: Enable LFN with static working buffer on the BSS. Always NOT reentrant. -/ 2: Enable LFN with dynamic working buffer on the STACK. -/ 3: Enable LFN with dynamic working buffer on the HEAP. -/ -/ The LFN working buffer occupies (_MAX_LFN + 1) * 2 bytes. To enable LFN, -/ Unicode handling functions ff_convert() and ff_wtoupper() must be added -/ to the project. When enable to use heap, memory control functions -/ ff_memalloc() and ff_memfree() must be added to the project. */ - - -#define _LFN_UNICODE 0 /* 0:ANSI/OEM or 1:Unicode */ -/* To switch the character code set on FatFs API to Unicode, -/ enable LFN feature and set _LFN_UNICODE to 1. */ - - -#define _FS_RPATH 0 /* 0 to 2 */ -/* The _FS_RPATH option configures relative path feature. -/ -/ 0: Disable relative path feature and remove related functions. -/ 1: Enable relative path. f_chdrive() and f_chdir() are available. -/ 2: f_getcwd() is available in addition to 1. -/ -/ Note that output of the f_readdir fnction is affected by this option. */ - - -/*---------------------------------------------------------------------------/ -/ Physical Drive Configurations -/----------------------------------------------------------------------------*/ - -#define _VOLUMES 1 -/* Number of volumes (logical drives) to be used. */ - - -#define _MAX_SS 512 /* 512, 1024, 2048 or 4096 */ -/* Maximum sector size to be handled. -/ Always set 512 for memory card and hard disk but a larger value may be -/ required for on-board flash memory, floppy disk and optical disk. -/ When _MAX_SS is larger than 512, it configures FatFs to variable sector size -/ and GET_SECTOR_SIZE command must be implememted to the disk_ioctl function. */ - - -#define _MULTI_PARTITION 0 /* 0:Single partition, 1:Enable multiple partition */ -/* When set to 0, each volume is bound to the same physical drive number and -/ it can mount only first primaly partition. When it is set to 1, each volume -/ is tied to the partitions listed in VolToPart[]. */ - - -#define _USE_ERASE 0 /* 0:Disable or 1:Enable */ -/* To enable sector erase feature, set _USE_ERASE to 1. CTRL_ERASE_SECTOR command -/ should be added to the disk_ioctl functio. */ - - - -/*---------------------------------------------------------------------------/ -/ System Configurations -/----------------------------------------------------------------------------*/ - -#define _WORD_ACCESS 0 /* 0 or 1 */ -/* Set 0 first and it is always compatible with all platforms. The _WORD_ACCESS -/ option defines which access method is used to the word data on the FAT volume. -/ -/ 0: Byte-by-byte access. -/ 1: Word access. Do not choose this unless following condition is met. -/ -/ When the byte order on the memory is big-endian or address miss-aligned word -/ access results incorrect behavior, the _WORD_ACCESS must be set to 0. -/ If it is not the case, the value can also be set to 1 to improve the -/ performance and code size. -*/ - - -/* A header file that defines sync object types on the O/S, such as -/ windows.h, ucos_ii.h and semphr.h, must be included prior to ff.h. */ - -#define _FS_REENTRANT 0 /* 0:Disable or 1:Enable */ -#define _FS_TIMEOUT 1000 /* Timeout period in unit of time ticks */ -#define _SYNC_t HANDLE /* O/S dependent type of sync object. e.g. HANDLE, OS_EVENT*, ID and etc.. */ - -/* The _FS_REENTRANT option switches the reentrancy (thread safe) of the FatFs module. -/ -/ 0: Disable reentrancy. _SYNC_t and _FS_TIMEOUT have no effect. -/ 1: Enable reentrancy. Also user provided synchronization handlers, -/ ff_req_grant, ff_rel_grant, ff_del_syncobj and ff_cre_syncobj -/ function must be added to the project. */ - - -#define _FS_LOCK 0 /* 0:Disable or >=1:Enable */ -/* To enable file lock control feature, set _FS_LOCK to 1 or greater. - The value defines how many files can be opened simultaneously. */ - - -#endif /* _FFCONFIG */ diff --git a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/lib/fatfs/mmc.c b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/lib/fatfs/mmc.c deleted file mode 100644 index 5fe89a9b..00000000 --- a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/lib/fatfs/mmc.c +++ /dev/null @@ -1,683 +0,0 @@ -/*------------------------------------------------------------------------/ -/ MMCv3/SDv1/SDv2 (in SPI mode) control module -/-------------------------------------------------------------------------/ -/ -/ Copyright (C) 2013, ChaN, all right reserved. -/ -/ * This software is a free software and there is NO WARRANTY. -/ * No restriction on use. You can use, modify and redistribute it for -/ personal, non-profit or commercial products UNDER YOUR RESPONSIBILITY. -/ * Redistributions of source code must retain the above copyright notice. -/ -/-------------------------------------------------------------------------*/ - - -/* - * This file was modified from a sample available from the FatFs - * web site. It was modified to work with a Olimex STM32-P103 - * evaluation board. - * - */ -#include "diskio.h" -#include "stm32f10x.h" /* STM32 registers */ -#include "stm32f10x_conf.h" /* STM32 peripheral drivers */ -#include "boot.h" - - - -/*-------------------------------------------------------------------------- - - Module Private Functions - ----------------------------------------------------------------------------*/ - -/* Definitions for MMC/SDC command */ -#define CMD0 (0) /* GO_IDLE_STATE */ -#define CMD1 (1) /* SEND_OP_COND */ -#define ACMD41 (41|0x80) /* SEND_OP_COND (SDC) */ -#define CMD8 (8) /* SEND_IF_COND */ -#define CMD9 (9) /* SEND_CSD */ -#define CMD10 (10) /* SEND_CID */ -#define CMD12 (12) /* STOP_TRANSMISSION */ -#define ACMD13 (13|0x80) /* SD_STATUS (SDC) */ -#define CMD16 (16) /* SET_BLOCKLEN */ -#define CMD17 (17) /* READ_SINGLE_BLOCK */ -#define CMD18 (18) /* READ_MULTIPLE_BLOCK */ -#define CMD23 (23) /* SET_BLOCK_COUNT */ -#define ACMD23 (23|0x80) /* SET_WR_BLK_ERASE_COUNT (SDC) */ -#define CMD24 (24) /* WRITE_BLOCK */ -#define CMD25 (25) /* WRITE_MULTIPLE_BLOCK */ -#define CMD41 (41) /* SEND_OP_COND (ACMD) */ -#define CMD55 (55) /* APP_CMD */ -#define CMD58 (58) /* READ_OCR */ - - -/* Control signals (Platform dependent) */ -#define CS_LOW() GPIO_ResetBits(GPIOB, GPIO_Pin_12) /* MMC CS = L */ -#define CS_HIGH() GPIO_SetBits(GPIOB, GPIO_Pin_12) /* MMC CS = H */ - - - -#define FCLK_SLOW() /* Set slow clock (100k-400k) */ -#define FCLK_FAST() set_max_speed() /* Set fast clock (depends on the CSD) */ - -static volatile -DSTATUS Stat = STA_NOINIT; /* Disk status */ - -static -UINT CardType; - - -/*-----------------------------------------------------------------------*/ -/* Send 80 or so clock transitions with CS and DI held high. This is */ -/* required after card power up to get it into SPI mode */ -/*-----------------------------------------------------------------------*/ -static -void send_initial_clock_train(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - unsigned int i; - - /* Ensure CS is held high. */ - CS_HIGH(); - - /* Switch the SSI TX line to a GPIO and drive it high too. */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_Init(GPIOB, &GPIO_InitStructure); - GPIO_SetBits(GPIOB, GPIO_Pin_15); - - /* Send 10 bytes over the SSI. This causes the clock to wiggle the */ - /* required number of times. */ - for(i = 0 ; i < 10 ; i++) - { - /* Loop while DR register in not empty */ - while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) { ; } - - /* Send byte through the SPI peripheral */ - SPI_I2S_SendData(SPI2, 0xff); - - /* Wait to receive a byte */ - while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET) { ; } - } - - /* Revert to hardware control of the SSI TX line. */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOB, &GPIO_InitStructure); -} - - -/*-----------------------------------------------------------------------*/ -/* Power Control (Platform dependent) */ -/*-----------------------------------------------------------------------*/ -/* When the target system does not support socket power control, there */ -/* is nothing to do in these functions. */ - -static -void power_on (void) -{ - SPI_InitTypeDef SPI_InitStructure; - GPIO_InitTypeDef GPIO_InitStructure; - - /* - * This doesn't really turn the power on, but initializes the - * SSI port and pins needed to talk to the card. - */ - - /* Enable GPIO clock for CS */ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); - /* Enable SPI clock, SPI2: APB1 */ - RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); - /* Configure I/O for Flash Chip select (PB12) */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init(GPIOB, &GPIO_InitStructure); - - /* De-select the Card: Chip Select high */ - GPIO_SetBits(GPIOB, GPIO_Pin_12); - - /* Configure SPI pins: SCK (PB13) and MOSI (PB15) with default alternate function (not re-mapped) push-pull */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOB, &GPIO_InitStructure); - /* Configure MISO (PB14) as Input with internal pull-up */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - GPIO_Init(GPIOB, &GPIO_InitStructure); - - /* SPI configuration */ - SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; - SPI_InitStructure.SPI_Mode = SPI_Mode_Master; - SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; - SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; - SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; - SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; - SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; // 72000kHz/256=281kHz < 400kHz - SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; - SPI_InitStructure.SPI_CRCPolynomial = 7; - - SPI_Init(SPI2, &SPI_InitStructure); - SPI_CalculateCRC(SPI2, DISABLE); - SPI_Cmd(SPI2, ENABLE); - - /* Set DI and CS high and apply more than 74 pulses to SCLK for the card */ - /* to be able to accept a native command. */ - send_initial_clock_train(); - -} -// set the SSI speed to the max setting -static -void set_max_speed(void) -{ - SPI_InitTypeDef SPI_InitStructure; - - /* Disable the SPI system */ - SPI_Cmd(SPI2, DISABLE); - - /* MMC/SDC can work at the clock frequency up to 20/25MHz so pick a speed close to - * this but not higher - */ - SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; - SPI_InitStructure.SPI_Mode = SPI_Mode_Master; - SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; - SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; - SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; - SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; - SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; // 72MHz/4=18MHz < 20MHz - SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; - SPI_InitStructure.SPI_CRCPolynomial = 7; - SPI_Init(SPI2, &SPI_InitStructure); - SPI_CalculateCRC(SPI2, DISABLE); - - /* Enable the SPI system */ - SPI_Cmd(SPI2, ENABLE); -} - -static -void power_off (void) -{ - Stat |= STA_NOINIT; /* Force uninitialized */ -} - - -/*-----------------------------------------------------------------------*/ -/* Transmit/Receive data to/from MMC via SPI (Platform dependent) */ -/*-----------------------------------------------------------------------*/ - -static -BYTE xchg_spi (BYTE dat) -{ - /* Send byte through the SPI peripheral */ - SPI_I2S_SendData(SPI2, dat); - - /* Wait to receive a byte */ - while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET) { ; } - - /* Return the byte read from the SPI bus */ - return (BYTE)SPI_I2S_ReceiveData(SPI2); -} - -static -void rcvr_spi_m (BYTE *dst) -{ - *dst = xchg_spi(0xFF); -} - - -/*-----------------------------------------------------------------------*/ -/* Wait for card ready */ -/*-----------------------------------------------------------------------*/ - -static -int wait_ready (void) -{ - BYTE d; - ULONG timeOutTime; - - /* set timeout for 500 ms from now */ - timeOutTime = TimerGet() + 500; - - do { - d = xchg_spi(0xFF); - } while ((d != 0xFF) && (TimerGet() < timeOutTime)); - - return (d == 0xFF) ? 1 : 0; -} - - -/*-----------------------------------------------------------------------*/ -/* Deselect the card and release SPI bus */ -/*-----------------------------------------------------------------------*/ - -static -void deselect (void) -{ - CS_HIGH(); - xchg_spi(0xFF); /* Dummy clock (force DO hi-z for multiple slave SPI) */ -} - - - -/*-----------------------------------------------------------------------*/ -/* Select the card and wait ready */ -/*-----------------------------------------------------------------------*/ - -static -int select (void) /* 1:Successful, 0:Timeout */ -{ - CS_LOW(); - xchg_spi(0xFF); /* Dummy clock (force DO enabled) */ - - if (wait_ready()) return 1; /* OK */ - deselect(); - return 0; /* Timeout */ -} - - - -/*-----------------------------------------------------------------------*/ -/* Receive a data packet from MMC */ -/*-----------------------------------------------------------------------*/ - -static -int rcvr_datablock ( /* 1:OK, 0:Failed */ - BYTE *buff, /* Data buffer to store received data */ - UINT btr /* Byte count (must be multiple of 4) */ -) -{ - BYTE token; - ULONG timeOutTime; - - /* set timeout for 100 ms from now */ - timeOutTime = TimerGet() + 100; - - do { /* Wait for data packet in timeout of 100ms */ - token = xchg_spi(0xFF); - } while ((token == 0xFF) && (TimerGet() < timeOutTime)); - - if(token != 0xFE) return 0; /* If not valid data token, retutn with error */ - - do { /* Receive the data block into buffer */ - rcvr_spi_m(buff++); - rcvr_spi_m(buff++); - } while (btr -= 2); - xchg_spi(0xFF); /* Discard CRC */ - xchg_spi(0xFF); - - return 1; /* Return with success */ -} - - - -/*-----------------------------------------------------------------------*/ -/* Send a data packet to MMC */ -/*-----------------------------------------------------------------------*/ - -#if _USE_WRITE -static -int xmit_datablock ( /* 1:OK, 0:Failed */ - const BYTE *buff, /* 512 byte data block to be transmitted */ - BYTE token /* Data token */ -) -{ - BYTE resp; - UINT wc; - - - if (!wait_ready()) return 0; - - xchg_spi(token); /* Xmit a token */ - if (token != 0xFD) { /* Not StopTran token */ - wc = 512; - do { /* Xmit the 512 byte data block to MMC */ - xchg_spi(*buff++); - xchg_spi(*buff++); - } while (wc -= 2); - xchg_spi(0xFF); /* CRC (Dummy) */ - xchg_spi(0xFF); - resp = xchg_spi(0xFF); /* Receive a data response */ - if ((resp & 0x1F) != 0x05) /* If not accepted, return with error */ - return 0; - } - - return 1; -} -#endif - - - -/*-----------------------------------------------------------------------*/ -/* Send a command packet to MMC */ -/*-----------------------------------------------------------------------*/ - -static -BYTE send_cmd ( - BYTE cmd, /* Command byte */ - DWORD arg /* Argument */ -) -{ - BYTE n, res; - - - if (cmd & 0x80) { /* ACMD is the command sequense of CMD55-CMD */ - cmd &= 0x7F; - res = send_cmd(CMD55, 0); - if (res > 1) return res; - } - - /* Select the card and wait for ready */ - deselect(); - if (!select()) return 0xFF; - - /* Send command packet */ - xchg_spi(0x40 | cmd); /* Start + Command index */ - xchg_spi((BYTE)(arg >> 24)); /* Argument[31..24] */ - xchg_spi((BYTE)(arg >> 16)); /* Argument[23..16] */ - xchg_spi((BYTE)(arg >> 8)); /* Argument[15..8] */ - xchg_spi((BYTE)arg); /* Argument[7..0] */ - n = 0x01; /* Dummy CRC + Stop */ - if (cmd == CMD0) n = 0x95; /* Valid CRC for CMD0(0) + Stop */ - if (cmd == CMD8) n = 0x87; /* Valid CRC for CMD8(0x1AA) + Stop */ - xchg_spi(n); - - /* Receive command response */ - if (cmd == CMD12) xchg_spi(0xFF); /* Skip a stuff byte on stop to read */ - n = 10; /* Wait for a valid response in timeout of 10 attempts */ - do - res = xchg_spi(0xFF); - while ((res & 0x80) && --n); - - return res; /* Return with the response value */ -} - - - -/*-------------------------------------------------------------------------- - - Public Functions - ----------------------------------------------------------------------------*/ - - -/*-----------------------------------------------------------------------*/ -/* Initialize Disk Drive */ -/*-----------------------------------------------------------------------*/ - -DSTATUS disk_initialize ( - BYTE pdrv /* Physical drive nmuber (0) */ -) -{ - BYTE n, cmd, ty, ocr[4]; - ULONG timeOutTime; - - - if (pdrv) return STA_NOINIT; /* Supports only single drive */ - if (Stat & STA_NODISK) return Stat; /* No card in the socket */ - - power_on(); /* Force socket power on */ - - CS_LOW(); /* CS = L */ - - ty = 0; - if (send_cmd(CMD0, 0) == 1) { /* Enter Idle state */ - timeOutTime = TimerGet() + 1000; /* Initialization timeout of 1000 msec */ - - if (send_cmd(CMD8, 0x1AA) == 1) { /* SDv2? */ - for (n = 0; n < 4; n++) ocr[n] = xchg_spi(0xFF); /* Get trailing return value of R7 resp */ - if (ocr[2] == 0x01 && ocr[3] == 0xAA) { /* The card can work at vdd range of 2.7-3.6V */ - while ((TimerGet() < timeOutTime) && send_cmd(ACMD41, 0x40000000)); /* Wait for leaving idle state (ACMD41 with HCS bit) */ - if ((TimerGet() < timeOutTime) && send_cmd(CMD58, 0) == 0) { /* Check CCS bit in the OCR */ - for (n = 0; n < 4; n++) ocr[n] = xchg_spi(0xFF); - ty = (ocr[0] & 0x40) ? CT_SD2|CT_BLOCK : CT_SD2; /* SDv2 */ - } - } - } else { /* SDv1 or MMCv3 */ - if (send_cmd(ACMD41, 0) <= 1) { - ty = CT_SD1; cmd = ACMD41; /* SDv1 */ - } else { - ty = CT_MMC; cmd = CMD1; /* MMCv3 */ - } - while ((TimerGet() < timeOutTime) && send_cmd(cmd, 0)); /* Wait for leaving idle state */ - if (!(TimerGet() < timeOutTime) || send_cmd(CMD16, 512) != 0) /* Set read/write block length to 512 */ - ty = 0; - } - } - CardType = ty; - deselect(); - - if (ty) { /* Initialization succeded */ - Stat &= ~STA_NOINIT; /* Clear STA_NOINIT */ - FCLK_FAST(); - } else { /* Initialization failed */ - power_off(); - } - - return Stat; -} - - - -/*-----------------------------------------------------------------------*/ -/* Get Disk Status */ -/*-----------------------------------------------------------------------*/ - -DSTATUS disk_status ( - BYTE pdrv /* Physical drive nmuber (0) */ -) -{ - if (pdrv) return STA_NOINIT; /* Supports only single drive */ - return Stat; -} - - - -/*-----------------------------------------------------------------------*/ -/* Read Sector(s) */ -/*-----------------------------------------------------------------------*/ - -DRESULT disk_read ( - BYTE pdrv, /* Physical drive number (0) */ - BYTE *buff, /* Pointer to the data buffer to store read data */ - DWORD sector, /* Start sector number (LBA) */ - BYTE count /* Sector count (1..255) */ -) -{ - if (pdrv || !count) return RES_PARERR; - if (Stat & STA_NOINIT) return RES_NOTRDY; - - if (!(CardType & CT_BLOCK)) sector *= 512; /* Convert to byte address if needed */ - - if (count == 1) { /* Single block read */ - if ((send_cmd(CMD17, sector) == 0) /* READ_SINGLE_BLOCK */ - && rcvr_datablock(buff, 512)) - count = 0; - } - else { /* Multiple block read */ - if (send_cmd(CMD18, sector) == 0) { /* READ_MULTIPLE_BLOCK */ - do { - if (!rcvr_datablock(buff, 512)) break; - buff += 512; - } while (--count); - send_cmd(CMD12, 0); /* STOP_TRANSMISSION */ - } - } - deselect(); - - return count ? RES_ERROR : RES_OK; -} - - - -/*-----------------------------------------------------------------------*/ -/* Write Sector(s) */ -/*-----------------------------------------------------------------------*/ - -#if _USE_WRITE -DRESULT disk_write ( - BYTE pdrv, /* Physical drive nmuber (0) */ - const BYTE *buff, /* Pointer to the data to be written */ - DWORD sector, /* Start sector number (LBA) */ - BYTE count /* Sector count (1..255) */ -) -{ - if (pdrv || !count) return RES_PARERR; - if (Stat & STA_NOINIT) return RES_NOTRDY; - if (Stat & STA_PROTECT) return RES_WRPRT; - - if (!(CardType & CT_BLOCK)) sector *= 512; /* Convert to byte address if needed */ - - if (count == 1) { /* Single block write */ - if ((send_cmd(CMD24, sector) == 0) /* WRITE_BLOCK */ - && xmit_datablock(buff, 0xFE)) - count = 0; - } - else { /* Multiple block write */ - if (CardType & CT_SDC) send_cmd(ACMD23, count); - if (send_cmd(CMD25, sector) == 0) { /* WRITE_MULTIPLE_BLOCK */ - do { - if (!xmit_datablock(buff, 0xFC)) break; - buff += 512; - } while (--count); - if (!xmit_datablock(0, 0xFD)) /* STOP_TRAN token */ - count = 1; - } - } - deselect(); - - return count ? RES_ERROR : RES_OK; -} -#endif - - - -/*-----------------------------------------------------------------------*/ -/* Miscellaneous Functions */ -/*-----------------------------------------------------------------------*/ - -#if _USE_IOCTL -DRESULT disk_ioctl ( - BYTE pdrv, /* Physical drive nmuber (0) */ - BYTE cmd, /* Control code */ - void *buff /* Buffer to send/receive data block */ -) -{ - DRESULT res; - BYTE n, csd[16], *ptr = buff; - DWORD csz; - - - if (pdrv) return RES_PARERR; - if (Stat & STA_NOINIT) return RES_NOTRDY; - - res = RES_ERROR; - switch (cmd) { - case CTRL_SYNC : /* Flush write-back cache, Wait for end of internal process */ - if (select()) res = RES_OK; - break; - - case GET_SECTOR_COUNT : /* Get number of sectors on the disk (WORD) */ - if ((send_cmd(CMD9, 0) == 0) && rcvr_datablock(csd, 16)) { - if ((csd[0] >> 6) == 1) { /* SDv2? */ - csz = csd[9] + ((WORD)csd[8] << 8) + ((DWORD)(csd[7] & 63) << 16) + 1; - *(DWORD*)buff = csz << 10; - } else { /* SDv1 or MMCv3 */ - n = (csd[5] & 15) + ((csd[10] & 128) >> 7) + ((csd[9] & 3) << 1) + 2; - csz = (csd[8] >> 6) + ((WORD)csd[7] << 2) + ((WORD)(csd[6] & 3) << 10) + 1; - *(DWORD*)buff = csz << (n - 9); - } - res = RES_OK; - } - break; - - case GET_BLOCK_SIZE : /* Get erase block size in unit of sectors (DWORD) */ - if (CardType & CT_SD2) { /* SDv2? */ - if (send_cmd(ACMD13, 0) == 0) { /* Read SD status */ - xchg_spi(0xFF); - if (rcvr_datablock(csd, 16)) { /* Read partial block */ - for (n = 64 - 16; n; n--) xchg_spi(0xFF); /* Purge trailing data */ - *(DWORD*)buff = 16UL << (csd[10] >> 4); - res = RES_OK; - } - } - } else { /* SDv1 or MMCv3 */ - if ((send_cmd(CMD9, 0) == 0) && rcvr_datablock(csd, 16)) { /* Read CSD */ - if (CardType & CT_SD1) { /* SDv1 */ - *(DWORD*)buff = (((csd[10] & 63) << 1) + ((WORD)(csd[11] & 128) >> 7) + 1) << ((csd[13] >> 6) - 1); - } else { /* MMCv3 */ - *(DWORD*)buff = ((WORD)((csd[10] & 124) >> 2) + 1) * (((csd[11] & 3) << 3) + ((csd[11] & 224) >> 5) + 1); - } - res = RES_OK; - } - } - break; - - case MMC_GET_TYPE : /* Get card type flags (1 byte) */ - *ptr = CardType; - res = RES_OK; - break; - - case MMC_GET_CSD : /* Receive CSD as a data block (16 bytes) */ - if ((send_cmd(CMD9, 0) == 0) /* READ_CSD */ - && rcvr_datablock(buff, 16)) - res = RES_OK; - break; - - case MMC_GET_CID : /* Receive CID as a data block (16 bytes) */ - if ((send_cmd(CMD10, 0) == 0) /* READ_CID */ - && rcvr_datablock(buff, 16)) - res = RES_OK; - break; - - case MMC_GET_OCR : /* Receive OCR as an R3 resp (4 bytes) */ - if (send_cmd(CMD58, 0) == 0) { /* READ_OCR */ - for (n = 0; n < 4; n++) - *((BYTE*)buff+n) = xchg_spi(0xFF); - res = RES_OK; - } - break; - - case MMC_GET_SDSTAT : /* Receive SD status as a data block (64 bytes) */ - if ((CardType & CT_SD2) && send_cmd(ACMD13, 0) == 0) { /* SD_STATUS */ - xchg_spi(0xFF); - if (rcvr_datablock(buff, 64)) - res = RES_OK; - } - break; - - default: - res = RES_PARERR; - } - - deselect(); - - return res; -} -#endif - - -/*---------------------------------------------------------*/ -/* User Provided Timer Function for FatFs module */ -/*---------------------------------------------------------*/ -/* This is a real time clock service to be called from */ -/* FatFs module. Any valid time must be returned even if */ -/* the system does not support a real time clock. */ -/* This is not required in read-only configuration. */ - -DWORD get_fattime (void) -{ - /* No RTC supprt. Return a fixed value 2013/5/10 0:00:00 */ - return ((DWORD)(2013 - 1980) << 25) /* Y */ - | ((DWORD)5 << 21) /* M */ - | ((DWORD)10 << 16) /* D */ - | ((DWORD)0 << 11) /* H */ - | ((DWORD)0 << 5) /* M */ - | ((DWORD)0 >> 1); /* S */ -} - - - diff --git a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/makefile b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/makefile index f97a5e76..1c1390c4 100644 --- a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/makefile +++ b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Boot/makefile @@ -38,8 +38,6 @@ PROJ_FILES= \ blt_conf.h \ hooks.c \ main.c \ -./lib/fatfs/ffconf.h \ -./lib/fatfs/mmc.c \ ./lib/CMSIS/CM3/CoreSupport/core_cm3.c \ ./lib/CMSIS/CM3/CoreSupport/core_cm3.h \ ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h \ @@ -54,11 +52,6 @@ main.c \ ./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ ./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ ./lib/STM32F10x_StdPeriph_Driver/stm32f10x_conf.h \ -../../../Source/third_party/fatfs/src/diskio.h \ -../../../Source/third_party/fatfs/src/ff.c \ -../../../Source/third_party/fatfs/src/ff.h \ -../../../Source/third_party/fatfs/src/integer.h \ -../../../Source/third_party/fatfs/src/option/unicode.c \ ../../../Source/boot.c \ ../../../Source/boot.h \ ../../../Source/com.c \