mirror of https://github.com/FOME-Tech/openblt.git
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:
parent
a671200261
commit
5a6eba22d1
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -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")
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
@echo off
|
||||
cs-make --directory=../ all
|
|
@ -1,2 +0,0 @@
|
|||
@echo off
|
||||
cs-make --directory=../ clean
|
|
@ -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="<Use Defaults>" DbgSetName="<Use Defaults>"/>
|
||||
<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="<Use Defaults>" DbgSetName="<Use Defaults>"/>
|
||||
<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>
|
|
@ -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>
|
|
@ -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/.
|
|
@ -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);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
Binary file not shown.
|
@ -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
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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")
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
@echo off
|
||||
cs-make --directory=../ all
|
|
@ -1,2 +0,0 @@
|
|||
@echo off
|
||||
cs-make --directory=../ clean
|
|
@ -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 **********************************/
|
|
@ -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="<Use Defaults>" DbgSetName="<Use Defaults>"/>
|
||||
<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="<Use Defaults>" DbgSetName="<Use Defaults>"/>
|
||||
<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>
|
|
@ -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>
|
|
@ -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/.
|
|
@ -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);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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
|
|
@ -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 ************************************/
|
||||
|
|
|
@ -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 ************************************/
|
||||
|
|
|
@ -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 *********************************/
|
||||
|
||||
|
|
@ -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 **********************************/
|
|
@ -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
|
||||
}
|
|
@ -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 *********************************/
|
||||
|
||||
|
Loading…
Reference in New Issue