-
Data: 2012-05-27 19:27:20
Temat: Re: Obsługa peryferiów poprzez API (wskazniki do struktury)
Od: Portal <m...@t...poczta.onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 05/27/2012 04:37 PM, slawek7 wrote:
> Zgadza się to co piszecie i zrozumiałem o co chodzi.
> Przecież to jest coś takiego
> (*(uint32_t*)0x40010C10)=0x0000000f;
> Powoduje to bezpośredni dostęp do rejestru i operację na porcie PB.
>
> Natomiast nie rozumiem zapisów które pojawiają się dokumentacji.
> Adres jest 32 bitowy więc stąd zapewne pierwsze rzutowanie ale pojawia
> się też informacja że do rejestru można się dostać
> albo jako word, albo jako half-word, albo jako byte? O co tu chodzi?
> Jaki adres i jakie rzutowanie wtedy się robi i co jak poda się liczbę
> word 32 bitową zamiast wymaganą half-word 16 bitową?
Chyba mylisz trochę postać adresu z typem danych siedzących pod tym adresem.
Operacja:
(*(uint32_t*)0x40010C10)=0x0000000f;
oznacza tyle co zapisz wartość 0x0000000f pod adres 0x40010C10 traktując
ją (wartość, nie adres) jako liczbę 32-bitową bez znaku.
Jeżeli zrobisz podobną operację, ale w postaci:
(*(uint8_t*)0x40010C10)=0x0f;
to pod ten sam adres zapiszesz tylko pojedynczy bajt, pozostawiając
pozostałe trzy bajty 32-bitowego słowa zapisanego pod adresem 0x40010C10
bez zmian.
Kwestia czy nadpisany zostanie najmniej czy najbardziej znaczący bajt
słowa zależy od "endianności" systemu - najczęściej jest to little
endian czyli 0x40010C10 wskazuje na najmniej znaczący bajt słowa,
0x40010C11 na kolejny i tak aż do 0x40010C13.
Przy zapisach 16-bitowych możesz analogicznie zapisać tylko pół rejestru
adresując połówki jako uint16_t pod adresem 0x40010C10 oraz 0x40010C12.
W większości RISCowych architektur dostęp do danych musi uwzględniać
wyrównanie tzn. adresy dla 32-bitowych dostępów muszą być
wielokrotnością czwórki, dla 16-bitowych wielokrotnością dwójki a bajty
można czytać i pisać "zewsząd" (o ile dany fragment przestrzeni
adresowej w ogóle uwzględnia możliwość takiego dostępu - w Twoim
przykładzie jak widać rejestry peryferyjne uwzględniają taką możliwość).
Pozdr
Portal
Następne wpisy z tego wątku
- 28.05.12 20:14 slawek7
- 28.05.12 20:14 slawek7
- 28.05.12 20:14 slawek7
- 28.05.12 20:13 slawek7
- 28.05.12 21:52 J.F.
- 28.05.12 22:33 Michoo
- 29.05.12 08:13 Portal
- 29.05.12 08:20 Portal
- 29.05.12 20:02 slawek7
- 29.05.12 20:02 slawek7
- 29.05.12 20:09 slawek7
- 29.05.12 20:15 slawek7
- 29.05.12 20:47 RoMan Mandziejewicz
- 29.05.12 21:34 Portal
- 30.05.12 06:30 slawek7
Najnowsze wątki z tej grupy
- "Teleportacja" polskich statków na pd. Bałtyku - rosyjska zabawa w zakłócanie GPS, Galileo, Beidou i GLONASS
- W trakcie porwania prez. Maduro wojsko USONA użyło tajnej broni masowego rażenia: Discombobulator
- antena gsm - kabel - antena gsm
- PID - jeszcze raz
- Zlacze w mikrofonie z lat 80-tych
- Żywica żółknie od UV i wody :(
- Zawory termostatyczne
- Schemat automatyki
- Teoretyczne zagadnienie - ogrzewanie budynku
- Zagadka radiowa
- Prostownik
- Nowy akumulator Donut Lab
- Pilot do zamka/bramy
- Jaka myjka ultradźwiękowa?
- Retro organizer ale współcześnie
Najnowsze wątki
- 2026-01-29 KSeF - 13 wątpliwości
- 2026-01-29 A ja się pochwalę
- 2026-01-29 Warszawa => Mid/Senior IT Recruiter <=
- 2026-01-29 Warszawa => Senior Java Developer <=
- 2026-01-29 Warszawa => IT Recruiter <=
- 2026-01-28 Degradacja
- 2026-01-28 Wysoki Sąd poinstruował czego unikać wyzywając Owsiaka "Równiejszego"
- 2026-01-28 Białystok => Solution Architect (Workday) - Legal Systems <=
- 2026-01-28 Białystok => Preseles Inżynier (background baz danych) <=
- 2026-01-28 Wrocław => Konsultant wdrożeniowy ERP <=
- 2026-01-28 Łódź => Microsoft Engineer <=
- 2026-01-28 Białystok => Tester manualny <=
- 2026-01-27 Tradycja ciągania posłów po sądach za wystąpienia w Sejmie będzie kontynuowana [Lepper 2]
- 2026-01-27 Pierwszy raz sprzedano więcej samochodów zeeletryfikowanych niż ice
- 2026-01-27 Elektryczny Kałasznikow




Jak kupić pierwsze mieszkanie? Eksperci podpowiadają