aboutsummaryrefslogtreecommitdiff
path: root/src/host
AgeCommit message (Collapse)Author
2025-11-26Update cortex-m-rt to 0.7.5HEADmainIan McIntyre
There's an unreleased commit upstream to support stack painting with custom memory layouts, like ours. I eagerly defined the _stack_end symbol. Tested on hardware.
2025-03-21Added in_flash RuntimeBuilder constructorSherif A Abdou
Applications linked through this builder can be placed in a flash reservation. You'll need some other software to launch these programs, since they lack the boot header required by the NXP boot ROM.
2025-03-13Place .xip sections into flashIan McIntyre
We added the `.xip` section to ensure that the reset handler and pre-init functions would be placed in flash. This commit lets users place other content into that section. `.xip` is intended for instructions. The runtime builder will place these instructions into the same load region as `.text`. However, there's no pre-`main` relocation. Aligning the `.xip` and the `.text` section produces more predictable behavior between GNU's ld and LLVM's lld.
2024-10-17Support RT1180 familyNils Fitinghoff
The 1180 family uses a different boot header than previous families. The header is generated to support the default configuration where hash and signature errors are ignored. The XIP `__pre_init` strategy is still used, more for ease of getting something running than because of any known problems with the boot ROM's implementation of loading images to different memories. The boot ROM for the 1180 does not appear to allow the entry point to lie outside the (loaded or execute-in-place) image, so a new `.xip` section is added after the vector table to put the address inside the image while keeping VMA=LMA. This could cause problems for tools that manipulate binaries based on section names.
2023-09-29Ensure __pre_init remains in binaryIan McIntyre
GNU's LTO has a tendency to remove __pre_init, which is written in inline assembly. It doesn't realize that the reset handler references this symbol, because the reset handler is also written in inline assembly. Not sure why LLVM's linker doesn't also optimize it away, but this commit ensures that __pre_init remains in the output file.
2023-09-29Use an absolute address for __dcdIan McIntyre
LLVM's lld and GNU's ld have different ways of handling assignments in output sections. Unless we specify ABSOLUTE, ld treats the number '0' as a relative address from the section start, 0x6000_0000. On the other hand, lld treats '0' as if it were written with ABSOLUTE, and it ignores the ABSOLUTE function. So depending on your linker, __dcd would change values. This commit forces an absolute number for __dcd, ensuring a consistent value no matter the linker.
2023-09-08Add optional DCD section in linker scriptsummivox
Users can define their device configuration data (DCD), and place the data in the .dcd section. If the .dcd section has content, the entry in the IVT points at the user's DCD. This plays well with imxrt-dcd.
2023-03-25Generate one linker script; add unit testsIan McIntyre
We can still maintain individual linker script components, then write them into one, larger linker script. We're effectively implementing the same behavior as INCLUDE while disallowing overrides of the linker search path to find the INCLUDEd files. Once we have one linker script, we can refactor for easier unit testing. This commit adds simple unit tests for the default builder, and some of the expected errors.
2022-12-01First commitIan McIntyre