[video member=miotatsu stream_platform=twitch project=riscy title="Understanding reset_demo" vod_platform=youtube id=3vIk7XXtVHU annotator=Miblo] [0:05][Start the stream with a mention of the "Useful Links" forum thread[ref site="RISCY BUSINESS Forums" page="Useful Links" url=https://riscy.handmade.network/forums/t/2190]] [0:57][Start reading the message from Hossein][:hardware :fabrication] [2:02][Take a little digression to mention the Ultimate Hacking Keyboard[ref site="Ultimate Hacking Keyboard" url=https://ultimatehackingkeyboard.com/]] [3:22][Continue reading Hossein's message] [9:05][Recommend "Indistinguishable From Magic: Manufacturing Modern Computer Chips" video[ref site=YouTube page="Indistinguishable From Magic: Manufacturing Modern Computer Chips" url=https://www.youtube.com/watch?v=NGFhc8R_uO4]] [9:21][@miblo][Fish 'n' Chip fabrication?] [10:32][Read Hossein's follow-up message on SiFive's business model][:hardware :fabrication] [12:52][Take a refresher on what we were doing, before letting in the DOG] [15:38][Return] [16:24][@miblo][You can totally do that!] [16:31][:Research MIE-related and DECLARE_CSR declarations] [22:05][TODO: dive into DECLARE_CSR()][:blackboard] [27:57][@miblo][The privileged spec[ref site="RISC-V" page="Draft Privileged ISA Specification v1.9.1" url=https://riscv.org/specifications/privileged-isa/] was the most recent doc you were looking at] [29:12][Refer to the documentation on currently allocated RISC-V machine-level CSR addresses in conjunction with the code][:research] [30:56][Note that they only defined values for MIP_*, and :research the IRQ* values] [33:59][Read about the Machine interrupt-enable register (mie) and summarise what clear_csr() is doing][:research] [37:26][Continue reading reset_demo(), as it sets g_ext_interrupt_handlers and calls print_instructions()][:research] [45:02][TODO: STDOUT_FILENO, write, uart...][:blackboard] [45:57][Continue reading through reset_demo() as it calls PLIC-related functions][:research] [48:15][TODO: GPIO_REG][:blackboard] [49:03][Go over reset_demo() again][:research] [50:22]["And then there's a comment that just says The"][quote 16] [50:31][Read on about how reset_demo() handles timers][:research] [51:11][A few words on the code being the documentation] [53:49]["For Handmade stuff I really do like the idea of just diving in and really understanding the code"][quote 17] [54:01][@ql1q][Call functions and vars in a sane way and you never need comments] [54:16][@ql1q][I mean comments like "WIP" or "TODO" are useful indeed] [54:48][Continue reading about about reset_demo() handles timers and recap the areas to explore from the :blackboard] [56:52][Start [:research researching] the CLINT in the Freedom E310-G000 Manual[ref site="SiFive Developers" page="Freedom E310-G000 Manual" url=https://www.sifive.com/documentation/chips/freedom-e310-g000-manual/] and the E3 Coreplex Manual[ref site="SiFive Developers" page="E3 Coreplex Manual" url=https://static.dev.sifive.com/pdfjs/web/viewer.html?file=https://static.dev.sifive.com/SiFive-E3-Coreplex-v1.2.pdf]] [1:01:36][Determine to read RISC-V Assembly Programmer's Handbook in the User-Level ISA Specification[ref site=RISC-V page="User-Level ISA Specification v2.1" url=https://riscv.org/specifications]] [1:02:47][@miblo][Good choice to insert the N in CLINT, methinks] [1:03:02][That is everything for today] [/video]