AUDIO loopback with DISCO_H747I
Dependencies: BSP_DISCO_H747I
Building
hg clone https://mbed.org/teams/ST/code/DISCO_H747I_AUDIO_demo
cd DISCO_H747I_AUDIO_demo
mbed deploy
mbed compile -m DISCO_H747I -t <GCC_ARM/ARM/IAR> -f
Running
A single printf is done at main start
Audio is recorded from board micro (U21) next to joystick.
Audio output is the jack connector (CN11) (green one).
Warning
Audio configuration is not compatible with Ethernet HW patch
https://os.mbed.com/teams/ST/wiki/DISCO_H747I-modifications-for-Ethernet
TOOLCHAIN_GCC_ARM/STM32H747xI.ld@0:78e37c7585e6, 2019-11-07 (annotated)
- Committer:
- Jerome Coutant
- Date:
- Thu Nov 07 11:33:58 2019 +0100
- Revision:
- 0:78e37c7585e6
First commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jerome Coutant
0:78e37c7585e6
|
1
|
/* Linker script to configure memory regions. */
|
|
Jerome Coutant
0:78e37c7585e6
|
2
|
/*******************************************************************************
|
|
Jerome Coutant
0:78e37c7585e6
|
3
|
* @attention
|
|
Jerome Coutant
0:78e37c7585e6
|
4
|
*
|
|
Jerome Coutant
0:78e37c7585e6
|
5
|
* Copyright (c) 2018-2019 STMicroelectronics.
|
|
Jerome Coutant
0:78e37c7585e6
|
6
|
* All rights reserved.
|
|
Jerome Coutant
0:78e37c7585e6
|
7
|
*
|
|
Jerome Coutant
0:78e37c7585e6
|
8
|
* This software component is licensed by ST under BSD 3-Clause license,
|
|
Jerome Coutant
0:78e37c7585e6
|
9
|
* the "License"; You may not use this file except in compliance with the
|
|
Jerome Coutant
0:78e37c7585e6
|
10
|
* License. You may obtain a copy of the License at:
|
|
Jerome Coutant
0:78e37c7585e6
|
11
|
* opensource.org/licenses/BSD-3-Clause
|
|
Jerome Coutant
0:78e37c7585e6
|
12
|
*
|
|
Jerome Coutant
0:78e37c7585e6
|
13
|
******************************************************************************
|
|
Jerome Coutant
0:78e37c7585e6
|
14
|
*/
|
|
Jerome Coutant
0:78e37c7585e6
|
15
|
|
|
Jerome Coutant
0:78e37c7585e6
|
16
|
#if !defined(MBED_APP_START)
|
|
Jerome Coutant
0:78e37c7585e6
|
17
|
#define MBED_APP_START 0x08000000
|
|
Jerome Coutant
0:78e37c7585e6
|
18
|
#endif
|
|
Jerome Coutant
0:78e37c7585e6
|
19
|
|
|
Jerome Coutant
0:78e37c7585e6
|
20
|
#if !defined(MBED_APP_SIZE)
|
|
Jerome Coutant
0:78e37c7585e6
|
21
|
#define MBED_APP_SIZE 1024K
|
|
Jerome Coutant
0:78e37c7585e6
|
22
|
#endif
|
|
Jerome Coutant
0:78e37c7585e6
|
23
|
|
|
Jerome Coutant
0:78e37c7585e6
|
24
|
#if !defined(MBED_BOOT_STACK_SIZE)
|
|
Jerome Coutant
0:78e37c7585e6
|
25
|
#define MBED_BOOT_STACK_SIZE 0x400
|
|
Jerome Coutant
0:78e37c7585e6
|
26
|
#endif
|
|
Jerome Coutant
0:78e37c7585e6
|
27
|
|
|
Jerome Coutant
0:78e37c7585e6
|
28
|
STACK_SIZE = MBED_BOOT_STACK_SIZE;
|
|
Jerome Coutant
0:78e37c7585e6
|
29
|
|
|
Jerome Coutant
0:78e37c7585e6
|
30
|
MEMORY
|
|
Jerome Coutant
0:78e37c7585e6
|
31
|
{
|
|
Jerome Coutant
0:78e37c7585e6
|
32
|
FLASH (rx) : ORIGIN = MBED_APP_START, LENGTH = MBED_APP_SIZE
|
|
Jerome Coutant
0:78e37c7585e6
|
33
|
DTCMRAM (rwx) : ORIGIN = 0x20000298, LENGTH = 128K-0x298
|
|
Jerome Coutant
0:78e37c7585e6
|
34
|
RAM (xrw) : ORIGIN = 0x24000000, LENGTH = 512K
|
|
Jerome Coutant
0:78e37c7585e6
|
35
|
RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 288K
|
|
Jerome Coutant
0:78e37c7585e6
|
36
|
RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K
|
|
Jerome Coutant
0:78e37c7585e6
|
37
|
ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K
|
|
Jerome Coutant
0:78e37c7585e6
|
38
|
}
|
|
Jerome Coutant
0:78e37c7585e6
|
39
|
|
|
Jerome Coutant
0:78e37c7585e6
|
40
|
/* Linker script to place sections and symbol values. Should be used together
|
|
Jerome Coutant
0:78e37c7585e6
|
41
|
* with other linker script that defines memory regions FLASH and RAM.
|
|
Jerome Coutant
0:78e37c7585e6
|
42
|
* It references following symbols, which must be defined in code:
|
|
Jerome Coutant
0:78e37c7585e6
|
43
|
* Reset_Handler : Entry of reset handler
|
|
Jerome Coutant
0:78e37c7585e6
|
44
|
*
|
|
Jerome Coutant
0:78e37c7585e6
|
45
|
* It defines following symbols, which code can use without definition:
|
|
Jerome Coutant
0:78e37c7585e6
|
46
|
* __exidx_start
|
|
Jerome Coutant
0:78e37c7585e6
|
47
|
* __exidx_end
|
|
Jerome Coutant
0:78e37c7585e6
|
48
|
* __etext
|
|
Jerome Coutant
0:78e37c7585e6
|
49
|
* __data_start__
|
|
Jerome Coutant
0:78e37c7585e6
|
50
|
* __preinit_array_start
|
|
Jerome Coutant
0:78e37c7585e6
|
51
|
* __preinit_array_end
|
|
Jerome Coutant
0:78e37c7585e6
|
52
|
* __init_array_start
|
|
Jerome Coutant
0:78e37c7585e6
|
53
|
* __init_array_end
|
|
Jerome Coutant
0:78e37c7585e6
|
54
|
* __fini_array_start
|
|
Jerome Coutant
0:78e37c7585e6
|
55
|
* __fini_array_end
|
|
Jerome Coutant
0:78e37c7585e6
|
56
|
* __data_end__
|
|
Jerome Coutant
0:78e37c7585e6
|
57
|
* __bss_start__
|
|
Jerome Coutant
0:78e37c7585e6
|
58
|
* __bss_end__
|
|
Jerome Coutant
0:78e37c7585e6
|
59
|
* __end__
|
|
Jerome Coutant
0:78e37c7585e6
|
60
|
* end
|
|
Jerome Coutant
0:78e37c7585e6
|
61
|
* __HeapLimit
|
|
Jerome Coutant
0:78e37c7585e6
|
62
|
* __StackLimit
|
|
Jerome Coutant
0:78e37c7585e6
|
63
|
* __StackTop
|
|
Jerome Coutant
0:78e37c7585e6
|
64
|
* __stack
|
|
Jerome Coutant
0:78e37c7585e6
|
65
|
* _estack
|
|
Jerome Coutant
0:78e37c7585e6
|
66
|
*/
|
|
Jerome Coutant
0:78e37c7585e6
|
67
|
ENTRY(Reset_Handler)
|
|
Jerome Coutant
0:78e37c7585e6
|
68
|
|
|
Jerome Coutant
0:78e37c7585e6
|
69
|
SECTIONS
|
|
Jerome Coutant
0:78e37c7585e6
|
70
|
{
|
|
Jerome Coutant
0:78e37c7585e6
|
71
|
.text :
|
|
Jerome Coutant
0:78e37c7585e6
|
72
|
{
|
|
Jerome Coutant
0:78e37c7585e6
|
73
|
KEEP(*(.isr_vector))
|
|
Jerome Coutant
0:78e37c7585e6
|
74
|
*(.text*)
|
|
Jerome Coutant
0:78e37c7585e6
|
75
|
KEEP(*(.init))
|
|
Jerome Coutant
0:78e37c7585e6
|
76
|
KEEP(*(.fini))
|
|
Jerome Coutant
0:78e37c7585e6
|
77
|
|
|
Jerome Coutant
0:78e37c7585e6
|
78
|
/* .ctors */
|
|
Jerome Coutant
0:78e37c7585e6
|
79
|
*crtbegin.o(.ctors)
|
|
Jerome Coutant
0:78e37c7585e6
|
80
|
*crtbegin?.o(.ctors)
|
|
Jerome Coutant
0:78e37c7585e6
|
81
|
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
|
|
Jerome Coutant
0:78e37c7585e6
|
82
|
*(SORT(.ctors.*))
|
|
Jerome Coutant
0:78e37c7585e6
|
83
|
*(.ctors)
|
|
Jerome Coutant
0:78e37c7585e6
|
84
|
|
|
Jerome Coutant
0:78e37c7585e6
|
85
|
/* .dtors */
|
|
Jerome Coutant
0:78e37c7585e6
|
86
|
*crtbegin.o(.dtors)
|
|
Jerome Coutant
0:78e37c7585e6
|
87
|
*crtbegin?.o(.dtors)
|
|
Jerome Coutant
0:78e37c7585e6
|
88
|
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
|
|
Jerome Coutant
0:78e37c7585e6
|
89
|
*(SORT(.dtors.*))
|
|
Jerome Coutant
0:78e37c7585e6
|
90
|
*(.dtors)
|
|
Jerome Coutant
0:78e37c7585e6
|
91
|
|
|
Jerome Coutant
0:78e37c7585e6
|
92
|
*(.rodata*)
|
|
Jerome Coutant
0:78e37c7585e6
|
93
|
|
|
Jerome Coutant
0:78e37c7585e6
|
94
|
KEEP(*(.eh_frame*))
|
|
Jerome Coutant
0:78e37c7585e6
|
95
|
} > FLASH
|
|
Jerome Coutant
0:78e37c7585e6
|
96
|
|
|
Jerome Coutant
0:78e37c7585e6
|
97
|
.ARM.extab :
|
|
Jerome Coutant
0:78e37c7585e6
|
98
|
{
|
|
Jerome Coutant
0:78e37c7585e6
|
99
|
*(.ARM.extab* .gnu.linkonce.armextab.*)
|
|
Jerome Coutant
0:78e37c7585e6
|
100
|
} > FLASH
|
|
Jerome Coutant
0:78e37c7585e6
|
101
|
|
|
Jerome Coutant
0:78e37c7585e6
|
102
|
__exidx_start = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
103
|
.ARM.exidx :
|
|
Jerome Coutant
0:78e37c7585e6
|
104
|
{
|
|
Jerome Coutant
0:78e37c7585e6
|
105
|
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
|
|
Jerome Coutant
0:78e37c7585e6
|
106
|
} > FLASH
|
|
Jerome Coutant
0:78e37c7585e6
|
107
|
__exidx_end = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
108
|
|
|
Jerome Coutant
0:78e37c7585e6
|
109
|
__etext = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
110
|
_sidata = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
111
|
|
|
Jerome Coutant
0:78e37c7585e6
|
112
|
.data : AT (__etext)
|
|
Jerome Coutant
0:78e37c7585e6
|
113
|
{
|
|
Jerome Coutant
0:78e37c7585e6
|
114
|
__data_start__ = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
115
|
_sdata = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
116
|
*(vtable)
|
|
Jerome Coutant
0:78e37c7585e6
|
117
|
*(.data*)
|
|
Jerome Coutant
0:78e37c7585e6
|
118
|
|
|
Jerome Coutant
0:78e37c7585e6
|
119
|
. = ALIGN(8);
|
|
Jerome Coutant
0:78e37c7585e6
|
120
|
/* preinit data */
|
|
Jerome Coutant
0:78e37c7585e6
|
121
|
PROVIDE_HIDDEN (__preinit_array_start = .);
|
|
Jerome Coutant
0:78e37c7585e6
|
122
|
KEEP(*(.preinit_array))
|
|
Jerome Coutant
0:78e37c7585e6
|
123
|
PROVIDE_HIDDEN (__preinit_array_end = .);
|
|
Jerome Coutant
0:78e37c7585e6
|
124
|
|
|
Jerome Coutant
0:78e37c7585e6
|
125
|
. = ALIGN(8);
|
|
Jerome Coutant
0:78e37c7585e6
|
126
|
/* init data */
|
|
Jerome Coutant
0:78e37c7585e6
|
127
|
PROVIDE_HIDDEN (__init_array_start = .);
|
|
Jerome Coutant
0:78e37c7585e6
|
128
|
KEEP(*(SORT(.init_array.*)))
|
|
Jerome Coutant
0:78e37c7585e6
|
129
|
KEEP(*(.init_array))
|
|
Jerome Coutant
0:78e37c7585e6
|
130
|
PROVIDE_HIDDEN (__init_array_end = .);
|
|
Jerome Coutant
0:78e37c7585e6
|
131
|
|
|
Jerome Coutant
0:78e37c7585e6
|
132
|
|
|
Jerome Coutant
0:78e37c7585e6
|
133
|
. = ALIGN(8);
|
|
Jerome Coutant
0:78e37c7585e6
|
134
|
/* finit data */
|
|
Jerome Coutant
0:78e37c7585e6
|
135
|
PROVIDE_HIDDEN (__fini_array_start = .);
|
|
Jerome Coutant
0:78e37c7585e6
|
136
|
KEEP(*(SORT(.fini_array.*)))
|
|
Jerome Coutant
0:78e37c7585e6
|
137
|
KEEP(*(.fini_array))
|
|
Jerome Coutant
0:78e37c7585e6
|
138
|
PROVIDE_HIDDEN (__fini_array_end = .);
|
|
Jerome Coutant
0:78e37c7585e6
|
139
|
|
|
Jerome Coutant
0:78e37c7585e6
|
140
|
KEEP(*(.jcr*))
|
|
Jerome Coutant
0:78e37c7585e6
|
141
|
. = ALIGN(8);
|
|
Jerome Coutant
0:78e37c7585e6
|
142
|
/* All data end */
|
|
Jerome Coutant
0:78e37c7585e6
|
143
|
__data_end__ = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
144
|
_edata = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
145
|
|
|
Jerome Coutant
0:78e37c7585e6
|
146
|
} > RAM
|
|
Jerome Coutant
0:78e37c7585e6
|
147
|
|
|
Jerome Coutant
0:78e37c7585e6
|
148
|
.bss :
|
|
Jerome Coutant
0:78e37c7585e6
|
149
|
{
|
|
Jerome Coutant
0:78e37c7585e6
|
150
|
. = ALIGN(8);
|
|
Jerome Coutant
0:78e37c7585e6
|
151
|
__bss_start__ = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
152
|
_sbss = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
153
|
*(.bss*)
|
|
Jerome Coutant
0:78e37c7585e6
|
154
|
*(COMMON)
|
|
Jerome Coutant
0:78e37c7585e6
|
155
|
. = ALIGN(8);
|
|
Jerome Coutant
0:78e37c7585e6
|
156
|
__bss_end__ = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
157
|
_ebss = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
158
|
} > RAM
|
|
Jerome Coutant
0:78e37c7585e6
|
159
|
|
|
Jerome Coutant
0:78e37c7585e6
|
160
|
.heap (COPY):
|
|
Jerome Coutant
0:78e37c7585e6
|
161
|
{
|
|
Jerome Coutant
0:78e37c7585e6
|
162
|
__end__ = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
163
|
end = __end__;
|
|
Jerome Coutant
0:78e37c7585e6
|
164
|
*(.heap*)
|
|
Jerome Coutant
0:78e37c7585e6
|
165
|
. = ORIGIN(RAM) + LENGTH(RAM) - STACK_SIZE;
|
|
Jerome Coutant
0:78e37c7585e6
|
166
|
__HeapLimit = .;
|
|
Jerome Coutant
0:78e37c7585e6
|
167
|
} > RAM
|
|
Jerome Coutant
0:78e37c7585e6
|
168
|
|
|
Jerome Coutant
0:78e37c7585e6
|
169
|
|
|
Jerome Coutant
0:78e37c7585e6
|
170
|
/* .stack_dummy section doesn't contains any symbols. It is only
|
|
Jerome Coutant
0:78e37c7585e6
|
171
|
* used for linker to calculate size of stack sections, and assign
|
|
Jerome Coutant
0:78e37c7585e6
|
172
|
* values to stack symbols later */
|
|
Jerome Coutant
0:78e37c7585e6
|
173
|
.stack_dummy (COPY):
|
|
Jerome Coutant
0:78e37c7585e6
|
174
|
{
|
|
Jerome Coutant
0:78e37c7585e6
|
175
|
*(.stack*)
|
|
Jerome Coutant
0:78e37c7585e6
|
176
|
} > RAM
|
|
Jerome Coutant
0:78e37c7585e6
|
177
|
|
|
Jerome Coutant
0:78e37c7585e6
|
178
|
/* Set stack top to end of RAM, and stack limit move down by
|
|
Jerome Coutant
0:78e37c7585e6
|
179
|
* size of stack_dummy section */
|
|
Jerome Coutant
0:78e37c7585e6
|
180
|
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
|
|
Jerome Coutant
0:78e37c7585e6
|
181
|
_estack = __StackTop;
|
|
Jerome Coutant
0:78e37c7585e6
|
182
|
__StackLimit = __StackTop - STACK_SIZE;
|
|
Jerome Coutant
0:78e37c7585e6
|
183
|
PROVIDE(__stack = __StackTop);
|
|
Jerome Coutant
0:78e37c7585e6
|
184
|
|
|
Jerome Coutant
0:78e37c7585e6
|
185
|
/* Check if data + heap + stack exceeds RAM limit */
|
|
Jerome Coutant
0:78e37c7585e6
|
186
|
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
|
|
Jerome Coutant
0:78e37c7585e6
|
187
|
|
|
Jerome Coutant
0:78e37c7585e6
|
188
|
.RAM_D3 (NOLOAD):
|
|
Jerome Coutant
0:78e37c7585e6
|
189
|
{
|
|
Jerome Coutant
0:78e37c7585e6
|
190
|
*(.RAM_D3)
|
|
Jerome Coutant
0:78e37c7585e6
|
191
|
} >RAM_D3
|
|
Jerome Coutant
0:78e37c7585e6
|
192
|
}
|
|