Commit graph

145 commits

Author SHA1 Message Date
bunnie
37d35b8e27 add small memory option for fonts to loader 2024-01-29 03:34:03 +08:00
bunnie
e4b0362024 make space for fonts in loader + sig verification code 2024-01-28 16:02:12 +08:00
bunnie
f432968678 add fonts back into the loader for the cramium target 2024-01-28 02:15:48 +08:00
bunnie
474d42ff87 pull in improved API to loader 2024-01-27 16:53:15 +08:00
bunnie
6786efbb01 add PL230/PIO test to bringup section 2024-01-20 21:32:20 +08:00
bunnie
47dbecfd0b print trng status on bringup boot 2024-01-20 16:17:02 +08:00
bunnie
798183fe95 add TRNG output to board bring-up test 2024-01-20 01:26:30 +08:00
bunnie
0e14761641 cleanup loader code path
- print a banner on boot even without bringup
- stylistic improvements
2024-01-19 23:21:40 +08:00
bunnie
f12ddb09cb uart Rx in loader now seems to work. 2024-01-18 19:09:49 +08:00
bunnie
6f81024c77 refactor loader to use cramium-hal primitives
this is instead of the raw bitbang stuff we were doing before.
2024-01-18 18:02:23 +08:00
bunnie
454ecac95a fix rustfmt::skip warning
turns out, stackoverflow has out of date info. woohoo!
2024-01-14 23:12:52 +08:00
bunnie
a6a28b9d9e format loader 2024-01-14 22:02:55 +08:00
bunnie
3d6ba05c95 ok...@generated is useless, let's try a different approach.
@generated "marker" needs to be a naked comment on a line by
itself. I'm not quite sure how this is meant to be used, tbh.
2024-01-14 22:01:03 +08:00
bunnie
ee6190a12a prepare for format 2024-01-14 21:51:11 +08:00
bunnie
a5137e69b1 remove legacy script 2024-01-14 21:50:54 +08:00
bunnie
0692a25323 fix cramium build targets 2024-01-08 02:33:27 +08:00
bunnie
3da1ed181e set hash default value to 0x30 ("0")
this makes it much easier to detect if a loader failed to set
a hash in other routines.
2024-01-08 00:21:06 +08:00
bunnie
7b8a598020 wire up the hash computation to the hash consumption 2024-01-08 00:17:54 +08:00
bunnie
7719dbcb69 write hash into the environment variable
Convert the fs_prehash into a hex ascii string, suitable for environment variables
The initial loader environment is hard-coded, so we use a hard-coded offset for the string
destination. It was a deliberate decision to not include a generic environment variable
handler in the loader because we want to keep the loader compact and with a small attack
surface; a generic environment handling routine would add significant size without much
benefit.

Note that the main purpose for environment variables is for test & debug tooling, where
single programs are run in hosted or emulated environments with arguments passed for fast
debugging. The sole purpose for the environment variable in the loader's context is to
this computed hash onto the userspace environments.
2024-01-08 00:16:48 +08:00
bunnie
8f3229c9ea convert secboot to have an argument for returning the hash
also compute the hash and return the value as part of this patch
2024-01-08 00:16:20 +08:00
bunnie
4b002c34f5 Merge branch 'main' into prehash 2024-01-07 23:42:22 +08:00
Sean Cross
d8c6881554 loader: pass environment to processes via stack
Load environment variables to processes by placing the value onto the
stack. This will support additional data in the future such as command
line arguments.

Note this is a breaking change and requires a kernel modification.

Signed-off-by: Sean Cross <sean@xobs.io>
2024-01-07 22:36:34 +08:00
bunnie
5894e71095 convert bootloader to use prehash method
This applies to the *kernel* image.

The loader itself is still signed with the conventional signature.

Version number of the loader is also incremented.
2024-01-05 16:08:22 +08:00
Sean Cross
88020c99e0 loader: add pid to map_page() call
Add the pid as the page owner to `map_page()` calls. This ensures pages
are owned by their respective processes, and removes a lot of
`change_owner()` calls that immediately follow page mapping.

It also allows for superpages to be owned by their respective processes.

Signed-off-by: Sean Cross <sean@xobs.io>
2023-12-29 18:42:16 +08:00
Sean Cross
e0c62e5480 loader: don't reserve the "susres" page
The "susres" page should be owned by the "susres" server and not the
kernel. Avoid mapping this page to the kernel to prevent it from getting
double-mapped.

Signed-off-by: Sean Cross <sean@xobs.io>
2023-12-29 18:42:16 +08:00
Sean Cross
5260ef9f5a loader: add pid to map_page() call
Add the pid as the page owner to `map_page()` calls. This ensures pages
are owned by their respective processes, and removes a lot of
`change_owner()` calls that immediately follow page mapping.

It also allows for superpages to be owned by their respective processes.

Signed-off-by: Sean Cross <sean@xobs.io>
2023-12-29 18:35:27 +08:00
Sean Cross
2941066c3d loader: don't reserve the "susres" page
The "susres" page should be owned by the "susres" server and not the
kernel. Avoid mapping this page to the kernel to prevent it from getting
double-mapped.

Signed-off-by: Sean Cross <sean@xobs.io>
2023-12-29 18:33:40 +08:00
Sean Cross
aee07683b7 loader: run cargo fmt
There are no changes to this project.

Signed-off-by: Sean Cross <sean@xobs.io>
2023-12-27 14:12:26 +08:00
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