Skip to content

Commit 3b4c179

Browse files
committed
Add linker script patch.
Signed-off-by: Martino Facchin <[email protected]>
1 parent 6ffb9a3 commit 3b4c179

File tree

1 file changed

+19
-21
lines changed

1 file changed

+19
-21
lines changed

Diff for: mbed-os-to-arduino

+19-21
Original file line numberDiff line numberDiff line change
@@ -187,31 +187,16 @@ generate_flags () {
187187
echo "Patching '-fno-exceptions' flag for $ARDUINOVARIANT/${fl}flags.txt"
188188
sed -i '/-fno-exceptions/d' "$ARDUINOVARIANT"/${fl}flags.txt
189189
set +e
190-
HAS_OPENAMP_SECTION=`grep openamp_section "$ARDUINOVARIANT"/linker_script.ld`
190+
HAS_PDM_SECTION=`grep pdm_section "$ARDUINOVARIANT"/linker_script.ld`
191191
set -e
192-
if [ x"$HAS_OPENAMP_SECTION" == x ]; then
193-
echo "Adding OpenAMP section to $ARDUINOVARIANT/linker_script.ld"
194-
OPENAMP_SECTION=".openamp_section (NOLOAD) : {\n \
195-
. = ABSOLUTE(0x38000000);\n \
196-
*(.resource_table)\n \
197-
} >RAM_D3 AT > FLASH\n \
198-
.pdm_section (NOLOAD) : {\n \
199-
. = ABSOLUTE(0x3800FC00);\n \
192+
if [ x"$HAS_PDM_SECTION" == x ]; then
193+
echo "Adding PDM section to $ARDUINOVARIANT/linker_script.ld"
194+
PDM_SECTION=".pdm_section 0x3800FC00 (NOLOAD): {\n \
200195
*(.pdm_buffer)\n \
201196
} > RAM_D3\n"
202197

203-
if [[ $ARDUINOVARIANT == *GENERIC*M4 ]]; then
204-
echo "Fixing VTOR base in $ARDUINOVARIANT/linker_script.ld"
205-
VTOR_SECTION="#if (CM4_BINARY_START == 0x60000000)\n \
206-
REGION_ALIAS(\"RAM\", FLASH);\n \
207-
#else\n \
208-
REGION_ALIAS(\"RAM\", RAM_D2);\n \
209-
#endif\n"
210-
sed -i "s?REGION_ALIAS.*?${VTOR_SECTION}?g" $ARDUINOVARIANT/linker_script.ld
211-
fi
212-
213198
if [[ $ARDUINOVARIANT == *PORTENTA*M7* || $ARDUINOVARIANT == *GIGA* || $ARDUINOVARIANT == *OPTA* ]]; then
214-
OPENAMP_SECTION="${OPENAMP_SECTION} \
199+
PDM_SECTION="${PDM_SECTION} \
215200
_dtcm_lma = __etext + SIZEOF(.data);\n \
216201
.dtcm : AT(_dtcm_lma) {\n \
217202
_sdtcm = .;\n \
@@ -220,9 +205,22 @@ generate_flags () {
220205
} > DTCMRAM"
221206
fi
222207

223-
sed -i "s?.heap (COPY):?${OPENAMP_SECTION}\n .heap (COPY):?g" $ARDUINOVARIANT/linker_script.ld
208+
sed -i "s?.heap (COPY):?${PDM_SECTION}\n .heap (COPY):?g" $ARDUINOVARIANT/linker_script.ld
224209
OPENAMP_REGIONS="__OPENAMP_region_start__ = 0x38000400;\n__OPENAMP_region_end__ = 0x38000400 + LENGTH(RAM_D3) - 1K;"
225210
sed -i "s?ENTRY(Reset_Handler)?${OPENAMP_REGIONS}\nENTRY(Reset_Handler)?g" $ARDUINOVARIANT/linker_script.ld
211+
212+
if [[ $ARDUINOVARIANT == *GENERIC*M4 ]]; then
213+
echo "Fixing VTOR base in $ARDUINOVARIANT/linker_script.ld"
214+
VTOR_SECTION="#if (CM4_BINARY_START == 0x60000000)\n \
215+
REGION_ALIAS(\"RAM\", FLASH);\n \
216+
#else\n \
217+
REGION_ALIAS(\"RAM\", RAM_D2);\n \
218+
#endif\n"
219+
sed -i "s?REGION_ALIAS.*?${VTOR_SECTION}?g" $ARDUINOVARIANT/linker_script.ld
220+
echo "Fixing shared memory attributes in $ARDUINOVARIANT/linker_script.ld"
221+
sed -i "s?.heap (COPY)?.heap (NOLOAD)?g" $ARDUINOVARIANT/linker_script.ld
222+
sed -i "s?.stack_dummy (COPY)?.stack_dummy (NOLOAD)?g" $ARDUINOVARIANT/linker_script.ld
223+
fi
226224
fi
227225
echo "Patching linker scripts"
228226
sed -i 's/0x8100000/CM4_BINARY_START/g' "$ARDUINOVARIANT"/linker_script.ld

0 commit comments

Comments
 (0)