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 

uVision3
Pojdi na stran 1, 2  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
JohnD
Član
Član



Pridružen-a: Sob 08 Nov 2008 20:47
Prispevkov: 103
Aktiv.: 0.51
Kraj: Zasavje

PrispevekObjavljeno: Pet Sep 18, 2009 5:42 pm    Naslov sporočila:  uVision3 Odgovori s citatom

Zdravo!

Na področju programiranja mikrokontrolerjev sem popolen začetnik ampak imam željo, da se bi naučil. Zato se učim na Luminary EKI-LM3S6965 razvojni plošči. Za IDE uporabljam uVision3 in, ko si želim kodo prevesti in naložiti na razvojno ploščo mi pri prevajanju javi napako, da je velikost programa presegla omejitev 32kB. Program sam je velik okoli 7kB ampak problem je v tem, da se mi generira preko 30kB ZI-data (zero initialized data). Od kje izvor teh podatkov? Ali so potrebni za nalaganje programa in kako se naj jih rešim?

Hvala!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.03
Kraj: Novo mesto

PrispevekObjavljeno: Pet Sep 18, 2009 6:46 pm    Naslov sporočila:   Odgovori s citatom

Imaš morda v programu kje kako ogromno statično polje: static neki[xyz]; ?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



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

PrispevekObjavljeno: Pet Sep 18, 2009 6:53 pm    Naslov sporočila:   Odgovori s citatom

const char make_proggy_look_bigger[30000];
_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
JohnD
Član
Član



Pridružen-a: Sob 08 Nov 2008 20:47
Prispevkov: 103
Aktiv.: 0.51
Kraj: Zasavje

PrispevekObjavljeno: Pet Sep 18, 2009 7:38 pm    Naslov sporočila:   Odgovori s citatom

proggy is big and will grow Laughing

Bom moral preveriti, ker je program dosti razvejan, ko sem moral vključiti en kup includov (freeRTOS) zato da želim pognati 5 preprostih taskov. Za začetnika pač kar velik zalogaj ampak taka je naloga... A mogoče obstaja kaka bližnjica kako bi našel takšen array?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gumby
Član
Član



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

PrispevekObjavljeno: Pet Sep 18, 2009 7:45 pm    Naslov sporočila:   Odgovori s citatom

Poglej malo datoteke, ki jih generira prevajalnik...nekje ziher piše, kaj je tistih 30kb
_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
BluPhenix
Član
Član



Pridružen-a: Pet 05 Mar 2004 12:54
Prispevkov: 1018
Aktiv.: 4.29
Kraj: Sežana

PrispevekObjavljeno: Pet Sep 18, 2009 8:34 pm    Naslov sporočila:   Odgovori s citatom

Hja, če si FreeRTOS includal, potem je marsikaj lahko nasmetilo noter. Malo poglej katere stvari pri FreeRTOS dejansko potrebuješ in pusti mu da kliče samo tiste. Lahko poskusiš tudi z optimizacijo kode pri compilanju, da ti dejansko pomeče ven funkcije in spremenljivke, ki jih nikoli ne kličeš.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
JohnD
Član
Član



Pridružen-a: Sob 08 Nov 2008 20:47
Prispevkov: 103
Aktiv.: 0.51
Kraj: Zasavje

PrispevekObjavljeno: Pet Sep 18, 2009 9:38 pm    Naslov sporočila:   Odgovori s citatom

Zanimivo je tudi to, da se ista napaka (pač da se ustvari tolikšna količina ZI podatkov) tudi pri prevajanju testnega programa, ki je namenjen demonstraciji FreeRTOS-a na tej razvojni plošči Think
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
JohnD
Član
Član



Pridružen-a: Sob 08 Nov 2008 20:47
Prispevkov: 103
Aktiv.: 0.51
Kraj: Zasavje

PrispevekObjavljeno: Pon Sep 21, 2009 2:59 pm    Naslov sporočila:   Odgovori s citatom

Zdravo!

Ugotovil sem, da se teh ZI podatkov ne bom mogel znebiti (ker jih ustvari freeRTOS) in zato bom uporabljal namesto Keil-ovega compajlerja in linkerja gcc in direktno nalagal binearno datoteko na ploščo. Zato sem preuredil projekt in, ko poženem gcc mi javi napako:

port.c:123: error: parse error before "void"

Gre za naslednje vrstice:

__asm void prvSetMSP( unsigned long ulValue )
{
PRESERVE8
msr msp, r0
bx lr;
}

Kaj mu tukaj ne "paše" ker v primerih na netu je podobna koda le z navadnimi oklepaji in tudi tista varianta mu ne ustreza?

Hvala za pomoč!

LP, Jani
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.03
Kraj: Novo mesto

PrispevekObjavljeno: Pon Sep 21, 2009 3:45 pm    Naslov sporočila:   Odgovori s citatom

uVisionov compiler in gcc ne razumeta enako inline assemblerja.

Najdi example za gcc, ali pa na roke popravi vrstice z assemblerjem. Glede na tvoje prvo sporočilo, naredi prvo. Kolikor vem ima freeRTOS narejene example ki se compilajo z gcc, kot tudi tiste za uVision.

Za pomoč pri ugotavljanju kaj zaseda največ pomnilnika, ti je lahko v pomoč tudi *.map file (Dvoklik na root mapo v Project Workspace->Files)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4770
Aktiv.: 20.09
Kraj: Kobarid

PrispevekObjavljeno: Pon Sep 21, 2009 9:47 pm    Naslov sporočila:   Odgovori s citatom

Zaklenil sem flash na LPC2138 proti branju. Sedaj pa ne morem dostopati do LPCja preko ULINK2 programatorja. Niti erase ne prime. Kakšna ideja? Preko ISP vmesnika vem, da ni težav zbrisati flash in na novo naložiti program....
_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.03
Kraj: Novo mesto

