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 

Tečaj C jezika za ARM
Pojdi na stran Prejšnja  1, 2, 3, 4, 5  Naslednja
 
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
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 59.91
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Čet Jun 30, 2011 7:54 pm    Naslov sporočila:   Odgovori s citatom

71GA je napisal/a:
V ozadju programov ki jih tukaj piše so že driverji.

Ja ? kakšni ?
In ja res, to niso osnove, za osnove bi verjetno moral začet z elektroni.....

_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jun 30, 2011 8:18 pm    Naslov sporočila:   Odgovori s citatom

Na posnetku uporablja IDE, ki že vsakemu napisanemu programu, ko pritisne gumb compile, doda knjižnico driverjev kar stori v zaglavju programa z ukazoma,
Koda:
#include <avr/io.h>
#include <util/delay.h>

v katerih se nahajajo funkcije in startup koda, ki initializira procesor,... Omenjene funkcije dobi že kot priporočilo, če npr. nekje vtipka črko "w" in mu naniza več funkcij, ki se začnejo na "w" npr. wait(). To pa zato, ker je ta IDE narejen točno za njegov mikroprocesor. Isto je z Bascom AVR studio, če se ne motim, ki je za programiranje ATMEGA16. Saj celo sam reče (posnetek 31:22) da z ukazom,
Koda:
#define tipka_pin PINB

bere stanje iz registra PINB. Zdi se mi da na posnetku nisem nikjer videl programiranja registrov, torej kje pa je to, če je to kar sem videl vse? Saj register ni poimenovan PINB ampak je vedno 0x001...

Če se motim pa me prosim popravite.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Mihec
Član
Član



Pridružen-a: Pet 24 Mar 2006 20:10
Prispevkov: 415
Aktiv.: 1.77
Kraj: Mengeš

PrispevekObjavljeno: Čet Jun 30, 2011 10:41 pm    Naslov sporočila:   Odgovori s citatom

@71GA: Mogoče veš kakšno kodo vsebuje datoteka "io.h"?

Nekdo je omenil da naj bi bil tečaj jezika "C", začetni ter nadaljvalni. Na tečaju naj bi se govorilo o osnovah, trikih pri pisanju kode (za bilo kateri uP), mehanizmi za kvalitetno odčitavanje tipk, ipd...

Menim da bi bilo nekaj takega še vedno najbolje in najbolj splošno. Platforma za učenje pa niti ni tako pomembna, le če je zasnova splošna.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 59.91
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Čet Jun 30, 2011 10:53 pm    Naslov sporočila:   Odgovori s citatom

