diff --git a/examples/bare1.rs b/examples/bare1.rs index c043f2134ed67220d2e1a6a607ae89a0bcdb509f..bfa0249eae37121db2b19cc47cf87afe3c6c96c3 100644 --- a/examples/bare1.rs +++ b/examples/bare1.rs @@ -28,7 +28,7 @@ fn main() { // to prevent returning loop { cortex_m::asm::nop(); - // cortex_m::asm::bkpt(); + cortex_m::asm::bkpt(); } } @@ -53,6 +53,14 @@ fn main() { // (if you are NOT under eclipse, then give the command in gdb console // (gdb) disassemble // ** your answer here ** +// 0x08000450 <+80>: ldr r0, [sp, #4] +// 0x08000452 <+82>: bl 0x8002326 <cortex_m::peripheral::SCB::enable_fpu> +// 0x08000456 <+86>: b.n 0x8000458 <cortex_m_rt::reset_handler+88> +// 0x08000458 <+88>: bl 0x8001716 <cortex_m_rt::reset_handler::main> +// 0x0800045c <+92>: b.n 0x800045e <cortex_m_rt::reset_handler+94> +// 0x0800045e <+94>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> +// 0x08000460 <+96>: wfi +// 0x08000462 <+98>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> // // commit your answers (bare1_2) // @@ -61,13 +69,32 @@ fn main() { // what is shown in the Dissasmbly view, what instruction is executing // ** your answer here ** // -// commit your answers (bare1_3) +// 0x08000450 <+80>: ldr r0, [sp, #4] +// 0x08000452 <+82>: bl 0x800232a <cortex_m::peripheral::SCB::enable_fpu> +// 0x08000456 <+86>: b.n 0x8000458 <cortex_m_rt::reset_handler+88> +// 0x08000458 <+88>: bl 0x800171a <cortex_m_rt::reset_handler::main> +// 0x0800045c <+92>: b.n 0x800045e <cortex_m_rt::reset_handler+94> +// 0x0800045e <+94>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> +// 0x08000460 <+96>: wfi +// 0x08000462 <+98>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> +// +// +//commit your answers (bare1_3) // // 4. now remeve the comment line 31 // what is shown in the Dissasmbly view, what instruction is executing // ** your answer here ** // -// commit your answers (bare1_4) +// 0x08000450 <+80>: ldr r0, [sp, #4] +// 0x08000452 <+82>: bl 0x800232a <cortex_m::peripheral::SCB::set_fpu_access_mode+138> +// 0x08000456 <+86>: b.n 0x8000458 <cortex_m_rt::reset_handler+88> +// 0x08000458 <+88>: bl 0x800171a <rust_begin_unwind+112> +// 0x0800045c <+92>: b.n 0x800045e <cortex_m_rt::reset_handler+94> +// 0x0800045e <+94>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> +// 0x08000460 <+96>: wfi +// 0x08000462 <+98>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> +// +//commit your answers (bare1_4) // // 5. release mode (optimized builds) // rebuild bare1 in release (optimized mode) @@ -82,6 +109,24 @@ fn main() { // c // (to continue executing) // ** your answer here ** +// 0x08000450 <+80>: ldr r0, [sp, #4] +// 0x08000452 <+82>: bl 0x800232a <.Lref.Y+86> +// 0x08000456 <+86>: b.n 0x8000458 <cortex_m_rt::reset_handler+88> +// 0x08000458 <+88>: bl 0x800171a <<char as core::fmt::Debug>::fmt+298> +// 0x0800045c <+92>: b.n 0x800045e <cortex_m_rt::reset_handler+94> +// 0x0800045e <+94>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> +// 0x08000460 <+96>: wfi +// 0x08000462 <+98>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> +// 0x08000464 <+100>: push {r4, r6, r7, lr} +// 0x08000466 <+102>: add r7, sp, #8 +// 0x08000468 <+104>: sub sp, #48 ; 0x30 +// 0x0800046a <+106>: mov r3, r2 +// 0x0800046c <+108>: mov r12, r1 +// 0x0800046e <+110>: mov lr, r0 +// 0x08000470 <+112>: str r0, [sp, #28] +// 0x08000472 <+114>: str r1, [sp, #32] +// 0x08000474 <+116>: str r2, [sp, #36] ; 0x24 +// // // commit your answers (bare1_5) diff --git a/gdb.txt b/gdb.txt new file mode 100644 index 0000000000000000000000000000000000000000..141a94e81940dd111d4530cc3fba746762ba8a71 --- /dev/null +++ b/gdb.txt @@ -0,0 +1,183 @@ +Undefined command: "disassambli". Try "help". +Undefined command: "dissasmbly". Try "help". +Dump of assembler code for function cortex_m_semihosting::hio::write_all: + 0x080013f4 <+0>: push {r7, lr} + 0x080013f6 <+2>: mov r7, sp + 0x080013f8 <+4>: sub sp, #112 ; 0x70 + 0x080013fa <+6>: mov r3, r2 + 0x080013fc <+8>: mov r12, r1 + 0x080013fe <+10>: mov lr, r0 + 0x08001400 <+12>: str r0, [sp, #68] ; 0x44 + 0x08001402 <+14>: str r1, [sp, #72] ; 0x48 + 0x08001404 <+16>: str r2, [sp, #76] ; 0x4c + 0x08001406 <+18>: str r3, [sp, #64] ; 0x40 + 0x08001408 <+20>: str.w r12, [sp, #60] ; 0x3c + 0x0800140c <+24>: str.w lr, [sp, #56] ; 0x38 + 0x08001410 <+28>: b.n 0x8001412 <cortex_m_semihosting::hio::write_all+30> + 0x08001412 <+30>: ldr r0, [sp, #72] ; 0x48 + 0x08001414 <+32>: ldr r1, [sp, #76] ; 0x4c + 0x08001416 <+34>: bl 0x8001200 <core::slice::SliceExt::is_empty> + 0x0800141a <+38>: str r0, [sp, #52] ; 0x34 + 0x0800141c <+40>: b.n 0x8001426 <cortex_m_semihosting::hio::write_all+50> + 0x0800141e <+42>: movs r0, #0 + 0x08001420 <+44>: strb.w r0, [r7, #-29] +Quit +Detaching from program: /home/grammers/rtfm-app/target/thumbv7em-none-eabihf/debug/examples/bare1, Remote target +Ending remote debugging. +Undefined command: "dissasemble". Try "help". +Dump of assembler code for function cortex_m_rt::reset_handler: +=> 0x08000400 <+0>: push {r7, lr} + 0x08000402 <+2>: mov r7, sp + 0x08000404 <+4>: sub sp, #8 + 0x08000406 <+6>: movw r0, #0 + 0x0800040a <+10>: movt r0, #8192 ; 0x2000 + 0x0800040e <+14>: movw r1, #0 + 0x08000412 <+18>: movt r1, #8192 ; 0x2000 + 0x08000416 <+22>: bl 0x8001520 <r0::zero_bss> + 0x0800041a <+26>: b.n 0x800041c <cortex_m_rt::reset_handler+28> + 0x0800041c <+28>: movw r0, #0 + 0x08000420 <+32>: movt r0, #8192 ; 0x2000 + 0x08000424 <+36>: movw r1, #0 + 0x08000428 <+40>: movt r1, #8192 ; 0x2000 + 0x0800042c <+44>: movw r2, #19616 ; 0x4ca0 + 0x08000430 <+48>: movt r2, #2048 ; 0x800 + 0x08000434 <+52>: bl 0x800156a <r0::init_data> + 0x08000438 <+56>: b.n 0x800043a <cortex_m_rt::reset_handler+58> + 0x0800043a <+58>: movw r0, #15736 ; 0x3d78 + 0x0800043e <+62>: movt r0, #2048 ; 0x800 + 0x08000442 <+66>: ldr r0, [r0, #0] + 0x08000444 <+68>: bl 0x80015d2 <<bare_metal::Peripheral<T>>::get> + 0x08000448 <+72>: str r0, [sp, #0] + 0x0800044a <+74>: b.n 0x800044c <cortex_m_rt::reset_handler+76> + 0x0800044c <+76>: ldr r0, [sp, #0] + 0x0800044e <+78>: str r0, [sp, #4] + 0x08000450 <+80>: ldr r0, [sp, #4] + 0x08000452 <+82>: bl 0x8002326 <cortex_m::peripheral::SCB::enable_fpu> + 0x08000456 <+86>: b.n 0x8000458 <cortex_m_rt::reset_handler+88> + 0x08000458 <+88>: bl 0x8001716 <cortex_m_rt::reset_handler::main> + 0x0800045c <+92>: b.n 0x800045e <cortex_m_rt::reset_handler+94> + 0x0800045e <+94>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> + 0x08000460 <+96>: wfi + 0x08000462 <+98>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> +End of assembler dump. +Undefined command: "disassemblie". Try "help". +Dump of assembler code for function cortex_m_rt::reset_handler: +=> 0x08000400 <+0>: push {r7, lr} + 0x08000402 <+2>: mov r7, sp + 0x08000404 <+4>: sub sp, #8 + 0x08000406 <+6>: movw r0, #0 + 0x0800040a <+10>: movt r0, #8192 ; 0x2000 + 0x0800040e <+14>: movw r1, #0 + 0x08000412 <+18>: movt r1, #8192 ; 0x2000 + 0x08000416 <+22>: bl 0x8001524 <r0::zero_bss> + 0x0800041a <+26>: b.n 0x800041c <cortex_m_rt::reset_handler+28> + 0x0800041c <+28>: movw r0, #0 + 0x08000420 <+32>: movt r0, #8192 ; 0x2000 + 0x08000424 <+36>: movw r1, #0 + 0x08000428 <+40>: movt r1, #8192 ; 0x2000 + 0x0800042c <+44>: movw r2, #19632 ; 0x4cb0 + 0x08000430 <+48>: movt r2, #2048 ; 0x800 + 0x08000434 <+52>: bl 0x800156e <r0::init_data> + 0x08000438 <+56>: b.n 0x800043a <cortex_m_rt::reset_handler+58> + 0x0800043a <+58>: movw r0, #15752 ; 0x3d88 + 0x0800043e <+62>: movt r0, #2048 ; 0x800 + 0x08000442 <+66>: ldr r0, [r0, #0] + 0x08000444 <+68>: bl 0x80015d6 <<bare_metal::Peripheral<T>>::get> + 0x08000448 <+72>: str r0, [sp, #0] + 0x0800044a <+74>: b.n 0x800044c <cortex_m_rt::reset_handler+76> + 0x0800044c <+76>: ldr r0, [sp, #0] + 0x0800044e <+78>: str r0, [sp, #4] + 0x08000450 <+80>: ldr r0, [sp, #4] + 0x08000452 <+82>: bl 0x800232a <cortex_m::peripheral::SCB::enable_fpu> + 0x08000456 <+86>: b.n 0x8000458 <cortex_m_rt::reset_handler+88> + 0x08000458 <+88>: bl 0x800171a <cortex_m_rt::reset_handler::main> + 0x0800045c <+92>: b.n 0x800045e <cortex_m_rt::reset_handler+94> + 0x0800045e <+94>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> + 0x08000460 <+96>: wfi + 0x08000462 <+98>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> +End of assembler dump. +Detaching from program: /home/grammers/rtfm-app/target/thumbv7em-none-eabihf/debug/examples/bare1, Remote target +Ending remote debugging. +Dump of assembler code for function cortex_m_rt::reset_handler: +=> 0x08000400 <+0>: push {r7, lr} + 0x08000402 <+2>: mov r7, sp + 0x08000404 <+4>: sub sp, #8 + 0x08000406 <+6>: movw r0, #0 + 0x0800040a <+10>: movt r0, #8192 ; 0x2000 + 0x0800040e <+14>: movw r1, #0 + 0x08000412 <+18>: movt r1, #8192 ; 0x2000 + 0x08000416 <+22>: bl 0x8001524 <cortex_m_semihosting::hio::write_all+300> + 0x0800041a <+26>: b.n 0x800041c <cortex_m_rt::reset_handler+28> + 0x0800041c <+28>: movw r0, #0 + 0x08000420 <+32>: movt r0, #8192 ; 0x2000 + 0x08000424 <+36>: movw r1, #0 + 0x08000428 <+40>: movt r1, #8192 ; 0x2000 + 0x0800042c <+44>: movw r2, #19632 ; 0x4cb0 + 0x08000430 <+48>: movt r2, #2048 ; 0x800 + 0x08000434 <+52>: bl 0x800156e <r0::zero_bss+70> + 0x08000438 <+56>: b.n 0x800043a <cortex_m_rt::reset_handler+58> + 0x0800043a <+58>: movw r0, #15752 ; 0x3d88 + 0x0800043e <+62>: movt r0, #2048 ; 0x800 + 0x08000442 <+66>: ldr r0, [r0, #0] + 0x08000444 <+68>: bl 0x80015d6 <r0::init_data+100> + 0x08000448 <+72>: str r0, [sp, #0] + 0x0800044a <+74>: b.n 0x800044c <cortex_m_rt::reset_handler+76> + 0x0800044c <+76>: ldr r0, [sp, #0] + 0x0800044e <+78>: str r0, [sp, #4] + 0x08000450 <+80>: ldr r0, [sp, #4] + 0x08000452 <+82>: bl 0x800232a <cortex_m::peripheral::SCB::set_fpu_access_mode+138> + 0x08000456 <+86>: b.n 0x8000458 <cortex_m_rt::reset_handler+88> + 0x08000458 <+88>: bl 0x800171a <rust_begin_unwind+112> + 0x0800045c <+92>: b.n 0x800045e <cortex_m_rt::reset_handler+94> + 0x0800045e <+94>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> + 0x08000460 <+96>: wfi + 0x08000462 <+98>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> +End of assembler dump. +Detaching from program: /home/grammers/rtfm-app/target/thumbv7em-none-eabihf/debug/examples/bare1, Remote target +Ending remote debugging. +Dump of assembler code for function cortex_m_rt::reset_handler: +=> 0x08000400 <+0>: push {r7, lr} + 0x08000402 <+2>: mov r7, sp + 0x08000404 <+4>: sub sp, #8 + 0x08000406 <+6>: movw r0, #0 + 0x0800040a <+10>: movt r0, #8192 ; 0x2000 + 0x0800040e <+14>: movw r1, #0 + 0x08000412 <+18>: movt r1, #8192 ; 0x2000 + 0x08000416 <+22>: bl 0x8001524 <core::fmt::Formatter::pad+758> + 0x0800041a <+26>: b.n 0x800041c <cortex_m_rt::reset_handler+28> + 0x0800041c <+28>: movw r0, #0 + 0x08000420 <+32>: movt r0, #8192 ; 0x2000 + 0x08000424 <+36>: movw r1, #0 + 0x08000428 <+40>: movt r1, #8192 ; 0x2000 + 0x0800042c <+44>: movw r2, #19632 ; 0x4cb0 + 0x08000430 <+48>: movt r2, #2048 ; 0x800 + 0x08000434 <+52>: bl 0x800156e <core::fmt::Formatter::pad+832> + 0x08000438 <+56>: b.n 0x800043a <cortex_m_rt::reset_handler+58> + 0x0800043a <+58>: movw r0, #15752 ; 0x3d88 + 0x0800043e <+62>: movt r0, #2048 ; 0x800 + 0x08000442 <+66>: ldr r0, [r0, #0] + 0x08000444 <+68>: bl 0x80015d6 <core::fmt::Formatter::pad+936> + 0x08000448 <+72>: str r0, [sp, #0] + 0x0800044a <+74>: b.n 0x800044c <cortex_m_rt::reset_handler+76> + 0x0800044c <+76>: ldr r0, [sp, #0] + 0x0800044e <+78>: str r0, [sp, #4] + 0x08000450 <+80>: ldr r0, [sp, #4] + 0x08000452 <+82>: bl 0x800232a <.Lref.Y+86> + 0x08000456 <+86>: b.n 0x8000458 <cortex_m_rt::reset_handler+88> + 0x08000458 <+88>: bl 0x800171a <<char as core::fmt::Debug>::fmt+298> + 0x0800045c <+92>: b.n 0x800045e <cortex_m_rt::reset_handler+94> + 0x0800045e <+94>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> + 0x08000460 <+96>: wfi + 0x08000462 <+98>: b.n 0x8000460 <cortex_m_rt::reset_handler+96> + 0x08000464 <+100>: push {r4, r6, r7, lr} + 0x08000466 <+102>: add r7, sp, #8 + 0x08000468 <+104>: sub sp, #48 ; 0x30 + 0x0800046a <+106>: mov r3, r2 + 0x0800046c <+108>: mov r12, r1 + 0x0800046e <+110>: mov lr, r0 + 0x08000470 <+112>: str r0, [sp, #28] + 0x08000472 <+114>: str r1, [sp, #32] + 0x08000474 <+116>: str r2, [sp, #36] ; 0x24 +End of assembler dump. +Detaching from program: /home/grammers/rtfm-app/target/thumbv7em-none-eabihf/release/examples/bare1, Remote target +Ending remote debugging.