• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Adresowanie rejestrów allwinner a20

+3 głosów
280 wizyt
pytanie zadane 20 czerwca 2016 w C i C++ przez Semtex Początkujący (310 p.)
edycja 20 czerwca 2016 przez Semtex

Witam serdecznie! Mam na imię Przemek właśnie dołączyłem do grona, więc standardowo proszę o wyrozumiałość. ;D
W datasheet procesora a20 podany jest adres bazowy i offset do konkretnego rejestru:

baza  0x01C20800 (rozmiar 1K)
offset  0x0000010C

Niby prosta sprawa a jednak aby się tam dostać trzeba podzielić offset i adres przez 4 (znalazłem to w kodzie przykładowym linie z tym dzieleniem mają komentarz). Kod działa w przeciwieństwie do mojego w którym nie podzieliłem przez te nieszczęsne 4. Czy orientuje się ktoś dlaczego? Czy ma to związek z rozmiarem strony (4K) i rozmiarem bazy (1K)?

#define PAGESIZE 4096
#define BASE 0x01C20800
#define OFFSET (0x0000010C / 4) // dlaczego -> /4

volatile uint32_t *memory;

int main(int argc, char **argv) {

int fd;
fd = open("/dev/mem", O_RDWR);

uint32_t mask = (~(PAGESIZE - 1));
uint32_t adres = BASE & mask;

uint32_t *map = mmap(0, PAGESIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, adres);

memory = (volatile uint32_t *)map + ((BASE & ~mask) / 4); // dlaczego -> /4

*(memory + OFFSET) = /*jakies bity*/ ;

Wielkie dzięki z góry za wszelką pomoc i proszę nie odsyłajcie mnie do literatury bo przeczytałem już tego tony i naprawdę czas na trochę praktyki po takiej porcji teorii. Ogólnie zagadnienie w miarę rozumiem, tylko tego nie potrafię wyszukać.

komentarz 20 czerwca 2016 przez niezalogowany
po pierwsze to bardzo ładnie zacząłeś więc gratuluję :) Nie każdy początkujący robi tak jak Ty :)

1 odpowiedź

0 głosów
odpowiedź 20 czerwca 2016 przez Semtex Początkujący (310 p.)
edycja 20 czerwca 2016 przez Semtex
Dziękuję :) szkoda, że takie słabe zainteresowanie, mogę się nie doczekać odpowiedzi...

Podobne pytania

0 głosów
1 odpowiedź 512 wizyt
+1 głos
1 odpowiedź 1,399 wizyt
pytanie zadane 22 kwietnia 2015 w Offtop przez marcin_kub Obywatel (1,420 p.)
0 głosów
1 odpowiedź 380 wizyt
pytanie zadane 5 listopada 2019 w Sieci komputerowe, internet przez ShockOfficial Początkujący (390 p.)

93,776 zapytań

142,736 odpowiedzi

323,388 komentarzy

63,381 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...