Skip to content

[Silicon Labs] Add support for the new EFM32 Pearl Gecko #1501

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 111 commits into from
Jan 15, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
e5e896b
SiLabs Pearl: Initial commit
mpolojar Oct 8, 2015
9234010
SiLabs: Update emlib to 4.1.0
mpolojar Oct 13, 2015
485a08d
SiLabs: Emlib 4.1.0 headers update for Giant Gecko
mpolojar Oct 23, 2015
567afac
SiLabs: Emlib 4.1.0 headers update for Happy Gecko
mpolojar Oct 26, 2015
19a0607
SiLabs: Emlib 4.1.0 headers update for Leopard Gecko
mpolojar Oct 26, 2015
0c066f5
SiLabs: Emlib 4.1.0 headers update for Wonder Gecko
mpolojar Oct 26, 2015
199f5fa
SiLabs: Emlib 4.1.0 headers update for Zero Gecko
mpolojar Oct 26, 2015
15ed788
SiLabs Pearl: Pin mappings for PWM
mpolojar Oct 9, 2015
e2c33dd
SiLabs Pearl: GPIO HAL fixes
mpolojar Oct 9, 2015
bf4cf1a
SiLabs Pearl: RTCC support
mpolojar Oct 12, 2015
dcc6b61
SiLabs Pearl: lp_ticker HAL adaptation
mpolojar Oct 12, 2015
6e7589c
SiLabs Pearl: Remove configuration for HW not present in Pearl
mpolojar Oct 13, 2015
c89d5ca
SiLabs Pearl: Update pinmap for ADC and DAC
Oct 14, 2015
2cb2ada
SiLabs Pearl: Mbed support for linker script
mpolojar Oct 14, 2015
4990751
SiLabs Pearl: Correct STDIO_UART definition
mpolojar Oct 14, 2015
21a2420
SiLabs Pearl: Fix I2C pin routing
mpolojar Oct 14, 2015
c4018e4
SiLabs Pearl: Correct includes and interrupt names in RTC
mpolojar Oct 14, 2015
bafd8e2
SiLabs Pearl: LDMA initialization
mpolojar Oct 14, 2015
d238a83
SiLabs Pearl: AnalogIn support
Oct 15, 2015
e3e385e
SiLabs Pearl: Serial HAL USART/LEUART pin routing
mpolojar Oct 15, 2015
7be6799
SiLabs Pearl: LDMA support for serial_api
mpolojar Oct 15, 2015
973141e
SiLabs Pearl: ADC fixes
Oct 16, 2015
fc49b0e
SiLabs Pearl: PWM output functionality
Oct 20, 2015
6095a67
SiLabs Pearl: LDMA fixes for serial
mpolojar Oct 20, 2015
97a1674
SiLabs Pearl: I2C GPIO fix
Oct 22, 2015
745d72a
SiLabs Pearl: SPI pinmappings
Oct 23, 2015
7f051e9
SiLabs Pearl: SPI LDMA support
Oct 26, 2015
a310712
SiLabs: Fix interrupt amount configurations
mpolojar Oct 27, 2015
22879f9
SiLabs Pearl: lpticker wakeup
Nov 4, 2015
ab26722
SiLabs: Low power timer / RTC initialization fix
Nov 5, 2015
f6a66ff
SiLabs: Correct low power timer setup
Nov 9, 2015
97e5eab
SiLabs: Multiple fixes for serial_api
mpolojar Nov 11, 2015
e30c1e1
SiLabs: Compilation fix for incorrect LFE clock flagging
mpolojar Nov 11, 2015
0e75dd3
SiLabs: Fix infinite interrupt loop when using LEUART with DMA
mpolojar Nov 13, 2015
87aee51
Silabs Pearl: Added a part number
Nov 13, 2015
763ce3d
SiLabs Pearl: Free(er), dynamic allocation of UARTs
mpolojar Nov 16, 2015
09c94d3
SiLabs: Fix incorrect TX active conditional in serial_api
mpolojar Nov 16, 2015
9149e88
SiLabs Pearl: Serial support for LEUART-USART switch
mpolojar Nov 17, 2015
20a5bc2
SiLabs: Fix compiler warnings and other cleanup
mpolojar Nov 19, 2015
6067de0
SiLabs Pearl: Rename files and dirs to correct STK code
mpolojar Nov 20, 2015
73db782
SiLabs: spi implementation
Nov 19, 2015
f6b0c37
SiLabs Pearl: Support for ARM compiler toolchain
mpolojar Nov 20, 2015
838b0a6
SiLabs Pearl: Allow serial transmitter disable on Pearl
mpolojar Nov 23, 2015
3e59343
SiLabs Pearl: SPI support for 9-16 bit long frames
Nov 24, 2015
15b4341
SiLabs Pearl: SPI fixes for 9-16 bit long frames
Nov 26, 2015
e865f1f
SiLabs Pearl: Keep UART enabled during single byte transfers
mpolojar Nov 26, 2015
6bb9876
SiLabs: Update emlib to 4.2.0
mpolojar Nov 26, 2015
0dfca1a
SiLabs Pearl: More SPI fixes for 9-16 bit frames
Dec 1, 2015
2160134
Silabs: SPI DMA fix
Dec 1, 2015
ee329e5
Silabs Pearl: SPI LDMA descriptor fix
Dec 2, 2015
c1e5c0b
SiLabs: GPIO interrupts disabled/enabled incorrectly
mpolojar Dec 2, 2015
316e873
SiLabs Pearl: I2C: Do not try to force specific locations of pins
mpolojar Dec 3, 2015
81a9dd9
SiLabs: I2C: Always set master mode on initialization
mpolojar Dec 3, 2015
3fc6619
SiLabs Pearl: SPI fixes
Dec 4, 2015
8637649
SiLabs: port_api: Allow individual values on output pins and fix init
mpolojar Dec 4, 2015
b8ab9fb
SiLabs Pearl: Use any free UART for stdio
mpolojar Dec 7, 2015
a7ef4ca
SiLabs: serial_api: Fix LEUART interrupt dispatch
mpolojar Dec 8, 2015
a9f0fdb
SiLabs Pearl: SPI
Dec 9, 2015
e48994e
Silabs: SPI
Dec 10, 2015
3b3e52f
SiLabs: serial_api: Fixes for sleep, transmitter disable and uart switch
mpolojar Dec 10, 2015
83401e5
SiLabs Pearl: Correct HFXO frequency
mpolojar Dec 10, 2015
2961d4c
SiLabs: analogout_api:
Dec 11, 2015
96ff204
SiLabs Pearl: Minimize line glitches when doing LEUART-USART switch
mpolojar Dec 14, 2015
ff494c4
SiLabs: serial_api: Unblock sleep correctly on TX side
mpolojar Dec 15, 2015
1c47e97
SiLabs Zero: Fix clocking when using LEUART for USB board controller
mpolojar Dec 15, 2015
a6e137f
SiLabs: serial_api: Keep track of sleep mode changes
mpolojar Dec 16, 2015
6c3418a
SiLabs: serial_api: Fix memory underflow read in DMA handling
mpolojar Dec 16, 2015
cd08228
SiLabs: serial_api: Add missing object to sleep fix
mpolojar Dec 16, 2015
73cf963
SiLabs: serial_api: Allow LEUART IRQ to fire both handlers
mpolojar Dec 16, 2015
efadf47
SiLabs Pearl: Support for clocking via RC oscillators
mpolojar Dec 22, 2015
8634cf5
EFM32 Pearl Gecko IAR support.
asmellby Dec 23, 2015
e44059a
Add EFM32 Pearl Gecko exporters.
asmellby Dec 23, 2015
d260967
EFM32: Fix HFRCO support for P2 devices.
asmellby Jan 4, 2016
9dff016
EFM32 Pearl Gecko test pins.
asmellby Jan 4, 2016
c0ec7ad
EFM32 Pearl Gecko SPI: Remove dynamic resource allocation.
asmellby Jan 4, 2016
f05fd7f
EFM32 Pearl Gecko Serial: Remove dynamic peripheral allocation.
asmellby Jan 4, 2016
05ce194
Move to CMSIS defines to check for presence of certain LF clock trees
stevew817 Jan 5, 2016
653e91d
Get rid of the check_usart_clock function which is unused and unneces…
stevew817 Jan 5, 2016
8bec4e2
PWM refactoring to be less confusing with all the #ifdef for routes
stevew817 Jan 5, 2016
3f61aaf
removed a line of code duplication
stevew817 Jan 5, 2016
d7a4ebb
Removed useless #error in analogin
stevew817 Jan 5, 2016
f4133b8
Update modules.h to reflect the actual configuration of Pearl Gecko.
stevew817 Jan 5, 2016
1631aac
Remove unnecessary checking of bit before setting GPIO
stevew817 Jan 5, 2016
8fac7bb
Pinmap update for Pearl:
stevew817 Jan 5, 2016
dc2e631
lp_ticker code condensation
stevew817 Jan 5, 2016
b4c1718
Silence GCC
stevew817 Jan 5, 2016
a59c73c
Fixes to analogOut:
stevew817 Jan 5, 2016
f20e960
Update serial_api to not rely on the maximum number of serial periphe…
stevew817 Jan 6, 2016
b233828
Cleanup in AnalogIn: remove functions that are unnecessary and no lon…
stevew817 Jan 6, 2016
db45cd4
analogout_api: clean up functions that are no longer part of the API.
stevew817 Jan 6, 2016
8563fe8
Sync port_api.c with port_api.h
stevew817 Jan 7, 2016
0847fd5
Fixes to Pearl pinmap:
stevew817 Jan 8, 2016
f5d4411
Reduce I2C object footprint
stevew817 Jan 8, 2016
919cf3d
Light documentation on the sleep API
stevew817 Jan 8, 2016
924d931
Cleanup and bugfixes of the PWM implementation.
stevew817 Jan 8, 2016
495f7a4
Removed unnecessary code in _putc.
stevew817 Jan 8, 2016
cfc1eea
No need to set up the interrupt handler every single time in lp_ticker.
stevew817 Jan 8, 2016
7df5e47
Fix version mismatch between included emlib and readme
stevew817 Jan 8, 2016
468ddc8
Fix error in comment
stevew817 Jan 8, 2016
48b20be
Demote LDMA interrupt priority. We assume that completion of a DMA tr…
stevew817 Jan 8, 2016
41e2d8b
Remove static define that would result in erroneous code when unset, …
stevew817 Jan 8, 2016
cb2a653
Typo in AnalogOut
stevew817 Jan 11, 2016
2ba71ea
SiLabs: Remove emlib LDMA modifications
mpolojar Jan 12, 2016
91ad34a
Update emlib to 4.2.1 to get a critical fix for DCDC on Pearl
stevew817 Jan 12, 2016
764d54f
Fix Pearl chip SKU and core ID in targets.
stevew817 Jan 12, 2016
a0ba4e6
Pull up EFM32 linker and startup files to latest SDK version.
stevew817 Jan 12, 2016
037dd8c
Add back the manual placement of the DMA section for GCC to optimize …
stevew817 Jan 12, 2016
b515def
Forgot to update STK number in one place.
stevew817 Jan 13, 2016
9d35328
Clean up failed merge
stevew817 Jan 13, 2016
6ab14fa
Fix wrong copy-paste in digitalInOut test
stevew817 Jan 14, 2016
3d8637c
Fixes to serial_api:
stevew817 Jan 14, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ LR_IROM1 0x00000000 0x00100000 { ; load region size_region
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x200000E0 0x0001FF20 { ; RW data
RW_IRAM1 0x200000DC 0x0001FF24 { ; RW data
.ANY (+RW +ZI)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
; * @file startup_efm32gg.s
; * @brief CMSIS Core Device Startup File for
; * Silicon Labs EFM32GG Device Series
; * @version 3.20.6
; * @version 4.2.1
; * @date 03. February 2012
; *
; * @note
Expand Down Expand Up @@ -262,10 +262,7 @@ MSC_IRQHandler
AES_IRQHandler
EBI_IRQHandler
EMU_IRQHandler


B .

ENDP

ALIGN
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ LR_IROM1 0x00000000 0x00100000 { ; load region size_region
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x200000E0 0x0001FF20 { ; RW data
RW_IRAM1 0x200000DC 0x0001FF24 { ; RW data
.ANY (+RW +ZI)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
; * @file startup_efm32gg.s
; * @brief CMSIS Core Device Startup File for
; * Silicon Labs EFM32GG Device Series
; * @version 3.20.6
; * @version 4.2.1
; * @date 03. February 2012
; *
; * @note
Expand Down Expand Up @@ -262,10 +262,7 @@ MSC_IRQHandler
AES_IRQHandler
EBI_IRQHandler
EMU_IRQHandler


B .

ENDP

ALIGN
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
/* CMSIS END USER LICENSE AGREEMENT.pdf, governing the use of */
/* Example Code. */
/* */
/* Silicon Laboratories, Inc. 2014 */
/* Silicon Laboratories, Inc. 2015 */
/* */
/* Version 4.2.0 */
/* */

MEMORY
{
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 1048576
Expand All @@ -13,16 +17,20 @@ MEMORY
/* MBED: mbed needs to be able to dynamically set the interrupt vector table.
* We make room for the table at the very beginning of RAM, i.e. at
* 0x20000000. We need (16+39) * sizeof(uint32_t) = 220 bytes for EFM32GG */
__vector_size = 0xE0;
__vector_size = 0xDC;

/* 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
* __copy_table_start__
* __copy_table_end__
* __zero_table_start__
* __zero_table_end__
* __etext
* __data_start__
* __preinit_array_start
Expand All @@ -40,14 +48,20 @@ __vector_size = 0xE0;
* __StackLimit
* __StackTop
* __stack
* __Vectors_End
* __Vectors_Size
*/
ENTRY(Reset_Handler)

SECTIONS
{
.text :
{
KEEP(*(.isr_vector))
KEEP(*(.vectors))
__Vectors_End = .;
__Vectors_Size = __Vectors_End - __Vectors;
__end__ = .;

*(.text*)

KEEP(*(.init))
Expand All @@ -72,7 +86,7 @@ SECTIONS
KEEP(*(.eh_frame*))
} > FLASH

.ARM.extab :
.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > FLASH
Expand All @@ -84,15 +98,49 @@ SECTIONS
} > FLASH
__exidx_end = .;

/* To copy multiple ROM to RAM sections,
* uncomment .copy.table section and,
* define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */
/*
.copy.table :
{
. = ALIGN(4);
__copy_table_start__ = .;
LONG (__etext)
LONG (__data_start__)
LONG (__data_end__ - __data_start__)
LONG (__etext2)
LONG (__data2_start__)
LONG (__data2_end__ - __data2_start__)
__copy_table_end__ = .;
} > FLASH
*/

/* To clear multiple BSS sections,
* uncomment .zero.table section and,
* define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */
/*
.zero.table :
{
. = ALIGN(4);
__zero_table_start__ = .;
LONG (__bss_start__)
LONG (__bss_end__ - __bss_start__)
LONG (__bss2_start__)
LONG (__bss2_end__ - __bss2_start__)
__zero_table_end__ = .;
} > FLASH
*/

__etext = .;

.data : AT (__etext)
{
__data_start__ = .;
*("dma")
PROVIDE( __start_vector_table__ = .);
. += __vector_size;
PROVIDE( __end_vector_table__ = .);
. += __vector_size;
PROVIDE( __end_vector_table__ = .);
*(vtable)
*(.data*)
. = ALIGN (4);
Expand All @@ -118,6 +166,7 @@ SECTIONS
KEEP(*(.fini_array))
PROVIDE_HIDDEN (__fini_array_end = .);

KEEP(*(.jcr*))
. = ALIGN(4);
/* All data end */
__data_end__ = .;
Expand All @@ -126,27 +175,30 @@ SECTIONS

.bss :
{
. = ALIGN(4);
__bss_start__ = .;
*(.bss*)
*(COMMON)
. = ALIGN(4);
__bss_end__ = .;
} > RAM

.heap :
.heap (COPY):
{
__HeapBase = .;
__end__ = .;
end = __end__;
_end = __end__;
*(.heap*)
KEEP(*(.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 :
.stack_dummy (COPY):
{
*(.stack)
KEEP(*(.stack*))
} > RAM

/* Set stack top to end of RAM, and stack limit move down by
Expand All @@ -157,4 +209,7 @@ SECTIONS

/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")

/* Check if FLASH usage exceeds FLASH size */
ASSERT( LENGTH(FLASH) >= (__etext + SIZEOF(.data)), "FLASH memory overflowed !")
}
Loading