Refs #311, #363. Reworked the GCC specific parts of the STM32F4 port and improved the makefiles of the Olimex STM32-E407 demo programs.

git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@332 5dc33758-31d5-4daf-9ae8-b24bf3d40d73
This commit is contained in:
Frank Voorburg 2017-08-15 16:12:26 +00:00
parent a671200261
commit 5a6eba22d1
32 changed files with 5643 additions and 5810 deletions

View File

@ -0,0 +1,181 @@
/* ---------------------------------------------------------------------------- */
/* Em::Blocks embedded development Support */
/* ---------------------------------------------------------------------------- */
/* Copyright (c) 2014, EmBlocks */
/* */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or without */
/* modification, are permitted provided that the following condition is met: */
/* */
/* - Redistributions of source code must retain the above copyright notice, */
/* this list of conditions and the disclaimer below. */
/* */
/* EmBlocks's name may not be used to endorse or promote products derived from */
/* this software without specific prior written permission. */
/* */
/* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY EBLOCKS "AS IS" AND ANY EXPRESS OR */
/* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */
/* DISCLAIMED. IN NO EVENT SHALL EMBLOCKS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
/* ---------------------------------------------------------------------------- */
/*------------------------------------------------------------------------------
* Linker script for running in internal FLASH on the STM32F407ZG
*----------------------------------------------------------------------------*/
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
SEARCH_DIR(.)
/* Memory Spaces Definitions */
MEMORY
{
ROM (rx) : ORIGIN = 0x08000000, LENGTH = 48K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 128K
CCRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K
}
/* Linker script to place sections and symbol values. Should be used together
* with other linker script that defines memory regions FLASH and RAM.
* It references following symbols, which must be defined in code:
* Reset_Handler : Entry of reset handler
*
* It defines following symbols, which code can use without definition:
* __exidx_start
* __exidx_end
* __etext
* __data_start__
* __preinit_array_start
* __preinit_array_end
* __init_array_start
* __init_array_end
* __fini_array_start
* __fini_array_end
* __data_end__
* __bss_start__
* __bss_end__
* __end__
* end
* __HeapLimit
* __StackLimit
* __StackTop
* __stack
*/
SECTIONS
{
.text :
{
KEEP(*(.isr_vector))
*(.text*)
KEEP(*(.init))
KEEP(*(.fini))
/* .ctors */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)
/* .dtors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)
*(.rodata*)
KEEP(*(.eh_frame*))
} > ROM
.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > ROM
__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > ROM
__exidx_end = .;
__etext = .;
.data : AT (__etext)
{
__data_start__ = .;
*(vtable)
*(.data*)
. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP(*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);
. = ALIGN(4);
/* init data */
PROVIDE_HIDDEN (__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);
. = ALIGN(4);
/* finit data */
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP(*(SORT(.fini_array.*)))
KEEP(*(.fini_array))
PROVIDE_HIDDEN (__fini_array_end = .);
. = ALIGN(4);
/* All data end */
__data_end__ = .;
} > RAM
.bss (NOLOAD):
{
__bss_start__ = .;
*(.bss*)
*(COMMON)
__bss_end__ = .;
} > RAM
.heap (NOLOAD):
{
__end__ = .;
end = __end__;
*(.heap*)
__HeapLimit = .;
} > RAM
/* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign
* values to stack symbols later */
.stack_dummy (NOLOAD):
{
*(.stack)
} > RAM
/* Set stack top to end of RAM, and stack limit move down by
* size of stack_dummy section */
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
}

View File

@ -1,2 +0,0 @@
@echo off
cs-make --directory=../ all

View File

@ -1,2 +0,0 @@
@echo off
cs-make --directory=../ clean

View File

@ -1,398 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<CodeLite_Project Name="DemoBoot" InternalType="">
<Plugins>
<Plugin Name="qmake">
<![CDATA[00010001N0005Debug000000000000]]>
</Plugin>
</Plugins>
<VirtualDirectory Name="Demo">
<VirtualDirectory Name="ARMCM4_STM32F4_Olimex_STM32E407_GCC">
<VirtualDirectory Name="Boot">
<VirtualDirectory Name="lib">
<VirtualDirectory Name="usbotgdriver">
<VirtualDirectory Name="inc">
<File Name="../lib/usbotgdriver/inc/usb_bsp.h"/>
<File Name="../lib/usbotgdriver/inc/usb_core.h"/>
<File Name="../lib/usbotgdriver/inc/usb_dcd.h"/>
<File Name="../lib/usbotgdriver/inc/usb_dcd_int.h"/>
<File Name="../lib/usbotgdriver/inc/usb_defines.h"/>
<File Name="../lib/usbotgdriver/inc/usb_regs.h"/>
</VirtualDirectory>
<VirtualDirectory Name="src">
<File Name="../lib/usbotgdriver/src/usb_core.c"/>
<File Name="../lib/usbotgdriver/src/usb_dcd.c"/>
<File Name="../lib/usbotgdriver/src/usb_dcd_int.c"/>
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="usbdevicelib">
<VirtualDirectory Name="Core">
<VirtualDirectory Name="inc">
<File Name="../lib/usbdevicelib/Core/inc/usbd_core.h"/>
<File Name="../lib/usbdevicelib/Core/inc/usbd_def.h"/>
<File Name="../lib/usbdevicelib/Core/inc/usbd_ioreq.h"/>
<File Name="../lib/usbdevicelib/Core/inc/usbd_req.h"/>
<File Name="../lib/usbdevicelib/Core/inc/usbd_usr.h"/>
</VirtualDirectory>
<VirtualDirectory Name="src">
<File Name="../lib/usbdevicelib/Core/src/usbd_core.c"/>
<File Name="../lib/usbdevicelib/Core/src/usbd_ioreq.c"/>
<File Name="../lib/usbdevicelib/Core/src/usbd_req.c"/>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="stdperiphlib">
<VirtualDirectory Name="STM32F4xx_StdPeriph_Driver">
<VirtualDirectory Name="inc">
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/misc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_adc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_can.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_crc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_cryp.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dac.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dbgmcu.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dcmi.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dma.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_exti.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_flash.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_fsmc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_gpio.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_hash.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_i2c.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_iwdg.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_pwr.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rcc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rng.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rtc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_sdio.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_spi.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_syscfg.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_tim.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_usart.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_wwdg.h"/>
</VirtualDirectory>
<VirtualDirectory Name="src">
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/misc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_adc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_can.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_crc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_aes.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_des.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_tdes.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dac.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dbgmcu.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dcmi.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dma.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_exti.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_flash.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_fsmc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash_md5.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash_sha1.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_i2c.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_iwdg.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_pwr.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rng.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rtc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_sdio.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_spi.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_syscfg.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_tim.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_usart.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_wwdg.c"/>
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="CMSIS">
<VirtualDirectory Name="Device">
<VirtualDirectory Name="ST">
<VirtualDirectory Name="STM32F4xx">
<VirtualDirectory Name="Include">
<File Name="../lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h"/>
<File Name="../lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h"/>
</VirtualDirectory>
<VirtualDirectory Name="Source">
<File Name="../lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Source/system_stm32f4xx.c"/>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="Include">
<File Name="../lib/stdperiphlib/CMSIS/Include/core_cm4.h"/>
<File Name="../lib/stdperiphlib/CMSIS/Include/core_cm4_simd.h"/>
<File Name="../lib/stdperiphlib/CMSIS/Include/core_cmFunc.h"/>
<File Name="../lib/stdperiphlib/CMSIS/Include/core_cmInstr.h"/>
</VirtualDirectory>
</VirtualDirectory>
<File Name="../lib/stdperiphlib/stm32f4xx_conf.h"/>
</VirtualDirectory>
<VirtualDirectory Name="ethernetlib">
<VirtualDirectory Name="inc">
<File Name="../lib/ethernetlib/inc/stm32_eth.h"/>
</VirtualDirectory>
<VirtualDirectory Name="src">
<File Name="../lib/ethernetlib/src/stm32_eth.c"/>
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="fatfs">
<File Name="../lib/fatfs/ffconf.h"/>
<File Name="../lib/fatfs/mmc.c"/>
</VirtualDirectory>
<VirtualDirectory Name="uip">
<File Name="../lib/uip/clock-arch.c"/>
<File Name="../lib/uip/clock-arch.h"/>
<File Name="../lib/uip/netdev.c"/>
<File Name="../lib/uip/netdev.h"/>
<File Name="../lib/uip/uip-conf.h"/>
</VirtualDirectory>
</VirtualDirectory>
<File Name="../blt_conf.h"/>
<File Name="../hooks.c"/>
<File Name="../main.c"/>
<File Name="../usbd_bulk.c"/>
<File Name="../usbd_bulk.h"/>
<File Name="../usbd_conf.h"/>
<File Name="../usbd_desc.c"/>
<File Name="../usbd_desc.h"/>
<File Name="../usbd_usr.c"/>
<File Name="../usb_bsp.c"/>
<File Name="../usb_conf.h"/>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
<Description/>
<Dependencies/>
<Settings Type="Dynamic Library">
<GlobalSettings>
<Compiler Options="" C_Options="">
<IncludePath Value="."/>
</Compiler>
<Linker Options="">
<LibraryPath Value="."/>
</Linker>
<ResourceCompiler Options=""/>
</GlobalSettings>
<Configuration Name="Debug" CompilerType="gnu gcc" DebuggerType="GNU gdb debugger" Type="Dynamic Library" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
<Compiler Options="-g" C_Options="-g" Required="yes" PreCompiledHeader="">
<IncludePath Value="."/>
</Compiler>
<Linker Options="" Required="yes"/>
<ResourceCompiler Options="" Required="no"/>
<General OutputFile="" IntermediateDirectory="../obj" Command="openbtl_olimex_lpc_l2294_20mhz.elf" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(WorkspacePath)/../bin" PauseExecWhenProcTerminates="yes"/>
<Environment EnvVarSetName="&lt;Use Defaults&gt;" DbgSetName="&lt;Use Defaults&gt;"/>
<Debugger IsRemote="yes" RemoteHostName="localhost" RemoteHostPort="3333" DebuggerPath="C:\Program Files (x86)\CodeSourcery\Sourcery G++ Lite\bin\arm-none-eabi-gdb.exe">
<PostConnectCommands/>
<StartupCommands>break main
continue
</StartupCommands>
</Debugger>
<PreBuild/>
<PostBuild/>
<CustomBuild Enabled="yes">
<RebuildCommand/>
<CleanCommand>make clean</CleanCommand>
<BuildCommand>make</BuildCommand>
<PreprocessFileCommand/>
<SingleFileCommand/>
<MakefileGenerationCommand/>
<ThirdPartyToolName>None</ThirdPartyToolName>
<WorkingDirectory>$(WorkspacePath)/..</WorkingDirectory>
</CustomBuild>
<AdditionalRules>
<CustomPostBuild/>
<CustomPreBuild/>
</AdditionalRules>
</Configuration>
<Configuration Name="Release" CompilerType="gnu gcc" DebuggerType="GNU gdb debugger" Type="Dynamic Library" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
<Compiler Options="" C_Options="" Required="yes" PreCompiledHeader="">
<IncludePath Value="."/>
</Compiler>
<Linker Options="-O2" Required="yes"/>
<ResourceCompiler Options="" Required="no"/>
<General OutputFile="" IntermediateDirectory="./Release" Command="" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(IntermediateDirectory)" PauseExecWhenProcTerminates="yes"/>
<Environment EnvVarSetName="&lt;Use Defaults&gt;" DbgSetName="&lt;Use Defaults&gt;"/>
<Debugger IsRemote="no" RemoteHostName="" RemoteHostPort="" DebuggerPath="">
<PostConnectCommands/>
<StartupCommands/>
</Debugger>
<PreBuild/>
<PostBuild/>
<CustomBuild Enabled="yes">
<RebuildCommand/>
<CleanCommand>make clean</CleanCommand>
<BuildCommand>make</BuildCommand>
<PreprocessFileCommand/>
<SingleFileCommand/>
<MakefileGenerationCommand/>
<ThirdPartyToolName>None</ThirdPartyToolName>
<WorkingDirectory>$(WorkspacePath)</WorkingDirectory>
</CustomBuild>
<AdditionalRules>
<CustomPostBuild/>
<CustomPreBuild/>
</AdditionalRules>
</Configuration>
</Settings>
<VirtualDirectory Name="Source">
<VirtualDirectory Name="third_party">
<VirtualDirectory Name="uip">
<VirtualDirectory Name="apps">
<VirtualDirectory Name="dhcpc">
<File Name="../../../../Source/third_party/uip/apps/dhcpc/dhcpc.c"/>
<File Name="../../../../Source/third_party/uip/apps/dhcpc/dhcpc.h"/>
</VirtualDirectory>
<VirtualDirectory Name="hello-world">
<File Name="../../../../Source/third_party/uip/apps/hello-world/hello-world.c"/>
<File Name="../../../../Source/third_party/uip/apps/hello-world/hello-world.h"/>
</VirtualDirectory>
<VirtualDirectory Name="httpd">
<File Name="../../../../Source/third_party/uip/apps/httpd/httpd.c"/>
<File Name="../../../../Source/third_party/uip/apps/httpd/httpd.h"/>
</VirtualDirectory>
<VirtualDirectory Name="resolv">
<File Name="../../../../Source/third_party/uip/apps/resolv/resolv.c"/>
<File Name="../../../../Source/third_party/uip/apps/resolv/resolv.h"/>
</VirtualDirectory>
<VirtualDirectory Name="smtp">
<File Name="../../../../Source/third_party/uip/apps/smtp/smtp-strings.c"/>
<File Name="../../../../Source/third_party/uip/apps/smtp/smtp-strings.h"/>
<File Name="../../../../Source/third_party/uip/apps/smtp/smtp.c"/>
<File Name="../../../../Source/third_party/uip/apps/smtp/smtp.h"/>
</VirtualDirectory>
<VirtualDirectory Name="telnetd">
<File Name="../../../../Source/third_party/uip/apps/telnetd/shell.c"/>
<File Name="../../../../Source/third_party/uip/apps/telnetd/shell.h"/>
<File Name="../../../../Source/third_party/uip/apps/telnetd/telnetd.c"/>
<File Name="../../../../Source/third_party/uip/apps/telnetd/telnetd.h"/>
</VirtualDirectory>
<VirtualDirectory Name="webclient">
<File Name="../../../../Source/third_party/uip/apps/webclient/webclient-strings.c"/>
<File Name="../../../../Source/third_party/uip/apps/webclient/webclient-strings.h"/>
<File Name="../../../../Source/third_party/uip/apps/webclient/webclient.c"/>
<File Name="../../../../Source/third_party/uip/apps/webclient/webclient.h"/>
</VirtualDirectory>
<VirtualDirectory Name="webserver">
<File Name="../../../../Source/third_party/uip/apps/webserver/http-strings.c"/>
<File Name="../../../../Source/third_party/uip/apps/webserver/http-strings.h"/>
<File Name="../../../../Source/third_party/uip/apps/webserver/httpd-cgi.c"/>
<File Name="../../../../Source/third_party/uip/apps/webserver/httpd-cgi.h"/>
<File Name="../../../../Source/third_party/uip/apps/webserver/httpd-fs.c"/>
<File Name="../../../../Source/third_party/uip/apps/webserver/httpd-fs.h"/>
<File Name="../../../../Source/third_party/uip/apps/webserver/httpd-fsdata.c"/>
<File Name="../../../../Source/third_party/uip/apps/webserver/httpd-fsdata.h"/>
<File Name="../../../../Source/third_party/uip/apps/webserver/httpd.c"/>
<File Name="../../../../Source/third_party/uip/apps/webserver/httpd.h"/>
<File Name="../../../../Source/third_party/uip/apps/webserver/webserver.h"/>
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="doc">
<File Name="../../../../Source/third_party/uip/doc/example-mainloop-with-arp.c"/>
<File Name="../../../../Source/third_party/uip/doc/example-mainloop-without-arp.c"/>
<File Name="../../../../Source/third_party/uip/doc/uip-code-style.c"/>
</VirtualDirectory>
<VirtualDirectory Name="lib">
<File Name="../../../../Source/third_party/uip/lib/memb.c"/>
<File Name="../../../../Source/third_party/uip/lib/memb.h"/>
</VirtualDirectory>
<VirtualDirectory Name="uip">
<File Name="../../../../Source/third_party/uip/uip/clock.h"/>
<File Name="../../../../Source/third_party/uip/uip/lc-addrlabels.h"/>
<File Name="../../../../Source/third_party/uip/uip/lc-switch.h"/>
<File Name="../../../../Source/third_party/uip/uip/lc.h"/>
<File Name="../../../../Source/third_party/uip/uip/psock.c"/>
<File Name="../../../../Source/third_party/uip/uip/psock.h"/>
<File Name="../../../../Source/third_party/uip/uip/pt.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip-fw.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip-fw.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip-neighbor.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip-neighbor.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip-split.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip-split.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip.h"/>
<File Name="../../../../Source/third_party/uip/uip/uiplib.c"/>
<File Name="../../../../Source/third_party/uip/uip/uiplib.h"/>
<File Name="../../../../Source/third_party/uip/uip/uipopt.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip_arch.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip_arp.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip_arp.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip_timer.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip_timer.h"/>
</VirtualDirectory>
<VirtualDirectory Name="unix">
<File Name="../../../../Source/third_party/uip/unix/clock-arch.c"/>
<File Name="../../../../Source/third_party/uip/unix/clock-arch.h"/>
<File Name="../../../../Source/third_party/uip/unix/main.c"/>
<File Name="../../../../Source/third_party/uip/unix/tapdev.c"/>
<File Name="../../../../Source/third_party/uip/unix/tapdev.h"/>
<File Name="../../../../Source/third_party/uip/unix/uip-conf.h"/>
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="fatfs">
<VirtualDirectory Name="src">
<VirtualDirectory Name="option">
<File Name="../../../../Source/third_party/fatfs/src/option/cc932.c"/>
<File Name="../../../../Source/third_party/fatfs/src/option/cc936.c"/>
<File Name="../../../../Source/third_party/fatfs/src/option/cc949.c"/>
<File Name="../../../../Source/third_party/fatfs/src/option/cc950.c"/>
<File Name="../../../../Source/third_party/fatfs/src/option/ccsbcs.c"/>
<File Name="../../../../Source/third_party/fatfs/src/option/syscall.c"/>
<File Name="../../../../Source/third_party/fatfs/src/option/unicode.c"/>
</VirtualDirectory>
<File Name="../../../../Source/third_party/fatfs/src/diskio.h"/>
<File Name="../../../../Source/third_party/fatfs/src/ff.c"/>
<File Name="../../../../Source/third_party/fatfs/src/ff.h"/>
<File Name="../../../../Source/third_party/fatfs/src/integer.h"/>
</VirtualDirectory>
<VirtualDirectory Name="doc">
<VirtualDirectory Name="img">
<File Name="../../../../Source/third_party/fatfs/doc/img/app1.c"/>
<File Name="../../../../Source/third_party/fatfs/doc/img/app2.c"/>
<File Name="../../../../Source/third_party/fatfs/doc/img/app3.c"/>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
<File Name="../../../../Source/assert.c"/>
<File Name="../../../../Source/assert.h"/>
<File Name="../../../../Source/backdoor.c"/>
<File Name="../../../../Source/backdoor.h"/>
<File Name="../../../../Source/boot.c"/>
<File Name="../../../../Source/boot.h"/>
<File Name="../../../../Source/can.h"/>
<File Name="../../../../Source/com.c"/>
<File Name="../../../../Source/com.h"/>
<File Name="../../../../Source/cop.c"/>
<File Name="../../../../Source/cop.h"/>
<File Name="../../../../Source/cpu.h"/>
<File Name="../../../../Source/file.c"/>
<File Name="../../../../Source/file.h"/>
<File Name="../../../../Source/net.c"/>
<File Name="../../../../Source/net.h"/>
<File Name="../../../../Source/nvm.h"/>
<File Name="../../../../Source/plausibility.h"/>
<File Name="../../../../Source/timer.h"/>
<File Name="../../../../Source/uart.h"/>
<File Name="../../../../Source/usb.h"/>
<File Name="../../../../Source/xcp.c"/>
<File Name="../../../../Source/xcp.h"/>
<VirtualDirectory Name="ARMCM4_STM32F4">
<VirtualDirectory Name="GCC">
<File Name="../../../../Source/ARMCM4_STM32F4/GCC/cpu_comp.c"/>
<File Name="../../../../Source/ARMCM4_STM32F4/GCC/cstart.c"/>
<File Name="../../../../Source/ARMCM4_STM32F4/GCC/memory.x"/>
<File Name="../../../../Source/ARMCM4_STM32F4/GCC/vectors.c"/>
</VirtualDirectory>
<File Name="../../../../Source/ARMCM4_STM32F4/can.c"/>
<File Name="../../../../Source/ARMCM4_STM32F4/cpu.c"/>
<File Name="../../../../Source/ARMCM4_STM32F4/flash.c"/>
<File Name="../../../../Source/ARMCM4_STM32F4/flash.h"/>
<File Name="../../../../Source/ARMCM4_STM32F4/nvm.c"/>
<File Name="../../../../Source/ARMCM4_STM32F4/timer.c"/>
<File Name="../../../../Source/ARMCM4_STM32F4/types.h"/>
<File Name="../../../../Source/ARMCM4_STM32F4/uart.c"/>
<File Name="../../../../Source/ARMCM4_STM32F4/usb.c"/>
</VirtualDirectory>
</VirtualDirectory>
</CodeLite_Project>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<CodeLite_Workspace Name="DemoBoot" Database="./DemoBoot.tags">
<Project Name="DemoBoot" Path="DemoBoot.project" Active="Yes"/>
<BuildMatrix>
<WorkspaceConfiguration Name="Debug" Selected="yes">
<Project Name="DemoBoot" ConfigName="Debug"/>
</WorkspaceConfiguration>
<WorkspaceConfiguration Name="Release" Selected="yes">
<Project Name="DemoBoot" ConfigName="Release"/>
</WorkspaceConfiguration>
</BuildMatrix>
</CodeLite_Workspace>

