|
本帖最后由 freebsder 于 2017-1-18 00:24 编辑
比较有趣的话题。
搞这种事的人现在搞得人不多,因为资源越来越丰富。。。
楼主这个,1是怎么看thumb指令,2是直接在int vector里面写reset handler,这点其实和arm7时代的fast irq一个的意思,3是只处理IO的模式和输出高低,其实反到汇编之后是一目了然的。
两条命令:
arm-none-eabi-objcopy -I ihex -O binary stm32l011-nucleo-blink.hex stm32l011-nucleo-blink.bin
arm-none-eabi-objdump -b binary -m arm -M force-thumb -EL -D stm32l011-nucleo-blink.bin
-
- 0: 0009 movs r1, r1
- 2: 0000 movs r0, r0
- 4: 0009 movs r1, r1 ;reset地址0x8,最低位置1表示thumb,所以数据是0x9
- 6: 0000 movs r0, r0
- 8: 4806 ldr r0, [pc, #24] ; (0x24) 0x4002102c
- a: 4907 ldr r1, [pc, #28] ; (0x28) 0x2
- c: 6001 str r1, [r0, #0]
- e: 4807 ldr r0, [pc, #28] ; (0x2c) 0x50000400
- 10: 4907 ldr r1, [pc, #28] ; (0x30) 7fff (后面都可默认flash擦写为FF)
- 12: 6001 str r1, [r0, #0]
- 14: 6942 ldr r2, [r0, #20]
- 16: 404a eors r2, r1
- 18: 6142 str r2, [r0, #20]
- 1a: 4b06 ldr r3, [pc, #24] ; (0x34)
- 1c: 1c5b adds r3, r3, #1
- 1e: 4293 cmp r3, r2
- 20: d1fc bne.n 0x1c ;和 0x1c 做计数循环
- 22: e7f7 b.n 0x14 ;和 0x14 做外部循环的IO异或闪灯
复制代码$hexdump stm32l011-nucleo-blink.bin
- 0000000 09 00 00 00 09 00 00 00 06 48 07 49 01 60 07 48
- 0000010 07 49 01 60 42 69 4a 40 42 61 06 4b 5b 1c 93 42
- 0000020 fc d1 f7 e7 2c 10 02 40 02 00 00 00 00 04 00 50
- 0000030 7f ff
- 0000032
复制代码
|
赞赏
-
1
查看全部赞赏
-
|