Jeg leser ARM Cortex M3 referansehåndbok og begrepene «bit-band «,» bit-band region «og» bit-band alias «vises.
Hva er bit-banding?
Kommentarer
- Jeg har viet en github-side for å forklare hva bit-banding er, hvordan det fungerer og hvordan du bruker det. Jeg tror det svarer på de fleste spørsmål om bitbånding, vær så snill å (se) det på nytt.
- Dette er en praktisk introduksjon om bitbåndfunksjon i ARM Cortex M3 atadiat.com/en/articles/…
Svar
ARM-infosenter refererer til bit-banding i deres Cortex-M3- og -M4-dokumentasjon, kompilerdokumenter og noen få andre steder, som Hjem> Programmerermodell> Bit-banding . Fra Hjem> Utvikling av programvare for Cortex-M3> Bit-banding :
Bit-banding tilordner et komplett ord av minne på en enkelt bit i bit-band-regionen. For eksempel vil skriving til et av aliasordene angi eller tømme den tilsvarende biten i bitbåndsregionen.
Det ser ut til å være en måte å bli enkelt på bit atomoperasjon.
Når du skriver til aliasregionene, brukes bit 0 av 32-bitersordet til å sette verdien på bitbåndsregionen. Når du leser fra aliasadressen, returneres verdien fra bitbåndsregionen i bit 0, og de andre bitene blir slettet.
Kommentarer
- Har du noen ide om hvordan bitbåndsoperasjoner utføres internt, og hva som er de virkelige garantiene med hensyn til atomicitet? Hvis jeg utformet en brikke for å lette atom-bitsett eller bit-clear-operasjoner, bruker jeg to av de øvre adressebitene til å velge mellom ' normal tilgang ' (00), ' skriv de ' (01), og ' skriv nuller ' (1x). I tillegg har jeg ' d at CPUen inverterer datautgangen når adressebitene var 0x11. På den måten kan biter settes eller tømmes i en syklus uten behov for en lese-modifiser-skriv. Selv om biter ville blitt satt av maskinvare samtidig med skrivingen, …
- Bare følg lenkene, ya bums.
- @AlKepp, Skriver litt på mange av systemene jeg har brukt er virkelig atomisk med en enkelt instruksjon om å utføre handlingen som ikke kan avbrytes.
- @AlKepp, jeg prøvde ikke å antyde at det var systemer som ikke kunne gjøre dette med en atominstruksjon. Du sa, " Å skrive litt kan ikke være virkelig atomisk. " Jeg var uenig i dette kravet. Jeg har brukt mange systemer der det er atomisk og de eksisterer.
- @AlKepp, Cortex M3 er et eksempel på mer av en mikrokontroller. Viktigheten for meg er at du ikke kan si at atominstruksjoner ikke eksisterer hvis de ofte gjør det. Mange mennesker her gjør innebygde systemer som er lave nok ressurser til at minnet er internt, det er faktisk det eneste systemet jeg liker å kode på. Bortsett fra det å fortelle noen at det ikke eksisterer når det finnes og ofte brukes, kan det villede.