Commit graph

117 commits

Author SHA1 Message Date
bunnie
e2ba706f4b modify loader to setup the console UART
this avoids a bunch of nasty pinmux stuff that would have to
go into the console logger at early boot
2023-09-15 16:25:44 +08:00
bunnie
07303dccc2 add FPGA target to loader clock settings
this might want to get a more graceful feature option wrapped
around it but i'm hoping the unpleasantness of developing on
the FPGA board is...temporary??
2023-09-15 11:25:35 +08:00
bunnie
ca14ed78d2 fix renode build 2023-07-18 13:58:14 +08:00
bunnie
8155c0cc8b loader fixes for cramium target 2023-07-18 03:56:09 +08:00
bunnie
3a32e3e7a0 fix visibility of cramium module 2023-07-17 18:49:54 +08:00
bunnie
e0c8cc1da4 add cramium to loader target 2023-07-17 18:23:17 +08:00
Sean Cross
b23f6717ef loader: remove unneeded muts
Rust 1.71.0 reports more cases of unneeded mutability. Remove these from
the loader.

Signed-off-by: Sean Cross <sean@xobs.io>
2023-07-16 15:30:23 +08:00
bunnie
4454dffe4e generate loader files for the new font
also sort the font files in alphabetical order now,
instead of relying on arbitrary ordering of os.listdir() :P
2023-07-05 14:44:30 +08:00
bunnie
30c752db75 bump the loader's font tables 2023-07-05 13:38:28 +08:00
eupn
387c12d1ee
loader: fix precursor build 2023-04-05 16:42:58 +04:00
eupn
6ac2713f0a
loader/arm: allocate separate IRQ stack 2023-04-05 16:36:13 +04:00
bunnie
57cea9b3ca cleanup a warning when debug is not turned on 2023-03-22 02:47:41 +08:00
bunnie
773bbc695a
Merge pull request #330 from Foundation-Devices/loader-arm
loader: add ARMv7-A support via sama5d27 chip
2023-03-22 00:34:00 +08:00
bunnie
d413100102 handle edge case of a "perfect fit" loader section
When a block of data perfectly fits we fail to allocate the
next page, violating the loop invariant that there's data available
to write.

However, we can't always allocate a new page when we run out
because if we're at the end of the process we shouldn't allocate
a new page (I think). Thus we track if the last section was
a perfect fit, and if it was, we force a new page allocation
before copying more data.

This is an edit in phase 1 of the loader.
2023-03-16 01:05:07 +08:00
bunnie
137f23039b fix formatting on check print 2023-03-16 01:04:45 +08:00
eupn
e7eb9ece2b
loader: remove unused imports 2023-03-14 17:15:17 +04:00
eupn
899351214b
loader: split hw specific details with feature gates in common modules 2023-03-14 17:15:17 +04:00
eupn
a0b9868068
loader: split panic handlers 2023-03-14 17:15:17 +04:00
eupn
3caf8dedd0
loader: split debug and asm modules between arm and riscv 2023-03-14 17:15:17 +04:00
eupn
787312bf82
loader: split consts between riscv and arm 2023-03-14 17:15:17 +04:00
eupn
1867f6cf1a
loader: include atsama5d27 arm platform 2023-03-14 17:13:53 +04:00
bunnie
0dd74fe7b3 remove gitrev from precursor soc type
in practice this has not been a useful indicator, and we
have stabilized the SVD format so that changes in the code don't
cause the SVD files to go incompatible anymore.

this should make maintenance a bit easier going forward, hopefully.

also merge in cramium support to harmonize the forks for easier
cross-patches in the future.
2023-03-08 03:46:03 +08:00
bunnie
93bd7468e1 Merge branch 'main' of github.com:betrusted-io/xous-core into main 2023-03-08 03:03:40 +08:00
bunnie
df401d684a remove references to sram_ext so the hardware can be pruned 2023-03-02 17:03:41 +08:00
Sean Cross
ab353c1bee loader: move the kernel stack to kernel region
The kernel stack previously was located at the same relative offset as
all other programs. While this worked, it is poor form.

Move the kernel stack into the kernel memory region (located in the last
4 megabytes of virtual address).

Signed-off-by: Sean Cross <sean@xobs.io>
2023-02-27 20:21:16 +08:00
bunnie
d7c3266ec6 cleanup a warning; fix renode build 2023-02-27 02:19:21 +08:00
bunnie
dfd4c1ab40 fix precursor platform test
the precursor platform test is a RAM stress test. This patch
improves the test slightly by making it more parameterizeable,
and having it run a bit longer.
2023-02-27 01:30:20 +08:00
bunnie
0b25ede0c5 refactor phase 1 of the bootloader
Removes some of the redundant copying, and also simplifies the code
for easier readability and maintainability.
2023-02-22 03:29:14 +08:00
bunnie
b8cc156cfc compact phase 1 loader
merge inie/inif routines more intelligently
2023-02-22 00:58:26 +08:00
bunnie
039de0bfe9 split loader into modules 2023-02-22 00:36:16 +08:00
bunnie
3437b94807 clean up a warning 2023-02-21 23:38:40 +08:00
bunnie
e34d740bc6 some final tweaks for cross-platform integration 2023-02-21 23:19:02 +08:00
bunnie
032bd864db parameterize the loader so it can work with multiple targets 2023-02-21 22:51:53 +08:00
bunnie
bdc0b79906 move assembly header into in-line assembly 2023-02-21 22:17:10 +08:00
bunnie
0c9f8c57c2 remove warning on unused murmur lib when no resume is enabled 2023-02-21 18:24:39 +08:00
bunnie
c4a55a3cb5 fix multiplatform details; bump version number printed 2023-02-21 18:19:12 +08:00
bunnie
0c6ee68a3b make secboot optional 2023-02-21 18:11:32 +08:00
bunnie
3d88a7b3de add platform option files to loader 2023-02-21 17:43:48 +08:00
bunnie
08ae66a264 fix: #320
this commit adds the facilities to extract eh_frame[_header]
sections and pass it to each process.

A bump is required to `std` to extract the passed parameters.
2023-02-15 19:55:08 +08:00
bunnie
ffe697b8c8 CHORE: cleanup some build warnings
put the load checker code behind the debug-print feature gate
2023-02-12 13:15:02 +08:00
bunnie
a6b46c6275 add check function to loader
This is very helpful for debugging loader errors. Basically
it prints out the first and last 20 bytes of each section
based on the source as specified in the MiniElf format, and
then it prints the corresponding data as loaded after walking
the page tables.

Loader errors really stand out with this debugging tool.
2023-02-12 01:12:20 +08:00
bunnie
4a2234f539 XIP works with some processes, but not others
it works with e.g. shellchat, but not vault.

still scratching my head on what's gone wrong -- it's
crashing in the pre-boot, which means something is not
mapped right for some case that wasn't caught in the
earlier testing.
2023-02-11 01:42:04 +08:00
bunnie
11c987c5f6 this loader commit was accidentally pulled into a previous mass-commit 2023-01-31 15:14:47 +08:00
bunnie
e5fdd0fec7 commit new versions to verifiers 2023-01-31 15:12:19 +08:00
Sean Cross
b35d65c3e1 loader: skip zeroing when we hit a page boundary
Previously, we would unconditionally zero out the remainder of a page
when finished copying. We wrapped to PAGE_SIZE in order to avoid
corrupting another process' memory.

However, an issue was discovered under the following circumstances:

    1. There are fewer than 4096 bytes of `.bss`
    2. The `.bss` ends on a page boundary

Under these conditions, the loader would load the section before the
`.bss` into the page, then clear out the `.bss`, and finally clear the
entire page, overwriting the previous section.

Skip the remainder-of-page clearout when the `.bss` ends on a page
boundary, rather than clearing the entire page.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-10-20 11:27:48 +08:00
Sean Cross
af501c4303 loader: print process IDs as debug data
Print out the current process ID when looping through values. This will
make it easier to identify which process is getting loaded when reading
through the tea leaves.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-10-20 11:27:48 +08:00
bunnie
18e1d6e867 switch over to the log uart on boot
this helps minimal configurations to be more useful without pulling
in com/llio crates. The trade-off is that KP's early in boot
(or during resume) are not visible, but, these are (thankfully??)
less rare these days.
2022-10-02 21:45:36 +08:00
Sean Cross
a70aee7bad loader: move loader into main workspace
Add the loader into the main workspace, removing it from its own
sub-workspace. We can do this now that we can specify the linker script
in `build.rs`.

This improves IDE support, and should shrink disk storage requirements.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-03-22 02:09:18 +08:00
bunnie
4f65fe522f fix debug print locations for loader 2022-03-14 01:19:38 +08:00
bunnie
e7efb14bdf add a bypass for Renode to skip the signature check
- bypass causes warnings to be emitted in compilation
- stark visual change on boot screen ("jail bars" instead of gray on bottom half)
- root keys are locked out permanently from readout
- devboot canary set
2022-03-02 19:51:16 +08:00