Refs #363. Added GCC/Makefile support to STM32-P405 demo.

git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@302 5dc33758-31d5-4daf-9ae8-b24bf3d40d73
This commit is contained in:
Frank Voorburg 2017-07-18 08:35:03 +00:00
parent 1e331d7f8a
commit 3e2185577c
16 changed files with 3504 additions and 18744 deletions

View File

@ -1,592 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<EmBitz_project_file>
<EmBitzVersion release="1.00" revision="0" />
<FileVersion major="1" minor="0" />
<Project>
<Option title="STM32P405" />
<Option pch_mode="2" />
<Option compiler="armgcc_eb" />
<Option virtualFolders="Libs\;Srcs\;Libs\cmsis\;Libs\SPL\;Srcs\Core\;Srcs\Core\ARMCM4_STM32F4\;Srcs\Core\ARMCM4_STM32F4\GCC\;Libs\USB\;Libs\USB\Device\;Libs\USB\OTG\;Srcs\Core\third_party\;Srcs\Core\third_party\FatFS\;Libs\FatFS\;" />
<Build>
<Target title="Debug">
<Option output="..\bin\openblt_olimex_stm32p405.elf" />
<Option object_output="..\obj\" />
<Option type="0" />
<Option compiler="armgcc_eb" />
<Option projectDeviceOptionsRelation="0" />
<Compiler>
<Add option="-Wall" />
<Add option="-fdata-sections" />
<Add option="-ffunction-sections" />
<Add option="-O0" />
<Add option="-g3" />
<Add option="-Og" />
</Compiler>
<Assembler>
<Add option="-Wa,--gdwarf-2" />
</Assembler>
<Linker>
<Add option="-Wl,--gc-sections" />
</Linker>
</Target>
</Build>
<Device>
<Add option="$device=cortex-m4" />
<Add option="$fpu=fpv4-sp-d16" />
<Add option="$lscript=../cfg/stm32f405rg_flash.ld" />
<Add option="$stack=0x0800" />
<Add option="$heap=0x0000" />
</Device>
<Compiler>
<Add option="-mfloat-abi=hard" />
<Add option="-fno-strict-aliasing" />
<Add symbol="ARM_MATH_CM4" />
<Add symbol="__FPU_USED" />
<Add symbol="STM32F405RG" />
<Add symbol="STM32F4XX" />
<Add symbol="USE_STDPERIPH_DRIVER" />
<Add symbol="HSE_VALUE=8000000" />
<Add symbol="USE_USB_OTG_FS" />
<Add directory="..\lib" />
<Add directory="..\lib\cmsis" />
<Add directory="..\lib\SPL\inc" />
<Add directory="..\lib\usbdevicelib\Core\inc" />
<Add directory="..\lib\usbotgdriver\inc" />
<Add directory="..\lib\fatfs" />
<Add directory="..\..\Boot" />
<Add directory="..\..\..\..\Source" />
<Add directory="..\..\..\..\Source\ARMCM4_STM32F4" />
<Add directory="..\..\..\..\Source\ARMCM4_STM32F4\GCC" />
<Add directory="..\..\..\..\Source\third_party\fatfs\src" />
<Add directory="..\..\..\..\Source\third_party\fatfs\src\option" />
</Compiler>
<Linker>
<Add option="-eb_lib=n" />
<Add option="-eb_start_files" />
</Linker>
<ExtraCommands>
<Add after="arm-none-eabi-objcopy -O srec $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).elf $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).srec" />
<Mode before="0" />
<Mode after="1" />
</ExtraCommands>
<Unit filename="..\blt_conf.h">
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\flash_layout.c">
<Option compilerVar="CC" />
<Option compile="0" />
<Option link="0" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\hooks.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\led.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\led.h">
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\lib\cmsis\core_cm4.h">
<Option virtualFolder="Libs\cmsis\" />
</Unit>
<Unit filename="..\lib\cmsis\core_cm4_simd.h">
<Option virtualFolder="Libs\cmsis\" />
</Unit>
<Unit filename="..\lib\cmsis\core_cmFunc.h">
<Option virtualFolder="Libs\cmsis\" />
</Unit>
<Unit filename="..\lib\cmsis\core_cmInstr.h">
<Option virtualFolder="Libs\cmsis\" />
</Unit>
<Unit filename="..\lib\fatfs\ffconf.h">
<Option virtualFolder="Libs\FatFS\" />
</Unit>
<Unit filename="..\lib\fatfs\mmc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\FatFS\" />
</Unit>
<Unit filename="..\lib\SPL\inc\misc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_adc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_can.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_crc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_cryp.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_dac.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_dbgmcu.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_dcmi.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_dma.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_exti.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_flash.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_fsmc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_gpio.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_hash.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_i2c.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_iwdg.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_pwr.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_rcc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_rng.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_rtc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_sdio.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_spi.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_syscfg.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_tim.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_usart.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_wwdg.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\misc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_adc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_can.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_crc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_cryp.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_cryp_aes.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_cryp_des.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_cryp_tdes.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_dac.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_dbgmcu.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_dcmi.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_dma.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_exti.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_flash.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_fsmc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_gpio.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_hash.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_hash_md5.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_hash_sha1.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_i2c.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_iwdg.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_pwr.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_rcc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_rng.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_rtc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_sdio.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_spi.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_syscfg.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_tim.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_usart.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_wwdg.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\stm32f4xx.h">
<Option virtualFolder="Libs\" />
</Unit>
<Unit filename="..\lib\stm32f4xx_conf.h">
<Option virtualFolder="Libs\" />
</Unit>
<Unit filename="..\lib\system_stm32f4xx.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\" />
</Unit>
<Unit filename="..\lib\system_stm32f4xx.h">
<Option virtualFolder="Libs\" />
</Unit>
<Unit filename="..\lib\usbdevicelib\Core\inc\usbd_core.h">
<Option virtualFolder="Libs\USB\Device\" />
</Unit>
<Unit filename="..\lib\usbdevicelib\Core\inc\usbd_def.h">
<Option virtualFolder="Libs\USB\Device\" />
</Unit>
<Unit filename="..\lib\usbdevicelib\Core\inc\usbd_ioreq.h">
<Option virtualFolder="Libs\USB\Device\" />
</Unit>
<Unit filename="..\lib\usbdevicelib\Core\inc\usbd_req.h">
<Option virtualFolder="Libs\USB\Device\" />
</Unit>
<Unit filename="..\lib\usbdevicelib\Core\inc\usbd_usr.h">
<Option virtualFolder="Libs\USB\Device\" />
</Unit>
<Unit filename="..\lib\usbdevicelib\Core\src\usbd_core.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\USB\Device\" />
</Unit>
<Unit filename="..\lib\usbdevicelib\Core\src\usbd_ioreq.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\USB\Device\" />
</Unit>
<Unit filename="..\lib\usbdevicelib\Core\src\usbd_req.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\USB\Device\" />
</Unit>
<Unit filename="..\lib\usbotgdriver\inc\usb_bsp.h">
<Option virtualFolder="Libs\USB\OTG\" />
</Unit>
<Unit filename="..\lib\usbotgdriver\inc\usb_core.h">
<Option virtualFolder="Libs\USB\OTG\" />
</Unit>
<Unit filename="..\lib\usbotgdriver\inc\usb_dcd.h">
<Option virtualFolder="Libs\USB\OTG\" />
</Unit>
<Unit filename="..\lib\usbotgdriver\inc\usb_dcd_int.h">
<Option virtualFolder="Libs\USB\OTG\" />
</Unit>
<Unit filename="..\lib\usbotgdriver\inc\usb_defines.h">
<Option virtualFolder="Libs\USB\OTG\" />
</Unit>
<Unit filename="..\lib\usbotgdriver\inc\usb_regs.h">
<Option virtualFolder="Libs\USB\OTG\" />
</Unit>
<Unit filename="..\lib\usbotgdriver\src\usb_core.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\USB\OTG\" />
</Unit>
<Unit filename="..\lib\usbotgdriver\src\usb_dcd.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\USB\OTG\" />
</Unit>
<Unit filename="..\lib\usbotgdriver\src\usb_dcd_int.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\USB\OTG\" />
</Unit>
<Unit filename="..\main.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\startup_stm32f4xx.S">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\usb_bsp.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\usb_conf.h">
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\usbd_bulk.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\usbd_bulk.h">
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\usbd_conf.h">
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\usbd_desc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\usbd_desc.h">
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\usbd_usr.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\..\..\..\Source\ARMCM4_STM32F4\can.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\ARMCM4_STM32F4\" />
</Unit>
<Unit filename="..\..\..\..\Source\ARMCM4_STM32F4\cpu.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\ARMCM4_STM32F4\" />
</Unit>
<Unit filename="..\..\..\..\Source\ARMCM4_STM32F4\flash.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\ARMCM4_STM32F4\" />
</Unit>
<Unit filename="..\..\..\..\Source\ARMCM4_STM32F4\flash.h">
<Option virtualFolder="Srcs\Core\ARMCM4_STM32F4\" />
</Unit>
<Unit filename="..\..\..\..\Source\ARMCM4_STM32F4\GCC\cpu_comp.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\ARMCM4_STM32F4\GCC\" />
</Unit>
<Unit filename="..\..\..\..\Source\ARMCM4_STM32F4\nvm.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\ARMCM4_STM32F4\" />
</Unit>
<Unit filename="..\..\..\..\Source\ARMCM4_STM32F4\timer.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\ARMCM4_STM32F4\" />
</Unit>
<Unit filename="..\..\..\..\Source\ARMCM4_STM32F4\types.h">
<Option virtualFolder="Srcs\Core\ARMCM4_STM32F4\" />
</Unit>
<Unit filename="..\..\..\..\Source\ARMCM4_STM32F4\uart.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\ARMCM4_STM32F4\" />
</Unit>
<Unit filename="..\..\..\..\Source\ARMCM4_STM32F4\usb.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\ARMCM4_STM32F4\" />
</Unit>
<Unit filename="..\..\..\..\Source\assert.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\assert.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\backdoor.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\backdoor.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\boot.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\boot.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\can.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\com.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\com.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\cop.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\cop.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\cpu.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\file.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\file.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\net.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\net.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\nvm.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\plausibility.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\third_party\fatfs\src\diskio.h">
<Option virtualFolder="Srcs\Core\third_party\FatFS\" />
</Unit>
<Unit filename="..\..\..\..\Source\third_party\fatfs\src\ff.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\third_party\FatFS\" />
</Unit>
<Unit filename="..\..\..\..\Source\third_party\fatfs\src\ff.h">
<Option virtualFolder="Srcs\Core\third_party\FatFS\" />
</Unit>
<Unit filename="..\..\..\..\Source\third_party\fatfs\src\integer.h">
<Option virtualFolder="Srcs\Core\third_party\FatFS\" />
</Unit>
<Unit filename="..\..\..\..\Source\third_party\fatfs\src\option\unicode.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\third_party\FatFS\" />
</Unit>
<Unit filename="..\..\..\..\Source\timer.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\uart.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\usb.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\xcp.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Unit filename="..\..\..\..\Source\xcp.h">
<Option virtualFolder="Srcs\Core\" />
</Unit>
<Extensions>
<code_completion />
<debugger>
<target_debugging_settings target="Debug" active_interface="J-link">
<debug_interface interface_id="J-link" ip_address="localhost" ip_port="2331" path="%Software\SEGGER\J-Link:InstallPath%" executable="JLinkGDBServer.exe" description="" dont_start_server="false" backoff_time="2000" options="2" reg_filter="0" active_family="STMicroelectronics" gdb_before_conn="" gdb_after_conn="">
<family_options family_id="Energy Micro" />
<family_options family_id="STMicroelectronics">
<option opt_id="ID_DEVICE" opt_value="STM32F405RG" />
<option opt_id="ID_JTAG_SWD" opt_value="jtag" />
<option opt_id="ID_SPEED" opt_value="1000" />
<option opt_id="ID_AUTO_SPEED" opt_value="1" />
<option opt_id="ID_ENDIANNESS" opt_value="little" />
<option opt_id="ID_RESET_TYPE" opt_value="0" />
<option opt_id="ID_VECTOR_START" opt_value="0x08000000" />
<option opt_id="ID_LOAD_PROGRAM" opt_value="1" />
<option opt_id="ID_FLASH_DOWNLOAD" opt_value="1" />
<option opt_id="ID_FLASH_BREAK" opt_value="1" />
<option opt_id="ID_RAM_EXEC" opt_value="0" />
<option opt_id="ID_VEC_TABLE" opt_value="1" />
<option opt_id="ID_NCACHE_CHECK" opt_value="0" />
<option opt_id="ID_NCACHE_BASE" opt_value="" />
<option opt_id="ID_NCACHE_LENGTH" opt_value="" />
<option opt_id="ID_SEMIHOST_CHECK" opt_value="0" />
<option opt_id="ID_ARM_SWI" opt_value="" />
<option opt_id="ID_THUMB_SWI" opt_value="" />
</family_options>
</debug_interface>
</target_debugging_settings>
</debugger>
<envvars />
<DoxyBlocks>
<comment_style block="0" line="0" />
<doxyfile_project />
<doxyfile_build />
<doxyfile_warnings />
<doxyfile_output />
<doxyfile_dot />
<general />
</DoxyBlocks>
</Extensions>
</Project>
</EmBitz_project_file>

