Heeft u gebruikt 'struct' in uw embedded systeem?

M

Maverickmax

Guest
Hoi

Ik heb het opzoeken struct in C taal en ik kan niet zien hoe struct kan worden gebruikt in embedded systeem.Heb je gebruikt 'struct' in embedded systeem en waarom?

Maverick Max

 
Er is geen reden waarom structs niet kan worden gebruikt in embedded systemen.Structs worden gebruikt om de groep variabelen van verschillende soorten gegevens, of kunnen worden gebruikt, alleen voor de organisatie doeleinden, dwz maakt code makkelijker te lezen.Een voorbeeld is de boodschap pakket voor draadloze comms.Een ander voorbeeld is een opname van een tabel opgeslagen in eeprom.

 
structuren worden op grote schaal gebruikt wordt comples embedded systeem firmwares ....Ze worden gebruikt om een blok van momory / register / feilds registreren in een systeem.

De structuren in embedded C moet iets worden aangepast.

Ik heb een typisch embedded applicatie source code die structuren gebruikt ...Stel je voor dat je code die een apparaat controles door het plaatsen van de juiste waarden in de hardware registers op bekende absolute adressen worden schriftelijk.

Laten we stellen dat het apparaat is twee registers, elk 16 bits lang om oplopend geheugenadressen, de eerste is de controle en status register (MVO) en de tweede is een data poort.De traditionele manier van toegang tot een dergelijke inrichting is als volgt:

/ * Standaard C voorbeeld * /
/ *
* Verklaren het apparaat registers
* Of gebruik int of korte
* Is de uitvoering afhankelijk
* /

devregs struct (
unsigned short MVO; / * control & status * /
unsigned short gegevens; / * data poort * /
);

/ * Bit patronen in het csr * /
# define ERROR 0x1
# define READY 0x2
# define RESET 0x4

/ * Absolute adres van het apparaat * /
# define DEVADDR ((struct devregs *) 0xffff0004)

/ * Aantal van dergelijke apparaten in het systeem * /
# define NDEVS 4

/ *
* Busy wacht-functie om een byte te lezen apparaat n.
* Check bereik van apparaat-nummer.
* Wacht tot READY of FOUT
* Indien geen fout, lees byte, terug te sturen
* Anders reset fout, rendement 0xffff
* /
unsigned int read_dev (unsigned devno) (

struct devregs * DVP = DEVADDR devno;

if (devno> = NDEVS)
return (0xffff);

while ((DVP-> CSR & (READY | ERROR)) == 0)
/ * NULL - wachten tot gedaan * /

if (DVP-> CSR & error) (
DVP-> MVO = RESET;
return (0xffff);
)

return ((DVP-> data) & 0xFF);
)goede programers dont behoefte opmerkingen aan de code ...cos de code is zeer eenvoudig en zelf explainatoryhoopte dat hielp u- Helios

 
Hoi

Ik heb gebruikt.
Als u gebruik gemaakt van een RTOS hij gebruikt een Link List intern.

Groeten

 
Alles in de taal C zou moeten werken in een embedded systeem, behalve misschien voor de bibliotheek functies die te maken hebben met I / O en toegang tot bestanden, aangezien deze apparaten niet kunnen bestaan in een embedded systeem.

 
Ik heb gebruikt "struct" in embeded systeem (Keil C-compiler - AT89C52).Het werkt OK!

 

Welcome to EDABoard.com

Sponsor

Back
Top