View File

@ -1,4 +0,0 @@
Integrated Development Environment
----------------------------------
Codelite was used as the editor during the development of this software program. This directory contains the Codelite
workspace and project files. Codelite is a cross platform open source C/C++ IDE, available at http://www.codelite.org/.

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

@ -1,11 +1,11 @@
#****************************************************************************************
#| Description: Makefile for STM32 using CodeSourcery GNU GCC compiler toolset
#| Description: Makefile for GNU ARM Embedded toolchain.
#| File Name: makefile
#|
#|---------------------------------------------------------------------------------------
#| C O P Y R I G H T
#|---------------------------------------------------------------------------------------
#| Copyright (c) 2013 by Feaser http://www.feaser.com All rights reserved
#| Copyright (c) 2017 by Feaser http://www.feaser.com All rights reserved
#|
#|---------------------------------------------------------------------------------------
#| L I C E N S E
@ -25,243 +25,136 @@
#****************************************************************************************
SHELL = sh
#|---------------------------------------------------------------------------------------|
#| Configure project name |
#|---------------------------------------------------------------------------------------|
#|--------------------------------------------------------------------------------------|
#| Configure project name |
#|--------------------------------------------------------------------------------------|
PROJ_NAME=openblt_olimex_stm32e407
#|---------------------------------------------------------------------------------------|
#| Speficy project source files |
#|---------------------------------------------------------------------------------------|
PROJ_FILES= \
blt_conf.h \
hooks.c \
main.c \
usbd_bulk.c \
usbd_bulk.h \
usbd_conf.h \
usbd_desc.c \
usbd_desc.h \
usbd_usr.c \
usb_bsp.c \
usb_conf.h \
./lib/usbdevicelib/Core/inc/usbd_core.h \
./lib/usbdevicelib/Core/inc/usbd_def.h \
./lib/usbdevicelib/Core/inc/usbd_ioreq.h \
./lib/usbdevicelib/Core/inc/usbd_req.h \
./lib/usbdevicelib/Core/inc/usbd_usr.h \
./lib/usbdevicelib/Core/src/usbd_core.c \
./lib/usbdevicelib/Core/src/usbd_ioreq.c \
./lib/usbdevicelib/Core/src/usbd_req.c \
./lib/usbotgdriver/inc/usb_bsp.h \
./lib/usbotgdriver/inc/usb_core.h \
./lib/usbotgdriver/inc/usb_dcd.h \
./lib/usbotgdriver/inc/usb_dcd_int.h \
./lib/usbotgdriver/inc/usb_defines.h \
./lib/usbotgdriver/inc/usb_regs.h \
./lib/usbotgdriver/src/usb_core.c \
./lib/usbotgdriver/src/usb_dcd.c \
./lib/usbotgdriver/src/usb_dcd_int.c \
./lib/fatfs/ffconf.h \
./lib/fatfs/mmc.c \
./lib/ethernetlib/inc/stm32_eth.h \
./lib/ethernetlib/src/stm32_eth.c \
./lib/uip/clock-arch.c \
./lib/uip/clock-arch.h \
./lib/uip/netdev.c \
./lib/uip/netdev.h \
./lib/uip/uip-conf.h \
./lib/stdperiphlib/stm32f4xx_conf.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/misc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_adc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_can.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_crc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_cryp.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dac.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dbgmcu.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dcmi.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dma.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_exti.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_flash.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_fsmc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_gpio.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_hash.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_i2c.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_iwdg.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_pwr.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rcc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rng.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rtc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_sdio.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_spi.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_syscfg.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_tim.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_usart.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_wwdg.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/misc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_adc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_can.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_crc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_aes.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_des.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_tdes.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dac.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dbgmcu.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dcmi.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dma.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_exti.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_flash.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_fsmc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash_md5.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash_sha1.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_i2c.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_iwdg.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_pwr.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rng.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rtc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_sdio.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_spi.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_syscfg.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_tim.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_usart.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_wwdg.c \
./lib/stdperiphlib/CMSIS/Include/core_cm4.h \
./lib/stdperiphlib/CMSIS/Include/core_cm4_simd.h \
./lib/stdperiphlib/CMSIS/Include/core_cmFunc.h \
./lib/stdperiphlib/CMSIS/Include/core_cmInstr.h \
./lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Source/system_stm32f4xx.c \
./lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h \
./lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.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/third_party/uip/uip/clock.h \
../../../Source/third_party/uip/uip/lc-addrlabels.h \
../../../Source/third_party/uip/uip/lc-switch.h \
../../../Source/third_party/uip/uip/lc.h \
../../../Source/third_party/uip/uip/pt.h \
../../../Source/third_party/uip/uip/uip-fw.h \
../../../Source/third_party/uip/uip/uip-neighbor.h \
../../../Source/third_party/uip/uip/uip-split.h \
../../../Source/third_party/uip/uip/uip.c \
../../../Source/third_party/uip/uip/uip.h \
../../../Source/third_party/uip/uip/uip_arch.h \
../../../Source/third_party/uip/uip/uip_arp.c \
../../../Source/third_party/uip/uip/uip_arp.h \
../../../Source/third_party/uip/uip/uip_timer.c \
../../../Source/third_party/uip/uip/uip_timer.h \
../../../Source/third_party/uip/uip/uiplib.c \
../../../Source/third_party/uip/uip/uiplib.h \
../../../Source/third_party/uip/uip/uipopt.h \
../../../Source/boot.c \
../../../Source/boot.h \
../../../Source/com.c \
../../../Source/com.h \
../../../Source/net.c \
../../../Source/net.h \
../../../Source/xcp.c \
../../../Source/xcp.h \
../../../Source/backdoor.c \
../../../Source/backdoor.h \
../../../Source/cop.c \
../../../Source/cop.h \
../../../Source/file.c \
../../../Source/file.h \
../../../Source/assert.c \
../../../Source/assert.h \
../../../Source/can.h \
../../../Source/cpu.h \
../../../Source/uart.h \
../../../Source/usb.h \
../../../Source/nvm.h \
../../../Source/timer.h \
../../../Source/plausibility.h \
../../../Source/ARMCM4_STM32F4/types.h \
../../../Source/ARMCM4_STM32F4/can.c \
../../../Source/ARMCM4_STM32F4/cpu.c \
../../../Source/ARMCM4_STM32F4/flash.c \
../../../Source/ARMCM4_STM32F4/flash.h \
../../../Source/ARMCM4_STM32F4/uart.c \
../../../Source/ARMCM4_STM32F4/usb.c \
../../../Source/ARMCM4_STM32F4/nvm.c \
../../../Source/ARMCM4_STM32F4/timer.c \
../../../Source/ARMCM4_STM32F4/GCC/vectors.c \
../../../Source/ARMCM4_STM32F4/GCC/cpu_comp.c \
../../../Source/ARMCM4_STM32F4/GCC/cstart.c
#|--------------------------------------------------------------------------------------|
#| Configure tool path |
#|--------------------------------------------------------------------------------------|
TOOL_PATH=/opt/gcc-arm-none-eabi-5_4-2016q3/bin/
#|---------------------------------------------------------------------------------------|
#| Compiler binaries |
#|---------------------------------------------------------------------------------------|
CC = arm-none-eabi-gcc
LN = arm-none-eabi-gcc
OC = arm-none-eabi-objcopy
OD = arm-none-eabi-objdump
AS = arm-none-eabi-as
SZ = arm-none-eabi-size
#|--------------------------------------------------------------------------------------|
#| 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
# Collect UIP third party library files
PROJ_FILES += ../../../Source/third_party/uip/uip/clock.h
PROJ_FILES += ../../../Source/third_party/uip/uip/lc-addrlabels.h
PROJ_FILES += ../../../Source/third_party/uip/uip/lc-switch.h
PROJ_FILES += ../../../Source/third_party/uip/uip/lc.h
PROJ_FILES += ../../../Source/third_party/uip/uip/pt.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip-fw.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip-neighbor.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip-split.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip.c
PROJ_FILES += ../../../Source/third_party/uip/uip/uip.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip_arch.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip_arp.c
PROJ_FILES += ../../../Source/third_party/uip/uip/uip_arp.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip_timer.c
PROJ_FILES += ../../../Source/third_party/uip/uip/uip_timer.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uiplib.c
PROJ_FILES += ../../../Source/third_party/uip/uip/uiplib.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uipopt.h
#|---------------------------------------------------------------------------------------|
#| Extract file names |
#|---------------------------------------------------------------------------------------|
PROJ_ASRCS = $(filter %.s,$(foreach file,$(PROJ_FILES),$(notdir $(file))))
#|--------------------------------------------------------------------------------------|
#| 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))))
PROJ_CCMPL = $(patsubst %.c,%.cpl,$(PROJ_CSRCS))
PROJ_ACMPL = $(patsubst %.s,%.cpl,$(PROJ_ASRCS))
#|---------------------------------------------------------------------------------------|
#| Set important path variables |
#|---------------------------------------------------------------------------------------|
#|--------------------------------------------------------------------------------------|
#| 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 %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file)))))
INC_PATH += -I.
LIB_PATH = -L../../../Source/ARMCM4_STM32F4/GCC/
INC_PATH = $(patsubst %/,%,$(patsubst %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file))))))
LIB_PATH = -Lcfg
#|---------------------------------------------------------------------------------------|
#| Options for compiler binaries |
#|---------------------------------------------------------------------------------------|
CFLAGS = -g -mthumb -mcpu=cortex-m4 -O1 -T memory.x
CFLAGS += -D PACK_STRUCT_END=__attribute\(\(packed\)\) -Wno-main
CFLAGS += -D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\)
CFLAGS += -ffunction-sections -fdata-sections $(INC_PATH) -D STM32F4XX -D GCC_ARMCM3
CFLAGS += -D USE_STDPERIPH_DRIVER -D HSE_VALUE=12000000 -D USE_USB_OTG_FS
CFLAGS += -Wa,-adhlns="$(OBJ_PATH)/$(subst .o,.lst,$@)" -Wno-attributes
LFLAGS = -nostartfiles -Xlinker -M -Xlinker -Map=$(BIN_PATH)/$(PROJ_NAME).map
LFLAGS += $(LIB_PATH) -Xlinker --gc-sections
OFLAGS = -O srec
ODFLAGS = -x
SZFLAGS = -B -d
#|--------------------------------------------------------------------------------------|
#| 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 -Wno-maybe-uninitialized -Wno-main
OPTFLAGS = -Og
CFLAGS = $(STDFLAGS) $(OPTFLAGS)
CFLAGS += -DSTM32F407ZG -DSTM32F4XX -DUSE_STDPERIPH_DRIVER -DHSE_VALUE=12000000
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="stm32f407zg_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 |
#|---------------------------------------------------------------------------------------|
#|--------------------------------------------------------------------------------------|
#| Specify library files |
#|--------------------------------------------------------------------------------------|
LIBS =
#|---------------------------------------------------------------------------------------|
#| Define targets |
#|---------------------------------------------------------------------------------------|
AOBJS = $(patsubst %.s,%.o,$(PROJ_ASRCS))
#|--------------------------------------------------------------------------------------|
#| Define targets |
#|--------------------------------------------------------------------------------------|
AOBJS = $(patsubst %.S,%.o,$(PROJ_ASRCS))
COBJS = $(patsubst %.c,%.o,$(PROJ_CSRCS))
#|---------------------------------------------------------------------------------------|
#| Make ALL |
#|---------------------------------------------------------------------------------------|
all : $(BIN_PATH)/$(PROJ_NAME).srec
#|--------------------------------------------------------------------------------------|
#| Make ALL |
#|--------------------------------------------------------------------------------------|
.PHONY: all
all: $(BIN_PATH)/$(PROJ_NAME).srec
$(BIN_PATH)/$(PROJ_NAME).srec : $(BIN_PATH)/$(PROJ_NAME).elf
@ -273,31 +166,32 @@ $(BIN_PATH)/$(PROJ_NAME).srec : $(BIN_PATH)/$(PROJ_NAME).elf
$(BIN_PATH)/$(PROJ_NAME).elf : $(AOBJS) $(COBJS)
@echo +++ Linking [$(notdir $@)]
@$(LN) $(CFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)/%.o,$(^F)) $(LIBS) $(LFLAGS)
@$(LN) $(LFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)/%.o,$(^F)) $(LIBS)
#|---------------------------------------------------------------------------------------|
#| Compile and assemble |
#|---------------------------------------------------------------------------------------|
$(AOBJS): %.o: %.s $(PROJ_CHDRS)
#|--------------------------------------------------------------------------------------|
#| Compile and assemble |
#|--------------------------------------------------------------------------------------|
$(AOBJS): %.o: %.S $(PROJ_CHDRS)
@echo +++ Assembling [$(notdir $<)]
@$(AS) $(AFLAGS) $< -o $(OBJ_PATH)/$(@F)
@$(AS) $(AFLAGS) -c $< -o $(OBJ_PATH)/$(@F)
$(COBJS): %.o: %.c $(PROJ_CHDRS)
@echo +++ Compiling [$(notdir $<)]
@$(CC) $(CFLAGS) -c $< -o $(OBJ_PATH)/$(@F)
#|---------------------------------------------------------------------------------------|
#| Make CLEAN |
#|---------------------------------------------------------------------------------------|
clean :
#|--------------------------------------------------------------------------------------|
#| Make CLEAN |
#|--------------------------------------------------------------------------------------|
.PHONY: clean
clean:
@echo +++ Cleaning build environment
@cs-rm -f $(foreach file,$(AOBJS),$(OBJ_PATH)/$(file))
@cs-rm -f $(foreach file,$(COBJS),$(OBJ_PATH)/$(file))
@cs-rm -f $(patsubst %.o,%.lst,$(foreach file,$(COBJS),$(OBJ_PATH)/$(file)))
@cs-rm -f $(BIN_PATH)/$(PROJ_NAME).elf $(BIN_PATH)/$(PROJ_NAME).map
@cs-rm -f $(BIN_PATH)/$(PROJ_NAME).srec
@$(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

@ -0,0 +1,363 @@
/* File: startup_ARMCM4.S
* Purpose: startup file for Cortex-M4 devices. Should use with
* GCC for ARM Embedded Processors
* Version: V1.3
* Date: 08 Feb 2012
*
* Copyright (c) 2012, ARM Limited
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the ARM Limited nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL ARM LIMITED BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
.syntax unified
.arch armv7-m
.section .stack
.align 3
#ifdef __STACK_SIZE
.equ Stack_Size, __STACK_SIZE
#else
.equ Stack_Size, 0x400
#endif
.globl __StackTop
.globl __StackLimit
__StackLimit:
.space Stack_Size
.size __StackLimit, . - __StackLimit
__StackTop:
.size __StackTop, . - __StackTop
.section .heap
.align 3
#ifdef __HEAP_SIZE
.equ Heap_Size, __HEAP_SIZE
#else
.equ Heap_Size, 0xC00
#endif
.globl __HeapBase
.globl __HeapLimit
__HeapBase:
.if Heap_Size
.space Heap_Size
.endif
.size __HeapBase, . - __HeapBase
__HeapLimit:
.size __HeapLimit, . - __HeapLimit
.section .isr_vector
.align 2
.globl __isr_vector
__isr_vector:
.long __StackTop /* Top of Stack */
.long Reset_Handler /* Reset Handler */
.long NMI_Handler /* NMI Handler */
.long HardFault_Handler /* Hard Fault Handler */
.long MemManage_Handler /* MPU Fault Handler */
.long BusFault_Handler /* Bus Fault Handler */
.long UsageFault_Handler /* Usage Fault Handler */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long SVC_Handler /* SVCall Handler */
.long DebugMon_Handler /* Debug Monitor Handler */
.long 0 /* Reserved */
.long PendSV_Handler /* PendSV Handler */
.long SysTick_Handler /* SysTick Handler */
// External Interrupts
.long WWDG_IRQHandler // Window WatchDog
.long PVD_IRQHandler // PVD through EXTI Line detection
.long TAMP_STAMP_IRQHandler // Tamper and TimeStamps through the EXTI line
.long RTC_WKUP_IRQHandler // RTC Wakeup through the EXTI line
.long FLASH_IRQHandler // FLASH
.long RCC_IRQHandler // RCC
.long EXTI0_IRQHandler // EXTI Line0
.long EXTI1_IRQHandler // EXTI Line1
.long EXTI2_IRQHandler // EXTI Line2
.long EXTI3_IRQHandler // EXTI Line3
.long EXTI4_IRQHandler // EXTI Line4
.long DMA1_Stream0_IRQHandler // DMA1 Stream 0
.long DMA1_Stream1_IRQHandler // DMA1 Stream 1
.long DMA1_Stream2_IRQHandler // DMA1 Stream 2
.long DMA1_Stream3_IRQHandler // DMA1 Stream 3
.long DMA1_Stream4_IRQHandler // DMA1 Stream 4
.long DMA1_Stream5_IRQHandler // DMA1 Stream 5
.long DMA1_Stream6_IRQHandler // DMA1 Stream 6
.long ADC_IRQHandler // ADC1, ADC2 and ADC3s
.long CAN1_TX_IRQHandler // CAN1 TX
.long CAN1_RX0_IRQHandler // CAN1 RX0
.long CAN1_RX1_IRQHandler // CAN1 RX1
.long CAN1_SCE_IRQHandler // CAN1 SCE
.long EXTI9_5_IRQHandler // External Line[9:5]s
.long TIM1_BRK_TIM9_IRQHandler // TIM1 Break and TIM9
.long TIM1_UP_TIM10_IRQHandler // TIM1 Update and TIM10
.long TIM1_TRG_COM_TIM11_IRQHandler // TIM1 Trigger and Commutation and TIM11
.long TIM1_CC_IRQHandler // TIM1 Capture Compare
.long TIM2_IRQHandler // TIM2
.long TIM3_IRQHandler // TIM3
.long TIM4_IRQHandler // TIM4
.long I2C1_EV_IRQHandler // I2C1 Event
.long I2C1_ER_IRQHandler // I2C1 Error
.long I2C2_EV_IRQHandler // I2C2 Event
.long I2C2_ER_IRQHandler // I2C2 Error
.long SPI1_IRQHandler // SPI1
.long SPI2_IRQHandler // SPI2
.long USART1_IRQHandler // USART1
.long USART2_IRQHandler // USART2
.long USART3_IRQHandler // USART3
.long EXTI15_10_IRQHandler // External Line[15:10]s
.long RTC_Alarm_IRQHandler // RTC Alarm (A and B) through EXTI Line
.long OTG_FS_WKUP_IRQHandler // USB OTG FS Wakeup through EXTI line
.long TIM8_BRK_TIM12_IRQHandler // TIM8 Break and TIM12
.long TIM8_UP_TIM13_IRQHandler // TIM8 Update and TIM13
.long TIM8_TRG_COM_TIM14_IRQHandler // TIM8 Trigger and Commutation and TIM14
.long TIM8_CC_IRQHandler // TIM8 Capture Compare
.long DMA1_Stream7_IRQHandler // DMA1 Stream7
.long FSMC_IRQHandler // FSMC
.long SDIO_IRQHandler // SDIO
.long TIM5_IRQHandler // TIM5
.long SPI3_IRQHandler // SPI3
.long UART4_IRQHandler // UART4
.long UART5_IRQHandler // UART5
.long TIM6_DAC_IRQHandler // TIM6 and DAC1&2 underrun errors
.long TIM7_IRQHandler // TIM7
.long DMA2_Stream0_IRQHandler // DMA2 Stream 0
.long DMA2_Stream1_IRQHandler // DMA2 Stream 1
.long DMA2_Stream2_IRQHandler // DMA2 Stream 2
.long DMA2_Stream3_IRQHandler // DMA2 Stream 3
.long DMA2_Stream4_IRQHandler // DMA2 Stream 4
.long ETH_IRQHandler // Ethernet
.long ETH_WKUP_IRQHandler // Ethernet Wakeup through EXTI line
.long CAN2_TX_IRQHandler // CAN2 TX
.long CAN2_RX0_IRQHandler // CAN2 RX0
.long CAN2_RX1_IRQHandler // CAN2 RX1
.long CAN2_SCE_IRQHandler // CAN2 SCE
.long OTG_FS_IRQHandler // USB OTG FS
.long DMA2_Stream5_IRQHandler // DMA2 Stream 5
.long DMA2_Stream6_IRQHandler // DMA2 Stream 6
.long DMA2_Stream7_IRQHandler // DMA2 Stream 7
.long USART6_IRQHandler // USART6
.long I2C3_EV_IRQHandler // I2C3 event
.long I2C3_ER_IRQHandler // I2C3 error
.long OTG_HS_EP1_OUT_IRQHandler // USB OTG HS End Point 1 Out
.long OTG_HS_EP1_IN_IRQHandler // USB OTG HS End Point 1 In
.long OTG_HS_WKUP_IRQHandler // USB OTG HS Wakeup through EXTI
.long OTG_HS_IRQHandler // USB OTG HS
.long DCMI_IRQHandler // DCMI
.long CRYP_IRQHandler // CRYP crypto
.long HASH_RNG_IRQHandler // Hash and Rng
.long FPU_IRQHandler // FPU
.size __isr_vector, . - __isr_vector
.text
.thumb
.thumb_func
.align 2
.globl Reset_Handler
.type Reset_Handler, %function
Reset_Handler:
/* Initialize the stackpointer. this is done automatically after a reset event.
* the bootloader performs a software reset by calling this reset handler, in
* which case the stackpointer is not yet initialized. */
ldr r1, =__StackTop
mov sp, r1
/* Loop to copy data from read only memory to RAM. The ranges
* of copy from/to are specified by following symbols evaluated in
* linker script.
* __etext: End of code section, i.e., begin of data sections to copy from.
* __data_start__/__data_end__: RAM address range that data should be
* copied to. Both must be aligned to 4 bytes boundary. */
ldr r1, =__etext
ldr r2, =__data_start__
ldr r3, =__data_end__
#if 1
/* Here are two copies of loop implemenations. First one favors code size
* and the second one favors performance. Default uses the first one.
* Change to "#if 0" to use the second one */
.flash_to_ram_loop:
cmp r2, r3
ittt lt
ldrlt r0, [r1], #4
strlt r0, [r2], #4
blt .flash_to_ram_loop
#else
subs r3, r2
ble .flash_to_ram_loop_end
.flash_to_ram_loop:
subs r3, #4
ldr r0, [r1, r3]
str r0, [r2, r3]
bgt .flash_to_ram_loop
.flash_to_ram_loop_end:
#endif
#ifndef __NO_SYSTEM_INIT
ldr r0, =SystemInit
blx r0
#endif
ldr r0, =_start
bx r0
.pool
.size Reset_Handler, . - Reset_Handler
/* Our weak _start alternative if we don't use the library _start
* The zero init section must be cleared, otherwise the librtary is
* doing that */
.align 1
.thumb_func
.weak _start
.type _start, %function
_start:
/* Zero fill the bss segment. */
ldr r1, = __bss_start__
ldr r2, = __bss_end__
movs r3, #0
b .fill_zero_bss
.loop_zero_bss:
str r3, [r1], #4
.fill_zero_bss:
cmp r1, r2
bcc .loop_zero_bss
/* Jump to our main */
bl main
b .
.size _start, . - _start
/* Macro to define default handlers. Default handler
* will be weak symbol and just dead loops. They can be
* overwritten by other handlers */
.macro def_irq_handler handler_name
.align 1
.thumb_func
.weak \handler_name
.type \handler_name, %function
\handler_name :
b .
.size \handler_name, . - \handler_name
.endm
def_irq_handler NMI_Handler
def_irq_handler HardFault_Handler
def_irq_handler MemManage_Handler
def_irq_handler BusFault_Handler
def_irq_handler UsageFault_Handler
def_irq_handler SVC_Handler
def_irq_handler DebugMon_Handler
def_irq_handler PendSV_Handler
def_irq_handler SysTick_Handler
def_irq_handler Default_Handler
// External Interrupts
def_irq_handler WWDG_IRQHandler // Window WatchDog
def_irq_handler PVD_IRQHandler // PVD through EXTI Line detection
def_irq_handler TAMP_STAMP_IRQHandler // Tamper and TimeStamps through the EXTI line
def_irq_handler RTC_WKUP_IRQHandler // RTC Wakeup through the EXTI line
def_irq_handler FLASH_IRQHandler // FLASH
def_irq_handler RCC_IRQHandler // RCC
def_irq_handler EXTI0_IRQHandler // EXTI Line0
def_irq_handler EXTI1_IRQHandler // EXTI Line1
def_irq_handler EXTI2_IRQHandler // EXTI Line2
def_irq_handler EXTI3_IRQHandler // EXTI Line3
def_irq_handler EXTI4_IRQHandler // EXTI Line4
def_irq_handler DMA1_Stream0_IRQHandler // DMA1 Stream 0
def_irq_handler DMA1_Stream1_IRQHandler // DMA1 Stream 1
def_irq_handler DMA1_Stream2_IRQHandler // DMA1 Stream 2
def_irq_handler DMA1_Stream3_IRQHandler // DMA1 Stream 3
def_irq_handler DMA1_Stream4_IRQHandler // DMA1 Stream 4
def_irq_handler DMA1_Stream5_IRQHandler // DMA1 Stream 5
def_irq_handler DMA1_Stream6_IRQHandler // DMA1 Stream 6
def_irq_handler ADC_IRQHandler // ADC1, ADC2 and ADC3s
def_irq_handler CAN1_TX_IRQHandler // CAN1 TX
def_irq_handler CAN1_RX0_IRQHandler // CAN1 RX0
def_irq_handler CAN1_RX1_IRQHandler // CAN1 RX1
def_irq_handler CAN1_SCE_IRQHandler // CAN1 SCE
def_irq_handler EXTI9_5_IRQHandler // External Line[9:5]s
def_irq_handler TIM1_BRK_TIM9_IRQHandler // TIM1 Break and TIM9
def_irq_handler TIM1_UP_TIM10_IRQHandler // TIM1 Update and TIM10
def_irq_handler TIM1_TRG_COM_TIM11_IRQHandler // TIM1 Trigger and Commutation and TIM11
def_irq_handler TIM1_CC_IRQHandler // TIM1 Capture Compare
def_irq_handler TIM2_IRQHandler // TIM2
def_irq_handler TIM3_IRQHandler // TIM3
def_irq_handler TIM4_IRQHandler // TIM4
def_irq_handler I2C1_EV_IRQHandler // I2C1 Event
def_irq_handler I2C1_ER_IRQHandler // I2C1 Error
def_irq_handler I2C2_EV_IRQHandler // I2C2 Event
def_irq_handler I2C2_ER_IRQHandler // I2C2 Error
def_irq_handler SPI1_IRQHandler // SPI1
def_irq_handler SPI2_IRQHandler // SPI2
def_irq_handler USART1_IRQHandler // USART1
def_irq_handler USART2_IRQHandler // USART2
def_irq_handler USART3_IRQHandler // USART3
def_irq_handler EXTI15_10_IRQHandler // External Line[15:10]s
def_irq_handler RTC_Alarm_IRQHandler // RTC Alarm (A and B) through EXTI Line
def_irq_handler OTG_FS_WKUP_IRQHandler // USB OTG FS Wakeup through EXTI line
def_irq_handler TIM8_BRK_TIM12_IRQHandler // TIM8 Break and TIM12
def_irq_handler TIM8_UP_TIM13_IRQHandler // TIM8 Update and TIM13
def_irq_handler TIM8_TRG_COM_TIM14_IRQHandler // TIM8 Trigger and Commutation and TIM14
def_irq_handler TIM8_CC_IRQHandler // TIM8 Capture Compare
def_irq_handler DMA1_Stream7_IRQHandler // DMA1 Stream7
def_irq_handler FSMC_IRQHandler // FSMC
def_irq_handler SDIO_IRQHandler // SDIO
def_irq_handler TIM5_IRQHandler // TIM5
def_irq_handler SPI3_IRQHandler // SPI3
def_irq_handler UART4_IRQHandler // UART4
def_irq_handler UART5_IRQHandler // UART5
def_irq_handler TIM6_DAC_IRQHandler // TIM6 and DAC1&2 underrun errors
def_irq_handler TIM7_IRQHandler // TIM7
def_irq_handler DMA2_Stream0_IRQHandler // DMA2 Stream 0
def_irq_handler DMA2_Stream1_IRQHandler // DMA2 Stream 1
def_irq_handler DMA2_Stream2_IRQHandler // DMA2 Stream 2
def_irq_handler DMA2_Stream3_IRQHandler // DMA2 Stream 3
def_irq_handler DMA2_Stream4_IRQHandler // DMA2 Stream 4
def_irq_handler ETH_IRQHandler // Ethernet
def_irq_handler ETH_WKUP_IRQHandler // Ethernet Wakeup through EXTI line
def_irq_handler CAN2_TX_IRQHandler // CAN2 TX
def_irq_handler CAN2_RX0_IRQHandler // CAN2 RX0
def_irq_handler CAN2_RX1_IRQHandler // CAN2 RX1
def_irq_handler CAN2_SCE_IRQHandler // CAN2 SCE
def_irq_handler OTG_FS_IRQHandler // USB OTG FS
def_irq_handler DMA2_Stream5_IRQHandler // DMA2 Stream 5
def_irq_handler DMA2_Stream6_IRQHandler // DMA2 Stream 6
def_irq_handler DMA2_Stream7_IRQHandler // DMA2 Stream 7
def_irq_handler USART6_IRQHandler // USART6
def_irq_handler I2C3_EV_IRQHandler // I2C3 event
def_irq_handler I2C3_ER_IRQHandler // I2C3 error
def_irq_handler OTG_HS_EP1_OUT_IRQHandler // USB OTG HS End Point 1 Out
def_irq_handler OTG_HS_EP1_IN_IRQHandler // USB OTG HS End Point 1 In
def_irq_handler OTG_HS_WKUP_IRQHandler // USB OTG HS Wakeup through EXTI
def_irq_handler OTG_HS_IRQHandler // USB OTG HS
def_irq_handler DCMI_IRQHandler // DCMI
def_irq_handler CRYP_IRQHandler // CRYP crypto
def_irq_handler HASH_RNG_IRQHandler // Hash and Rng
def_irq_handler FPU_IRQHandler // FPU
.end

View File

@ -1,203 +1,365 @@
bin/demoprog_olimex_stm32e407.elf: file format elf32-littlearm
bin/demoprog_olimex_stm32e407.elf
architecture: arm, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x0800c000
Program Header:
LOAD off 0x00000000 vaddr 0x08008000 paddr 0x08008000 align 2**15
filesz 0x00007158 memsz 0x00007158 flags r-x
LOAD off 0x00008000 vaddr 0x20000000 paddr 0x0800f158 align 2**15
filesz 0x00000014 memsz 0x00000014 flags rw-
LOAD off 0x00008080 vaddr 0x20000080 paddr 0x0800f200 align 2**15
filesz 0x00000000 memsz 0x00001c9c flags rw-
private flags = 5000202: [Version5 EABI] [soft-float ABI] [has entry point]
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00003158 0800c000 0800c000 00004000 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000014 20000000 0800f158 00008000 2**2
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00001c9c 20000080 0800f200 00008080 2**7
ALLOC
3 .debug_info 000093e9 00000000 00000000 00008014 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_abbrev 00001dac 00000000 00000000 000113fd 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_loc 00003bcf 00000000 00000000 000131a9 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_aranges 000009c0 00000000 00000000 00016d78 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_ranges 000008b0 00000000 00000000 00017738 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_line 0000314e 00000000 00000000 00017fe8 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_str 00003853 00000000 00000000 0001b136 2**0
CONTENTS, READONLY, DEBUGGING
10 .comment 00000030 00000000 00000000 0001e989 2**0
CONTENTS, READONLY
11 .ARM.attributes 00000033 00000000 00000000 0001e9b9 2**0
CONTENTS, READONLY
12 .debug_frame 0000144c 00000000 00000000 0001e9ec 2**2
CONTENTS, READONLY, DEBUGGING
SYMBOL TABLE:
0800c000 l d .text 00000000 .text
20000000 l d .data 00000000 .data
20000080 l d .bss 00000000 .bss
00000000 l d .debug_info 00000000 .debug_info
00000000 l d .debug_abbrev 00000000 .debug_abbrev
00000000 l d .debug_loc 00000000 .debug_loc
00000000 l d .debug_aranges 00000000 .debug_aranges
00000000 l d .debug_ranges 00000000 .debug_ranges
00000000 l d .debug_line 00000000 .debug_line
00000000 l d .debug_str 00000000 .debug_str
00000000 l d .comment 00000000 .comment
00000000 l d .ARM.attributes 00000000 .ARM.attributes
00000000 l d .debug_frame 00000000 .debug_frame
00000000 l df *ABS* 00000000 vectors.c
00000000 l df *ABS* 00000000 boot.c
0800c18c l F .text 00000038 UartReceiveByte
20000080 l O .bss 00000041 xcpCtoReqPacket.7491
200000c4 l O .bss 00000001 xcpCtoRxLength.7492
200000c5 l O .bss 00000001 xcpCtoRxInProgress.7493
200000c8 l O .bss 00000004 xcpCtoRxStartTime.7494
0800f12c l O .text 00000024 canTiming
00000000 l df *ABS* 00000000 cstart.c
0800c564 l F .text 00000000 zero_loop
00000000 l df *ABS* 00000000 led.c
200000cc l O .bss 00000004 timer_counter_last.7472
200000d0 l O .bss 00000001 led_toggle_state.7471
00000000 l df *ABS* 00000000 net.c
200000d4 l O .bss 00000004 ARPTimerTimeOut
200000d8 l O .bss 00000004 periodicTimerTimeOut
00000000 l df *ABS* 00000000 main.c
00000000 l df *ABS* 00000000 timer.c
200000dc l O .bss 00000004 millisecond_counter
00000000 l df *ABS* 00000000 stm32_eth.c
00000000 l df *ABS* 00000000 netdev.c
00000000 l df *ABS* 00000000 stm32f4xx_can.c
00000000 l df *ABS* 00000000 stm32f4xx_gpio.c
00000000 l df *ABS* 00000000 stm32f4xx_rcc.c
20000000 l O .data 00000010 APBAHBPrescTable
00000000 l df *ABS* 00000000 stm32f4xx_syscfg.c
00000000 l df *ABS* 00000000 stm32f4xx_usart.c
00000000 l df *ABS* 00000000 system_stm32f4xx.c
00000000 l df *ABS* 00000000 uip.c
0800d99c l F .text 0000004c chksum
0800d9e8 l F .text 00000046 upper_layer_chksum
0800dab0 l F .text 00000036 uip_add_rcv_nxt
200000e0 l O .bss 00000002 tmp16
200000e2 l O .bss 00000002 ipid
200000e4 l O .bss 00000004 iss
200000e8 l O .bss 00000002 lastport
200000f4 l O .bss 00000001 c
200000f5 l O .bss 00000001 opt
00000000 l df *ABS* 00000000 uip_arp.c
0800eb5c l F .text 00000116 uip_arp_update
200000f6 l O .bss 00000001 i
200000f7 l O .bss 00000001 tmpage
200000f8 l O .bss 00000060 arp_table
0800f150 l O .text 00000006 broadcast_ethaddr
20000158 l O .bss 00000001 c
20000159 l O .bss 00000001 arptime
2000015c l O .bss 00000004 ipaddr
00000000 l df *ABS* 00000000 memcpy-stub.c
00000000 l df *ABS* 00000000 memset.c
00000000 l df *ABS* 00000000
00000800 l *ABS* 00000000 __STACKSIZE__
0800ce3c g F .text 00000012 ETH_FlushTransmitFIFO
0800c520 g F .text 00000060 reset_handler
0800d5b0 g F .text 00000028 GPIO_PinAFConfig
0800c960 g F .text 0000009e ETH_StructInit
0800d320 g F .text 00000126 CAN_FilterInit
0800cad8 g F .text 000002f0 ETH_Init
20000e90 g O .bss 00000002 uip_len
200000ec g O .bss 00000006 uip_ethaddr
0800da30 g F .text 0000007e uip_add32
0800d720 g F .text 00000024 RCC_AHB1PeriphResetCmd
0800d87c g F .text 0000000c USART_GetFlagStatus
0800f158 g .text 00000000 _etext
0800d130 g F .text 00000056 netdev_read
0800db8c g F .text 00000fc4 uip_process
0800c930 g F .text 00000010 TimerISRHandler
0800c944 g F .text 0000001c ETH_DeInit
0800efe4 g F .text 000000a6 memcpy
20000e94 g O .bss 00000004 uip_sappdata
0800cee0 g F .text 0000022a netdev_init
20000e98 g O .bss 00000004 uip_acc32
0800dae8 g F .text 0000002c uip_ipchksum
20000010 g O .data 00000004 SystemCoreClock
0800d874 g F .text 00000008 USART_ReceiveData
0800d6fc g F .text 00000024 RCC_APB2PeriphClockCmd
0800d518 g F .text 00000090 GPIO_Init
0800db58 g F .text 00000032 uip_listen
0800d858 g F .text 0000001c USART_Cmd
0800d188 g F .text 00000066 netdev_send
0800d6d8 g F .text 00000024 RCC_APB1PeriphClockCmd
20000e9c g O .bss 00000001 uip_flags
20000180 g O .bss 00000010 EnetDmaRx
0800d1f0 g F .text 00000042 CAN_DeInit
0800cdc8 g F .text 00000026 ETH_MACTransmissionCmd
0800c3ac g F .text 00000022 BootActivate
2000151c g .bss 00000000 _ebss
0800c940 g F .text 00000002 UnusedISR
0800c58c g F .text 00000056 LedInit
0800d5a8 g F .text 00000004 GPIO_SetBits
0800c72c g F .text 0000015c NetTask
0800ce18 g F .text 00000012 ETH_SoftwareReset
0800ca70 g F .text 00000068 ETH_WritePHYRegister
0800d5d8 g F .text 000000da RCC_GetClocksFreq
0800d10c g F .text 00000022 netdev_init_mac
0800d774 g F .text 000000e4 USART_Init
0800d468 g F .text 00000096 CAN_Receive
0800d234 g F .text 000000ea CAN_Init
20000080 g .bss 00000000 _bss
0800d448 g F .text 00000020 CAN_StructInit
0800db14 g F .text 00000010 uip_tcpchksum
0800ce78 g F .text 00000026 ETH_DMAReceptionCmd
20000ea0 g O .bss 00000004 uip_appdata
0800d5ac g F .text 00000004 GPIO_ResetBits
20000ea4 g O .bss 00000004 uip_conn
0800ce2c g F .text 00000010 ETH_GetSoftwareResetStatus
0800ca00 g F .text 0000006e ETH_ReadPHYRegister
20000ea8 g O .bss 0000001e uip_conns
0800ee0c g F .text 000001d6 uip_arp_out
0800f08c g F .text 0000009e memset
0800c888 g F .text 00000054 main
0800d500 g F .text 00000018 CAN_MessagePending
0800c1c4 g F .text 000001e8 BootComInit
0800d888 g F .text 00000112 SystemInit
0800d768 g F .text 0000000a SYSCFG_ETH_MediaInterfaceConfig
0800eccc g F .text 00000140 uip_arp_arpin
0800ec74 g F .text 00000058 uip_arp_timer
20000ec8 g O .bss 00000002 uip_listenports
20000ecc g O .bss 00000004 uip_draddr
0800d744 g F .text 00000024 RCC_APB1PeriphResetCmd
20000000 g .data 00000000 _data
0800c5e4 g F .text 0000007e LedToggle
0800cea0 g F .text 0000003e ETH_Start
20000190 g O .bss 00000640 RxBuff
20001d1c g .bss 00000000 _estack
20000014 g .data 00000000 _edata
0800eb50 g F .text 0000000a htons
0800c000 g O .text 0000018c _vectab
0800cdf0 g F .text 00000026 ETH_MACReceptionCmd
200007d0 g O .bss 00000640 TxBuff
0800c3d0 g F .text 00000150 BootComCheckActivationRequest
0800ce50 g F .text 00000026 ETH_DMATransmissionCmd
0800db24 g F .text 00000032 uip_init
0800d6b4 g F .text 00000024 RCC_AHB1PeriphClockCmd
2000151c g .bss 00000000 _stack
20000ed0 g O .bss 00000004 uip_netmask
20000ed4 g O .bss 00000004 uip_hostaddr
0800c924 g F .text 0000000c TimerGet
20000e80 g O .bss 00000010 EnetDmaTx
0800c6f4 g F .text 00000038 NetApp
0800c664 g F .text 00000090 NetInit
0800c8dc g F .text 00000046 TimerInit
20000ed8 g O .bss 00000642 uip_buf
2000151a g O .bss 00000002 uip_slen
bin/demoprog_olimex_stm32e407.elf: file format elf32-littlearm
bin/demoprog_olimex_stm32e407.elf
architecture: arm, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x0800c000
Program Header:
0x70000001 off 0x0000e8fc vaddr 0x0800e8fc paddr 0x0800e8fc align 2**2
filesz 0x00000008 memsz 0x00000008 flags r--
LOAD off 0x00000000 vaddr 0x08000000 paddr 0x08000000 align 2**16
filesz 0x0000e904 memsz 0x0000e904 flags r-x
LOAD off 0x00010000 vaddr 0x20000000 paddr 0x0800e904 align 2**16
filesz 0x0000007c memsz 0x0000007c flags rw-
LOAD off 0x00010080 vaddr 0x20000080 paddr 0x0800ea00 align 2**16
filesz 0x00000000 memsz 0x0000149c flags rw-
private flags = 5000400: [Version5 EABI] [hard-float ABI]
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000028fc 0800c000 0800c000 0000c000 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .ARM.exidx 00000008 0800e8fc 0800e8fc 0000e8fc 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .data 0000007c 20000000 0800e904 00010000 2**2
CONTENTS, ALLOC, LOAD, DATA
3 .bss 0000149c 20000080 0800ea00 00010080 2**7
ALLOC
4 .stack_dummy 00000800 20001520 20001520 00010080 2**3
CONTENTS, READONLY
5 .ARM.attributes 00000030 00000000 00000000 00010880 2**0
CONTENTS, READONLY
6 .comment 0000006e 00000000 00000000 000108b0 2**0
CONTENTS, READONLY
7 .debug_line 000066f5 00000000 00000000 0001091e 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_info 00009926 00000000 00000000 00017013 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_abbrev 00001ccf 00000000 00000000 00020939 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_aranges 00000a18 00000000 00000000 00022608 2**3
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 00003b6e 00000000 00000000 00023020 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_ranges 000008f8 00000000 00000000 00026b8e 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_macro 00012dc3 00000000 00000000 00027486 2**0
CONTENTS, READONLY, DEBUGGING
14 .debug_str 00068990 00000000 00000000 0003a249 2**0
CONTENTS, READONLY, DEBUGGING
15 .debug_frame 000015fc 00000000 00000000 000a2bdc 2**2
CONTENTS, READONLY, DEBUGGING
SYMBOL TABLE:
0800c000 l d .text 00000000 .text
0800e8fc l d .ARM.exidx 00000000 .ARM.exidx
20000000 l d .data 00000000 .data
20000080 l d .bss 00000000 .bss
20001520 l d .stack_dummy 00000000 .stack_dummy
00000000 l d .ARM.attributes 00000000 .ARM.attributes
00000000 l d .comment 00000000 .comment
00000000 l d .debug_line 00000000 .debug_line
00000000 l d .debug_info 00000000 .debug_info
00000000 l d .debug_abbrev 00000000 .debug_abbrev
00000000 l d .debug_aranges 00000000 .debug_aranges
00000000 l d .debug_loc 00000000 .debug_loc
00000000 l d .debug_ranges 00000000 .debug_ranges
00000000 l d .debug_macro 00000000 .debug_macro
00000000 l d .debug_str 00000000 .debug_str
00000000 l d .debug_frame 00000000 .debug_frame
00000000 l df *ABS* 00000000 obj/startup_stm32f4xx.o
00000800 l *ABS* 00000000 Stack_Size
00000000 l *ABS* 00000000 Heap_Size
0800c266 l .text 00000000 .flash_to_ram_loop
0800c2a0 l .text 00000000 .fill_zero_bss
0800c29c l .text 00000000 .loop_zero_bss
00000000 l df *ABS* 00000000 crtstuff.c
0800e8f8 l O .text 00000000 __EH_FRAME_BEGIN__
0800c18c l F .text 00000000 __do_global_dtors_aux
20000080 l .bss 00000000 completed.8605
20000078 l O .data 00000000 __do_global_dtors_aux_fini_array_entry
0800c1b0 l F .text 00000000 frame_dummy
20000084 l .bss 00000000 object.8610
20000074 l O .data 00000000 __frame_dummy_init_array_entry
00000000 l df *ABS* 00000000 /opt/gcc-arm-none-eabi-5_4-2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/fpu/crt0.o
00000000 l df *ABS* 00000000 net.c
2000009c l O .bss 00000004 ARPTimerTimeOut
200000a0 l O .bss 00000004 periodicTimerTimeOut
00000000 l df *ABS* 00000000 boot.c
0800c4e0 l F .text 00000058 CanGetSpeedConfig
0800c538 l F .text 00000098 BootComUartInit
0800c5d0 l F .text 000000e8 BootComCanInit
0800c6b8 l F .text 00000024 UartReceiveByte
0800c708 l F .text 00000094 BootComUartCheckActivationRequest
0800c79c l F .text 00000050 BootComCanCheckActivationRequest
200000a4 l O .bss 00000004 xcpCtoRxStartTime.7621
200000a8 l O .bss 00000041 xcpCtoReqPacket.7618
200000e9 l O .bss 00000001 xcpCtoRxInProgress.7620
200000ea l O .bss 00000001 xcpCtoRxLength.7619
0800e8c8 l O .text 00000024 canTiming
00000000 l df *ABS* 00000000 main.c
0800c7f8 l F .text 00000010 Init
00000000 l df *ABS* 00000000 led.c
200000ec l O .bss 00000004 timer_counter_last.7599
200000f0 l O .bss 00000001 led_toggle_state.7598
00000000 l df *ABS* 00000000 timer.c
200000f4 l O .bss 00000004 millisecond_counter
00000000 l df *ABS* 00000000 stm32_eth.c
00000000 l df *ABS* 00000000 netdev.c
0800ce00 l F .text 00000038 netdev_RxDscrInit
0800ce38 l F .text 00000024 netdev_TxDscrInit
00000000 l df *ABS* 00000000 stm32f4xx_gpio.c
00000000 l df *ABS* 00000000 stm32f4xx_can.c
00000000 l df *ABS* 00000000 stm32f4xx_rcc.c
20000000 l O .data 00000010 APBAHBPrescTable
00000000 l df *ABS* 00000000 stm32f4xx_syscfg.c
00000000 l df *ABS* 00000000 stm32f4xx_usart.c
00000000 l df *ABS* 00000000 system_stm32f4xx.c
0800d6f0 l F .text 000000c4 SetSysClock
00000000 l df *ABS* 00000000 _exit.c
00000000 l df *ABS* 00000000 uip.c
0800d804 l F .text 0000003c chksum
0800d89c l F .text 00000030 uip_add_rcv_nxt
0800d988 l F .text 0000003c upper_layer_chksum
200000f8 l O .bss 00000002 tmp16
200000fa l O .bss 00000002 ipid
200000fc l O .bss 00000004 iss
20000100 l O .bss 00000002 lastport
20000102 l O .bss 00000001 c
00000000 l df *ABS* 00000000 uip_arp.c
0800e46c l F .text 00000104 uip_arp_update
2000010a l O .bss 00000001 i
2000010b l O .bss 00000001 tmpage
2000010c l O .bss 00000060 arp_table
0800e8ec l O .text 00000006 broadcast_ethaddr
2000016c l O .bss 00000001 c
2000016d l O .bss 00000001 arptime
20000170 l O .bss 00000004 ipaddr
00000000 l df *ABS* 00000000 exit.c
00000000 l df *ABS* 00000000 init.c
00000000 l df *ABS* 00000000 memcpy-stub.c
00000000 l df *ABS* 00000000 memset.c
00000000 l df *ABS* 00000000 /opt/gcc-arm-none-eabi-5_4-2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/armv7e-m/fpu/crti.o
00000000 l df *ABS* 00000000 /opt/gcc-arm-none-eabi-5_4-2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/armv7e-m/fpu/crtn.o
00000000 l df *ABS* 00000000 impure.c
20000014 l O .data 00000060 impure_data
00000000 l df *ABS* 00000000 crtstuff.c
0800e8f8 l O .text 00000000 __FRAME_END__
00000000 l df *ABS* 00000000
20000078 l .data 00000000 __init_array_end
20000074 l .data 00000000 __preinit_array_end
20000074 l .data 00000000 __init_array_start
20000074 l .data 00000000 __preinit_array_start
0800c310 w F .text 00000002 RTC_Alarm_IRQHandler
0800c35e w F .text 00000002 HASH_RNG_IRQHandler
0800c2ce w F .text 00000002 EXTI2_IRQHandler
0800c31a w F .text 00000002 TIM8_CC_IRQHandler
20001520 g .stack_dummy 00000000 __HeapBase
0800cd7c g F .text 00000014 ETH_FlushTransmitFIFO
0800c2b6 w F .text 00000002 DebugMon_Handler
0800d14c g F .text 0000002e GPIO_PinAFConfig
00000000 g *ABS* 00000000 __HEAP_SIZE
20000000 g .data 00000000 __data_start__
0800c2f4 w F .text 00000002 TIM1_CC_IRQHandler
0800c934 g F .text 0000009e ETH_StructInit
0800c346 w F .text 00000002 DMA2_Stream5_IRQHandler
0800c2ac w F .text 00000002 HardFault_Handler
0800d2c4 g F .text 000000f4 CAN_FilterInit
0800c2de w F .text 00000002 DMA1_Stream5_IRQHandler
0800ca90 g F .text 00000284 ETH_Init
0800c90c g F .text 00000010 SysTick_Handler
20000e90 g O .bss 00000002 uip_len
0800c2c0 w F .text 00000002 PVD_IRQHandler
20000104 g O .bss 00000006 uip_ethaddr
0800c320 w F .text 00000002 SDIO_IRQHandler
0800c2c2 w F .text 00000002 TAMP_STAMP_IRQHandler
0800d840 g F .text 0000005c uip_add32
0800c2b8 w F .text 00000002 PendSV_Handler
0800c2aa w F .text 00000002 NMI_Handler
0800e904 g .ARM.exidx 00000000 __exidx_end
0800c340 w F .text 00000002 CAN2_RX1_IRQHandler
0800c2d0 w F .text 00000002 EXTI3_IRQHandler
0800e904 g .ARM.exidx 00000000 __etext
0800c318 w F .text 00000002 TIM8_TRG_COM_TIM14_IRQHandler
0800c2f0 w F .text 00000002 TIM1_UP_TIM10_IRQHandler
0800d5a8 g F .text 0000001c RCC_AHB1PeriphResetCmd
0800d6e0 g F .text 0000000e USART_GetFlagStatus
0800c316 w F .text 00000002 TIM8_UP_TIM13_IRQHandler
0800c350 w F .text 00000002 I2C3_ER_IRQHandler
0800d024 g F .text 00000048 netdev_read
0800d9d0 g F .text 00000a9c uip_process
0800c91c g F .text 00000018 ETH_DeInit
0800e888 g F .text 00000016 memcpy
0800c2ca w F .text 00000002 EXTI0_IRQHandler
0800c300 w F .text 00000002 I2C2_EV_IRQHandler
20000e94 g O .bss 00000004 uip_sappdata
0800c2d8 w F .text 00000002 DMA1_Stream2_IRQHandler
0800c2e6 w F .text 00000002 CAN1_RX0_IRQHandler
0800ce5c g F .text 000001a8 netdev_init
20000e98 g O .bss 00000004 uip_acc32
0800c360 w F .text 00000002 FPU_IRQHandler
0800d968 g F .text 00000020 uip_ipchksum
20000010 g O .data 00000004 SystemCoreClock
0800c356 w F .text 00000002 OTG_HS_WKUP_IRQHandler
0800d6d8 g F .text 00000008 USART_ReceiveData
0800c2b2 w F .text 00000002 UsageFault_Handler
0800d58c g F .text 0000001c RCC_APB2PeriphClockCmd
0800c342 w F .text 00000002 CAN2_SCE_IRQHandler
0800c332 w F .text 00000002 DMA2_Stream2_IRQHandler
0800d0c0 g F .text 00000084 GPIO_Init
20001520 g .stack_dummy 00000000 __HeapLimit
20000080 g .bss 00000000 __bss_start__
0800d928 g F .text 00000034 uip_listen
0800c304 w F .text 00000002 SPI1_IRQHandler
0800d6bc g F .text 0000001c USART_Cmd
0800d06c g F .text 00000054 netdev_send
0800c32a w F .text 00000002 TIM6_DAC_IRQHandler
0800c2ee w F .text 00000002 TIM1_BRK_TIM9_IRQHandler
0800c35a w F .text 00000002 DCMI_IRQHandler
0800c33e w F .text 00000002 CAN2_RX0_IRQHandler
0800d570 g F .text 0000001c RCC_APB1PeriphClockCmd
0800e8fc g .text 00000000 __exidx_start
0800c334 w F .text 00000002 DMA2_Stream3_IRQHandler
20000e9c g O .bss 00000001 uip_flags
0800e8f4 g O .text 00000004 _global_impure_ptr
0800e83c g F .text 0000004c __libc_init_array
20000180 g O .bss 00000010 EnetDmaRx
0800c1e8 g F .text 00000000 _mainCRTStartup
0800d17c g F .text 00000038 CAN_DeInit
0800c34c w F .text 00000002 USART6_IRQHandler
0800e8b0 g F .text 00000000 _init
0800cd14 g F .text 00000020 ETH_MACTransmissionCmd
0800c6e8 g F .text 00000020 BootActivate
0800c30c w F .text 00000002 USART3_IRQHandler
0800c35c w F .text 00000002 CRYP_IRQHandler
00000000 w *UND* 00000000 __libc_fini_array
0800c25c g F .text 00000038 Reset_Handler
0800c2e8 w F .text 00000002 CAN1_RX1_IRQHandler
0800c328 w F .text 00000002 UART5_IRQHandler
0800c32e w F .text 00000002 DMA2_Stream0_IRQHandler
0800c824 g F .text 00000044 LedInit
0800d144 g F .text 00000004 GPIO_SetBits
0800c2fa w F .text 00000002 TIM4_IRQHandler
0800c408 g F .text 000000d8 NetTask
0800cd54 g F .text 00000010 ETH_SoftwareReset
00000000 w *UND* 00000000 __sf_fake_stderr
0800ca30 g F .text 00000060 ETH_WritePHYRegister
00000000 w *UND* 00000000 __deregister_frame_info
20001520 g .stack_dummy 00000000 end
0800c2fc w F .text 00000002 I2C1_EV_IRQHandler
0800c2e0 w F .text 00000002 DMA1_Stream6_IRQHandler
2000007c g .data 00000000 __data_end__
0800d49c g F .text 000000b8 RCC_GetClocksFreq
0800c2d6 w F .text 00000002 DMA1_Stream1_IRQHandler
0800d004 g F .text 00000020 netdev_init_mac
0800c326 w F .text 00000002 UART4_IRQHandler
0800d5ec g F .text 000000d0 USART_Init
2000151c g .bss 00000000 __bss_end__
00000800 g *ABS* 00000000 __STACK_SIZE
0800c2f8 w F .text 00000002 TIM3_IRQHandler
0800c2c8 w F .text 00000002 RCC_IRQHandler
0800d3d8 g F .text 000000a6 CAN_Receive
0800c314 w F .text 00000002 TIM8_BRK_TIM12_IRQHandler
00000000 w *UND* 00000000 __call_exitprocs
0800d1b4 g F .text 0000010e CAN_Init
0800c2bc w F .text 00000002 Default_Handler
0800c1e8 g F .text 00000000 _start
0800d3b8 g F .text 00000020 CAN_StructInit
0800d9c4 g F .text 0000000a uip_tcpchksum
0800cdb8 g F .text 00000028 ETH_DMAReceptionCmd
0800c30e w F .text 00000002 EXTI15_10_IRQHandler
0800c2e2 w F .text 00000002 ADC_IRQHandler
0800c31c w F .text 00000002 DMA1_Stream7_IRQHandler
00000000 w *UND* 00000000 software_init_hook
20000ea0 g O .bss 00000004 uip_appdata
0800d148 g F .text 00000004 GPIO_ResetBits
20000ea4 g O .bss 00000004 uip_conn
0800c32c w F .text 00000002 TIM7_IRQHandler
0800cd64 g F .text 00000018 ETH_GetSoftwareResetStatus
0800c33c w F .text 00000002 CAN2_TX_IRQHandler
0800c322 w F .text 00000002 TIM5_IRQHandler
0800c34a w F .text 00000002 DMA2_Stream7_IRQHandler
0800c34e w F .text 00000002 I2C3_EV_IRQHandler
0800c9d4 g F .text 0000005c ETH_ReadPHYRegister
0800c2ec w F .text 00000002 EXTI9_5_IRQHandler
20000ea8 g O .bss 0000001e uip_conns
0800c2c4 w F .text 00000002 RTC_WKUP_IRQHandler
0800c33a w F .text 00000002 ETH_WKUP_IRQHandler
0800e6b4 g F .text 00000160 uip_arp_out
0800c306 w F .text 00000002 SPI2_IRQHandler
00000000 w *UND* 00000000 __sf_fake_stdin
0800c354 w F .text 00000002 OTG_HS_EP1_IN_IRQHandler
0800e89e g F .text 00000010 memset
0800c2ae w F .text 00000002 MemManage_Handler
0800c000 g .text 0000018c __isr_vector
0800c808 g F .text 0000001c main
0800c2d4 w F .text 00000002 DMA1_Stream0_IRQHandler
0800c2e4 w F .text 00000002 CAN1_TX_IRQHandler
0800c2b4 w F .text 00000002 SVC_Handler
00000000 w *UND* 00000000 hardware_init_hook
20001520 g .stack_dummy 00000000 __end__
0800d480 g F .text 0000001a CAN_MessagePending
0800c2d2 w F .text 00000002 EXTI4_IRQHandler
0800c8b8 g F .text 0000000c TimerSet
0800c6dc g F .text 0000000c BootComInit
0800d7b4 g F .text 0000004c SystemInit
0800e8bc g F .text 00000000 _fini
0800d5e0 g F .text 0000000c SYSCFG_ETH_MediaInterfaceConfig
0800e5d4 g F .text 000000e0 uip_arp_arpin
00000000 w *UND* 00000000 atexit
0800c31e w F .text 00000002 FSMC_IRQHandler
20020000 g .bss 00000000 __StackTop
0800c338 w F .text 00000002 ETH_IRQHandler
0800c352 w F .text 00000002 OTG_HS_EP1_OUT_IRQHandler
0800e570 g F .text 00000064 uip_arp_timer
20000ec8 g O .bss 00000002 uip_listenports
0800c2be w F .text 00000002 WWDG_IRQHandler
20000ecc g O .bss 00000004 uip_draddr
0800d5c4 g F .text 0000001c RCC_APB1PeriphResetCmd
0800c868 g F .text 00000050 LedToggle
0800cde0 g F .text 00000020 ETH_Start
20000190 g O .bss 00000640 RxBuff
0800c2f6 w F .text 00000002 TIM2_IRQHandler
0800c312 w F .text 00000002 OTG_FS_WKUP_IRQHandler
0800c2f2 w F .text 00000002 TIM1_TRG_COM_TIM11_IRQHandler
0800c358 w F .text 00000002 OTG_HS_IRQHandler
20020000 g *ABS* 00000000 __stack
0800c2cc w F .text 00000002 EXTI1_IRQHandler
0800d95c g F .text 0000000a htons
2001f800 g *ABS* 00000800 __StackLimit
0800c30a w F .text 00000002 USART2_IRQHandler
0800e814 g F .text 00000028 exit
0800cd34 g F .text 00000020 ETH_MACReceptionCmd
200007d0 g O .bss 00000640 TxBuff
0800c302 w F .text 00000002 I2C2_ER_IRQHandler
00000000 w *UND* 00000000 __sf_fake_stdout
0800c330 w F .text 00000002 DMA2_Stream1_IRQHandler
0800c7ec g F .text 0000000c BootComCheckActivationRequest
0800cd90 g F .text 00000028 ETH_DMATransmissionCmd
0800c2ea w F .text 00000002 CAN1_SCE_IRQHandler
0800d8cc g F .text 0000005c uip_init
0800c2c6 w F .text 00000002 FLASH_IRQHandler
0800d800 w F .text 00000002 _exit
0800c336 w F .text 00000002 DMA2_Stream4_IRQHandler
0800d554 g F .text 0000001c RCC_AHB1PeriphClockCmd
0800c2b0 w F .text 00000002 BusFault_Handler
0800c308 w F .text 00000002 USART1_IRQHandler
0800c344 w F .text 00000002 OTG_FS_IRQHandler
0800c324 w F .text 00000002 SPI3_IRQHandler
0800c2dc w F .text 00000002 DMA1_Stream4_IRQHandler
20000ed0 g O .bss 00000004 uip_netmask
0800c2fe w F .text 00000002 I2C1_ER_IRQHandler
20000ed4 g O .bss 00000004 uip_hostaddr
0800c900 g F .text 0000000c TimerGet
20000e80 g O .bss 00000010 EnetDmaTx
0800c3d8 g F .text 00000030 NetApp
00000000 w *UND* 00000000 _Jv_RegisterClasses
0800c36c g F .text 0000006c NetInit
0800c8c4 g F .text 0000003c TimerInit
00000000 w *UND* 00000000 __register_frame_info
0800c348 w F .text 00000002 DMA2_Stream6_IRQHandler
20000ed8 g O .bss 00000642 uip_buf
0800c2da w F .text 00000002 DMA1_Stream3_IRQHandler
2000151a g O .bss 00000002 uip_slen

View File

@ -0,0 +1,181 @@
/* ---------------------------------------------------------------------------- */
/* Em::Blocks embedded development Support */
/* ---------------------------------------------------------------------------- */
/* Copyright (c) 2014, EmBlocks */
/* */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or without */
/* modification, are permitted provided that the following condition is met: */
/* */
/* - Redistributions of source code must retain the above copyright notice, */
/* this list of conditions and the disclaimer below. */
/* */
/* EmBlocks's name may not be used to endorse or promote products derived from */
/* this software without specific prior written permission. */
/* */
/* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY EBLOCKS "AS IS" AND ANY EXPRESS OR */
/* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */
/* DISCLAIMED. IN NO EVENT SHALL EMBLOCKS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
/* ---------------------------------------------------------------------------- */
/*------------------------------------------------------------------------------
* Linker script for running in internal FLASH on the STM32F407ZG
*----------------------------------------------------------------------------*/
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
SEARCH_DIR(.)
/* Memory Spaces Definitions */
MEMORY
{
ROM (rx) : ORIGIN = 0x0800C000, LENGTH = 1024K-48K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 128K
CCRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K
}
/* Linker script to place sections and symbol values. Should be used together
* with other linker script that defines memory regions FLASH and RAM.
* It references following symbols, which must be defined in code:
* Reset_Handler : Entry of reset handler
*
* It defines following symbols, which code can use without definition:
* __exidx_start
* __exidx_end
* __etext
* __data_start__
* __preinit_array_start
* __preinit_array_end
* __init_array_start
* __init_array_end
* __fini_array_start
* __fini_array_end
* __data_end__
* __bss_start__
* __bss_end__
* __end__
* end
* __HeapLimit
* __StackLimit
* __StackTop
* __stack
*/
SECTIONS
{
.text :
{
KEEP(*(.isr_vector))
*(.text*)
KEEP(*(.init))
KEEP(*(.fini))
/* .ctors */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)
/* .dtors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)
*(.rodata*)
KEEP(*(.eh_frame*))
} > ROM
.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > ROM
__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > ROM
__exidx_end = .;
__etext = .;
.data : AT (__etext)
{
__data_start__ = .;
*(vtable)
*(.data*)
. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP(*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);
. = ALIGN(4);
/* init data */
PROVIDE_HIDDEN (__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);
. = ALIGN(4);
/* finit data */
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP(*(SORT(.fini_array.*)))
KEEP(*(.fini_array))
PROVIDE_HIDDEN (__fini_array_end = .);
. = ALIGN(4);
/* All data end */
__data_end__ = .;
} > RAM
.bss (NOLOAD):
{
__bss_start__ = .;
*(.bss*)
*(COMMON)
__bss_end__ = .;
} > RAM
.heap (NOLOAD):
{
__end__ = .;
end = __end__;
*(.heap*)
__HeapLimit = .;
} > RAM
/* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign
* values to stack symbols later */
.stack_dummy (NOLOAD):
{
*(.stack)
} > RAM
/* Set stack top to end of RAM, and stack limit move down by
* size of stack_dummy section */
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
}