View File

@ -1,114 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<EmBitz_layout_file>
<ActiveTarget name="Debug" />
<File name="..\blt_conf.h" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4855" topLine="60" />
</Cursor>
</File>
<File name="..\flash_layout.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1966" topLine="0" />
</Cursor>
</File>
<File name="..\hooks.c" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="20984" topLine="448" />
</Cursor>
</File>
<File name="..\led.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2090" topLine="19" />
</Cursor>
</File>
<File name="..\lib\fatfs\mmc.c" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="8844" topLine="227" />
</Cursor>
</File>
<File name="..\lib\SPL\inc\stm32f4xx_rcc.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="15860" topLine="331" />
</Cursor>
</File>
<File name="..\lib\SPL\src\stm32f4xx_rcc.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="36071" topLine="818" />
</Cursor>
</File>
<File name="..\lib\SPL\src\stm32f4xx_usart.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="50930" topLine="1268" />
</Cursor>
</File>
<File name="..\lib\stm32f4xx.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="543546" topLine="7085" />
</Cursor>
</File>
<File name="..\lib\system_stm32f4xx.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1119" topLine="153" />
</Cursor>
</File>
<File name="..\lib\system_stm32f4xx.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1160" topLine="45" />
</Cursor>
</File>
<File name="..\main.c" open="1" top="1" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2693" topLine="35" />
</Cursor>
</File>
<File name="..\startup_stm32f4xx.S" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="11546" topLine="221" />
</Cursor>
</File>
<File name="..\usb_conf.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="7895" topLine="156" />
</Cursor>
</File>
<File name="..\..\..\..\Source\ARMCM4_STM32F4\flash.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="9453" topLine="114" />
</Cursor>
</File>
<File name="..\..\..\..\Source\ARMCM4_STM32F4\GCC\cpu_comp.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1820" topLine="0" />
</Cursor>
</File>
<File name="..\..\..\..\Source\ARMCM4_STM32F4\uart.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4902" topLine="38" />
</Cursor>
</File>
<File name="..\..\..\..\Source\boot.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2271" topLine="24" />
</Cursor>
</File>
<File name="..\..\..\..\Source\com.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="9607" topLine="231" />
</Cursor>
</File>
<File name="..\..\..\..\Source\cop.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1028" topLine="10" />
</Cursor>
</File>
<File name="..\..\..\..\Source\file.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="8059" topLine="162" />
</Cursor>
</File>
<File name="..\..\..\..\Source\third_party\fatfs\src\ff.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1030" topLine="0" />
</Cursor>
</File>
</EmBitz_layout_file>

View File

@ -0,0 +1,38 @@
// ----------------------------------------------------------------------------
#include <stdlib.h>
// ----------------------------------------------------------------------------
// Forward declaration
void
_exit(int code);
// ----------------------------------------------------------------------------
// We just enter an infinite loop, to be used as landmark when halting
// the debugger.
//
// It can be redefined in the application, if more functionality
// is required.
void
__attribute__((weak))
_exit(int code __attribute__((unused)))
{
// TODO: write on trace
while (1)
;
}
// ----------------------------------------------------------------------------
void
__attribute__((weak,noreturn))
abort(void)
{
_exit(1);
}
// ----------------------------------------------------------------------------

View File

