Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Relbmessa

Seiten: [1] 2 3 4
1
Offtopic / Frohe Weihnacht
« am: 24. December 2015, 12:53 »
Ich wünsche euch allen ein frohes Fest und Gesundheit.
Relbmessa
2
Lowlevel-Coding / Re: ARM PI PI2B IVT IRQ
« am: 11. October 2015, 23:51 »
So,
ich habe diesen Teil gelöst und daß gesetzte Ziel erreicht.
Das Programm macht das was es soll.

BCM2836 und ARM Timer lösen eine IRQ aus und werden aufgelöst ohne sich zu stören.
Die restlichen Kerne werden geweckt und jeweils L1-cache gestartet.
Jeder Kern kann unabhängig SVC (SWI) auslösen.

Wer Fragen  dazu hat kann sie stellen, vielleicht kann ich ja helfen.
 
Gruß
Relbmessa
3
Lowlevel-Coding / Re: ARM PI PI2B IVT IRQ
« am: 09. October 2015, 22:56 »
Hi,
habe das Problem gelöst.

BCM2836 und ARM Timer lösen IRQ aus und werden erkannt.

Sollte Jemand noch Intresse haben, dann sollte er jetzt aktiv werden so lange es noch in meinem Kopf aktiv ist.

Ab und zu schaue ich  ja auch Hier rein.

Gruß
Relbmessa




4
Lowlevel-Coding / ARM PI PI2B IVT IRQ
« am: 09. September 2015, 13:37 »
Hallo,

wieder mal komme ich nicht weiter.

Habe ein kleines Test-Programm für Pi und Pi2 entworfen.

Auf dem Pi macht es alles was ich erwarte. Der Pi2B macht im wesentlichen auch alles, nur beim ARM_Timer IRQ
hängt er sich auf.
Soweit ich gelesen habe, soll er aber abwärts Kompatibel sein.

Frage: :?

Hat sich schon Jemand damit befast ?
Wenn ja, würde ich einen kleinen Gedankenaustausch begrüßen.

Leider ist der komplette Code etwas umfangreich.
Also erstmal nur einen Code-Auschnitt.

Gruß
Relbmessa


/********************************************************/
/* DANK PETER LEMON */
/*Dual Raspberry Pi */ /*Test IRQ */

 .section .init
 .globl _start
 _start:

/*; Setup Frame Buffer */
SCREEN_X       = 1024
SCREEN_Y       = 768
BITS_PER_PIXEL = 24

BASIS_ADD      =0x20000000 /* Pi 2B 0x3F000000 */

@CS_TIMER       =0x3000

/*; Setup  */


/*; Setup SMP (Boot Offset = $4000008C + ($10 * Core), Core = 1..3)
/*;Core1Boot = $4000008C + ($10 * 1) ; Core 1 Boot Offset */
 Core1Boot = 0x4000009C            @ ; Core 1 Boot Offset
/*;Core2Boot = $4000008C + ($10 * 2) ; Core 2 Boot Offset */
 Core2Boot = 0x400000AC            @ ; Core 2 Boot Offset
/*;Core3Boot = $4000008C + ($10 * 3) ; Core 3 Boot Offset */
 Core3Boot = 0x400000BC            @ ; Core 3 Boot Offset
@/*-------------------------------------------------------------------*/
  mov sp , #0x8000
b FB_Init 
@/*-------------------------------------------------------------------*/
    ldr pc,reset_handler
    ldr pc,undefined_handler
    ldr pc,swi_handler
    ldr pc,prefetch_handler
    ldr pc,data_handler
    ldr pc,unused_handler
    ldr pc,irq_handler
    ldr pc,fiq_handler
reset_handler:      .word resetVector
undefined_handler:  .word undVector
swi_handler:        .word swiVector
prefetch_handler:   .word prefVector
data_handler:       .word dataVector
unused_handler:     .word reservVector
irq_handler:        .word irqVector
fiq_handler:        .word fiqVector
/*--------------------------------------------------------------*/
  mov r0,r0
  mov r0,r0
/*--------------------------------------------------------------*/
FB_Init:
/*;---------------------------------------------------------------*/
  mov r0 ,#FB_STRUCT     @ mov r0,#FB_STRUCT @ 0xB0
  orr r0,#8 /*; MAIL_TAGS*/
  orr r0,r0 ,#0x8000
  orr r0,r0 ,#0
