EPISODE · Sep 24, 2021 · 1H 56M
Deep Dive w/Scott: ARMv8A MMU
from Adafruit Industries · host Adafruit Industries
Join Scott as he continues his quest to get TinyUSB running on the Raspberry Pi 4 and answers questions folks have. Support Adafruit, and by extension me, by purchasing hardware from https://adafruit.com Chat with me and lot of others on the Adafruit Discord at https://adafru.it/discord. No stream next week! Latest code is here: https://github.com/tannewt/tinyusb/tree/rpi 0:00 Getting started 0:01:30 audio debrief from last week 0:03:28 housekeeping 0:08:00 First time watching your live stream. What are we learning today? 0:09:10 Cortex A / MMU 0:10:20 If you learn original python on a pc, is it then easy to go from there to circuit python? 0:11:10 qemu further progress 0:13:40 board init() 0:15:30 unaligned access 0:17:30 What model of Pi will this run on? And will it be ARM32 or 64? 0:19:10 if you run CP on metal RPI4, is there the need for 32 bits? 0:21:15 local setup on desk 0:22:30 OSH Park Pi Development v1 project to eliminate all the wires above 0:25:00 https://github.com/chickadee-tech/pi-developer 0:25:45 catch the exceptions in boot.s 0:27:40 load VBAR_EL1 with virtual vector table address 0:29:00 arm stub switches from EL3? to EL2 0:29:40 4-way split terminal tinyusb, serial, gdb 0:32:22 cortex-a.py (in gdb) 0:32:47 ARM Cortex-A Programmers Guide for ARMv8-A pdf (MMU overview) 0:34:15 TTBR0_EL0 (EL2) 0:35:10 Arm architecture reference DDIO487G_b_armv8_arm.pdf 0:35:51 ESR_EL2 register 0:38:42 cortex-a.py - decode exception code 0:40:15 Python pattern matching in python 3.10 (match switch) 0:41:45 What other information can we extract from the exception 0:42:25 FAR ( fault address register? ) / extend the decoding 0:50:45 ashw.io/blog/arm64-pgtable-tool - and youtube video 0:54:00 decoding virtual address ( from BruceS ) 0:56:20 pi4 address map from bcm2711-peripherals(1).pdf 0:58:00 setup_mmu_flat_map() in mmu.c 1:00:10 Level 1 access flag fault 1:02:00 Translation fault level 1 1:03:30 access flag fault level 1 1:06:20 Long-descriptor level 1 and level 2 descriptor formats 1:10:00 github ashwio/arm64-pgtable-tool python code 1:14:10 “The Access flag” , ok, add the MM_DESCRIPTOR_ACCESS_FLAG 1:17:10 got a little further - maybe try it out on the hardware (instead of qemu) 1:22:30 decode the Data Abort further - translation fault level 1 1:27:50 we have uart output! 1:29:00 summary - flags in translation table needed to get access flag set to 1 1:39:00 dcd_init() 1:39:58 What side projects are you looking forward to diving deeper into in the coming weeks? 1:42:00 Did you ever ask adafruit to manufacture your old board? 1:44:04 UPS truck arrived - (new iPhone? ) Be right back 1:45:58 back - unboxing 1:51:45 recap - MMU / fixed table lookup / added access flag / used python to decode information about access fault / uart output 1:53:00 next steps 1:53:54 wrap up 1:55:50 - see you in two week Visit the Adafruit shop online - http://www.adafruit.com ----------------------------------------- LIVE CHAT IS HERE! http://adafru.it/discord Adafruit on Instagram: https://www.instagram.com/adafruit Subscribe to Adafruit on YouTube: http://adafru.it/subscribe New tutorials on the Adafruit Learning System: http://learn.adafruit.com/ -----------------------------------------
What this episode covers
Join Scott as he continues his quest to get TinyUSB running on the Raspberry Pi 4 and answers questions folks have. Support Adafruit, and by extension me, by purchasing hardware from https://adafruit.com Chat with me and lot of others on the Adafruit Discord at https://adafru.it/discord. No stream next week! Latest code is here: https://github.com/tannewt/tinyusb/tree/rpi 0:00 Getting started 0:01:30 audio debrief from last week 0:03:28 housekeeping 0:08:00 First time watching your live stream. What are we learning today? 0:09:10 Cortex A / MMU 0:10:20 If you learn original python on a pc, is it then easy to go from there to circuit python? 0:11:10 qemu further progress 0:13:40 board init() 0:15:30 unaligned access 0:17:30 What model of Pi will this run on? And will it be ARM32 or 64? 0:19:10 if you run CP on metal RPI4, is there the need for 32 bits? 0:21:15 local setup on desk 0:22:30 OSH Park Pi Development v1 project to eliminate all the wires above 0:25:00 https://github.com/chickadee-tech/pi-developer 0:25:45 catch the exceptions in boot.s 0:27:40 load VBAR_EL1 with virtual vector table address 0:29:00 arm stub switches from EL3? to EL2 0:29:40 4-way split terminal tinyusb, serial, gdb 0:32:22 cortex-a.py (in gdb) 0:32:47 ARM Cortex-A Programmers Guide for ARMv8-A pdf (MMU overview) 0:34:15 TTBR0_EL0 (EL2) 0:35:10 Arm architecture reference DDIO487G_b_armv8_arm.pdf 0:35:51 ESR_EL2 register 0:38:42 cortex-a.py - decode exception code 0:40:15 Python pattern matching in python 3.10 (match switch) 0:41:45 What other information can we extract from the exception 0:42:25 FAR ( fault address register? ) / extend the decoding 0:50:45 ashw.io/blog/arm64-pgtable-tool - and youtube video 0:54:00 decoding virtual address ( from BruceS ) 0:56:20 pi4 address map from bcm2711-peripherals(1).pdf 0:58:00 setup_mmu_flat_map() in mmu.c 1:00:10 Level 1 access flag fault 1:02:00 Translation fault level 1 1:03:30 access flag fault level 1 1:06:20 Long-descriptor level 1 and level 2 descriptor formats 1:10:00 github ashwio/arm64-pgtable-tool python code 1:14:10 “The Access flag” , ok, add the MM_DESCRIPTOR_ACCESS_FLAG 1:17:10 got a little further - maybe try it out on the hardware (instead of qemu) 1:22:30 decode the Data Abort further - translation fault level 1 1:27:50 we have uart output! 1:29:00 summary - flags in translation table needed to get access flag set to 1 1:39:00 dcd_init() 1:39:58 What side projects are you looking forward to diving deeper into in the coming weeks? 1:42:00 Did you ever ask adafruit to manufacture your old board? 1:44:04 UPS truck arrived - (new iPhone? ) Be right back 1:45:58 back - unboxing 1:51:45 recap - MMU / fixed table lookup / added access flag / used python to decode information about access fault / uart output 1:53:00 next steps 1:53:54 wrap up 1:55:50 - see you in two week Visit the Adafruit shop online - http://www.adafruit.com ----------------------------------------- LIVE CHAT IS HERE! http://adafru.it/discord Adafruit on Instagram: https://www.instagram.com/adafruit Subscribe to Adafruit on YouTube: http://adafru.it/subscribe New tutorials on the Adafruit Learning System: http://learn.adafruit.com/ -----------------------------------------
NOW PLAYING
Deep Dive w/Scott: ARMv8A MMU
No transcript for this episode yet
Similar Episodes
Apr 21, 2026 ·73m
Apr 18, 2026 ·14m
Apr 18, 2026 ·95m
Apr 15, 2026 ·55m
Apr 13, 2026 ·68m
Apr 11, 2026 ·59m