Search
Cílem je z programu přistupovat na periferie procesorového zařízení.
S problematikou se seznamte nejdříve v simulátoru QtMips. Jednoduchá vstupně výstupní periferie je mapovaná od adresy 0xffffc100.
SPILED_REG_LED_LINE
pole: .word 1, 2, 4, 8, 16, 32, 65, 48, 66, 51, 54, 65, 80, 79, 1, 2, 3 lui $t0, 0xffff ori $t0, $t0, 0xc100 addi $t1, $0, 5 addi $t2, $0, 30 addi $t3, $0, 1 loop: sw $t1, 4($t0) sll $t1, $t1, 1 addi $t2, $t2, -1 bne $t2, $0, loop nop break
lui $t0, 0xffff ori $t0, $t0, 0xc000 addi $t1, $0, 48 addi $t6, $0, 1234 addi $t2, $0, 10 loop: lw $t3, 0x08($t0) andi $t3, $t3, 1 beq $t3, $0, loop nop sw $t1, 0x0c($t0) addi $t1, $t1, 1 addi $t2, $t2, -1 bne $t2, $0, loop nop break
Kompletní popis periferií implementovaných v simulátoru QtMips naleznete na stránce třetího cvičení v odstavci periferie mapované do paměťového adresního prostoru případně přímo v souboru README.md přímo z projektu. Součástí třetího cvičení je i ukázka překladu z jazyka C do assembleru s rozborem generovaného kódu. Nalézá se tam také archiv s programem. Program naleznete in v adresáři /opt/apo/qtmips_binrep. Program se shodnou funkcí pro desku MZ_APO naleznete v adresáři /opt/apo/binrep/mzapo_binrep. Porovnání analýzy kódu zkompilovaného pro architekturu ARM naleznete na konci dnešního cvičení.
/opt/apo/qtmips_binrep
/opt/apo/binrep/mzapo_binrep
Obvodové řešení V/V adaptéru již na PCI a modernějších sběrnicích není prakticky realizovatelné. Pro pochopení problematiky (před návrhem V/V adaptéru pro PCI) je však jednoduché obvodové řešení např. na sběrnici typu ISA vhodné.
Adresový dekodér:
Jednoduchý V/V adaptér:
lspci
lspci -xxx
Na přednáškách jste viděli příklad jednotlivých bloků adaptéru na PCI sběrnici, včetně řídicího konečného automatu. Rozšiřte tento návrh o možnost konfiguračního čtení a konfiguračního zápisu. (Časový diagram konfiguračního čtení:)