soft_tattu.lst 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913
  1. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 1
  2. 1 .cpu cortex-m4
  3. 2 .arch armv7e-m
  4. 3 .fpu fpv4-sp-d16
  5. 4 .eabi_attribute 27, 1
  6. 5 .eabi_attribute 28, 1
  7. 6 .eabi_attribute 20, 1
  8. 7 .eabi_attribute 21, 1
  9. 8 .eabi_attribute 23, 3
  10. 9 .eabi_attribute 24, 1
  11. 10 .eabi_attribute 25, 1
  12. 11 .eabi_attribute 26, 1
  13. 12 .eabi_attribute 30, 6
  14. 13 .eabi_attribute 34, 1
  15. 14 .eabi_attribute 18, 4
  16. 15 .file "soft_tattu.c"
  17. 16 .text
  18. 17 .Ltext0:
  19. 18 .cfi_sections .debug_frame
  20. 19 .global tattu_device1
  21. 20 .section .bss.tattu_device1,"aw",%nobits
  22. 21 .align 2
  23. 24 tattu_device1:
  24. 25 0000 00000000 .space 290
  25. 25 00000000
  26. 25 00000000
  27. 25 00000000
  28. 25 00000000
  29. 26 .global tattu_device2
  30. 27 .section .bss.tattu_device2,"aw",%nobits
  31. 28 .align 2
  32. 31 tattu_device2:
  33. 32 0000 00000000 .space 290
  34. 32 00000000
  35. 32 00000000
  36. 32 00000000
  37. 32 00000000
  38. 33 .section .text.TattuCanRecvHookFunction,"ax",%progbits
  39. 34 .align 1
  40. 35 .global TattuCanRecvHookFunction
  41. 36 .syntax unified
  42. 37 .thumb
  43. 38 .thumb_func
  44. 40 TattuCanRecvHookFunction:
  45. 41 .LFB130:
  46. 42 .file 1 "user_src/soft_tattu.c"
  47. 1:user_src/soft_tattu.c ****
  48. 2:user_src/soft_tattu.c **** #include "soft_tattu.h"
  49. 3:user_src/soft_tattu.c **** #include "string.h"
  50. 4:user_src/soft_tattu.c **** #include "soft_flash.h"
  51. 5:user_src/soft_tattu.c **** #include "soft_okcell.h"
  52. 6:user_src/soft_tattu.c ****
  53. 7:user_src/soft_tattu.c **** #define TATTU_MAXLEN 200
  54. 8:user_src/soft_tattu.c ****
  55. 9:user_src/soft_tattu.c ****
  56. 10:user_src/soft_tattu.c **** //_TATTU_INFO ttu_inf = {0};
  57. 11:user_src/soft_tattu.c ****
  58. 12:user_src/soft_tattu.c **** /*
  59. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 2
  60. 13:user_src/soft_tattu.c **** Field Bits Description
  61. 14:user_src/soft_tattu.c **** Start of transfer 1 See below
  62. 15:user_src/soft_tattu.c **** End of transfer 1 See below
  63. 16:user_src/soft_tattu.c **** Toggle bit 1 See below
  64. 17:user_src/soft_tattu.c **** Transfer ID 5 The transfer ID value
  65. 18:user_src/soft_tattu.c ****
  66. 19:user_src/soft_tattu.c **** 注意:数据为小端
  67. 20:user_src/soft_tattu.c **** */
  68. 21:user_src/soft_tattu.c ****
  69. 22:user_src/soft_tattu.c ****
  70. 23:user_src/soft_tattu.c **** /*
  71. 24:user_src/soft_tattu.c **** Field Bits Allowed values Description
  72. 25:user_src/soft_tattu.c **** Priority 5 0-31 默认填最高优先级:0
  73. 26:user_src/soft_tattu.c **** Message type ID 16 0x1092 查询模式
  74. 27:user_src/soft_tattu.c **** Service or message 1 0 0x1092----此位为 0;
  75. 28:user_src/soft_tattu.c **** Source node ID 7 1…127 0 是保留的,代表一个未知的节点;自身的节点 Id;
  76. 29:user_src/soft_tattu.c **** Destination Node Id 7 1…127 0 是保留的,代表一个未知的节点;对方的节点 Id。
  77. 30:user_src/soft_tattu.c **** Request not response 1 0 or 1 1 表示该帧是 Request 请求帧;0 表示该帧是 Response 应答帧
  78. 31:user_src/soft_tattu.c ****
  79. 32:user_src/soft_tattu.c **** 注意:数据为小端
  80. 33:user_src/soft_tattu.c **** */
  81. 34:user_src/soft_tattu.c **** #pragma pack(1)
  82. 35:user_src/soft_tattu.c **** typedef struct
  83. 36:user_src/soft_tattu.c **** {
  84. 37:user_src/soft_tattu.c **** unsigned char canid_prio :5;
  85. 38:user_src/soft_tattu.c **** unsigned short canid_msgid :16;
  86. 39:user_src/soft_tattu.c **** unsigned char canid_som :1;
  87. 40:user_src/soft_tattu.c **** unsigned char canid_srcid :7;
  88. 41:user_src/soft_tattu.c **** /*unsigned char canid_desid:7;
  89. 42:user_src/soft_tattu.c **** unsigned char canid_rnr:1;*/
  90. 43:user_src/soft_tattu.c **** }_TATTU_CANID;
  91. 44:user_src/soft_tattu.c **** #pragma pack()
  92. 45:user_src/soft_tattu.c ****
  93. 46:user_src/soft_tattu.c **** _TATTU_DEVICE tattu_device1 = {.Tattu_Link.connect_status = COMP_NOEXIST},
  94. 47:user_src/soft_tattu.c **** tattu_device2 = {.Tattu_Link.connect_status = COMP_NOEXIST};
  95. 48:user_src/soft_tattu.c ****
  96. 49:user_src/soft_tattu.c **** void TattuCanRecvHookFunction(uint32_t ttuCanID, uint8_t data[], uint8_t len)
  97. 50:user_src/soft_tattu.c **** {
  98. 43 .loc 1 50 1
  99. 44 .cfi_startproc
  100. 45 @ args = 0, pretend = 0, frame = 24
  101. 46 @ frame_needed = 1, uses_anonymous_args = 0
  102. 47 0000 80B5 push {r7, lr}
  103. 48 .LCFI0:
  104. 49 .cfi_def_cfa_offset 8
  105. 50 .cfi_offset 7, -8
  106. 51 .cfi_offset 14, -4
  107. 52 0002 86B0 sub sp, sp, #24
  108. 53 .LCFI1:
  109. 54 .cfi_def_cfa_offset 32
  110. 55 0004 00AF add r7, sp, #0
  111. 56 .LCFI2:
  112. 57 .cfi_def_cfa_register 7
  113. 58 0006 F860 str r0, [r7, #12]
  114. 59 0008 B960 str r1, [r7, #8]
  115. 60 000a 1346 mov r3, r2
  116. 61 000c FB71 strb r3, [r7, #7]
  117. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 3
  118. 51:user_src/soft_tattu.c **** //获取数据中的最后一位
  119. 52:user_src/soft_tattu.c **** _TATTU_DEVICE *taptr = NULL;
  120. 62 .loc 1 52 20
  121. 63 000e 0023 movs r3, #0
  122. 64 0010 7B61 str r3, [r7, #20]
  123. 53:user_src/soft_tattu.c **** uint8_t can_msgid = 0;
  124. 65 .loc 1 53 13
  125. 66 0012 0023 movs r3, #0
  126. 67 0014 FB74 strb r3, [r7, #19]
  127. 54:user_src/soft_tattu.c **** can_msgid = ttuCanID & 0x7f;
  128. 68 .loc 1 54 26
  129. 69 0016 FB68 ldr r3, [r7, #12]
  130. 70 0018 DBB2 uxtb r3, r3
  131. 71 .loc 1 54 15
  132. 72 001a 03F07F03 and r3, r3, #127
  133. 73 001e FB74 strb r3, [r7, #19]
  134. 55:user_src/soft_tattu.c ****
  135. 56:user_src/soft_tattu.c **** if(can_msgid == 0x16)
  136. 74 .loc 1 56 7
  137. 75 0020 FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
  138. 76 0022 162B cmp r3, #22
  139. 77 0024 02D1 bne .L2
  140. 57:user_src/soft_tattu.c **** {
  141. 58:user_src/soft_tattu.c **** taptr = &tattu_device1;
  142. 78 .loc 1 58 15
  143. 79 0026 984B ldr r3, .L14
  144. 80 0028 7B61 str r3, [r7, #20]
  145. 81 002a 01E0 b .L3
  146. 82 .L2:
  147. 59:user_src/soft_tattu.c **** }
  148. 60:user_src/soft_tattu.c **** else
  149. 61:user_src/soft_tattu.c **** {
  150. 62:user_src/soft_tattu.c **** taptr = &tattu_device2;
  151. 83 .loc 1 62 15
  152. 84 002c 974B ldr r3, .L14+4
  153. 85 002e 7B61 str r3, [r7, #20]
  154. 86 .L3:
  155. 63:user_src/soft_tattu.c **** }
  156. 64:user_src/soft_tattu.c ****
  157. 65:user_src/soft_tattu.c **** memcpy(&taptr->ttu_tailbyte, &data[len - 1], sizeof(uint8_t));
  158. 87 .loc 1 65 12
  159. 88 0030 7B69 ldr r3, [r7, #20]
  160. 89 0032 DB33 adds r3, r3, #219
  161. 90 .loc 1 65 39
  162. 91 0034 FA79 ldrb r2, [r7, #7] @ zero_extendqisi2
  163. 92 0036 013A subs r2, r2, #1
  164. 93 .loc 1 65 34
  165. 94 0038 B968 ldr r1, [r7, #8]
  166. 95 003a 0A44 add r2, r2, r1
  167. 96 003c 1278 ldrb r2, [r2] @ zero_extendqisi2
  168. 97 .loc 1 65 5
  169. 98 003e 1A70 strb r2, [r3]
  170. 66:user_src/soft_tattu.c ****
  171. 67:user_src/soft_tattu.c **** //找到开头
  172. 68:user_src/soft_tattu.c **** if(taptr->ttu_tailbyte.tail_start == 1){
  173. 99 .loc 1 68 39
  174. 100 0040 7B69 ldr r3, [r7, #20]
  175. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 4
  176. 101 0042 93F8DB30 ldrb r3, [r3, #219] @ zero_extendqisi2
  177. 102 0046 23F07F03 bic r3, r3, #127
  178. 103 004a DBB2 uxtb r3, r3
  179. 104 .loc 1 68 7
  180. 105 004c 002B cmp r3, #0
  181. 106 004e 0AD0 beq .L4
  182. 69:user_src/soft_tattu.c **** taptr->Tattu_recv_index = 0;
  183. 107 .loc 1 69 33
  184. 108 0050 7B69 ldr r3, [r7, #20]
  185. 109 0052 0022 movs r2, #0
  186. 110 0054 83F8D820 strb r2, [r3, #216]
  187. 111 0058 0022 movs r2, #0
  188. 112 005a 83F8D920 strb r2, [r3, #217]
  189. 70:user_src/soft_tattu.c **** taptr->Tattu_get_s = true;
  190. 113 .loc 1 70 28
  191. 114 005e 7B69 ldr r3, [r7, #20]
  192. 115 0060 0122 movs r2, #1
  193. 116 0062 83F8DA20 strb r2, [r3, #218]
  194. 117 .L4:
  195. 71:user_src/soft_tattu.c **** }
  196. 72:user_src/soft_tattu.c ****
  197. 73:user_src/soft_tattu.c **** //溢出检测
  198. 74:user_src/soft_tattu.c **** if(taptr->Tattu_recv_index + len > TATTU_MAXLEN)
  199. 118 .loc 1 74 13
  200. 119 0066 7B69 ldr r3, [r7, #20]
  201. 120 0068 B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  202. 121 006c 1BB2 sxth r3, r3
  203. 122 006e 1A46 mov r2, r3
  204. 123 .loc 1 74 32
  205. 124 0070 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2
  206. 125 0072 1344 add r3, r3, r2
  207. 126 .loc 1 74 7
  208. 127 0074 C82B cmp r3, #200
  209. 128 0076 14DD ble .L5
  210. 75:user_src/soft_tattu.c **** {
  211. 76:user_src/soft_tattu.c **** memset(taptr->Tattu_recv_buf,0,taptr->Tattu_recv_index);
  212. 129 .loc 1 76 21
  213. 130 0078 7B69 ldr r3, [r7, #20]
  214. 131 007a 181D adds r0, r3, #4
  215. 132 .loc 1 76 45
  216. 133 007c 7B69 ldr r3, [r7, #20]
  217. 134 007e B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  218. 135 0082 1BB2 sxth r3, r3
  219. 136 .loc 1 76 9
  220. 137 0084 1A46 mov r2, r3
  221. 138 0086 0021 movs r1, #0
  222. 139 0088 FFF7FEFF bl memset
  223. 77:user_src/soft_tattu.c **** taptr->Tattu_recv_index = 0;
  224. 140 .loc 1 77 33
  225. 141 008c 7B69 ldr r3, [r7, #20]
  226. 142 008e 0022 movs r2, #0
  227. 143 0090 83F8D820 strb r2, [r3, #216]
  228. 144 0094 0022 movs r2, #0
  229. 145 0096 83F8D920 strb r2, [r3, #217]
  230. 78:user_src/soft_tattu.c **** taptr->Tattu_get_s = false;
  231. 146 .loc 1 78 28
  232. 147 009a 7B69 ldr r3, [r7, #20]
  233. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 5
  234. 148 009c 0022 movs r2, #0
  235. 149 009e 83F8DA20 strb r2, [r3, #218]
  236. 150 .L5:
  237. 79:user_src/soft_tattu.c **** }
  238. 80:user_src/soft_tattu.c ****
  239. 81:user_src/soft_tattu.c **** //获取到正确的开始位则接收数据
  240. 82:user_src/soft_tattu.c **** if(taptr->Tattu_get_s == true){
  241. 151 .loc 1 82 13
  242. 152 00a2 7B69 ldr r3, [r7, #20]
  243. 153 00a4 93F8DA30 ldrb r3, [r3, #218] @ zero_extendqisi2
  244. 154 .loc 1 82 7
  245. 155 00a8 002B cmp r3, #0
  246. 156 00aa 1CD0 beq .L6
  247. 83:user_src/soft_tattu.c **** //复制有效数据,最后一个字节不是有效数据
  248. 84:user_src/soft_tattu.c **** memcpy(&taptr->Tattu_recv_buf[taptr->Tattu_recv_index], data, len-1);
  249. 157 .loc 1 84 44
  250. 158 00ac 7B69 ldr r3, [r7, #20]
  251. 159 00ae B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  252. 160 00b2 1BB2 sxth r3, r3
  253. 161 00b4 1A46 mov r2, r3
  254. 162 .loc 1 84 16
  255. 163 00b6 7B69 ldr r3, [r7, #20]
  256. 164 00b8 1344 add r3, r3, r2
  257. 165 00ba 181D adds r0, r3, #4
  258. 166 .loc 1 84 74
  259. 167 00bc FB79 ldrb r3, [r7, #7] @ zero_extendqisi2
  260. 168 00be 013B subs r3, r3, #1
  261. 169 .loc 1 84 9
  262. 170 00c0 1A46 mov r2, r3
  263. 171 00c2 B968 ldr r1, [r7, #8]
  264. 172 00c4 FFF7FEFF bl memcpy
  265. 85:user_src/soft_tattu.c **** taptr->Tattu_recv_index += (len-1);
  266. 173 .loc 1 85 33
  267. 174 00c8 7B69 ldr r3, [r7, #20]
  268. 175 00ca B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  269. 176 00ce 1BB2 sxth r3, r3
  270. 177 00d0 9AB2 uxth r2, r3
  271. 178 00d2 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2
  272. 179 00d4 9BB2 uxth r3, r3
  273. 180 00d6 1344 add r3, r3, r2
  274. 181 00d8 9BB2 uxth r3, r3
  275. 182 00da 013B subs r3, r3, #1
  276. 183 00dc 9BB2 uxth r3, r3
  277. 184 00de 1AB2 sxth r2, r3
  278. 185 00e0 7B69 ldr r3, [r7, #20]
  279. 186 00e2 A3F8D820 strh r2, [r3, #216] @ unaligned
  280. 187 .L6:
  281. 86:user_src/soft_tattu.c **** }
  282. 87:user_src/soft_tattu.c ****
  283. 88:user_src/soft_tattu.c ****
  284. 89:user_src/soft_tattu.c **** //找到结尾,开始解析
  285. 90:user_src/soft_tattu.c **** if(taptr->Tattu_get_s == true && taptr->ttu_tailbyte.tail_end == 1)
  286. 188 .loc 1 90 13
  287. 189 00e6 7B69 ldr r3, [r7, #20]
  288. 190 00e8 93F8DA30 ldrb r3, [r3, #218] @ zero_extendqisi2
  289. 191 .loc 1 90 7
  290. 192 00ec 002B cmp r3, #0
  291. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 6
  292. 193 00ee 00F0C680 beq .L13
  293. 194 .loc 1 90 67 discriminator 1
  294. 195 00f2 7B69 ldr r3, [r7, #20]
  295. 196 00f4 93F8DB30 ldrb r3, [r3, #219] @ zero_extendqisi2
  296. 197 00f8 03F04003 and r3, r3, #64
  297. 198 00fc DBB2 uxtb r3, r3
  298. 199 .loc 1 90 35 discriminator 1
  299. 200 00fe 002B cmp r3, #0
  300. 201 0100 00F0BD80 beq .L13
  301. 91:user_src/soft_tattu.c **** {
  302. 92:user_src/soft_tattu.c **** taptr->Tattu_get_s = false;
  303. 202 .loc 1 92 28
  304. 203 0104 7B69 ldr r3, [r7, #20]
  305. 204 0106 0022 movs r2, #0
  306. 205 0108 83F8DA20 strb r2, [r3, #218]
  307. 93:user_src/soft_tattu.c ****
  308. 94:user_src/soft_tattu.c **** taptr->Tattu_Link.connect_status = COMP_NORMAL;
  309. 206 .loc 1 94 42
  310. 207 010c 7B69 ldr r3, [r7, #20]
  311. 208 010e 0122 movs r2, #1
  312. 209 0110 83F8D420 strb r2, [r3, #212]
  313. 95:user_src/soft_tattu.c **** //更新电池数据到来时间
  314. 96:user_src/soft_tattu.c **** taptr->Tattu_Link.recv_time = HAL_GetTick();
  315. 210 .loc 1 96 39
  316. 211 0114 FFF7FEFF bl HAL_GetTick
  317. 212 0118 0246 mov r2, r0
  318. 213 .loc 1 96 37
  319. 214 011a 7B69 ldr r3, [r7, #20]
  320. 215 011c C3F8CC20 str r2, [r3, #204] @ unaligned
  321. 97:user_src/soft_tattu.c ****
  322. 98:user_src/soft_tattu.c **** //如果是单帧完整数据
  323. 99:user_src/soft_tattu.c **** if(taptr->ttu_tailbyte.tail_start == 1 || taptr->Tattu_recv_index <= 7)
  324. 216 .loc 1 99 43
  325. 217 0120 7B69 ldr r3, [r7, #20]
  326. 218 0122 93F8DB30 ldrb r3, [r3, #219] @ zero_extendqisi2
  327. 219 0126 23F07F03 bic r3, r3, #127
  328. 220 012a DBB2 uxtb r3, r3
  329. 221 .loc 1 99 11
  330. 222 012c 002B cmp r3, #0
  331. 223 012e 40F09580 bne .L8
  332. 224 .loc 1 99 56 discriminator 1
  333. 225 0132 7B69 ldr r3, [r7, #20]
  334. 226 0134 B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  335. 227 0138 1BB2 sxth r3, r3
  336. 228 .loc 1 99 48 discriminator 1
  337. 229 013a 072B cmp r3, #7
  338. 230 013c 40F38E80 ble .L8
  339. 100:user_src/soft_tattu.c **** {
  340. 101:user_src/soft_tattu.c **** //单帧数据不需要校验
  341. 102:user_src/soft_tattu.c **** }
  342. 103:user_src/soft_tattu.c **** //多帧拼包
  343. 104:user_src/soft_tattu.c **** else
  344. 105:user_src/soft_tattu.c **** {
  345. 106:user_src/soft_tattu.c **** //CRC校验,验证通过,暂不开启
  346. 107:user_src/soft_tattu.c **** CCITT_CRC16Init(&taptr->Tattu_recv_buf[2],taptr->Tattu_recv_index-2);
  347. 231 .loc 1 107 29
  348. 232 0140 7B69 ldr r3, [r7, #20]
  349. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 7
  350. 233 0142 9A1D adds r2, r3, #6
  351. 234 .loc 1 107 60
  352. 235 0144 7B69 ldr r3, [r7, #20]
  353. 236 0146 B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  354. 237 014a 1BB2 sxth r3, r3
  355. 238 014c 9BB2 uxth r3, r3
  356. 239 .loc 1 107 13
  357. 240 014e 023B subs r3, r3, #2
  358. 241 0150 9BB2 uxth r3, r3
  359. 242 0152 1946 mov r1, r3
  360. 243 0154 1046 mov r0, r2
  361. 244 0156 FFF7FEFF bl CCITT_CRC16Init
  362. 108:user_src/soft_tattu.c **** if(CCITT_CRC16 == (taptr->Tattu_recv_buf[0] + (taptr->Tattu_recv_buf[1]<<8)))
  363. 245 .loc 1 108 28
  364. 246 015a 4D4B ldr r3, .L14+8
  365. 247 015c 1B88 ldrh r3, [r3]
  366. 248 015e 1A46 mov r2, r3
  367. 249 .loc 1 108 53
  368. 250 0160 7B69 ldr r3, [r7, #20]
  369. 251 0162 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2
  370. 252 0164 1946 mov r1, r3
  371. 253 .loc 1 108 81
  372. 254 0166 7B69 ldr r3, [r7, #20]
  373. 255 0168 5B79 ldrb r3, [r3, #5] @ zero_extendqisi2
  374. 256 .loc 1 108 84
  375. 257 016a 1B02 lsls r3, r3, #8
  376. 258 .loc 1 108 57
  377. 259 016c 0B44 add r3, r3, r1
  378. 260 .loc 1 108 15
  379. 261 016e 9A42 cmp r2, r3
  380. 262 0170 74D1 bne .L8
  381. 109:user_src/soft_tattu.c **** {
  382. 110:user_src/soft_tattu.c **** //避免电池单方面增加协议造成溢出,格式电池12s跟14s兼容有问题,飞控自己做处理
  383. 111:user_src/soft_tattu.c **** //后两个字节是自己添加的用来识别电池串数
  384. 112:user_src/soft_tattu.c **** if(taptr->Tattu_recv_index-2 <= (sizeof(_TATTU_INFO)-2))
  385. 263 .loc 1 112 25
  386. 264 0172 7B69 ldr r3, [r7, #20]
  387. 265 0174 B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  388. 266 0178 1BB2 sxth r3, r3
  389. 267 .loc 1 112 43
  390. 268 017a 023B subs r3, r3, #2
  391. 269 .loc 1 112 19
  392. 270 017c 442B cmp r3, #68
  393. 271 017e 66D8 bhi .L9
  394. 113:user_src/soft_tattu.c **** {
  395. 114:user_src/soft_tattu.c **** //stm32为小段模式,TATTU发送过来的数据为小端模式,可直接使用memcpy
  396. 115:user_src/soft_tattu.c **** //12S
  397. 116:user_src/soft_tattu.c **** if(taptr->Tattu_recv_index-2 == (sizeof(_TATTU_INFO)-2-4-16))
  398. 272 .loc 1 116 29
  399. 273 0180 7B69 ldr r3, [r7, #20]
  400. 274 0182 B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  401. 275 0186 1BB2 sxth r3, r3
  402. 276 .loc 1 116 23
  403. 277 0188 322B cmp r3, #50
  404. 278 018a 1BD1 bne .L10
  405. 117:user_src/soft_tattu.c **** {
  406. 118:user_src/soft_tattu.c **** taptr->ttu_inf.tattu_cnum = 12;
  407. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 8
  408. 279 .loc 1 118 51
  409. 280 018c 7B69 ldr r3, [r7, #20]
  410. 281 018e 0022 movs r2, #0
  411. 282 0190 42F00C02 orr r2, r2, #12
  412. 283 0194 83F82021 strb r2, [r3, #288]
  413. 284 0198 0022 movs r2, #0
  414. 285 019a 83F82121 strb r2, [r3, #289]
  415. 119:user_src/soft_tattu.c **** //前12s信息
  416. 120:user_src/soft_tattu.c **** memcpy(&taptr->ttu_inf,&taptr->Tattu_recv_buf[2],40);
  417. 286 .loc 1 120 32
  418. 287 019e 7B69 ldr r3, [r7, #20]
  419. 288 01a0 03F1DC00 add r0, r3, #220
  420. 289 .loc 1 120 48
  421. 290 01a4 7B69 ldr r3, [r7, #20]
  422. 291 01a6 0633 adds r3, r3, #6
  423. 292 .loc 1 120 25
  424. 293 01a8 2822 movs r2, #40
  425. 294 01aa 1946 mov r1, r3
  426. 295 01ac FFF7FEFF bl memcpy
  427. 121:user_src/soft_tattu.c **** //后边信息
  428. 122:user_src/soft_tattu.c **** memcpy(&taptr->ttu_inf.tattu_descapa,&taptr->Tattu_recv_buf[40+2],8);
  429. 296 .loc 1 122 32
  430. 297 01b0 7B69 ldr r3, [r7, #20]
  431. 298 01b2 03F58470 add r0, r3, #264
  432. 299 .loc 1 122 62
  433. 300 01b6 7B69 ldr r3, [r7, #20]
  434. 301 01b8 2E33 adds r3, r3, #46
  435. 302 .loc 1 122 25
  436. 303 01ba 0822 movs r2, #8
  437. 304 01bc 1946 mov r1, r3
  438. 305 01be FFF7FEFF bl memcpy
  439. 306 01c2 4BE0 b .L8
  440. 307 .L10:
  441. 123:user_src/soft_tattu.c ****
  442. 124:user_src/soft_tattu.c **** }
  443. 125:user_src/soft_tattu.c **** //添加序列号后的12s
  444. 126:user_src/soft_tattu.c **** else if(taptr->Tattu_recv_index-2 == (sizeof(_TATTU_INFO)-2-4))
  445. 308 .loc 1 126 34
  446. 309 01c4 7B69 ldr r3, [r7, #20]
  447. 310 01c6 B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  448. 311 01ca 1BB2 sxth r3, r3
  449. 312 .loc 1 126 28
  450. 313 01cc 422B cmp r3, #66
  451. 314 01ce 1BD1 bne .L11
  452. 127:user_src/soft_tattu.c **** {
  453. 128:user_src/soft_tattu.c **** taptr->ttu_inf.tattu_cnum = 12;
  454. 315 .loc 1 128 51
  455. 316 01d0 7B69 ldr r3, [r7, #20]
  456. 317 01d2 0022 movs r2, #0
  457. 318 01d4 42F00C02 orr r2, r2, #12
  458. 319 01d8 83F82021 strb r2, [r3, #288]
  459. 320 01dc 0022 movs r2, #0
  460. 321 01de 83F82121 strb r2, [r3, #289]
  461. 129:user_src/soft_tattu.c **** //前12s信息
  462. 130:user_src/soft_tattu.c **** memcpy(&taptr->ttu_inf,&taptr->Tattu_recv_buf[2],40);
  463. 322 .loc 1 130 32
  464. 323 01e2 7B69 ldr r3, [r7, #20]
  465. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 9
  466. 324 01e4 03F1DC00 add r0, r3, #220
  467. 325 .loc 1 130 48
  468. 326 01e8 7B69 ldr r3, [r7, #20]
  469. 327 01ea 0633 adds r3, r3, #6
  470. 328 .loc 1 130 25
  471. 329 01ec 2822 movs r2, #40
  472. 330 01ee 1946 mov r1, r3
  473. 331 01f0 FFF7FEFF bl memcpy
  474. 131:user_src/soft_tattu.c **** //后边信息
  475. 132:user_src/soft_tattu.c **** memcpy(&taptr->ttu_inf.tattu_descapa,&taptr->Tattu_recv_buf[40+2],24);
  476. 332 .loc 1 132 32
  477. 333 01f4 7B69 ldr r3, [r7, #20]
  478. 334 01f6 03F58470 add r0, r3, #264
  479. 335 .loc 1 132 62
  480. 336 01fa 7B69 ldr r3, [r7, #20]
  481. 337 01fc 2E33 adds r3, r3, #46
  482. 338 .loc 1 132 25
  483. 339 01fe 1822 movs r2, #24
  484. 340 0200 1946 mov r1, r3
  485. 341 0202 FFF7FEFF bl memcpy
  486. 342 0206 29E0 b .L8
  487. 343 .L11:
  488. 133:user_src/soft_tattu.c **** }
  489. 134:user_src/soft_tattu.c **** //14s
  490. 135:user_src/soft_tattu.c **** else if(taptr->Tattu_recv_index-2 == (sizeof(_TATTU_INFO)-2-16) || taptr->Tattu
  491. 344 .loc 1 135 34
  492. 345 0208 7B69 ldr r3, [r7, #20]
  493. 346 020a B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  494. 347 020e 1BB2 sxth r3, r3
  495. 348 .loc 1 135 28
  496. 349 0210 362B cmp r3, #54
  497. 350 0212 05D0 beq .L12
  498. 351 .loc 1 135 93 discriminator 1
  499. 352 0214 7B69 ldr r3, [r7, #20]
  500. 353 0216 B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  501. 354 021a 1BB2 sxth r3, r3
  502. 355 .loc 1 135 85 discriminator 1
  503. 356 021c 462B cmp r3, #70
  504. 357 021e 1DD1 bne .L8
  505. 358 .L12:
  506. 136:user_src/soft_tattu.c **** {
  507. 137:user_src/soft_tattu.c **** taptr->ttu_inf.tattu_cnum = 14;
  508. 359 .loc 1 137 51
  509. 360 0220 7B69 ldr r3, [r7, #20]
  510. 361 0222 0022 movs r2, #0
  511. 362 0224 42F00E02 orr r2, r2, #14
  512. 363 0228 83F82021 strb r2, [r3, #288]
  513. 364 022c 0022 movs r2, #0
  514. 365 022e 83F82121 strb r2, [r3, #289]
  515. 138:user_src/soft_tattu.c ****
  516. 139:user_src/soft_tattu.c **** //14s信息
  517. 140:user_src/soft_tattu.c **** memcpy(&taptr->ttu_inf,&taptr->Tattu_recv_buf[2],taptr->Tattu_recv_index-2)
  518. 366 .loc 1 140 32
  519. 367 0232 7B69 ldr r3, [r7, #20]
  520. 368 0234 03F1DC00 add r0, r3, #220
  521. 369 .loc 1 140 48
  522. 370 0238 7B69 ldr r3, [r7, #20]
  523. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 10
  524. 371 023a 991D adds r1, r3, #6
  525. 372 .loc 1 140 79
  526. 373 023c 7B69 ldr r3, [r7, #20]
  527. 374 023e B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  528. 375 0242 1BB2 sxth r3, r3
  529. 376 .loc 1 140 97
  530. 377 0244 023B subs r3, r3, #2
  531. 378 .loc 1 140 25
  532. 379 0246 1A46 mov r2, r3
  533. 380 0248 FFF7FEFF bl memcpy
  534. 381 024c 06E0 b .L8
  535. 382 .L9:
  536. 141:user_src/soft_tattu.c **** }
  537. 142:user_src/soft_tattu.c ****
  538. 143:user_src/soft_tattu.c **** }else{
  539. 144:user_src/soft_tattu.c **** //清空电池信息数据
  540. 145:user_src/soft_tattu.c **** memset(&taptr->ttu_inf, 0, sizeof(_TATTU_INFO));
  541. 383 .loc 1 145 28
  542. 384 024e 7B69 ldr r3, [r7, #20]
  543. 385 0250 DC33 adds r3, r3, #220
  544. 386 .loc 1 145 21
  545. 387 0252 4622 movs r2, #70
  546. 388 0254 0021 movs r1, #0
  547. 389 0256 1846 mov r0, r3
  548. 390 0258 FFF7FEFF bl memset
  549. 391 .L8:
  550. 146:user_src/soft_tattu.c **** }
  551. 147:user_src/soft_tattu.c **** }
  552. 148:user_src/soft_tattu.c **** }
  553. 149:user_src/soft_tattu.c **** //清理buff
  554. 150:user_src/soft_tattu.c **** memset(taptr->Tattu_recv_buf,0,taptr->Tattu_recv_index);
  555. 392 .loc 1 150 21
  556. 393 025c 7B69 ldr r3, [r7, #20]
  557. 394 025e 181D adds r0, r3, #4
  558. 395 .loc 1 150 45
  559. 396 0260 7B69 ldr r3, [r7, #20]
  560. 397 0262 B3F9D830 ldrsh r3, [r3, #216] @ unaligned
  561. 398 0266 1BB2 sxth r3, r3
  562. 399 .loc 1 150 9
  563. 400 0268 1A46 mov r2, r3
  564. 401 026a 0021 movs r1, #0
  565. 402 026c FFF7FEFF bl memset
  566. 151:user_src/soft_tattu.c ****
  567. 152:user_src/soft_tattu.c **** //包数完整重新计数
  568. 153:user_src/soft_tattu.c **** taptr->Tattu_recv_index = 0;
  569. 403 .loc 1 153 33
  570. 404 0270 7B69 ldr r3, [r7, #20]
  571. 405 0272 0022 movs r2, #0
  572. 406 0274 83F8D820 strb r2, [r3, #216]
  573. 407 0278 0022 movs r2, #0
  574. 408 027a 83F8D920 strb r2, [r3, #217]
  575. 409 .L13:
  576. 154:user_src/soft_tattu.c **** }
  577. 155:user_src/soft_tattu.c **** }
  578. 410 .loc 1 155 1
  579. 411 027e 00BF nop
  580. 412 0280 1837 adds r7, r7, #24
  581. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 11
  582. 413 .LCFI3:
  583. 414 .cfi_def_cfa_offset 8
  584. 415 0282 BD46 mov sp, r7
  585. 416 .LCFI4:
  586. 417 .cfi_def_cfa_register 13
  587. 418 @ sp needed
  588. 419 0284 80BD pop {r7, pc}
  589. 420 .L15:
  590. 421 0286 00BF .align 2
  591. 422 .L14:
  592. 423 0288 00000000 .word tattu_device1
  593. 424 028c 00000000 .word tattu_device2
  594. 425 0290 00000000 .word CCITT_CRC16
  595. 426 .cfi_endproc
  596. 427 .LFE130:
  597. 429 .global CCITT_CRC16
  598. 430 .section .bss.CCITT_CRC16,"aw",%nobits
  599. 431 .align 1
  600. 434 CCITT_CRC16:
  601. 435 0000 0000 .space 2
  602. 436 .section .text.CCITT_CRC16Init,"ax",%progbits
  603. 437 .align 1
  604. 438 .global CCITT_CRC16Init
  605. 439 .syntax unified
  606. 440 .thumb
  607. 441 .thumb_func
  608. 443 CCITT_CRC16Init:
  609. 444 .LFB131:
  610. 156:user_src/soft_tattu.c ****
  611. 157:user_src/soft_tattu.c **** /*
  612. 158:user_src/soft_tattu.c **** 格氏电池的CRC校验
  613. 159:user_src/soft_tattu.c **** */
  614. 160:user_src/soft_tattu.c **** #define CRC_CCITT_INIT 0xFFFF
  615. 161:user_src/soft_tattu.c **** #define CRC_CCITT_POLY 0x1021U
  616. 162:user_src/soft_tattu.c ****
  617. 163:user_src/soft_tattu.c **** uint16_t CCITT_CRC16 = 0;
  618. 164:user_src/soft_tattu.c ****
  619. 165:user_src/soft_tattu.c **** void CCITT_CRC16Init(uint8_t const *bytes, uint16_t len)
  620. 166:user_src/soft_tattu.c **** {
  621. 445 .loc 1 166 1
  622. 446 .cfi_startproc
  623. 447 @ args = 0, pretend = 0, frame = 8
  624. 448 @ frame_needed = 1, uses_anonymous_args = 0
  625. 449 0000 80B5 push {r7, lr}
  626. 450 .LCFI5:
  627. 451 .cfi_def_cfa_offset 8
  628. 452 .cfi_offset 7, -8
  629. 453 .cfi_offset 14, -4
  630. 454 0002 82B0 sub sp, sp, #8
  631. 455 .LCFI6:
  632. 456 .cfi_def_cfa_offset 16
  633. 457 0004 00AF add r7, sp, #0
  634. 458 .LCFI7:
  635. 459 .cfi_def_cfa_register 7
  636. 460 0006 7860 str r0, [r7, #4]
  637. 461 0008 0B46 mov r3, r1
  638. 462 000a 7B80 strh r3, [r7, #2] @ movhi
  639. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 12
  640. 167:user_src/soft_tattu.c **** CCITT_CRC16 = CRC_CCITT_INIT;
  641. 463 .loc 1 167 17
  642. 464 000c 064B ldr r3, .L17
  643. 465 000e 4FF6FF72 movw r2, #65535
  644. 466 0012 1A80 strh r2, [r3] @ movhi
  645. 168:user_src/soft_tattu.c **** CCITT_CRC_ARRAY(bytes, len);
  646. 467 .loc 1 168 5
  647. 468 0014 7B88 ldrh r3, [r7, #2]
  648. 469 0016 1946 mov r1, r3
  649. 470 0018 7868 ldr r0, [r7, #4]
  650. 471 001a FFF7FEFF bl CCITT_CRC_ARRAY
  651. 169:user_src/soft_tattu.c **** }
  652. 472 .loc 1 169 1
  653. 473 001e 00BF nop
  654. 474 0020 0837 adds r7, r7, #8
  655. 475 .LCFI8:
  656. 476 .cfi_def_cfa_offset 8
  657. 477 0022 BD46 mov sp, r7
  658. 478 .LCFI9:
  659. 479 .cfi_def_cfa_register 13
  660. 480 @ sp needed
  661. 481 0024 80BD pop {r7, pc}
  662. 482 .L18:
  663. 483 0026 00BF .align 2
  664. 484 .L17:
  665. 485 0028 00000000 .word CCITT_CRC16
  666. 486 .cfi_endproc
  667. 487 .LFE131:
  668. 489 .section .text.CCITT_CRCStep,"ax",%progbits
  669. 490 .align 1
  670. 491 .global CCITT_CRCStep
  671. 492 .syntax unified
  672. 493 .thumb
  673. 494 .thumb_func
  674. 496 CCITT_CRCStep:
  675. 497 .LFB132:
  676. 170:user_src/soft_tattu.c ****
  677. 171:user_src/soft_tattu.c ****
  678. 172:user_src/soft_tattu.c **** void CCITT_CRCStep(uint8_t byte)
  679. 173:user_src/soft_tattu.c **** {
  680. 498 .loc 1 173 1
  681. 499 .cfi_startproc
  682. 500 @ args = 0, pretend = 0, frame = 16
  683. 501 @ frame_needed = 1, uses_anonymous_args = 0
  684. 502 @ link register save eliminated.
  685. 503 0000 80B4 push {r7}
  686. 504 .LCFI10:
  687. 505 .cfi_def_cfa_offset 4
  688. 506 .cfi_offset 7, -4
  689. 507 0002 85B0 sub sp, sp, #20
  690. 508 .LCFI11:
  691. 509 .cfi_def_cfa_offset 24
  692. 510 0004 00AF add r7, sp, #0
  693. 511 .LCFI12:
  694. 512 .cfi_def_cfa_register 7
  695. 513 0006 0346 mov r3, r0
  696. 514 0008 FB71 strb r3, [r7, #7]
  697. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 13
  698. 174:user_src/soft_tattu.c **** uint32_t j;
  699. 175:user_src/soft_tattu.c **** CCITT_CRC16 ^= ((uint16_t)byte << 8);
  700. 515 .loc 1 175 21
  701. 516 000a FB79 ldrb r3, [r7, #7] @ zero_extendqisi2
  702. 517 .loc 1 175 36
  703. 518 000c 1B02 lsls r3, r3, #8
  704. 519 .loc 1 175 17
  705. 520 000e 1AB2 sxth r2, r3
  706. 521 0010 164B ldr r3, .L24
  707. 522 0012 1B88 ldrh r3, [r3]
  708. 523 0014 1BB2 sxth r3, r3
  709. 524 0016 5340 eors r3, r3, r2
  710. 525 0018 1BB2 sxth r3, r3
  711. 526 001a 9AB2 uxth r2, r3
  712. 527 001c 134B ldr r3, .L24
  713. 528 001e 1A80 strh r2, [r3] @ movhi
  714. 176:user_src/soft_tattu.c **** for (j = 0; j < 8; j++)
  715. 529 .loc 1 176 12
  716. 530 0020 0023 movs r3, #0
  717. 531 0022 FB60 str r3, [r7, #12]
  718. 532 .loc 1 176 5
  719. 533 0024 17E0 b .L20
  720. 534 .L23:
  721. 177:user_src/soft_tattu.c **** {
  722. 178:user_src/soft_tattu.c **** CCITT_CRC16=(CCITT_CRC16 & 0x8000U)?((CCITT_CRC16 << 1) ^ CRC_CCITT_POLY):(CCITT_CRC16 << 1
  723. 535 .loc 1 178 44
  724. 536 0026 114B ldr r3, .L24
  725. 537 0028 1B88 ldrh r3, [r3]
  726. 538 002a 1BB2 sxth r3, r3
  727. 539 .loc 1 178 20
  728. 540 002c 002B cmp r3, #0
  729. 541 002e 09DA bge .L21
  730. 542 .loc 1 178 59 discriminator 1
  731. 543 0030 0E4B ldr r3, .L24
  732. 544 0032 1B88 ldrh r3, [r3]
  733. 545 0034 5B00 lsls r3, r3, #1
  734. 546 0036 9BB2 uxth r3, r3
  735. 547 .loc 1 178 20 discriminator 1
  736. 548 0038 83F48153 eor r3, r3, #4128
  737. 549 003c 83F00103 eor r3, r3, #1
  738. 550 0040 9BB2 uxth r3, r3
  739. 551 0042 03E0 b .L22
  740. 552 .L21:
  741. 553 .loc 1 178 96 discriminator 2
  742. 554 0044 094B ldr r3, .L24
  743. 555 0046 1B88 ldrh r3, [r3]
  744. 556 .loc 1 178 20 discriminator 2
  745. 557 0048 5B00 lsls r3, r3, #1
  746. 558 004a 9BB2 uxth r3, r3
  747. 559 .L22:
  748. 560 .loc 1 178 20 is_stmt 0 discriminator 4
  749. 561 004c 074A ldr r2, .L24
  750. 562 004e 1380 strh r3, [r2] @ movhi
  751. 176:user_src/soft_tattu.c **** for (j = 0; j < 8; j++)
  752. 563 .loc 1 176 25 is_stmt 1 discriminator 4
  753. 564 0050 FB68 ldr r3, [r7, #12]
  754. 565 0052 0133 adds r3, r3, #1
  755. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 14
  756. 566 0054 FB60 str r3, [r7, #12]
  757. 567 .L20:
  758. 176:user_src/soft_tattu.c **** for (j = 0; j < 8; j++)
  759. 568 .loc 1 176 5 discriminator 2
  760. 569 0056 FB68 ldr r3, [r7, #12]
  761. 570 0058 072B cmp r3, #7
  762. 571 005a E4D9 bls .L23
  763. 179:user_src/soft_tattu.c **** }
  764. 180:user_src/soft_tattu.c **** }
  765. 572 .loc 1 180 1
  766. 573 005c 00BF nop
  767. 574 005e 00BF nop
  768. 575 0060 1437 adds r7, r7, #20
  769. 576 .LCFI13:
  770. 577 .cfi_def_cfa_offset 4
  771. 578 0062 BD46 mov sp, r7
  772. 579 .LCFI14:
  773. 580 .cfi_def_cfa_register 13
  774. 581 @ sp needed
  775. 582 0064 5DF8047B ldr r7, [sp], #4
  776. 583 .LCFI15:
  777. 584 .cfi_restore 7
  778. 585 .cfi_def_cfa_offset 0
  779. 586 0068 7047 bx lr
  780. 587 .L25:
  781. 588 006a 00BF .align 2
  782. 589 .L24:
  783. 590 006c 00000000 .word CCITT_CRC16
  784. 591 .cfi_endproc
  785. 592 .LFE132:
  786. 594 .section .text.CCITT_CRC_ARRAY,"ax",%progbits
  787. 595 .align 1
  788. 596 .global CCITT_CRC_ARRAY
  789. 597 .syntax unified
  790. 598 .thumb
  791. 599 .thumb_func
  792. 601 CCITT_CRC_ARRAY:
  793. 602 .LFB133:
  794. 181:user_src/soft_tattu.c ****
  795. 182:user_src/soft_tattu.c ****
  796. 183:user_src/soft_tattu.c **** void CCITT_CRC_ARRAY(uint8_t const * bytes, uint16_t len)
  797. 184:user_src/soft_tattu.c **** {
  798. 603 .loc 1 184 1
  799. 604 .cfi_startproc
  800. 605 @ args = 0, pretend = 0, frame = 8
  801. 606 @ frame_needed = 1, uses_anonymous_args = 0
  802. 607 0000 80B5 push {r7, lr}
  803. 608 .LCFI16:
  804. 609 .cfi_def_cfa_offset 8
  805. 610 .cfi_offset 7, -8
  806. 611 .cfi_offset 14, -4
  807. 612 0002 82B0 sub sp, sp, #8
  808. 613 .LCFI17:
  809. 614 .cfi_def_cfa_offset 16
  810. 615 0004 00AF add r7, sp, #0
  811. 616 .LCFI18:
  812. 617 .cfi_def_cfa_register 7
  813. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 15
  814. 618 0006 7860 str r0, [r7, #4]
  815. 619 0008 0B46 mov r3, r1
  816. 620 000a 7B80 strh r3, [r7, #2] @ movhi
  817. 185:user_src/soft_tattu.c **** while (len--) CCITT_CRCStep(*bytes++);
  818. 621 .loc 1 185 11
  819. 622 000c 06E0 b .L27
  820. 623 .L28:
  821. 624 .loc 1 185 41 discriminator 2
  822. 625 000e 7B68 ldr r3, [r7, #4]
  823. 626 0010 5A1C adds r2, r3, #1
  824. 627 0012 7A60 str r2, [r7, #4]
  825. 628 .loc 1 185 21 discriminator 2
  826. 629 0014 1B78 ldrb r3, [r3] @ zero_extendqisi2
  827. 630 0016 1846 mov r0, r3
  828. 631 0018 FFF7FEFF bl CCITT_CRCStep
  829. 632 .L27:
  830. 633 .loc 1 185 15 discriminator 1
  831. 634 001c 7B88 ldrh r3, [r7, #2]
  832. 635 001e 5A1E subs r2, r3, #1
  833. 636 0020 7A80 strh r2, [r7, #2] @ movhi
  834. 637 .loc 1 185 11 discriminator 1
  835. 638 0022 002B cmp r3, #0
  836. 639 0024 F3D1 bne .L28
  837. 186:user_src/soft_tattu.c **** }
  838. 640 .loc 1 186 1
  839. 641 0026 00BF nop
  840. 642 0028 00BF nop
  841. 643 002a 0837 adds r7, r7, #8
  842. 644 .LCFI19:
  843. 645 .cfi_def_cfa_offset 8
  844. 646 002c BD46 mov sp, r7
  845. 647 .LCFI20:
  846. 648 .cfi_def_cfa_register 13
  847. 649 @ sp needed
  848. 650 002e 80BD pop {r7, pc}
  849. 651 .cfi_endproc
  850. 652 .LFE133:
  851. 654 .text
  852. 655 .Letext0:
  853. 656 .file 2 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h"
  854. 657 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h"
  855. 658 .file 4 "user_inc/common.h"
  856. 659 .file 5 "user_inc/soft_tattu.h"
  857. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s page 16
  858. DEFINED SYMBOLS
  859. *ABS*:00000000 soft_tattu.c
  860. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:24 .bss.tattu_device1:00000000 tattu_device1
  861. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:21 .bss.tattu_device1:00000000 $d
  862. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:31 .bss.tattu_device2:00000000 tattu_device2
  863. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:28 .bss.tattu_device2:00000000 $d
  864. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:34 .text.TattuCanRecvHookFunction:00000000 $t
  865. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:40 .text.TattuCanRecvHookFunction:00000000 TattuCanRecvHookFunction
  866. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:443 .text.CCITT_CRC16Init:00000000 CCITT_CRC16Init
  867. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:423 .text.TattuCanRecvHookFunction:00000288 $d
  868. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:434 .bss.CCITT_CRC16:00000000 CCITT_CRC16
  869. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:431 .bss.CCITT_CRC16:00000000 $d
  870. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:437 .text.CCITT_CRC16Init:00000000 $t
  871. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:601 .text.CCITT_CRC_ARRAY:00000000 CCITT_CRC_ARRAY
  872. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:485 .text.CCITT_CRC16Init:00000028 $d
  873. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:490 .text.CCITT_CRCStep:00000000 $t
  874. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:496 .text.CCITT_CRCStep:00000000 CCITT_CRCStep
  875. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:590 .text.CCITT_CRCStep:0000006c $d
  876. C:\Users\zl835\AppData\Local\Temp\ccPCUDQi.s:595 .text.CCITT_CRC_ARRAY:00000000 $t
  877. UNDEFINED SYMBOLS
  878. memset
  879. memcpy
  880. HAL_GetTick