/*;--------------------------------------------------------------- -------- */
mov r1 ,#BASIS_ADD @0x3F000000 /*;@ Address Mail_Box */
orr r1,r1,#0xB800
orr r1,r1,#0xA0
orr r1,r1,#0                                                  ;
/*;------------------------------------------------------------------------*/
 str r0,[r1] @ /*; Mail Box Write */   ;70-7F   */
/*;------------------------------------------------------------------------*/
  mov r1 ,#FB_POINTER @FB_POINTER 0x2C ;
  orr r1 ,r1,#0x8100
  orr r1 ,r1,#0
  orr r1 ,r1,#0
@;/*;----------------------------------------------------------------------*/ 
  ldr r10,[r1] /* ; R10 = Frame Buffer Pointer ;A0-AF */
  cmp r10,#0   /* Compare Frame Buffer Pointer To Zero */
  beq FB_Init  /* IF Zero Re-Initialize Frame Buffer */
  mov r12 , r10
b weiter_programm
/*;----------------------------------------------------------------------------------------------------------*/
Ersatz_align:
  .word 0xFFFFFFFF
  .word 0xFFFFFFFF @ der achte
/* align 8 */
FB_STRUCT:
  .word FB_STRUCT_END - FB_STRUCT
  .word 0
       
  .word 0x00048003 /*,Set_Physical_Display*/
  .word 0x8
  .word 0x8
  .word SCREEN_X
  .word SCREEN_Y

  .word 0x00048004 /*Set_Virtual_Buffer  */
  .word 0x8
  .word 0x8
  .word SCREEN_X
  .word SCREEN_Y
 
  .word 0x00048005 /*Set_Depth        */
  .word 0x4
  .word 0x4
  .word BITS_PER_PIXEL

  .word 0x00048009 /*Set_Virtual_Offset */
  .word 0x8
  .word 0x8
FB_OFFSET_X:
  .word 0
FB_OFFSET_Y:
  .word 0
 
  .word 0x00040001 /*Allocate_Buffer */
  .word 0x8      
  .word 0x8
FB_POINTER:
  .word 0
  .word 0
 
  .word 0x0            
FB_STRUCT_END:
/*-----------------------------------------------------------*/
/*////////////////////////////////////////////////////////*/
 .align 8
resetVector:

  push {r0-r12 ,r14}
  /* nur Message-------------*/
     mov r0 ,#0 /*Spalte */
     mov r1 ,#1  /*Zeile   */   
 bl upcurserPos  /* Start-Position    */
      mov r0 , #16 /* 0x10 zeichen */
 bl upconvbyte 
     
haltreset:
 b haltreset
 
  pop {r0-r12 ,r14}
/*---IRQ-Ende----*/
      subs r15 ,r14,#4     

/*////////////////////////////////////////////////////////*/

 .align 8
undVector:

  push {r0-r12 ,r14}
    /* nur Message-------------*/
     mov r0 ,#0 /*Spalte */
     mov r1 ,#2  /*Zeile   */   
 bl upcurserPos  /* Start-Position    */
      mov r0 , #16+1 /* zeichen */
 bl upconvbyte
haltund:
  b haltund
  pop {r0-r12 ,r14}
/*---IRQ-Ende----*/

movs r15 ,r14
 
/*////////////////////////////////////////////////////////*/

/*////////////////////////////////////////////////////////*/
 .align 8
swiVector:



  push {r0-r12 ,r14}
 
    /* nur Message-------------*/
     mov r0 ,#0 /*Spalte */
     mov r1 ,#3  /*Zeile   */   
 bl upcurserPos  /* Start-Position    */
      mov r0 , #16+2 /* zeichen */
 bl upconvbyte
@ haltswi:
@  b haltswi
  pop {r0-r12 ,r14}
/*---IRQ-Ende----*/
movs r15 ,r14
 
/*////////////////////////////////////////////////////////*/

/*////////////////////////////////////////////////////////*/
 .align 8
prefVector:

  push {r0-r12 ,r14}
   /* nur Message-------------*/
     mov r0 ,#0 /*Spalte */
     mov r1 ,#4  /*Zeile   */   
 bl upcurserPos  /* Start-Position    */
      mov r0 , #16+3 /* zeichen */
 bl upconvbyte

HALTVector:
b HALTVector
     
    pop {r0-r12 ,r14}   

subs r15,r14,#4
/*////////////////////////////////////////////////////////*/
/*////////////////////////////////////////////////////////*/
 .align 8
