@@ -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