[video member=miotatsu stream_platform=twitch project=riscy title="pwm_speed_test refresher & handle_trap" vod_platform=youtube id=QqZUw1Xiofk annotator=Miblo] [0:08][Recap and set the stage for the day][:speech] [0:46][Reacquaint ourselves with pwm_speed_test.c][:profiling :research] [8:36][Compile pwm_speed_test[ref site="SiFive Developers" page="SiFive HiFive1 Getting Started Guide" url=https://static.dev.sifive.com/dev-kits/hifive1/hifive1-getting-started-v1.0.3.pdf] and recall that the program didn't do what we want] [11:32][Consult the annotations for days 049 and 050 to see how we got where we did][:research] [20:30][Learn how mei_isr() is setup in global_interrupts.c][:research] [23:33][Read 3.1.12 - Machine Trap Delegation Registers (medeleg and mideleg)[ref site="RISC-V" page="Draft Privileged ISA Specification v1.9.1" url=https://riscv.org/specifications/privileged-isa/] with mentions of hypervisor mode as used in Xen[ref site=Wikipedia page=Xen url=https://en.wikipedia.org/wiki/Xen] and Qubes OS[ref site=Wikipedia page="Qubes OS" url=https://en.wikipedia.org/wiki/Qubes_OS]][:research] [33:32][Continue to read 3.1.12[ref site="RISC-V" page="Draft Privileged ISA Specification v1.9.1" url=https://riscv.org/specifications/privileged-isa/] with a mention of RISC-V based real-time software[ref site="RISC-V Foundation" page="Software Status" url=https://riscv.org/software-status/]][:research] [37:21][Scan through the other documentation for chip specifications of privilege modes][:research] [41:02][Continue to read 3.1.12 about trap delegation[ref site="RISC-V" page="Draft Privileged ISA Specification v1.9.1" url=https://riscv.org/specifications/privileged-isa/]][:research] [45:46][Read 3.1.11 - Machine Trap-Vector Base-Address Register (mtvec)[ref site="RISC-V" page="Draft Privileged ISA Specification v1.9.1" url=https://riscv.org/specifications/privileged-isa/] with a moment of realisation as to why we do .align 2][:research] [50:57][Show the RISC-V Reader and plug the stream schedule[ref site=Twitter page="@hmn_riscy: I'm going to be trying the following stream schedule (Mon-Fri): 09:00-14:00 CST: Programming 14:00-15:00 CST: RISCY BUSINESS 15:00-17:00 CST: Games" url=https://twitter.com/hmn_riscy/status/935267027404587008]][:speech] [54:41][Continue to read 3.1.11 on implementation-specific trap handlers[ref site="RISC-V" page="Draft Privileged ISA Specification v1.9.1" url=https://riscv.org/specifications/privileged-isa/]][:research] [58:46][Study the trap handling code in the Freedom E SDK and Coreplex IP E31 Arty][:research] [1:04:45][pwm_speed_test.c: Call write_csr() and introduce handle_trap()] [1:11:50][Commit "Day 54"][:admin] [1:13:08][End it here][:speech] [/video]