dataVector:

push {r0-r12 ,r14}
    /* nur Message-------------*/
     mov r0 ,#0 /*Spalte */
     mov r1 ,#5  /*Zeile   */   
 bl upcurserPos  /* Start-Position    */
      mov r0 , #16+4 /* zeichen */
 bl upconvbyte
 
haltdata:
 b haltdata

  pop {r0-r12 ,r14}
@/*---IRQ-Ende----*/
     subs r15 ,r14 ,#8   

/*////////////////////////////////////////////////////////*/
/*////////////////////////////////////////////////////////*/
 .align 8
reservVector:

  push {r0-r12 ,r14}
 
    /* nur Message-------------*/
     mov r0 ,#0 /*Spalte */
     mov r1 ,#6  /*Zeile   */   
 bl upcurserPos  /* Start-Position    */
      mov r0 , #16+5 /* zeichen */
 bl upconvbyte
 

haltreserv:
 b haltreserv
 
  pop {r0-r12 ,r14}
/*---IRQ-Ende----*/

 movs r15 ,r14
/*////////////////////////////////////////////////////////*/

/*//////////////////////////////////////////////////////////*/
 .align 8
irqVector:

  push {r0-r12 ,r14}
 
  ldr r0 , =BASIS_ADD
  ldr r1 , =0xB40C
  add r0 , r1 /* Ziel  */
   
  ldr r1 , =0x01
  str r1 , [r0]
 
 ldr r0 ,=startProgr
 mov r1 ,#1 /* startProgramm ein */
 str r1 ,[r0] /* heute */
/*********************************************************/
  mov r1 , #1
  ldr r0 , =uhrzeitzaehl
  ldr r2 , [r0]
  add r2 , r1
  str r2 , [r0]
   /* nur Message-------------*/
@     mov r0 ,#0 /*Spalte */
@     mov r1 ,#7  /*Zeile   */   
@ bl upcurserPos  /* Start-Position    */
@      mov r0 , #16+6 /* zeichen */
@ bl upconvbyte
 
  pop {r0-r12 ,r14}
/*---IRQ-Ende----*/
      subs r15 ,r14,#4     
/*---IRQ-Ende----*/
/*////////////////////////////////////////////////////////*/
 .align 8
fiqVector:

  push {r0-r12 ,r14}
 
      /* nur Message-------------*/
     mov r0 ,#0 /*Spalte */
     mov r1 ,#8  /*Zeile   */   
 bl upcurserPos  /* Start-Position    */
      mov r0 , #16+7 /* zeichen */
 bl upconvbyte

haltfiq:
b haltfiq

  pop {r0-r12 ,r14}
/*---IRQ-Ende----*/
     subs r15 ,r14 ,#4   
/**********************************************************/
/*////////////////////////////////////////////////////////*/
@/*------------ UP ---------------------------------------*/
up_cursor:
  push {r4-r12}
  mov r6 ,r4 @ offset /startpunkt
  mov r4 ,#16 @ anzahl spalte
  mov r5 ,r4 @ anzahl zeile
loop_cursor: 
  strb r1 , [r0,r6] @ blue
   add r0 , #1
  strb r2 , [r0,r6] @ gruen
   add r0 , #1
  strb r3 , [r0,r6] @ rot
   add r0 , #1
   sub r4 , #1 @ spalte
   cmp r4 , #0
   bne loop_cursor
   mov r4 , #16 @ reset spalte
   add r6 , #1024*3     @ nächste zeile
   sub r6 , #16*3 @ offset
   sub r5 ,#1
   cmp r5 ,#0
   bne loop_cursor
   pop {r4-r12}     
mov pc , lr

@/*////////////////////////////////////////////////////////*/
 .align 2
 .section .data

bws_pointer:
  .word 0x0
/*-----------------------------------------------------------*/
bws_hell_rot:
  .word 0xFF
 
bws_hell_gruen:
  .word 0x0

bws_hell_blue:
  .word 0xFF
 
bws_anzahl_point:
  .word 1024*16 @1024*768
/*-----------------*/ 
pause_value:
  .word 0x003F0000
/*-----------------*/
pause_valueA:
  .word 0x000F0000
/*----------------*/
pause_valueB:
  .word 0x000F0000*2
/*---------------------------------------------------------------------*/
 .align 2