View File

@ -1,2 +0,0 @@
@echo off
cs-make --directory=../ all

View File

@ -1,2 +0,0 @@
@echo off
cs-make --directory=../ clean

View File

@ -1,89 +0,0 @@
/************************************************************************************//**
* \file Demo\ARMCM4_STM32F4_Olimex_STM32E407_GCC\Prog\cstart.c
* \brief Demo program C startup source file.
* \ingroup Prog_ARMCM4_STM32F4_Olimex_STM32E407_GCC
* \internal
*----------------------------------------------------------------------------------------
* C O P Y R I G H T
*----------------------------------------------------------------------------------------
* Copyright (c) 2013 by Feaser http://www.feaser.com All rights reserved
*
*----------------------------------------------------------------------------------------
* L I C E N S E
*----------------------------------------------------------------------------------------
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You 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.
*
* \endinternal
****************************************************************************************/
/****************************************************************************************
* Include files
****************************************************************************************/
#include "header.h" /* generic header */
/****************************************************************************************
* External function protoypes
****************************************************************************************/
extern int main(void);
/****************************************************************************************
* External data declarations
****************************************************************************************/
/* these externals are declared by the linker */
extern unsigned long _etext;
extern unsigned long _data;
extern unsigned long _edata;
extern unsigned long _bss;
extern unsigned long _ebss;
extern unsigned long _estack;
/************************************************************************************//**
** \brief Reset interrupt service routine. Configures the stack, initializes
** RAM and jumps to function main.
** \return none.
**
****************************************************************************************/
void reset_handler(void)
{
unsigned long *pSrc, *pDest;
/* initialize stack pointer */
__asm(" ldr r1, =_estack\n"
" mov sp, r1");
/* copy the data segment initializers from flash to SRAM */
pSrc = &_etext;
for(pDest = &_data; pDest < &_edata; )
{
*pDest++ = *pSrc++;
}
/* zero fill the bss segment. this is done with inline assembly since this will
* clear the value of pDest if it is not kept in a register.
*/
__asm(" ldr r0, =_bss\n"
" ldr r1, =_ebss\n"
" mov r2, #0\n"
" .thumb_func\n"
"zero_loop:\n"
" cmp r0, r1\n"
" it lt\n"
" strlt r2, [r0], #4\n"
" blt zero_loop");
/* start the software application by calling its entry point */
main();
} /*** end of reset_handler ***/
/************************************ end of cstart.c **********************************/

