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 

Error handle in assembler

 
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
ciko
Član
Član



Pridružen-a: Čet 27 Mar 2008 11:41
Prispevkov: 126
Aktiv.: 0.60
Kraj: Novo mesto

PrispevekObjavljeno: Tor Jan 20, 2009 11:44 am    Naslov sporočila:  Error handle in assembler Odgovori s citatom

Živjo!

Iščem in iščem, pa ne najdem. Nekoč sem videl en zelo lep primer, kako manipulirati oz imeti detekcijo glede napake jedra - kdaj se sistem zruši.

Sedaj pa to iščem in ne najdem. Zato sem se lotil kar sam pisanja.
Zanima me, kako funkcijo, ki je napisana v c datoteki kličeš is *.s datoteke.

Zaenrkat sem poizkusil:

Del LPC2300.s kode
Koda:

; Area Definition and Entry Point
;  Startup Code must be linked first at Address at which it expects to run.

                AREA    RESET, CODE, READONLY
                ARM


; Exception Vectors
;  Mapped to Address 0.
;  Absolute addressing mode must be used.
;  Dummy Handlers are implemented as infinite loops which can be modified.



Vectors         LDR     PC, Reset_Addr         
                LDR     PC, Undef_Addr
                LDR     PC, SWI_Addr
                LDR     PC, PAbt_Addr
                LDR     PC, DAbt_Addr
                NOP                            ; Reserved Vector
;               LDR     PC, IRQ_Addr
                LDR     PC, [PC, #-0x0120]     ; Vector from VicVectAddr
                LDR     PC, FIQ_Addr

Reset_Addr      DCD     Reset_Handler
Undef_Addr      DCD     Undef_Handler
SWI_Addr        DCD     SWI_Handler
PAbt_Addr       DCD     PAbt_Handler
DAbt_Addr       DCD     DAbt_Handler
                DCD     0                      ; Reserved Address
IRQ_Addr        DCD     IRQ_Handler
FIQ_Addr        DCD     FIQ_Handler

; moje         
                IMPORT  __Undef_Handler_my
                IMPORT  __SWI_Handler_my
                IMPORT  __PAbt_Handler_my
                IMPORT  __DAbt_Handler_my               
                IMPORT  __IRQ_Handler_my
                IMPORT  __FIQ_Handler_my

Undef_Handler   B       __Undef_Handler_my ; Undef_Handler
SWI_Handler     B       __SWI_Handler_my   ; SWI_Handler
PAbt_Handler    B       __PAbt_Handler_my  ; PAbt_Handler
DAbt_Handler    B       __DAbt_Handler_my  ; DAbt_Handler
IRQ_Handler     B       __IRQ_Handler_my   ; IRQ_Handler
FIQ_Handler     B       __FIQ_Handler_my   ; FIQ_Handler



in še funkicje v main.c datoteki:

Koda:

int Undef_Handler_my (void)
{
    SEND_TEXT("Undef_Handler_my\n\r");
    while(1);
}

void SWI_Handler_my  (void)
{
    SEND_TEXT("SWI_Handler_my\n\r");
    while(1);
}
void PAbt_Handler_my (void)
{
    SEND_TEXT("PAbt_Handler_my\n\r");
    while(1);
}
void DAbt_Handler_my (void)
{
    SEND_TEXT("DAbt_Handler_my\n\r");
    while(1);
}
void IRQ_Handler_my  (void)
{
    SEND_TEXT("IRQ_Handler_my\n\r");
    while(1);
}
void FIQ_Handler_my  (void)
{
    SEND_TEXT("FIQ_Handler_my\n\r");
    while(1);
}


Kako povezati, da se bo lahko iz s datoteke klicalo funkcijo v c datoteki?

Hvala za odgovore

Lep pozdrav
Peter
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ciko
Član
Član



Pridružen-a: Čet 27 Mar 2008 11:41
Prispevkov: 126
Aktiv.: 0.60
Kraj: Novo mesto

PrispevekObjavljeno: Tor Jan 20, 2009 3:33 pm    Naslov sporočila:   Odgovori s citatom

Težava je bila:
http://www.arm.com/support/faqdev/1242.html

in

vnese se točno taka imena funkcij, kot so definirane, ne pa s "__", kot sem jaz dal.

Pravilno:

Koda:

; Area Definition and Entry Point
;  Startup Code must be linked first at Address at which it expects to run.

                PRESERVE8
                AREA    RESET, CODE, READONLY
                ARM


; Exception Vectors
;  Mapped to Address 0.
;  Absolute addressing mode must be used.
;  Dummy Handlers are implemented as infinite loops which can be modified.




Vectors         LDR     PC, Reset_Addr         
                LDR     PC, Undef_Addr
                LDR     PC, SWI_Addr
                LDR     PC, PAbt_Addr
                LDR     PC, DAbt_Addr
                NOP                            ; Reserved Vector
;               LDR     PC, IRQ_Addr
                LDR     PC, [PC, #-0x0120]     ; Vector from VicVectAddr
                LDR     PC, FIQ_Addr

Reset_Addr      DCD     Reset_Handler
Undef_Addr      DCD     Undef_Handler
SWI_Addr        DCD     SWI_Handler
PAbt_Addr       DCD     PAbt_Handler
DAbt_Addr       DCD     DAbt_Handler
                DCD     0                      ; Reserved Address
IRQ_Addr        DCD     IRQ_Handler
FIQ_Addr        DCD     FIQ_Handler

; moje         
                IMPORT  Undef_Handler_my
                IMPORT  SWI_Handler_my
                IMPORT  PAbt_Handler_my
                IMPORT  DAbt_Handler_my               
                IMPORT  FIQ_Handler_my

Undef_Handler   B     Undef_Handler_my ; Undef_Handler  ;
SWI_Handler     B     SWI_Handler_my ; SWI_Handler   
PAbt_Handler    B     PAbt_Handler_my ; PAbt_Handler 
DAbt_Handler    B     DAbt_Handler_my ; DAbt_Handler 
IRQ_Handler     B     IRQ_Handler   
FIQ_Handler     B     FIQ_Handler_my ; FIQ_Handler   


Upam, da bo komu pomagalo.
Lp
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
Stran 1 od 1

 
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