====ewp.py: Create Makefile from IAR project====
ewp.py converts as best it can IAR project files into GNU Makefiles.
===Install===
hg clone https://hg.kewl.org/pub/ewp.py
cd ewp.py
sudo make install
===STM32CubeH7 Demo===
==Fetch Source==
git clone --recursive https://github.com/STMicroelectronics/STM32CubeH7
==Enter Demo==
cd STM32CubeH7/Projects/STM32H745I-DISCO/Applications/FreeRTOS/FreeRTOS_AMP_RTOS_BareMetal/
==List Targets==
ewp.py . EWARM/Project.ewp
STM32H745I_Discovery_CM4
STM32H745I_Discovery_CM7
==Create Makefiles==
ewp.py -p1 . EWARM/Project.ewp STM32H745I_Discovery_CM4 > Makefile.cm4
ewp.py -p1 . EWARM/Project.ewp STM32H745I_Discovery_CM7 > Makefile.cm7
==Fix Makefiles==
For each Makefile alter FIXME_CPU and FIXME_ABI for the CPU platform.
In these cases it is cortex-m4, cortex-m7 and hard.
Locate FIXME_LDS and ensure the correct linker script is selected and
then remove the FIXME_LDS text.
Change paths to GCC from IAR in the FreeRTOS source and includes entries.
==Patch Source (optional)==
Apply this patch if you want the backlight to be disabled when running
the demo.
--- CM4/Src/main.c.orig 2024-10-07 13:22:39.704687900 +0100
+++ CM4/Src/main.c 2024-10-07 13:24:31.570592100 +0100
@@ -74,6 +74,15 @@
*/
HAL_Init();
+ __HAL_RCC_GPIOK_CLK_ENABLE();
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
+ GPIO_InitStruct.Pin = GPIO_PIN_0;
+ HAL_GPIO_Init(GPIOK, &GPIO_InitStruct);
+ HAL_GPIO_WritePin(GPIOK, GPIO_PIN_0, GPIO_PIN_RESET);
+
BSP_LED_Init(LED1);
BSP_LED_Init(LED2);
==Build==
make -f Makefile.cm4
make -f Makefile.cm7
==Combine HEX==
srec_cat build/STM32H745I_Discovery_CM7/STM32H745I_Discovery_CM7.hex -Intel build/STM32H745I_Discovery_CM4/STM32H745I_Discovery_CM4.hex -Intel -out Project.hex -Intel
==Program==
Program `Project.hex' with STM32CubeProgrammer (attempt using OpenOCD failed and needs investigation).
==Notes==
The demo FreeRTOS_AMP_Dual_RTOS initially runs ok and then stalls. This is due
to newlib memcpy causing an MPU unaligned memory hard fault.
The FreeRTOS_AMP_RTOS_BareMetal demo works fine.
/*
A work-in-progress port using this script can be found [[https://hg.kewl.org/pub/Ampere/|here]].
*/