71GA, ne vem čemu ti rečeš driverji, ampak tu v tem primeru to sigurno niso. Vse kar je vključeno (includano) so definicije (#define) registrov za konkreten mikrokontroler. Za nek drug mikrokontroler se pač izbere drug include.

Zdaj smo pa nenadoma spet pri tem, da se pogovarjamo o mikrokontrolerjih namesto o jeziku C.

Nekaj o C:
Kakorkoli vedno je dobra praksa, da naredimo sam program neodvisen od konkretnega mikrokontrolerja določene skupine. V ta namen se v programu izognemo pisanju fizičnih naslovov za posamezne registre. Namesto tega raje uporabljamo kar imena registrov. Kje se ti registri nahajajo pa povemo v eni od datotek, ki jo includamo v glavni program. Tovrstne datoteke običajno dobimo že pripravljene skupaj s prevajalnikom.

Prav tako dobimo pripravljene razne knjižnice standardnih funkcij in procedur. Imena slednjih so z malenkostnimi razlikami enake za različne družine mikrokontrolerjev (fprint, sfprnt, sqrt, ...) Katere od teh knjižnic bomo uporabili je naša odločitev, ki jo prevajalnilku sporočimo z #include direktivo.

Omenjeno predavanje je dejansko osnova. Če gremo še nižje potem to ni več C, ampak že asembler.

_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jun 30, 2011 11:23 pm    Naslov sporočila:   Odgovori s citatom

VolkD je napisal/a:
Tovrstne datoteke običajno dobimo že pripravljene skupaj s prevajalnikom.

Hvala za obrazložitev ampak ali nebi bilo edino pravilno, da te datoteke znamo napisati sami?

Mihec je napisal/a:
Mogoče veš kakšno kodo vsebuje datoteka "io.h"?

Ne vem kaj vsebuje io.h. Najbrž le parametre za funkcije.

Mihec je napisal/a:
Nekdo je omenil da naj bi bil tečaj jezika "C", začetni ter nadaljvalni. Na tečaju naj bi se govorilo o osnovah, trikih pri pisanju kode (za bilo kateri uP), mehanizmi za kvalitetno odčitavanje tipk, ipd...

Menim da bi bilo nekaj takega še vedno najbolje in najbolj splošno. Platforma za učenje pa niti ni tako pomembna, le če je zasnova splošna.

Meni nekaj ni povsem jasno in torej, kako mislite izvesti tečaj splošnih trikov v C za bilokateri uc, če pa vedno, ko želimo preveriti delovanje, program naložimo na nek uc, ki je specifičen in kodo je zanj potrebno prilagoditi saj nimajo vsi uc istih registrov za iste stvari. Če bi vsak prišel s svojo plato bi tečaj trajal precej dolgo, ampak lahko bi pa poiskusili Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
jvolk
Član
Član



Pridružen-a: Ned 05 Mar 2006 1:14
Prispevkov: 737
Aktiv.: 3.13
Kraj: okolica Divače

PrispevekObjavljeno: Pet Jul 01, 2011 12:04 am    Naslov sporočila:   Odgovori s citatom

71GA je napisal/a:

Hvala za obrazložitev ampak ali nebi bilo edino pravilno, da te datoteke znamo napisati sami?

Ne vem kaj vsebuje io.h. Najbrž le parametre za funkcije.


V io.h so napisani naslovi registrov ter njihova imena.. Se pravi neke vrste "telefonski imenik". To se pač uporablja tako kot je napisano in nima smisla vedno ponovno pisat.. tudi če uporabljaš ASM je stvar podobna.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 12.34
Kraj: Lovrenc na P.

PrispevekObjavljeno: Pet Jul 01, 2011 8:53 am    Naslov sporočila:   Odgovori s citatom

71GA je napisal/a:
Hvala za obrazložitev ampak ali nebi bilo edino pravilno, da te datoteke znamo napisati sami?

Zakaj bi, če to napišejo proizvajalci prevajalnikov ali proizvajalci krmilnikov. Lahko napišeš sam, greš skozi datasheet in vse definiraš vse registre ter njihove naslove, vendar zakaj bi to delal kar je narejeno in prosto dostopno.
Je pa dobro, da veš kaj je v tistih datotekah. Se spomnim primera iz pred par let, ko mi nikakor ni delala ena periferija na lpc21xx (ne spomnim se točno na katerem) in po buljenju in razhroščevanju sem ugotovil, da se naslov registra v headerju ne ujema s tistim v datasheetu. Tako, da je priporočljivo tu pa tam poiskati zadnje verzije headerjev, npr. keil je pri cortexu m3 (NXP) spremenil headerje vsaj 2x in to radikalno. Mr. Green
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
nakamichi
Član
Član



Pridružen-a: Pon 21 Avg 2006 18:51
Prispevkov: 845
Aktiv.: 3.68
Kraj: Nova Gorica

PrispevekObjavljeno: Pet Jul 01, 2011 9:03 am    Naslov sporočila:   Odgovori s citatom

71GA je napisal/a:
V prvem postu sem omenil programiranje ARM... zakaj ne preberete prvega posta Smile. Nikoli ni bilo rečeno učenje zgolj ANSI C, tega je na youtube na pretek, takoj ko se vežeš na arhitekturo pa je tega vse manj.


Torej moreš bit še bolj specifičen, ARM XXXX jedro pri XXXX procesorju. To so torej inštrukcije že in ne več neko splošno znanje. Reševanje specifičnega problema mislim, da ni cilj seminarja.

Kot so omenili tudi pisanje header datoteke za nek mikrokrmilnik je povsem neracionalno, saj je že spisana in ti olajša delo saj te ne zanima na katerem naslovu je register ampak samo, da lahko do njega dostopaš, vse kar je v njem je

#define IME_REGISTRA_KOT_V_DATASHEETu *(naslov registra v datasheetu)

Primer:

#define VIC_BASE_ADDR 0xFFFFF000
#define VICIRQStatus (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x000))
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Pet Jul 01, 2011 9:49 am    Naslov sporočila:   Odgovori s citatom

MarkoM je napisal/a:
71GA je napisal/a:
Hvala za obrazložitev ampak ali nebi bilo edino pravilno, da te datoteke znamo napisati sami?

Zakaj bi, če to napišejo proizvajalci prevajalnikov ali proizvajalci krmilnikov. Lahko napišeš sam, greš skozi datasheet in vse definiraš vse registre ter njihove naslove, vendar zakaj bi to delal kar je narejeno in prosto dostopno.

Ker brez tega ostane neka luknja v znanju pa mi to nikakor ni všeč, ker bi rad spoznal mikroprocesor od nižjega nivoja postopno k višjemu. Poleg tega tako kot si rekel tudi sam slej ko prej naletiš na en primer, ko ti nekaj ne dela Smile. No takrat se izvlečeš le tako, da pač greš gledat to kar so ti napisali proizvajalci mcu in mogoče dolgo časa iščeš težavo. Če bi te zadeve napisal sam pa bi problem definitivno hitreje rešil.

Rad bi izpostavil, da je to zelo koristno, pa mi za moj procesor (ARM926ej-s) tega nihče ne zna pokazati Smile. Sem se matral pol leta, da lahko sedaj zastonj compilam programe za ARM v IDE Eclipse v Linux Ubuntuju. Uspešno sem tudi skompilal blinker program (projekt), ki je bil spisan za Keil za Windows. Ampak tega programa si ne znam razložiti, ker takoj ko začnem kopat v library je vsega ogromno, ker imam v projektu več kot 15 headerjev, okrog 8 source datotek, 1 startup kodo in 1 tabelo vektorjev. Kako naj se pol en začetnik to nauči? In to je še najlažji izmed priloženih primerov. Skoraj bolje da grem sam pisat od začetka ampak bi rabil nekega mentorja ali pa tečaj.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.36

PrispevekObjavljeno: Pet Jul 01, 2011 9:53 am    Naslov sporočila:   Odgovori s citatom

71GA je napisal/a:
..., ker bi rad spoznal mikroprocesor od nižjega nivoja postopno k višjemu.

Potem kar začni z asemblerjem... Wink

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Pet Jul 01, 2011 9:55 am    Naslov sporočila:   Odgovori s citatom

gumby je napisal/a:
71GA je napisal/a:
..., ker bi rad spoznal mikroprocesor od nižjega nivoja postopno k višjemu.

Potem kar začni z asemblerjem... Wink

No to sem že in sem si razložil startup kodo pa tabelo vektorjev. Zdej sem pa na točki, kjer [slovenščina je zame španska vas] spisat C program Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 12.34
Kraj: Lovrenc na P.

PrispevekObjavljeno: Pet Jul 01, 2011 10:32 am    Naslov sporočila:   Odgovori s citatom

71GA je napisal/a:
Ker brez tega ostane neka luknja v znanju pa mi to nikakor ni všeč, ker bi rad spoznal mikroprocesor od nižjega nivoja postopno k višjemu.


Potem si se stvari lotil malce nerodno. Pilot potniškega letala tudi ni začel svoje kariere na airbusu 380...
Začni z enim enostavnim 8-bitnim krmilnikom (AVR, PIC)...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Obelix
Član
Član



Pridružen-a: Pon 19 Maj 2008 13:59
Prispevkov: 1881
Aktiv.: 9.02
Kraj: Maribor

PrispevekObjavljeno: Pet Jul 01, 2011 11:26 am    Naslov sporočila:   Odgovori s citatom

Kaj pa kak "online" tečaj ?

Tedensko ena lekcija, potem pa vprašanja, diskusija... Vsi vidijo vse.

Odpadejo prostorski problem, časovni problem, transportni problem, skoraj neomejeno število udeležencev ...

Lep pozdrav.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Pet Jul 01, 2011 1:44 pm    Naslov sporočila:   Odgovori s citatom

MarkoM je napisal/a:
71GA je napisal/a:
Ker brez tega ostane neka luknja v znanju pa mi to nikakor ni všeč, ker bi rad spoznal mikroprocesor od nižjega nivoja postopno k višjemu.


Potem si se stvari lotil malce nerodno. Pilot potniškega letala tudi ni začel svoje kariere na airbusu 380...
Začni z enim enostavnim 8-bitnim krmilnikom (AVR, PIC)...

Sem predaleč, da bi zaj nehal Smile

Obelix je napisal/a:
Kaj pa kak "online" tečaj ?

Tedensko ena lekcija, potem pa vprašanja, diskusija... Vsi vidijo vse.

Odpadejo prostorski problem, časovni problem, transportni problem, skoraj neomejeno število udeležencev ...

Lep pozdrav.

Dobra ideja. Lahko preko bloggerja naredimo kaj.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1235
Aktiv.: 5.66
Kraj: KOPER

PrispevekObjavljeno: Pet Jul 01, 2011 1:56 pm    Naslov sporočila:   Odgovori s citatom

Ziga: ne rabiš nehat, nadaljuj v assemblerju!
_________________
Lep pozdrav iz Kopra Rudi
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, 3, 4, 5  Naslednja
Stran 4 od 5

 
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: 7 dni


Powered by phpBB © 2001, 2005 phpBB Group