From 9b6a1abd1ef9341f49349b53b7ee4aaddbeba246 Mon Sep 17 00:00:00 2001 From: Vovanium Date: Tue, 20 Jul 2021 19:36:51 +0300 Subject: [PATCH] * Make a distinct library for every chip. This could make user code portable across chips. --- examples/led_flasher/led_flasher.gpr | 3 ++- examples/led_flasher/led_flasher_429disco.gpr | 3 ++- examples/led_flasher/source/led_flasher.adb | 4 ++-- .../led_flasher/source/led_flasher_429disco.adb | 4 ++-- examples/uart/source/uart_429disco.adb | 6 +++--- examples/uart/uart_429disco.gpr | 3 ++- .../07z/stm32-hardware.ads} | 4 ++-- .../29z/stm32-hardware.ads} | 4 ++-- stm32f407z_library.gpr | 16 ++++++++++++++++ stm32f429z_library.gpr | 17 +++++++++++++++++ 10 files changed, 50 insertions(+), 14 deletions(-) rename source/{stm32-f407z.ads => f4/07z/stm32-hardware.ads} (98%) rename source/{stm32-f429z.ads => f4/29z/stm32-hardware.ads} (98%) create mode 100644 stm32f407z_library.gpr create mode 100644 stm32f429z_library.gpr diff --git a/examples/led_flasher/led_flasher.gpr b/examples/led_flasher/led_flasher.gpr index 29aa782..039fbd9 100644 --- a/examples/led_flasher/led_flasher.gpr +++ b/examples/led_flasher/led_flasher.gpr @@ -1,4 +1,5 @@ -with "../../stm32_library.gpr"; +with "../../stm32f407z_library.gpr"; + project LED_Flasher is for Languages use("Ada"); for Main use("led_flasher.adb"); diff --git a/examples/led_flasher/led_flasher_429disco.gpr b/examples/led_flasher/led_flasher_429disco.gpr index 82cb88c..715ce5f 100644 --- a/examples/led_flasher/led_flasher_429disco.gpr +++ b/examples/led_flasher/led_flasher_429disco.gpr @@ -1,4 +1,5 @@ -with "../../stm32_library.gpr"; +with "../../stm32f429z_library.gpr"; + project LED_Flasher_429disco is for Languages use("Ada"); for Main use("led_flasher_429disco.adb"); diff --git a/examples/led_flasher/source/led_flasher.adb b/examples/led_flasher/source/led_flasher.adb index a5b0318..b0f95f1 100644 --- a/examples/led_flasher/source/led_flasher.adb +++ b/examples/led_flasher/source/led_flasher.adb @@ -1,5 +1,5 @@ -with STM32.F407Z; use STM32.F407Z; -use STM32.F407Z.Modules.GPIO; +with STM32.Hardware; use STM32.Hardware; +use STM32.Hardware.Modules.GPIO; with STM32.F4.GPIO.Ports; use STM32.F4.GPIO.Ports; with Ada.Real_Time; use Ada.Real_Time; diff --git a/examples/led_flasher/source/led_flasher_429disco.adb b/examples/led_flasher/source/led_flasher_429disco.adb index 11c9066..b8dbdf6 100644 --- a/examples/led_flasher/source/led_flasher_429disco.adb +++ b/examples/led_flasher/source/led_flasher_429disco.adb @@ -1,5 +1,5 @@ -with STM32.F429Z; use STM32.F429Z; -use STM32.F429Z.Modules.GPIO; +with STM32.Hardware; use STM32.Hardware; +use STM32.Hardware.Modules.GPIO; with STM32.F4.GPIO.Ports; use STM32.F4.GPIO.Ports; with Ada.Real_Time; use Ada.Real_Time; diff --git a/examples/uart/source/uart_429disco.adb b/examples/uart/source/uart_429disco.adb index bd200fa..af82468 100644 --- a/examples/uart/source/uart_429disco.adb +++ b/examples/uart/source/uart_429disco.adb @@ -1,6 +1,6 @@ -with STM32.F429Z; use STM32.F429Z; -use STM32.F429Z.Modules.GPIO; -use STM32.F429Z.Modules.USART; +with STM32.Hardware; use STM32.Hardware; +use STM32.Hardware.Modules.GPIO; +use STM32.Hardware.Modules.USART; with Ada.Real_Time; use Ada.Real_Time; diff --git a/examples/uart/uart_429disco.gpr b/examples/uart/uart_429disco.gpr index 268ec82..cbd26cb 100644 --- a/examples/uart/uart_429disco.gpr +++ b/examples/uart/uart_429disco.gpr @@ -1,4 +1,5 @@ -with "../../stm32_library.gpr"; +with "../../stm32f429z_library.gpr"; + project UART_429disco is for Languages use("Ada"); for Main use("uart_429disco.adb"); diff --git a/source/stm32-f407z.ads b/source/f4/07z/stm32-hardware.ads similarity index 98% rename from source/stm32-f407z.ads rename to source/f4/07z/stm32-hardware.ads index 5a785aa..6a92100 100644 --- a/source/stm32-f407z.ads +++ b/source/f4/07z/stm32-hardware.ads @@ -7,7 +7,7 @@ with STM32.F4.SYSCFG; with STM32.F4.USART; with STM32.F4.Address_Map; -package STM32.F407Z is +package STM32.Hardware is pragma Preelaborate; package Address_Map renames STM32.F4.Address_Map; @@ -79,4 +79,4 @@ package STM32.F407Z is --pragma Warnings (On, "* may call Last_Chance_Handler"); --pragma Warnings (On, "* may be incompatible with alignment of object"); -end STM32.F407Z; +end STM32.Hardware; diff --git a/source/stm32-f429z.ads b/source/f4/29z/stm32-hardware.ads similarity index 98% rename from source/stm32-f429z.ads rename to source/f4/29z/stm32-hardware.ads index ac43cd7..d9c3b89 100644 --- a/source/stm32-f429z.ads +++ b/source/f4/29z/stm32-hardware.ads @@ -7,7 +7,7 @@ with STM32.F4.SYSCFG; with STM32.F4.USART; with STM32.F4.Address_Map; -package STM32.F429Z is +package STM32.Hardware is pragma Preelaborate; package Address_Map renames STM32.F4.Address_Map; @@ -90,4 +90,4 @@ package STM32.F429Z is UART8: Modules.USART.USART_Registers with Volatile, Import, Address => System'To_Address(Address_Map.UART8); -end STM32.F429Z; +end STM32.Hardware; diff --git a/stm32f407z_library.gpr b/stm32f407z_library.gpr new file mode 100644 index 0000000..fa2c4ea --- /dev/null +++ b/stm32f407z_library.gpr @@ -0,0 +1,16 @@ +project STM32F407Z_Library is + for Source_Dirs use ("source", "source/f4", "source/f4/07z"); + for Object_Dir use "objects/f407z"; + for Library_Dir use "library/f407z"; + for Library_Name use "stm32f407z"; + for Library_Kind use "static"; + for Target use "arm-elf"; + for Runtime("ada") use "zfp-stm32f4"; + package Builder is + for Default_Switches("Ada") use ( + "-gnato", + "-O2", + "-gnatW8" + ); + end Builder; +end STM32F407Z_Library; \ No newline at end of file diff --git a/stm32f429z_library.gpr b/stm32f429z_library.gpr new file mode 100644 index 0000000..9813ddc --- /dev/null +++ b/stm32f429z_library.gpr @@ -0,0 +1,17 @@ +project STM32F429Z_Library is + for Source_Dirs use ("source", "source/f4", "source/f4/29z"); + for Object_Dir use "objects/f429z"; + for Library_Dir use "library/f429z"; + for Library_Name use "stm32f429z"; + for Library_Kind use "static"; + --for Library_Interface use ("STM32", "STM32.STM32F429Z"); + for Target use "arm-elf"; + for Runtime("ada") use "zfp-stm32f4"; + package Builder is + for Default_Switches("Ada") use ( + "-gnato", + "-O2", + "-gnatW8" + ); + end Builder; +end STM32F429Z_Library; \ No newline at end of file