View File

@ -1,234 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<CodeLite_Project Name="DemoProg" InternalType="">
<Plugins>
<Plugin Name="qmake">
<![CDATA[00010001N0005Debug000000000000]]>
</Plugin>
</Plugins>
<VirtualDirectory Name="Source">
<VirtualDirectory Name="third_party">
<VirtualDirectory Name="uip">
<VirtualDirectory Name="uip">
<File Name="../../../../Source/third_party/uip/uip/clock.h"/>
<File Name="../../../../Source/third_party/uip/uip/lc-addrlabels.h"/>
<File Name="../../../../Source/third_party/uip/uip/lc-switch.h"/>
<File Name="../../../../Source/third_party/uip/uip/lc.h"/>
<File Name="../../../../Source/third_party/uip/uip/psock.c"/>
<File Name="../../../../Source/third_party/uip/uip/psock.h"/>
<File Name="../../../../Source/third_party/uip/uip/pt.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip-fw.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip-fw.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip-neighbor.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip-neighbor.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip-split.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip-split.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip.h"/>
<File Name="../../../../Source/third_party/uip/uip/uiplib.c"/>
<File Name="../../../../Source/third_party/uip/uip/uiplib.h"/>
<File Name="../../../../Source/third_party/uip/uip/uipopt.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip_arch.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip_arp.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip_arp.h"/>
<File Name="../../../../Source/third_party/uip/uip/uip_timer.c"/>
<File Name="../../../../Source/third_party/uip/uip/uip_timer.h"/>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="Demo">
<VirtualDirectory Name="ARMCM4_STM32F4_Olimex_STM32E407_GCC">
<VirtualDirectory Name="Prog">
<VirtualDirectory Name="lib">
<VirtualDirectory Name="stdperiphlib">
<VirtualDirectory Name="STM32F4xx_StdPeriph_Driver">
<VirtualDirectory Name="inc">
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/misc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_adc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_can.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_crc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_cryp.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dac.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dbgmcu.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dcmi.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dma.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_exti.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_flash.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_fsmc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_gpio.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_hash.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_i2c.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_iwdg.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_pwr.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rcc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rng.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rtc.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_sdio.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_spi.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_syscfg.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_tim.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_usart.h"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_wwdg.h"/>
</VirtualDirectory>
<VirtualDirectory Name="src">
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/misc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_adc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_can.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_crc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_aes.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_des.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_tdes.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dac.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dbgmcu.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dcmi.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dma.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_exti.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_flash.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_fsmc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash_md5.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash_sha1.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_i2c.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_iwdg.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_pwr.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rng.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rtc.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_sdio.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_spi.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_syscfg.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_tim.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_usart.c"/>
<File Name="../lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_wwdg.c"/>
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="CMSIS">
<VirtualDirectory Name="Device">
<VirtualDirectory Name="ST">
<VirtualDirectory Name="STM32F4xx">
<VirtualDirectory Name="Include">
<File Name="../lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h"/>
<File Name="../lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h"/>
</VirtualDirectory>
<VirtualDirectory Name="Source">
<File Name="../lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Source/system_stm32f4xx.c"/>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="Include">
<File Name="../lib/stdperiphlib/CMSIS/Include/core_cm4.h"/>
<File Name="../lib/stdperiphlib/CMSIS/Include/core_cm4_simd.h"/>
<File Name="../lib/stdperiphlib/CMSIS/Include/core_cmFunc.h"/>
<File Name="../lib/stdperiphlib/CMSIS/Include/core_cmInstr.h"/>
</VirtualDirectory>
</VirtualDirectory>
<File Name="../lib/stdperiphlib/stm32f4xx_conf.h"/>
</VirtualDirectory>
<VirtualDirectory Name="ethernetlib">
<VirtualDirectory Name="inc">
<File Name="../lib/ethernetlib/inc/stm32_eth.h"/>
</VirtualDirectory>
<VirtualDirectory Name="src">
<File Name="../lib/ethernetlib/src/stm32_eth.c"/>
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="uip">
<File Name="../lib/uip/clock-arch.c"/>
<File Name="../lib/uip/clock-arch.h"/>
<File Name="../lib/uip/netdev.c"/>
<File Name="../lib/uip/netdev.h"/>
<File Name="../lib/uip/uip-conf.h"/>
</VirtualDirectory>
</VirtualDirectory>
<File Name="../boot.c"/>
<File Name="../boot.h"/>
<File Name="../cstart.c"/>
<File Name="../header.h"/>
<File Name="../led.c"/>
<File Name="../led.h"/>
<File Name="../main.c"/>
<File Name="../net.c"/>
<File Name="../net.h"/>
<File Name="../timer.c"/>
<File Name="../timer.h"/>
<File Name="../vectors.c"/>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
<Description/>
<Dependencies/>
<Settings Type="Dynamic Library">
<GlobalSettings>
<Compiler Options="" C_Options="">
<IncludePath Value="."/>
</Compiler>
<Linker Options="">
<LibraryPath Value="."/>
</Linker>
<ResourceCompiler Options=""/>
</GlobalSettings>
<Configuration Name="Debug" CompilerType="gnu gcc" DebuggerType="GNU gdb debugger" Type="Dynamic Library" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
<Compiler Options="-g" C_Options="-g" Required="yes" PreCompiledHeader="">
<IncludePath Value="."/>
</Compiler>
<Linker Options="" Required="yes"/>
<ResourceCompiler Options="" Required="no"/>
<General OutputFile="" IntermediateDirectory="../obj" Command="demoprog_olimex_lpc_l2294_20mhz.elf" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(WorkspacePath)/../bin" PauseExecWhenProcTerminates="yes"/>
<Environment EnvVarSetName="&lt;Use Defaults&gt;" DbgSetName="&lt;Use Defaults&gt;"/>
<Debugger IsRemote="yes" RemoteHostName="localhost" RemoteHostPort="3333" DebuggerPath="C:\Program Files (x86)\CodeSourcery\Sourcery G++ Lite\bin\arm-none-eabi-gdb.exe">
<PostConnectCommands/>
<StartupCommands>break main
continue
</StartupCommands>
</Debugger>
<PreBuild/>
<PostBuild/>
<CustomBuild Enabled="yes">
<RebuildCommand/>
<CleanCommand>make clean</CleanCommand>
<BuildCommand>make</BuildCommand>
<PreprocessFileCommand/>
<SingleFileCommand/>
<MakefileGenerationCommand/>
<ThirdPartyToolName>None</ThirdPartyToolName>
<WorkingDirectory>$(WorkspacePath)/..</WorkingDirectory>
</CustomBuild>
<AdditionalRules>
<CustomPostBuild/>
<CustomPreBuild/>
</AdditionalRules>
</Configuration>
<Configuration Name="Release" CompilerType="gnu gcc" DebuggerType="GNU gdb debugger" Type="Dynamic Library" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
<Compiler Options="" C_Options="" Required="yes" PreCompiledHeader="">
<IncludePath Value="."/>
</Compiler>
<Linker Options="-O2" Required="yes"/>
<ResourceCompiler Options="" Required="no"/>
<General OutputFile="" IntermediateDirectory="./Release" Command="" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(IntermediateDirectory)" PauseExecWhenProcTerminates="yes"/>
<Environment EnvVarSetName="&lt;Use Defaults&gt;" DbgSetName="&lt;Use Defaults&gt;"/>
<Debugger IsRemote="no" RemoteHostName="" RemoteHostPort="" DebuggerPath="">
<PostConnectCommands/>
<StartupCommands/>
</Debugger>
<PreBuild/>
<PostBuild/>
<CustomBuild Enabled="yes">
<RebuildCommand/>
<CleanCommand>make clean</CleanCommand>
<BuildCommand>make</BuildCommand>
<PreprocessFileCommand/>
<SingleFileCommand/>
<MakefileGenerationCommand/>
<ThirdPartyToolName>None</ThirdPartyToolName>
<WorkingDirectory>$(WorkspacePath)</WorkingDirectory>
</CustomBuild>
<AdditionalRules>
<CustomPostBuild/>
<CustomPreBuild/>
</AdditionalRules>
</Configuration>
</Settings>
</CodeLite_Project>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<CodeLite_Workspace Name="DemoProg" Database="./DemoProg.tags">
<Project Name="DemoProg" Path="DemoProg.project" Active="Yes"/>
<BuildMatrix>
<WorkspaceConfiguration Name="Debug" Selected="yes">
<Project Name="DemoProg" ConfigName="Debug"/>
</WorkspaceConfiguration>
<WorkspaceConfiguration Name="Release" Selected="yes">
<Project Name="DemoProg" ConfigName="Release"/>
</WorkspaceConfiguration>
</BuildMatrix>
</CodeLite_Workspace>

