Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI All Things! #1385

Open
1 of 4 tasks
LeStarch opened this issue Apr 12, 2022 · 5 comments
Open
1 of 4 tasks

CI All Things! #1385

LeStarch opened this issue Apr 12, 2022 · 5 comments
Labels
enhancement High Priority High Priority issue that needs to be resolved.

Comments

@LeStarch
Copy link
Collaborator

LeStarch commented Apr 12, 2022

F´ Version
Affected Component

Feature Description

More improvements that can be made to CI!

  • Various FW_CONFIG options
  • Baremetal support
  • RPI CI reboot on failure: the RPI CI setup often fails for reasons unknown that a reboot of the pi fixes. It could auto reboot on failure and require less hand-holding.
  • Configuration flags (FpConfig.hpp)
    ...more will be added
@LeStarch LeStarch added enhancement Low Priority Low prioirty items given the current project priorities. labels Apr 12, 2022
@SterlingPeet
Copy link
Contributor

reminder to myself that I need to gather up some hardware

@ThibFrgsGmz
Copy link
Contributor

Maybe it would be interesting to put in the CI the construction of a reference binary from several buildchain.

From what I could see, this is a good practice for software trying to support different architectures, like ThreadX which has in its CI the build with Cortex-M0/3/4/7.

If we follow this logic, it could be interesting to add in the CI the build of the reference binary with the following buildchain (for example):

  • ARM R5 g++ compiler/linker (cortex-R5 baremetal): armr5-none-eabi-g++
  • ARM v8 Linux g++ compiler/linker (cortex-A53 linux): aarch64-linux-gnu-g++
  • ARM v8 g++ compiler/linker (cortex-A9 baremetal) : arm-none-eabi-g++
  • GNU RISC-V Cross C++ compiler/binder (baremetal): riscv64-unknown-elf-g++
  • GNU ARM Cross C++ compiler/associator (cortex-M3 baremetal): arm-none-eabi-g++.

Cortex-A53 and Cortex-R5 are integrated on the Zynq UltraScale+MPSoC platforms from Xilinx.

RISC-V is used on the Polarfire SoC from Microchip.

Then, for the execution of the unit tests associated with these cross-compiled binaries, they can be performed on emulators like QEMU or Renode.

@LeStarch
Copy link
Collaborator Author

That is the dream, but first we need solid toolchain implementations for these platforms...

@LeStarch
Copy link
Collaborator Author

#1443 has another CI improvement.

@LeStarch LeStarch added High Priority High Priority issue that needs to be resolved. and removed Low Priority Low prioirty items given the current project priorities. labels Mar 28, 2024
@matt392code
Copy link
Contributor

matt392code commented Dec 28, 2024

Toolchain implementation for ARM R5 (Cortex-R5)
Set up the cross-compiler toolchain structure:
arm-r5-os-support.txt
Create the platform-specific configuration for F Prime:
arm-r5-platform.txt
Create a basic platform support layer:
arm-r5-os-support-1.txt

This implementation provides:
Toolchain Configuration:

  • Sets up ARM cross-compiler
  • Configures appropriate compiler flags for Cortex-R5
  • Enables hardware floating-point unit
  • Sets up optimization flags

Platform Configuration:

  • Defines platform-specific settings
  • Configures memory management
  • Sets up bare metal scheduler options
  • Defines hardware-specific parameters

OS Support Layer:

  • Platform initialization
  • Bare metal scheduling
  • Memory management
  • Task creation and management
  • Hardware-specific features

To use this:
Install the required tools:

sudo apt-get install gcc-arm-none-eabi
sudo apt-get install binutils-arm-none-eabi
sudo apt-get install libnewlib-arm-none-eabi

Configure your build:

cmake -DCMAKE_TOOLCHAIN_FILE=toolchain-arm-r5.cmake -DPLATFORM=arm-r5 ..

Build the project:

make

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement High Priority High Priority issue that needs to be resolved.
Projects
None yet
Development

No branches or pull requests

4 participants