@ -0,0 +1,178 @@
#****************************************************************************************
#| Description: Makefile for GNU ARM Embedded toolchain.
#| File Name: makefile
#|
#|---------------------------------------------------------------------------------------
#| C O P Y R I G H T
#|---------------------------------------------------------------------------------------
#| Copyright (c) 2017 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 have received a copy of the GNU General Public License along with OpenBLT. It
#| should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
#|
#****************************************************************************************
SHELL = sh
#|--------------------------------------------------------------------------------------|
#| Configure project name |
#|--------------------------------------------------------------------------------------|
PROJ_NAME=openblt_olimex_stm32p405
#|--------------------------------------------------------------------------------------|
#| Configure tool path |
#|--------------------------------------------------------------------------------------|
TOOL_PATH=/opt/gcc-arm-none-eabi-5_4-2016q3/bin/
#|--------------------------------------------------------------------------------------|
#| Collect project files |
#|--------------------------------------------------------------------------------------|
# Recursive wildcard function implementation. Example usages:
# $(call rwildcard, , *.c *.h)
# --> Returns all *.c and *.h files in the current directory and below
# $(call rwildcard, /lib/, *.c)
# --> Returns all *.c files in the /lib directory and below
rwildcard = $(strip $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d)))
# Collect all application files in the current directory and its subdirectories, but
# exclude flash-layout.c as this one is directly included in a source file, when used.
PROJ_FILES = $(filter-out flash_layout.c, $(call rwildcard, , *.c *.h *.S))
# Collect bootloader core files
PROJ_FILES += $(wildcard ../../../Source/*.c)
PROJ_FILES += $(wildcard ../../../Source/*.h)
# Collect bootloader port files
PROJ_FILES += $(wildcard ../../../Source/ARMCM4_STM32F4/*.c)
PROJ_FILES += $(wildcard ../../../Source/ARMCM4_STM32F4/*.h)
# Collect bootloader port compiler specific files
PROJ_FILES += ../../../Source/ARMCM4_STM32F4/GCC/cpu_comp.c
# Collect FatFS third party library files
PROJ_FILES += $(wildcard ../../../Source/third_party/fatfs/src/*.c)
PROJ_FILES += $(wildcard ../../../Source/third_party/fatfs/src/*.h)
PROJ_FILES += ../../../Source/third_party/fatfs/src/option/unicode.c
#|--------------------------------------------------------------------------------------|
#| Toolchain binaries |
#|--------------------------------------------------------------------------------------|
RM = rm
CC = $(TOOL_PATH)arm-none-eabi-gcc
LN = $(TOOL_PATH)arm-none-eabi-gcc
OC = $(TOOL_PATH)arm-none-eabi-objcopy
OD = $(TOOL_PATH)arm-none-eabi-objdump
AS = $(TOOL_PATH)arm-none-eabi-gcc
SZ = $(TOOL_PATH)arm-none-eabi-size
#|--------------------------------------------------------------------------------------|
#| Filter project files
#|--------------------------------------------------------------------------------------|
PROJ_ASRCS = $(filter %.S,$(foreach file,$(PROJ_FILES),$(notdir $(file))))
PROJ_CSRCS = $(filter %.c,$(foreach file,$(PROJ_FILES),$(notdir $(file))))
PROJ_CHDRS = $(filter %.h,$(foreach file,$(PROJ_FILES),$(notdir $(file))))
#|--------------------------------------------------------------------------------------|
#| Set important path variables |
#|--------------------------------------------------------------------------------------|
VPATH = $(foreach path,$(sort $(foreach file,$(PROJ_FILES),$(dir $(file)))) $(subst \,/,$(OBJ_PATH)),$(path) :)
OBJ_PATH = obj
BIN_PATH = bin
INC_PATH = $(patsubst %/,%,$(patsubst %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file))))))
LIB_PATH = -Lcfg
#|--------------------------------------------------------------------------------------|
#| Options for toolchain binaries |
#|--------------------------------------------------------------------------------------|
HEAP_SIZE = 0x0000
STACK_SIZE = 0x0800
STDFLAGS = -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-strict-aliasing
STDFLAGS += -fdata-sections -ffunction-sections -Wall -g3
OPTFLAGS = -Og
CFLAGS = $(STDFLAGS) $(OPTFLAGS)
CFLAGS += -DSTM32F405RG -DSTM32F4XX -DUSE_STDPERIPH_DRIVER -DHSE_VALUE=8000000
CFLAGS += -DARM_MATH_CM4 -D__FPU_USED -DUSE_USB_OTG_FS
CFLAGS += -D__HEAP_SIZE=$(HEAP_SIZE) -D__STACK_SIZE=$(STACK_SIZE)
CFLAGS += $(INC_PATH)
AFLAGS = $(CFLAGS)
LFLAGS = $(STDFLAGS) $(OPTFLAGS)
LFLAGS += -Wl,--defsym=__HEAP_SIZE=$(HEAP_SIZE) -Wl,--defsym=__STACK_SIZE=$(STACK_SIZE)
LFLAGS += -Wl,-script="stm32f405rg_flash.ld" -Wl,-Map=$(BIN_PATH)/$(PROJ_NAME).map
LFLAGS += -specs=nano.specs -Wl,--gc-sections $(LIB_PATH)
OFLAGS = -O srec
ODFLAGS = -x
SZFLAGS = -B -d
RMFLAGS = -f
#|--------------------------------------------------------------------------------------|
#| Specify library files |
#|--------------------------------------------------------------------------------------|
LIBS =
#|--------------------------------------------------------------------------------------|
#| Define targets |
#|--------------------------------------------------------------------------------------|
AOBJS = $(patsubst %.S,%.o,$(PROJ_ASRCS))
COBJS = $(patsubst %.c,%.o,$(PROJ_CSRCS))
#|--------------------------------------------------------------------------------------|
#| Make ALL |
#|--------------------------------------------------------------------------------------|
.PHONY: all
all: $(BIN_PATH)/$(PROJ_NAME).srec
$(BIN_PATH)/$(PROJ_NAME).srec : $(BIN_PATH)/$(PROJ_NAME).elf
@$(OC) $< $(OFLAGS) $@
@$(OD) $(ODFLAGS) $< > $(BIN_PATH)/$(PROJ_NAME).map
@echo +++ Summary of memory consumption:
@$(SZ) $(SZFLAGS) $<
@echo +++ Build complete [$(notdir $@)]
$(BIN_PATH)/$(PROJ_NAME).elf : $(AOBJS) $(COBJS)
@echo +++ Linking [$(notdir $@)]
@$(LN) $(LFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)/%.o,$(^F)) $(LIBS)
#|--------------------------------------------------------------------------------------|
#| Compile and assemble |
#|--------------------------------------------------------------------------------------|
$(AOBJS): %.o: %.S $(PROJ_CHDRS)
@echo +++ Assembling [$(notdir $<)]
@$(AS) $(AFLAGS) -c $< -o $(OBJ_PATH)/$(@F)
$(COBJS): %.o: %.c $(PROJ_CHDRS)
@echo +++ Compiling [$(notdir $<)]
@$(CC) $(CFLAGS) -c $< -o $(OBJ_PATH)/$(@F)
#|--------------------------------------------------------------------------------------|
#| Make CLEAN |
#|--------------------------------------------------------------------------------------|
.PHONY: clean
clean:
@echo +++ Cleaning build environment
@$(RM) $(RMFLAGS) $(foreach file,$(AOBJS),$(OBJ_PATH)/$(file))
@$(RM) $(RMFLAGS) $(foreach file,$(COBJS),$(OBJ_PATH)/$(file))
@$(RM) $(RMFLAGS) $(patsubst %.o,%.lst,$(foreach file,$(COBJS),$(OBJ_PATH)/$(file)))
@$(RM) $(RMFLAGS) $(BIN_PATH)/$(PROJ_NAME).elf $(BIN_PATH)/$(PROJ_NAME).map
@$(RM) $(RMFLAGS) $(BIN_PATH)/$(PROJ_NAME).srec
@echo +++ Clean complete

View File

@ -1,258 +1,258 @@
S02800002E2E5C62696E5C64656D6F70726F675F6F6C696D65785F73746D3332703430352E7372656344
S3150800800000000220258D0008738D0008758D000874
S31508008010778D0008798D00087B8D00080000000028
S315080080200000000000000000000000007D8D000830
S315080080307F8D000800000000818D0008898E0008E9
S31508008040878D0008898D00088B8D00088D8D0008A6
S315080080508F8D0008918D0008938D0008958D000876
S31508008060978D0008998D00089B8D00089D8D000846
S315080080709F8D0008A18D0008A38D0008A58D000816
S31508008080A78D0008A98D0008AB8D0008AD8D0008E6
S31508008090AF8D0008B18D0008B38D0008B58D0008B6
S315080080A0B78D0008B98D0008BB8D0008BD8D000886
S315080080B0BF8D0008C18D0008C38D0008C58D000856
S315080080C0C78D0008C98D0008CB8D0008CD8D000826
S315080080D0CF8D0008D18D0008D38D0008D58D0008F6
S315080080E0D78D0008D98D0008DB8D0008DD8D0008C6
S315080080F0DF8D0008E18D0008E38D0008E58D000896
S31508008100E78D0008E98D0008EB8D0008ED8D000865
S31508008110EF8D0008F18D0008F38D0008F58D000835
S31508008120F78D0008F98D0008FB8D0008FD8D000805
S31508008130FF8D0008018E0008038E0008058E0008D2
S31508008140078E0008098E00080B8E00080D8E0008A1
S315080081500F8E0008118E0008138E0008158E000871
S31508008160178E0008198E00081B8E00081D8E000841
S315080081701F8E0008218E0008238E0008258E000811
S31508008180278E0008298E0008EE11AA5510B5054C51
S025000062696E2F64656D6F70726F675F6F6C696D65785F73746D3332703430352E737265632C
S31508008000000002205D820008AB820008AD820008ED
S31508008010AF820008B1820008B382000800000000A1
S31508008020000000000000000000000000B582000803
S31508008030B782000800000000B98200088D87000892
S31508008040BF820008C1820008C3820008C5820008F2
S31508008050C7820008C9820008CB820008CD820008C2
S31508008060CF820008D1820008D3820008D582000892
S31508008070D7820008D9820008DB820008DD82000862
S31508008080DF820008E1820008E3820008E582000832
S31508008090E7820008E9820008EB820008ED82000802
S315080080A0EF820008F1820008F3820008F5820008D2
S315080080B0F7820008F9820008FB820008FD820008A2
S315080080C0FF8200080183000803830008058300086F
S315080080D007830008098300080B8300080D8300083E
S315080080E00F8300081183000813830008158300080E
S315080080F017830008198300081B8300081D830008DE
S315080081001F830008218300082383000825830008AD
S3150800811027830008298300082B8300082D8300087D
S315080081202F8300083183000833830008358300084D
S3150800813037830008398300083B8300083D8300081D
S315080081403F830008418300084383000845830008ED
S3150800815047830008498300084B8300084D830008BD
S315080081604F8300085183000853830008558300088D
S3150800817057830008598300085B8300085D8300085D
S315080081805F83000861830008EE11AA5510B5054CF7
S31508008190237833B9044B13B10448AFF300800123A5
S315080081A0237010BD7C00002000000000648F0008CA
S315080081A0237010BD7C00002000000000608F0008CE
S315080081B0084B10B51BB108490848AFF300800848BA
S315080081C0036803B910BD074B002BFBD0BDE8104070
S315080081D0184700BF0000000080000020648F0008D8
S315080081D0184700BF0000000080000020608F0008DC
S315080081E07C00002000000000154B002B08BF134B35
S315080081F09D46A3F5803A00218B460F461348144A3C
S31508008200121A00F083FE0F4B002B00D098470E4B36
S31508008200121A00F085FE0F4B002B00D098470E4B34
S31508008210002B00D098470020002104000D000D48CF
S31508008220002802D00C48AFF3008000F049FE200079
S31508008230290000F06DFD00F02FFE00BF00000800C9
S31508008220002802D00C48AFF3008000F04BFE200077
S31508008230290000F02DFA00F031FE00BF000008000A
S315080082400000022000000000000000007C00002062
S31508008250F00000200000000000000000F0B5002437
S3150800826021E0134D15F8147005EB440595F801E067
S3150800827007EB0E0505FB00054AF2104C9CFBF5F6CC
S3150800828005FB16C66EB99CFBF5F5ADB20D80013D32
S31508008290ADB2B5F5806F04D2177083F800E00120FF
S315080082A0F0BD0134E4B2112CDBD90020F0BD00BFCB
S315080082B0388F0008F0B587B001214FF4003000F080
S315080082C0FBFB0121084600F0E9FB1E4D07220221AF
S315080082D0284600F06FFB07220321284600F06AFBB8
S315080082E000248DF8164001278DF8177002268DF8A0
S315080082F01460042304938DF8156004A9284600F039
S3150800830013FB8DF814600823049304A9284600F08B
S315080083100BFB4FF461430093ADF80440ADF80640FB
S31508008320ADF80840ADF80C400C23ADF80A30064C01
S315080083306946204600F0DCFB3946204600F040FC42
S3150800834007B0F0BD000002400044004070B58AB096
S315080083500121022000F0A2FB354E092208213046F1
S3150800836000F028FB09221146304600F023FB4FF4A3
S315080083704073089302238DF824308DF825300024A5
S315080083808DF8264001258DF8275008A9304600F0BB
S31508008390CBFA29464FF0007000F08EFBA6F5D036D2
S315080083A0304600F031F905A800F04CFA6B460DEBA3
S315080083B005020DF102014FF4FA70FFF74FFF8DF831
S315080083C01A408DF81B408DF81C408DF81D408DF81D
S315080083D01E408DF81F408DF816408DF817409DF801
S315080083E00130013B8DF818309DF80030013B8DF8BF
S315080083F01930BDF80230ADF8143005A9304600F042
S315080084001FF98DF80E408DF80F408DF81050ADF815
S315080084100440ADF80640ADF80840ADF80A40ADF89E
S315080084200C408DF8115001A800F092F90AB070BD01
S315080084300004024010B504462021064800F0D2FB8D
S31508008440012805D1034800F0C9FB2070012010BDA2
S31508008450002010BD0044004008B5FFF72BFFFFF7CA
S3150800846075FF08BDBFF34F8F0449CA6802F4E0627E
S31508008470034B1343CB60BFF34F8FFEE700ED00E0DD
S315080084800400FA0508B5204B1B789BB91F48FFF76F
S31508008490D1FF012836D11D4B1B78002B32D000F0B6
S315080084A0EDFC1B4B18600122174B1A700022194B62
S315080084B01A7008BD174B1B78013314481844FFF788
S315080084C0B9FF012814D1134A13780133DBB21370AC
S315080084D00E4A1278934215D100220B4B1A700B4B99
S315080084E05B78FF2B0ED1094B9B785BB9FFF7BAFF78
S315080084F000F0C4FC064B1B686433984202D900227C
S31508008500014B1A7008BD00BFE1000020A000002042
S31508008510980000209C00002000B587B00021114873
S3150800852000F0F4F9D8B101AA00210E4800F09AF932
S315080085309DF80C3033B940F26763019A9A4203D02A
S31508008540002302E0002300E0012343B19DF80F3029
S31508008550FF2B04D19DF810300BB9FFF783FF07B046
S315080085605DF804FB0064004008B5FFF78BFFFFF7D2
S31508008570D3FF08BD30B583B00121042000F08EFA80
S315080085804FF48055009501238DF8043000228DF8AC
S3150800859006208DF8073002238DF80530054C69460C
S315080085A0204600F0C1F92946204600F0FFF903B03D
S315080085B030BD00BF0008024010B500F05FFC0F4B4D
S315080085C01B68C31AB3F5FA7F16D304460C4B1B78FF
S315080085D043B901220A4B1A704FF48051094800F03A
S315080085E0E7F907E00022064B1A704FF48051054858
S315080085F000F0DCF9014B1C6010BD00BFE400002050
S31508008600E80000200008024008B50C4B98420AD141
S3150800861001214FF0007000F05DFA00214FF0007064
S3150800862000F058FA08BD01214FF0806000F052FAB8
S3150800863000214FF0806000F04DFA08BD006400404C
S31508008640036823F002030360036843F00103036031
S31508008650002300E00133426812F0010F03D14FF600
S31508008660FF729342F6D1436813F0010F6BD08B79F2
S31508008670012B04D1036843F08003036003E0036819
S3150800868023F080030360CB79012B04D1036843F000
S315080086904003036003E0036823F0400303600B7A9A
S315080086A0012B04D1036843F02003036003E0036849
S315080086B023F0200303604B7A012B04D1036843F0AF
S315080086C01003036003E0036823F0100303608B7A4A
S315080086D0012B04D1036843F00803036003E0036831
S315080086E023F008030360CB7A012B04D1036843F017
S315080086F00403036003E0036823F0040303608A7835
S31508008700CB781B0643EA82730A7943EA02434A791D
S3150800871043EA02530A88013A1343C361036823F004
S3150800872001030360002300E00133426812F0010FE1
S3150800873003D04FF6FF729342F6D1436813F0010F48
S3150800874003D000207047002070470120704700BF03
S3150800875070B4837A012202FA03F3394AD2F8001276
S3150800876041F00101C2F80012D2F81C12DC43214084
S31508008770C2F81C12027BB2B9314AD2F80C12214057
S31508008780C2F80C12817AC688458845EA06454831FA
S3150800879042F83150857A8688018841EA064148358B
S315080087A002EBC5025160027B012A16D1244AD2F88F
S315080087B00C121943C2F80C12817A0688458845EAD4
S315080087C00645483142F83150857A8688C18841EA9B
S315080087D00641483502EBC5025160C27A32B91849DA
S315080087E0D1F804222240C1F8042205E01449D1F840
S315080087F004221A43C1F8042202892AB91049D1F879
S3150800880014221440C1F814420289012A05D10C49E0
S31508008810D1F814221A43C1F81422427B012A05D141
S315080088200749D1F81C221343C1F81C32044AD2F86E
S31508008830003223F00103C2F8003270BC704700BF53
S315080088400064004000238371C3710372437283720C
S31508008850C3728370C3700323037102234371012318
S315080088600380704710B401F11B031B01C35803F0C2
S315080088700403DBB2137233B901F11B031B01C3589E
S315080088805B0D136005E001F11B031B01C358DB08F0
S31508008890536001F11B031B01C418C35803F00203FC
S315080088A05372636803F00F03937263681B0AD374E9
S315080088B000EB0113D3F8B841D472D3F8B841240AAF
S315080088C01473D3F8B841240C5473D3F8B841240E62
S315080088D09473D3F8BC41D473D3F8BC41240A1474F6
S315080088E0D3F8BC41240C5474D3F8BC311B0E9374D2
S315080088F021B9C36843F02003C36003E0036943F06A
S31508008900200303615DF8044B704700BF19B9C068BE
S3150800891000F003007047012903D1006900F0030045
S3150800892070470020704700BF70B400233AE0012268
S315080089309A400C68A24334D104685D000322AA4019
S31508008940D2431440046006680C79AC403443046092
S315080089500C79013CE4B2012C15D884682240826067
S3150800896084684A79AA402243826046689AB20124FA
S31508008970944026EA0404446046688C7904FA02F2B4
S3150800898092B232434260C4689AB256000322B24099
S3150800899024EA0202C260C668CC7904FA05F23243B8
S315080089A0C26001330F2BC2D970BC70470183704770
S315080089B04183704730B401F007039B009A40C90809
S315080089C0083150F821400F2505FA03F324EA03037A
S315080089D040F8213050F821301A4340F8212030BCA5
S315080089E0704700BF10B4294B9B6803F00C03042B97
S315080089F005D0082B06D053BB254B036029E0254B31
S31508008A00036026E0214B5A685B6803F03F0312F4C3
S31508008A10800F09D01F4AB2FBF3F21C4B5B68C3F305
S31508008A20881303FB02F208E0194AB2FBF3F3174A6C
S31508008A305168C1F3881101FB03F2144B5B68C3F359
S31508008A40014301335B00B2FBF3F3036001E0104B13
S31508008A5003600E4CA368C3F303130F49CB5CDAB269
S31508008A600368D3404360A268C2F382228A5CD2B20A
S31508008A7023FA02F28260A268C2F342328A5CD2B258
S31508008A80D340C3605DF8044B704700BF003802400E
S31508008A900024F40000127A000000002021B1054BE2
S31508008AA01A6B104318637047024A136B23EA0000D7
S31508008AB0106370470038024021B1054B1A6C104309
S31508008AC018647047024A136C23EA00001064704762
S31508008AD00038024021B1054B1A6A104318627047E4
S31508008AE0024A136A23EA00001062704700380240FF
S31508008AF030B585B004460D46038A9BB223F440532D
S31508008B00CA881343038283899BB223F4B05323F0A4
S31508008B100C01A8882A896B89024313430B43A38156
S31508008B20A38A9BB223F44073AA891343A382684697
S31508008B30FFF758FF204B9C4203D003F580639C4205
S31508008B4001D1039A00E0029AA38913F4004F08D0D2
S31508008B5002EB820202EB820229684900B2FBF1F1BC
S31508008B6007E002EB820202EB820229688900B2FB67
S31508008B70F1F1124BA3FB01235B091B011A096420BF
S31508008B8000FB1212A18911F4004F08D0D20032322C
S31508008B900A49A1FB0212C2F342121A4307E0120164
S31508008BA032320649A1FB0212C2F343121A4392B2A9
S31508008BB0228105B030BD00BF001001401F85EB5172
S31508008BC029B183899BB243F4005383817047838913
S31508008BD09BB223F400539BB2838170478088C0F30D
S31508008BE0080070470388194201D001207047002009
S31508008BF0704700BF82B00023019300932A4A136886
S31508008C0043F480331360284B1B6803F40033009346
S31508008C10019B01330193009B1BB9019BB3F5A06F20
S31508008C20F1D1214B1B6813F4003F02D001230093B6
S31508008C3001E000230093009B012B32D11A4B1A6CDA
S31508008C4042F080521A6419490A6842F440420A609E
S31508008C509A689A609A6842F400429A609A6842F45E
S31508008C60A0529A60124A5A601A6842F080721A60D4
S31508008C700D4B1B6813F0007FFAD040F205620D4BCE
S31508008C801A60A3F580639A6822F003029A609A68CC
S31508008C9042F002029A60044B9B6803F00C03082B0F
S31508008CA0F9D102B0704700BF00380240007000409A
S31508008CB008544007003C024008B50F4AD2F88830ED
S31508008CC043F47003C2F888300C4B1A6842F001026C
S31508008CD01A60002199601A6822F0847222F48032A0
S31508008CE01A60074A5A601A6822F480221A60D96004
S31508008CF0FFF780FF08BD00BF00ED00E00038024026
S31508008D001030002408B5FFF735FC00F099F808BDC7
S31508008D1008B5FFF7F7FFFFF79FFBFFF74DFCFFF7D7
S31508008D2023FCFAE707498D460749084A084B9A4241
S31508008D30BEBF51F8040B42F8040BF8E70548804714
S31508008D400548004700000220708F00080000002038
S31508008D507C000020B98C0008E98100083349344AB0
S31508008D60002301E041F8043B9142FBD3FFF7D0FF13
S31508008D70FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7BD
S31508008D80FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7AD
S31508008D90FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE79D
S31508008DA0FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE78D
S31508008DB0FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE77D
S31508008DC0FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE76D
S31508008DD0FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE75D
S31508008DE0FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE74D
S31508008DF0FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE73D
S31508008E00FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE72C
S31508008E10FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE71C
S31508008E20FEE7FEE7FEE7FEE7FEE700007C0000201F
S31508008E30F0000020014B1860704700BFEC000020CE
S31508008E4008B50A4B1B680A4AA2FB03239B09013B88
S31508008E50084A5360F021084B83F8231000209060DD
S31508008E6007231360FFF7E6FF08BD00BF10000020C8
S31508008E70D34D621010E000E000ED00E0014B1868E9
S31508008E80704700BFEC000020024A136801331360E4
S31508008E90704700BFEC00002008B5074B044613B125
S31508008EA00021AFF30080054B1868836A03B1984721
S31508008EB0204600F033F800BF00000000608F00086D
S31508008EC070B50E4B0E4CE41AA41000251E46A5429A
S31508008ED004D056F8253098470135F8E700F020F811
S31508008EE0084C094BE41AA41000251E46A54204D0D6
S31508008EF056F8253098470135F8E770BD740000200C
S31508008F007400002078000020740000200244034604
S31508008F10934202D003F8011BFAE77047FEE7000008
S31508008250F0000020000000000000000007498D46DD
S315080082600749084A084B9A42BEBF51F8040B42F820
S31508008270040BF8E705488047054800470000022038
S315080082806C8F0008000000207C000020518E00083A
S31508008290E98100083349344A002301E041F8043BE8
S315080082A09142FBD300F0F4F9FEE7FEE7FEE7FEE7AE
S315080082B0FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE788
S315080082C0FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE778
S315080082D0FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE768
S315080082E0FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE758
S315080082F0FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE748
S31508008300FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE737
S31508008310FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE727
S31508008320FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE717
S31508008330FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE707
S31508008340FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7F7
S31508008350FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7E7
S31508008360FEE700007C000020F0000020F0B50024A5
S3150800837021E0134D15F8147005EB440595F801E056
S3150800838007EB0E0505FB00054AF2104C9CFBF5F6BB
S3150800839005FB16C66EB99CFBF5F5ADB20D80013D21
S315080083A0ADB2B5F5806F04D2177083F800E00120EE
S315080083B0F0BD0134E4B2112CDBD90020F0BD00BFBA
S315080083C0388F0008F0B587B001214FF4003000F06F
S315080083D03FFC0121084600F02DFC1E4D0722022114
S315080083E0284600F023FA07220321284600F01EFA41
S315080083F000248DF8164001278DF8177002268DF88F
S315080084001460042304938DF8156004A9284600F027
S31508008410C7F98DF814600823049304A9284600F0C8
S31508008420BFF94FF461430093ADF80440ADF8064038
S31508008430ADF80840ADF80C400C23ADF80A30064CF0
S315080084406946204600F020FC3946204600F084FCA8
S3150800845007B0F0BD000002400044004070B58AB085
S315080084600121022000F0E6FB354E0922082130469C
S3150800847000F0DCF909221146304600F0D7F94FF42E
S315080084804073089302238DF824308DF82530002494
S315080084908DF8264001258DF8275008A9304600F0AA
S315080084A07FF929464FF0007000F0D2FBA6F5D036CA
S315080084B0304600F0D3F905A800F0EEFA6B460DEB4E
S315080084C005020DF102014FF4FA70FFF74FFF8DF820
S315080084D01A408DF81B408DF81C408DF81D408DF80C
S315080084E01E408DF81F408DF816408DF817409DF8F0
S315080084F00130013B8DF818309DF80030013B8DF8AE
S315080085001930BDF80230ADF8143005A9304600F030
S31508008510C1F98DF80E408DF80F408DF81050ADF862
S315080085200440ADF80640ADF80840ADF80A40ADF88D
S315080085300C408DF8115001A800F034FA0AB070BD4D
S315080085400004024010B504462021064800F016FC37
S31508008550012805D1034800F00DFC2070012010BD4C
S31508008560002010BD0044004008B5FFF72BFFFFF7B9
S3150800857075FF08BDBFF34F8F0449CA6802F4E0626D
S31508008580034B1343CB60BFF34F8FFEE700ED00E0CC
S315080085900400FA0508B5204B1B789BB91F48FFF75E
S315080085A0D1FF012836D11D4B1B78002B32D000F0A5
S315080085B0E7F81B4B18600122174B1A700022194B5B
S315080085C01A7008BD174B1B78013314481844FFF777
S315080085D0B9FF012814D1134A13780133DBB213709B
S315080085E00E4A1278934215D100220B4B1A700B4B88
S315080085F05B78FF2B0ED1094B9B785BB9FFF7BAFF67
S3150800860000F0BEF8064B1B686433984202D9002274
S31508008610014B1A7008BD00BFE1000020A000002031
S31508008620980000209C00002000B587B00021114862
S3150800863000F096FAD8B101AA00210E4800F03CFADB
S315080086409DF80C3033B940F26763019A9A4203D019
S31508008650002302E0002300E0012343B19DF80F3018
S31508008660FF2B04D19DF810300BB9FFF783FF07B035
S315080086705DF804FB0064004008B5FFF78BFFFFF7C1
S31508008680D3FF08BD08B500F00DF800F05BF808BD8B
S3150800869008B5FFF7F7FFFFF767FF00F025F8FFF7C4
S315080086A0EBFFFAE730B583B00121042000F0C2FAE7
S315080086B04FF48055009501238DF8043000228DF87B
S315080086C006208DF8073002238DF80530054C6946DB
S315080086D0204600F065F82946204600F0A3F803B0C6
S315080086E030BD00BF0008024010B500F049F80F4B36
S315080086F01B68C31AB3F5FA7F16D304460C4B1B78CE
S3150800870043B901220A4B1A704FF48051094800F008
S315080087108BF807E00022064B1A704FF48051054883
S3150800872000F080F8014B1C6010BD00BFE40000207B
S31508008730E800002000080240014B1860704700BF9F
S31508008740EC00002008B50A4B1B680A4AA2FB032363
S315080087509B09013B084A5360F021084B83F8231014
S315080087600020906007231360FFF7E6FF08BD00BFEF
S3150800877010000020D34D621010E000E000ED00E08C
S31508008780014B1868704700BFEC000020024A1368C6
S3150800879001331360704700BFEC000020FEE700BFFE
S315080087A070B400233AE001229A400C68A24334D1FF
S315080087B004685D000322AA40D24314400460066898
S315080087C00C79AC40344304600C79013CE4B2012CCA
S315080087D015D884682240826084684A79AA40224370
S315080087E0826046689AB20124944026EA04044460EA
S315080087F046688C7904FA02F292B232434260C4683F
S315080088009AB256000322B24024EA0202C260C6683F
S31508008810CC7904FA05F23243C26001330F2BC2D970
S3150800882070BC7047018370474183704730B401F0CC
S3150800883007039B009A40C908083150F821400F25C4
S3150800884005FA03F324EA030340F8213050F82130EF
S315080088501A4340F8212030BC704700BF08B50C4BBE
S3150800886098420AD101214FF0007000F0FFF900216B
S315080088704FF0007000F0FAF908BD01214FF0806052
S3150800888000F0F4F900214FF0806000F0EFF908BD20
S3150800889000640040036823F002030360036843F0A2
S315080088A001030360002300E00133426812F0010F60
S315080088B003D14FF6FF729342F6D1436813F0010FC6
S315080088C06BD08B79012B04D1036843F080030360D6
S315080088D003E0036823F080030360CB79012B04D1FE
S315080088E0036843F04003036003E0036823F0400392
S315080088F003600B7A012B04D1036843F0200303605D
S3150800890003E0036823F0200303604B7A012B04D1AC
S31508008910036843F01003036003E0036823F01003C1
S3150800892003608B7A012B04D1036843F008030360C4
S3150800893003E0036823F008030360CB7A012B04D114
S31508008940036843F00403036003E0036823F00403A9
S3150800895003608A78CB781B0643EA82730A7943EA6E
S3150800896002434A7943EA02530A88013A1343C36128
S31508008970036823F001030360002300E00133426823
S3150800898012F0010F03D04FF6FF729342F6D14368F7
S3150800899013F0010F03D00020704700207047012014
S315080089A0704700BF70B4837A012202FA03F3394A8A
S315080089B0D2F8001241F00101C2F80012D2F81C12D6
S315080089C0DC432140C2F81C12027BB2B9314AD2F804
S315080089D00C122140C2F80C12817AC688458845EAED
S315080089E00645483142F83150857A8688018841EA39
S315080089F00641483502EBC5025160027B012A16D1B1
S31508008A00244AD2F80C121943C2F80C12817A068845
S31508008A10458845EA0645483142F83150857A8688C0
S31508008A20C18841EA0641483502EBC5025160C27A5F
S31508008A3032B91849D1F804222240C1F8042205E0C7
S31508008A401449D1F804221A43C1F8042202892AB922
S31508008A501049D1F814221440C1F814420289012A97
S31508008A6005D10C49D1F814221A43C1F81422427BC5
S31508008A70012A05D10749D1F81C221343C1F81C3233
S31508008A80044AD2F8003223F00103C2F8003270BC5F
S31508008A90704700BF0064004000238371C3710372EE
S31508008AA043728372C3728370C370032303710223F4
S31508008AB0437101230380704710B401F11B031B01A6
S31508008AC0C35803F00403DBB2137233B901F11B0375
S31508008AD01B01C3585B0D136005E001F11B031B0165
S31508008AE0C358DB08536001F11B031B01C418C358A4
S31508008AF003F002035372636803F00F03937263680B
S31508008B001B0AD37400EB0113D3F8B841D472D3F817
S31508008B10B841240A1473D3F8B841240C5473D3F813
S31508008B20B841240E9473D3F8BC41D473D3F8BC412E
S31508008B30240A1474D3F8BC41240C5474D3F8BC31F9
S31508008B401B0E937421B9C36843F02003C36003E086
S31508008B50036943F0200303615DF8044B704700BFC7
S31508008B6019B9C06800F003007047012903D10069EC
S31508008B7000F0030070470020704700BF10B4294B6F
S31508008B809B6803F00C03042B05D0082B06D053BBB7
S31508008B90254B036029E0254B036026E0214B5A68E4
S31508008BA05B6803F03F0312F4800F09D01F4AB2FB3B
S31508008BB0F3F21C4B5B68C3F3881303FB02F208E06D
S31508008BC0194AB2FBF3F3174A5168C1F3881101FB3E
S31508008BD003F2144B5B68C3F3014301335B00B2FB3A
S31508008BE0F3F3036001E0104B03600E4CA368C3F374
S31508008BF003130F49CB5CDAB20368D3404360A2681B
S31508008C00C2F382228A5CD2B223FA02F28260A26896
S31508008C10C2F342328A5CD2B2D340C3605DF8044BD9
S31508008C20704700BF003802400024F40000127A00A2
S31508008C300000002021B1054B1A6B104318637047DA
S31508008C40024A136B23EA000010637047003802409B
S31508008C5021B1054B1A6C104318647047024A136C0D
S31508008C6023EA0000106470470038024021B1054B22
S31508008C701A6A104318627047024A136A23EA000008
S31508008C80106270470038024030B585B004460D467C
S31508008C90038A9BB223F44053CA8813430382838909
S31508008CA09BB223F4B05323F00C01A8882A896B8958
S31508008CB0024313430B43A381A38A9BB223F4407355
S31508008CC0AA891343A3826846FFF758FF204B9C42A4
S31508008CD003D003F580639C4201D1039A00E0029A0F
S31508008CE0A38913F4004F08D002EB820202EB82023A
S31508008CF029684900B2FBF1F107E002EB820202EBB8
S31508008D00820229688900B2FBF1F1124BA3FB012309
S31508008D105B091B011A09642000FB1212A18911F4D0
S31508008D20004F08D0D20032320A49A1FB0212C2F320
S31508008D3042121A4307E0120132320649A1FB021217
S31508008D40C2F343121A4392B2228105B030BD00BF66
S31508008D50001001401F85EB5129B183899BB243F46A
S31508008D6000538381704783899BB223F400539BB2D7
S31508008D70838170478088C0F30800704703881942CA
S31508008D8001D0012070470020704700BF82B0002341
S31508008D90019300932A4A136843F480331360284BDF
S31508008DA01B6803F400330093019B01330193009B76
S31508008DB01BB9019BB3F5A06FF1D1214B1B6813F4C6
S31508008DC0003F02D00123009301E000230093009B9B
S31508008DD0012B32D11A4B1A6C42F080521A64194987
S31508008DE00A6842F440420A609A689A609A6842F4AD
S31508008DF000429A609A6842F4A0529A60124A5A60EF
S31508008E001A6842F080721A600D4B1B6813F0007FD7
S31508008E10FAD040F205620D4B1A60A3F580639A6892
S31508008E2022F003029A609A6842F002029A60044BA2
S31508008E309B6803F00C03082BF9D102B0704700BFFA
S31508008E40003802400070004008544007003C0240C9
S31508008E5008B50F4AD2F8883043F47003C2F8883050
S31508008E600C4B1A6842F001021A60002199601A68D0
S31508008E7022F0847222F480321A60074A5A601A680D
S31508008E8022F480221A60D960FFF780FF08BD00BF70
S31508008E9000ED00E0003802401030002408B5074B0A
S31508008EA0044613B10021AFF30080054B1868836AA6
S31508008EB003B198472046FFF771FC00BF0000000089
S31508008EC05C8F000870B50E4B0E4CE41AA4100025F2
S31508008ED01E46A54204D056F8253098470135F8E7CE
S31508008EE000F01EF8084C094BE41AA41000251E468B
S31508008EF0A54204D056F8253098470135F8E770BDE5
S31508008F0074000020740000207800002074000020FF
S31508008F1002440346934202D003F8011BFAE770475E
S31508008F20F8B500BFF8BC08BC9E467047F8B500BF48
S31508008F30F8BC08BC9E4670470502060206030703EE
S31508008F400803090309040A040B040C040C050D059F
S31508008F500E050F050F06100610071008430000003F
S30D08008F601400002000000000C7
S30D08008F6880F2FF7F0100000002
S31508008F7000000000010203040102030406070809B1
S31508008F80007A030A0000000000000000000000004C
S31508008F9000000000000000000000000000000000C3
S31508008FA0000000005C8F00080000000000000000C0
S31508008FB000000000000000000000000000000000A3
S31508008FC00000000000000000000000000000000093
S31508008FD00000000000000000000000000000000083
S31108008FE000000000B18100088D81000827
S31508008F500E050F050F06100610071008140000204E
S30908008F6000000000FF
S30D08008F6484F2FF7F0100000002
S31508008F6C00000000010203040102030406070809B5
S31508008F7C007A030A00000000000000000000000050
S31508008F8C00000000000000000000000000000000C7
S31508008F9C00000000000000000000000000000000B7
S31508008FAC00000000000000000000000000000000A7
S31508008FBC0000000000000000000000000000000097
S31508008FCC0000000000000000000000000000000087
S31108008FDC00000000B18100088D8100082B
S7050800800072

View File

@ -1,363 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<EmBitz_project_file>
<EmBitzVersion release="1.00" revision="0" />
<FileVersion major="1" minor="0" />
<Project>
<Option title="STM32P405" />
<Option pch_mode="2" />
<Option compiler="armgcc_eb" />
<Option virtualFolders="Libs\;Srcs\;Libs\cmsis\;Libs\SPL\;" />
<Build>
<Target title="Debug">
<Option output="..\bin\demoprog_olimex_stm32p405.elf" />
<Option object_output="..\obj\" />
<Option type="0" />
<Option compiler="armgcc_eb" />
<Option projectDeviceOptionsRelation="0" />
<Compiler>
<Add option="-Wall" />
<Add option="-fdata-sections" />
<Add option="-ffunction-sections" />
<Add option="-O0" />
<Add option="-g3" />
<Add option="-Og" />
</Compiler>
<Assembler>
<Add option="-Wa,--gdwarf-2" />
</Assembler>
<Linker>
<Add option="-Wl,--gc-sections" />
</Linker>
</Target>
</Build>
<Device>
<Add option="$device=cortex-m4" />
<Add option="$fpu=fpv4-sp-d16" />
<Add option="$lscript=../cfg/stm32f405rg_flash.ld" />
<Add option="$stack=0x0400" />
<Add option="$heap=0x0000" />
</Device>
<Compiler>
<Add option="-mfloat-abi=hard" />
<Add option="-fno-strict-aliasing" />
<Add symbol="ARM_MATH_CM4" />
<Add symbol="__FPU_USED" />
<Add symbol="STM32F405RG" />
<Add symbol="STM32F4XX" />
<Add symbol="USE_STDPERIPH_DRIVER" />
<Add symbol="HSE_VALUE=8000000" />
<Add directory="..\lib" />
<Add directory="..\lib\cmsis" />
<Add directory="..\lib\SPL\inc" />
<Add directory="..\..\Prog" />
</Compiler>
<Linker>
<Add option="-eb_lib=n" />
<Add option="-eb_start_files" />
</Linker>
<ExtraCommands>
<Add after="arm-none-eabi-objcopy -O srec $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).elf $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).srec" />
<Mode before="0" />
<Mode after="1" />
</ExtraCommands>
<Unit filename="..\boot.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\boot.h">
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\header.h">
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\led.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\led.h">
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\lib\cmsis\core_cm4.h">
<Option virtualFolder="Libs\cmsis\" />
</Unit>
<Unit filename="..\lib\cmsis\core_cm4_simd.h">
<Option virtualFolder="Libs\cmsis\" />
</Unit>
<Unit filename="..\lib\cmsis\core_cmFunc.h">
<Option virtualFolder="Libs\cmsis\" />
</Unit>
<Unit filename="..\lib\cmsis\core_cmInstr.h">
<Option virtualFolder="Libs\cmsis\" />
</Unit>
<Unit filename="..\lib\SPL\inc\misc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_adc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_can.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_crc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_cryp.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_dac.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_dbgmcu.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_dcmi.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_dma.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_exti.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_flash.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_fsmc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_gpio.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_hash.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_i2c.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_iwdg.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_pwr.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_rcc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_rng.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_rtc.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_sdio.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_spi.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_syscfg.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_tim.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_usart.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\inc\stm32f4xx_wwdg.h">
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\misc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_adc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_can.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_crc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_cryp.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_cryp_aes.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_cryp_des.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_cryp_tdes.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_dac.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_dbgmcu.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_dcmi.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_dma.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_exti.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_flash.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_fsmc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_gpio.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_hash.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_hash_md5.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_hash_sha1.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_i2c.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_iwdg.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_pwr.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_rcc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_rng.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_rtc.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_sdio.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_spi.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_syscfg.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_tim.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_usart.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\SPL\src\stm32f4xx_wwdg.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\SPL\" />
</Unit>
<Unit filename="..\lib\stm32f4xx.h">
<Option virtualFolder="Libs\" />
</Unit>
<Unit filename="..\lib\stm32f4xx_conf.h">
<Option virtualFolder="Libs\" />
</Unit>
<Unit filename="..\lib\system_stm32f4xx.c">
<Option compilerVar="CC" />
<Option virtualFolder="Libs\" />
</Unit>
<Unit filename="..\lib\system_stm32f4xx.h">
<Option virtualFolder="Libs\" />
</Unit>
<Unit filename="..\main.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\startup_stm32f4xx.S">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\timer.c">
<Option compilerVar="CC" />
<Option virtualFolder="Srcs\" />
</Unit>
<Unit filename="..\timer.h">
<Option virtualFolder="Srcs\" />
</Unit>
<Extensions>
<code_completion />
<debugger>
<target_debugging_settings target="Debug" active_interface="J-link">
<debug_interface interface_id="J-link" ip_address="localhost" ip_port="2331" path="%Software\SEGGER\J-Link:InstallPath%" executable="JLinkGDBServer.exe" description="" dont_start_server="false" backoff_time="2000" options="2" reg_filter="0" active_family="STMicroelectronics" gdb_before_conn="" gdb_after_conn="">
<family_options family_id="Energy Micro" />
<family_options family_id="STMicroelectronics">
<option opt_id="ID_DEVICE" opt_value="STM32F405RG" />
<option opt_id="ID_JTAG_SWD" opt_value="jtag" />
<option opt_id="ID_SPEED" opt_value="1000" />
<option opt_id="ID_AUTO_SPEED" opt_value="1" />
<option opt_id="ID_ENDIANNESS" opt_value="little" />
<option opt_id="ID_RESET_TYPE" opt_value="0" />
<option opt_id="ID_VECTOR_START" opt_value="0x08000000" />
<option opt_id="ID_LOAD_PROGRAM" opt_value="1" />
<option opt_id="ID_FLASH_DOWNLOAD" opt_value="1" />
<option opt_id="ID_FLASH_BREAK" opt_value="1" />
<option opt_id="ID_RAM_EXEC" opt_value="0" />
<option opt_id="ID_VEC_TABLE" opt_value="1" />
<option opt_id="ID_NCACHE_CHECK" opt_value="0" />
<option opt_id="ID_NCACHE_BASE" opt_value="" />
<option opt_id="ID_NCACHE_LENGTH" opt_value="" />
<option opt_id="ID_SEMIHOST_CHECK" opt_value="0" />
<option opt_id="ID_ARM_SWI" opt_value="" />
<option opt_id="ID_THUMB_SWI" opt_value="" />
</family_options>
</debug_interface>
</target_debugging_settings>
</debugger>
<envvars />
<DoxyBlocks>
<comment_style block="0" line="0" />
<doxyfile_project />
<doxyfile_build />
<doxyfile_warnings />
<doxyfile_output />
<doxyfile_dot />
<general />
</DoxyBlocks>
</Extensions>
</Project>
</EmBitz_project_file>

View File

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<EmBitz_layout_file>
<ActiveTarget name="Debug" />
<File name="..\boot.c" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4615" topLine="83" />
</Cursor>
</File>
<File name="..\led.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2192" topLine="18" />
</Cursor>
</File>
<File name="..\lib\stm32f4xx.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="543546" topLine="7085" />
</Cursor>
</File>
<File name="..\main.c" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2172" topLine="20" />
</Cursor>
</File>
<File name="..\startup_stm32f4xx.S" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="9734" topLine="133" />
</Cursor>
</File>
<File name="..\timer.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1430" topLine="0" />
</Cursor>
</File>
</EmBitz_layout_file>

View File

@ -0,0 +1,38 @@
// ----------------------------------------------------------------------------
#include <stdlib.h>
// ----------------------------------------------------------------------------
// Forward declaration
void
_exit(int code);
// ----------------------------------------------------------------------------
// We just enter an infinite loop, to be used as landmark when halting
// the debugger.
//
// It can be redefined in the application, if more functionality
// is required.
void
__attribute__((weak))
_exit(int code __attribute__((unused)))
{
// TODO: write on trace
while (1)
;
}
// ----------------------------------------------------------------------------
void
__attribute__((weak,noreturn))
abort(void)
{
_exit(1);
}
// ----------------------------------------------------------------------------

View File

@ -0,0 +1,165 @@
#****************************************************************************************
#| Description: Makefile for GNU ARM Embedded toolchain.
#| File Name: makefile
#|
#|---------------------------------------------------------------------------------------
#| C O P Y R I G H T
#|---------------------------------------------------------------------------------------
#| Copyright (c) 2017 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 have received a copy of the GNU General Public License along with OpenBLT. It
#| should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
#|
#****************************************************************************************
SHELL = sh
#|--------------------------------------------------------------------------------------|
#| Configure project name |
#|--------------------------------------------------------------------------------------|
PROJ_NAME=demoprog_olimex_stm32p405
#|--------------------------------------------------------------------------------------|
#| Configure tool path |
#|--------------------------------------------------------------------------------------|
TOOL_PATH=/opt/gcc-arm-none-eabi-5_4-2016q3/bin/
#|--------------------------------------------------------------------------------------|
#| Collect project files |
#|--------------------------------------------------------------------------------------|
# Recursive wildcard function implementation. Example usages:
# $(call rwildcard, , *.c *.h)
# --> Returns all *.c and *.h files in the current directory and below
# $(call rwildcard, /lib/, *.c)
# --> Returns all *.c files in the /lib directory and below
rwildcard = $(strip $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d)))
# Collect all application files in the current directory and its subdirectories
PROJ_FILES = $(call rwildcard, , *.c *.h *.S)
#|--------------------------------------------------------------------------------------|
#| Toolchain binaries |
#|--------------------------------------------------------------------------------------|
RM = rm
CC = $(TOOL_PATH)arm-none-eabi-gcc
LN = $(TOOL_PATH)arm-none-eabi-gcc
OC = $(TOOL_PATH)arm-none-eabi-objcopy
OD = $(TOOL_PATH)arm-none-eabi-objdump
AS = $(TOOL_PATH)arm-none-eabi-gcc
SZ = $(TOOL_PATH)arm-none-eabi-size
#|--------------------------------------------------------------------------------------|
#| Filter project files
#|--------------------------------------------------------------------------------------|
PROJ_ASRCS = $(filter %.S,$(foreach file,$(PROJ_FILES),$(notdir $(file))))
PROJ_CSRCS = $(filter %.c,$(foreach file,$(PROJ_FILES),$(notdir $(file))))
PROJ_CHDRS = $(filter %.h,$(foreach file,$(PROJ_FILES),$(notdir $(file))))
#|--------------------------------------------------------------------------------------|
#| Set important path variables |
#|--------------------------------------------------------------------------------------|
VPATH = $(foreach path,$(sort $(foreach file,$(PROJ_FILES),$(dir $(file)))) $(subst \,/,$(OBJ_PATH)),$(path) :)
OBJ_PATH = obj
BIN_PATH = bin
INC_PATH = $(patsubst %/,%,$(patsubst %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file))))))
LIB_PATH = -Lcfg
#|--------------------------------------------------------------------------------------|
#| Options for toolchain binaries |
#|--------------------------------------------------------------------------------------|
HEAP_SIZE = 0x0000
STACK_SIZE = 0x0400
STDFLAGS = -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-strict-aliasing
STDFLAGS += -fdata-sections -ffunction-sections -Wall -g3
OPTFLAGS = -Og
CFLAGS = $(STDFLAGS) $(OPTFLAGS)
CFLAGS += -DSTM32F405RG -DSTM32F4XX -DUSE_STDPERIPH_DRIVER -DHSE_VALUE=8000000
CFLAGS += -DARM_MATH_CM4 -D__FPU_USED
CFLAGS += -D__HEAP_SIZE=$(HEAP_SIZE) -D__STACK_SIZE=$(STACK_SIZE)
CFLAGS += $(INC_PATH)
AFLAGS = $(CFLAGS)
LFLAGS = $(STDFLAGS) $(OPTFLAGS)
LFLAGS += -Wl,--defsym=__HEAP_SIZE=$(HEAP_SIZE) -Wl,--defsym=__STACK_SIZE=$(STACK_SIZE)
LFLAGS += -Wl,-script="stm32f405rg_flash.ld" -Wl,-Map=$(BIN_PATH)/$(PROJ_NAME).map
LFLAGS += -specs=nano.specs -Wl,--gc-sections $(LIB_PATH)
OFLAGS = -O srec
ODFLAGS = -x
SZFLAGS = -B -d
RMFLAGS = -f
#|--------------------------------------------------------------------------------------|
#| Specify library files |
#|--------------------------------------------------------------------------------------|
LIBS =
#|--------------------------------------------------------------------------------------|
#| Define targets |
#|--------------------------------------------------------------------------------------|
AOBJS = $(patsubst %.S,%.o,$(PROJ_ASRCS))
COBJS = $(patsubst %.c,%.o,$(PROJ_CSRCS))
#|--------------------------------------------------------------------------------------|
#| Make ALL |
#|--------------------------------------------------------------------------------------|
.PHONY: all
all: $(BIN_PATH)/$(PROJ_NAME).srec
$(BIN_PATH)/$(PROJ_NAME).srec : $(BIN_PATH)/$(PROJ_NAME).elf
@$(OC) $< $(OFLAGS) $@
@$(OD) $(ODFLAGS) $< > $(BIN_PATH)/$(PROJ_NAME).map
@echo +++ Summary of memory consumption:
@$(SZ) $(SZFLAGS) $<
@echo +++ Build complete [$(notdir $@)]
$(BIN_PATH)/$(PROJ_NAME).elf : $(AOBJS) $(COBJS)
@echo +++ Linking [$(notdir $@)]
@$(LN) $(LFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)/%.o,$(^F)) $(LIBS)
#|--------------------------------------------------------------------------------------|
#| Compile and assemble |
#|--------------------------------------------------------------------------------------|
$(AOBJS): %.o: %.S $(PROJ_CHDRS)
@echo +++ Assembling [$(notdir $<)]
@$(AS) $(AFLAGS) -c $< -o $(OBJ_PATH)/$(@F)
$(COBJS): %.o: %.c $(PROJ_CHDRS)
@echo +++ Compiling [$(notdir $<)]
@$(CC) $(CFLAGS) -c $< -o $(OBJ_PATH)/$(@F)
#|--------------------------------------------------------------------------------------|
#| Make CLEAN |
#|--------------------------------------------------------------------------------------|
.PHONY: clean
clean:
@echo +++ Cleaning build environment
@$(RM) $(RMFLAGS) $(foreach file,$(AOBJS),$(OBJ_PATH)/$(file))
@$(RM) $(RMFLAGS) $(foreach file,$(COBJS),$(OBJ_PATH)/$(file))
@$(RM) $(RMFLAGS) $(patsubst %.o,%.lst,$(foreach file,$(COBJS),$(OBJ_PATH)/$(file)))
@$(RM) $(RMFLAGS) $(BIN_PATH)/$(PROJ_NAME).elf $(BIN_PATH)/$(PROJ_NAME).map
@$(RM) $(RMFLAGS) $(BIN_PATH)/$(PROJ_NAME).srec
@echo +++ Clean complete