View File

@ -1,4 +0,0 @@
Integrated Development Environment
----------------------------------
Codelite was used as the editor during the development of this software program. This directory contains the Codelite
workspace and project files. Codelite is a cross platform open source C/C++ IDE, available at http://www.codelite.org/.

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

@ -1,11 +1,11 @@
#****************************************************************************************
#| Description: Makefile for STM32 using CodeSourcery GNU GCC compiler toolset
#| Description: Makefile for GNU ARM Embedded toolchain.
#| File Name: makefile
#|
#|---------------------------------------------------------------------------------------
#| C O P Y R I G H T
#|---------------------------------------------------------------------------------------
#| Copyright (c) 2013 by Feaser http://www.feaser.com All rights reserved
#| Copyright (c) 2017 by Feaser http://www.feaser.com All rights reserved
#|
#|---------------------------------------------------------------------------------------
#| L I C E N S E
@ -25,187 +25,123 @@
#****************************************************************************************
SHELL = sh
#|---------------------------------------------------------------------------------------|
#| Configure project name |
#|---------------------------------------------------------------------------------------|
#|--------------------------------------------------------------------------------------|
#| Configure project name |
#|--------------------------------------------------------------------------------------|
PROJ_NAME=demoprog_olimex_stm32e407
#|---------------------------------------------------------------------------------------|
#| Speficy project source files |
#|---------------------------------------------------------------------------------------|
PROJ_FILES= \
boot.c \
boot.h \
cstart.c \
header.h \
led.c \
led.h \
net.c \
net.h \
main.c \
timer.c \
timer.h \
vectors.c \
./lib/ethernetlib/inc/stm32_eth.h \
./lib/ethernetlib/src/stm32_eth.c \
./lib/uip/clock-arch.c \
./lib/uip/clock-arch.h \
./lib/uip/netdev.c \
./lib/uip/netdev.h \
./lib/uip/uip-conf.h \
./lib/stdperiphlib/stm32f4xx_conf.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/misc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_adc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_can.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_crc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_cryp.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dac.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dbgmcu.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dcmi.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_dma.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_exti.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_flash.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_fsmc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_gpio.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_hash.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_i2c.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_iwdg.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_pwr.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rcc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rng.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rtc.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_sdio.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_spi.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_syscfg.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_tim.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_usart.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_wwdg.h \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/misc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_adc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_can.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_crc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_aes.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_des.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_cryp_tdes.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dac.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dbgmcu.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dcmi.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dma.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_exti.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_flash.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_fsmc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash_md5.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_hash_sha1.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_i2c.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_iwdg.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_pwr.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rng.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rtc.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_sdio.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_spi.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_syscfg.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_tim.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_usart.c \
./lib/stdperiphlib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_wwdg.c \
./lib/stdperiphlib/CMSIS/Include/core_cm4.h \
./lib/stdperiphlib/CMSIS/Include/core_cm4_simd.h \
./lib/stdperiphlib/CMSIS/Include/core_cmFunc.h \
./lib/stdperiphlib/CMSIS/Include/core_cmInstr.h \
./lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Source/system_stm32f4xx.c \
./lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h \
./lib/stdperiphlib/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h \
../../../Source/third_party/uip/uip/clock.h \
../../../Source/third_party/uip/uip/lc-addrlabels.h \
../../../Source/third_party/uip/uip/lc-switch.h \
../../../Source/third_party/uip/uip/lc.h \
../../../Source/third_party/uip/uip/pt.h \
../../../Source/third_party/uip/uip/uip-fw.c \
../../../Source/third_party/uip/uip/uip-fw.h \
../../../Source/third_party/uip/uip/uip-neighbor.h \
../../../Source/third_party/uip/uip/uip-split.h \
../../../Source/third_party/uip/uip/uip.c \
../../../Source/third_party/uip/uip/uip.h \
../../../Source/third_party/uip/uip/uiplib.c \
../../../Source/third_party/uip/uip/uiplib.h \
../../../Source/third_party/uip/uip/uipopt.h \
../../../Source/third_party/uip/uip/uip_arch.h \
../../../Source/third_party/uip/uip/uip_arp.c \
../../../Source/third_party/uip/uip/uip_arp.h \
../../../Source/third_party/uip/uip/uip_timer.c \
../../../Source/third_party/uip/uip/uip_timer.h
#|--------------------------------------------------------------------------------------|
#| 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)))
#|---------------------------------------------------------------------------------------|
#| Compiler binaries |
#|---------------------------------------------------------------------------------------|
CC = arm-none-eabi-gcc
LN = arm-none-eabi-gcc
OC = arm-none-eabi-objcopy
OD = arm-none-eabi-objdump
AS = arm-none-eabi-as
SZ = arm-none-eabi-size
# Collect all application files in the current directory and its subdirectories
PROJ_FILES = $(call rwildcard, , *.c *.h *.S)
# Collect UIP third party library files
PROJ_FILES += ../../../Source/third_party/uip/uip/clock.h
PROJ_FILES += ../../../Source/third_party/uip/uip/lc-addrlabels.h
PROJ_FILES += ../../../Source/third_party/uip/uip/lc-switch.h
PROJ_FILES += ../../../Source/third_party/uip/uip/lc.h
PROJ_FILES += ../../../Source/third_party/uip/uip/pt.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip-fw.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip-neighbor.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip-split.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip.c
PROJ_FILES += ../../../Source/third_party/uip/uip/uip.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip_arch.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip_arp.c
PROJ_FILES += ../../../Source/third_party/uip/uip/uip_arp.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uip_timer.c
PROJ_FILES += ../../../Source/third_party/uip/uip/uip_timer.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uiplib.c
PROJ_FILES += ../../../Source/third_party/uip/uip/uiplib.h
PROJ_FILES += ../../../Source/third_party/uip/uip/uipopt.h
#|---------------------------------------------------------------------------------------|
#| Extract file names |
#|---------------------------------------------------------------------------------------|
PROJ_ASRCS = $(filter %.s,$(foreach file,$(PROJ_FILES),$(notdir $(file))))
#|--------------------------------------------------------------------------------------|
#| 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))))
PROJ_CCMPL = $(patsubst %.c,%.cpl,$(PROJ_CSRCS))
PROJ_ACMPL = $(patsubst %.s,%.cpl,$(PROJ_ASRCS))
#|---------------------------------------------------------------------------------------|
#| Set important path variables |
#|---------------------------------------------------------------------------------------|
#|--------------------------------------------------------------------------------------|
#| 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 %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file)))))
INC_PATH += -I.
LIB_PATH =
INC_PATH = $(patsubst %/,%,$(patsubst %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file))))))
LIB_PATH = -Lcfg
#|---------------------------------------------------------------------------------------|
#| Options for compiler binaries |
#|---------------------------------------------------------------------------------------|
CFLAGS = -g -mthumb -mcpu=cortex-m4 -mlong-calls -O1 -T memory.x
CFLAGS += -D PACK_STRUCT_END=__attribute\(\(packed\)\) -D sprintf=usprintf -Wno-main
CFLAGS += -D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) -D snprintf=usnprintf
CFLAGS += -D printf=uipprintf -ffunction-sections -fdata-sections $(INC_PATH)
CFLAGS += -D USE_STDPERIPH_DRIVER -D HSE_VALUE=12000000 -D STM32F4XX -D GCC_ARMCM3
CFLAGS += -Wno-attributes
LFLAGS = -nostartfiles -Xlinker -M -Xlinker -Map=$(BIN_PATH)/$(PROJ_NAME).map
LFLAGS += $(LIB_PATH) -Xlinker --gc-sections
OFLAGS = -O srec
ODFLAGS = -x
SZFLAGS = -B -d
#|--------------------------------------------------------------------------------------|
#| 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 -Wno-maybe-uninitialized -Wno-main
OPTFLAGS = -Og
CFLAGS = $(STDFLAGS) $(OPTFLAGS)
CFLAGS += -DSTM32F407ZG -DSTM32F4XX -DUSE_STDPERIPH_DRIVER -DHSE_VALUE=12000000
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="stm32f407zg_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 |
#|---------------------------------------------------------------------------------------|
#|--------------------------------------------------------------------------------------|
#| Specify library files |
#|--------------------------------------------------------------------------------------|
LIBS =
#|---------------------------------------------------------------------------------------|
#| Define targets |
#|---------------------------------------------------------------------------------------|
AOBJS = $(patsubst %.s,%.o,$(PROJ_ASRCS))
#|--------------------------------------------------------------------------------------|
#| Define targets |
#|--------------------------------------------------------------------------------------|
AOBJS = $(patsubst %.S,%.o,$(PROJ_ASRCS))
COBJS = $(patsubst %.c,%.o,$(PROJ_CSRCS))
#|---------------------------------------------------------------------------------------|
#| Make ALL |
#|---------------------------------------------------------------------------------------|
all : $(BIN_PATH)/$(PROJ_NAME).srec
#|--------------------------------------------------------------------------------------|
#| Make ALL |
#|--------------------------------------------------------------------------------------|
.PHONY: all
all: $(BIN_PATH)/$(PROJ_NAME).srec
$(BIN_PATH)/$(PROJ_NAME).srec : $(BIN_PATH)/$(PROJ_NAME).elf
@ -217,31 +153,32 @@ $(BIN_PATH)/$(PROJ_NAME).srec : $(BIN_PATH)/$(PROJ_NAME).elf
$(BIN_PATH)/$(PROJ_NAME).elf : $(AOBJS) $(COBJS)
@echo +++ Linking [$(notdir $@)]
@$(LN) $(CFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)/%.o,$(^F)) $(LIBS) $(LFLAGS)
@$(LN) $(LFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)/%.o,$(^F)) $(LIBS)
#|---------------------------------------------------------------------------------------|
#| Compile and assemble |
#|---------------------------------------------------------------------------------------|
$(AOBJS): %.o: %.s $(PROJ_CHDRS)
#|--------------------------------------------------------------------------------------|
#| Compile and assemble |
#|--------------------------------------------------------------------------------------|
$(AOBJS): %.o: %.S $(PROJ_CHDRS)
@echo +++ Assembling [$(notdir $<)]
@$(AS) $(AFLAGS) $< -o $(OBJ_PATH)/$(@F)
@$(AS) $(AFLAGS) -c $< -o $(OBJ_PATH)/$(@F)
$(COBJS): %.o: %.c $(PROJ_CHDRS)
@echo +++ Compiling [$(notdir $<)]
@$(CC) $(CFLAGS) -c $< -o $(OBJ_PATH)/$(@F)
#|---------------------------------------------------------------------------------------|
#| Make CLEAN |
#|---------------------------------------------------------------------------------------|
clean :
#|--------------------------------------------------------------------------------------|
#| Make CLEAN |
#|--------------------------------------------------------------------------------------|
.PHONY: clean
clean:
@echo +++ Cleaning build environment
@cs-rm -f $(foreach file,$(AOBJS),$(OBJ_PATH)/$(file))
@cs-rm -f $(foreach file,$(COBJS),$(OBJ_PATH)/$(file))
@cs-rm -f $(patsubst %.o,%.lst,$(foreach file,$(COBJS),$(OBJ_PATH)/$(file)))
@cs-rm -f $(BIN_PATH)/$(PROJ_NAME).elf $(BIN_PATH)/$(PROJ_NAME).map
@cs-rm -f $(BIN_PATH)/$(PROJ_NAME).srec
@$(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,37 +0,0 @@
MEMORY
{
FLASH (rx) : ORIGIN = 0x0800C000, LENGTH = 1024K-48K
SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 128K
}
SECTIONS
{
__STACKSIZE__ = 2048;
.text :
{
KEEP(*(.isr_vector))
*(.text*)
*(.rodata*)
_etext = .;
} > FLASH
.data : AT (ADDR(.text) + SIZEOF(.text))
{
_data = .;
*(vtable)
*(.data*)
_edata = .;
} > SRAM
.bss :
{
_bss = .;
*(.bss*)
*(COMMON)
_ebss = .;
_stack = .;
. = ALIGN(MAX(_stack + __STACKSIZE__ , .), 4);
_estack = .;
} > SRAM
}

View File

@ -0,0 +1,364 @@
/* File: startup_ARMCM4.S
* Purpose: startup file for Cortex-M4 devices. Should use with
* GCC for ARM Embedded Processors
* Version: V1.3
* Date: 08 Feb 2012
*
* Copyright (c) 2012, ARM Limited
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the ARM Limited nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL ARM LIMITED BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
.syntax unified
.arch armv7-m
.section .stack
.align 3
#ifdef __STACK_SIZE
.equ Stack_Size, __STACK_SIZE
#else
.equ Stack_Size, 0x400
#endif
.globl __StackTop
.globl __StackLimit
__StackLimit:
.space Stack_Size
.size __StackLimit, . - __StackLimit
__StackTop:
.size __StackTop, . - __StackTop
.section .heap
.align 3
#ifdef __HEAP_SIZE
.equ Heap_Size, __HEAP_SIZE
#else
.equ Heap_Size, 0xC00
#endif
.globl __HeapBase
.globl __HeapLimit
__HeapBase:
.if Heap_Size
.space Heap_Size
.endif
.size __HeapBase, . - __HeapBase
__HeapLimit:
.size __HeapLimit, . - __HeapLimit
.section .isr_vector
.align 2
.globl __isr_vector
__isr_vector:
.long __StackTop /* Top of Stack */
.long Reset_Handler /* Reset Handler */
.long NMI_Handler /* NMI Handler */
.long HardFault_Handler /* Hard Fault Handler */
.long MemManage_Handler /* MPU Fault Handler */
.long BusFault_Handler /* Bus Fault Handler */
.long UsageFault_Handler /* Usage Fault Handler */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long SVC_Handler /* SVCall Handler */
.long DebugMon_Handler /* Debug Monitor Handler */
.long 0 /* Reserved */
.long PendSV_Handler /* PendSV Handler */
.long SysTick_Handler /* SysTick Handler */
// External Interrupts
.long WWDG_IRQHandler // Window WatchDog
.long PVD_IRQHandler // PVD through EXTI Line detection
.long TAMP_STAMP_IRQHandler // Tamper and TimeStamps through the EXTI line
.long RTC_WKUP_IRQHandler // RTC Wakeup through the EXTI line
.long FLASH_IRQHandler // FLASH
.long RCC_IRQHandler // RCC
.long EXTI0_IRQHandler // EXTI Line0
.long EXTI1_IRQHandler // EXTI Line1
.long EXTI2_IRQHandler // EXTI Line2
.long EXTI3_IRQHandler // EXTI Line3
.long EXTI4_IRQHandler // EXTI Line4
.long DMA1_Stream0_IRQHandler // DMA1 Stream 0
.long DMA1_Stream1_IRQHandler // DMA1 Stream 1
.long DMA1_Stream2_IRQHandler // DMA1 Stream 2
.long DMA1_Stream3_IRQHandler // DMA1 Stream 3
.long DMA1_Stream4_IRQHandler // DMA1 Stream 4
.long DMA1_Stream5_IRQHandler // DMA1 Stream 5
.long DMA1_Stream6_IRQHandler // DMA1 Stream 6
.long ADC_IRQHandler // ADC1, ADC2 and ADC3s
.long CAN1_TX_IRQHandler // CAN1 TX
.long CAN1_RX0_IRQHandler // CAN1 RX0
.long CAN1_RX1_IRQHandler // CAN1 RX1
.long CAN1_SCE_IRQHandler // CAN1 SCE
.long EXTI9_5_IRQHandler // External Line[9:5]s
.long TIM1_BRK_TIM9_IRQHandler // TIM1 Break and TIM9
.long TIM1_UP_TIM10_IRQHandler // TIM1 Update and TIM10
.long TIM1_TRG_COM_TIM11_IRQHandler // TIM1 Trigger and Commutation and TIM11
.long TIM1_CC_IRQHandler // TIM1 Capture Compare
.long TIM2_IRQHandler // TIM2
.long TIM3_IRQHandler // TIM3
.long TIM4_IRQHandler // TIM4
.long I2C1_EV_IRQHandler // I2C1 Event
.long I2C1_ER_IRQHandler // I2C1 Error
.long I2C2_EV_IRQHandler // I2C2 Event
.long I2C2_ER_IRQHandler // I2C2 Error
.long SPI1_IRQHandler // SPI1
.long SPI2_IRQHandler // SPI2
.long USART1_IRQHandler // USART1
.long USART2_IRQHandler // USART2
.long USART3_IRQHandler // USART3
.long EXTI15_10_IRQHandler // External Line[15:10]s
.long RTC_Alarm_IRQHandler // RTC Alarm (A and B) through EXTI Line
.long OTG_FS_WKUP_IRQHandler // USB OTG FS Wakeup through EXTI line
.long TIM8_BRK_TIM12_IRQHandler // TIM8 Break and TIM12
.long TIM8_UP_TIM13_IRQHandler // TIM8 Update and TIM13
.long TIM8_TRG_COM_TIM14_IRQHandler // TIM8 Trigger and Commutation and TIM14
.long TIM8_CC_IRQHandler // TIM8 Capture Compare
.long DMA1_Stream7_IRQHandler // DMA1 Stream7
.long FSMC_IRQHandler // FSMC
.long SDIO_IRQHandler // SDIO
.long TIM5_IRQHandler // TIM5
.long SPI3_IRQHandler // SPI3
.long UART4_IRQHandler // UART4
.long UART5_IRQHandler // UART5
.long TIM6_DAC_IRQHandler // TIM6 and DAC1&2 underrun errors
.long TIM7_IRQHandler // TIM7
.long DMA2_Stream0_IRQHandler // DMA2 Stream 0
.long DMA2_Stream1_IRQHandler // DMA2 Stream 1
.long DMA2_Stream2_IRQHandler // DMA2 Stream 2
.long DMA2_Stream3_IRQHandler // DMA2 Stream 3
.long DMA2_Stream4_IRQHandler // DMA2 Stream 4
.long ETH_IRQHandler // Ethernet
.long ETH_WKUP_IRQHandler // Ethernet Wakeup through EXTI line
.long CAN2_TX_IRQHandler // CAN2 TX
.long CAN2_RX0_IRQHandler // CAN2 RX0
.long CAN2_RX1_IRQHandler // CAN2 RX1
.long CAN2_SCE_IRQHandler // CAN2 SCE
.long OTG_FS_IRQHandler // USB OTG FS
.long DMA2_Stream5_IRQHandler // DMA2 Stream 5
.long DMA2_Stream6_IRQHandler // DMA2 Stream 6
.long DMA2_Stream7_IRQHandler // DMA2 Stream 7
.long USART6_IRQHandler // USART6
.long I2C3_EV_IRQHandler // I2C3 event
.long I2C3_ER_IRQHandler // I2C3 error
.long OTG_HS_EP1_OUT_IRQHandler // USB OTG HS End Point 1 Out
.long OTG_HS_EP1_IN_IRQHandler // USB OTG HS End Point 1 In
.long OTG_HS_WKUP_IRQHandler // USB OTG HS Wakeup through EXTI
.long OTG_HS_IRQHandler // USB OTG HS
.long DCMI_IRQHandler // DCMI
.long CRYP_IRQHandler // CRYP crypto
.long HASH_RNG_IRQHandler // Hash and Rng
.long FPU_IRQHandler // FPU
.long 0x55AA11EE // Reserved for OpenBLT checksum
.size __isr_vector, . - __isr_vector
.text
.thumb
.thumb_func
.align 2
.globl Reset_Handler
.type Reset_Handler, %function
Reset_Handler:
/* Initialize the stackpointer. this is done automatically after a reset event.
* the bootloader performs a software reset by calling this reset handler, in
* which case the stackpointer is not yet initialized. */
ldr r1, =__StackTop
mov sp, r1
/* Loop to copy data from read only memory to RAM. The ranges
* of copy from/to are specified by following symbols evaluated in
* linker script.
* __etext: End of code section, i.e., begin of data sections to copy from.
* __data_start__/__data_end__: RAM address range that data should be
* copied to. Both must be aligned to 4 bytes boundary. */
ldr r1, =__etext
ldr r2, =__data_start__
ldr r3, =__data_end__
#if 1
/* Here are two copies of loop implemenations. First one favors code size
* and the second one favors performance. Default uses the first one.
* Change to "#if 0" to use the second one */
.flash_to_ram_loop:
cmp r2, r3
ittt lt
ldrlt r0, [r1], #4
strlt r0, [r2], #4
blt .flash_to_ram_loop
#else
subs r3, r2
ble .flash_to_ram_loop_end
.flash_to_ram_loop:
subs r3, #4
ldr r0, [r1, r3]
str r0, [r2, r3]
bgt .flash_to_ram_loop
.flash_to_ram_loop_end:
#endif
#ifndef __NO_SYSTEM_INIT
ldr r0, =SystemInit
blx r0
#endif
ldr r0, =_start
bx r0
.pool
.size Reset_Handler, . - Reset_Handler
/* Our weak _start alternative if we don't use the library _start
* The zero init section must be cleared, otherwise the librtary is
* doing that */
.align 1
.thumb_func
.weak _start
.type _start, %function
_start:
/* Zero fill the bss segment. */
ldr r1, = __bss_start__
ldr r2, = __bss_end__
movs r3, #0
b .fill_zero_bss
.loop_zero_bss:
str r3, [r1], #4
.fill_zero_bss:
cmp r1, r2
bcc .loop_zero_bss
/* Jump to our main */
bl main
b .
.size _start, . - _start
/* Macro to define default handlers. Default handler
* will be weak symbol and just dead loops. They can be
* overwritten by other handlers */
.macro def_irq_handler handler_name
.align 1
.thumb_func
.weak \handler_name
.type \handler_name, %function
\handler_name :
b .
.size \handler_name, . - \handler_name
.endm
def_irq_handler NMI_Handler
def_irq_handler HardFault_Handler
def_irq_handler MemManage_Handler
def_irq_handler BusFault_Handler
def_irq_handler UsageFault_Handler
def_irq_handler SVC_Handler
def_irq_handler DebugMon_Handler
def_irq_handler PendSV_Handler
def_irq_handler SysTick_Handler
def_irq_handler Default_Handler
// External Interrupts
def_irq_handler WWDG_IRQHandler // Window WatchDog
def_irq_handler PVD_IRQHandler // PVD through EXTI Line detection
def_irq_handler TAMP_STAMP_IRQHandler // Tamper and TimeStamps through the EXTI line
def_irq_handler RTC_WKUP_IRQHandler // RTC Wakeup through the EXTI line
def_irq_handler FLASH_IRQHandler // FLASH
def_irq_handler RCC_IRQHandler // RCC
def_irq_handler EXTI0_IRQHandler // EXTI Line0
def_irq_handler EXTI1_IRQHandler // EXTI Line1
def_irq_handler EXTI2_IRQHandler // EXTI Line2
def_irq_handler EXTI3_IRQHandler // EXTI Line3
def_irq_handler EXTI4_IRQHandler // EXTI Line4
def_irq_handler DMA1_Stream0_IRQHandler // DMA1 Stream 0
def_irq_handler DMA1_Stream1_IRQHandler // DMA1 Stream 1
def_irq_handler DMA1_Stream2_IRQHandler // DMA1 Stream 2
def_irq_handler DMA1_Stream3_IRQHandler // DMA1 Stream 3
def_irq_handler DMA1_Stream4_IRQHandler // DMA1 Stream 4
def_irq_handler DMA1_Stream5_IRQHandler // DMA1 Stream 5
def_irq_handler DMA1_Stream6_IRQHandler // DMA1 Stream 6
def_irq_handler ADC_IRQHandler // ADC1, ADC2 and ADC3s
def_irq_handler CAN1_TX_IRQHandler // CAN1 TX
def_irq_handler CAN1_RX0_IRQHandler // CAN1 RX0
def_irq_handler CAN1_RX1_IRQHandler // CAN1 RX1
def_irq_handler CAN1_SCE_IRQHandler // CAN1 SCE
def_irq_handler EXTI9_5_IRQHandler // External Line[9:5]s
def_irq_handler TIM1_BRK_TIM9_IRQHandler // TIM1 Break and TIM9
def_irq_handler TIM1_UP_TIM10_IRQHandler // TIM1 Update and TIM10
def_irq_handler TIM1_TRG_COM_TIM11_IRQHandler // TIM1 Trigger and Commutation and TIM11
def_irq_handler TIM1_CC_IRQHandler // TIM1 Capture Compare
def_irq_handler TIM2_IRQHandler // TIM2
def_irq_handler TIM3_IRQHandler // TIM3
def_irq_handler TIM4_IRQHandler // TIM4
def_irq_handler I2C1_EV_IRQHandler // I2C1 Event
def_irq_handler I2C1_ER_IRQHandler // I2C1 Error
def_irq_handler I2C2_EV_IRQHandler // I2C2 Event
def_irq_handler I2C2_ER_IRQHandler // I2C2 Error
def_irq_handler SPI1_IRQHandler // SPI1
def_irq_handler SPI2_IRQHandler // SPI2
def_irq_handler USART1_IRQHandler // USART1
def_irq_handler USART2_IRQHandler // USART2
def_irq_handler USART3_IRQHandler // USART3
def_irq_handler EXTI15_10_IRQHandler // External Line[15:10]s
def_irq_handler RTC_Alarm_IRQHandler // RTC Alarm (A and B) through EXTI Line
def_irq_handler OTG_FS_WKUP_IRQHandler // USB OTG FS Wakeup through EXTI line
def_irq_handler TIM8_BRK_TIM12_IRQHandler // TIM8 Break and TIM12
def_irq_handler TIM8_UP_TIM13_IRQHandler // TIM8 Update and TIM13
def_irq_handler TIM8_TRG_COM_TIM14_IRQHandler // TIM8 Trigger and Commutation and TIM14
def_irq_handler TIM8_CC_IRQHandler // TIM8 Capture Compare
def_irq_handler DMA1_Stream7_IRQHandler // DMA1 Stream7
def_irq_handler FSMC_IRQHandler // FSMC
def_irq_handler SDIO_IRQHandler // SDIO
def_irq_handler TIM5_IRQHandler // TIM5
def_irq_handler SPI3_IRQHandler // SPI3
def_irq_handler UART4_IRQHandler // UART4
def_irq_handler UART5_IRQHandler // UART5
def_irq_handler TIM6_DAC_IRQHandler // TIM6 and DAC1&2 underrun errors
def_irq_handler TIM7_IRQHandler // TIM7
def_irq_handler DMA2_Stream0_IRQHandler // DMA2 Stream 0
def_irq_handler DMA2_Stream1_IRQHandler // DMA2 Stream 1
def_irq_handler DMA2_Stream2_IRQHandler // DMA2 Stream 2
def_irq_handler DMA2_Stream3_IRQHandler // DMA2 Stream 3
def_irq_handler DMA2_Stream4_IRQHandler // DMA2 Stream 4
def_irq_handler ETH_IRQHandler // Ethernet
def_irq_handler ETH_WKUP_IRQHandler // Ethernet Wakeup through EXTI line
def_irq_handler CAN2_TX_IRQHandler // CAN2 TX
def_irq_handler CAN2_RX0_IRQHandler // CAN2 RX0
def_irq_handler CAN2_RX1_IRQHandler // CAN2 RX1
def_irq_handler CAN2_SCE_IRQHandler // CAN2 SCE
def_irq_handler OTG_FS_IRQHandler // USB OTG FS
def_irq_handler DMA2_Stream5_IRQHandler // DMA2 Stream 5
def_irq_handler DMA2_Stream6_IRQHandler // DMA2 Stream 6
def_irq_handler DMA2_Stream7_IRQHandler // DMA2 Stream 7
def_irq_handler USART6_IRQHandler // USART6
def_irq_handler I2C3_EV_IRQHandler // I2C3 event
def_irq_handler I2C3_ER_IRQHandler // I2C3 error
def_irq_handler OTG_HS_EP1_OUT_IRQHandler // USB OTG HS End Point 1 Out
def_irq_handler OTG_HS_EP1_IN_IRQHandler // USB OTG HS End Point 1 In
def_irq_handler OTG_HS_WKUP_IRQHandler // USB OTG HS Wakeup through EXTI
def_irq_handler OTG_HS_IRQHandler // USB OTG HS
def_irq_handler DCMI_IRQHandler // DCMI
def_irq_handler CRYP_IRQHandler // CRYP crypto
def_irq_handler HASH_RNG_IRQHandler // Hash and Rng
def_irq_handler FPU_IRQHandler // FPU
.end

View File

@ -96,11 +96,11 @@ unsigned long TimerGet(void)
** \return none.
**
****************************************************************************************/
void TimerISRHandler(void)
void SysTick_Handler(void)
{
/* increment the millisecond counter */
millisecond_counter++;
} /*** end of TimerISRHandler ***/
} /*** end of SysTick_Handler ***/
/*********************************** end of timer.c ************************************/

