Missing `pub` in register bitfields
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- rust
- Ambito
- embedded-iot
Direzione di ricerca
Inizia individuando le dichiarazioni dei bitfield SAU Sfsr e Sfar a cui fa riferimento l’issue, quindi esamina gli altri bitfield dei registri in SCB, SAU e nelle periferiche correlate per verificare lo stesso schema di visibilità. Verifica che i caller esterni al crate possano accedere ai metodi dei bit di stato nominati e conferma che le definizioni dei registri rimangano utilizzabili tramite la read API esistente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
In general, the definitions for a lot of the registers defined in SCB, SAU, etc., are rather deficient, but my current complaint is the Fault Status registers.
The ones defined in SCB are just defined as RW<u32>, so if you want to check individual bits, you have to define your own bitfield (or do the bit twiddling manually). Disappointing, but usable.
In SAU, the situation seems a little better: there are bitfield macros for Sfsr and Sfar! That sounds great, until you try to use them:
#[exception]
unsafe fn SecureFault() {
let peripherals = cortex_m::Peripherals::steal();
let sfsr = peripherals.SAU.sfsr.read();
if sfsr.invep() {
log::error!("INVEP");
}
}
which gets you
error[E0624]: method `invep` is private
--> <snip>/src/main.rs:122:13
|
122 | if sfsr.invep() {
| ^^^^^ private method
|
::: <snip>/.cargo/registry/src/github.com-1ecc6299db9ec823/cortex-m-0.7.7/src/peripheral/sau.rs:81:1
|
81 | / bitfield! {
82 | | /// Secure Fault Status Register description
83 | | #[repr(C)]
84 | | #[derive(Copy, Clone)]
... |
93 | | lserr, _: 7;
94 | | }
| |_- private method defined here
so you end up having to do the same thing (define your own bitfield or do the bit twiddling manually), only now you have to pull the value out of the existing bitfield with sfsr.0.
The sau crate doesn't do anything with this register, yet this bitfield definition makes it useless outside of the crate.
Fix
The register definitions could use a lot of love 🙁, but the obvious fix here is to make the fields in the bitfield pub, e.g.:
bitfield! {
/// Secure Fault Status Register description
#[repr(C)]
#[derive(Copy, Clone)]
pub struct Sfsr(u32);
pub invep, _: 0;
pub invis, _: 1;
pub inver, _: 2;
pub auviol, _: 3;
pub invtran, _: 4;
pub lsperr, _: 5;
pub sfarvalid, _: 6;
pub lserr, _: 7;
}
// Ditto for all other `bitfield`s
- Lingua principale
- Rust
- Stelle
- 1k
- Fork
- 202
- Merge medio
- 1g 4h
- PR unite (30g)
- 2
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di rust-embedded/cortex-m
-
clean_dcache_by_address misses the last cache line when addr is not line-alignedForse già presa @jseketa l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
rust-embedded/cortex-m#708 ·
I maintainer di solito rispondono entro 2 giorni
-
Deprecation of `bare-metal`Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
rust-embedded/cortex-m#651 · 5 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
rust-embedded/cortex-m#637 ·
I maintainer di solito rispondono entro 2 giorni
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
rust-embedded/cortex-m#511 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 55/100
rust-embedded/cortex-m#700 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di rust-embedded/cortex-m
Issue simili
-
state:needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
zed-industries/zed#66543 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ruffle-rs/rust-flash-lso#142 ·
-
area: docs type: docs
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
light-curve/light-curve-python#870 ·
I maintainer di solito rispondono entro 1 giorno
-
bug file-compat priority: high
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
storytold/photocraft#11330 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno