[STM32F1] 也写个JLINK OB的bootloader玩

[复制链接]
2722|7
 楼主| yjmwxwx 发表于 2017-11-22 19:23 | 显示全部楼层 |阅读模式
本帖最后由 yjmwxwx 于 2017-11-22 19:25 编辑


原版是minux十年前写的,模仿他的也写个玩。不知道能成功更新固件不?



截图_2017-11-20_01-43-09.png

jlink ob.zip (92.42 KB, 下载次数: 53)
  1.   .thumb                 
  2.          .syntax unified
  3. .section .data
  4.         .equ STACKINIT,         0x20005000
  5. yjmwxwx: .ascii "jlink ob boot 2017-11-19 yjmwxwx"
  6. .section .text
  7. _xiangliangbiao:
  8.         .word STACKINIT
  9.         .word _start + 1
  10.         .word _nmi_handler + 1
  11.         .word _hard_fault  + 1
  12.         .word _memory_fault + 1
  13.         .word _bus_fault + 1
  14.         .word _usage_fault + 1

  15. _start:
  16.         cpsid i
  17.         sub sp, sp, # 0x5000
  18.         ldr r0, = yjmwxwx
  19.         str r0, [sp]
  20.         add sp, sp, # 0x5000
  21.         
  22.         ldr r0, = 0xffffffff
  23.         ldr r1, = 0x8009c00
  24.         ldr r1, [r1]
  25.         cmp r1, r0
  26.         bne _crcjisuan
  27. _daogujian:        
  28.         ldr r0, = 0xe000ed08
  29.         ldr r1, = 0x8004000
  30.         str r1, [r0]
  31.         add r1, r1, # 4
  32.         ldr r1, [r1]
  33.         cpsie i
  34.         bx r1
  35. _crcjisuan:
  36.         ldr r0, = 0x8009c00
  37.         ldr r1, = 0x5bfe
  38.         mov r6, # 0
  39.         movw r4, # 0x8408
  40.         
  41. _crcxunhuan:
  42.         ldrb r5, [r0], # 1
  43.         eor r6, r6, r5
  44.         mov r2, # 8
  45. _crcxunhuan1:
  46.         mov r5, r6
  47.         lsrs r6, r6, # 1
  48.         tst r5, # 1
  49.         it ne
  50.         eorne r6, r6, r4
  51.         
  52.         subs r2, r2, # 1
  53.         bne _crcxunhuan1
  54.         
  55.         subs r1, r1, # 1
  56.         bne _crcxunhuan
  57.         ldr r0, = 0x800f7fe
  58.         ldr r1, [r0]
  59.         cmp r6, r1
  60.         bne _daogujian
  61.                                         [url=home.php?mod=space&uid=72445]@[/url] flsh解锁
  62.         ldr r0, = 0x40022000
  63.         ldr r1, = 0x45670123
  64.         str r1, [r0, # 0x04]
  65.         ldr r1, = 0xcdef89ab
  66.         str r1, [r0, # 0x04]
  67.                                         @擦除23页
  68.         mov r5, # 23
  69.         ldr r4, = 0x8004000
  70.         movw r8, # 0x400
  71. _flashmang:
  72.         ldr r2, [r0, # 0x0c]
  73.         lsls r2, r2, # 31
  74.         bmi _flashmang
  75.         mov r1, # 2
  76.         str r1, [r0, # 0x10]
  77.         str r4, [r0, # 0x14]
  78.         mov r1, # 0x42
  79.         str r1, [r0, # 0x10]
  80.         add r4, r4, r8
  81.         subs r5, # 1
  82.         bne _flashmang
  83.                                                 @写FLASH
  84.         ldr r8, = 0x8004000
  85.         ldr r4, = 0x8009c00
  86.         mov r5, # 0
  87.         movw r6, # 0x1700
  88. _flashmang1:
  89.         ldr r2, [r0, # 0x0c]
  90.         lsls r2, r2, # 31
  91.         bmi _flashmang1
  92.         mov r1, # 1
  93.         str r1, [r0, # 0x10]
  94.         ldrh r3, [r4, r5]
  95.         strh r3, [r8, r5]
  96.         add r5, r5, # 2
  97. _flashmang2:
  98.         ldr r2, [r0, # 0x0c]
  99.         lsls r2, r2, # 31
  100.         bmi _flashmang2
  101.         ldrh r3, [r4, r5]
  102.         strh r3, [r8, r5]
  103.         add r5, r5, # 2
  104.         subs r6, r6, # 1
  105.         bne _flashmang1
  106. _flashmang3:
  107.         ldr r2, [r0, # 0x0c]
  108.         lsls r2, r2, # 31
  109.         bmi _flashmang3
  110.         mov r1, # 2
  111.         str r1, [r0, # 0x10]
  112.         ldr r3, = 0x8009c00           [url=home.php?mod=space&uid=72445]@[/url] 擦去更新的一页
  113.         str r3, [r0, # 0x14]
  114.         mov r1, # 0x42
  115.         str r1, [r0, # 0x10]
  116. _flashmang4:
  117.         ldr r2, [r0, # 0x0c]
  118.         lsls r2, r2, # 31
  119.         bmi _flashmang4
  120.         mov r1, # 0x80
  121.         str r1, [r0]                          @flsh上锁
  122.         ldr r0, = 0xe000ed0c
  123.         ldr r1, = 0x05fa0004
  124.         str r1, [r0]                          @复位
  125.         
  126. _nmi_handler:
  127.         bx lr
  128. _hard_fault:
  129.         bx lr
  130. _memory_fault:
  131.         bx lr
  132. _bus_fault:
  133.         bx lr
  134. _usage_fault:
  135.          bx lr


mmuuss586 发表于 2017-11-22 20:13 | 显示全部楼层

厉害呀
zgd881009 发表于 2019-5-15 00:16 | 显示全部楼层
如何使用,能弄个j link ob 072的boot出来吗
戈卫东 发表于 2019-5-15 08:14 | 显示全部楼层
膜拜一下。。。。
海中水 发表于 2019-5-15 09:20 | 显示全部楼层
厉害。
海中水 发表于 2019-5-15 09:21 | 显示全部楼层
厉害。
antusheng 发表于 2019-5-15 22:19 | 显示全部楼层
高手啊,真是高
wangjiahao88 发表于 2019-5-16 08:12 | 显示全部楼层
这个 需要对 芯片 或者ARM 内核有深层次的了解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

124

主题

3000

帖子

55

粉丝
快速回复 在线客服 返回列表 返回顶部