View File

@ -35,7 +35,6 @@ void TimerInit(void);
void TimerDeinit(void);
void TimerSet(unsigned long timer_value);
unsigned long TimerGet(void);
void TimerISRHandler(void);
#endif /* TIMER_H */
/*********************************** end of timer.h ************************************/

View File

@ -1,178 +0,0 @@
/************************************************************************************//**
* \file Demo\ARMCM4_STM32F4_Olimex_STM32E407_GCC\Prog\vectors.c
* \brief Demo program interrupt vectors source file.
* \ingroup Prog_ARMCM4_STM32F4_Olimex_STM32E407_GCC
* \internal
*----------------------------------------------------------------------------------------
* C O P Y R I G H T
*----------------------------------------------------------------------------------------
* Copyright (c) 2013 by Feaser http://www.feaser.com All rights reserved
*
*----------------------------------------------------------------------------------------
* L I C E N S E
*----------------------------------------------------------------------------------------
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You 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.
*
* \endinternal
****************************************************************************************/
/****************************************************************************************
* Include files
****************************************************************************************/
#include "header.h" /* generic header */
/****************************************************************************************
* External functions
****************************************************************************************/
extern void reset_handler(void); /* implemented in cstart.c */
/****************************************************************************************
* External data declarations
****************************************************************************************/
/** \brief Stack end address (memory.x) */
extern unsigned long _estack;
/************************************************************************************//**
** \brief Catch-all for unused interrrupt service routines.
** \return none.
**
****************************************************************************************/
void UnusedISR(void)
{
/* unexpected interrupt occured, so halt the system */
while (1) { ; }
} /*** end of UnusedISR ***/
/****************************************************************************************
* I N T E R R U P T V E C T O R T A B L E
****************************************************************************************/
/** \brief Structure type for vector table entries. */
typedef union
{
void (*func)(void); /**< for ISR function pointers */
unsigned long ptr; /**< for stack pointer entry */
}tIsrFunc;
/** \brief Interrupt vector table. */
__attribute__ ((section(".isr_vector")))
const tIsrFunc _vectab[] =
{
{ .ptr = (unsigned long)&_estack }, /* the initial stack pointer */
{ reset_handler }, /* the reset handler */
{ UnusedISR }, /* NMI Handler */
{ UnusedISR }, /* Hard Fault Handler */
{ UnusedISR }, /* MPU Fault Handler */
{ UnusedISR }, /* Bus Fault Handler */
{ UnusedISR }, /* Usage Fault Handler */
{ UnusedISR }, /* Reserved */
{ UnusedISR }, /* Reserved */
{ UnusedISR }, /* Reserved */
{ UnusedISR }, /* Reserved */
{ UnusedISR }, /* SVCall Handler */
{ UnusedISR }, /* Debug Monitor Handler */
{ UnusedISR }, /* Reserved */
{ UnusedISR }, /* PendSV Handler */
{ TimerISRHandler }, /* SysTick Handler */
{ UnusedISR }, /* Window Watchdog */
{ UnusedISR }, /* PVD through EXTI Line detect */
{ UnusedISR }, /* Tamper */
{ UnusedISR }, /* RTC */
{ UnusedISR }, /* Flash */
{ UnusedISR }, /* RCC */
{ UnusedISR }, /* EXTI Line 0 */
{ UnusedISR }, /* EXTI Line 1 */
{ UnusedISR }, /* EXTI Line 2 */
{ UnusedISR }, /* EXTI Line 3 */
{ UnusedISR }, /* EXTI Line 4 */
{ UnusedISR }, /* DMA1 Channel 0 */
{ UnusedISR }, /* DMA1 Channel 1 */
{ UnusedISR }, /* DMA1 Channel 2 */
{ UnusedISR }, /* DMA1 Channel 3 */
{ UnusedISR }, /* DMA1 Channel 4 */
{ UnusedISR }, /* DMA1 Channel 5 */
{ UnusedISR }, /* DMA1 Channel 6 */
{ UnusedISR }, /* ADC1 and ADC2, ADC3s */
{ UnusedISR }, /* CAN1 TX */
{ UnusedISR }, /* CAN1 RX0 */
{ UnusedISR }, /* CAN1 RX1 */
{ UnusedISR }, /* CAN1 SCE */
{ UnusedISR }, /* EXTI Line 9..5 */
{ UnusedISR }, /* TIM1 Break and TIM9 */
{ UnusedISR }, /* TIM1 Update and TIM10 */
{ UnusedISR }, /* TIM1 Trigger/Comm. and TIM11 */
{ UnusedISR }, /* TIM1 Capture Compare */
{ UnusedISR }, /* TIM2 */
{ UnusedISR }, /* TIM3 */
{ UnusedISR }, /* TIM4 */
{ UnusedISR }, /* I2C1 Event */
{ UnusedISR }, /* I2C1 Error */
{ UnusedISR }, /* I2C2 Event */
{ UnusedISR }, /* I2C1 Error */
{ UnusedISR }, /* SPI1 */
{ UnusedISR }, /* SPI2 */
{ UnusedISR }, /* USART1 */
{ UnusedISR }, /* USART2 */
{ UnusedISR }, /* USART3 */
{ UnusedISR }, /* EXTI Line 15..10 */
{ UnusedISR }, /* RTC alarm through EXTI line */
{ UnusedISR }, /* USB OTG FS Wakeup */
{ UnusedISR }, /* TIM8 Break and TIM12 */
{ UnusedISR }, /* TIM8 Update and TIM13 */
{ UnusedISR }, /* TIM8 Trigger/Comm. and TIM14 */
{ UnusedISR }, /* TIM8 Capture Compare */
{ UnusedISR }, /* DMA1 Stream7 */
{ UnusedISR }, /* FSMC */
{ UnusedISR }, /* SDIO */
{ UnusedISR }, /* TIM5 */
{ UnusedISR }, /* SPI3 */
{ UnusedISR }, /* UART4 */
{ UnusedISR }, /* UART5 */
{ UnusedISR }, /* TIM6 and DAC1&2 underrun err. */
{ UnusedISR }, /* TIM7 */
{ UnusedISR }, /* DMA2 Stream 0 */
{ UnusedISR }, /* DMA2 Stream 1 */
{ UnusedISR }, /* DMA2 Stream 2 */
{ UnusedISR }, /* DMA2 Stream 3 */
{ UnusedISR }, /* DMA2 Stream 4 */
{ UnusedISR }, /* Ethernet */
{ UnusedISR }, /* Ethernet Wakeup */
{ UnusedISR }, /* CAN2 TX */
{ UnusedISR }, /* CAN2 RX0 */
{ UnusedISR }, /* CAN2 RX1 */
{ UnusedISR }, /* CAN2 SCE */
{ UnusedISR }, /* USB OTG FS */
{ UnusedISR }, /* DMA2 Stream 5 */
{ UnusedISR }, /* DMA2 Stream 6 */
{ UnusedISR }, /* DMA2 Stream 7 */
{ UnusedISR }, /* USART6 */
{ UnusedISR }, /* I2C3 event */
{ UnusedISR }, /* I2C3 error */
{ UnusedISR }, /* USB OTG HS End Point 1 Out */
{ UnusedISR }, /* USB OTG HS End Point 1 In */
{ UnusedISR }, /* USB OTG HS Wakeup through EXTI*/
{ UnusedISR }, /* USB OTG HS */
{ UnusedISR }, /* DCMI */
{ UnusedISR }, /* CRYP crypto */
{ UnusedISR }, /* Hash and Rng */
{ UnusedISR }, /* FPU */
{ (void*)0x55AA11EE }, /* Reserved for OpenBLT checksum */
};
/************************************ end of vectors.c *********************************/

