comparison pirelli/fw-disasm @ 262:db000ea183a5

pirelli/fw-disasm: CV charging analyzed
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 26 Dec 2017 12:26:23 +0000
parents 61e0be63559c
children
comparison
equal deleted inserted replaced
261:61e0be63559c 262:db000ea183a5
1288 2e299e: 2003 mov r0, #3 1288 2e299e: 2003 mov r0, #3
1289 2e29a0: f0b2 fa8f bl 0x394ec2 1289 2e29a0: f0b2 fa8f bl 0x394ec2
1290 2e29a4: f0d1 f905 bl 0x3b3bb2 1290 2e29a4: f0d1 f905 bl 0x3b3bb2
1291 2e29a8: b002 add sp, #8 1291 2e29a8: b002 add sp, #8
1292 2e29aa: bd70 pop {r4, r5, r6, pc} 1292 2e29aa: bd70 pop {r4, r5, r6, pc}
1293
1294 $pwr_CI_charge_timer_process:
1295 2e29e4: b510 push {r4, lr}
1296 2e29e6: b082 sub sp, #8
1297 2e29e8: f066 fc90 bl 0x34930c ; $ABB_Read_Status
1298 2e29ec: 09c0 lsr r0, r0, #7
1299 2e29ee: d324 bcc 0x2e2a3a ; return
1300 ; charging power still present
1301 2e29f0: 4cec ldr r4, =0x1774e70 ; via 0x2e2da4
1302 2e29f2: 6820 ldr r0, [r4, #0]
1303 2e29f4: 8f81 ldrh r1, [r0, #60] ; 0x3c
1304 2e29f6: 8f40 ldrh r0, [r0, #58] ; 0x3a
1305 2e29f8: 0840 lsr r0, r0, #1
1306 2e29fa: 4281 cmp r1, r0
1307 2e29fc: dd08 ble 0x2e2a10
1308 ; taking too long?
1309 2e29fe: f7ff fbdd bl 0x2e21bc
1310 2e2a02: 2800 cmp r0, #0
1311 2e2a04: d104 bne 0x2e2a10
1312 2e2a06: 6820 ldr r0, [r4, #0]
1313 2e2a08: 303c add r0, #60 ; 0x3c
1314 2e2a0a: 8801 ldrh r1, [r0, #0]
1315 2e2a0c: 3901 sub r1, #1
1316 2e2a0e: e003 b 0x2e2a18
1317 ; no time issue
1318 2e2a10: 6820 ldr r0, [r4, #0]
1319 2e2a12: 303c add r0, #60 ; 0x3c
1320 2e2a14: 8801 ldrh r1, [r0, #0]
1321 2e2a16: 3101 add r1, #1
1322 2e2a18: 8001 strh r1, [r0, #0]
1323 2e2a1a: 6820 ldr r0, [r4, #0]
1324 2e2a1c: 8f81 ldrh r1, [r0, #60] ; 0x3c
1325 2e2a1e: 8f40 ldrh r0, [r0, #58] ; 0x3a
1326 2e2a20: 4281 cmp r1, r0
1327 2e2a22: dd08 ble 0x2e2a36
1328 2e2a24: 48e9 ldr r0, =0xa0020 ; via 0x2e2dcc
1329 2e2a26: 9000 str r0, [sp, #0]
1330 2e2a28: a02e add r0, pc, #184 ; 0xb8
1331 2e2a2a: 211d mov r1, #29 ; 0x1d
1332 2e2a2c: 2200 mov r2, #0
1333 2e2a2e: 43d2 mvn r2, r2
1334 2e2a30: 2302 mov r3, #2
1335 2e2a32: f0f8 f8ff bl 0x3dac34
1336 2e2a36: f04b f903 bl 0x32dc40 ; $pwr_get_battery_temperature
1337 2e2a3a: b002 add sp, #8
1338 2e2a3c: bd10 pop {r4, pc}
1339 2e2a3e: 46c0 nop (mov r8, r8)
1340
1341 $pwr_CV_charge_process:
1342 2e2b14: b5f0 push {r4, r5, r6, r7, lr}
1343 2e2b16: 4640 mov r0, r8
1344 2e2b18: 4649 mov r1, r9
1345 2e2b1a: 4652 mov r2, r10
1346 2e2b1c: 465b mov r3, r11
1347 2e2b1e: b40f push {r0, r1, r2, r3}
1348 2e2b20: b082 sub sp, #8
1349 2e2b22: 2138 mov r1, #56 ; 0x38
1350 2e2b24: 489f ldr r0, =0x1774e70 ; via 0x2e2da4
1351 2e2b26: 6800 ldr r0, [r0, #0]
1352 2e2b28: 5e08 ldrsh r0, [r1, r0]
1353 2e2b2a: f04a fff8 bl 0x32db1e ; $pwr_bat_temp_within_limits
1354 2e2b2e: 2800 cmp r0, #0
1355 2e2b30: d115 bne 0x2e2b5e
1356 ; error path
1357 2e2b32: f7ff fbdc bl 0x2e22ee
1358 2e2b36: 48a5 ldr r0, =0xa0020 ; via 0x2e2dcc
1359 2e2b38: 9000 str r0, [sp, #0]
1360 2e2b3a: a037 add r0, pc, #220 ; 0xdc
1361 2e2b3c: 2121 mov r1, #33 ; 0x21
1362 2e2b3e: 2200 mov r2, #0
1363 2e2b40: 43d2 mvn r2, r2
1364 2e2b42: 2302 mov r3, #2
1365 2e2b44: f0f8 f876 bl 0x3dac34
1366 2e2b48: 2000 mov r0, #0
1367 2e2b4a: f0b2 f9ba bl 0x394ec2
1368 2e2b4e: 2032 mov r0, #50 ; 0x32
1369 2e2b50: 493a ldr r1, =0x1774e38 ; via 0x2e2c3c
1370 2e2b52: 6809 ldr r1, [r1, #0]
1371 2e2b54: 5c40 ldrb r0, [r0, r1]
1372 2e2b56: 2800 cmp r0, #0
1373 2e2b58: d100 bne 0x2e2b5c
1374 2e2b5a: e11d b 0x2e2d98
1375 2e2b5c: e157 b 0x2e2e0e
1376 ; good path
1377 2e2b5e: 4e37 ldr r6, =0x1774e38 ; via 0x2e2c3c
1378 2e2b60: 2133 mov r1, #51 ; 0x33
1379 2e2b62: 6830 ldr r0, [r6, #0]
1380 2e2b64: 5c08 ldrb r0, [r1, r0]
1381 2e2b66: 2800 cmp r0, #0
1382 2e2b68: d10d bne 0x2e2b86
1383 ; is_adc_on FALSE
1384 2e2b6a: 2001 mov r0, #1
1385 2e2b6c: 2122 mov r1, #34 ; 0x22
1386 2e2b6e: 2200 mov r2, #0
1387 2e2b70: f066 fb4c bl 0x34920c
1388 2e2b74: 2001 mov r0, #1
1389 2e2b76: f7ce fe92 bl 0x2b189e
1390 2e2b7a: 2001 mov r0, #1
1391 2e2b7c: 2122 mov r1, #34 ; 0x22
1392 2e2b7e: f066 fb6c bl 0x34925a
1393 2e2b82: 1c04 add r4, r0, #0
1394 2e2b84: e001 b 0x2e2b8a
1395 ; is_adc_on TRUE
1396 2e2b86: 6830 ldr r0, [r6, #0]
1397 2e2b88: 8904 ldrh r4, [r0, #8]
1398 ; is_adc_on paths join
1399 2e2b8a: 1c20 add r0, r4, #0
1400 2e2b8c: f04b fae1 bl 0x32e152 ; Ichg averaging
1401 2e2b90: 1c04 add r4, r0, #0
1402 2e2b92: 4d4e ldr r5, =0x1774b78 ; via 0x2e2ccc
1403 2e2b94: f04a ffb1 bl 0x32dafa ; $pwr_adc_to_mA
1404 2e2b98: 80e8 strh r0, [r5, #6]
1405 2e2b9a: 88e8 ldrh r0, [r5, #6]
1406 2e2b9c: f04b fa8e bl 0x32e0bc
1407 ; "TIMER2" trace
1408 2e2ba0: 488a ldr r0, =0xa0020 ; via 0x2e2dcc
1409 2e2ba2: 9000 str r0, [sp, #0]
1410 2e2ba4: a0cd add r0, pc, #820 ; 0x334
1411 2e2ba6: 2106 mov r1, #6
1412 2e2ba8: 2200 mov r2, #0
1413 2e2baa: 43d2 mvn r2, r2
1414 2e2bac: 2302 mov r3, #2
1415 2e2bae: f0f8 f841 bl 0x3dac34
1416 ; "Ichg (MADC code) " trace
1417 2e2bb2: 4886 ldr r0, =0xa0020 ; via 0x2e2dcc
1418 2e2bb4: 9000 str r0, [sp, #0]
1419 2e2bb6: a040 add r0, pc, #256 ; 0x100
1420 2e2bb8: 2111 mov r1, #17 ; 0x11
1421 2e2bba: 1c22 add r2, r4, #0
1422 2e2bbc: 2305 mov r3, #5
1423 2e2bbe: f0f8 f839 bl 0x3dac34
1424 2e2bc2: 2133 mov r1, #51 ; 0x33
1425 2e2bc4: 6830 ldr r0, [r6, #0]
1426 2e2bc6: 5c08 ldrb r0, [r1, r0]
1427 2e2bc8: 2800 cmp r0, #0
1428 2e2bca: d10c bne 0x2e2be6
1429 ; is_adc_on FALSE
1430 2e2bcc: 2001 mov r0, #1
1431 2e2bce: 211e mov r1, #30 ; 0x1e
1432 2e2bd0: 2200 mov r2, #0
1433 2e2bd2: f066 fb1b bl 0x34920c
1434 2e2bd6: 2001 mov r0, #1
1435 2e2bd8: f7ce fe61 bl 0x2b189e
1436 2e2bdc: 2001 mov r0, #1
1437 2e2bde: 211e mov r1, #30 ; 0x1e
1438 2e2be0: f066 fb3b bl 0x34925a
1439 2e2be4: e001 b 0x2e2bea
1440 ; is_adc_on TRUE
1441 2e2be6: f04b fa77 bl 0x32e0d8
1442 ; is_adc_on paths join
1443 2e2bea: 4680 mov r8, r0
1444 2e2bec: 4d37 ldr r5, =0x1774b78 ; via 0x2e2ccc
1445 2e2bee: 4640 mov r0, r8
1446 2e2bf0: f04a ff7a bl 0x32dae8 ; $pwr_adc_to_mvolt
1447 2e2bf4: 80a8 strh r0, [r5, #4]
1448 2e2bf6: 486b ldr r0, =0x1774e70 ; via 0x2e2da4
1449 2e2bf8: 4681 mov r9, r0
1450 2e2bfa: 2138 mov r1, #56 ; 0x38
1451 2e2bfc: 6800 ldr r0, [r0, #0]
1452 2e2bfe: 5e08 ldrsh r0, [r1, r0]
1453 2e2c00: 3001 add r0, #1
1454 2e2c02: 2800 cmp r0, #0
1455 2e2c04: d100 bne 0x2e2c08
1456 2e2c06: e098 b 0x2e2d3a
1457 ; temperature != -1
1458 2e2c08: 88aa ldrh r2, [r5, #4]
1459 2e2c0a: 48d6 ldr r0, =0x108c ; via 0x2e2f64
1460 2e2c0c: 4282 cmp r2, r0
1461 2e2c0e: da17 bge 0x2e2c40
1462 ; Vbat < 4236
1463 2e2c10: 49d6 ldr r1, =0x17749c8 ; via 0x2e2f6c
1464 2e2c12: 2000 mov r0, #0
1465 2e2c14: 8008 strh r0, [r1, #0]
1466 2e2c16: e046 b 0x2e2ca6
1467 ; Vbat >= 4236
1468 2e2c40: 4bca ldr r3, =0x17749c8 ; via 0x2e2f6c
1469 2e2c42: 8818 ldrh r0, [r3, #0]
1470 2e2c44: 3001 add r0, #1
1471 2e2c46: 0400 lsl r0, r0, #16
1472 2e2c48: 0c01 lsr r1, r0, #16
1473 2e2c4a: 8019 strh r1, [r3, #0]
1474 2e2c4c: 48c8 ldr r0, =0x17749c4 ; via 0x2e2f70
1475 2e2c4e: 4682 mov r10, r0
1476 2e2c50: 8800 ldrh r0, [r0, #0]
1477 2e2c52: 4281 cmp r1, r0
1478 2e2c54: dd27 ble 0x2e2ca6
1479 ; Vbat has been high 4 times in a row
1480 2e2c56: 4fc7 ldr r7, =0x17749ca ; via 0x2e2f74
1481 2e2c58: 8839 ldrh r1, [r7, #0]
1482 2e2c5a: 48c7 ldr r0, =0x17749c6 ; via 0x2e2f78
1483 2e2c5c: 8800 ldrh r0, [r0, #0]
1484 2e2c5e: 3830 sub r0, #48 ; 0x30
1485 2e2c60: 4288 cmp r0, r1
1486 2e2c62: dc1d bgt 0x2e2ca0
1487 ; DAC -= 2
1488 2e2c64: 1e88 sub r0, r1, #2
1489 2e2c66: 8038 strh r0, [r7, #0]
1490 2e2c68: 2001 mov r0, #1
1491 2e2c6a: 213a mov r1, #58 ; 0x3a
1492 2e2c6c: 2200 mov r2, #0
1493 2e2c6e: f066 facd bl 0x34920c
1494 2e2c72: 883a ldrh r2, [r7, #0]
1495 2e2c74: 2001 mov r0, #1
1496 2e2c76: 2132 mov r1, #50 ; 0x32
1497 2e2c78: f066 fac8 bl 0x34920c
1498 2e2c7c: 2001 mov r0, #1
1499 2e2c7e: 213a mov r1, #58 ; 0x3a
1500 2e2c80: 2201 mov r2, #1
1501 2e2c82: f066 fac3 bl 0x34920c
1502 ; set counter threshold to 10 (started out as 3)
1503 2e2c86: 4650 mov r0, r10
1504 2e2c88: 210a mov r1, #10 ; 0xa
1505 2e2c8a: 8001 strh r1, [r0, #0]
1506 ; "Sub CV DAC" trace
1507 2e2c8c: 883a ldrh r2, [r7, #0]
1508 2e2c8e: 484f ldr r0, =0xa0020 ; via 0x2e2dcc
1509 2e2c90: 9000 str r0, [sp, #0]
1510 2e2c92: a094 add r0, pc, #592 ; 0x250
1511 2e2c94: 210b mov r1, #11 ; 0xb
1512 2e2c96: 2305 mov r3, #5
1513 2e2c98: f0f7 ffcc bl 0x3dac34
1514 2e2c9c: 48bc ldr r0, =0x1774b7c ; via 0x2e2f90
1515 2e2c9e: 8802 ldrh r2, [r0, #0]
1516 ; counter to 0
1517 2e2ca0: 48b2 ldr r0, =0x17749c8 ; via 0x2e2f6c
1518 2e2ca2: 2100 mov r1, #0
1519 2e2ca4: 8001 strh r1, [r0, #0]
1520 ; end of high Vbat check
1521 ; now check against low threshold of 4160
1522 2e2ca6: 2041 mov r0, #65 ; 0x41
1523 2e2ca8: 0180 lsl r0, r0, #6
1524 2e2caa: 4282 cmp r2, r0
1525 2e2cac: db10 blt 0x2e2cd0
1526 ; Vbat >= 4160
1527 2e2cae: 49b3 ldr r1, =0x17749c0 ; via 0x2e2f7c
1528 2e2cb0: 2000 mov r0, #0
1529 2e2cb2: 8008 strh r0, [r1, #0]
1530 2e2cb4: e041 b 0x2e2d3a
1531 ; Vbat < 4160
1532 ; increment counter
1533 2e2cd0: 49aa ldr r1, =0x17749c0 ; via 0x2e2f7c
1534 2e2cd2: 8808 ldrh r0, [r1, #0]
1535 2e2cd4: 3001 add r0, #1
1536 2e2cd6: 0400 lsl r0, r0, #16
1537 2e2cd8: 0c00 lsr r0, r0, #16
1538 2e2cda: 8008 strh r0, [r1, #0]
1539 2e2cdc: 4fa4 ldr r7, =0x17749c4 ; via 0x2e2f70
1540 2e2cde: 8839 ldrh r1, [r7, #0]
1541 2e2ce0: 4288 cmp r0, r1
1542 2e2ce2: dd2a ble 0x2e2d3a
1543 ; counter incremented past the limit
1544 2e2ce4: 2000 mov r0, #0
1545 2e2ce6: 4683 mov r11, r0
1546 2e2ce8: 49a2 ldr r1, =0x17749ca ; via 0x2e2f74
1547 2e2cea: 880b ldrh r3, [r1, #0]
1548 2e2cec: 1c18 add r0, r3, #0
1549 2e2cee: 3807 sub r0, #7
1550 2e2cf0: 4aa1 ldr r2, =0x17749c6 ; via 0x2e2f78
1551 2e2cf2: 8812 ldrh r2, [r2, #0]
1552 2e2cf4: 4290 cmp r0, r2
1553 2e2cf6: dc1d bgt 0x2e2d34
1554 2e2cf8: 468a mov r10, r1
1555 2e2cfa: 1c58 add r0, r3, #1
1556 2e2cfc: 8008 strh r0, [r1, #0]
1557 2e2cfe: 2001 mov r0, #1
1558 2e2d00: 213a mov r1, #58 ; 0x3a
1559 2e2d02: 2200 mov r2, #0
1560 2e2d04: f066 fa82 bl 0x34920c
1561 2e2d08: 4650 mov r0, r10
1562 2e2d0a: 8802 ldrh r2, [r0, #0]
1563 2e2d0c: 2001 mov r0, #1
1564 2e2d0e: 2132 mov r1, #50 ; 0x32
1565 2e2d10: f066 fa7c bl 0x34920c
1566 2e2d14: 2001 mov r0, #1
1567 2e2d16: 213a mov r1, #58 ; 0x3a
1568 2e2d18: 2201 mov r2, #1
1569 2e2d1a: f066 fa77 bl 0x34920c
1570 2e2d1e: 200a mov r0, #10 ; 0xa
1571 2e2d20: 8038 strh r0, [r7, #0]
1572 ; "Add CV DAC" trace
1573 2e2d22: 4650 mov r0, r10
1574 2e2d24: 8802 ldrh r2, [r0, #0]
1575 2e2d26: 4829 ldr r0, =0xa0020 ; via 0x2e2dcc
1576 2e2d28: 9000 str r0, [sp, #0]
1577 2e2d2a: a071 add r0, pc, #452 ; 0x1c4
1578 2e2d2c: 210b mov r1, #11 ; 0xb
1579 2e2d2e: 2305 mov r3, #5
1580 2e2d30: f0f7 ff80 bl 0x3dac34
1581 ; zero the counter
1582 2e2d34: 4891 ldr r0, =0x17749c0 ; via 0x2e2f7c
1583 2e2d36: 4659 mov r1, r11
1584 2e2d38: 8001 strh r1, [r0, #0]
1585 ; end of DAC adjustment logic
1586 ; "Vbat (MADC code) " trace
1587 2e2d3a: 4824 ldr r0, =0xa0020 ; via 0x2e2dcc
1588 2e2d3c: 9000 str r0, [sp, #0]
1589 2e2d3e: a07c add r0, pc, #496 ; 0x1f0
1590 2e2d40: 2111 mov r1, #17 ; 0x11
1591 2e2d42: 4642 mov r2, r8
1592 2e2d44: 2305 mov r3, #5
1593 2e2d46: f0f7 ff75 bl 0x3dac34
1594 ; get the display backlight current draw
1595 2e2d4a: f0fc faba bl 0x3df2c2
1596 2e2d4e: 4649 mov r1, r9
1597 2e2d50: 6809 ldr r1, [r1, #0]
1598 2e2d52: 894a ldrh r2, [r1, #10] ; 0xa
1599 2e2d54: 1810 add r0, r2, r0
1600 2e2d56: 0400 lsl r0, r0, #16
1601 2e2d58: 0c00 lsr r0, r0, #16
1602 2e2d5a: 4284 cmp r4, r0
1603 2e2d5c: dc38 bgt 0x2e2dd0
1604 ; Ichg <= end_current + display_backlight_current
1605 2e2d5e: 4a88 ldr r2, =0x17749c2 ; via 0x2e2f80
1606 2e2d60: 8810 ldrh r0, [r2, #0]
1607 2e2d62: 3001 add r0, #1
1608 2e2d64: 0400 lsl r0, r0, #16
1609 2e2d66: 0c00 lsr r0, r0, #16
1610 2e2d68: 8010 strh r0, [r2, #0]
1611 2e2d6a: 281e cmp r0, #30 ; 0x1e
1612 2e2d6c: dd1c ble 0x2e2da8
1613 ; this seems to be the end-of-charge condition
1614 2e2d6e: 4985 ldr r1, =0x17749b8 ; via 0x2e2f84
1615 2e2d70: 2000 mov r0, #0
1616 2e2d72: 7008 strb r0, [r1, #0]
1617 2e2d74: f7ff fabb bl 0x2e22ee ; $pwr_stop_charging
1618 2e2d78: f0b2 f86a bl 0x394e50 ; $pwr_send_charge_stop_event ?
1619 ; "Fast charge termination criterion" trace
1620 2e2d7c: 4813 ldr r0, =0xa0020 ; via 0x2e2dcc
1621 2e2d7e: 9000 str r0, [sp, #0]
1622 2e2d80: a05e add r0, pc, #376 ; 0x178
1623 2e2d82: 2121 mov r1, #33 ; 0x21
1624 2e2d84: 2200 mov r2, #0
1625 2e2d86: 43d2 mvn r2, r2
1626 2e2d88: 2305 mov r3, #5
1627 2e2d8a: f0f7 ff53 bl 0x3dac34
1628 2e2d8e: 2032 mov r0, #50 ; 0x32
1629 2e2d90: 6831 ldr r1, [r6, #0]
1630 2e2d92: 5c40 ldrb r0, [r0, r1]
1631 2e2d94: 2800 cmp r0, #0
1632 2e2d96: d13a bne 0x2e2e0e
1633 2e2d98: 2001 mov r0, #1
1634 2e2d9a: 213c mov r1, #60 ; 0x3c
1635 2e2d9c: 2201 mov r2, #1
1636 2e2d9e: f066 fa35 bl 0x34920c
1637 2e2da2: e045 b 0x2e2e30
1638 2e2da4: 4e70 ldr r6, =0x10ae ; via 0x2e2f68
1639 2e2da6: 0177 lsl r7, r6, #5
1640 ; counter <= 30
1641 2e2da8: 2048 mov r0, #72 ; 0x48
1642 2e2daa: 5c40 ldrb r0, [r0, r1]
1643 2e2dac: 2801 cmp r0, #1
1644 2e2dae: d137 bne 0x2e2e20
1645 2e2db0: 2400 mov r4, #0
1646 2e2db2: 4874 ldr r0, =0x17749b8 ; via 0x2e2f84
1647 2e2db4: 7801 ldrb r1, [r0, #0]
1648 2e2db6: 2900 cmp r1, #0
1649 2e2db8: d005 beq 0x2e2dc6
1650 2e2dba: 7004 strb r4, [r0, #0]
1651 2e2dbc: f0b2 f848 bl 0x394e50
1652 2e2dc0: 2064 mov r0, #100 ; 0x64
1653 2e2dc2: f0b2 f8ba bl 0x394f3a
1654 2e2dc6: 486e ldr r0, =0x17749c2 ; via 0x2e2f80
1655 2e2dc8: 8004 strh r4, [r0, #0]
1656 2e2dca: e029 b 0x2e2e20
1657 ; Ichg hasn't fallen low enough
1658 ; zero the Ichg low counter
1659 2e2dd0: 4a6b ldr r2, =0x17749c2 ; via 0x2e2f80
1660 2e2dd2: 2000 mov r0, #0
1661 2e2dd4: 8010 strh r0, [r2, #0]
1662 ; another Vbat check
1663 2e2dd6: 88a8 ldrh r0, [r5, #4]
1664 2e2dd8: 4a63 ldr r2, =0x10ae ; via 0x2e2f68
1665 2e2dda: 4290 cmp r0, r2
1666 2e2ddc: dd1a ble 0x2e2e14
1667 ; Vbat > 4270
1668 2e2dde: 4866 ldr r0, =0x17749c6 ; via 0x2e2f78
1669 2e2de0: 8800 ldrh r0, [r0, #0]
1670 2e2de2: 4a64 ldr r2, =0x17749ca ; via 0x2e2f74
1671 2e2de4: 8812 ldrh r2, [r2, #0]
1672 2e2de6: 1a80 sub r0, r0, r2
1673 2e2de8: 2832 cmp r0, #50 ; 0x32
1674 2e2dea: dd13 ble 0x2e2e14
1675 ; overvoltage handling
1676 2e2dec: f7ff fa7f bl 0x2e22ee
1677 2e2df0: 2009 mov r0, #9
1678 2e2df2: 43c0 mvn r0, r0
1679 2e2df4: 8028 strh r0, [r5, #0]
1680 2e2df6: 4865 ldr r0, =0xa0020 ; via 0x2e2f8c
1681 2e2df8: 9000 str r0, [sp, #0]
1682 2e2dfa: a049 add r0, pc, #292 ; 0x124
1683 2e2dfc: 210e mov r1, #14 ; 0xe
1684 2e2dfe: 2200 mov r2, #0
1685 2e2e00: 43d2 mvn r2, r2
1686 2e2e02: 2302 mov r3, #2
1687 2e2e04: f0f7 ff16 bl 0x3dac34
1688 2e2e08: 2003 mov r0, #3
1689 2e2e0a: f0b2 f85a bl 0x394ec2
1690 2e2e0e: f0d0 fed0 bl 0x3b3bb2
1691 2e2e12: e00d b 0x2e2e30
1692 ; overcurrent check
1693 2e2e14: 2033 mov r0, #51 ; 0x33
1694 2e2e16: 0100 lsl r0, r0, #4
1695 2e2e18: 8909 ldrh r1, [r1, #8]
1696 2e2e1a: 1840 add r0, r0, r1
1697 2e2e1c: 4284 cmp r4, r0
1698 2e2e1e: dc05 bgt 0x2e2e2c
1699 ; TIMER2 reset
1700 2e2e20: 2002 mov r0, #2
1701 2e2e22: 4959 ldr r1, =0x363 ; via 0x2e2f88
1702 2e2e24: 2200 mov r2, #0
1703 2e2e26: f048 f827 bl 0x32ae78
1704 2e2e2a: e001 b 0x2e2e30
1705 2e2e2c: f7ff fad1 bl 0x2e23d2
1706 2e2e30: b002 add sp, #8
1707 2e2e32: bc0f pop {r0, r1, r2, r3}
1708 2e2e34: 4680 mov r8, r0
1709 2e2e36: 4689 mov r9, r1
1710 2e2e38: 4692 mov r10, r2
1711 2e2e3a: 469b mov r11, r3
1712 2e2e3c: bdf0 pop {r4, r5, r6, r7, pc}
1293 1713
1294 $l1_abb_power_on: 1714 $l1_abb_power_on:
1295 31c036: b510 push {r4, lr} 1715 31c036: b510 push {r4, lr}
1296 31c038: b084 sub sp, #16 ; 0x10 1716 31c038: b084 sub sp, #16 ; 0x10
1297 31c03a: 2000 mov r0, #0 1717 31c03a: 2000 mov r0, #0
5309 5729
5310 0x17749c0: 16-bit var, init to 0 in pwr_start_CV_charging() 5730 0x17749c0: 16-bit var, init to 0 in pwr_start_CV_charging()
5311 0x17749c2: 16-bit var, init to 0 in pwr_start_CV_charging() 5731 0x17749c2: 16-bit var, init to 0 in pwr_start_CV_charging()
5312 0x17749c4: 16-bit var, init to 3 in pwr_start_CV_charging() 5732 0x17749c4: 16-bit var, init to 3 in pwr_start_CV_charging()
5313 0x17749c6: 16-bit var, initial CV DAC value gets written here 5733 0x17749c6: 16-bit var, initial CV DAC value gets written here
5734 this var seems to hold the initial value
5314 0x17749c8: 16-bit var, init to 0 in pwr_start_CV_charging() 5735 0x17749c8: 16-bit var, init to 0 in pwr_start_CV_charging()
5315 0x17749ca: 16-bit var, initial CV DAC value gets written here 5736 0x17749ca: 16-bit var, initial CV DAC value gets written here
5737 this var gets decremented as the DAC is adjusted down
5316 5738
5317 0x1774b78: 16-bit var, gets -4 written into it if the battery T 5739 0x1774b78: 16-bit var, gets -4 written into it if the battery T
5318 is too high, or -5 if it is too low 5740 is too high, or -5 if it is too low
5319 0x1774b7a: 16-bit var set to 0 when starting CI charging, 5741 0x1774b7a: 16-bit var set to 0 when starting CI charging,
5320 set to 1 when starting CV charging 5742 set to 1 when starting CV charging
5321 0x1774b7c: 16-bit var battery voltage in mV 5743 0x1774b7c: 16-bit var battery voltage in mV
5322 0x1774b7e: 16-bit var zeroed in pwr_stop_charging() 5744 0x1774b7e: 16-bit var zeroed in pwr_stop_charging()
5323 Ichg in mA gets written here in CI process 5745 Ichg in mA gets written here in CI and CV processes
5324 0x1774b80: 16-bit var zeroed in pwr_stop_charging() 5746 0x1774b80: 16-bit var zeroed in pwr_stop_charging()
5325 0x1774b82: 16-bit var gets i2v offset (raw ADC) written into it 5747 0x1774b82: 16-bit var gets i2v offset (raw ADC) written into it
5326 5748
5327 0x1774ccc: 16-bit var initial battery % is stored here 5749 0x1774ccc: 16-bit var initial battery % is stored here
5328 5750