Zugriffoptimierung eterner Ram

Fragen zu Programmiersprachen und Software für den Hive und die Propellerchips
DJLinux

Re: Zugriffoptimierung eterner Ram

Beitrag von DJLinux »

Danke Euch beiden
habe an die BUS Konfiguration nicht mehr gedacht jetzt geht es.

Grüsse Joshy
DJLinux

Re: Zugriffoptimierung eterner Ram

Beitrag von DJLinux »

Wenn im IOS default mäsig alle /CS Leitungen Ausgang sind und der Daten Bus Eingang
warum muss man dann im Spinteil outa:=0 benutzen ?

Das kommt doch dem Chip Select /CS gleich und selektiert kurzfristing
Administar,Bellatrix, RAM1, RAM2

ich verstehe es noch nicht wirklich

Code: Alles auswählen

PRI poke(val,adr)
  outa:=0 ' <----- was passiert hier ???
  Param1 := adr
  Param2 := val
  JobNr  := JOB_POKE
  repeat until JobNr == JOB_NONE

Code: Alles auswählen

DAT                     ORG 0

cog_loop                rdlong  _job,par wz   ' get job id
              if_z      jmp     #cog_loop
 
                        cmp     _job,#JOB_poke wz
              if_z      jmp     #cog_poke
                        ' ignore unknow job
                        jmp     #cog_loop

                        
cog_ready               mov     _ptr,par
                        mov     _job,#JOB_NONE
                        wrlong  _job,_ptr
                        jmp     #cog_loop
                                      
cog_poke                mov     _ptr,par        ' pointer of params
                        add     _ptr,#4         ' move to param 1
                        rdlong  _adr,_ptr       ' get address
                        add     _ptr,#4         ' move to param 2
                        rdlong  _val,_ptr       ' get value
                        
                        mov     _tmp,_adr       ' make a copy 
                        and     _val,#$FF       ' only D7-D0
                        ' BUS
                        mov     outa,_BUS_INIT  ' all de-selected 
                        mov     dira,_DIR_OUT   ' D7..D0 as output
                        ' ADR HI
                        and     _adr,_m_A18_A11 ' hi part
                        shr     _adr,#3         ' move to latch port
                        or      _adr,_BUS_AL_HI ' BUS + AL hi
                        mov     outa,_adr       ' BUS + AL hi + ADR
                        and     _adr,_BUS_AL_LO
                        mov     outa,_adr       ' BUS + AL lo + LATCH
                        ' ADR LO
                        mov     _adr,_tmp       ' from copy
                        and     _adr,_m_A10_A00 ' lo part
                        shl     _adr,#8         ' mov to address port
                        or      _adr,_val       ' D7-D0
                        or      _adr,_BUS_INIT  ' BUS
                        and     _tmp,_m_A19 wz  ' MSB of address
                        mov     _tmp,_adr
                        mov     outa,_adr       ' BUS + A10-A0 + D7-D0
              if_z      and     _adr,_BUS_WR_R1 ' address <= $07FFFF 
              if_nz     and     _adr,_BUS_WR_R2 ' address >= $800000
                        mov     outa,_adr       ' /WR+/RAMx + A10-A0 + D7-D0
                        mov     outa,_tmp       ' BUS + A10-A0 + D7-D0
                        mov     outa,#0 
                        mov     dira, _DIR_IN
                        
                        jmp     #cog_ready
                        

'                       __    ____    
'                       HWCL ACCRR    [Latch ]
'                       SRLE LSShlAAA AAAAAAAA DDDDDDDD
'                         kD  abioA98 76543210 76543210
_DIR_OUT      long %00000111_11111111_11111111_11111111
_DIR_IN       long %00000111_11111111_11111111_00000000
_BUS_INIT     long %00000100_01111000_00000000_00000000
_BUS_AL_HI    long %00000100_11111000_00000000_00000000
_BUS_AL_LO    long %00000100_01111000_11111111_00000000
_BUS_WR_R1    long %00000000_01110111_11111111_11111111
_BUS_WR_R2    long %00000000_01101111_11111111_11111111
_BUS_WR_OFF   long %00000100_01111111_11111111_11111111
_m_A19        long %00000000_00001000_00000000_00000000 
_m_A18_A11    long %00000000_00000111_11111000_00000000
_m_A10_A00    long %00000000_00000000_00000111_11111111

_job          res 1
_ptr          res 1
_adr          res 1
_val          res 1
_tmp          res 1

                        FIT
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Zugriffoptimierung eterner Ram

Beitrag von drohne235 »

Mit "dira := 0" (nicht outa!) schaltest du das Port auf "Eingang", damit wird es inaktiv bzgl. der entsprechenden COG.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Antworten