diff --git a/README.md b/README.md index d975fa0..07e48c5 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,9 @@ By using this repository and course, you acknowledge and agree that:
-# Today's Tutorial [September 6, 2026] -## Lesson 288: Embedded Hacking Course (Chapter 6: Debugging Intro To Variables) -This chapter covers debugging an introduction to variables as it relates to embedded development on the Pico 2. +# Today's Tutorial [September 8, 2026] +## Lesson 289: Embedded Hacking Course (Chapter 7: Hacking Intro To Variables) +This chapter covers hacking an introduction to variables as it relates to embedded development on the Pico 2. -> Click [HERE](https://github.com/mytechnotalent/Embedded-Hacking/blob/main/Embedded-Hacking.pdf) to read the FREE pdf book. diff --git a/WEEK03/WEEK03.md b/WEEK03/WEEK03.md index cda7faf..107ba46 100644 --- a/WEEK03/WEEK03.md +++ b/WEEK03/WEEK03.md @@ -801,19 +801,26 @@ Each type of exception has its own handler: ### Step 12: Trace Reset Handler to `main` -Start at the Cortex-M vector table. Word `0x00000000` is the initial stack -pointer; word `0x00000004` is the **reset handler address** loaded into `pc` -when the processor resets: +Start at the **application** Cortex-M vector table in XIP flash. The RP2350 +bootrom occupies `0x00000000`; it is not this firmware's vector table. Word +`0x10000000` is this image's initial stack pointer, and word `0x10000004` is +the **reset-handler pointer** loaded into `pc` when the bootrom enters the +application: ```gdb -(gdb) x/2wx 0x00000000 +(gdb) x/2wx 0x10000000 +0x10000000 <__vectors>: 0x20082000 0x1000015d ``` -Disassemble the reset-handler address shown at `0x00000004`, then continue -through startup until `platform_entry`: +`0x1000015d` is a Thumb function pointer: bit 0 is set to indicate Thumb +state. Clear that bit before disassembly, so the reset handler's first +instruction address is `0x1000015c`. Then continue through startup until +`platform_entry`: ```gdb -(gdb) x/10i RESET_HANDLER_ADDRESS +(gdb) x/10i 0x1000015c +(gdb) x/x 0x10000004 +0x10000004 <__vectors+4>: 0x1000015d (gdb) b platform_entry (gdb) c ``` diff --git a/WEEK03/WEEK03.pdf b/WEEK03/WEEK03.pdf index 0cdb41e..867d512 100644 Binary files a/WEEK03/WEEK03.pdf and b/WEEK03/WEEK03.pdf differ