meValueAnzbyte: @ Parameter upsiebenzweiBWS
 .int 0x4
meValueAnzZeil:
 .int 0x8 @ 20d
@--------------Anzeige zeile 1-8 --------------------------------------*/
 .align 8
data_bws0:
  .word 0x11111111
data_bws4:
  .word 0x22222222
data_bws8:
  .word 0x33333333 
data_bwsC:
  .word 0x44444444
data_bws10:
  .word 0x55555555 
data_bws14:
  .word 0x66666666
data_bws18:
  .word 0x77777777
data_bws1C:
  .word 0x88888888 
data_bws20:
  .word 0x0
/*---------------------------------------------------------------------*/
data_bws24:
  .word 0x24
data_bws28:
  .word 0x0 
data_bws2C:
  .word 0x0
data_bws30:
  .word 0x0 
data_bws34:
  .word 0x0
data_bws38:
  .word 0x0
data_bws3C:
  .word 0x0 
data_bws40:
  .word 0x40
/*-------------------------------------------------------------------*/
data_bws44:
  .word 0x44
data_bws48:
  .word 0x0 
data_bws4C:
  .word 0x0
data_bws50:
  .word 0x0 
data_bws54:
  .word 0x0
data_bws58:
  .word 0x0
data_bws5C:
  .word 0x0 
data_bws60:
  .word 0x60
/*-------------------------------------------------------------------*/
/*------------------*/
uhrzeitzaehl:
  .int 0x0
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
/*=======================================================*/
startProgr:
  .int 0x01
weitermitProgramm:
  .int 0x0
prMatrixXXX:
  .int Proffset
  .int Pr001 , Pr002 , Pr003 , Pr004 , Pr005 , Pr006 , Pr007 , Pr008 , Pr009 , Pr010
  .int Pr011 , Pr012 , Pr013 , Pr014 , Pr015 , Pr016 , Pr017 , Pr018 , Pr019 , Pr020
 /*;--------------------------------------------------------------------*/
weiter_programm:
@/*-------------------------------*/
/*============================================================*/
/*    ISR Vectoren      */
/************************************************************/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ ------------- IVT Pointer -------------------------------

mov r0 , #8 @;Anzahl
ldr r1 , =0xEA000006 @;value sprung
mov r2 , #0 @; ram null
ivt_pointer0:
str r1 ,[r2]
add r1 ,#2
add r2 ,#4
sub r0 ,#1
cmp r0 ,#0
bne ivt_pointer0
@----------------ENDE------------------------------------
@;;;;;; lade E59FF000------------------------------------
mov r0 , #8 @;Anzahl
ldr r1 , =0xE59FF000 @;ldr PC, [PC]
mov r2 , #32 @; ram start 0x20
ivt_pointer1:
str r1 ,[r2]
@add r1 ,#2
add r2 ,#12 @ Abstand 0x0C
sub r0 ,#1
cmp r0 ,#0
bne ivt_pointer1
@----------------ENDE------------------------------------
@;;;;;;;;; address händler-------------------------------
mov r0 , #8 @;Anzahl
ldr r1 , =0x00008008 @;Erster reset_handler
mov r2 , #40 @; ram 40 0x28
ivt_pointer2:
str r1 ,[r2]
add r1 ,#4
add r2 ,#12 @ Abstand 0x0C
sub r0 ,#1
cmp r0 ,#0
bne ivt_pointer2
@----------------ENDE-------------------------------------------
   
5
Hallo,
ich kann Dir wenn Du möchtest, dass aus meinen ersten Gehversuchen entstandenen Raspberry Pi OS, zur
Verfügung stellen.
Es ist nichts besonderes, aber für Studienzwecke sicherlich ganz brauchbar.

Das ganze in Assembler.
IRQ
Textgrafik 64-Spalten x 48-Zeilen (BSchirm Auflösung 1024x768x24)
Secunden-Takt wird angezeigt.

Eine direkte Beschreibung exestiert nicht - nur die Kommentare von der Programmierung
Das ganze an den Raspberry Pi 2B anzupassen, dürfte nicht das Problem sein!!?? :?
Aus 0x20000000 0x3F000000 machen  :-D

Wenn Du Intresse hast, dann schreib hier im Forum.
Ich schaue ab und zu vorbei.
Den Code hier zu posten ist leider aus Platzmangel ungünstig.

Tschüß
Relbmessa
 
   
6
Hallo JackRong,

