www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

ARM Linux cross-compiler
Pojdi na stran Prejšnja  1, 2
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
valekovski
Član
Član



Pridružen-a: Sob 18 Feb 2012 20:34
Prispevkov: 11
Aktiv.: 0.07

PrispevekObjavljeno: Sre Avg 15, 2012 6:19 pm    Naslov sporočila:   Odgovori s citatom

Hej

Kul, hvala! Sam sem počel isto ja, najbolj zoprna so tale mapiranja registrov v pomnilnik, ker jih je pač veliko.. No uspelo mi je krmilit ledico, potem sem pa obupal. Problem je bil ravno to, da sem bil še preveč nub da bi hkrati pazil na to kaj programiram in kako povežem hardware, verjetno bi mimogrede vse skup skuril Very Happy

Bare-metal C je pa dost lažje + podpore je že cel kup, se dobi na atmelovi strani brezplačno, samo registracija je potrebna. Tako da, morda bi bilo še najlažje tisto portirati na linux, pa se morda napiše funkcijo, ki avtomatsko mapira naslove registrov.. Nekaj takega. Se bom igral, ko diplomiram, če mi ne bo treba delati dvanajst ur na dan, [slovenščina je zame švedska vas] kot mora večina Very Happy

Hvala za info! Mam pa še eno vprašanje, ko mi že takrat ni bilo jasno, ko sem se igral.. Zakaj zaboga se offset definira kot PIO_BASE_ADDR &~MAP_MASK. Zakaj je MAP_MASK negiran? Oz. zakaj je sploh potrebno masko uporabit.. Če bi bil offset večji kot je PAGE_SIZE, se pravi kot modulo? Pa zakaj se maska negira samo ko mapiramo BASE_ADDR in ne ko mapiramo specifične registre..

Pa mimogrede, če se ne motim, lahko na ene parih pinih dosežemo tudi 5V napetosti, če napajamo z adapterjom. Razen krmilna logika ostaja 3.3V, more pa pisat nekje v dokumentaciji, kateri pini imajo potem 5V.

LP, Val

PS: Lol, kaj je fora s [slovenščina je zame španska vas], grammar nazi much Very Happy
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Mbili
Član
Član



Pridružen-a: Tor 03 Jan 2012 20:14
Prispevkov: 34
Aktiv.: 0.21
Kraj: Ljubljana

PrispevekObjavljeno: Čet Avg 16, 2012 5:26 pm    Naslov sporočila:   Odgovori s citatom

Pri navideznem naslovu moraš upoštevat, da je razdeljen na del naslova znotraj strani (spodnji biti naslova - pri Linux-u 12 bitov -> 4k = 4096) in preostali del (zgornjih 20 bitov pri ARM-u), ki se preslikuje (spodnji del se ne).

Če pogledaš še enkrat "mušter", ki sem ga poslal, je odmik (offset) določen z (PIO_BASE_ADDR+odmik_registra) & MAP_MASK. Gledati moraš vrstice s komentarjem //assign address!

S PIO_BASE_ADDR &~MAP_MASK je pa določeno zgornjih 20 bitov, ki se preslikajo preko funkcije mmap.

FRI-SMS jev mikrokrmilnik ni "odporen" na 5V. Seznam Atmelovih čipov, ki so, imaš na tem naslovu.

LP Mbili

PS: Španska vas
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
kotar
Neznanec
Neznanec



Pridružen-a: Tor 09 Okt 2012 21:38
Prispevkov: 2
Aktiv.: 0.01
Kraj: Ljubljana

PrispevekObjavljeno: Sob Feb 23, 2013 3:36 pm    Naslov sporočila:   Odgovori s citatom

Živjo, si bom malo sposodil temo.

Želim prevest preprost kernel modul. Dol sem potegnil src kernela 2.6.38 in ga patchal s patchem, ki je na fri-sms strani. Imam tudi toolchain, ki sem ga dobil z buildroot-om. Naredil sem Makefile:

Koda:
obj-m=drv.o
KERNEL_SOURCE=/home/david/arm/kernel_src/linux-2.6.38-fri-sms/
CROSS_COMPILE=/home/david/arm/buildroot-2011.11/output/host/usr/bin/arm-linux-

all:
   make -C $(KERNEL_SOURCE) M=$(PWD) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules
clean:
   make -C $(KERNEL_SOURCE) M=$(PWD) clean


In dobim tole, ter še polno drugih napak v stilu da z nekaterimi .h datotekami ni vse ok:
Koda:
ERROR: Kernel configuration is invalid.
         include/generated/autoconf.h or include/config/auto.conf are missing.
         Run 'make oldconfig && make prepare' on kernel src to fix it.


  WARNING: Symbol version dump /home/david/arm/kernel_src/linux-2.6.38-fri-sms/Module.symvers
           is missing; modules will have no dependencies and modversions.


Potem sem poskusil enako za PC, potegnil sem dol kernel 3.5 itd (torej ne cross-compile). Dobil sem enako napako. Nato pa sem v KERNEL_SOURCE dal pot do folderja v katerega so se inštalirali headerji, ki sem jih dobil z apt-get install linux-headers-$(uname -r) in potem je šlo.

Torej če se vrnem na arm varianto. Očitno moram v Makefile-u pokazat na en drug include?

Hvala
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
kotar
Neznanec
Neznanec



Pridružen-a: Tor 09 Okt 2012 21:38
Prispevkov: 2
Aktiv.: 0.01
Kraj: Ljubljana

PrispevekObjavljeno: Ned Feb 24, 2013 11:05 pm    Naslov sporočila:   Odgovori s citatom

Sem ugotovil, potrebno je bilo zbuildat kernel Very Happy
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2
Stran 2 od 2

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 6 dni


Powered by phpBB © 2001, 2005 phpBB Group