PrispevekObjavljeno: Pon Sep 21, 2009 10:48 pm    Naslov sporočila:   Odgovori s citatom

SimonS je napisal/a:
Zaklenil sem flash na LPC2138 proti branju. Sedaj pa ne morem dostopati do LPCja preko ULINK2 programatorja. Niti erase ne prime. Kakšna ideja? Preko ISP vmesnika vem, da ni težav zbrisati flash in na novo naložiti program....
Hkrati si zaklenil tudi JTAG debug port. Brez ISPja (dostopa do bootloaderja) ne bo šlo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
JohnD
Član
Član



Pridružen-a: Sob 08 Nov 2008 20:47
Prispevkov: 103
Aktiv.: 0.51
Kraj: Zasavje

PrispevekObjavljeno: Tor Sep 22, 2009 7:15 am    Naslov sporočila:   Odgovori s citatom

Hvala umnik se vidi da obvladaš stroko Very Happy

V datoteki sem našel izvor svojih težav in ta je bil v načinu kako rtos upravlja pomnilnik. S tem ko vključiš datoteko heap_2.c si rezervira ogromno prostora. Zdej sem izbral alternativo in zadeva ne generira več tolikšno količino ZI podatkov. Kar se tiče pa inline assemblerja mi bo pa še gotovo prav prišlo, ko mi bo program presegel 32kB.

Ampak verjetno tukaj še gotovo ni konec mojih problemov tako, da se bom verjetno še kej javil Anxious
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4770
Aktiv.: 20.09
Kraj: Kobarid

PrispevekObjavljeno: Tor Sep 22, 2009 10:54 am    Naslov sporočila:   Odgovori s citatom

Umnik je napisal/a:
SimonS je napisal/a:
Zaklenil sem flash na LPC2138 proti branju. Sedaj pa ne morem dostopati do LPCja preko ULINK2 programatorja. Niti erase ne prime. Kakšna ideja? Preko ISP vmesnika vem, da ni težav zbrisati flash in na novo naložiti program....
Hkrati si zaklenil tudi JTAG debug port. Brez ISPja (dostopa do bootloaderja) ne bo šlo.

O ti šment!
Hvala za informacijo!

_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
JohnD
Član
Član



Pridružen-a: Sob 08 Nov 2008 20:47
Prispevkov: 103
Aktiv.: 0.51
Kraj: Zasavje

PrispevekObjavljeno: Tor Sep 22, 2009 2:22 pm    Naslov sporočila:   Odgovori s citatom

Za začetek sem si spisal en preprost programček z enim samim opravilom.

Koda:
static void blink_Task( void *pvParameters );

void prvSetupHardware(void);

void vApplicationTickHook( void );

int main (void)

   prvSetupHardware();

   SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOF;

   GPIO_PORTF_DIR_R = 0x01;
   GPIO_PORTF_DEN_R = 0x01;

   xTaskCreate( blink_Task,( signed portCHAR * ) "TASK",5000,NULL,blink_TASK_PRIORITY,NULL);

   vTaskStartScheduler();

   return 0;
}

void blink_Task( void *pvParameters )
{
int [slovenščina je zame španska vas];
for(;;)
{
   for([slovenščina je zame španska vas]=0;[slovenščina je zame španska vas]<20000;[slovenščina je zame španska vas]++)
    GPIO_PORTF_DATA_R |= 0x01;
}

}


Zadeva je preprosta in naj bi mogla najverjetneje delat Very Happy Ampak bilo bi preprosto, da bi zadeva delala. Zato sem preletel z debugerjem izvajanje programa in se mi zadeva ustavi po tem, ko RTOS koda omogoči prekinitve. Program še ne začne izvajanje opravila.

Koda:
/* Start the first task. */
   prvSetPSP( 0 );
   prvSetMSP( *((unsigned portLONG *) 0 ) );
   *(portNVIC_INT_CTRL) |= portNVIC_PENDSVSET;

   /* Enable interrupts */
   portENABLE_INTERRUPTS();

   /* Should not get here! */
   return 0;


Program se nato zacikla v naslednji vrstici, ki se generira ob ustvarjenju projekta
Koda:
;******************************************************************************
;
; This is the code that gets called when the processor receives an unexpected
; interrupt.  This simply enters an infinite loop, preserving the system state
; for examination by a debugger.
;
;******************************************************************************
IntDefaultHandler
       B       IntDefaultHandler


Bi mogoče mi znal vsaj namigniti kaj bi lahko bilo narobe in kaj bi lahko še preveril, ker mi že počasi zmanjkuje idej?

PS: Aja pa ISR bit CPSR ima vrednost 0 tako da verjetno ni prišlo do prekinitve.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.60
Kraj: Ljubljana

PrispevekObjavljeno: Tor Sep 22, 2009 3:51 pm    Naslov sporočila:   Odgovori s citatom

V katerem mode-u si, ko poženeš scheduler? To lahko preveriš v registru CPSR_c.
Moraš biti v supervisor mode-u. Standardni primeri startajo main v user mode-u.

Predno kličeš main(), moraš v startup.s ali crt0.s imeti nekaj v tem smislu:
Koda:
;  Enter Supervisor Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit
                MOV     SP, R0
                SUB     R0, R0, #SVC_Stack_Size

; Enter the C code

                IMPORT  __main
                LDR     R0, =__main
                BX      R0

_________________
Question is more important than the answer.(Plato)
Nazaj na vrh
Skrit 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 1, 2  Naslednja
Stran 1 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: 7 dni


Powered by phpBB © 2001, 2005 phpBB Group