View File

@ -1,89 +0,0 @@
/************************************************************************************//**
* \file Source\ARMCM4_STM32F4\GCC\cstart.c
* \brief Bootloader C startup source file.
* \ingroup Target_ARMCM4_STM32F4
* \internal
*----------------------------------------------------------------------------------------
* C O P Y R I G H T
*----------------------------------------------------------------------------------------
* Copyright (c) 2013 by Feaser http://www.feaser.com All rights reserved
*
*----------------------------------------------------------------------------------------
* L I C E N S E
*----------------------------------------------------------------------------------------
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You 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.
*
* \endinternal
****************************************************************************************/
/****************************************************************************************
* Include files
****************************************************************************************/
#include "boot.h" /* bootloader generic header */
/****************************************************************************************
* External function protoypes
****************************************************************************************/
extern int main(void);
/****************************************************************************************
* External data declarations
****************************************************************************************/
/* these externals are declared by the linker */
extern blt_int32u _etext;
extern blt_int32u _data;
extern blt_int32u _edata;
extern blt_int32u _bss;
extern blt_int32u _ebss;
extern blt_int32u _estack;
/************************************************************************************//**
** \brief Reset interrupt service routine. Configures the stack, initializes
** RAM and jumps to function main.
** \return none.
**
****************************************************************************************/
void reset_handler(void)
{
blt_int32u *pSrc, *pDest;
/* initialize stack pointer */
__asm(" ldr r1, =_estack\n"
" mov sp, r1");
/* copy the data segment initializers from flash to SRAM */
pSrc = &_etext;
for (pDest = &_data; pDest < &_edata;)
{
*pDest++ = *pSrc++;
}
/* zero fill the bss segment. this is done with inline assembly since this will
* clear the value of pDest if it is not kept in a register.
*/
__asm(" ldr r0, =_bss\n"
" ldr r1, =_ebss\n"
" mov r2, #0\n"
" .thumb_func\n"
"zero_loop:\n"
" cmp r0, r1\n"
" it lt\n"
" strlt r2, [r0], #4\n"
" blt zero_loop");
/* start the software application by calling its entry point */
main();
} /*** end of reset_handler ***/
/************************************ end of cstart.c **********************************/

