When built with PICOLIBC=1, selects picolibc as the C library, uses
semihosting to display messages and uses picolibc stdio for output.
Signed-off-by: Keith Packard <keithpac@amazon.com>
Allocate ROM for initialized thread local storage variables. Allocate
TLS offsets for all thread local storage variables.
Signed-off-by: Keith Packard <keithpac@amazon.com>
Need to add _zicsr for more recent Risc-V toolchains which don't add
this extension to the default set anymore.
Signed-off-by: Keith Packard <keithpac@amazon.com>
I get a build error when this is not set as it (or
configGENERATE_RUN_TIME_STATS) are required when using
configUSE_STATS_FORMATTING_FUNCTIONS
Signed-off-by: Keith Packard <keithpac@amazon.com>
When built with PICOLIBC=1, selects picolibc as the C library by
removing the newlib-nano linker flags and adding
--specs=picolibc.specs to the compiler flags. This also selects the
integer-only printf variant provided within picolibc to reduce flash
use by adding -DPICOLIBC_INTEGER_PRINTF_SCANF.
Signed-off-by: Keith Packard <keithpac@amazon.com>
Picolibc has an internal version of sbrk that uses slightly different
symbol names than the demo provides. Add these in the linker script.
Signed-off-by: Keith Packard <keithpac@amazon.com>
Allocate ROM for initialized thread local storage variables. Allocate
TLS offsets for all thread local storage variables.
Signed-off-by: Keith Packard <keithpac@amazon.com>
Instead of a set of POSIX-compatible APIs as needed by newlib,
picolibc needs a FILE struct allocated that references a function to
output a single character. Picolibc also doesn't need sbrk as it has
its own version
Signed-off-by: Keith Packard <keithpac@amazon.com>
For these options to be of any use, they must be passed to the
compiler when building object files and then the --gc-sections flag
must be passed to the linker.
Add -ffunction-sections -fdata-sections to CFLAGS and then add
-Wl,--gc-sections to LDFLAGS.
Signed-off-by: Keith Packard <keithpac@amazon.com>
Ensure that the handler2_address_const location will be correctly
aligned when compiled to a separate section.
Add the 'used' attribute to isr_vector to ensure it will not be elided
from the output.
Signed-off-by: Keith Packard <keithpac@amazon.com>
* Expand RV32E demo support, prevent 'ebreak' looping
The RegTest tests are modified in the Qemu and HiFive demos
to support RV32E and its limited set of registers.
'ebreak' call looping is removed in RegTest. This produces
a lot of noise when debugging.
* Correct whitespace
* Remove 'ebreak' instruction calls
The ebreak instruction sets and exception
which leads to jumping around the binary. This
can make debugging difficult.
* Fix whitespace formatting
The tracelyzer code was declaring a local stack variable of type
`uint32_t` and passing it as output parameter to a function which
expected `uint64_t` on a 64-bit platform. This resulted in 4 byte memory
corruption. The problem was that the function signature uses
`TraceUnsignedBaseType_t` type for the output parameter which gets
defined to `uint32_t` on a 32-bit platform and to `uint64_t` on a 64-bit
platform, while the local stack variable was declared as `uint32_t`.
This commit changes the type of local stack variable to
`TraceUnsignedBaseType_t` to match the function parameter type.
Tracelyzer creates a task internally stack size of which is controlled
using TRC_CFG_CTRL_TASK_STACK_SIZE. It was earlier defined to 1024.
The POSIX port requires the stack size to be minimum PTHREAD_STACK_MIN.
The commit updates the TRC_CFG_CTRL_TASK_STACK_SIZE to
PTHREAD_STACK_MIN.
The demo directory contained one extra trcConfig.h and
trcKernelPortConfig.h. This commit deletes those files.
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
* Fix WIN32-MSVC demo in FreeRTOS/Demo.
* Add comments.
* Fix corechecks
* Re-work trace and keyboard input.
* Remove unneeded line from trcConfig.h
* Fix formatting in trcConfig.h
* Fix heap issues, add FreeRTOS task to simulate keyboard interrupts.
* Update comment on main_blinky.
* Fix spelling.
* Make keyboard input thread block on input.
* Set thread affinity of keyboard input thread to not run on the same core as FreeRTOS.
* Adjust heap regions and total heap size.
* Fix spelling.
Co-authored-by: Jason Carroll <czjaso@amazon.com>
Update Readme instructions and add troubleshooting
tips for issues seen on Ubuntu and include a description
of where to find various crosstools-ng flags.
Update SiFive IAR demo to support vectored interrupts. This is a near copy of https://github.com/FreeRTOS/FreeRTOS/pull/797.
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
* Add test for timer start delayed past expiration
This reverts commit 53af0ec62e, which
itself reverted 9c91199016.
* Add warning about vTimerDemoIncludeBacklogTests()
* uncrustify for CI check
* Remove unintentional changes to spacing in comments
* prvReceiverTask() in MessageBufferDemo.c declared a variable as a "MessageBufferHandle_t *" instead of just a "MessageBuffer_t". This came to light when updating the kernel submodule pointer as the underlying datatype changed in the kernel from a void *.
* Remove additional line that was preventing automated uncrustify tests from passing.
Co-authored-by: none <>
1. add INCLUDE_xTaskGetCurrentTaskHandle for stream_buffer use
2. LDFLAGS add arch and abi info for linker
for riscv64-unknown-elf multilib, if there is no arch and abi
info, will link to default lib and have below error
target emulation `elf32-littleriscv' does not match `elf64-littleriscv'
3. use CFLAGS to replace ASFLAGS when compile assembly code
because DEBUG flag is added in CFLAGS, if we use ASFLAGS to compile
assembly code, there is no debug info in assembly code objfile
Signed-off-by: Eric Chan <e14002270@gmail.com>
* CORTEX_MPS2_QEMU_IAR_GCC now has VSCode tasks and launch configurations to build, run, and debug in one button. This should work on all platforms (Linux, MacOS, Windows).
* Posix_GCC Demo now has VSCode task and launch configs to build, run, debug in one button for Linux/MacOS ("lldb Launch").
It also has configuration for Windows through Ubuntu ("gdb launch"), and this will also work for Linux if the user wants to use gdb instead of lldb.
* Integrated terminal settings for Ubuntu and MSYS2 ways to run Posix Demo on Windows.
This allows Posix port demo to be built on either WSL/Ubuntu or MSYS2 on Windows.
These are absolute paths so if the user has installed Ubuntu or MSYS2 elsewhere they will need to change them.
* Improved pattern matching in Run QEMU task. Replaced usage of deprecated ${workspaceRoot} with ${workspaceFolder}.
* Split MSYS2 and Ubuntu WSL configurations
MSYS2 works better with external console, and Ubuntu WSL works with internal console. This is reflected by having two different configurations.
* Delete RTOSDemo.map
Cleanup. (This is file is built but never deleted when make-ing)
* Delete null.d
* Cleanup extranneous vscode workspace
* Documentation for VSCode launch configs
Documentation for how to run this demo on VSCode using launch configs.
* Added documentation for VSCode launch configs
Added documentation for running demo through VSCode using launch configurations.
* Removed unneeded .log files and c_cpp_properties.json in CORTEX_MPS2_QEMU_IAR_GCC/.vscode/
* Deleted unnecessary .log files from POSIX_GCC/.vscode
* Set build task problem matcher to "gcc", deault problem matcher from VSCode.
* Removed unneeded "sh -c -l" command from the default build task in CORTEX_MPS2_QEMU_IAR_GCC.
* "Build QEMU" task problem matcher finds the correct paths to problem files.
* Moved steps to "Prerequisites" section.
* Update Readme.md
Fixed markdown typo.
* Moved items to prerequisites for Posix_GCC demo.
Co-authored-by: Fan <gilbefan@f84d899204e1.ant.amazon.com>
* Fix build failures in Nuvoton M2351 projects
These are needed because of recent changes in the port
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
* All for the Demo/Cortex_MPU_Simulator_Keil_GCC GCC demo:
+ Update the linker script so the project builds now the heap is part of the privileged data.
+ Add simulator.ini to setup the simulator memory map when the debugger starts to prevent invalid access errors.
+ Set configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY to 1 in FreeRTOSConfig.h, then fix up resultant build errors.
+ Set configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS to 0 in FreeRTOSConfig.h, then fix up resultant build errors.
* Fix compiler warning in Arm startup file.
* Update comments in the file headers to pass the git checkin tests.
* Update header comments to pass git checkin tests.
* Second attempt to get file header comments correct for the check-in tests.
* Third attempt to get the header comments correct.
* Fix spelling.
* Fix manifest check
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: none <>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
Add a hardware definition project for the MicroZed board to the existing Zynq ZC702 project.
Add a text file that describes how to switch the Zynq project form the ZC702 hardware to the MicroZed hardware.