diff --git a/.github/workflows/real-time-cpp.yml b/.github/workflows/real-time-cpp.yml index dce3d83a2..30bdb0b43 100644 --- a/.github/workflows/real-time-cpp.yml +++ b/.github/workflows/real-time-cpp.yml @@ -236,19 +236,19 @@ jobs: strategy: fail-fast: false matrix: - suite: [ riscvfe310, wch_ch32v307, xtensa_esp32_s3_riscv_cop ] + suite: [ bl602_sifive_e24_riscv, riscvfe310, wch_ch32v307, xtensa_esp32_s3_riscv_cop ] steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: update-tools run: | - wget --no-check-certificate https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v14.2.0-3/xpack-riscv-none-elf-gcc-14.2.0-3-linux-x64.tar.gz - tar -xzf xpack-riscv-none-elf-gcc-14.2.0-3-linux-x64.tar.gz -C ${{ runner.workspace }} + wget --no-check-certificate https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v15.2.0-1/xpack-riscv-none-elf-gcc-15.2.0-1-linux-x64.tar.gz + tar -xzf xpack-riscv-none-elf-gcc-15.2.0-1-linux-x64.tar.gz -C ${{ runner.workspace }} working-directory: ./ - name: target-riscv-${{ matrix.suite }} run: | - PATH="${{ runner.workspace }}/xpack-riscv-none-elf-gcc-14.2.0-3/bin:$PATH" + PATH="${{ runner.workspace }}/xpack-riscv-none-elf-gcc-15.2.0-1/bin:$PATH" ./target/build/build.sh ${{ matrix.suite }} rebuild ls -la ./bin/ref_app.elf ./bin/ref_app.hex ./bin/ref_app.map ./bin/ref_app.s19 working-directory: ./ref_app/ diff --git a/readme.md b/readme.md index d33c35783..0513bd466 100644 --- a/readme.md +++ b/readme.md @@ -71,11 +71,12 @@ The reference application supports the following targets (in alpha-numeric order | Target name (as used in build command) | Target Description | *(breadboard) | | -------------------------------------- | ----------------------------------------------------------- | ------------- | | `am335x` | BeagleBone with Texas Instruments(R) AM335x ARM(R) A8 | | -| `am6254_soc_` | PocketBeagle2 with multicore Texas Instruments(R) AM6254 | | +| `am6254_soc` | PocketBeagle2 with multicore Texas Instruments(R) AM6254 | | | `atmega2560` | MICROCHIP(R) [former ATMEL(R)] AVR(R) ATmega2560 | | | `atmega4809` | MICROCHIP(R) [former ATMEL(R)] AVR(R) ATmegax4809 | X | | `avr` (as used in the book) | MICROCHIP(R) [former ATMEL(R)] AVR(R) ATmega328P | X | | `bcm2835_raspi_b` | RaspberryPi(R) Zero with ARM1176-JZFS(TM) | X | +| `bl602_sifive_e24_riscv` | BL602 single-core RISC-V (SiFive E24) | X | | `Debug`/`Release` | PC on `Win*` via MSVC x64 compiler `Debug`/`Release` | | | `host` | PC/Workstation on `Win*`/`mingw64`/`*nix` via host compiler | | | `lpc11c24` | NXP(R) OM13093 LPC11C24 board ARM(R) Cortex(R)-M0+ | | @@ -415,6 +416,13 @@ called `target avr` (as used in the book) runs on a classic ARDUINO(R) compatible board. The program toggles the yellow LED on `portb.5`. +Target `bl602_sifive_e24_riscv` contains a fully manually-written bare-metal project +for the BL602 single-core RISC-V (SiFive E24), making no use of any SDK. +The boot code and bare-metal register interactions are based +on the creative work in +[`Chalandi/Baremetal_BL602_SiFive_E24_RISC-V`](https://github.com/Chalandi/Baremetal_BL602_SiFive_E24_RISC-V). +This configuration toggles pin `IO3` and requires a self-fitted LED. + The ARM(R) 1176-JZF-S configuration (called `target bcm2835_raspi_b`) runs on the RaspberryPi(R) Zero (PiZero) single core controller. This project creates a bare-metal program for the PiZero. diff --git a/ref_app/ref_app.sln b/ref_app/ref_app.sln index 27c76958b..3982452de 100644 --- a/ref_app/ref_app.sln +++ b/ref_app/ref_app.sln @@ -52,6 +52,7 @@ Global target atmega4809|x64 = target atmega4809|x64 target avr|x64 = target avr|x64 target bcm2835_raspi_b|x64 = target bcm2835_raspi_b|x64 + target bl602_sifive_e24_riscv|x64 = target bl602_sifive_e24_riscv|x64 target lpc11c24|x64 = target lpc11c24|x64 target nxp_imxrt1062|x64 = target nxp_imxrt1062|x64 target riscvfe310|x64 = target riscvfe310|x64 @@ -86,6 +87,7 @@ Global {C8B59726-9319-45C3-8F11-F9F388FB6A2C}.target atmega4809|x64.ActiveCfg = Release|x64 {C8B59726-9319-45C3-8F11-F9F388FB6A2C}.target avr|x64.ActiveCfg = Release|x64 {C8B59726-9319-45C3-8F11-F9F388FB6A2C}.target bcm2835_raspi_b|x64.ActiveCfg = Release|x64 + {C8B59726-9319-45C3-8F11-F9F388FB6A2C}.target bl602_sifive_e24_riscv|x64.ActiveCfg = Release|x64 {C8B59726-9319-45C3-8F11-F9F388FB6A2C}.target lpc11c24|x64.ActiveCfg = Release|x64 {C8B59726-9319-45C3-8F11-F9F388FB6A2C}.target nxp_imxrt1062|x64.ActiveCfg = Release|x64 {C8B59726-9319-45C3-8F11-F9F388FB6A2C}.target riscvfe310|x64.ActiveCfg = Release|x64 @@ -122,6 +124,8 @@ Global {30CE370B-40F3-4BCD-8986-64AAFF8971BD}.target avr|x64.Build.0 = target avr|x64 {30CE370B-40F3-4BCD-8986-64AAFF8971BD}.target bcm2835_raspi_b|x64.ActiveCfg = target bcm2835_raspi_b|x64 {30CE370B-40F3-4BCD-8986-64AAFF8971BD}.target bcm2835_raspi_b|x64.Build.0 = target bcm2835_raspi_b|x64 + {30CE370B-40F3-4BCD-8986-64AAFF8971BD}.target bl602_sifive_e24_riscv|x64.ActiveCfg = target bl602_sifive_e24_riscv|x64 + {30CE370B-40F3-4BCD-8986-64AAFF8971BD}.target bl602_sifive_e24_riscv|x64.Build.0 = target bl602_sifive_e24_riscv|x64 {30CE370B-40F3-4BCD-8986-64AAFF8971BD}.target lpc11c24|x64.ActiveCfg = target lpc11c24|x64 {30CE370B-40F3-4BCD-8986-64AAFF8971BD}.target lpc11c24|x64.Build.0 = target lpc11c24|x64 {30CE370B-40F3-4BCD-8986-64AAFF8971BD}.target nxp_imxrt1062|x64.ActiveCfg = target nxp_imxrt1062|x64 diff --git a/ref_app/ref_app.vcxproj b/ref_app/ref_app.vcxproj index 4e6589d0c..f2516d0f2 100644 --- a/ref_app/ref_app.vcxproj +++ b/ref_app/ref_app.vcxproj @@ -473,6 +473,46 @@ true true + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + @@ -1868,6 +1908,62 @@ true true + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + diff --git a/ref_app/ref_app.vcxproj.filters b/ref_app/ref_app.vcxproj.filters index 2e21722da..1f465dc55 100644 --- a/ref_app/ref_app.vcxproj.filters +++ b/ref_app/ref_app.vcxproj.filters @@ -281,6 +281,9 @@ {74714130-9ba7-45a5-a860-74f8cb6eae22} + + {9575513c-b5da-473e-9095-bbd968c02f6b} + @@ -1303,6 +1306,36 @@ src\mcal\am6254_soc + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + @@ -2952,6 +2985,48 @@ src\util\utility + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + + + src\mcal\bl602_sifive_e24_riscv + diff --git a/ref_app/src/mcal/am6254_soc/mcal_gpt.cpp b/ref_app/src/mcal/am6254_soc/mcal_gpt.cpp index 57684bdc0..61de864ea 100644 --- a/ref_app/src/mcal/am6254_soc/mcal_gpt.cpp +++ b/ref_app/src/mcal/am6254_soc/mcal_gpt.cpp @@ -11,11 +11,19 @@ auto mcal::gpt::secure::get_time_elapsed() -> mcal::gpt::value_type { - // Get the system tick from the system counter register. - const value_type consistent_microsecond_tick = static_cast(ARM64_READ_SYSREG(CNTPCT_EL0)); + // Get the consistent system tick from the system counter register. + const value_type + consistent_microsecond_tick + { + static_cast(ARM64_READ_SYSREG(CNTPCT_EL0)) + }; // Convert the consistent tick to microseconds. - return static_cast(static_cast(consistent_microsecond_tick + UINT64_C(100)) / UINT64_C(200)); + return + static_cast + ( + static_cast(consistent_microsecond_tick + UINT64_C(100)) / UINT64_C(200) + ); } auto mcal::gpt::secure::get_time_elapsed_core1() -> mcal::gpt::value_type_core1 diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_benchmark.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_benchmark.h new file mode 100644 index 000000000..0b641207f --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_benchmark.h @@ -0,0 +1,24 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2014 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_BENCHMARK_2014_04_16_H + #define MCAL_BENCHMARK_2014_04_16_H + + #include + #include + + #include + + namespace mcal + { + namespace benchmark + { + using benchmark_port_type = mcal::port::port_pin; + } + } + +#endif // MCAL_BENCHMARK_2014_04_16_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_cpu.cpp b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_cpu.cpp new file mode 100644 index 000000000..248a6d828 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_cpu.cpp @@ -0,0 +1,12 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#include + +auto mcal::cpu::init() -> void +{ +} diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_cpu.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_cpu.h new file mode 100644 index 000000000..9ac5039be --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_cpu.h @@ -0,0 +1,25 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_CPU_2025_07_30_H + #define MCAL_CPU_2025_07_30_H + + #include + + namespace mcal + { + namespace cpu + { + auto init() -> void; + + inline auto post_init() -> void { } + + inline auto nop() noexcept -> void { asm volatile("nop"); } + } + } + +#endif // MCAL_CPU_2025_07_30_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_eep.cpp b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_eep.cpp new file mode 100644 index 000000000..849637ad9 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_eep.cpp @@ -0,0 +1,21 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#include + +auto mcal::eep::write(const address_type addr, const std::uint8_t data) -> void +{ + static_cast(addr); + static_cast(data); +} + +auto mcal::eep::read(const address_type addr) -> std::uint8_t +{ + static_cast(addr); + + return UINT8_C(0); +} diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_eep.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_eep.h new file mode 100644 index 000000000..253778148 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_eep.h @@ -0,0 +1,27 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_EEP_2018_12_15_H + #define MCAL_EEP_2018_12_15_H + + #include + + namespace mcal + { + namespace eep + { + using config_type = void; + using address_type = std::uint32_t; + + inline auto init(const config_type*) -> void { } + + auto write(const address_type addr, const std::uint8_t data) -> void; + auto read (const address_type addr) -> std::uint8_t; + } + } + +#endif // MCAL_EEP_2018_12_15_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_gpt.cpp b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_gpt.cpp new file mode 100644 index 000000000..4fe998091 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_gpt.cpp @@ -0,0 +1,122 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#include +#include + +#include + +namespace +{ + struct mcal_gpt_system_tick final : private util::noncopyable + { + public: + mcal_gpt_system_tick() = delete; + + ~mcal_gpt_system_tick() = delete; + + static auto init() -> void + { + initial_count = get_consistent_microsecond_tick(); + } + + static auto get_tick() -> std::uint64_t + { + const std::uint64_t elapsed { get_consistent_microsecond_tick() - initial_count }; + + return elapsed; + } + + private: + static std::uint64_t initial_count; + + static auto read_clic_timer64() -> std::uint64_t + { + return mcal::reg::reg_access_static::reg_get(); + } + + static auto get_consistent_microsecond_tick() -> std::uint64_t + { + // Return the (elapsed) system tick using a multiple read + // to ensure data consistency. The system tick representing + // the elapsed time is used because the system tick timer + // has already been initialized by the system's bootloader. + // This means that by the time the bare-metal software actually + // starts up, the system tick timer will have already increased + // to some non-zero value represented here by initial_count. + + // Return the system tick using a multiple read to ensure data consistency. + + const volatile std::uint64_t time_first { read_clic_timer64() }; + const volatile std::uint64_t time_second { read_clic_timer64() }; + + const bool + is_steady + { + (static_cast(time_second) >= static_cast(time_first)) + }; + + const std::uint64_t + consistent_tick + { + static_cast + ( + is_steady ? time_first : read_clic_timer64() + ) + }; + + return + static_cast + ( + static_cast(consistent_tick + UINT32_C(5)) + / UINT32_C(10) + ); + } + }; + + std::uint64_t mcal_gpt_system_tick::initial_count { }; + + auto gpt_is_initialized() -> bool& __attribute__((used, noinline)); + + auto gpt_is_initialized() -> bool& + { + static bool is_init = bool(); + + return is_init; + } +} + +extern "C" auto mcal_gpt_init() -> void; + +extern "C" auto mcal_gpt_init() -> void +{ + mcal::gpt::init(nullptr); +} + +void mcal::gpt::init(const config_type*) +{ + if(!gpt_is_initialized()) + { + gpt_is_initialized() = true; + + mcal_gpt_system_tick::init(); + } +} + +mcal::gpt::value_type mcal::gpt::secure::get_time_elapsed() +{ + const std::uint64_t + elapsed + { + static_cast + ( + gpt_is_initialized() ? mcal_gpt_system_tick::get_tick() : UINT64_C(0) + ) + }; + + return mcal::gpt::value_type(elapsed); +} diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_gpt.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_gpt.h new file mode 100644 index 000000000..8c9e9bd94 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_gpt.h @@ -0,0 +1,29 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_GPT_2025_10_30_H + #define MCAL_GPT_2025_10_30_H + + #include + + namespace mcal + { + namespace gpt + { + using config_type = void; + using value_type = std::uint64_t; + + auto init(const config_type*) -> void; + + struct secure final + { + static auto get_time_elapsed() -> value_type; + }; + } + } + +#endif // MCAL_GPT_2025_10_30_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_irq.cpp b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_irq.cpp new file mode 100644 index 000000000..a97496a2d --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_irq.cpp @@ -0,0 +1,12 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#include + +auto mcal::irq::init(const config_type*) -> void +{ +} diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_irq.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_irq.h new file mode 100644 index 000000000..2d606f6e0 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_irq.h @@ -0,0 +1,24 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_IRQ_2010_04_10_H + #define MCAL_IRQ_2010_04_10_H + + namespace mcal + { + namespace irq + { + using config_type = void; + + void init(const config_type*); + + inline void enable_all() { } + inline void disable_all() { } + } + } + +#endif // MCAL_IRQ_2010_04_10_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_led.cpp b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_led.cpp new file mode 100644 index 000000000..c052e3c30 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_led.cpp @@ -0,0 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#include +#include + +auto mcal::led::led0() -> mcal::led::led_base& +{ + using led0_port_type = mcal::port::port_pin; + + using led0_led_type = mcal::led::led_port; + + static led0_led_type l0; + + return l0; +} diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_led.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_led.h new file mode 100644 index 000000000..cd9c8065d --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_led.h @@ -0,0 +1,31 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_LED_2010_09_14_H + #define MCAL_LED_2010_09_14_H + + #include + + #include + + namespace mcal + { + namespace led + { + constexpr unsigned LED_ID_1 { UINT8_C(6) }; + constexpr unsigned LED_ID_2 { UINT8_C(5) }; + constexpr unsigned LED_ID_3 { UINT8_C(4) }; + constexpr unsigned LED_ID_4 { UINT8_C(3) }; + + auto led0() -> led_base&; + auto led1() -> led_base&; + auto led2() -> led_base&; + auto led3() -> led_base&; + } + } + +#endif // MCAL_LED_2010_09_14_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_memory_progmem.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_memory_progmem.h new file mode 100644 index 000000000..9668b68c4 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_memory_progmem.h @@ -0,0 +1,72 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2019 - 2020. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_MEMORY_PROGMEM_2019_08_17_H_ + #define MCAL_MEMORY_PROGMEM_2019_08_17_H_ + + #include + + #define MY_PROGMEM + + #if defined(__cplusplus) + extern "C" + { + #endif + + typedef uintptr_t mcal_progmem_uintptr_t; + typedef ptrdiff_t mcal_progmem_ptrdiff_t; + + #define MCAL_PROGMEM_ADDRESSOF(x) ((mcal_progmem_uintptr_t) (&(x))) + + static inline uint8_t mcal_memory_progmem_read_byte(const mcal_progmem_uintptr_t src_addr) + { + return *(const uint8_t*) src_addr; + } + + static inline uint16_t mcal_memory_progmem_read_word(const mcal_progmem_uintptr_t src_addr) + { + uint16_t dest; + + *(((uint8_t*) &dest) + 0U) = *((const uint8_t*) (src_addr + 0U)); + *(((uint8_t*) &dest) + 1U) = *((const uint8_t*) (src_addr + 1U)); + + return dest; + } + + static inline uint32_t mcal_memory_progmem_read_dword(const mcal_progmem_uintptr_t src_addr) + { + uint32_t dest; + + *(((uint8_t*) &dest) + 0U) = *((const uint8_t*) (src_addr + 0U)); + *(((uint8_t*) &dest) + 1U) = *((const uint8_t*) (src_addr + 1U)); + *(((uint8_t*) &dest) + 2U) = *((const uint8_t*) (src_addr + 2U)); + *(((uint8_t*) &dest) + 3U) = *((const uint8_t*) (src_addr + 3U)); + + return dest; + } + + static inline uint64_t mcal_memory_progmem_read_qword(const mcal_progmem_uintptr_t src_addr) + { + uint64_t dest; + + *(((uint8_t*) &dest) + 0U) = *((const uint8_t*) (src_addr + 0U)); + *(((uint8_t*) &dest) + 1U) = *((const uint8_t*) (src_addr + 1U)); + *(((uint8_t*) &dest) + 2U) = *((const uint8_t*) (src_addr + 2U)); + *(((uint8_t*) &dest) + 3U) = *((const uint8_t*) (src_addr + 3U)); + *(((uint8_t*) &dest) + 4U) = *((const uint8_t*) (src_addr + 4U)); + *(((uint8_t*) &dest) + 5U) = *((const uint8_t*) (src_addr + 5U)); + *(((uint8_t*) &dest) + 6U) = *((const uint8_t*) (src_addr + 6U)); + *(((uint8_t*) &dest) + 7U) = *((const uint8_t*) (src_addr + 7U)); + + return dest; + } + + #if defined(__cplusplus) + } + #endif + +#endif // MCAL_MEMORY_PROGMEM_2019_08_17_H_ diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_osc.cpp b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_osc.cpp new file mode 100644 index 000000000..6ae0b6324 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_osc.cpp @@ -0,0 +1,12 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#include + +auto mcal::osc::init(const config_type*) -> void +{ +} diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_osc.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_osc.h new file mode 100644 index 000000000..cb8944d84 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_osc.h @@ -0,0 +1,21 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_OSC_2011_10_20_H + #define MCAL_OSC_2011_10_20_H + + namespace mcal + { + namespace osc + { + using config_type = void; + + auto init(const config_type*) -> void; + } + } + +#endif // MCAL_OSC_2011_10_20_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_port.cpp b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_port.cpp new file mode 100644 index 000000000..85e46c9cb --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_port.cpp @@ -0,0 +1,12 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#include + +void mcal::port::init(const config_type*) +{ +} diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_port.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_port.h new file mode 100644 index 000000000..fe7df7753 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_port.h @@ -0,0 +1,98 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_PORT_2014_01_10_H + #define MCAL_PORT_2014_01_10_H + + #include + #include + + #include + #include + + namespace mcal + { + namespace port + { + using config_type = void; + + void init(const config_type*); + + template + class port_pin + { + private: + static constexpr std::uint32_t GPIO_FUN_SDIO { UINT32_C( 1) }; + static constexpr std::uint32_t GPIO_FUN_FLASH { UINT32_C( 2) }; + static constexpr std::uint32_t GPIO_FUN_SPI { UINT32_C( 4) }; + static constexpr std::uint32_t GPIO_FUN_I2C { UINT32_C( 6) }; + static constexpr std::uint32_t GPIO_FUN_UART { UINT32_C( 7) }; + static constexpr std::uint32_t GPIO_FUN_PWM { UINT32_C( 8) }; + static constexpr std::uint32_t GPIO_FUN_EXT_PA { UINT32_C( 9) }; + static constexpr std::uint32_t GPIO_FUN_ANALOG { UINT32_C(10) }; + static constexpr std::uint32_t GPIO_FUN_SWGPIO { UINT32_C(11) }; + static constexpr std::uint32_t GPIO_FUN_JTAG { UINT32_C(14) }; + + static constexpr std::uint32_t port_index { static_cast(PortIndex) }; + + static constexpr bool odd_index { ((PortIndex % unsigned { UINT8_C(2) }) != unsigned { UINT8_C(0) }) }; + + static constexpr std::uintptr_t + cfgctl + { + static_cast + ( + mcal::reg::gpio_cfgctl0 + (port_index / 2U) * 4U + ) + }; + + static constexpr unsigned cfgctl_bpos_reg_gpio_3_func_sel { odd_index ? UINT8_C(24) : UINT8_C(24) - UINT8_C(16) }; + static constexpr unsigned cfgctl_bpos_reg_gpio_3_ie { odd_index ? UINT8_C(16) : UINT8_C(16) - UINT8_C(16) }; + static constexpr unsigned cfgctl_bpos_reg_gpio_3_smt { odd_index ? UINT8_C(17) : UINT8_C(17) - UINT8_C(16) }; + static constexpr unsigned cfgctl_bpos_reg_gpio_3_drv { odd_index ? UINT8_C(18) : UINT8_C(18) - UINT8_C(16) }; + + public: + static auto set_direction_output() noexcept -> void + { + mcal::reg::reg_access_static(GPIO_FUN_SWGPIO << cfgctl_bpos_reg_gpio_3_func_sel)>::template reg_msk(UINT32_C(0xF) << cfgctl_bpos_reg_gpio_3_func_sel)>(); + mcal::reg::reg_access_static::bit_clr(); + mcal::reg::reg_access_static::bit_clr(); + mcal::reg::reg_access_static::template reg_msk(); + + mcal::reg::reg_access_static::bit_set(); + } + + static auto set_direction_input() noexcept -> void + { + // Not yet implemented. + } + + static auto set_pin_high() noexcept -> void + { + // Not yet implemented. + } + + static auto set_pin_low() noexcept -> void + { + // Not yet implemented. + } + + static auto read_input_value() noexcept -> bool + { + // Not yet implemented. + return false; + } + + static auto toggle_pin() noexcept -> void + { + mcal::reg::reg_access_static::bit_not(); + } + }; + } + } + +#endif // MCAL_PORT_2014_01_10_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_pwm.cpp b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_pwm.cpp new file mode 100644 index 000000000..cf0b192b5 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_pwm.cpp @@ -0,0 +1,12 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#include + +auto mcal::pwm::init(const config_type*) -> void +{ +} diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_pwm.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_pwm.h new file mode 100644 index 000000000..2d99c6165 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_pwm.h @@ -0,0 +1,21 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_PWM_2010_09_14_H + #define MCAL_PWM_2010_09_14_H + + namespace mcal + { + namespace pwm + { + using config_type = void; + + void init(const config_type*); + } + } + +#endif // MCAL_PWM_2010_09_14_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_reg.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_reg.h new file mode 100644 index 000000000..d75e51b68 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_reg.h @@ -0,0 +1,52 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_REG_2010_04_10_H + #define MCAL_REG_2010_04_10_H + + #include + + namespace mcal + { + namespace reg + { + // CLIC (timer) registers. + constexpr std::uintptr_t clic_ctrl_addr { UINT32_C(0x02000000) }; + constexpr std::uintptr_t clic_msip { clic_ctrl_addr + UINT32_C(0x00000000) }; + constexpr std::uintptr_t clic_mtimecmp { clic_ctrl_addr + UINT32_C(0x00004000) }; + constexpr std::uintptr_t clic_mtime { clic_ctrl_addr + UINT32_C(0x0000BFF8) }; + constexpr std::uintptr_t clic_clk_gate { clic_ctrl_addr + UINT32_C(0x007FF000) }; + + constexpr std::uintptr_t glb_base { UINT32_C(0x40000000) }; + constexpr std::uintptr_t gpio_cfgctl0 { glb_base + UINT32_C(0x00000100) }; + constexpr std::uintptr_t gpio_cfgctl1 { glb_base + UINT32_C(0x00000104) }; + constexpr std::uintptr_t gpio_cfgctl2 { glb_base + UINT32_C(0x00000108) }; + constexpr std::uintptr_t gpio_cfgctl3 { glb_base + UINT32_C(0x0000010C) }; + constexpr std::uintptr_t gpio_cfgctl4 { glb_base + UINT32_C(0x00000110) }; + constexpr std::uintptr_t gpio_cfgctl5 { glb_base + UINT32_C(0x00000114) }; + constexpr std::uintptr_t gpio_cfgctl6 { glb_base + UINT32_C(0x00000118) }; + constexpr std::uintptr_t gpio_cfgctl7 { glb_base + UINT32_C(0x0000011C) }; + constexpr std::uintptr_t gpio_cfgctl8 { glb_base + UINT32_C(0x00000120) }; + constexpr std::uintptr_t gpio_cfgctl9 { glb_base + UINT32_C(0x00000124) }; + constexpr std::uintptr_t gpio_cfgctl10 { glb_base + UINT32_C(0x00000128) }; + constexpr std::uintptr_t gpio_cfgctl11 { glb_base + UINT32_C(0x0000012C) }; + constexpr std::uintptr_t gpio_cfgctl12 { glb_base + UINT32_C(0x00000130) }; + constexpr std::uintptr_t gpio_cfgctl13 { glb_base + UINT32_C(0x00000134) }; + constexpr std::uintptr_t gpio_cfgctl14 { glb_base + UINT32_C(0x00000138) }; + constexpr std::uintptr_t gpio_cfgctl30 { glb_base + UINT32_C(0x00000180) }; + constexpr std::uintptr_t gpio_cfgctl31 { glb_base + UINT32_C(0x00000184) }; + constexpr std::uintptr_t gpio_cfgctl32 { glb_base + UINT32_C(0x00000188) }; + constexpr std::uintptr_t gpio_cfgctl33 { glb_base + UINT32_C(0x0000018C) }; + constexpr std::uintptr_t gpio_cfgctl34 { glb_base + UINT32_C(0x00000190) }; + constexpr std::uintptr_t gpio_cfgctl35 { glb_base + UINT32_C(0x00000194) }; + } + } + + #include + #include + +#endif // MCAL_REG_2010_04_10_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_ser.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_ser.h new file mode 100644 index 000000000..7eb790916 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_ser.h @@ -0,0 +1,21 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_SER_2011_10_20_H + #define MCAL_SER_2011_10_20_H + + namespace mcal + { + namespace ser + { + using config_type = void; + + inline void init(const config_type*) { } + } + } + +#endif // MCAL_SER_2011_10_20_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_spi.cpp b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_spi.cpp new file mode 100644 index 000000000..90723f45f --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_spi.cpp @@ -0,0 +1,12 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2012 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#include + +void mcal::spi::init(const mcal::spi::config_type*) +{ +} diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_spi.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_spi.h new file mode 100644 index 000000000..26563e885 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_spi.h @@ -0,0 +1,19 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2012 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_SPI_2012_05_24_H + #define MCAL_SPI_2012_05_24_H + + namespace mcal { namespace spi { + + using config_type = void; + + auto init(const config_type*) -> void; + + } } + +#endif // MCAL_SPI_2012_05_24_H diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_wdg.cpp b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_wdg.cpp new file mode 100644 index 000000000..4cb0e5f15 --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_wdg.cpp @@ -0,0 +1,17 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#include +#include + +void mcal::wdg::init(const config_type*) +{ +} + +void mcal::wdg::secure::trigger() +{ +} diff --git a/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_wdg.h b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_wdg.h new file mode 100644 index 000000000..996659eea --- /dev/null +++ b/ref_app/src/mcal/bl602_sifive_e24_riscv/mcal_wdg.h @@ -0,0 +1,26 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2007 - 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef MCAL_WDG_2010_04_10_H + #define MCAL_WDG_2010_04_10_H + + namespace mcal + { + namespace wdg + { + using config_type = void; + + auto init(const config_type*) -> void; + + struct secure final + { + static auto trigger() -> void; + }; + } + } + +#endif // MCAL_WDG_2010_04_10_H diff --git a/ref_app/target.vcxproj b/ref_app/target.vcxproj index 3a710f2e4..0ac75349f 100644 --- a/ref_app/target.vcxproj +++ b/ref_app/target.vcxproj @@ -5,6 +5,10 @@ target am6254_soc x64 + + target bl602_sifive_e24_riscv + x64 + target rpi_pico2_rp2350 x64 @@ -170,6 +174,12 @@ true v143 + + Makefile + Unicode + true + v143 + Makefile Unicode @@ -354,6 +364,9 @@ + + + @@ -423,6 +436,7 @@ target\build\build.bat stm32f100 target\build\build.bat riscvfe310 target\build\build.bat wch_ch32v307 + target\build\build.bat bl602_sifive_e24_riscv target\build\build.bat wch_ch32v307_llvm target\build\build.bat stm32l100c target\build\build.bat lpc11c24 @@ -451,6 +465,7 @@ target\build\build.bat stm32f100 rebuild target\build\build.bat riscvfe310 rebuild target\build\build.bat wch_ch32v307 rebuild + target\build\build.bat bl602_sifive_e24_riscv rebuild target\build\build.bat wch_ch32v307_llvm rebuild target\build\build.bat stm32l100c rebuild target\build\build.bat lpc11c24 rebuild @@ -480,6 +495,7 @@ target\build\build.bat stm32f100 clean_all target\build\build.bat riscvfe310 clean_all target\build\build.bat wch_ch32v307 clean_all + target\build\build.bat bl602_sifive_e24_riscv clean_all target\build\build.bat wch_ch32v307_llvm clean_all target\build\build.bat stm32l100c clean_all target\build\build.bat lpc11c24 clean_all @@ -509,6 +525,7 @@ $(SolutionDir)bin\ref_app.hex $(SolutionDir)bin\ref_app.hex $(SolutionDir)bin\ref_app.hex + $(SolutionDir)bin\ref_app.hex $(SolutionDir)bin\ref_app.hex $(SolutionDir)bin\ref_app.hex $(SolutionDir)bin\ref_app.hex @@ -537,6 +554,7 @@ + @@ -566,6 +584,7 @@ $(SolutionDir)src\util\STL_C++XX_stdfloat;$(SolutionDir)src\util\STL;$(SolutionDir)/src;$(SolutionDir)/src/mcal/stm32f100 $(SolutionDir)src\util\STL_C++XX_stdfloat;$(SolutionDir)src\util\STL;$(SolutionDir)/src;$(SolutionDir)/src/mcal/riscvfe310 $(SolutionDir)/src/mcal/wch_ch32v307/Mcal; $(SolutionDir)/src/util/STL; $(SolutionDir)/src; $(SolutionDir)/src/mcal/wch_ch32v307; + $(SolutionDir)/src/mcal/bl602_sifive_e24_riscv/Mcal;$(SolutionDir)/src/util/STL;$(SolutionDir)/src;$(SolutionDir)/src/mcal/bl602_sifive_e24_riscv $(SolutionDir)/src/mcal/wch_ch32v307_llvm/Mcal;$(SolutionDir)/src $(SolutionDir)src\util\STL_C++XX_stdfloat;$(SolutionDir)src\util\STL;$(SolutionDir)/src;$(SolutionDir)/src/mcal/stm32f100 $(SolutionDir)src\util\STL_C++XX_stdfloat;$(SolutionDir)src\util\STL;$(SolutionDir)src;$(SolutionDir)src\mcal\lpc11c24 @@ -594,6 +613,7 @@ + @@ -622,6 +642,7 @@ + @@ -650,6 +671,7 @@ + @@ -835,6 +857,11 @@ $(SolutionDir)tmp\log\ref_app.log + + + $(SolutionDir)tmp\log\ref_app.log + + $(SolutionDir)tmp\log\ref_app.log @@ -983,6 +1010,10 @@ + + + + @@ -1101,6 +1132,8 @@ + + diff --git a/ref_app/target.vcxproj.filters b/ref_app/target.vcxproj.filters index efd4fe857..aae9c270f 100644 --- a/ref_app/target.vcxproj.filters +++ b/ref_app/target.vcxproj.filters @@ -322,6 +322,15 @@ {8cae57b6-0e1e-471c-acea-6e9f6ef3ece8} + + {f04752e7-fb5c-409d-b8a1-45c616328d40} + + + {78ca94d0-a98f-4278-b355-cfa8a6979c42} + + + {d9d707dc-1ba0-4d0c-be67-fbb095f42986} + @@ -741,6 +750,18 @@ micros\am6254_soc\make + + micros\bl602_sifive_e24_riscv\make + + + micros\bl602_sifive_e24_riscv\make + + + micros\bl602_sifive_e24_riscv\make + + + micros\bl602_sifive_e24_riscv\startup + @@ -1070,6 +1091,12 @@ micros\am6254_soc\Code\Appli\Core\a53 + + micros\bl602_sifive_e24_riscv\startup + + + micros\bl602_sifive_e24_riscv\startup + diff --git a/ref_app/target/micros/am335x/make/am335x_files.gmk b/ref_app/target/micros/am335x/make/am335x_files.gmk index 9043a2bf2..31e8db652 100644 --- a/ref_app/target/micros/am335x/make/am335x_files.gmk +++ b/ref_app/target/micros/am335x/make/am335x_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2013 - 2021. +# Copyright Christopher Kormanyos 2013 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the AM335x ARM(R) A8 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/am6254_soc/make/am6254_soc_files.gmk b/ref_app/target/micros/am6254_soc/make/am6254_soc_files.gmk index ae1207419..427ceef2d 100644 --- a/ref_app/target/micros/am6254_soc/make/am6254_soc_files.gmk +++ b/ref_app/target/micros/am6254_soc/make/am6254_soc_files.gmk @@ -6,7 +6,7 @@ # # ------------------------------------------------------------------------------ -# File list of the AM6254 SOC files in the project +# File list of the target-specific SOC files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/atmega2560/make/atmega2560_files.gmk b/ref_app/target/micros/atmega2560/make/atmega2560_files.gmk index 99b95cfa2..c764ddbed 100644 --- a/ref_app/target/micros/atmega2560/make/atmega2560_files.gmk +++ b/ref_app/target/micros/atmega2560/make/atmega2560_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2021. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the avr files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/atmega4809/make/atmega4809_files.gmk b/ref_app/target/micros/atmega4809/make/atmega4809_files.gmk index 99b95cfa2..c764ddbed 100644 --- a/ref_app/target/micros/atmega4809/make/atmega4809_files.gmk +++ b/ref_app/target/micros/atmega4809/make/atmega4809_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2021. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the avr files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/avr/make/avr_files.gmk b/ref_app/target/micros/avr/make/avr_files.gmk index 9391412e8..c764ddbed 100644 --- a/ref_app/target/micros/avr/make/avr_files.gmk +++ b/ref_app/target/micros/avr/make/avr_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2024. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the avr files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/bcm2835_raspi_b/make/bcm2835_raspi_b_files.gmk b/ref_app/target/micros/bcm2835_raspi_b/make/bcm2835_raspi_b_files.gmk index 87d047e5b..0868a5cde 100644 --- a/ref_app/target/micros/bcm2835_raspi_b/make/bcm2835_raspi_b_files.gmk +++ b/ref_app/target/micros/bcm2835_raspi_b/make/bcm2835_raspi_b_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2013 - 2021. +# Copyright Christopher Kormanyos 2013 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the RaspberryPi(R) ARM(R) A11 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/bl602_sifive_e24_riscv/make/bl602_sifive_e24_riscv.ld b/ref_app/target/micros/bl602_sifive_e24_riscv/make/bl602_sifive_e24_riscv.ld new file mode 100644 index 000000000..0d5ca027b --- /dev/null +++ b/ref_app/target/micros/bl602_sifive_e24_riscv/make/bl602_sifive_e24_riscv.ld @@ -0,0 +1,159 @@ +/****************************************************************************************** + Filename : Memory_Map.ld + + Core : RV32IMAC + + MCU : FE310-G002 (SiFive) + + Author : Chalandi Amine + + Owner : Chalandi Amine + + Date : 04.06.2021 + + Description : Linker description file for FE310 SiFive + +******************************************************************************************/ + +/****************************************************************************************** + ELF Entrypoint +******************************************************************************************/ +ENTRY(_start) + +/****************************************************************************************** + Globals +******************************************************************************************/ +__FLASH_START_ADDRESS = 0x23000000; +__FLASH_SIZE = 2M; + +__ITCM_START_ADDRESS = 0x22008000; +__ITCM_SIZE = 48K; + +__DTCM_START_ADDRESS = 0x42014000; +__DTCM_SIZE = 48K; + +__STACK_START_ADDRESS = 0x42020000; +__STACK_SIZE = 1K; + +__RAM_START_ADDRESS = 0x42020000 + __STACK_SIZE; +__RAM_SIZE = 64K - __STACK_SIZE; + +/****************************************************************************************** + Memory configuration +******************************************************************************************/ + +MEMORY +{ + FLASH(rx) : ORIGIN = __FLASH_START_ADDRESS, LENGTH = __FLASH_SIZE + ITCM(rx) : ORIGIN = __ITCM_START_ADDRESS, LENGTH = __ITCM_SIZE + DTCM(rx) : ORIGIN = __DTCM_START_ADDRESS, LENGTH = __DTCM_SIZE + STACK(rw) : ORIGIN = __STACK_START_ADDRESS, LENGTH = __STACK_SIZE + RAM(rwx) : ORIGIN = __RAM_START_ADDRESS, LENGTH = __RAM_SIZE +} + +/****************************************************************************************** + Sections definition +******************************************************************************************/ +SECTIONS +{ + /* Program code (text) */ + .text : ALIGN(4) + { + PROVIDE(__CODE_BASE_ADDRESS = .); + *(.boot) + *(.text) + . = ALIGN(4); + } > FLASH + + /* Read-only data (.rodata) */ + .rodata : ALIGN(4) + { + PROVIDE(__RODATA_BASE_ADDRESS = .); + *(.rodata) + } > FLASH + + /* Section for constructors */ + .ctors : ALIGN(4) + { + PROVIDE(__CTOR_LIST__ = .); + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + LONG(-1) ; + PROVIDE(__CTOR_END__ = .); + . = ALIGN(4); + } > FLASH + + + /* Section for destructors */ + .dtors : ALIGN(4) + { + PROVIDE(__DTOR_LIST__ = .); + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array)) + LONG(-1) ; + PROVIDE(__DTOR_END__ = .); + . = ALIGN(4); + } > FLASH + + /* Runtime clear table */ + .clear_sec : ALIGN(4) + { + PROVIDE(__RUNTIME_CLEAR_TABLE = .) ; + LONG(0 + ADDR(.bss)); LONG(SIZEOF(.bss)); + LONG(-1); LONG(-1); + . = ALIGN(4); + } > FLASH + + /* Runtime copy table */ + .copy_sec : ALIGN(4) + { + PROVIDE(__RUNTIME_COPY_TABLE = .) ; + LONG(LOADADDR(.data)); LONG(0 + ADDR(.data)); LONG(SIZEOF(.data)); + LONG(LOADADDR(.sdata)); LONG(0 + ADDR(.sdata)); LONG(SIZEOF(.sdata)); + LONG(-1); LONG(-1); LONG(-1); + . = ALIGN(4); + PROVIDE(__CODE_END_ADDRESS = .); + } > FLASH + + /* The ROM-to-RAM initialized data sections */ + .data : ALIGN(4) + { + *(.data) + *(.data*) + . = ALIGN(4); + } > RAM AT>FLASH + + .sdata : ALIGN(4) + { + *(.sdata) + . = ALIGN(4); + } > RAM AT>FLASH + + + + /* The uninitialized (zero-cleared) data sections */ + .bss : ALIGN(4) + { + *(.bss) + *(.bss*) + . = ALIGN(4); + } > RAM + + .sbss : ALIGN(4) + { + *(.sbss) + . = ALIGN(4); + } > RAM + + /* stack definition */ + .stack : + { + . = ALIGN(MAX(__STACK_SIZE , .), 8); + PROVIDE(__STACK_TOP = .) ; + } > STACK + +} diff --git a/ref_app/target/micros/bl602_sifive_e24_riscv/make/bl602_sifive_e24_riscv_files.gmk b/ref_app/target/micros/bl602_sifive_e24_riscv/make/bl602_sifive_e24_riscv_files.gmk new file mode 100644 index 000000000..47f364a14 --- /dev/null +++ b/ref_app/target/micros/bl602_sifive_e24_riscv/make/bl602_sifive_e24_riscv_files.gmk @@ -0,0 +1,15 @@ +# +# Copyright Christopher Kormanyos 2025. +# Distributed under the Boost Software License, +# Version 1.0. (See accompanying file LICENSE_1_0.txt +# or copy at http://www.boost.org/LICENSE_1_0.txt) +# + +# ------------------------------------------------------------------------------ +# File list of the target-specific files in the project +# ------------------------------------------------------------------------------ + +FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ + $(PATH_TGT)/Code/Startup/boot \ + $(PATH_TGT)/startup/intvect \ + $(PATH_TGT)/startup/Startup diff --git a/ref_app/target/micros/bl602_sifive_e24_riscv/make/bl602_sifive_e24_riscv_flags.gmk b/ref_app/target/micros/bl602_sifive_e24_riscv/make/bl602_sifive_e24_riscv_flags.gmk new file mode 100644 index 000000000..f1528873b --- /dev/null +++ b/ref_app/target/micros/bl602_sifive_e24_riscv/make/bl602_sifive_e24_riscv_flags.gmk @@ -0,0 +1,70 @@ +# Copyright Christopher Kormanyos 2025. +# Distributed under the Boost Software License, +# Version 1.0. (See accompanying file LICENSE_1_0.txt +# or copy at http://www.boost.org/LICENSE_1_0.txt) +# + +# ------------------------------------------------------------------------------ +# compiler flags for the target architecture +# ------------------------------------------------------------------------------ + +GCC_TARGET := riscv-none-elf +GCC_PREFIX := riscv-none-elf + +GCC_VERSION := 15.2.0 + +TGT_SUFFIX = elf + +ARCH := -mcpu=sifive-e24 \ + -mabi=ilp32 \ + -msmall-data-limit=0 \ + -falign-functions=4 + +TGT_ALLFLAGS = -O2 \ + $(ARCH) \ + -DPRINTF_INCLUDE_CONFIG_H \ + -fomit-frame-pointer \ + -fno-reorder-blocks-and-partition \ + -fno-reorder-functions + + +TGT_CFLAGS = -std=c11 \ + -Wunsuffixed-float-constants \ + $(TGT_ALLFLAGS) + +TGT_CXXFLAGS = -std=c++23 \ + -Wno-psabi \ + $(TGT_ALLFLAGS) + +TGT_INCLUDES := + +TGT_AFLAGS = $(TGT_ALLFLAGS) + +TGT_LDFLAGS = -nostdlib \ + -nostartfiles \ + -Wl,--gc-sections \ + -e _start \ + -Wl,-Map,$(APP).map \ + -T $(LINKER_DEFINITION_FILE) + + +OBJCOPY := $(PATH_TOOLS_CC)/$(GCC_PREFIX)-objcopy.exe + +ifeq ($(TYP_OS),WIN) +OBJCOPY := $(subst /,\,$(PATH_TOOLS_CC)/$(GCC_PREFIX)-objcopy.exe) +endif + +NAME_IMAGE_FILE := $(APP) + +RULE_SPECIAL_MAKE_IMAGE_FILE := $(ECHO) "+++ creating special image file $(NAME_IMAGE_FILE).img" \ + && $(OBJCOPY) $(APP).$(TGT_SUFFIX) -O binary $(NAME_IMAGE_FILE).img + +ifeq ($(TYP_OS),WIN) + +BL602_BFLASH_TOOL := $(PATH_TOOLS)/BL602/flasher/blflash.exe + +RULE_SPECIAL_MAKE_FLASH_BATCH := $(ECHO) "+++ creating flash batch file $(PATH_BIN)/flash.bat" \ + && copy /Y $(subst /,\\,$(BL602_BFLASH_TOOL)) $(subst /,\,$(CURDIR)/bin) > 2 > NUL \ + && $(ECHO) "$(subst /,\\,./$(notdir $(BL602_BFLASH_TOOL))) flash ./$(notdir $(NAME_IMAGE_FILE).img) --baud-rate 230400 --initial-baud-rate 230400 --port COM3"> $(CURDIR)/bin/flash.bat + +endif diff --git a/ref_app/target/micros/bl602_sifive_e24_riscv/startup/Startup.c b/ref_app/target/micros/bl602_sifive_e24_riscv/startup/Startup.c new file mode 100644 index 000000000..1fb7dfe6a --- /dev/null +++ b/ref_app/target/micros/bl602_sifive_e24_riscv/startup/Startup.c @@ -0,0 +1,188 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +// Originally from: +// *************************************************************************************** +// Filename : Startup.c +// +// Author : Chalandi Amine +// +// Owner : Chalandi Amine +// +// Date : 11.03.2020 +// +// Description : C/C++ Runtime Setup (Crt0) +// +// *************************************************************************************** +//========================================================================================= +// Types definitions +//========================================================================================= +typedef struct +{ + unsigned long sourceAddr; /* Source Address (section in ROM memory) */ + unsigned long targetAddr; /* Target Address (section in RAM memory) */ + unsigned long size; /* length of section (bytes) */ +} runtimeCopyTable_t; + +typedef struct +{ + unsigned long addr; /* Source Address (section in RAM memory) */ + unsigned long size; /* Length of section (bytes) */ +} runtimeClearTable_t; + +//========================================================================================= +// Linker variables +//========================================================================================= +extern const runtimeCopyTable_t __RUNTIME_COPY_TABLE[]; +extern const runtimeClearTable_t __RUNTIME_CLEAR_TABLE[]; +extern unsigned long __CTOR_LIST__[]; + +//========================================================================================= +// Defines +//========================================================================================= +#define __STARTUP_RUNTIME_COPYTABLE (runtimeCopyTable_t*)(&__RUNTIME_COPY_TABLE[0]) +#define __STARTUP_RUNTIME_CLEARTABLE (runtimeClearTable_t*)(&__RUNTIME_CLEAR_TABLE[0]) +#define __STARTUP_RUNTIME_CTORS (unsigned long*)(&__CTOR_LIST__[0]) + +//========================================================================================= +// Function prototype +//========================================================================================= +void Startup_Init(void); +static void Startup_InitRam(void); +static void Startup_InitCtors(void); +static void Startup_RunApplication(void); +static void Startup_Unexpected_Exit(void); +static void Startup_InitMcuSystem(void); + +//========================================================================================= +// Extern function prototype +//========================================================================================= +int main(void) __attribute__((used,noinline)); + +//----------------------------------------------------------------------------------------- +/// \brief Startup_Init function +/// +/// \param void +/// +/// \return void +//----------------------------------------------------------------------------------------- +void Startup_Init(void) __attribute__((used,noinline)); + +void Startup_Init(void) +{ + /* Initialize the MCU system */ + Startup_InitMcuSystem(); + + /* Initialize the RAM memory */ + Startup_InitRam(); + + /* Initialize the non-local C++ objects */ + Startup_InitCtors(); + + /* Run the main application */ + Startup_RunApplication(); + +} + +//----------------------------------------------------------------------------------------- +/// \brief Startup_InitRam function +/// +/// \param void +/// +/// \return void +//----------------------------------------------------------------------------------------- +static void Startup_InitRam(void) +{ + unsigned long ClearTableIdx = 0; + unsigned long CopyTableIdx = 0; + + /* Clear Table */ + while((__STARTUP_RUNTIME_CLEARTABLE)[ClearTableIdx].addr != (unsigned long)-1 && (__STARTUP_RUNTIME_CLEARTABLE)[ClearTableIdx].size != (unsigned long)-1) + { + for(unsigned long idx = 0; idx < ((unsigned long)((__STARTUP_RUNTIME_CLEARTABLE)[ClearTableIdx].size) / 4); idx++) + { + ((unsigned long*)((__STARTUP_RUNTIME_CLEARTABLE)[ClearTableIdx].addr))[idx] = 0; + } + + ClearTableIdx++; + } + + /* Copy Table */ + while((__STARTUP_RUNTIME_COPYTABLE)[CopyTableIdx].sourceAddr != (unsigned long)-1 && + (__STARTUP_RUNTIME_COPYTABLE)[CopyTableIdx].targetAddr != (unsigned long)-1 && + (__STARTUP_RUNTIME_COPYTABLE)[CopyTableIdx].size != (unsigned long)-1 + ) + { + for(unsigned long idx = 0; idx < ((unsigned long)((__STARTUP_RUNTIME_COPYTABLE)[CopyTableIdx].size) / 4); idx++) + { + ((unsigned long*)((__STARTUP_RUNTIME_COPYTABLE)[CopyTableIdx].targetAddr))[idx] = + ((unsigned long*)((__STARTUP_RUNTIME_COPYTABLE)[CopyTableIdx].sourceAddr))[idx]; + } + + CopyTableIdx++; + } +} + +//----------------------------------------------------------------------------------------- +/// \brief Startup_InitCtors function +/// +/// \param void +/// +/// \return void +//----------------------------------------------------------------------------------------- +static void Startup_InitCtors(void) +{ + unsigned long CtorIdx = 0U; + + while((__STARTUP_RUNTIME_CTORS)[CtorIdx] != ((unsigned long)-1)) + { + ((void (*)(void))((__STARTUP_RUNTIME_CTORS)[CtorIdx++]))(); + } +} + +//----------------------------------------------------------------------------------------- +/// \brief Startup_RunApplication function +/// +/// \param void +/// +/// \return void +//----------------------------------------------------------------------------------------- +static void Startup_RunApplication(void) +{ + /* check the weak function */ + if((unsigned int) &main != 0) + { + /* Call the main function */ + main(); + } + + /* Catch unexpected exit from main or if main does not exist */ + Startup_Unexpected_Exit(); +} + +//----------------------------------------------------------------------------------------- +/// \brief Startup_Unexpected_Exit function +/// +/// \param void +/// +/// \return void +//----------------------------------------------------------------------------------------- +static void Startup_Unexpected_Exit(void) +{ + for(;;); +} +//----------------------------------------------------------------------------------------- +/// \brief Startup_InitMcuSystem function +/// +/// \param void +/// +/// \return void +//----------------------------------------------------------------------------------------- +static void Startup_InitMcuSystem(void) +{ + /* system clock is set by the bootROM */ +} \ No newline at end of file diff --git a/ref_app/target/micros/bl602_sifive_e24_riscv/startup/boot.s b/ref_app/target/micros/bl602_sifive_e24_riscv/startup/boot.s new file mode 100644 index 000000000..1da35e909 --- /dev/null +++ b/ref_app/target/micros/bl602_sifive_e24_riscv/startup/boot.s @@ -0,0 +1,73 @@ +/****************************************************************************************** + Filename : boot.s + + Core : RV32IMAFCB (SiFive E24 RISC-V) + + MCU : BL602 + + Author : Chalandi Amine + + Owner : Chalandi Amine + + Date : 22.10.2025 + + Description : boot routine + +******************************************************************************************/ + +.extern InterruptVectorTable + +/******************************************************************************************* + \brief + + \param + + \return +********************************************************************************************/ +.section .boot +.type _start, @function +.align 2 +.globl _start + +_start: + /* note: The system clock is set to 160MHz by the BL602 bootROM + RISC-V mtime clock (rtc_toggle signal) is set to 10MHz + */ + + /* setup the exception vector table (CLIC vectored) */ + la t0, ExceptionVectorTable + addi t0, t0, 3 + csrw mtvec, t0 + + /* setup the interrupt vector table (CLIC vectored) */ + la t0, InterruptVectorTable + csrw 0x00000307, t0 + + /* enable global interrupt flag */ + csrsi mstatus, (1ul << 3u) + + /* setup the stack pointer */ + la sp, __STACK_TOP + + /* setup the C/C++ runtime environment */ + j Startup_Init + + +.size _start, .-_start + +/******************************************************************************************* + \brief + + \param + + \return +********************************************************************************************/ +.section .text.vivt +.type ExceptionVectorTable, @function +.align 6 +.globl ExceptionVectorTable + +ExceptionVectorTable: + j . + +.size ExceptionVectorTable, .-ExceptionVectorTable diff --git a/ref_app/target/micros/bl602_sifive_e24_riscv/startup/intvect.c b/ref_app/target/micros/bl602_sifive_e24_riscv/startup/intvect.c new file mode 100644 index 000000000..5e42685ac --- /dev/null +++ b/ref_app/target/micros/bl602_sifive_e24_riscv/startup/intvect.c @@ -0,0 +1,136 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2025. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +// Originally from: +/****************************************************************************************************** + Filename : intvect.c + + Core : RV32IMAFCB (SiFive E24 RISC-V) + + MCU : BL602 + + Author : Chalandi Amine + + Owner : Chalandi Amine + + Date : 22.10.2025 + + Description : Interrupt vector table implementation + +******************************************************************************************************/ + +//===================================================================================================== +// Includes +//===================================================================================================== +#include + +//===================================================================================================== +// Functions prototype +//===================================================================================================== +static void UndefinedHandler(void); +static void UndefinedHandler(void){ for(;;); } + +void Isr_SW_Interrupt (void) __attribute__((weak, alias("UndefinedHandler"))); +void Isr_TIMER_Interrupt (void) __attribute__((weak, alias("UndefinedHandler"))); +void Isr_Ext_Interrupt (void) __attribute__((weak, alias("UndefinedHandler"))); +void Isr_CLIC_SW_Interrupt (void) __attribute__((weak, alias("UndefinedHandler"))); +void L1C_BMX_ERR (void) __attribute__((weak, alias("UndefinedHandler"))); +void L1C_BMX_TO (void) __attribute__((weak, alias("UndefinedHandler"))); +void DMA_BMX_ERR (void) __attribute__((weak, alias("UndefinedHandler"))); +void IRTX (void) __attribute__((weak, alias("UndefinedHandler"))); +void IRRX (void) __attribute__((weak, alias("UndefinedHandler"))); +void GPADC_DMA (void) __attribute__((weak, alias("UndefinedHandler"))); +void SPI (void) __attribute__((weak, alias("UndefinedHandler"))); +void UART0 (void) __attribute__((weak, alias("UndefinedHandler"))); +void UART1 (void) __attribute__((weak, alias("UndefinedHandler"))); +void I2C (void) __attribute__((weak, alias("UndefinedHandler"))); +void PWM (void) __attribute__((weak, alias("UndefinedHandler"))); +void TIMER_CH0 (void) __attribute__((weak, alias("UndefinedHandler"))); +void TIMER_CH1 (void) __attribute__((weak, alias("UndefinedHandler"))); +void TIMER_WDT (void) __attribute__((weak, alias("UndefinedHandler"))); +void GPIO_INT0 (void) __attribute__((weak, alias("UndefinedHandler"))); +void PDS_WAKEUP (void) __attribute__((weak, alias("UndefinedHandler"))); +void HBN_OUT0 (void) __attribute__((weak, alias("UndefinedHandler"))); +void HBN_OUT1 (void) __attribute__((weak, alias("UndefinedHandler"))); + +typedef void (*InterruptHandler)(void); + +//===================================================================================================== +// Interrupt vector table +//===================================================================================================== +const InterruptHandler __attribute__((aligned(64))) InterruptVectorTable[] = +{ + (InterruptHandler)&UndefinedHandler, /* IRQ 00 Reserved */ + (InterruptHandler)&UndefinedHandler, /* IRQ 01 Reserved */ + (InterruptHandler)&UndefinedHandler, /* IRQ 02 Reserved */ + (InterruptHandler)&Isr_SW_Interrupt, /* IRQ 03 SW Interrupt */ + (InterruptHandler)&UndefinedHandler, /* IRQ 04 Reserved */ + (InterruptHandler)&UndefinedHandler, /* IRQ 05 Reserved */ + (InterruptHandler)&UndefinedHandler, /* IRQ 06 Reserved */ + (InterruptHandler)&Isr_TIMER_Interrupt, /* IRQ 07 Timer Interrupt */ + (InterruptHandler)&UndefinedHandler, /* IRQ 08 Reserved */ + (InterruptHandler)&UndefinedHandler, /* IRQ 09 Reserved */ + (InterruptHandler)&UndefinedHandler, /* IRQ 10 Reserved */ + (InterruptHandler)&Isr_Ext_Interrupt, /* IRQ 11 External Interrupt */ + (InterruptHandler)&Isr_CLIC_SW_Interrupt, /* IRQ 12 CLIC SW Interrupt */ + (InterruptHandler)&UndefinedHandler, /* IRQ 13 Reserved */ + (InterruptHandler)&UndefinedHandler, /* IRQ 14 Reserved */ + (InterruptHandler)&UndefinedHandler, /* IRQ 15 Reserved */ + (InterruptHandler)&UndefinedHandler, /* IRQ 16 Local Interrupt (IRQ_NUM_BASE + 00) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 17 Local Interrupt (IRQ_NUM_BASE + 01) */ + (InterruptHandler)&L1C_BMX_ERR, /* IRQ 18 Local Interrupt (IRQ_NUM_BASE + 02) */ + (InterruptHandler)&L1C_BMX_TO, /* IRQ 19 Local Interrupt (IRQ_NUM_BASE + 03) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 20 Local Interrupt (IRQ_NUM_BASE + 04) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 21 Local Interrupt (IRQ_NUM_BASE + 05) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 22 Local Interrupt (IRQ_NUM_BASE + 06) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 23 Local Interrupt (IRQ_NUM_BASE + 07) */ + (InterruptHandler)&DMA_BMX_ERR, /* IRQ 24 Local Interrupt (IRQ_NUM_BASE + 08) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 25 Local Interrupt (IRQ_NUM_BASE + 09) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 26 Local Interrupt (IRQ_NUM_BASE + 10) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 27 Local Interrupt (IRQ_NUM_BASE + 11) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 28 Local Interrupt (IRQ_NUM_BASE + 12) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 29 Local Interrupt (IRQ_NUM_BASE + 13) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 30 Local Interrupt (IRQ_NUM_BASE + 14) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 31 Local Interrupt (IRQ_NUM_BASE + 15) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 32 Local Interrupt (IRQ_NUM_BASE + 16) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 33 Local Interrupt (IRQ_NUM_BASE + 17) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 34 Local Interrupt (IRQ_NUM_BASE + 18) */ + (InterruptHandler)&IRTX, /* IRQ 35 Local Interrupt (IRQ_NUM_BASE + 19) */ + (InterruptHandler)&IRRX, /* IRQ 36 Local Interrupt (IRQ_NUM_BASE + 20) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 37 Local Interrupt (IRQ_NUM_BASE + 21) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 38 Local Interrupt (IRQ_NUM_BASE + 22) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 39 Local Interrupt (IRQ_NUM_BASE + 23) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 40 Local Interrupt (IRQ_NUM_BASE + 24) */ + (InterruptHandler)&GPADC_DMA, /* IRQ 41 Local Interrupt (IRQ_NUM_BASE + 25) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 42 Local Interrupt (IRQ_NUM_BASE + 26) */ + (InterruptHandler)&SPI, /* IRQ 43 Local Interrupt (IRQ_NUM_BASE + 27) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 44 Local Interrupt (IRQ_NUM_BASE + 28) */ + (InterruptHandler)&UART0, /* IRQ 45 Local Interrupt (IRQ_NUM_BASE + 29) */ + (InterruptHandler)&UART1, /* IRQ 46 Local Interrupt (IRQ_NUM_BASE + 30) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 47 Local Interrupt (IRQ_NUM_BASE + 31) */ + (InterruptHandler)&I2C, /* IRQ 48 Local Interrupt (IRQ_NUM_BASE + 32) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 49 Local Interrupt (IRQ_NUM_BASE + 33) */ + (InterruptHandler)&PWM, /* IRQ 50 Local Interrupt (IRQ_NUM_BASE + 34) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 51 Local Interrupt (IRQ_NUM_BASE + 35) */ + (InterruptHandler)&TIMER_CH0, /* IRQ 52 Local Interrupt (IRQ_NUM_BASE + 36) */ + (InterruptHandler)&TIMER_CH1, /* IRQ 53 Local Interrupt (IRQ_NUM_BASE + 37) */ + (InterruptHandler)&TIMER_WDT, /* IRQ 54 Local Interrupt (IRQ_NUM_BASE + 38) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 55 Local Interrupt (IRQ_NUM_BASE + 39) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 56 Local Interrupt (IRQ_NUM_BASE + 40) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 57 Local Interrupt (IRQ_NUM_BASE + 41) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 58 Local Interrupt (IRQ_NUM_BASE + 42) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 59 Local Interrupt (IRQ_NUM_BASE + 43) */ + (InterruptHandler)&GPIO_INT0, /* IRQ 60 Local Interrupt (IRQ_NUM_BASE + 44) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 61 Local Interrupt (IRQ_NUM_BASE + 45) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 62 Local Interrupt (IRQ_NUM_BASE + 46) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 63 Local Interrupt (IRQ_NUM_BASE + 47) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 64 Local Interrupt (IRQ_NUM_BASE + 48) */ + (InterruptHandler)&UndefinedHandler, /* IRQ 65 Local Interrupt (IRQ_NUM_BASE + 49) */ + (InterruptHandler)&PDS_WAKEUP, /* IRQ 66 Local Interrupt (IRQ_NUM_BASE + 50) */ + (InterruptHandler)&HBN_OUT0, /* IRQ 67 Local Interrupt (IRQ_NUM_BASE + 51) */ + (InterruptHandler)&HBN_OUT1 /* IRQ 68 Local Interrupt (IRQ_NUM_BASE + 52) */ +}; diff --git a/ref_app/target/micros/lpc11c24/make/lpc11c24_files.gmk b/ref_app/target/micros/lpc11c24/make/lpc11c24_files.gmk index fda7e5b7e..8818d3ba2 100644 --- a/ref_app/target/micros/lpc11c24/make/lpc11c24_files.gmk +++ b/ref_app/target/micros/lpc11c24/make/lpc11c24_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2018. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32f100 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/riscvfe310/make/riscvfe310_files.gmk b/ref_app/target/micros/riscvfe310/make/riscvfe310_files.gmk index b524a0f7e..52e5cd9a8 100644 --- a/ref_app/target/micros/riscvfe310/make/riscvfe310_files.gmk +++ b/ref_app/target/micros/riscvfe310/make/riscvfe310_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2022. +# Copyright Christopher Kormanyos 2022 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32f100 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/riscvfe310/make/riscvfe310_flags.gmk b/ref_app/target/micros/riscvfe310/make/riscvfe310_flags.gmk index 7ff5fefd1..bf223c937 100644 --- a/ref_app/target/micros/riscvfe310/make/riscvfe310_flags.gmk +++ b/ref_app/target/micros/riscvfe310/make/riscvfe310_flags.gmk @@ -1,4 +1,4 @@ -# Copyright Christopher Kormanyos 2022 - 2024. +# Copyright Christopher Kormanyos 2022 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -11,7 +11,7 @@ GCC_TARGET := riscv-none-elf GCC_PREFIX := riscv-none-elf -GCC_VERSION := 14.2.0 +GCC_VERSION := 15.2.0 TGT_SUFFIX = elf diff --git a/ref_app/target/micros/rl78/make/rl78_files.gmk b/ref_app/target/micros/rl78/make/rl78_files.gmk index a5b1861d6..dc517046a 100644 --- a/ref_app/target/micros/rl78/make/rl78_files.gmk +++ b/ref_app/target/micros/rl78/make/rl78_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2013. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the rl78 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/rpi_pico_rp2040/make/rpi_pico_rp2040_files.gmk b/ref_app/target/micros/rpi_pico_rp2040/make/rpi_pico_rp2040_files.gmk index b7e6c25e5..5f86c57da 100644 --- a/ref_app/target/micros/rpi_pico_rp2040/make/rpi_pico_rp2040_files.gmk +++ b/ref_app/target/micros/rpi_pico_rp2040/make/rpi_pico_rp2040_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2024. +# Copyright Christopher Kormanyos 2024 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32f1xx files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/$(TGT)/mcal_cpu_rp2040 \ diff --git a/ref_app/target/micros/rx63n/make/rx63n_files.gmk b/ref_app/target/micros/rx63n/make/rx63n_files.gmk index 5f85efdc1..6a894be59 100644 --- a/ref_app/target/micros/rx63n/make/rx63n_files.gmk +++ b/ref_app/target/micros/rx63n/make/rx63n_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2013. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the rl78 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/stm32f100/make/stm32f100_files.gmk b/ref_app/target/micros/stm32f100/make/stm32f100_files.gmk index 726f6b5da..fa3be41a9 100644 --- a/ref_app/target/micros/stm32f100/make/stm32f100_files.gmk +++ b/ref_app/target/micros/stm32f100/make/stm32f100_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2023. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32f1xx files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/stm32f407/make/stm32f407_files.gmk b/ref_app/target/micros/stm32f407/make/stm32f407_files.gmk index e13695250..4958e583a 100644 --- a/ref_app/target/micros/stm32f407/make/stm32f407_files.gmk +++ b/ref_app/target/micros/stm32f407/make/stm32f407_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2022. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32f407 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/stm32f429/make/stm32f429_files.gmk b/ref_app/target/micros/stm32f429/make/stm32f429_files.gmk index fc7d54130..4958e583a 100644 --- a/ref_app/target/micros/stm32f429/make/stm32f429_files.gmk +++ b/ref_app/target/micros/stm32f429/make/stm32f429_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2023. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32f4xx files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/stm32f446/make/stm32f446_files.gmk b/ref_app/target/micros/stm32f446/make/stm32f446_files.gmk index b41931372..fa3be41a9 100644 --- a/ref_app/target/micros/stm32f446/make/stm32f446_files.gmk +++ b/ref_app/target/micros/stm32f446/make/stm32f446_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2023. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32f4xx files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/stm32h7a3/make/stm32h7a3_files.gmk b/ref_app/target/micros/stm32h7a3/make/stm32h7a3_files.gmk index 4d5f4c4c2..fa3be41a9 100644 --- a/ref_app/target/micros/stm32h7a3/make/stm32h7a3_files.gmk +++ b/ref_app/target/micros/stm32h7a3/make/stm32h7a3_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2022. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32h7a3 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/stm32l100c/make/stm32l100c_files.gmk b/ref_app/target/micros/stm32l100c/make/stm32l100c_files.gmk index f913a8764..fa3be41a9 100644 --- a/ref_app/target/micros/stm32l100c/make/stm32l100c_files.gmk +++ b/ref_app/target/micros/stm32l100c/make/stm32l100c_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2023. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32l1xx files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/stm32l432/make/stm32l432_files.gmk b/ref_app/target/micros/stm32l432/make/stm32l432_files.gmk index 3603435e4..fa3be41a9 100644 --- a/ref_app/target/micros/stm32l432/make/stm32l432_files.gmk +++ b/ref_app/target/micros/stm32l432/make/stm32l432_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2024. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32f4xx files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/v850es_fx2/make/v850es_fx2_files.gmk b/ref_app/target/micros/v850es_fx2/make/v850es_fx2_files.gmk index f86e62c3f..314239909 100644 --- a/ref_app/target/micros/v850es_fx2/make/v850es_fx2_files.gmk +++ b/ref_app/target/micros/v850es_fx2/make/v850es_fx2_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2007 - 2021. +# Copyright Christopher Kormanyos 2007 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the rl78 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/wch_ch32v307/make/wch_ch32v307_files.gmk b/ref_app/target/micros/wch_ch32v307/make/wch_ch32v307_files.gmk index 022f3e2ca..03e25aefb 100644 --- a/ref_app/target/micros/wch_ch32v307/make/wch_ch32v307_files.gmk +++ b/ref_app/target/micros/wch_ch32v307/make/wch_ch32v307_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2022 - 2024. +# Copyright Christopher Kormanyos 2022 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32f100 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/wch_ch32v307/make/wch_ch32v307_flags.gmk b/ref_app/target/micros/wch_ch32v307/make/wch_ch32v307_flags.gmk index f33d0993d..daa9a8f93 100644 --- a/ref_app/target/micros/wch_ch32v307/make/wch_ch32v307_flags.gmk +++ b/ref_app/target/micros/wch_ch32v307/make/wch_ch32v307_flags.gmk @@ -1,4 +1,4 @@ -# Copyright Christopher Kormanyos 2022 - 2024. +# Copyright Christopher Kormanyos 2022 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -11,7 +11,7 @@ GCC_TARGET := riscv-none-elf GCC_PREFIX := riscv-none-elf -GCC_VERSION := 14.2.0 +GCC_VERSION := 15.2.0 TGT_SUFFIX = elf diff --git a/ref_app/target/micros/wch_ch32v307_llvm/make/wch_ch32v307_llvm_files.gmk b/ref_app/target/micros/wch_ch32v307_llvm/make/wch_ch32v307_llvm_files.gmk index 022f3e2ca..03e25aefb 100644 --- a/ref_app/target/micros/wch_ch32v307_llvm/make/wch_ch32v307_llvm_files.gmk +++ b/ref_app/target/micros/wch_ch32v307_llvm/make/wch_ch32v307_llvm_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2022 - 2024. +# Copyright Christopher Kormanyos 2022 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the stm32f100 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/x86_64-w64-mingw32/make/x86_64-w64-mingw32_files.gmk b/ref_app/target/micros/x86_64-w64-mingw32/make/x86_64-w64-mingw32_files.gmk index bdfeca9e6..f7a6ef21b 100644 --- a/ref_app/target/micros/x86_64-w64-mingw32/make/x86_64-w64-mingw32_files.gmk +++ b/ref_app/target/micros/x86_64-w64-mingw32/make/x86_64-w64-mingw32_files.gmk @@ -1,12 +1,12 @@ # -# Copyright Christopher Kormanyos 2019. +# Copyright Christopher Kormanyos 2019 - 2025. # Distributed under the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt # or copy at http://www.boost.org/LICENSE_1_0.txt) # # ------------------------------------------------------------------------------ -# File list of the x86_64-w64-mingw32 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/$(TGT)/mcal_wdg_watchdog diff --git a/ref_app/target/micros/xtensa32/make/xtensa32_files.gmk b/ref_app/target/micros/xtensa32/make/xtensa32_files.gmk index 65d9b2d2c..69a45e26e 100644 --- a/ref_app/target/micros/xtensa32/make/xtensa32_files.gmk +++ b/ref_app/target/micros/xtensa32/make/xtensa32_files.gmk @@ -6,7 +6,7 @@ # # ------------------------------------------------------------------------------ -# File list of the xtensa32 esspressif ESP32 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT = $(PATH_APP)/mcal/$(TGT)/from_sdk/esp32-hal-gpio \ diff --git a/ref_app/target/micros/xtensa_esp32_s3/make/xtensa_esp32_s3_files.gmk b/ref_app/target/micros/xtensa_esp32_s3/make/xtensa_esp32_s3_files.gmk index 13d0131c9..2bb3fa47a 100644 --- a/ref_app/target/micros/xtensa_esp32_s3/make/xtensa_esp32_s3_files.gmk +++ b/ref_app/target/micros/xtensa_esp32_s3/make/xtensa_esp32_s3_files.gmk @@ -6,7 +6,7 @@ # # ------------------------------------------------------------------------------ -# File list of the ESP32-S3 files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_TGT := $(PATH_APP)/mcal/mcal_gcc_cxx_completion \ diff --git a/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/make/xtensa_esp32_s3_riscv_cop_files.gmk b/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/make/xtensa_esp32_s3_riscv_cop_files.gmk index 81f51e798..63e472ac5 100644 --- a/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/make/xtensa_esp32_s3_riscv_cop_files.gmk +++ b/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/make/xtensa_esp32_s3_riscv_cop_files.gmk @@ -6,7 +6,7 @@ # # ------------------------------------------------------------------------------ -# File list of the ESP32-S3 RISC-V coprocessor files in the project +# File list of the target-specific files in the project # ------------------------------------------------------------------------------ FILES_CPP := diff --git a/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/make/xtensa_esp32_s3_riscv_cop_flags.gmk b/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/make/xtensa_esp32_s3_riscv_cop_flags.gmk index 1571a9098..89cfcb7dc 100644 --- a/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/make/xtensa_esp32_s3_riscv_cop_flags.gmk +++ b/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/make/xtensa_esp32_s3_riscv_cop_flags.gmk @@ -11,7 +11,7 @@ GCC_TARGET := riscv-none-elf GCC_PREFIX := riscv-none-elf -GCC_VERSION := 14.2.0 +GCC_VERSION := 15.2.0 TGT_SUFFIX := elf