vielleicht bist Du ja einfach nur naiv und wenn Du weiter machst,
hast Du nicht nur ein Problem sondern reichlich.
Am Anfang steht die Idee und der Fleiß, und Jeder hat so seine Träume!. (Ich auch)

Der Raspberry PI2 B ist nun einmal kein Rennauto.
Aber zum lernen bestimmt nicht schlecht..

Gebe einfach "Raspberry Pi PeterLemon" bei Google oder bei ??.

Dort findest Du, meiner Meinung nach, das was Du suchst.
(alles schön mit Assembler).
Man muß nicht alles selber erfinden.(einfach eine Zeitfrage)

Wenn Du dann noch weiter machst, freue ich mich auf weitere Beiträge von Dir.

Relbmessa   
7
Lowlevel-Coding / Re: Linux syscall read write
« am: 11. May 2015, 11:37 »
Hallo Leute,
ich habe das Problem gelöst.

Leider hat sich ein Denkfehler manifestiert.

Durch den Rückgabe Wert in R0 (EAX) wird der FD natürlich gelöscht.

Also  die  Schleife bei read beginnen und close (read) auskommentieren.
Den FD in r0 nicht vergessen.
Und write close muss ausgeführt werden (Kommentar entfernen nicht vergessen)
Die Pi-Kamera schaft wirklich 90 fps , allerdings wird der pi 2B ganz schön warm und stürtz dann ab.

Ich werde mir mal die Temperatur anschauen und es dann gegebenfalls mit Kühlung versuchen.

Gruß
Relbmessa   
8
Lowlevel-Coding / Re: Linux syscall read write
« am: 05. May 2015, 14:59 »
Hallo,
leider konnte mir im Moment Niemand helfen.

Zum Teil konnte ich mein Problem lösen.

Der Fehler FD-Überlauf entsteht durch das Auskomentieren von close.
Dadurch wird das Programm zwar schnell, aber fliegt beim Überlauf raus.
Das kontinuierliche schliessen der FDs bewirkt aber eine extreme
Verlangsamung vom Programm mit dem Faktor 9-10.
Kein Wunder das mein C-Programm zulangsam ist.
Diese Wirkung wird vom schliessen der read FD verursacht und
dadurch ist das Programm durch dass Auskommentieren schneller geworden.
(auch unbekümmertes Probieren kann Erfolg bringen)

Als Notlösung starte ich mein Programm mit einer kleinen Shell-Schleife immer
wieder neu.(der Speicher der FDs wird dabei gelöscht)

Mit der Lösung bin ich noch nicht ganz glücklich , aber kommt Zeit kommt Lösung

Danke für eure Aufmerksamkeit

Gruß
Relbmessa   
 
9
Lowlevel-Coding / Linux syscall read write
« am: 28. April 2015, 18:25 »
Hallo Gemeinschaft

Vielleicht kann mir Jemand helfen??

Das Problem ist ein kleines Kopierprogramm für Linux ARM (Pi 2B)
Es soll als Dauerschleife laufen und ist in Assembler mit Linux syscall read und write.

Der Fehler:
das Programm macht 510 Schleifen und hört dann mit dem kopieren auf!

Das Programm ist aber in der Programmliste (top) noch aktiv (aber nur mit ca 1,7 prozent)

Hier nun der Code:
@------------------------------------------------------------------------------
@ Test pi 2B Programm twG (testen)
@ gcc -o twG twG.s
@------------------------------------------------------------------------------
@ as -o twG.o twG.s -> main ersetzen mit _start sonst Fehlermeldung
@ ld -o twG twG.o
@------------------------------------------------------------------------------

      .global main @ gcc -o

@       .global _start  @ as -o -> ld -o
     
.section .data
@------------------------------------------------------------------------------   

@------------------------------------------------------------------------------
   fd_in:
    .int 0x0
   fd_out:
    .int 0x0
@--------------------------
   reserve:
    .int 0x0
@----------parameter- sleep---------------------------------------------------
time_value:
.int 0 @ Sekunde
.int 2000000 @ 10mS /100mS  100000000

@------------------------------------ 
  file_reada:
    .asciz  "/dev/shm/A/B640x480rgb0"
  .align 2
@---write--------------------------   
  file_write2:
    .asciz  "/dev/shm/G/B640x480rgb0"
  .align 2

@------------------------------------------------------------------------------
  buffer_a:
  .space 1024*901
   
