* Demo/CORTEX_LM3S6965_GCC_QEMU: Trim trailing spaces & lines
* Demo/CORTEX_LM3S6965_GCC_QEMU: Fix Eclipse build 1/2 (examples)
It was trying to build the examples, which pulled in symbols such as
`_write` that are not implemented.
* Demo/CORTEX_LM3S6965_GCC_QEMU: Fix Eclipse build 1/2 (discard .ARM.exidx)
Somewhere along the line now there is the .ARM.exidx section in the
files, we don't use exceptions so can just discard it.
* Demo/CORTEX_LM3S6965_GCC_QEMU: Add CMake
* Debug/CORTEX_LM3S6965_GCC_QEMU: Fix Qemu startup
It was tripping on port.c
/* Check that the maximum system call priority is nonzero after
* accounting for the number of priority bits supported by the
* hardware. A priority of 0 is invalid because setting the BASEPRI
* register to 0 unmasks all interrupts, and interrupts with priority 0
* cannot be masked using BASEPRI.
* See https://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html */
configASSERT( ucMaxSysCallPriority );
Inspecting the value ucMaxPriorityValue gave 0xE0, and setting it to
0xE0 complains about overflow in
FreeRTOS/Demo/CORTEX_LM3S6965_GCC_QEMU/LocalDemoFiles/IntQueueTimer.c:57
/* Shift left 5 as only the top 3 bits are implemented. */
IntPrioritySet( INT_TIMER2A, configMAX_SYSCALL_INTERRUPT_PRIORITY + ( 1 << 5 ) );
* Add qemu options to run in headless mode
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
---------
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
* Various Qemu Cortex M3 ports now support picolibc
Allow various Qemu Cortex M3 ports to compile against
picolibc. Also support "-flto" to work correctly.
Tested with picolibc in current Debian 13.
Just use "PICOLIBC=1 make" to switch over from default newlib.
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
* Add ffreestanding
Signed-off-by: Ubuntu <ubuntu@ip-172-31-15-241.ap-south-1.compute.internal>
* Fix formatting check
Signed-off-by: Ubuntu <ubuntu@ip-172-31-15-241.ap-south-1.compute.internal>
---------
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
Signed-off-by: Ubuntu <ubuntu@ip-172-31-15-241.ap-south-1.compute.internal>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
Co-authored-by: Ubuntu <ubuntu@ip-172-31-15-241.ap-south-1.compute.internal>
- Compiling Demo/Common/Minimal/TimerDemo.c with "gcc -flto" breaks the
tests, so add "volatile" modifier to "ucOneShotTimerCounter" to fix
this.
- In Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2/main_networking.c print the
network configuration even more visible.
- In MessageBufferDemo.c and Demo/Posix_GCC/main_full.c fix compiler
warnings from "gcc -Wwrite-strings" by adding a const modifier.
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
Cleanup for clang compiler warnings:
- add "#include" to proper header files
- add "static" modifier to some vars
- if tracing is disabled, do not compile helper functions
- remove unused macro "mainFLASH_TASK_PRIORITY"
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
From looking at the code, I think this more strict error checking
was intended in xIsInterruptStreamBufferDemoStillRunning().
If not, then the else part and var could be completely removed
as dead code.
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
- Change CMakeLists.txt to set the C compiler flags instead
of the C++ compiler flags.
- Change to compiler warnings from "gcc -Wconversion" in
main_full.c.
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
Co-authored-by: Tony Josi <tonyjosi@amazon.com>
* Fix compiler warning "gcc -Wmissing-prototypes" in startup.c.
* For "gcc -flto" fix duplicate labels in asm (startup.c) and mark
some functions as "used" in startup.c and syscalls.c.
* Fix "gcc -Wredundant-decls" in main.c.
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
* clean up warnings from "gcc -Wconversion"
clean up warnings from "gcc -Wconversion"
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
* Fix formatting
---------
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
Co-authored-by: Rahul Kar <karahulx@amazon.com>
This commit updates the __stack_size definition in the
linker flags, changing its value from 350 to 352. This
change ensures that the stack size is a multiple of 16,
aligning the stack pointer (sp) to a 16-byte boundary
as required by the system architecture.
* Demo: RISC-V_RV32_QEMU_VIRT_GCC: Increase the memory for RVA23 compilation
* Demo: RISC-V_RV32_QEMU_VIRT_GCC: Update the regtest to include fpu registers
* Demo: RISC-V_RV32_QEMU_VIRT_GCC: Fix small issues for 64-bit configs
* Demo: RISC-V_RV32_QEMU_VIRT_GCC: Enable FPU unit
* Demo: RISC-V_RV32_QEMU_VIRT_GCC: Enable compilation for RVA23 platforms
* Demo: RISC-V_RV32_QEMU_VIRT_GCC: Fix copyright related CI issues
* Demo: RISC-V_RV32_QEMU_VIRT_GCC: Update submodule manifest
* Demo: RISC-V_RV32_QEMU_VIRT_GCC: Update a few typos and left overs
* Demo: RISC-V_RV32_QEMU_VIRT_GCC: Apply @aggarg's sugestions
* Update pointer to Freertos-Kernel
Compiling this demo with picolibc 1.8.9 (as packaged with Debian trixie)
results in a stack overflow. Increasing the minimal stack size from
80 to 88 bytes resolves this. (Debian trixie arm crosscompiler defaults
to compile/link against picolibc and not newlib anymore.)
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
* * Added TraceRecorder also in IAR project for demo CORTEX_MPS2_QEMU_IAR_GCC.
* * Added TraceRecorder also in IAR project for demo CORTEX_MPS2_QEMU_IAR_GCC.
Cadence/Xtensa: Move Tensilica demos to Partner-Supported-Demos submodule
Add a README to this deprecated demos directory indicating where to
find the latest Tensilica test code.
Signed-off-by: Ian Thompson <ianst@cadence.com>
* Cortex M3 MPS2: fix alignment warning from assembler
Fix assembler alignment warnings for Cortex M3 MPS2:
Warning: section does not have enough alignment to ensure safe PC-relative loads
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
SoftConsole failed to execute MI command to load the RTOSDebug.elf built in this project. Since the debugger couldn't find address `0xe000ed00` defined in ARM processor.
We need to set `$target_riscv` to 1 so that the gdb can be initialized correctly.
On Ubuntu 24.04 ARM64, PTHREAD_STACK_MIN is 0x20000 which does not fit
in unsigned short, size of which is 2 bytes. Casting PTHREAD_STACK_MIN
to unsigned short in FreeRTOSConfig.h results in
configMINIMAL_STACK_SIZE getting defined to 0 which leads to SIGSEV.
This change removes the not needed casting of PTHREAD_STACK_MIN to
unsigned short.
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
From CORTEX_MPU_M3_MPS2_QEMU_GCC remove unused configNUM_TX_DESCRIPTORS
define and remove HEAP3 from as heap_4.c is used.
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
Co-authored-by: Rahul Kar <118818625+kar-rahul-aws@users.noreply.github.com>
Posix_GCC: update compiler options
1. Add to CFLAGS
- add -O0 optimization for debug builds.
- add -O3 optimization for release builds.
2. Update signal handler `handle_sigint()` to use
`_exit()` instead of `exit()`. Normal exit() is not allowed
within a signal handler.
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
For Demo/CORTEX_MPS2_QEMU_IAR_GCC gcc Makefile:
- simplify IMAGE var to already include full path
- clean target also removes mapfile
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
In FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC/syscall.c the
extern definition of g_ulBase ist not used, so remove it.
Also move _heap_bottom and _heap_top to where they are used
in syscall.c.
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
Optimize _sbrk() from runtime to compiletime initialization.
Fix compiler warnings by adjusting (void *) and (char *) types.
Complete function declarations for uart_init() and _getpid().
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
Co-authored-by: Rahul Kar <118818625+kar-rahul-aws@users.noreply.github.com>
Demo/Posix_GCC cleanup
- Guard prvSaveTraceFile() function definition.
- Remove "cid" as it is unused.
- handle_sigint(): quiet compiler warning about unused param.
- main_full.c: prvCheckTask(): Remove unused var "xHeapStats".
Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
* Exclude unnecessary directories from build.
1. "FreeRTOS/Source/example"
2. "FreeRTOS+Trace Recorder/extras"
3. "FreeRTOS+Trace Recorder/kernelports/BareMetal"
4. "FreeRTOS+Trace Recorder/kernelports/ESP-IDF_FreeRTOS"
5. "FreeRTOS+Trace Recorder/kernelports/ThreadX"
6. "FreeRTOS+Trace Recorder/kernelports/Zephyr"
1 is applied to both of "Debug" configuration and "Debug_CodeCoverage" configuration.
Others are applied to only "Debug" configuration because those directories are already excluded from build on "Debug_Coverage" configuration.
* Include path setting is modified.
1.Directory name is modified.("Include" -> "include")
2.New path is added.(FreeRTOS+Trace Recorder/kernelports/FreeRTOS/include)
These modifications are needed to build "Debug" configuration. They are not needed for "Debug_CodeCoverage" configuration because these paths are not used. But these modifications are applied to both of "Debug" configuration and "Debug_CodeCoverage" configuration because of future potential risk.
* [WIN32-MingW Demo] Replace "Exclude from Build" by "Resource Filter".
"Resource Filter" is better than "Exclude from Build" because "Resource Filter" makes excluded directories invisible on Eclipse GUI. But some directories are still "Exclude from Build" because they should be excluded only on "Debug_CodeCoverage" configuration. "Resource Filter" cannot be specified to each configuration separately.
* Code review suggestions
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
---------
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Rahul Kar <118818625+kar-rahul-aws@users.noreply.github.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
* [RISC-V-Qemu-virt_GCC Demo] Add picolibc support
Add minimal picolibc support:
* Use --specs=picolibc.specs to direct gcc at picolibc
* Use -DPICOLIBC_INTEGER_PRINTF_SCANF to enable smaller printf implementation
* Enable configUSE_PICOLIBC_TLS for thread local storage
* Add TLS section to linker script
Signed-off-by: Keith Packard <keithpac@amazon.com>
* [CORTEX_MPU_M3_MPS2_QEMU_GCC Demo] Add picolibc support
Add minimal picolibc support to this demo
* Use --specs=picolibc.specs to direct gcc at picolibc
* Use -DPICOLIBC_INTEGER_PRINTF_SCANF to enable smaller printf implementation
* Enable configUSE_PICOLIBC_TLS for thread local storage
* Add TLS section to linker script
* Replace newlib syscall hooks with picolibc ones
Signed-off-by: Keith Packard <keithpac@amazon.com>
---------
Signed-off-by: Keith Packard <keithpac@amazon.com>
Co-authored-by: Keith Packard <keithpac@amazon.com>
* [WIN32-MSVC Demo] Add tick type width definition based on the target platform.(32bit/64bit)
32bit TickType_t is used on Win32 target. 64bit TickType_t is used on x64 target.
Reason of change: Before this change, 32bit TickType_t is always used in MSVC demo. It is inefficient for 64bit target. In addition, compiler reported warnings for the cast operation between TickType_t and (void *) pointer if the target is x64 because of different width. 64bit TickType_t should be used instead of 32bit if target is 64bit.
* [WIN32-MSVC Demo] Change type of some variables from uint32_t to UBaseType_t.
Reason of change: These variables are cast to/from pointer type in existing codes. x64 compiler reports warnings for the cast operations between uint32_t and pointer type. UBaseType_t solves those warnings because it has same width as pointer type on both of Win32 platform and x64 platform.
* [WIN32-MSVC Demo]Correct prefix of variables and indent to follow coding style guide.
* [WIN32-MSVC Demo]Correct type of the argument in vApplicationGetIdleTaskMemory() prototype declaration.
It is corrected to match original declaration described in task.h.
* [WIN32-MSVC] Add cast operation to solve compiler warnings on x64 platform.
Before this change, compiler claimed that the cast operation to wider type should be applied before other arithmetic operations because of overflow risk. There is no overflow risk here but it is modified to solve compiler warnings.
* [WIN32-MingW Demo] Add tick type width definition based on compiler type.(32bit/64bit)
32bit TickType_t is used if compiler is MinGW32. 64bit TickType_t is used if compiler is MinGW64.
Reason of change: Before this change, 32bit TickType_t is always used in MinGW demo. It is inefficient for 64bit compiler. In addition, MinGW64 reported warnings for the cast operation between TickType_t and (void *) pointer because of different width. 64bit TickType_t should be used instead of 32bit if compiler is 64bit.
* [WIN32-MingW Demo] Change printf() format specifiers from %u to %llu.
Reason of change: %u specifier corrupts 64bit tick count because it supports only 32bit value. %llu can be used for both of 64bit value and 32bit value.(After casting to 64bit)
* [WIN32-MingW Demo] Change type of some variables from uint32_t to UBaseType_t.
Reason of change: These variables are cast to/from pointer type in existing codes. 64bit compiler(MinGW64) reports warnings for the cast operations between uint32_t and pointer type. UBaseType_t solves those warnings because it has same width as pointer type on both of MinGW32 and MinGW64.
* [WIN32-MingW Demo] Change type of some variables from uint32_t to UBaseType_t.
Same change as previous commit is applied to source codes which are built only on Debug configuration.
* [WIN32-MingW Demo] Add brackets to the condition in #if statement. Behavior is not changed. Reason of change is to follow coding style guide of FreeRTOS.
* Update "FreeRTOS/Source" submodule(FreeRTOS-kernel) to #1008.
* [WIN32-MingW Demo] Change type of one more variable from uint32_t to UBaseType_t.
Additional modification for solving compiler warnings for the cast operation on MinGW64.
* Update FreeRTOS-kernel submodule version in manifest.yml.
* Modify prefix of variables to follow coding style guide.
* Code review suggestions
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
---------
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: ActoryOu <ousc@amazon.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
* Add in a Cortex R5F MPU demo for the Hercules RM57 Development Kit.
* Add in a Cortex R4F MPU demo for the Hercules RM46 Development Kit.
* Provide a Code Composer Studio (CCS) project for running these demos.
* Provide a CMakeLists.txt file to allow for compilation of the demos without use of an IDE.
* Add a CI-CD build of these demos using CMake with Fetch-Content.
* Include necessary README to explain the new demos.
---------
This PR enables the FreeRTOS Posix Blinky GCC Demo to be used without the configUSE_TRACE_FACILITY enabled. It is achieved by using `-DNO_TRACING=1` CMake option to disable tracing. By default, -DNO_TRACING is set to 0, and the tracing is enabled.
* Add register test tasks to the CORTEX_MPS2_QEMU_IAR GCC and IAR builds.
* Update header comment in the two added files.
* Fix header checks
* Fix build issue
* update IAR version
---------
Co-authored-by: none <>
Co-authored-by: Rahul Kar <karahulx@amazon.com>
Co-authored-by: Rahul Kar <118818625+kar-rahul-aws@users.noreply.github.com>
* To assist debugging, update a subset of demos to store the line number on which an error is detected rather than just storing a boolean as to whether an error detected or not.
* Correct return value of xAreInterruptSemaphoreTasksStillRunning() made incorrect by the prior commit.
* Uncrustify: triggered by comment.
---------
Co-authored-by: none <>
Co-authored-by: Rahul Kar <118818625+kar-rahul-aws@users.noreply.github.com>
Co-authored-by: Rahul Kar <karahulx@amazon.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>