ARM- interrupt/event

Jan Waclawek konfera na efton.sk
Pondělí Duben 15 16:24:30 CEST 2013


Aby som to nejako uzavrel, povodcu "nesymetrie" treba hladat na rozhrani
CPU a AHB.

Najpr teoreticky uvod: AHB(Lite) funguje tak, ze v prvom takte sa na
adresnu zbernicu umiestni adresa a pridaju sa prislusne riadiace signaly
(typu HWRITE). No a az v druhom takte sa na datovu zbernicu umiestnia data
patriace k adrese z prveho taktu. Pritom sa na adresnu zbernicu a riadiace
signaly v druhom takte  umiestnuje adresa nasledujucich dat, atd. Takze
zapis jedneho slova trva (predpokladaju sa zarovnane zapisy a ziadne
waitstaty).

Teraz k spravaniu toho write buffra: pri "normalnych" zapisoch sa najprv
pozrie na zbernicu, ci na nej neprebieha prave datova faza (t.j. ze
adresna zbernica je uz "volna"). Ak ano, urobi sa zapis adresy priamo na
zbernicu a data sa odlozia na nasledujuci takt. Ak nie, pozrie sa, ci je
volny write buffer, ak ano, zapise sa do write buffera, ktory sa uz o
zapis postara; ak nie, vlozi sa waitstate

Potom retazec tesne za sebou nasledujucich zapisov vyzera nejako takto
(EXEC je vykonavacia faza procesora, WBUF je obsah write buffra, HADR je
obsah adresnej zbernice AHB, HDAT zapisovane data na AHB, GPIO stav pinov,
vsetko na konci resp. tesne pred koncom cyklu):
EXEC STR1 STR2-wait STR3 STR4 NOP  NOP  NOP

WBUF A1D1  D1   D2   D3   D4   --   --   -- 
HADR  --   A1   A2   A3   A4   --   --   --
HDAT  --   --   D1   D2   D3   D4   --   --
GPIO  --   --   --   D1   D2   D3   D4   D4

a ak su povkladane NOPy:

EXEC STR1 NOP  STR2 NOP  STR3 NOP  STR4 NOP  NOP  NOP
WBUF A1D1  D1   D2   --  A3D3  D3   D4   --   --   --
HADR  --   A1   A2   --   --   A3   A4   --   --   --
HDAT  --   --   D1   D2   --   --   D3   D4   --   --
GPIO  --   --   --   D1   D2   D2   D2   D3   D4   D4


Zaujimavym dosledkom tohoto mechanizmu je, ze napriek tomu, ze sa da urobit
kolkokolvek 1-cyklovych pulzov, nijakovsky sa neda urobit 2-cyklovy pulz
(t.j. aby medzi 2 zapismi na periferiu boli presne 2 cykly).

Ak sa medzi jednotlive zapisy vlozi DMB (alebo DSB), tak procesor za STR
caka 2x waitstate, kym sa zbernica "vysype", t.j. zapis trva 3 cykly (a
kedze je tam este 1 instrukcia naviac, vzdialenosti medzi hranami su 4
cykly). Tak sa da zarucit minimalne trvanie pulzu.

Zamozrejme ja dovnutra nevidim, takze toto je vsetko odvodene len z
pozorovania a citania datasheetov, vobec to vo vnutri takto nemusi vyzerat.

Toto vsetko je za predpokladu, ze su porty priamo na AHB (z pohladu CPU
tzv. S-bus) a nie je cestou nic co by sposobilo waitstaty. Napriklad u
STM32F10x (co je jedna z prvych radov (a naviac je to aj starsia revizia
jadra, ale to by snad nemalo hrat rolu)) su GPIO na APB zbernici, a bridge
AHB-APB sposobuje jeden waitstate aj ked APB bezi na tych istych hodinach
ako AHB, takze tam je to casovanie ine (a vyslovene sa vyplaca vkladat
medzi STR "ne-pamatove" instrukcie, vid napr.
https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/DispForm.aspx?ID=639&RootFolder=%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex%5fmx%5fstm32%2fTrue%20performance%20of%20STM32&Source=https%3A%2F%2Fmy%2Est%2Ecom%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex%5Fmx%5Fstm32%2FFlat%2Easpx%3FRootFolder%3D%252Fpublic%252FSTe2ecommunities%252Fmcu%252FLists%252Fcortex%255Fmx%255Fstm32%252FTrue%2520performance%2520of%2520STM32%26FolderCTID%3D0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B%26currentviews%3D17524
(mimochodom: forma tohoto URL snad staci ako ohodnotenie software ktory je
na tom fore pouzity; ale ak to pomoze, rad este nan naplujem aj inymi
sposobmi)).

To spravanie pre ten Cortex-M1 si neviem vysvetlit, ale ani neviem nic o
tej konkretnej implementacii - napriklad, nefetchuju sa nahodou instrukcie
cez tu istu zbernicu ako sa zapisuju data?

wek



----- Original Message ---------------
>Ano, bez nopu je nesymetricky, s nopy symetricky.
>HWRITE - ano, to je ten na AHB, cili je to vec jadra.
>
>J.S.
>
>
>Dne 12.4.2013 20:03, Jan Waclawek napsal(a):
>> Vratil som sa k http://list.hw.cz/pipermail/hw-list/2013-April/438545.html
>> a teraz som si vsimol, ze
>>
>> 1. HWRITE - to je vlastne signal priamo na zbernici AHB, predpokladam, ze?
>>
>> 2. v tomto pripade JE nesymetricky prave ten striedavy zapis bez vkladanych
>> NOPov, to bude podla mna problem z velmi podobneho sudka.
>>
>> wek



Další informace o konferenci Hw-list