@-Ende section .data---------------------------------------------------------
@-----------------------------------------------------------------------------

main: @ gcc     
@ _start:      @ as -> ld
   mov r4 , #71 @ G
   mov r5 , #72 @ H
@-----------------------------------
   mov r3 , #65         @ A
   mov r6 , #66 @ B   
   mov r8 , #1024       @ schleife
   ldr r9 , =0x1 @ für Test
  ldr r10 , =18 @ für Test 18d

@-----------------------------------------------------------------------------

loop_neu:
@--open the file for reading---hole Bilddavor (/C/B640x480rgb0)---------------
      ldr r0 , =file_reada @
      strb r3 , [r0,#9] @ pfad A oder B
      mov r1 , #2 @ read
      ldr r2 , =444 @ all
      mov r7 , #5 @ syscall 5 open file
      swi 0
      ldr r1 , =fd_in
      str r0 , [r1] @ Rückgabe-Wert
@-----------------------------------------------------------------------------
@-- read from file------------------------------------------------------------
  @   ldr r1 , =fd_in
  @   ldr r0 , [r1] @ deskriptor fd_in
      ldr r1 , =buffer_a @ Zeiger -> Anfang der Daten
      mov r2 , #1024*900
      add r2 , #15 @ Anzahl Byte hier (900,0kiB 921615 Byte)
      mov r7 , #3 @ syscall 3 -> read file
      swi 0
@-----------------------------------------------------------------------------
@--close the file-------------------------------------------------------------
      mov r7 , #6
  @   ldr r1 , =fd_in
  @   ldr r0 , [r1] @ deskriptor fd_in
      swi 0
@------------------------------------------------------------------------------
str r9  , [r1, r10] @ r10 =ziel
add r9  , #1 @ kontrolle anzahl

@---lesen Ende-----------------------------------------------------------------
@-----create -----------------------------------------------------
ldr r0 , =file_write2
       strb r4 , [r0,#9] @ pfad G H
ldr r1 , =444
mov r7 , #8 @ syscall 8 create
swi 0
ldr r1 , =fd_out
str r0 , [r1]
@-----write file---------------------------
mov r2 , #1024*900
add r2 , #15
ldr r1 , =buffer_a @ Quelle (Ergebnis)
@@ ldr r1 , =fd_out
@@ str r0 , [r1]
mov r7 , #4 @ syscall write 4
swi 0
@------------------------------------------
@@ ldr r1 , =fd_out
@@ str r0 , [r1]
  mov r7 , #6 @ close
swi 0

@-----sleep sys 162 ----------------------------------------------------------
mov r7 , #162
ldr r0 , =time_value
mov r1 , #0
swi 0
@---------Test pfad read -----------------------------------------------------
add r3 , #1
cmp r3 , r6
ble pfadr_ok
sub r3 , #2
pfadr_ok:
@---------Test pfad write ----------------------------------------------------
add r4 , #1
cmp r4 , r5
ble pfad_ok
sub r4 , #2
pfad_ok:
@---------Durchlauf für Test--------------------------------------------------
@@ sub r8 , #1
@@ cmp r8 , #0
@@ bne loop_neu
b loop_neu @ max 0x01FE 510d -> warum ??
@-----------------------------------------------------------------------------

@--syscall exit 1 ------------------------------------------------------------
    mov r7 , #1
    mov r0 , #0
    swi 0 @ Ende   
     












Hilfen sind willkommen.

Gruß
Relbmessa
10
Lowlevel-Coding / Re: ARM Timer-IRQ
« am: 30. August 2013, 23:18 »
Danke Leute ,
dass mit dem Rücksprung habe ich schon gelöst.

Wie gesagt, es geht mir primär um die Zeit Einstellung vom Timer.
Ich habe festgestellt das der System Timer den IRQ auslöst.
Muss nur noch rauskriegen wie das ganze eingestellt wird.

Danke

Gruß
Relbmessa
   
11
Lowlevel-Coding / Re: ARM Timer-IRQ
« am: 30. August 2013, 19:51 »
Hallo ,
das Bit-7 im CPSR wird nach dem verlassen leider nicht zurück gesetzt.  :?
Ob es da noch andere Automatismen gibt kann ich nicht sagen.
Es muss leider zurück gesetzt werden.
Mein kleines Programm läuft jetzt stabil . :-D
Aber primär geht es mir darum die IRQ-Timerzeit einzustellen.
Der Timer (ARM-side) zeigt aber keine Wirkung.Nur derTimer- IRQ kann im Control-Register beeinflusst werden (offset 0x408 BCM2835 ARM Peripherals).
Welcher Timer-Wert  im Moment jetzt tickt ?? (keine Ahnung)
 Ich suche weiter!

Gruß
Relbmessa
 
12
Lowlevel-Coding / Re: ARM Timer-IRQ
« am: 29. August 2013, 18:50 »
Hallo ,
der IRQ wird beim Auslösen im CPSR ausgeschalten.
Ich schalte in erst wieder ein wenn die ISR verlassen wird.
Wenn die ISR mehr Zeit braucht als die Auslösung des nächsten IRQs bekommt man natürlich ein Problem.

Im Moment bin ich noch bei der Grundlagen-Erforschung.
Ich wollte den Timer  (ARM -side ) benutzen, geht wohl aber nicht.
Ohne diesen zu aktivieren kommt schon ein periodischer IRQ .
Was Berryboot eingestellt hat muss ich erst noch prüfen.

Den IRQ erst nach dem Verlassen der ISR zu aktivieren ergibt bei meinen Programm keinen Sinn,
denn ich brauche eine konstante Wiederholung .

Ob das so geht ?   :evil:
Im Moment läuft das Programm stabil, aber der Interrupt-takt setzt periodisch aus.
Mal sehen, wo die Ursache zu suchen ist

Gruß
Relbmessa
.       
13
Lowlevel-Coding / Re: ARM Timer-IRQ
« am: 26. August 2013, 22:59 »
 :-D
Problem erkannt:
der Timer feuert  in zu kurzen Abständen..
suche jetzt eine Möglichkeit  die Zeit richtig einzustellen. :-P



Gruß
Relbmessa
14
Lowlevel-Coding / Re: ARM Timer-IRQ
« am: 26. August 2013, 20:10 »
HalLo ,
mein rudimentäres Programm läuft. 8-)

Es wird ein Timer-IRQ erzeugt und ich kann wieder aus der ISR raus.

Meine Frage:
wenn ich Bit-7 vom CPSR  schon in der ISR lösche , dann hängt sich der Rechner auf.
Kann man das Bit-7 nicht in der ISR schon löschen (ist halt sinnvoll).
Oder mache ich vielleicht was Falsch?? :?
Hat einer ARM Erfahrung ? /Raspberry Pi  :roll:

Gruss
Relbmessa

15
Lowlevel-Coding / Re: ARM Timer-IRQ
« am: 24. August 2013, 20:41 »
Danke für die schnelle und ausführliche Antwort.
Muss ich erst mal durcharbeiten.
Heute habe ich aber keine Zeit.

Gruß
Relbmessa
 
16
Hallo ,
einfach mal Konrad Zuse eingeben !!
17
Softwareentwicklung / Re: OS Dev für die RaspPi
« am: 23. August 2013, 22:25 »
Berryboot ja  8-)

