Ast10x0 : FMC flash backend for the flash service - #433
Draft
rusty1968 wants to merge 16 commits into
Draft
Conversation
rusty1968
force-pushed
the
fmc-flash-service
branch
from
August 20, 2026 02:42
6832870 to
063b91f
Compare
Manually roll pigweed and required crate dep 'object' to 0.40.0
Contributor
|
Tested with ast1060 evb board:
Tested with the following changes and no more HardFault: -use cortex_m_semihosting::debug::{exit, EXIT_FAILURE, EXIT_SUCCESS}; -exit(status); |
The Effect::LatchLockdown executor has no capability seam. Add LockdownLatch: a one-way latch into the platform safe state, a sticky bit rather than an acquire/release lock. Ok only when the safe state is in force; a failed latch is a hard fault the caller must treat as terminal. Trait only; the platform driver composition follows separately. Assisted-by: Claude:claude-fable-5 Signed-off-by: Christina Quast <christina.quast@9elements.com>
The reset wiring itself landed with the platform driver (BootControl composed into BoardCapabilities, assert_reset/release_reset delegating to it), so what remains here are the end-to-end proofs: a component is still held in reset while its image is verified and the line is released only on the passing verdict, and a dead reset line fails closed with the component left quiesced. BootControl is re-exported from the driver crate so board crates need only one import. Assisted-by: Claude:claude-fable-5 Signed-off-by: Christina Quast <christina.quast@9elements.com>
Signed-off-by: Christina Quast <christina.quast@9elements.com>
Signed-off-by: Chris Frantz <cfrantz@google.com>
Signed-off-by: Chris Frantz <cfrantz@google.com>
The flash-service branch's services/flash/client.rs calls ErrorCode::check_status, which was missing from util/error on this branch; restore it so the baseline compiles.
Adds the AST10x0 flash-service test image's system config, generic kernel target, and server app (flash_server_bin). The server process owns the SCU (pinctrl), FMC register, and CS0 AHB read-window device mappings, and serves services_flash_server::FlashIpcServer requests over the "flash" channel using the Task 3 FMC backend. The client app, system_image, and tests are added by the next task.
Completes the pinmux-ownership change already present in the flash test image (system.json5 no longer maps the SCU into the server process): the backend driver no longer touches the shared SCU; PINCTRL_FMC_QUAD is applied once by the kernel target before any process starts.
…mirrors smc/write)
rusty1968
force-pushed
the
fmc-flash-service
branch
from
August 25, 2026 17:08
063b91f to
6434e50
Compare
Collaborator
Author
|
Your code is explicitly dependent of the std crate. Just take a look at producer : Vec<Box> is double heap here — the Vec allocates the array and each Box allocates a provider. We do not have a memory allocator in an embedded environment. OpenPRoT is no alloc. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR depends on #365
Tests
The service is exercised end-to-end through the full IPC stack (FlashIpcClient → server → BlockingFlash → Ast10x0FmcFlashDriver → FMC CS0), not just at the peripheral level.