View File

@ -1,38 +0,0 @@
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 48K
SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 24K
}
SECTIONS
{
__STACKSIZE__ = 2048;
.text :
{
KEEP(*(.isr_vector))
*(.text*)
*(.rodata*)
_etext = .;
} > FLASH
.data : AT (ADDR(.text) + SIZEOF(.text))
{
_data = .;
*(vtable)
*(.data*)
_edata = .;
} > SRAM
.bss :
{
_bss = .;
*(.bss*)
*(COMMON)
_ebss = .;
_stack = .;
. = ALIGN(MAX(_stack + __STACKSIZE__ , .), 4);
_estack = .;
} > SRAM
}

View File

@ -1,171 +0,0 @@
/************************************************************************************//**
* \file Source\ARMCM4_STM32F4\GCC\vectors.c
* \brief Bootloader interrupt vector table source file.
* \ingroup Target_ARMCM4_STM32F4
* \internal
*----------------------------------------------------------------------------------------
* C O P Y R I G H T
*----------------------------------------------------------------------------------------
* Copyright (c) 2013 by Feaser http://www.feaser.com All rights reserved
*
*----------------------------------------------------------------------------------------
* L I C E N S E
*----------------------------------------------------------------------------------------
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You 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.
*
* \endinternal
****************************************************************************************/
/****************************************************************************************
* Include files
****************************************************************************************/
#include "boot.h" /* bootloader generic header */
/****************************************************************************************
* External data declarations
****************************************************************************************/
extern blt_int32u _estack; /* stack end address (memory.x) */
/************************************************************************************//**
** \brief Catch-all for unused interrrupt service routines.
** \return none.
**
****************************************************************************************/
void UnusedISR(void)
{
/* unexpected interrupt occured, so trigger an assertion to halt the system */
ASSERT_RT(BLT_FALSE);
} /*** end of UnusedISR ***/
/****************************************************************************************
* I N T E R R U P T V E C T O R T A B L E
****************************************************************************************/
extern void reset_handler(void); /* implemented in cstart.c */
/** \brief Structure type for vector table entries. */
typedef union
{
void (*func)(void); /**< for ISR function pointers */
blt_int32u ptr; /**< for stack pointer entry */
} tIsrFunc;
/** \brief Interrupt vector table. */
__attribute__((section(".isr_vector")))
const tIsrFunc _vectab[] =
{
{ .ptr = (blt_int32u) &_estack }, /* the initial stack pointer */
{ reset_handler }, /* the reset handler */
{ UnusedISR }, /* NMI Handler */
{ UnusedISR }, /* Hard Fault Handler */
{ UnusedISR }, /* MPU Fault Handler */
{ UnusedISR }, /* Bus Fault Handler */
{ UnusedISR }, /* Usage Fault Handler */
{ UnusedISR }, /* Reserved */
{ UnusedISR }, /* Reserved */
{ UnusedISR }, /* Reserved */
{ UnusedISR }, /* Reserved */
{ UnusedISR }, /* SVCall Handler */
{ UnusedISR }, /* Debug Monitor Handler */
{ UnusedISR }, /* Reserved */
{ UnusedISR }, /* PendSV Handler */
{ UnusedISR }, /* SysTick Handler */
{ UnusedISR }, /* Window Watchdog */
{ UnusedISR }, /* PVD through EXTI Line detect */
{ UnusedISR }, /* Tamper */
{ UnusedISR }, /* RTC */
{ UnusedISR }, /* Flash */
{ UnusedISR }, /* RCC */
{ UnusedISR }, /* EXTI Line 0 */
{ UnusedISR }, /* EXTI Line 1 */
{ UnusedISR }, /* EXTI Line 2 */
{ UnusedISR }, /* EXTI Line 3 */
{ UnusedISR }, /* EXTI Line 4 */
{ UnusedISR }, /* DMA1 Channel 0 */
{ UnusedISR }, /* DMA1 Channel 1 */
{ UnusedISR }, /* DMA1 Channel 2 */
{ UnusedISR }, /* DMA1 Channel 3 */
{ UnusedISR }, /* DMA1 Channel 4 */
{ UnusedISR }, /* DMA1 Channel 5 */
{ UnusedISR }, /* DMA1 Channel 6 */
{ UnusedISR }, /* ADC1 and ADC2, ADC3s */
{ UnusedISR }, /* CAN1 TX */
{ UnusedISR }, /* CAN1 RX0 */
{ UnusedISR }, /* CAN1 RX1 */
{ UnusedISR }, /* CAN1 SCE */
{ UnusedISR }, /* EXTI Line 9..5 */
{ UnusedISR }, /* TIM1 Break and TIM9 */
{ UnusedISR }, /* TIM1 Update and TIM10 */
{ UnusedISR }, /* TIM1 Trigger/Comm. and TIM11 */
{ UnusedISR }, /* TIM1 Capture Compare */
{ UnusedISR }, /* TIM2 */
{ UnusedISR }, /* TIM3 */
{ UnusedISR }, /* TIM4 */
{ UnusedISR }, /* I2C1 Event */
{ UnusedISR }, /* I2C1 Error */
{ UnusedISR }, /* I2C2 Event */
{ UnusedISR }, /* I2C1 Error */
{ UnusedISR }, /* SPI1 */
{ UnusedISR }, /* SPI2 */
{ UnusedISR }, /* USART1 */
{ UnusedISR }, /* USART2 */
{ UnusedISR }, /* USART3 */
{ UnusedISR }, /* EXTI Line 15..10 */
{ UnusedISR }, /* RTC alarm through EXTI line */
{ UnusedISR }, /* USB OTG FS Wakeup */
{ UnusedISR }, /* TIM8 Break and TIM12 */
{ UnusedISR }, /* TIM8 Update and TIM13 */
{ UnusedISR }, /* TIM8 Trigger/Comm. and TIM14 */
{ UnusedISR }, /* TIM8 Capture Compare */
{ UnusedISR }, /* DMA1 Stream7 */
{ UnusedISR }, /* FSMC */
{ UnusedISR }, /* SDIO */
{ UnusedISR }, /* TIM5 */
{ UnusedISR }, /* SPI3 */
{ UnusedISR }, /* UART4 */
{ UnusedISR }, /* UART5 */
{ UnusedISR }, /* TIM6 and DAC1&2 underrun err. */
{ UnusedISR }, /* TIM7 */
{ UnusedISR }, /* DMA2 Stream 0 */
{ UnusedISR }, /* DMA2 Stream 1 */
{ UnusedISR }, /* DMA2 Stream 2 */
{ UnusedISR }, /* DMA2 Stream 3 */
{ UnusedISR }, /* DMA2 Stream 4 */
{ UnusedISR }, /* Ethernet */
{ UnusedISR }, /* Ethernet Wakeup */
{ UnusedISR }, /* CAN2 TX */
{ UnusedISR }, /* CAN2 RX0 */
{ UnusedISR }, /* CAN2 RX1 */
{ UnusedISR }, /* CAN2 SCE */
{ UnusedISR }, /* USB OTG FS */
{ UnusedISR }, /* DMA2 Stream 5 */
{ UnusedISR }, /* DMA2 Stream 6 */
{ UnusedISR }, /* DMA2 Stream 7 */
{ UnusedISR }, /* USART6 */
{ UnusedISR }, /* I2C3 event */
{ UnusedISR }, /* I2C3 error */
{ UnusedISR }, /* USB OTG HS End Point 1 Out */
{ UnusedISR }, /* USB OTG HS End Point 1 In */
{ UnusedISR }, /* USB OTG HS Wakeup through EXTI*/
{ UnusedISR }, /* USB OTG HS */
{ UnusedISR }, /* DCMI */
{ UnusedISR }, /* CRYP crypto */
{ UnusedISR }, /* Hash and Rng */
{ UnusedISR } /* FPU */
};
/************************************ end of vectors.c *********************************/