sonst ->keine Ahnung
Kannst ja Bericht erstatten  :-P
18
Softwareentwicklung / Re: OS Dev für die RaspPi
« am: 23. August 2013, 21:58 »
Ja,
kernel_rpi_aufs.img  umbenennen oder löschen und dann
eigenes kernel_rpi_aufs.img speichern (Name muss so bleiben)

Gruß
Relbmessa  :-D
19
Lowlevel-Coding / Re: ARM Timer-IRQ
« am: 23. August 2013, 21:46 »
Hallo Vogtinator ,
Dank für die schnelle Antwort.
mov r1,#0x42 ok
orr r1,r1,#0xc00 nur halb , der wert 0xc00 ist wohl falsch?
bei mir kommt dann als Ergebnis : 031B81E3 raus .mh
werde noch ein wenig studieren :-P
Gruß
Relbmessa
PS
Verstehe deine Frage nicht?
Habe es so abgeschrieben, wie es bei mir auf dem Bildschirm steht.
C ist außerdem nicht mein Ding  :?
20
Softwareentwicklung / Re: OS Dev für die RaspPi
« am: 23. August 2013, 19:44 »
Sorry ,
mein Fehler  :evil:

Aber ich habe für den Anfang noch keine bessere Quelle
für den Raspberry Pi B gefunden.

viel Spass  :?
Relbmessa   
Seiten: [1] 2 3 4

Einloggen