Skip to content

Commit

Permalink
Merge branch 'release/v1.1.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
PIO Plus committed Nov 14, 2018
2 parents 4817a5b + 9ace6ca commit cf6e720
Show file tree
Hide file tree
Showing 117 changed files with 9,966 additions and 925 deletions.
49 changes: 22 additions & 27 deletions builder/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,19 @@

ARFLAGS=["rc"],

ASFLAGS=[],
SIZEPROGREGEXP=r"^(?:\.text|\.data|\.rodata|\.text.align|\.ARM.exidx)\s+(\d+).*",
SIZEDATAREGEXP=r"^(?:\.data|\.bss|\.noinit)\s+(\d+).*",
SIZECHECKCMD="$SIZETOOL -A -d $SOURCES",
SIZEPRINTCMD='$SIZETOOL -B -d $SOURCES',

PROGSUFFIX=".elf"
)

# Allow user to override via pre:script
if env.get("PROGNAME", "program") == "program":
env.Replace(PROGNAME="firmware")

env.Append(
CCFLAGS=[
"-O0",
"-ffunction-sections", # place each function in its own section
Expand Down Expand Up @@ -65,32 +76,6 @@

LIBS=["c", "gcc", "m", "stdc++", "nosys"],

SIZEPROGREGEXP=r"^(?:\.text|\.data|\.rodata|\.text.align|\.ARM.exidx)\s+(\d+).*",
SIZEDATAREGEXP=r"^(?:\.data|\.bss|\.noinit)\s+(\d+).*",
SIZECHECKCMD="$SIZETOOL -A -d $SOURCES",
SIZEPRINTCMD='$SIZETOOL -B -d $SOURCES',

PROGSUFFIX=".elf"
)

# Allow user to override via pre:script
if env.get("PROGNAME", "program") == "program":
env.Replace(PROGNAME="firmware")


if "BOARD" in env:
env.Append(
CCFLAGS=[
"-mcpu=%s" % env.BoardConfig().get("build.cpu")
],
LINKFLAGS=[
"-mcpu=%s" % env.BoardConfig().get("build.cpu")
]
)

env.Append(
# ASFLAGS=env.get("CCFLAGS", [])[:],

BUILDERS=dict(
ElfToBin=Builder(
action=env.VerboseAction(" ".join([
Expand All @@ -117,6 +102,16 @@
)
)

if "BOARD" in env:
env.Append(
CCFLAGS=[
"-mcpu=%s" % env.BoardConfig().get("build.cpu")
],
LINKFLAGS=[
"-mcpu=%s" % env.BoardConfig().get("build.cpu")
]
)

#
# Target: Build executable and linkable firmware
#
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,30 @@ limitations under the License.
#ifndef _USER_API_H
#define _USER_API_H

// Some common constants used in the user algorithm logic
#define ZERO_HZ 0
#define ONE_HZ 1
#define TWO_HZ 2
#define FOUR_HZ 4
#define FIVE_HZ 5
#define TEN_HZ 10
#define TWENTY_HZ 20
#define TWENTY_FIVE_HZ 25
#define FIFTY_HZ 50

#define NUM_AXIS 3

#include <stdint.h>
#include "gpsAPI.h"

void inertialAndPositionDataProcessing(int dacqRate);
void inertialAndPositionDataProcessing(uint16_t dacqRate);

void *RunUserNavAlgorithm(double *accels, double *rates, double* mags, gpsDataStruct_t *gps, int dacqRate);
void *RunUserNavAlgorithm(double *accels, double *rates, double* mags, gpsDataStruct_t *gps, uint16_t dacqRate);
void WriteResultsIntoOutputStream(void *results) ;
void InitUserDataStructures();
void InitUserFilters();
void InitUserAlgorithm();
void initUserDataProcessingEngine();
void userInitConfigureUnit();


#endif
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
#define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES (7)
#define configMINIMAL_STACK_SIZE ((uint16_t)2048)
#define configTOTAL_HEAP_SIZE ((size_t)(30 * 2048))
#define configTOTAL_HEAP_SIZE ((size_t)(38000))
#define configMAX_TASK_NAME_LEN (30)
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0
Expand All @@ -109,6 +109,7 @@
#define configUSE_APPLICATION_TASK_TAG 0
#define configUSE_COUNTING_SEMAPHORES 1
#define configGENERATE_RUN_TIME_STATS 0
#define configAPPLICATION_ALLOCATED_HEAP 0

/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,7 @@ limitations under the License.

#ifndef _TASK_DATA_ACQUISITION_H_
#define _TASK_DATA_ACQUISITION_H_
// Specify the limit used in the int16-limiter
#define INT16_LIMIT 32765
#define INT12_LIMIT 2045

#include "stdint.h"
#include "GlobalConstants.h"
extern void TaskDataAcquisition(void const *argument);
Expand All @@ -40,8 +38,4 @@ extern void EnterMainAlgLoop(void);
extern void DataAquisitionStart(void);
extern BOOL isOneHundredHertzFlag(void);

int16_t LimitInt16Value( int16_t value, int16_t limit );
extern uint32_t dacqTimer;


#endif
#endif
202 changes: 202 additions & 0 deletions examples/Compass/ldscripts/stm32f40x.ld
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
/*
*****************************************************************************
**

** File : LinkerScript.ld
**
** Abstract : Linker script for STM32F405RGx Device with
** 1024KByte FLASH, 128KByte RAM
**
** Set heap size, stack size and stack location according
** to application requirements.
**
** Set memory bank area and size if external memory is used.
**
** Target : STMicroelectronics STM32
**
**
** Distribution: The file is distributed as is, without any warranty
** of any kind.
**
*****************************************************************************
** @attention
**
** <h2><center>&copy; COPYRIGHT(c) 2014 Ac6</center></h2>
**
** Redistribution and use in source and binary forms, with or without modification,
** are permitted provided that the following conditions are met:
** 1. Redistributions of source code must retain the above copyright notice,
** this list of conditions and the following disclaimer.
** 2. 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.
** 3. Neither the name of Ac6 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS 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.
**
*****************************************************************************
*/

/* Entry Point */
ENTRY(Reset_Handler)

/* Highest address of the user mode stack */
_estack = 0x2001ff00; /* end of RAM */
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0x2000; /* required amount of heap */
_Min_Stack_Size = 0x2000; /* required amount of stack */

/* Specify the memory areas */
MEMORY
{
FLASH (rx) : ORIGIN = 0x08010000, LENGTH = 448K
EEPROM (rw) : ORIGIN = 0x08008000, LENGTH = 16K
USER_EEPROM(rw) : ORIGIN = 0x0800C000, LENGTH = 16K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
}

/* Define output sections */
SECTIONS
{
/* The startup code goes first into FLASH */
.isr_vector :
{
. = ALIGN(4);
KEEP(*(.isr_vector)) /* Startup code */
. = ALIGN(4);
} >FLASH

/* The program code and other data goes into FLASH */
.text :
{
. = ALIGN(4);
*(.text) /* .text sections (code) */
*(.text*) /* .text* sections (code) */
*(.glue_7) /* glue arm to thumb code */
*(.glue_7t) /* glue thumb to arm code */
*(.eh_frame)

KEEP (*(.init))
KEEP (*(.fini))

. = ALIGN(4);
_etext = .; /* define a global symbols at end of code */
} >FLASH

/* Constant data goes into FLASH */
.rodata :
{
. = ALIGN(4);
*(.rodata) /* .rodata sections (constants, strings, etc.) */
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
. = ALIGN(4);
} >FLASH

.ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
.ARM : {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH

.preinit_array :
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
.init_array :
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
.fini_array :
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
KEEP (*(.fini_array*))
PROVIDE_HIDDEN (__fini_array_end = .);
} >FLASH

/* used by the startup to initialize data */
_sidata = LOADADDR(.data);

/* Initialized data sections goes into RAM, load LMA copy after code */
.data :
{
. = ALIGN(4);
_sdata = .; /* create a global symbol at data start */
*(.data) /* .data sections */
*(.data*) /* .data* sections */

. = ALIGN(4);
_edata = .; /* define a global symbol at data end */
} >RAM AT> FLASH


/* Uninitialized data section */
. = ALIGN(4);
.bss :
{
/* This is used by the startup in order to initialize the .bss secion */
_sbss = .; /* define a global symbol at bss start */
__bss_start__ = _sbss;
*(.bss)
*(.bss*)
*(COMMON)

. = ALIGN(4);
_ebss = .; /* define a global symbol at bss end */
__bss_end__ = _ebss;
} >RAM

/* User_heap_stack section, used to check that there is enough RAM left */
._user_heap_stack :
{
. = ALIGN(8);
PROVIDE ( end = . );
PROVIDE ( _end = . );
. = . + _Min_Heap_Size;
. = . + _Min_Stack_Size;
. = ALIGN(8);
} >RAM

.eeprom 0x08008000:
{
. = ALIGN(4);
KEEP(*(.xbowEeprom)) /* keep my variable even if not referenced */
. = ALIGN(4);
_eeeprom = .; /* define a global symbols at end of code */
} >EEPROM

.usereeprom 0x0800C000:
{
. = ALIGN(4);
KEEP(*(.userEeprom)) /* keep my variable even if not referenced */
. = ALIGN(4);
_eusereeprom = .; /* define a global symbols at end of code */
} >USER_EEPROM

/* Remove information from the standard libraries */
/DISCARD/ :
{
libc.a ( * )
libm.a ( * )
libgcc.a ( * )
}

.ARM.attributes 0 : { *(.ARM.attributes) }
}
Loading

0 comments on commit cf6e720

Please sign in to comment.