ARM GAS  /tmp/ccJrCDWl.s 			page 1


   1              		.cpu cortex-m0
   2              		.arch armv6s-m
   3              		.fpu softvfp
   4              		.eabi_attribute 23, 1
   5              		.eabi_attribute 24, 1
   6              		.eabi_attribute 25, 1
   7              		.eabi_attribute 26, 1
   8              		.eabi_attribute 30, 2
   9              		.eabi_attribute 34, 0
  10              		.eabi_attribute 18, 4
  11              		.file	"modbus_rtu_slave.c"
  12              		.text
  13              	.Ltext0:
  14              		.cfi_sections	.debug_frame
  15              		.file 1 "Component/modbus/modbus_rtu_slave.c"
  16              		.section	.text.modbus_rtu_slave_init,"ax",%progbits
  17              		.align	1
  18              		.p2align 2,,3
  19              		.global	modbus_rtu_slave_init
  20              		.syntax unified
  21              		.code	16
  22              		.thumb_func
  24              	modbus_rtu_slave_init:
  25              	.LVL0:
  26              	.LFB5:
   1:Component/modbus/modbus_rtu_slave.c **** //
   2:Component/modbus/modbus_rtu_slave.c **** // Created by user on 2024/7/8.
   3:Component/modbus/modbus_rtu_slave.c **** //
   4:Component/modbus/modbus_rtu_slave.c **** #include <stdlib.h>
   5:Component/modbus/modbus_rtu_slave.c **** #include <string.h>
   6:Component/modbus/modbus_rtu_slave.c **** #include <stdbool.h>
   7:Component/modbus/modbus_rtu_slave.c **** #include "modbus_rtu_slave.h"
   8:Component/modbus/modbus_rtu_slave.c **** 
   9:Component/modbus/modbus_rtu_slave.c **** #define printf rt_kprintf
  10:Component/modbus/modbus_rtu_slave.c **** #define MODBUS_RTU_SLAVE_DEBUG false
  11:Component/modbus/modbus_rtu_slave.c **** 
  12:Component/modbus/modbus_rtu_slave.c **** #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  13:Component/modbus/modbus_rtu_slave.c **** #define BE16(a) __builtin_bswap16(a)
  14:Component/modbus/modbus_rtu_slave.c **** #define BE32(a) __builtin_bswap32(a)
  15:Component/modbus/modbus_rtu_slave.c **** #define BE64(a) __builtin_bswap64(a)
  16:Component/modbus/modbus_rtu_slave.c **** #define LE16(a) (a)
  17:Component/modbus/modbus_rtu_slave.c **** #define LE32(a) (a)
  18:Component/modbus/modbus_rtu_slave.c **** #define LE64(a) (a)
  19:Component/modbus/modbus_rtu_slave.c **** #else
  20:Component/modbus/modbus_rtu_slave.c **** #define BE16(a) (a)
  21:Component/modbus/modbus_rtu_slave.c **** #define BE32(a) (a)
  22:Component/modbus/modbus_rtu_slave.c **** #define BE64(a) (a)
  23:Component/modbus/modbus_rtu_slave.c **** #define LE16(a) __builtin_bswap16(a)
  24:Component/modbus/modbus_rtu_slave.c **** #define LE32(a) __builtin_bswap32(a)
  25:Component/modbus/modbus_rtu_slave.c **** #define LE64(a) __builtin_bswap64(a)
  26:Component/modbus/modbus_rtu_slave.c **** #endif
  27:Component/modbus/modbus_rtu_slave.c **** 
  28:Component/modbus/modbus_rtu_slave.c **** static void __modbus_rtu_slave_lock(modbus_rtu_slave_t self);
  29:Component/modbus/modbus_rtu_slave.c **** static void __modbus_rtu_slave_unlock(modbus_rtu_slave_t self);
  30:Component/modbus/modbus_rtu_slave.c **** static void __modbus_rtu_slave_on_send(modbus_rtu_slave_t self, const uint32_t len);
  31:Component/modbus/modbus_rtu_slave.c **** static void __modbus_rtu_slave_on_error(modbus_rtu_slave_t self, MODBUS_ERROR error);
  32:Component/modbus/modbus_rtu_slave.c **** static void __modbus_rtu_slave_analysis(modbus_rtu_slave_t self);
ARM GAS  /tmp/ccJrCDWl.s 			page 2


  33:Component/modbus/modbus_rtu_slave.c **** 
  34:Component/modbus/modbus_rtu_slave.c **** //==============================Private==============================//
  35:Component/modbus/modbus_rtu_slave.c **** 
  36:Component/modbus/modbus_rtu_slave.c **** /// @brief
  37:Component/modbus/modbus_rtu_slave.c **** /// @param self
  38:Component/modbus/modbus_rtu_slave.c **** static void __modbus_rtu_slave_lock(modbus_rtu_slave_t self)
  39:Component/modbus/modbus_rtu_slave.c **** {
  40:Component/modbus/modbus_rtu_slave.c **** }
  41:Component/modbus/modbus_rtu_slave.c **** 
  42:Component/modbus/modbus_rtu_slave.c **** /// @brief
  43:Component/modbus/modbus_rtu_slave.c **** /// @param self
  44:Component/modbus/modbus_rtu_slave.c **** static void __modbus_rtu_slave_unlock(modbus_rtu_slave_t self)
  45:Component/modbus/modbus_rtu_slave.c **** {
  46:Component/modbus/modbus_rtu_slave.c **** }
  47:Component/modbus/modbus_rtu_slave.c **** 
  48:Component/modbus/modbus_rtu_slave.c **** /// @brief
  49:Component/modbus/modbus_rtu_slave.c **** /// @param self
  50:Component/modbus/modbus_rtu_slave.c **** /// @param len
  51:Component/modbus/modbus_rtu_slave.c **** /// @return
  52:Component/modbus/modbus_rtu_slave.c **** static void __modbus_rtu_slave_on_send(modbus_rtu_slave_t self, const uint32_t len)
  53:Component/modbus/modbus_rtu_slave.c **** {
  54:Component/modbus/modbus_rtu_slave.c ****     if (self->on_send)
  55:Component/modbus/modbus_rtu_slave.c ****     {
  56:Component/modbus/modbus_rtu_slave.c ****         self->on_send(self->buffer.bytes, len);
  57:Component/modbus/modbus_rtu_slave.c ****     }
  58:Component/modbus/modbus_rtu_slave.c **** }
  59:Component/modbus/modbus_rtu_slave.c **** 
  60:Component/modbus/modbus_rtu_slave.c **** /// @brief
  61:Component/modbus/modbus_rtu_slave.c **** /// @param self
  62:Component/modbus/modbus_rtu_slave.c **** /// @param error
  63:Component/modbus/modbus_rtu_slave.c **** static void __modbus_rtu_slave_on_error(modbus_rtu_slave_t self, MODBUS_ERROR error)
  64:Component/modbus/modbus_rtu_slave.c **** {
  65:Component/modbus/modbus_rtu_slave.c **** #if MODBUS_RTU_SLAVE_DEBUG
  66:Component/modbus/modbus_rtu_slave.c ****     printf("Error:%d\r\n", error);
  67:Component/modbus/modbus_rtu_slave.c **** #endif
  68:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.comm |= 0x80;
  69:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.err = error;
  70:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.crc = BE16(modbus_crc(self->buffer.bytes, 3));
  71:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
  72:Component/modbus/modbus_rtu_slave.c **** }
  73:Component/modbus/modbus_rtu_slave.c **** 
  74:Component/modbus/modbus_rtu_slave.c **** /// @brief
  75:Component/modbus/modbus_rtu_slave.c **** /// @param self
  76:Component/modbus/modbus_rtu_slave.c **** /// @return
  77:Component/modbus/modbus_rtu_slave.c **** static void __modbus_rtu_slave_analysis(modbus_rtu_slave_t self)
  78:Component/modbus/modbus_rtu_slave.c **** {
  79:Component/modbus/modbus_rtu_slave.c ****     uint8_t len;
  80:Component/modbus/modbus_rtu_slave.c ****     uint8_t err;
  81:Component/modbus/modbus_rtu_slave.c ****     uint16_t crc;
  82:Component/modbus/modbus_rtu_slave.c ****     modbus_slave_t slave;
  83:Component/modbus/modbus_rtu_slave.c **** 
  84:Component/modbus/modbus_rtu_slave.c ****     crc = self->buffer.bytes[self->length - 1];
  85:Component/modbus/modbus_rtu_slave.c ****     crc |= (self->buffer.bytes[self->length - 2] << 8);
  86:Component/modbus/modbus_rtu_slave.c **** 
  87:Component/modbus/modbus_rtu_slave.c ****     if (crc == modbus_crc(&self->buffer.bytes, self->length - 2))
  88:Component/modbus/modbus_rtu_slave.c ****     {
  89:Component/modbus/modbus_rtu_slave.c ****         self->message.id = self->buffer.head.id;
ARM GAS  /tmp/ccJrCDWl.s 			page 3


  90:Component/modbus/modbus_rtu_slave.c ****     }
  91:Component/modbus/modbus_rtu_slave.c ****     else
  92:Component/modbus/modbus_rtu_slave.c ****     {
  93:Component/modbus/modbus_rtu_slave.c ****         return;
  94:Component/modbus/modbus_rtu_slave.c ****     }
  95:Component/modbus/modbus_rtu_slave.c **** 
  96:Component/modbus/modbus_rtu_slave.c ****     slave = modbus_slave_find_node(&self->slave, self->message.id);
  97:Component/modbus/modbus_rtu_slave.c ****     if (slave)
  98:Component/modbus/modbus_rtu_slave.c ****     {
  99:Component/modbus/modbus_rtu_slave.c ****         self->message.comm = self->buffer.head.comm;
 100:Component/modbus/modbus_rtu_slave.c ****         self->message.addr = BE16(self->buffer.head.addr);
 101:Component/modbus/modbus_rtu_slave.c ****     }
 102:Component/modbus/modbus_rtu_slave.c ****     else
 103:Component/modbus/modbus_rtu_slave.c ****     {
 104:Component/modbus/modbus_rtu_slave.c ****         return;
 105:Component/modbus/modbus_rtu_slave.c ****     }
 106:Component/modbus/modbus_rtu_slave.c **** 
 107:Component/modbus/modbus_rtu_slave.c ****     switch (self->message.comm)
 108:Component/modbus/modbus_rtu_slave.c ****     {
 109:Component/modbus/modbus_rtu_slave.c **** 
 110:Component/modbus/modbus_rtu_slave.c ****     case MODBUS_READ_COIL:
 111:Component/modbus/modbus_rtu_slave.c ****     case MODBUS_READ_INPUT_COIL:
 112:Component/modbus/modbus_rtu_slave.c ****         if (!self->message.id || !slave->on_read)
 113:Component/modbus/modbus_rtu_slave.c ****         {
 114:Component/modbus/modbus_rtu_slave.c ****             return;
 115:Component/modbus/modbus_rtu_slave.c ****         }
 116:Component/modbus/modbus_rtu_slave.c ****         len = BE16(self->buffer.read_req.len);
 117:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.cnt = len >> 3;
 118:Component/modbus/modbus_rtu_slave.c ****         if (len & 0x7)
 119:Component/modbus/modbus_rtu_slave.c ****         {
 120:Component/modbus/modbus_rtu_slave.c ****             self->buffer.read_coil_res.cnt++;
 121:Component/modbus/modbus_rtu_slave.c ****         }
 122:Component/modbus/modbus_rtu_slave.c ****         for (uint32_t index = 0; index < self->buffer.read_coil_res.cnt; index++)
 123:Component/modbus/modbus_rtu_slave.c ****         {
 124:Component/modbus/modbus_rtu_slave.c ****             self->buffer.read_coil_res.data[index] = 0;
 125:Component/modbus/modbus_rtu_slave.c ****             for (uint8_t loop = 0; loop < 8; loop++)
 126:Component/modbus/modbus_rtu_slave.c ****             {
 127:Component/modbus/modbus_rtu_slave.c ****                 if (len--)
 128:Component/modbus/modbus_rtu_slave.c ****                 {
 129:Component/modbus/modbus_rtu_slave.c ****                     err = slave->on_read((struct modbus_read *)&self->message);
 130:Component/modbus/modbus_rtu_slave.c ****                     if (err)
 131:Component/modbus/modbus_rtu_slave.c ****                     {
 132:Component/modbus/modbus_rtu_slave.c ****                         __modbus_rtu_slave_on_error(self, err);
 133:Component/modbus/modbus_rtu_slave.c ****                         return;
 134:Component/modbus/modbus_rtu_slave.c ****                     }
 135:Component/modbus/modbus_rtu_slave.c ****                     else
 136:Component/modbus/modbus_rtu_slave.c ****                     {
 137:Component/modbus/modbus_rtu_slave.c ****                         self->buffer.read_coil_res.data[index] |= ((bool)self->message.data << loop
 138:Component/modbus/modbus_rtu_slave.c ****                         self->message.addr++;
 139:Component/modbus/modbus_rtu_slave.c ****                     }
 140:Component/modbus/modbus_rtu_slave.c ****                 }
 141:Component/modbus/modbus_rtu_slave.c ****                 else
 142:Component/modbus/modbus_rtu_slave.c ****                 {
 143:Component/modbus/modbus_rtu_slave.c ****                     break;
 144:Component/modbus/modbus_rtu_slave.c ****                 }
 145:Component/modbus/modbus_rtu_slave.c ****             }
 146:Component/modbus/modbus_rtu_slave.c ****         }
ARM GAS  /tmp/ccJrCDWl.s 			page 4


 147:Component/modbus/modbus_rtu_slave.c ****         crc = modbus_crc(self->buffer.bytes, self->buffer.read_coil_res.cnt + 3);
 148:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.data[self->buffer.read_coil_res.cnt + 3] = crc >> 8;
 149:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.data[self->buffer.read_coil_res.cnt + 4] = crc & 0xFF;
 150:Component/modbus/modbus_rtu_slave.c ****         __modbus_rtu_slave_on_send(self, self->buffer.read_coil_res.cnt + 5);
 151:Component/modbus/modbus_rtu_slave.c ****         break;
 152:Component/modbus/modbus_rtu_slave.c **** 
 153:Component/modbus/modbus_rtu_slave.c ****     case MODBUS_READ_REGS:
 154:Component/modbus/modbus_rtu_slave.c ****     case MODBUS_READ_INPUT_REGS:
 155:Component/modbus/modbus_rtu_slave.c ****         if (!self->message.id || !slave->on_read)
 156:Component/modbus/modbus_rtu_slave.c ****         {
 157:Component/modbus/modbus_rtu_slave.c ****             return;
 158:Component/modbus/modbus_rtu_slave.c ****         }
 159:Component/modbus/modbus_rtu_slave.c ****         else if (len > 125)
 160:Component/modbus/modbus_rtu_slave.c ****         {
 161:Component/modbus/modbus_rtu_slave.c ****             return;
 162:Component/modbus/modbus_rtu_slave.c ****         }
 163:Component/modbus/modbus_rtu_slave.c ****         len = BE16(self->buffer.read_req.len);
 164:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_regs_res.cnt = len << 1;
 165:Component/modbus/modbus_rtu_slave.c ****         for (uint32_t index = 0; index < len; index++)
 166:Component/modbus/modbus_rtu_slave.c ****         {
 167:Component/modbus/modbus_rtu_slave.c ****             err = slave->on_read((struct modbus_read *)&self->message);
 168:Component/modbus/modbus_rtu_slave.c ****             if (err)
 169:Component/modbus/modbus_rtu_slave.c ****             {
 170:Component/modbus/modbus_rtu_slave.c ****                 __modbus_rtu_slave_on_error(self, err);
 171:Component/modbus/modbus_rtu_slave.c ****                 return;
 172:Component/modbus/modbus_rtu_slave.c ****             }
 173:Component/modbus/modbus_rtu_slave.c ****             else
 174:Component/modbus/modbus_rtu_slave.c ****             {
 175:Component/modbus/modbus_rtu_slave.c ****                 self->buffer.read_regs_res.data[index] = BE16(self->message.data);
 176:Component/modbus/modbus_rtu_slave.c ****                 self->message.addr++;
 177:Component/modbus/modbus_rtu_slave.c ****             }
 178:Component/modbus/modbus_rtu_slave.c ****         }
 179:Component/modbus/modbus_rtu_slave.c ****         crc = modbus_crc(self->buffer.bytes, self->buffer.read_regs_res.cnt + 3);
 180:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_regs_res.data[len] = BE16(crc);
 181:Component/modbus/modbus_rtu_slave.c ****         __modbus_rtu_slave_on_send(self, self->buffer.read_regs_res.cnt + 5);
 182:Component/modbus/modbus_rtu_slave.c ****         break;
 183:Component/modbus/modbus_rtu_slave.c **** 
 184:Component/modbus/modbus_rtu_slave.c ****     case MODBUS_WRITE_SINGLE_COIL:
 185:Component/modbus/modbus_rtu_slave.c ****         if (!slave->on_write)
 186:Component/modbus/modbus_rtu_slave.c ****         {
 187:Component/modbus/modbus_rtu_slave.c ****             return;
 188:Component/modbus/modbus_rtu_slave.c ****         }
 189:Component/modbus/modbus_rtu_slave.c ****         self->message.data = BE16(self->buffer.write_sin_req.data) & 0x01;
 190:Component/modbus/modbus_rtu_slave.c ****         err = slave->on_write((struct modbus_write *)&self->message);
 191:Component/modbus/modbus_rtu_slave.c ****         if (self->message.id)
 192:Component/modbus/modbus_rtu_slave.c ****         {
 193:Component/modbus/modbus_rtu_slave.c ****             if (err)
 194:Component/modbus/modbus_rtu_slave.c ****             {
 195:Component/modbus/modbus_rtu_slave.c ****                 __modbus_rtu_slave_on_error(self, err);
 196:Component/modbus/modbus_rtu_slave.c ****                 return;
 197:Component/modbus/modbus_rtu_slave.c ****             }
 198:Component/modbus/modbus_rtu_slave.c ****             else
 199:Component/modbus/modbus_rtu_slave.c ****             {
 200:Component/modbus/modbus_rtu_slave.c ****                 __modbus_rtu_slave_on_send(self, sizeof(self->buffer.write_sin_req));
 201:Component/modbus/modbus_rtu_slave.c ****             }
 202:Component/modbus/modbus_rtu_slave.c ****         }
 203:Component/modbus/modbus_rtu_slave.c ****         break;
ARM GAS  /tmp/ccJrCDWl.s 			page 5


 204:Component/modbus/modbus_rtu_slave.c **** 
 205:Component/modbus/modbus_rtu_slave.c ****     case MODBUS_WRITE_MUL_COILS:
 206:Component/modbus/modbus_rtu_slave.c ****         if (!slave->on_write)
 207:Component/modbus/modbus_rtu_slave.c ****         {
 208:Component/modbus/modbus_rtu_slave.c ****             return;
 209:Component/modbus/modbus_rtu_slave.c ****         }
 210:Component/modbus/modbus_rtu_slave.c ****         len = BE16(self->buffer.write_mul_coil_req.len);
 211:Component/modbus/modbus_rtu_slave.c ****         if (self->buffer.write_mul_coil_req.cnt < (len >> 3))
 212:Component/modbus/modbus_rtu_slave.c ****         {
 213:Component/modbus/modbus_rtu_slave.c ****             return;
 214:Component/modbus/modbus_rtu_slave.c ****         }
 215:Component/modbus/modbus_rtu_slave.c ****         for (uint32_t index = 0; index < self->buffer.write_mul_coil_req.cnt; index++)
 216:Component/modbus/modbus_rtu_slave.c ****         {
 217:Component/modbus/modbus_rtu_slave.c ****             for (uint8_t loop = 0; loop < 8; loop++)
 218:Component/modbus/modbus_rtu_slave.c ****             {
 219:Component/modbus/modbus_rtu_slave.c ****                 if (len--)
 220:Component/modbus/modbus_rtu_slave.c ****                 {
 221:Component/modbus/modbus_rtu_slave.c ****                     self->message.data = (bool)(self->buffer.write_mul_coil_req.data[index] & (1 <<
 222:Component/modbus/modbus_rtu_slave.c ****                     err = slave->on_write((struct modbus_write *)&self->message);
 223:Component/modbus/modbus_rtu_slave.c ****                     if (self->message.id && err)
 224:Component/modbus/modbus_rtu_slave.c ****                     {
 225:Component/modbus/modbus_rtu_slave.c ****                         __modbus_rtu_slave_on_error(self, err);
 226:Component/modbus/modbus_rtu_slave.c ****                         return;
 227:Component/modbus/modbus_rtu_slave.c ****                     }
 228:Component/modbus/modbus_rtu_slave.c ****                     self->message.addr++;
 229:Component/modbus/modbus_rtu_slave.c ****                 }
 230:Component/modbus/modbus_rtu_slave.c ****                 else
 231:Component/modbus/modbus_rtu_slave.c ****                 {
 232:Component/modbus/modbus_rtu_slave.c ****                     break;
 233:Component/modbus/modbus_rtu_slave.c ****                 }
 234:Component/modbus/modbus_rtu_slave.c ****             }
 235:Component/modbus/modbus_rtu_slave.c ****         }
 236:Component/modbus/modbus_rtu_slave.c ****         if (self->message.id)
 237:Component/modbus/modbus_rtu_slave.c ****         {
 238:Component/modbus/modbus_rtu_slave.c ****             self->buffer.write_mul_res.crc = BE16(modbus_crc(self->buffer.bytes, 6));
 239:Component/modbus/modbus_rtu_slave.c ****             __modbus_rtu_slave_on_send(self, sizeof(self->buffer.write_mul_res));
 240:Component/modbus/modbus_rtu_slave.c ****         }
 241:Component/modbus/modbus_rtu_slave.c ****         break;
 242:Component/modbus/modbus_rtu_slave.c **** 
 243:Component/modbus/modbus_rtu_slave.c ****     case MODBUS_WRITE_SINGLE_REG:
 244:Component/modbus/modbus_rtu_slave.c ****         if (!slave->on_write)
 245:Component/modbus/modbus_rtu_slave.c ****         {
 246:Component/modbus/modbus_rtu_slave.c ****             return;
 247:Component/modbus/modbus_rtu_slave.c ****         }
 248:Component/modbus/modbus_rtu_slave.c ****         self->message.data = BE16(self->buffer.write_sin_req.data);
 249:Component/modbus/modbus_rtu_slave.c ****         err = slave->on_write((struct modbus_write *)&self->message);
 250:Component/modbus/modbus_rtu_slave.c ****         if (self->message.id)
 251:Component/modbus/modbus_rtu_slave.c ****         {
 252:Component/modbus/modbus_rtu_slave.c ****             if (err)
 253:Component/modbus/modbus_rtu_slave.c ****             {
 254:Component/modbus/modbus_rtu_slave.c ****                 __modbus_rtu_slave_on_error(self, err);
 255:Component/modbus/modbus_rtu_slave.c ****                 return;
 256:Component/modbus/modbus_rtu_slave.c ****             }
 257:Component/modbus/modbus_rtu_slave.c ****             else
 258:Component/modbus/modbus_rtu_slave.c ****             {
 259:Component/modbus/modbus_rtu_slave.c ****                 __modbus_rtu_slave_on_send(self, sizeof(self->buffer.write_sin_res));
 260:Component/modbus/modbus_rtu_slave.c ****             }
ARM GAS  /tmp/ccJrCDWl.s 			page 6


 261:Component/modbus/modbus_rtu_slave.c ****         }
 262:Component/modbus/modbus_rtu_slave.c **** 
 263:Component/modbus/modbus_rtu_slave.c ****         break;
 264:Component/modbus/modbus_rtu_slave.c **** 
 265:Component/modbus/modbus_rtu_slave.c ****     case MODBUS_WRITE_MUL_REGS:
 266:Component/modbus/modbus_rtu_slave.c ****         if (!slave->on_write)
 267:Component/modbus/modbus_rtu_slave.c ****         {
 268:Component/modbus/modbus_rtu_slave.c ****             return;
 269:Component/modbus/modbus_rtu_slave.c ****         }
 270:Component/modbus/modbus_rtu_slave.c ****         len = BE16(self->buffer.write_mul_regs_req.len);
 271:Component/modbus/modbus_rtu_slave.c ****         if (self->buffer.write_mul_regs_req.cnt < (len << 1))
 272:Component/modbus/modbus_rtu_slave.c ****         {
 273:Component/modbus/modbus_rtu_slave.c ****             return;
 274:Component/modbus/modbus_rtu_slave.c ****         }
 275:Component/modbus/modbus_rtu_slave.c ****         for (uint32_t index = 0; index < len; index++)
 276:Component/modbus/modbus_rtu_slave.c ****         {
 277:Component/modbus/modbus_rtu_slave.c ****             self->message.data = BE16(self->buffer.write_mul_regs_req.data[index]);
 278:Component/modbus/modbus_rtu_slave.c ****             err = slave->on_write((struct modbus_write *)&self->message);
 279:Component/modbus/modbus_rtu_slave.c ****             if (self->message.id && err)
 280:Component/modbus/modbus_rtu_slave.c ****             {
 281:Component/modbus/modbus_rtu_slave.c ****                 __modbus_rtu_slave_on_error(self, err);
 282:Component/modbus/modbus_rtu_slave.c ****                 return;
 283:Component/modbus/modbus_rtu_slave.c ****             }
 284:Component/modbus/modbus_rtu_slave.c ****             self->message.addr++;
 285:Component/modbus/modbus_rtu_slave.c ****         }
 286:Component/modbus/modbus_rtu_slave.c ****         if (self->message.id)
 287:Component/modbus/modbus_rtu_slave.c ****         {
 288:Component/modbus/modbus_rtu_slave.c ****             self->buffer.write_mul_res.crc = BE16(modbus_crc(self->buffer.bytes, 6));
 289:Component/modbus/modbus_rtu_slave.c ****             __modbus_rtu_slave_on_send(self, sizeof(self->buffer.write_mul_res));
 290:Component/modbus/modbus_rtu_slave.c ****         }
 291:Component/modbus/modbus_rtu_slave.c ****         break;
 292:Component/modbus/modbus_rtu_slave.c **** 
 293:Component/modbus/modbus_rtu_slave.c ****     default:
 294:Component/modbus/modbus_rtu_slave.c ****         break;
 295:Component/modbus/modbus_rtu_slave.c ****     }
 296:Component/modbus/modbus_rtu_slave.c **** }
 297:Component/modbus/modbus_rtu_slave.c **** 
 298:Component/modbus/modbus_rtu_slave.c **** //==============================Public===============================//
 299:Component/modbus/modbus_rtu_slave.c **** 
 300:Component/modbus/modbus_rtu_slave.c **** /// @brief
 301:Component/modbus/modbus_rtu_slave.c **** /// @param self
 302:Component/modbus/modbus_rtu_slave.c **** /// @param interval
 303:Component/modbus/modbus_rtu_slave.c **** /// @param MODBUS_HOOK_FUNC
 304:Component/modbus/modbus_rtu_slave.c **** /// @return
 305:Component/modbus/modbus_rtu_slave.c **** int modbus_rtu_slave_init(modbus_rtu_slave_t self, const uint32_t interval, MODBUS_READ_HOOK_FUNC(o
 306:Component/modbus/modbus_rtu_slave.c **** {
  27              		.loc 1 306 1 view -0
  28              		.cfi_startproc
  29              		@ args = 0, pretend = 0, frame = 0
  30              		@ frame_needed = 0, uses_anonymous_args = 0
 307:Component/modbus/modbus_rtu_slave.c ****     if (!self)
  31              		.loc 1 307 5 view .LVU1
 306:Component/modbus/modbus_rtu_slave.c ****     if (!self)
  32              		.loc 1 306 1 is_stmt 0 view .LVU2
  33 0000 F8B5     		push	{r3, r4, r5, r6, r7, lr}
  34              	.LCFI0:
  35              		.cfi_def_cfa_offset 24
ARM GAS  /tmp/ccJrCDWl.s 			page 7


  36              		.cfi_offset 3, -24
  37              		.cfi_offset 4, -20
  38              		.cfi_offset 5, -16
  39              		.cfi_offset 6, -12
  40              		.cfi_offset 7, -8
  41              		.cfi_offset 14, -4
 306:Component/modbus/modbus_rtu_slave.c ****     if (!self)
  42              		.loc 1 306 1 view .LVU3
  43 0002 0400     		movs	r4, r0
  44 0004 0F00     		movs	r7, r1
  45 0006 1500     		movs	r5, r2
  46 0008 1E00     		movs	r6, r3
  47              		.loc 1 307 8 view .LVU4
  48 000a 0028     		cmp	r0, #0
  49 000c 0DD0     		beq	.L3
 308:Component/modbus/modbus_rtu_slave.c ****     {
 309:Component/modbus/modbus_rtu_slave.c ****         return -MODBUS_ERROR_NULL_POINTER;
 310:Component/modbus/modbus_rtu_slave.c ****     }
 311:Component/modbus/modbus_rtu_slave.c ****     memset(self, 0, sizeof(*self));
  50              		.loc 1 311 5 is_stmt 1 view .LVU5
  51 000e 9A22     		movs	r2, #154
  52              	.LVL1:
  53              		.loc 1 311 5 is_stmt 0 view .LVU6
  54 0010 0021     		movs	r1, #0
  55              	.LVL2:
  56              		.loc 1 311 5 view .LVU7
  57 0012 5200     		lsls	r2, r2, #1
  58 0014 FFF7FEFF 		bl	memset
  59              	.LVL3:
 312:Component/modbus/modbus_rtu_slave.c ****     self->interval = 0;
  60              		.loc 1 312 5 is_stmt 1 view .LVU8
 313:Component/modbus/modbus_rtu_slave.c ****     self->reset_interval = interval;
  61              		.loc 1 313 5 view .LVU9
 314:Component/modbus/modbus_rtu_slave.c ****     modbus_slave_root_init(&self->slave, on_read, on_write);
  62              		.loc 1 314 5 is_stmt 0 view .LVU10
  63 0018 2000     		movs	r0, r4
  64 001a 3200     		movs	r2, r6
  65 001c 2900     		movs	r1, r5
 313:Component/modbus/modbus_rtu_slave.c ****     self->reset_interval = interval;
  66              		.loc 1 313 26 view .LVU11
  67 001e E760     		str	r7, [r4, #12]
  68              		.loc 1 314 5 is_stmt 1 view .LVU12
  69 0020 1C30     		adds	r0, r0, #28
  70 0022 FFF7FEFF 		bl	modbus_slave_root_init
  71              	.LVL4:
 315:Component/modbus/modbus_rtu_slave.c ****     return -MODBUS_ERROR_NO_ERROR;
  72              		.loc 1 315 5 view .LVU13
  73              		.loc 1 315 12 is_stmt 0 view .LVU14
  74 0026 0020     		movs	r0, #0
  75              	.L1:
 316:Component/modbus/modbus_rtu_slave.c **** }
  76              		.loc 1 316 1 view .LVU15
  77              		@ sp needed
  78              	.LVL5:
  79              	.LVL6:
  80              	.LVL7:
  81              	.LVL8:
ARM GAS  /tmp/ccJrCDWl.s 			page 8


  82              		.loc 1 316 1 view .LVU16
  83 0028 F8BD     		pop	{r3, r4, r5, r6, r7, pc}
  84              	.LVL9:
  85              	.L3:
 309:Component/modbus/modbus_rtu_slave.c ****     }
  86              		.loc 1 309 16 view .LVU17
  87 002a 0520     		movs	r0, #5
  88              	.LVL10:
 309:Component/modbus/modbus_rtu_slave.c ****     }
  89              		.loc 1 309 16 view .LVU18
  90 002c 4042     		rsbs	r0, r0, #0
  91 002e FBE7     		b	.L1
  92              		.cfi_endproc
  93              	.LFE5:
  95              		.section	.text.modbus_rtu_slave_create,"ax",%progbits
  96              		.align	1
  97              		.p2align 2,,3
  98              		.global	modbus_rtu_slave_create
  99              		.syntax unified
 100              		.code	16
 101              		.thumb_func
 103              	modbus_rtu_slave_create:
 104              	.LVL11:
 105              	.LFB6:
 317:Component/modbus/modbus_rtu_slave.c **** 
 318:Component/modbus/modbus_rtu_slave.c **** /// @brief
 319:Component/modbus/modbus_rtu_slave.c **** /// @param interval
 320:Component/modbus/modbus_rtu_slave.c **** /// @param MODBUS_HOOK_FUNC
 321:Component/modbus/modbus_rtu_slave.c **** /// @return
 322:Component/modbus/modbus_rtu_slave.c **** modbus_rtu_slave_t modbus_rtu_slave_create(const uint32_t interval, MODBUS_READ_HOOK_FUNC(on_read),
 323:Component/modbus/modbus_rtu_slave.c **** {
 106              		.loc 1 323 1 is_stmt 1 view -0
 107              		.cfi_startproc
 108              		@ args = 0, pretend = 0, frame = 0
 109              		@ frame_needed = 0, uses_anonymous_args = 0
 324:Component/modbus/modbus_rtu_slave.c ****     const modbus_rtu_slave_t self = (modbus_rtu_slave_t)malloc(sizeof(struct modbus_rtu_slave));
 110              		.loc 1 324 5 view .LVU20
 323:Component/modbus/modbus_rtu_slave.c ****     const modbus_rtu_slave_t self = (modbus_rtu_slave_t)malloc(sizeof(struct modbus_rtu_slave));
 111              		.loc 1 323 1 is_stmt 0 view .LVU21
 112 0000 F8B5     		push	{r3, r4, r5, r6, r7, lr}
 113              	.LCFI1:
 114              		.cfi_def_cfa_offset 24
 115              		.cfi_offset 3, -24
 116              		.cfi_offset 4, -20
 117              		.cfi_offset 5, -16
 118              		.cfi_offset 6, -12
 119              		.cfi_offset 7, -8
 120              		.cfi_offset 14, -4
 323:Component/modbus/modbus_rtu_slave.c ****     const modbus_rtu_slave_t self = (modbus_rtu_slave_t)malloc(sizeof(struct modbus_rtu_slave));
 121              		.loc 1 323 1 view .LVU22
 122 0002 0700     		movs	r7, r0
 123              		.loc 1 324 57 view .LVU23
 124 0004 9A20     		movs	r0, #154
 125              	.LVL12:
 323:Component/modbus/modbus_rtu_slave.c ****     const modbus_rtu_slave_t self = (modbus_rtu_slave_t)malloc(sizeof(struct modbus_rtu_slave));
 126              		.loc 1 323 1 view .LVU24
 127 0006 0D00     		movs	r5, r1
ARM GAS  /tmp/ccJrCDWl.s 			page 9


 128              		.loc 1 324 57 view .LVU25
 129 0008 4000     		lsls	r0, r0, #1
 130 000a 0121     		movs	r1, #1
 131              	.LVL13:
 323:Component/modbus/modbus_rtu_slave.c ****     const modbus_rtu_slave_t self = (modbus_rtu_slave_t)malloc(sizeof(struct modbus_rtu_slave));
 132              		.loc 1 323 1 view .LVU26
 133 000c 1600     		movs	r6, r2
 134              		.loc 1 324 57 view .LVU27
 135 000e FFF7FEFF 		bl	calloc
 136              	.LVL14:
 137              		.loc 1 324 57 view .LVU28
 138 0012 041E     		subs	r4, r0, #0
 139              	.LVL15:
 325:Component/modbus/modbus_rtu_slave.c ****     if (self)
 140              		.loc 1 325 5 is_stmt 1 view .LVU29
 141              		.loc 1 325 8 is_stmt 0 view .LVU30
 142 0014 05D0     		beq	.L5
 326:Component/modbus/modbus_rtu_slave.c ****     {
 327:Component/modbus/modbus_rtu_slave.c ****         if (modbus_rtu_slave_init(self, interval, on_read, on_write))
 143              		.loc 1 327 9 is_stmt 1 view .LVU31
 144              	.LVL16:
 145              	.LBB38:
 146              	.LBI38:
 305:Component/modbus/modbus_rtu_slave.c **** {
 147              		.loc 1 305 5 view .LVU32
 148              	.LBB39:
 307:Component/modbus/modbus_rtu_slave.c ****     {
 149              		.loc 1 307 5 view .LVU33
 311:Component/modbus/modbus_rtu_slave.c ****     self->interval = 0;
 150              		.loc 1 311 5 view .LVU34
 312:Component/modbus/modbus_rtu_slave.c ****     self->reset_interval = interval;
 151              		.loc 1 312 5 view .LVU35
 313:Component/modbus/modbus_rtu_slave.c ****     modbus_slave_root_init(&self->slave, on_read, on_write);
 152              		.loc 1 313 5 view .LVU36
 313:Component/modbus/modbus_rtu_slave.c ****     modbus_slave_root_init(&self->slave, on_read, on_write);
 153              		.loc 1 313 26 is_stmt 0 view .LVU37
 154 0016 C760     		str	r7, [r0, #12]
 314:Component/modbus/modbus_rtu_slave.c ****     return -MODBUS_ERROR_NO_ERROR;
 155              		.loc 1 314 5 is_stmt 1 view .LVU38
 156 0018 3200     		movs	r2, r6
 157 001a 2900     		movs	r1, r5
 158 001c 1C30     		adds	r0, r0, #28
 159              	.LVL17:
 314:Component/modbus/modbus_rtu_slave.c ****     return -MODBUS_ERROR_NO_ERROR;
 160              		.loc 1 314 5 is_stmt 0 view .LVU39
 161 001e FFF7FEFF 		bl	modbus_slave_root_init
 162              	.LVL18:
 315:Component/modbus/modbus_rtu_slave.c **** }
 163              		.loc 1 315 5 is_stmt 1 view .LVU40
 315:Component/modbus/modbus_rtu_slave.c **** }
 164              		.loc 1 315 5 is_stmt 0 view .LVU41
 165              	.LBE39:
 166              	.LBE38:
 328:Component/modbus/modbus_rtu_slave.c ****         {
 329:Component/modbus/modbus_rtu_slave.c ****             free(self);
 330:Component/modbus/modbus_rtu_slave.c ****         }
 331:Component/modbus/modbus_rtu_slave.c ****     }
ARM GAS  /tmp/ccJrCDWl.s 			page 10


 332:Component/modbus/modbus_rtu_slave.c ****     return self;
 167              		.loc 1 332 5 is_stmt 1 view .LVU42
 168              	.L5:
 333:Component/modbus/modbus_rtu_slave.c **** }
 169              		.loc 1 333 1 is_stmt 0 view .LVU43
 170              		@ sp needed
 171 0022 2000     		movs	r0, r4
 172              	.LVL19:
 173              	.LVL20:
 174              	.LVL21:
 175              	.LVL22:
 176              		.loc 1 333 1 view .LVU44
 177 0024 F8BD     		pop	{r3, r4, r5, r6, r7, pc}
 178              		.cfi_endproc
 179              	.LFE6:
 181 0026 C046     		.section	.text.modbus_rtu_slave_stop,"ax",%progbits
 182              		.align	1
 183              		.p2align 2,,3
 184              		.global	modbus_rtu_slave_stop
 185              		.syntax unified
 186              		.code	16
 187              		.thumb_func
 189              	modbus_rtu_slave_stop:
 190              	.LVL23:
 191              	.LFB7:
 334:Component/modbus/modbus_rtu_slave.c **** 
 335:Component/modbus/modbus_rtu_slave.c **** /// @brief
 336:Component/modbus/modbus_rtu_slave.c **** /// @param self
 337:Component/modbus/modbus_rtu_slave.c **** /// @return
 338:Component/modbus/modbus_rtu_slave.c **** int modbus_rtu_slave_stop(modbus_rtu_slave_t self)
 339:Component/modbus/modbus_rtu_slave.c **** {
 192              		.loc 1 339 1 is_stmt 1 view -0
 193              		.cfi_startproc
 194              		@ args = 0, pretend = 0, frame = 0
 195              		@ frame_needed = 0, uses_anonymous_args = 0
 340:Component/modbus/modbus_rtu_slave.c ****     return modbus_rtu_slave_init(self, 0, NULL, NULL);
 196              		.loc 1 340 5 view .LVU46
 197              	.LBB42:
 198              	.LBI42:
 305:Component/modbus/modbus_rtu_slave.c **** {
 199              		.loc 1 305 5 view .LVU47
 200              	.LBB43:
 307:Component/modbus/modbus_rtu_slave.c ****     {
 201              		.loc 1 307 5 view .LVU48
 202              	.LBE43:
 203              	.LBE42:
 339:Component/modbus/modbus_rtu_slave.c ****     return modbus_rtu_slave_init(self, 0, NULL, NULL);
 204              		.loc 1 339 1 is_stmt 0 view .LVU49
 205 0000 10B5     		push	{r4, lr}
 206              	.LCFI2:
 207              		.cfi_def_cfa_offset 8
 208              		.cfi_offset 4, -8
 209              		.cfi_offset 14, -4
 339:Component/modbus/modbus_rtu_slave.c ****     return modbus_rtu_slave_init(self, 0, NULL, NULL);
 210              		.loc 1 339 1 view .LVU50
 211 0002 041E     		subs	r4, r0, #0
 212              	.LBB46:
ARM GAS  /tmp/ccJrCDWl.s 			page 11


 213              	.LBB44:
 307:Component/modbus/modbus_rtu_slave.c ****     {
 214              		.loc 1 307 8 view .LVU51
 215 0004 0CD0     		beq	.L12
 311:Component/modbus/modbus_rtu_slave.c ****     self->interval = 0;
 216              		.loc 1 311 5 is_stmt 1 view .LVU52
 217 0006 9A22     		movs	r2, #154
 218 0008 0021     		movs	r1, #0
 219 000a 5200     		lsls	r2, r2, #1
 220 000c FFF7FEFF 		bl	memset
 221              	.LVL24:
 312:Component/modbus/modbus_rtu_slave.c ****     self->reset_interval = interval;
 222              		.loc 1 312 5 view .LVU53
 313:Component/modbus/modbus_rtu_slave.c ****     modbus_slave_root_init(&self->slave, on_read, on_write);
 223              		.loc 1 313 5 view .LVU54
 314:Component/modbus/modbus_rtu_slave.c ****     return -MODBUS_ERROR_NO_ERROR;
 224              		.loc 1 314 5 view .LVU55
 225 0010 2000     		movs	r0, r4
 226 0012 0022     		movs	r2, #0
 227 0014 0021     		movs	r1, #0
 228 0016 1C30     		adds	r0, r0, #28
 229 0018 FFF7FEFF 		bl	modbus_slave_root_init
 230              	.LVL25:
 315:Component/modbus/modbus_rtu_slave.c **** }
 231              		.loc 1 315 5 view .LVU56
 315:Component/modbus/modbus_rtu_slave.c **** }
 232              		.loc 1 315 12 is_stmt 0 view .LVU57
 233 001c 0020     		movs	r0, #0
 234              	.LVL26:
 235              	.L10:
 315:Component/modbus/modbus_rtu_slave.c **** }
 236              		.loc 1 315 12 view .LVU58
 237              	.LBE44:
 238              	.LBE46:
 341:Component/modbus/modbus_rtu_slave.c **** }
 239              		.loc 1 341 1 view .LVU59
 240              		@ sp needed
 241              	.LVL27:
 242              		.loc 1 341 1 view .LVU60
 243 001e 10BD     		pop	{r4, pc}
 244              	.LVL28:
 245              	.L12:
 246              	.LBB47:
 247              	.LBB45:
 309:Component/modbus/modbus_rtu_slave.c ****     }
 248              		.loc 1 309 16 view .LVU61
 249 0020 0520     		movs	r0, #5
 250              	.LVL29:
 309:Component/modbus/modbus_rtu_slave.c ****     }
 251              		.loc 1 309 16 view .LVU62
 252 0022 4042     		rsbs	r0, r0, #0
 253              	.LVL30:
 309:Component/modbus/modbus_rtu_slave.c ****     }
 254              		.loc 1 309 16 view .LVU63
 255              	.LBE45:
 256              	.LBE47:
 340:Component/modbus/modbus_rtu_slave.c **** }
ARM GAS  /tmp/ccJrCDWl.s 			page 12


 257              		.loc 1 340 12 view .LVU64
 258 0024 FBE7     		b	.L10
 259              		.cfi_endproc
 260              	.LFE7:
 262 0026 C046     		.section	.text.modbus_rtu_slave_delete,"ax",%progbits
 263              		.align	1
 264              		.p2align 2,,3
 265              		.global	modbus_rtu_slave_delete
 266              		.syntax unified
 267              		.code	16
 268              		.thumb_func
 270              	modbus_rtu_slave_delete:
 271              	.LVL31:
 272              	.LFB8:
 342:Component/modbus/modbus_rtu_slave.c **** 
 343:Component/modbus/modbus_rtu_slave.c **** /// @brief
 344:Component/modbus/modbus_rtu_slave.c **** /// @param self
 345:Component/modbus/modbus_rtu_slave.c **** /// @return
 346:Component/modbus/modbus_rtu_slave.c **** int modbus_rtu_slave_delete(modbus_rtu_slave_t *self)
 347:Component/modbus/modbus_rtu_slave.c **** {
 273              		.loc 1 347 1 is_stmt 1 view -0
 274              		.cfi_startproc
 275              		@ args = 0, pretend = 0, frame = 0
 276              		@ frame_needed = 0, uses_anonymous_args = 0
 348:Component/modbus/modbus_rtu_slave.c ****     if (!(self && *self))
 277              		.loc 1 348 5 view .LVU66
 347:Component/modbus/modbus_rtu_slave.c ****     if (!(self && *self))
 278              		.loc 1 347 1 is_stmt 0 view .LVU67
 279 0000 70B5     		push	{r4, r5, r6, lr}
 280              	.LCFI3:
 281              		.cfi_def_cfa_offset 16
 282              		.cfi_offset 4, -16
 283              		.cfi_offset 5, -12
 284              		.cfi_offset 6, -8
 285              		.cfi_offset 14, -4
 347:Component/modbus/modbus_rtu_slave.c ****     if (!(self && *self))
 286              		.loc 1 347 1 view .LVU68
 287 0002 041E     		subs	r4, r0, #0
 288              		.loc 1 348 8 view .LVU69
 289 0004 15D0     		beq	.L16
 290              		.loc 1 348 19 discriminator 1 view .LVU70
 291 0006 0568     		ldr	r5, [r0]
 292              		.loc 1 348 9 discriminator 1 view .LVU71
 293 0008 002D     		cmp	r5, #0
 294 000a 12D0     		beq	.L16
 349:Component/modbus/modbus_rtu_slave.c ****     {
 350:Component/modbus/modbus_rtu_slave.c ****         return -MODBUS_ERROR_NULL_POINTER;
 351:Component/modbus/modbus_rtu_slave.c ****     }
 352:Component/modbus/modbus_rtu_slave.c ****     modbus_rtu_slave_stop(*self);
 295              		.loc 1 352 5 is_stmt 1 view .LVU72
 296              	.LVL32:
 297              	.LBB52:
 298              	.LBI52:
 338:Component/modbus/modbus_rtu_slave.c **** {
 299              		.loc 1 338 5 view .LVU73
 340:Component/modbus/modbus_rtu_slave.c **** }
 300              		.loc 1 340 5 view .LVU74
ARM GAS  /tmp/ccJrCDWl.s 			page 13


 301              	.LBB53:
 302              	.LBI53:
 305:Component/modbus/modbus_rtu_slave.c **** {
 303              		.loc 1 305 5 view .LVU75
 304              	.LBB54:
 307:Component/modbus/modbus_rtu_slave.c ****     {
 305              		.loc 1 307 5 view .LVU76
 311:Component/modbus/modbus_rtu_slave.c ****     self->interval = 0;
 306              		.loc 1 311 5 view .LVU77
 307 000c 9A22     		movs	r2, #154
 308 000e 0021     		movs	r1, #0
 309 0010 5200     		lsls	r2, r2, #1
 310 0012 2800     		movs	r0, r5
 311              	.LVL33:
 311:Component/modbus/modbus_rtu_slave.c ****     self->interval = 0;
 312              		.loc 1 311 5 is_stmt 0 view .LVU78
 313 0014 FFF7FEFF 		bl	memset
 314              	.LVL34:
 312:Component/modbus/modbus_rtu_slave.c ****     self->reset_interval = interval;
 315              		.loc 1 312 5 is_stmt 1 view .LVU79
 313:Component/modbus/modbus_rtu_slave.c ****     modbus_slave_root_init(&self->slave, on_read, on_write);
 316              		.loc 1 313 5 view .LVU80
 314:Component/modbus/modbus_rtu_slave.c ****     return -MODBUS_ERROR_NO_ERROR;
 317              		.loc 1 314 5 view .LVU81
 318 0018 2800     		movs	r0, r5
 319 001a 0022     		movs	r2, #0
 320 001c 0021     		movs	r1, #0
 321 001e 1C30     		adds	r0, r0, #28
 322 0020 FFF7FEFF 		bl	modbus_slave_root_init
 323              	.LVL35:
 315:Component/modbus/modbus_rtu_slave.c **** }
 324              		.loc 1 315 5 view .LVU82
 315:Component/modbus/modbus_rtu_slave.c **** }
 325              		.loc 1 315 5 is_stmt 0 view .LVU83
 326              	.LBE54:
 327              	.LBE53:
 328              	.LBE52:
 353:Component/modbus/modbus_rtu_slave.c ****     free(*self);
 329              		.loc 1 353 5 is_stmt 1 view .LVU84
 330 0024 2068     		ldr	r0, [r4]
 331 0026 FFF7FEFF 		bl	free
 332              	.LVL36:
 354:Component/modbus/modbus_rtu_slave.c ****     *self = NULL;
 333              		.loc 1 354 5 view .LVU85
 334              		.loc 1 354 11 is_stmt 0 view .LVU86
 335 002a 0023     		movs	r3, #0
 355:Component/modbus/modbus_rtu_slave.c ****     return -MODBUS_ERROR_NO_ERROR;
 336              		.loc 1 355 12 view .LVU87
 337 002c 0020     		movs	r0, #0
 354:Component/modbus/modbus_rtu_slave.c ****     *self = NULL;
 338              		.loc 1 354 11 view .LVU88
 339 002e 2360     		str	r3, [r4]
 340              		.loc 1 355 5 is_stmt 1 view .LVU89
 341              	.L13:
 356:Component/modbus/modbus_rtu_slave.c **** }
 342              		.loc 1 356 1 is_stmt 0 view .LVU90
 343              		@ sp needed
ARM GAS  /tmp/ccJrCDWl.s 			page 14


 344              	.LVL37:
 345              		.loc 1 356 1 view .LVU91
 346 0030 70BD     		pop	{r4, r5, r6, pc}
 347              	.LVL38:
 348              	.L16:
 350:Component/modbus/modbus_rtu_slave.c ****     }
 349              		.loc 1 350 16 view .LVU92
 350 0032 0520     		movs	r0, #5
 351              	.LVL39:
 350:Component/modbus/modbus_rtu_slave.c ****     }
 352              		.loc 1 350 16 view .LVU93
 353 0034 4042     		rsbs	r0, r0, #0
 354 0036 FBE7     		b	.L13
 355              		.cfi_endproc
 356              	.LFE8:
 358              		.section	.text.modbus_rtu_slave_buffer_size,"ax",%progbits
 359              		.align	1
 360              		.p2align 2,,3
 361              		.global	modbus_rtu_slave_buffer_size
 362              		.syntax unified
 363              		.code	16
 364              		.thumb_func
 366              	modbus_rtu_slave_buffer_size:
 367              	.LVL40:
 368              	.LFB9:
 357:Component/modbus/modbus_rtu_slave.c **** 
 358:Component/modbus/modbus_rtu_slave.c **** /// @brief
 359:Component/modbus/modbus_rtu_slave.c **** /// @param self
 360:Component/modbus/modbus_rtu_slave.c **** /// @return
 361:Component/modbus/modbus_rtu_slave.c **** int modbus_rtu_slave_buffer_size(modbus_rtu_slave_t self)
 362:Component/modbus/modbus_rtu_slave.c **** {
 369              		.loc 1 362 1 is_stmt 1 view -0
 370              		.cfi_startproc
 371              		@ args = 0, pretend = 0, frame = 0
 372              		@ frame_needed = 0, uses_anonymous_args = 0
 373              		@ link register save eliminated.
 363:Component/modbus/modbus_rtu_slave.c ****     if (!self)
 374              		.loc 1 363 5 view .LVU95
 375              		.loc 1 363 8 is_stmt 0 view .LVU96
 376 0000 0028     		cmp	r0, #0
 377 0002 04D0     		beq	.L19
 364:Component/modbus/modbus_rtu_slave.c ****     {
 365:Component/modbus/modbus_rtu_slave.c ****         return 0;
 366:Component/modbus/modbus_rtu_slave.c ****     }
 367:Component/modbus/modbus_rtu_slave.c ****     return sizeof(self->buffer) - self->length;
 378              		.loc 1 367 5 is_stmt 1 view .LVU97
 379              		.loc 1 367 33 is_stmt 0 view .LVU98
 380 0004 4368     		ldr	r3, [r0, #4]
 381 0006 8420     		movs	r0, #132
 382              	.LVL41:
 383              		.loc 1 367 33 view .LVU99
 384 0008 4000     		lsls	r0, r0, #1
 385 000a C01A     		subs	r0, r0, r3
 386              	.L18:
 368:Component/modbus/modbus_rtu_slave.c **** }
 387              		.loc 1 368 1 view .LVU100
 388              		@ sp needed
ARM GAS  /tmp/ccJrCDWl.s 			page 15


 389 000c 7047     		bx	lr
 390              	.LVL42:
 391              	.L19:
 392              		.loc 1 368 1 view .LVU101
 393 000e 0020     		movs	r0, #0
 394              	.LVL43:
 395              		.loc 1 368 1 view .LVU102
 396 0010 FCE7     		b	.L18
 397              		.cfi_endproc
 398              	.LFE9:
 400 0012 C046     		.section	.text.modbus_rtu_slave_buffer_addr,"ax",%progbits
 401              		.align	1
 402              		.p2align 2,,3
 403              		.global	modbus_rtu_slave_buffer_addr
 404              		.syntax unified
 405              		.code	16
 406              		.thumb_func
 408              	modbus_rtu_slave_buffer_addr:
 409              	.LVL44:
 410              	.LFB10:
 369:Component/modbus/modbus_rtu_slave.c **** 
 370:Component/modbus/modbus_rtu_slave.c **** /// @brief
 371:Component/modbus/modbus_rtu_slave.c **** /// @param self
 372:Component/modbus/modbus_rtu_slave.c **** /// @return
 373:Component/modbus/modbus_rtu_slave.c **** void *modbus_rtu_slave_buffer_addr(modbus_rtu_slave_t self)
 374:Component/modbus/modbus_rtu_slave.c **** {
 411              		.loc 1 374 1 is_stmt 1 view -0
 412              		.cfi_startproc
 413              		@ args = 0, pretend = 0, frame = 0
 414              		@ frame_needed = 0, uses_anonymous_args = 0
 415              		@ link register save eliminated.
 375:Component/modbus/modbus_rtu_slave.c ****     if (!self)
 416              		.loc 1 375 5 view .LVU104
 417              		.loc 1 375 8 is_stmt 0 view .LVU105
 418 0000 0028     		cmp	r0, #0
 419 0002 03D0     		beq	.L22
 376:Component/modbus/modbus_rtu_slave.c ****     {
 377:Component/modbus/modbus_rtu_slave.c ****         return NULL;
 378:Component/modbus/modbus_rtu_slave.c ****     }
 379:Component/modbus/modbus_rtu_slave.c ****     return &self->buffer.bytes[self->length];
 420              		.loc 1 379 5 is_stmt 1 view .LVU106
 421              		.loc 1 379 12 is_stmt 0 view .LVU107
 422 0004 4368     		ldr	r3, [r0, #4]
 423 0006 2C33     		adds	r3, r3, #44
 424 0008 C018     		adds	r0, r0, r3
 425              	.LVL45:
 426              	.L20:
 380:Component/modbus/modbus_rtu_slave.c **** }
 427              		.loc 1 380 1 view .LVU108
 428              		@ sp needed
 429 000a 7047     		bx	lr
 430              	.LVL46:
 431              	.L22:
 377:Component/modbus/modbus_rtu_slave.c ****     }
 432              		.loc 1 377 16 view .LVU109
 433 000c 0020     		movs	r0, #0
 434              	.LVL47:
ARM GAS  /tmp/ccJrCDWl.s 			page 16


 377:Component/modbus/modbus_rtu_slave.c ****     }
 435              		.loc 1 377 16 view .LVU110
 436 000e FCE7     		b	.L20
 437              		.cfi_endproc
 438              	.LFE10:
 440              		.section	.text.modbus_rtu_slave_on_step,"ax",%progbits
 441              		.align	1
 442              		.p2align 2,,3
 443              		.global	modbus_rtu_slave_on_step
 444              		.syntax unified
 445              		.code	16
 446              		.thumb_func
 448              	modbus_rtu_slave_on_step:
 449              	.LVL48:
 450              	.LFB11:
 381:Component/modbus/modbus_rtu_slave.c **** 
 382:Component/modbus/modbus_rtu_slave.c **** /// @brief
 383:Component/modbus/modbus_rtu_slave.c **** /// @param self
 384:Component/modbus/modbus_rtu_slave.c **** /// @param tick
 385:Component/modbus/modbus_rtu_slave.c **** /// @return
 386:Component/modbus/modbus_rtu_slave.c **** int modbus_rtu_slave_on_step(modbus_rtu_slave_t self, const uint32_t tick)
 387:Component/modbus/modbus_rtu_slave.c **** {
 451              		.loc 1 387 1 is_stmt 1 view -0
 452              		.cfi_startproc
 453              		@ args = 0, pretend = 0, frame = 8
 454              		@ frame_needed = 0, uses_anonymous_args = 0
 388:Component/modbus/modbus_rtu_slave.c ****     if (!self)
 455              		.loc 1 388 5 view .LVU112
 387:Component/modbus/modbus_rtu_slave.c ****     if (!self)
 456              		.loc 1 387 1 is_stmt 0 view .LVU113
 457 0000 F0B5     		push	{r4, r5, r6, r7, lr}
 458              	.LCFI4:
 459              		.cfi_def_cfa_offset 20
 460              		.cfi_offset 4, -20
 461              		.cfi_offset 5, -16
 462              		.cfi_offset 6, -12
 463              		.cfi_offset 7, -8
 464              		.cfi_offset 14, -4
 465 0002 DE46     		mov	lr, fp
 466 0004 5746     		mov	r7, r10
 467 0006 4E46     		mov	r6, r9
 468 0008 4546     		mov	r5, r8
 469 000a E0B5     		push	{r5, r6, r7, lr}
 470              	.LCFI5:
 471              		.cfi_def_cfa_offset 36
 472              		.cfi_offset 8, -36
 473              		.cfi_offset 9, -32
 474              		.cfi_offset 10, -28
 475              		.cfi_offset 11, -24
 476 000c 0400     		movs	r4, r0
 477 000e 83B0     		sub	sp, sp, #12
 478              	.LCFI6:
 479              		.cfi_def_cfa_offset 48
 480              		.loc 1 388 8 view .LVU114
 481 0010 0028     		cmp	r0, #0
 482 0012 00D1     		bne	.LCB401
 483 0014 8BE1     		b	.L61	@long jump
ARM GAS  /tmp/ccJrCDWl.s 			page 17


 484              	.LCB401:
 389:Component/modbus/modbus_rtu_slave.c ****     {
 390:Component/modbus/modbus_rtu_slave.c ****         return -MODBUS_ERROR_NULL_POINTER;
 391:Component/modbus/modbus_rtu_slave.c ****     }
 392:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_lock(self);
 485              		.loc 1 392 5 is_stmt 1 view .LVU115
 393:Component/modbus/modbus_rtu_slave.c ****     if (self->interval)
 486              		.loc 1 393 5 view .LVU116
 487              		.loc 1 393 13 is_stmt 0 view .LVU117
 488 0016 8368     		ldr	r3, [r0, #8]
 489              		.loc 1 393 8 view .LVU118
 490 0018 002B     		cmp	r3, #0
 491 001a 16D0     		beq	.L60
 394:Component/modbus/modbus_rtu_slave.c ****     {
 395:Component/modbus/modbus_rtu_slave.c ****         if (self->interval >= tick)
 492              		.loc 1 395 9 is_stmt 1 view .LVU119
 493              		.loc 1 395 12 is_stmt 0 view .LVU120
 494 001c 8B42     		cmp	r3, r1
 495 001e 1CD2     		bcs	.L26
 496              	.L29:
 396:Component/modbus/modbus_rtu_slave.c ****         {
 397:Component/modbus/modbus_rtu_slave.c ****             self->interval -= tick;
 398:Component/modbus/modbus_rtu_slave.c ****         }
 399:Component/modbus/modbus_rtu_slave.c ****         if (self->interval < tick)
 400:Component/modbus/modbus_rtu_slave.c ****         {
 401:Component/modbus/modbus_rtu_slave.c ****             __modbus_rtu_slave_analysis(self);
 497              		.loc 1 401 13 is_stmt 1 view .LVU121
 498              	.LVL49:
 499              	.LBB99:
 500              	.LBI99:
  77:Component/modbus/modbus_rtu_slave.c **** {
 501              		.loc 1 77 13 view .LVU122
 502              	.LBB100:
  79:Component/modbus/modbus_rtu_slave.c ****     uint8_t err;
 503              		.loc 1 79 5 view .LVU123
  80:Component/modbus/modbus_rtu_slave.c ****     uint16_t crc;
 504              		.loc 1 80 5 view .LVU124
  81:Component/modbus/modbus_rtu_slave.c ****     modbus_slave_t slave;
 505              		.loc 1 81 5 view .LVU125
  82:Component/modbus/modbus_rtu_slave.c **** 
 506              		.loc 1 82 5 view .LVU126
  84:Component/modbus/modbus_rtu_slave.c ****     crc |= (self->buffer.bytes[self->length - 2] << 8);
 507              		.loc 1 84 5 view .LVU127
  84:Component/modbus/modbus_rtu_slave.c ****     crc |= (self->buffer.bytes[self->length - 2] << 8);
 508              		.loc 1 84 34 is_stmt 0 view .LVU128
 509 0020 6168     		ldr	r1, [r4, #4]
 510              	.LVL50:
  85:Component/modbus/modbus_rtu_slave.c **** 
 511              		.loc 1 85 5 is_stmt 1 view .LVU129
  87:Component/modbus/modbus_rtu_slave.c ****     {
 512              		.loc 1 87 27 is_stmt 0 view .LVU130
 513 0022 2500     		movs	r5, r4
  85:Component/modbus/modbus_rtu_slave.c **** 
 514              		.loc 1 85 31 view .LVU131
 515 0024 6318     		adds	r3, r4, r1
 516 0026 1A00     		movs	r2, r3
 517 0028 2A32     		adds	r2, r2, #42
ARM GAS  /tmp/ccJrCDWl.s 			page 18


  85:Component/modbus/modbus_rtu_slave.c **** 
 518              		.loc 1 85 9 view .LVU132
 519 002a 1278     		ldrb	r2, [r2]
  84:Component/modbus/modbus_rtu_slave.c ****     crc |= (self->buffer.bytes[self->length - 2] << 8);
 520              		.loc 1 84 29 view .LVU133
 521 002c 2B33     		adds	r3, r3, #43
 522              	.LVL51:
  85:Component/modbus/modbus_rtu_slave.c **** 
 523              		.loc 1 85 9 view .LVU134
 524 002e 1E78     		ldrb	r6, [r3]
  87:Component/modbus/modbus_rtu_slave.c ****     {
 525              		.loc 1 87 27 view .LVU135
 526 0030 2C35     		adds	r5, r5, #44
  87:Component/modbus/modbus_rtu_slave.c ****     {
 527              		.loc 1 87 16 view .LVU136
 528 0032 0239     		subs	r1, r1, #2
  85:Component/modbus/modbus_rtu_slave.c **** 
 529              		.loc 1 85 9 view .LVU137
 530 0034 1202     		lsls	r2, r2, #8
  87:Component/modbus/modbus_rtu_slave.c ****     {
 531              		.loc 1 87 16 view .LVU138
 532 0036 2800     		movs	r0, r5
 533              	.LVL52:
  87:Component/modbus/modbus_rtu_slave.c ****     {
 534              		.loc 1 87 16 view .LVU139
 535 0038 89B2     		uxth	r1, r1
  85:Component/modbus/modbus_rtu_slave.c **** 
 536              		.loc 1 85 9 view .LVU140
 537 003a 1643     		orrs	r6, r2
 538              	.LVL53:
  87:Component/modbus/modbus_rtu_slave.c ****     {
 539              		.loc 1 87 5 is_stmt 1 view .LVU141
  87:Component/modbus/modbus_rtu_slave.c ****     {
 540              		.loc 1 87 16 is_stmt 0 view .LVU142
 541 003c FFF7FEFF 		bl	modbus_crc
 542              	.LVL54:
  87:Component/modbus/modbus_rtu_slave.c ****     {
 543              		.loc 1 87 8 discriminator 1 view .LVU143
 544 0040 8642     		cmp	r6, r0
 545 0042 0FD0     		beq	.L184
 546              	.LVL55:
 547              	.L31:
  87:Component/modbus/modbus_rtu_slave.c ****     {
 548              		.loc 1 87 8 discriminator 1 view .LVU144
 549              	.LBE100:
 550              	.LBE99:
 402:Component/modbus/modbus_rtu_slave.c ****             self->interval = 0;
 551              		.loc 1 402 13 is_stmt 1 view .LVU145
 552              		.loc 1 402 28 is_stmt 0 view .LVU146
 553 0044 0023     		movs	r3, #0
 554 0046 A360     		str	r3, [r4, #8]
 403:Component/modbus/modbus_rtu_slave.c ****             self->length = 0;
 555              		.loc 1 403 13 is_stmt 1 view .LVU147
 556              		.loc 1 403 26 is_stmt 0 view .LVU148
 557 0048 6360     		str	r3, [r4, #4]
 558              	.L60:
 404:Component/modbus/modbus_rtu_slave.c ****         }
ARM GAS  /tmp/ccJrCDWl.s 			page 19


 405:Component/modbus/modbus_rtu_slave.c ****     }
 406:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_unlock(self);
 407:Component/modbus/modbus_rtu_slave.c ****     return -MODBUS_ERROR_NO_ERROR;
 559              		.loc 1 407 12 view .LVU149
 560 004a 0020     		movs	r0, #0
 561              	.L23:
 408:Component/modbus/modbus_rtu_slave.c **** }
 562              		.loc 1 408 1 view .LVU150
 563 004c 03B0     		add	sp, sp, #12
 564              		@ sp needed
 565              	.LVL56:
 566              		.loc 1 408 1 view .LVU151
 567 004e F0BC     		pop	{r4, r5, r6, r7}
 568 0050 BB46     		mov	fp, r7
 569 0052 B246     		mov	r10, r6
 570 0054 A946     		mov	r9, r5
 571 0056 A046     		mov	r8, r4
 572 0058 F0BD     		pop	{r4, r5, r6, r7, pc}
 573              	.LVL57:
 574              	.L26:
 397:Component/modbus/modbus_rtu_slave.c ****         }
 575              		.loc 1 397 13 is_stmt 1 view .LVU152
 397:Component/modbus/modbus_rtu_slave.c ****         }
 576              		.loc 1 397 28 is_stmt 0 view .LVU153
 577 005a 5B1A     		subs	r3, r3, r1
 578 005c 8360     		str	r3, [r0, #8]
 399:Component/modbus/modbus_rtu_slave.c ****         {
 579              		.loc 1 399 9 is_stmt 1 view .LVU154
 399:Component/modbus/modbus_rtu_slave.c ****         {
 580              		.loc 1 399 12 is_stmt 0 view .LVU155
 581 005e 8B42     		cmp	r3, r1
 582 0060 F3D2     		bcs	.L60
 583 0062 DDE7     		b	.L29
 584              	.LVL58:
 585              	.L184:
 586              	.LBB133:
 587              	.LBB131:
  89:Component/modbus/modbus_rtu_slave.c ****     }
 588              		.loc 1 89 9 is_stmt 1 view .LVU156
  89:Component/modbus/modbus_rtu_slave.c ****     }
 589              		.loc 1 89 45 is_stmt 0 view .LVU157
 590 0064 2C23     		movs	r3, #44
  96:Component/modbus/modbus_rtu_slave.c ****     if (slave)
 591              		.loc 1 96 13 view .LVU158
 592 0066 2000     		movs	r0, r4
  89:Component/modbus/modbus_rtu_slave.c ****     }
 593              		.loc 1 89 45 view .LVU159
 594 0068 E15C     		ldrb	r1, [r4, r3]
  96:Component/modbus/modbus_rtu_slave.c ****     if (slave)
 595              		.loc 1 96 13 view .LVU160
 596 006a 1C30     		adds	r0, r0, #28
  89:Component/modbus/modbus_rtu_slave.c ****     }
 597              		.loc 1 89 26 view .LVU161
 598 006c 2175     		strb	r1, [r4, #20]
  96:Component/modbus/modbus_rtu_slave.c ****     if (slave)
 599              		.loc 1 96 5 is_stmt 1 view .LVU162
  96:Component/modbus/modbus_rtu_slave.c ****     if (slave)
ARM GAS  /tmp/ccJrCDWl.s 			page 20


 600              		.loc 1 96 13 is_stmt 0 view .LVU163
 601 006e FFF7FEFF 		bl	modbus_slave_find_node
 602              	.LVL59:
 603 0072 061E     		subs	r6, r0, #0
 604              	.LVL60:
  97:Component/modbus/modbus_rtu_slave.c ****     {
 605              		.loc 1 97 5 is_stmt 1 view .LVU164
  97:Component/modbus/modbus_rtu_slave.c ****     {
 606              		.loc 1 97 8 is_stmt 0 view .LVU165
 607 0074 E6D0     		beq	.L31
  99:Component/modbus/modbus_rtu_slave.c ****         self->message.addr = BE16(self->buffer.head.addr);
 608              		.loc 1 99 9 is_stmt 1 view .LVU166
  99:Component/modbus/modbus_rtu_slave.c ****         self->message.addr = BE16(self->buffer.head.addr);
 609              		.loc 1 99 47 is_stmt 0 view .LVU167
 610 0076 2D23     		movs	r3, #45
 100:Component/modbus/modbus_rtu_slave.c ****     }
 611              		.loc 1 100 30 view .LVU168
 612 0078 E28D     		ldrh	r2, [r4, #46]
  99:Component/modbus/modbus_rtu_slave.c ****         self->message.addr = BE16(self->buffer.head.addr);
 613              		.loc 1 99 47 view .LVU169
 614 007a E35C     		ldrb	r3, [r4, r3]
 100:Component/modbus/modbus_rtu_slave.c ****     }
 615              		.loc 1 100 30 view .LVU170
 616 007c 52BA     		rev16	r2, r2
  99:Component/modbus/modbus_rtu_slave.c ****         self->message.addr = BE16(self->buffer.head.addr);
 617              		.loc 1 99 28 view .LVU171
 618 007e A376     		strb	r3, [r4, #26]
 100:Component/modbus/modbus_rtu_slave.c ****     }
 619              		.loc 1 100 9 is_stmt 1 view .LVU172
 100:Component/modbus/modbus_rtu_slave.c ****     }
 620              		.loc 1 100 28 is_stmt 0 discriminator 1 view .LVU173
 621 0080 E282     		strh	r2, [r4, #22]
 107:Component/modbus/modbus_rtu_slave.c ****     {
 622              		.loc 1 107 5 is_stmt 1 view .LVU174
 623 0082 102B     		cmp	r3, #16
 624 0084 DED8     		bhi	.L31
 625 0086 C14A     		ldr	r2, .L187
 626 0088 9B00     		lsls	r3, r3, #2
 627 008a D358     		ldr	r3, [r2, r3]
 628 008c 9F46     		mov	pc, r3
 629              		.section	.rodata.modbus_rtu_slave_on_step,"a",%progbits
 630              		.align	2
 631              	.L33:
 632 0000 44000000 		.word	.L31
 633 0004 F0000000 		.word	.L38
 634 0008 F0000000 		.word	.L38
 635 000c 8E000000 		.word	.L37
 636 0010 8E000000 		.word	.L37
 637 0014 1E030000 		.word	.L36
 638 0018 C8020000 		.word	.L35
 639 001c 44000000 		.word	.L31
 640 0020 44000000 		.word	.L31
 641 0024 44000000 		.word	.L31
 642 0028 44000000 		.word	.L31
 643 002c 44000000 		.word	.L31
 644 0030 44000000 		.word	.L31
 645 0034 44000000 		.word	.L31
ARM GAS  /tmp/ccJrCDWl.s 			page 21


 646 0038 44000000 		.word	.L31
 647 003c 1C020000 		.word	.L34
 648 0040 B4010000 		.word	.L32
 649              		.section	.text.modbus_rtu_slave_on_step
 650              	.L37:
 155:Component/modbus/modbus_rtu_slave.c ****         {
 651              		.loc 1 155 9 view .LVU175
 155:Component/modbus/modbus_rtu_slave.c ****         {
 652              		.loc 1 155 12 is_stmt 0 view .LVU176
 653 008e 237D     		ldrb	r3, [r4, #20]
 654 0090 002B     		cmp	r3, #0
 655 0092 D7D0     		beq	.L31
 155:Component/modbus/modbus_rtu_slave.c ****         {
 656              		.loc 1 155 40 discriminator 1 view .LVU177
 657 0094 8368     		ldr	r3, [r0, #8]
 155:Component/modbus/modbus_rtu_slave.c ****         {
 658              		.loc 1 155 31 discriminator 1 view .LVU178
 659 0096 002B     		cmp	r3, #0
 660 0098 D4D0     		beq	.L31
 163:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_regs_res.cnt = len << 1;
 661              		.loc 1 163 9 is_stmt 1 view .LVU179
 163:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_regs_res.cnt = len << 1;
 662              		.loc 1 163 15 is_stmt 0 view .LVU180
 663 009a 228E     		ldrh	r2, [r4, #48]
 664 009c 52BA     		rev16	r2, r2
 163:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_regs_res.cnt = len << 1;
 665              		.loc 1 163 13 discriminator 1 view .LVU181
 666 009e D2B2     		uxtb	r2, r2
 667 00a0 9046     		mov	r8, r2
 668              	.LVL61:
 164:Component/modbus/modbus_rtu_slave.c ****         for (uint32_t index = 0; index < len; index++)
 669              		.loc 1 164 9 is_stmt 1 view .LVU182
 164:Component/modbus/modbus_rtu_slave.c ****         for (uint32_t index = 0; index < len; index++)
 670              		.loc 1 164 46 is_stmt 0 view .LVU183
 671 00a2 5100     		lsls	r1, r2, #1
 164:Component/modbus/modbus_rtu_slave.c ****         for (uint32_t index = 0; index < len; index++)
 672              		.loc 1 164 40 view .LVU184
 673 00a4 2E22     		movs	r2, #46
 674              	.LVL62:
 164:Component/modbus/modbus_rtu_slave.c ****         for (uint32_t index = 0; index < len; index++)
 675              		.loc 1 164 40 view .LVU185
 676 00a6 A154     		strb	r1, [r4, r2]
 165:Component/modbus/modbus_rtu_slave.c ****         {
 677              		.loc 1 165 9 is_stmt 1 view .LVU186
 678              	.LBB101:
 165:Component/modbus/modbus_rtu_slave.c ****         {
 679              		.loc 1 165 14 view .LVU187
 680              	.LVL63:
 165:Component/modbus/modbus_rtu_slave.c ****         {
 681              		.loc 1 165 40 discriminator 1 view .LVU188
 682 00a8 4246     		mov	r2, r8
 683 00aa 002A     		cmp	r2, #0
 684 00ac 00D1     		bne	.LCB563
 685 00ae 55E1     		b	.L46	@long jump
 686              	.LCB563:
 687 00b0 1422     		movs	r2, #20
 688 00b2 9146     		mov	r9, r2
ARM GAS  /tmp/ccJrCDWl.s 			page 22


 175:Component/modbus/modbus_rtu_slave.c ****                 self->message.addr++;
 689              		.loc 1 175 56 is_stmt 0 discriminator 1 view .LVU189
 690 00b4 EB32     		adds	r2, r2, #235
 165:Component/modbus/modbus_rtu_slave.c ****         {
 691              		.loc 1 165 23 view .LVU190
 692 00b6 0027     		movs	r7, #0
 175:Component/modbus/modbus_rtu_slave.c ****                 self->message.addr++;
 693              		.loc 1 175 56 discriminator 1 view .LVU191
 694 00b8 9246     		mov	r10, r2
 695 00ba A144     		add	r9, r9, r4
 696 00bc 13E0     		b	.L48
 697              	.LVL64:
 698              	.L47:
 175:Component/modbus/modbus_rtu_slave.c ****                 self->message.addr++;
 699              		.loc 1 175 17 is_stmt 1 view .LVU192
 175:Component/modbus/modbus_rtu_slave.c ****                 self->message.addr++;
 700              		.loc 1 175 56 is_stmt 0 discriminator 1 view .LVU193
 701 00be 3B00     		movs	r3, r7
 702 00c0 5046     		mov	r0, r10
 703              	.LVL65:
 175:Component/modbus/modbus_rtu_slave.c ****                 self->message.addr++;
 704              		.loc 1 175 58 view .LVU194
 705 00c2 228B     		ldrh	r2, [r4, #24]
 175:Component/modbus/modbus_rtu_slave.c ****                 self->message.addr++;
 706              		.loc 1 175 56 discriminator 1 view .LVU195
 707 00c4 1433     		adds	r3, r3, #20
 175:Component/modbus/modbus_rtu_slave.c ****                 self->message.addr++;
 708              		.loc 1 175 58 view .LVU196
 709 00c6 52BA     		rev16	r2, r2
 710 00c8 91B2     		uxth	r1, r2
 175:Component/modbus/modbus_rtu_slave.c ****                 self->message.addr++;
 711              		.loc 1 175 56 discriminator 1 view .LVU197
 712 00ca 5B00     		lsls	r3, r3, #1
 713 00cc E318     		adds	r3, r4, r3
 714 00ce 0240     		ands	r2, r0
 715 00d0 090A     		lsrs	r1, r1, #8
 716 00d2 DA71     		strb	r2, [r3, #7]
 717 00d4 1972     		strb	r1, [r3, #8]
 176:Component/modbus/modbus_rtu_slave.c ****             }
 718              		.loc 1 176 17 is_stmt 1 view .LVU198
 176:Component/modbus/modbus_rtu_slave.c ****             }
 719              		.loc 1 176 35 is_stmt 0 view .LVU199
 720 00d6 E38A     		ldrh	r3, [r4, #22]
 165:Component/modbus/modbus_rtu_slave.c ****         {
 721              		.loc 1 165 52 discriminator 2 view .LVU200
 722 00d8 0137     		adds	r7, r7, #1
 723              	.LVL66:
 176:Component/modbus/modbus_rtu_slave.c ****             }
 724              		.loc 1 176 35 view .LVU201
 725 00da 0133     		adds	r3, r3, #1
 726 00dc E382     		strh	r3, [r4, #22]
 165:Component/modbus/modbus_rtu_slave.c ****         {
 727              		.loc 1 165 52 is_stmt 1 discriminator 2 view .LVU202
 728              	.LVL67:
 165:Component/modbus/modbus_rtu_slave.c ****         {
 729              		.loc 1 165 40 discriminator 1 view .LVU203
 730 00de 4745     		cmp	r7, r8
ARM GAS  /tmp/ccJrCDWl.s 			page 23


 731 00e0 00D3     		bcc	.LCB604
 732 00e2 3BE1     		b	.L46	@long jump
 733              	.LCB604:
 167:Component/modbus/modbus_rtu_slave.c ****             if (err)
 734              		.loc 1 167 24 is_stmt 0 view .LVU204
 735 00e4 B368     		ldr	r3, [r6, #8]
 736              	.LVL68:
 737              	.L48:
 167:Component/modbus/modbus_rtu_slave.c ****             if (err)
 738              		.loc 1 167 13 is_stmt 1 view .LVU205
 167:Component/modbus/modbus_rtu_slave.c ****             if (err)
 739              		.loc 1 167 19 is_stmt 0 view .LVU206
 740 00e6 4846     		mov	r0, r9
 741 00e8 9847     		blx	r3
 742              	.LVL69:
 168:Component/modbus/modbus_rtu_slave.c ****             {
 743              		.loc 1 168 13 is_stmt 1 view .LVU207
 168:Component/modbus/modbus_rtu_slave.c ****             {
 744              		.loc 1 168 16 is_stmt 0 view .LVU208
 745 00ea 0028     		cmp	r0, #0
 746 00ec E7D0     		beq	.L47
 747 00ee FBE0     		b	.L169
 748              	.LVL70:
 749              	.L38:
 168:Component/modbus/modbus_rtu_slave.c ****             {
 750              		.loc 1 168 16 view .LVU209
 751              	.LBE101:
 112:Component/modbus/modbus_rtu_slave.c ****         {
 752              		.loc 1 112 9 is_stmt 1 view .LVU210
 112:Component/modbus/modbus_rtu_slave.c ****         {
 753              		.loc 1 112 12 is_stmt 0 view .LVU211
 754 00f0 237D     		ldrb	r3, [r4, #20]
 755 00f2 002B     		cmp	r3, #0
 756 00f4 A6D0     		beq	.L31
 112:Component/modbus/modbus_rtu_slave.c ****         {
 757              		.loc 1 112 31 discriminator 1 view .LVU212
 758 00f6 8368     		ldr	r3, [r0, #8]
 759 00f8 002B     		cmp	r3, #0
 760 00fa A3D0     		beq	.L31
 116:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.cnt = len >> 3;
 761              		.loc 1 116 9 is_stmt 1 view .LVU213
 116:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.cnt = len >> 3;
 762              		.loc 1 116 15 is_stmt 0 view .LVU214
 763 00fc 238E     		ldrh	r3, [r4, #48]
 764 00fe 5ABA     		rev16	r2, r3
 116:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.cnt = len >> 3;
 765              		.loc 1 116 13 discriminator 1 view .LVU215
 766 0100 D2B2     		uxtb	r2, r2
 118:Component/modbus/modbus_rtu_slave.c ****         {
 767              		.loc 1 118 12 view .LVU216
 768 0102 5B05     		lsls	r3, r3, #21
 116:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.cnt = len >> 3;
 769              		.loc 1 116 13 discriminator 1 view .LVU217
 770 0104 9046     		mov	r8, r2
 771              	.LVL71:
 117:Component/modbus/modbus_rtu_slave.c ****         if (len & 0x7)
 772              		.loc 1 117 9 is_stmt 1 view .LVU218
ARM GAS  /tmp/ccJrCDWl.s 			page 24


 117:Component/modbus/modbus_rtu_slave.c ****         if (len & 0x7)
 773              		.loc 1 117 40 is_stmt 0 view .LVU219
 774 0106 D108     		lsrs	r1, r2, #3
 118:Component/modbus/modbus_rtu_slave.c ****         {
 775              		.loc 1 118 9 is_stmt 1 view .LVU220
 118:Component/modbus/modbus_rtu_slave.c ****         {
 776              		.loc 1 118 12 is_stmt 0 view .LVU221
 777 0108 5B0F     		lsrs	r3, r3, #29
 778 010a 00D0     		beq	.LCB655
 779 010c 22E1     		b	.L39	@long jump
 780              	.LCB655:
 117:Component/modbus/modbus_rtu_slave.c ****         if (len & 0x7)
 781              		.loc 1 117 40 view .LVU222
 782 010e 2E33     		adds	r3, r3, #46
 783 0110 E154     		strb	r1, [r4, r3]
 784              	.LVL72:
 785              	.LBB102:
 122:Component/modbus/modbus_rtu_slave.c ****         {
 786              		.loc 1 122 40 is_stmt 1 discriminator 1 view .LVU223
 787 0112 0029     		cmp	r1, #0
 788 0114 39D0     		beq	.L41
 789              	.L40:
 122:Component/modbus/modbus_rtu_slave.c ****         {
 790              		.loc 1 122 40 is_stmt 0 discriminator 1 view .LVU224
 791 0116 2F23     		movs	r3, #47
 792 0118 9C46     		mov	ip, r3
 793 011a A444     		add	ip, ip, r4
 794 011c 6346     		mov	r3, ip
 795 011e 0193     		str	r3, [sp, #4]
 124:Component/modbus/modbus_rtu_slave.c ****             for (uint8_t loop = 0; loop < 8; loop++)
 796              		.loc 1 124 52 view .LVU225
 797 0120 0023     		movs	r3, #0
 798 0122 9B46     		mov	fp, r3
 799              	.LBB103:
 129:Component/modbus/modbus_rtu_slave.c ****                     if (err)
 800              		.loc 1 129 64 view .LVU226
 801 0124 1433     		adds	r3, r3, #20
 802 0126 9A46     		mov	r10, r3
 803 0128 E146     		mov	r9, ip
 804 012a A244     		add	r10, r10, r4
 805              	.LVL73:
 806              	.L45:
 129:Component/modbus/modbus_rtu_slave.c ****                     if (err)
 807              		.loc 1 129 64 view .LVU227
 808              	.LBE103:
 124:Component/modbus/modbus_rtu_slave.c ****             for (uint8_t loop = 0; loop < 8; loop++)
 809              		.loc 1 124 13 is_stmt 1 view .LVU228
 124:Component/modbus/modbus_rtu_slave.c ****             for (uint8_t loop = 0; loop < 8; loop++)
 810              		.loc 1 124 52 is_stmt 0 view .LVU229
 811 012c 4B46     		mov	r3, r9
 812 012e 5A46     		mov	r2, fp
 813 0130 1A70     		strb	r2, [r3]
 125:Component/modbus/modbus_rtu_slave.c ****             {
 814              		.loc 1 125 13 is_stmt 1 view .LVU230
 815              	.LBB106:
 125:Component/modbus/modbus_rtu_slave.c ****             {
 816              		.loc 1 125 18 view .LVU231
ARM GAS  /tmp/ccJrCDWl.s 			page 25


 817              	.LVL74:
 125:Component/modbus/modbus_rtu_slave.c ****             {
 818              		.loc 1 125 41 discriminator 1 view .LVU232
 819 0132 4346     		mov	r3, r8
 820 0134 013B     		subs	r3, r3, #1
 821 0136 DBB2     		uxtb	r3, r3
 822 0138 9846     		mov	r8, r3
 823              	.LVL75:
 125:Component/modbus/modbus_rtu_slave.c ****             {
 824              		.loc 1 125 41 is_stmt 0 discriminator 1 view .LVU233
 825              	.LBE106:
 124:Component/modbus/modbus_rtu_slave.c ****             for (uint8_t loop = 0; loop < 8; loop++)
 826              		.loc 1 124 52 view .LVU234
 827 013a 0027     		movs	r7, #0
 828 013c 00E0     		b	.L44
 829              	.LVL76:
 830              	.L62:
 831              	.LBB107:
 124:Component/modbus/modbus_rtu_slave.c ****             for (uint8_t loop = 0; loop < 8; loop++)
 832              		.loc 1 124 52 view .LVU235
 833 013e 9846     		mov	r8, r3
 834              	.LVL77:
 835              	.L44:
 127:Component/modbus/modbus_rtu_slave.c ****                 {
 836              		.loc 1 127 17 is_stmt 1 view .LVU236
 127:Component/modbus/modbus_rtu_slave.c ****                 {
 837              		.loc 1 127 20 is_stmt 0 view .LVU237
 838 0140 4346     		mov	r3, r8
 839 0142 FF2B     		cmp	r3, #255
 840 0144 17D0     		beq	.L42
 129:Component/modbus/modbus_rtu_slave.c ****                     if (err)
 841              		.loc 1 129 21 is_stmt 1 view .LVU238
 129:Component/modbus/modbus_rtu_slave.c ****                     if (err)
 842              		.loc 1 129 27 is_stmt 0 view .LVU239
 843 0146 5046     		mov	r0, r10
 844 0148 B368     		ldr	r3, [r6, #8]
 845 014a 9847     		blx	r3
 846              	.LVL78:
 130:Component/modbus/modbus_rtu_slave.c ****                     {
 847              		.loc 1 130 21 is_stmt 1 view .LVU240
 130:Component/modbus/modbus_rtu_slave.c ****                     {
 848              		.loc 1 130 24 is_stmt 0 view .LVU241
 849 014c 0028     		cmp	r0, #0
 850 014e 00D0     		beq	.LCB740
 851 0150 F0E0     		b	.L185	@long jump
 852              	.LCB740:
 137:Component/modbus/modbus_rtu_slave.c ****                         self->message.addr++;
 853              		.loc 1 137 25 is_stmt 1 view .LVU242
 137:Component/modbus/modbus_rtu_slave.c ****                         self->message.addr++;
 854              		.loc 1 137 68 is_stmt 0 view .LVU243
 855 0152 238B     		ldrh	r3, [r4, #24]
 856 0154 5A1E     		subs	r2, r3, #1
 857 0156 9341     		sbcs	r3, r3, r2
 137:Component/modbus/modbus_rtu_slave.c ****                         self->message.addr++;
 858              		.loc 1 137 64 view .LVU244
 859 0158 4A46     		mov	r2, r9
 137:Component/modbus/modbus_rtu_slave.c ****                         self->message.addr++;
ARM GAS  /tmp/ccJrCDWl.s 			page 26


 860              		.loc 1 137 93 view .LVU245
 861 015a BB40     		lsls	r3, r3, r7
 137:Component/modbus/modbus_rtu_slave.c ****                         self->message.addr++;
 862              		.loc 1 137 64 view .LVU246
 863 015c 1278     		ldrb	r2, [r2]
 125:Component/modbus/modbus_rtu_slave.c ****             {
 864              		.loc 1 125 41 discriminator 1 view .LVU247
 865 015e 0137     		adds	r7, r7, #1
 866              	.LVL79:
 137:Component/modbus/modbus_rtu_slave.c ****                         self->message.addr++;
 867              		.loc 1 137 64 view .LVU248
 868 0160 1343     		orrs	r3, r2
 869 0162 4A46     		mov	r2, r9
 870 0164 1370     		strb	r3, [r2]
 138:Component/modbus/modbus_rtu_slave.c ****                     }
 871              		.loc 1 138 25 is_stmt 1 view .LVU249
 138:Component/modbus/modbus_rtu_slave.c ****                     }
 872              		.loc 1 138 43 is_stmt 0 view .LVU250
 873 0166 E38A     		ldrh	r3, [r4, #22]
 874 0168 0133     		adds	r3, r3, #1
 875 016a E382     		strh	r3, [r4, #22]
 125:Component/modbus/modbus_rtu_slave.c ****             {
 876              		.loc 1 125 50 is_stmt 1 discriminator 2 view .LVU251
 877              	.LVL80:
 125:Component/modbus/modbus_rtu_slave.c ****             {
 878              		.loc 1 125 41 discriminator 1 view .LVU252
 879 016c 4346     		mov	r3, r8
 880 016e 013B     		subs	r3, r3, #1
 881 0170 DBB2     		uxtb	r3, r3
 882 0172 082F     		cmp	r7, #8
 883 0174 E3D1     		bne	.L62
 884              	.LVL81:
 885              	.L42:
 125:Component/modbus/modbus_rtu_slave.c ****             {
 886              		.loc 1 125 41 is_stmt 0 discriminator 1 view .LVU253
 887              	.LBE107:
 122:Component/modbus/modbus_rtu_slave.c ****         {
 888              		.loc 1 122 79 is_stmt 1 discriminator 2 view .LVU254
 122:Component/modbus/modbus_rtu_slave.c ****         {
 889              		.loc 1 122 40 discriminator 1 view .LVU255
 122:Component/modbus/modbus_rtu_slave.c ****         {
 890              		.loc 1 122 68 is_stmt 0 discriminator 1 view .LVU256
 891 0176 2E23     		movs	r3, #46
 892 0178 E15C     		ldrb	r1, [r4, r3]
 122:Component/modbus/modbus_rtu_slave.c ****         {
 893              		.loc 1 122 40 discriminator 1 view .LVU257
 894 017a 2D3B     		subs	r3, r3, #45
 895 017c 9C46     		mov	ip, r3
 896 017e E144     		add	r9, r9, ip
 897              	.LVL82:
 122:Component/modbus/modbus_rtu_slave.c ****         {
 898              		.loc 1 122 40 discriminator 1 view .LVU258
 899 0180 4B46     		mov	r3, r9
 900 0182 1B1B     		subs	r3, r3, r4
 901 0184 2F3B     		subs	r3, r3, #47
 902 0186 9942     		cmp	r1, r3
 903 0188 D0D8     		bhi	.L45
ARM GAS  /tmp/ccJrCDWl.s 			page 27


 904              	.LVL83:
 905              	.L41:
 122:Component/modbus/modbus_rtu_slave.c ****         {
 906              		.loc 1 122 40 discriminator 1 view .LVU259
 907              	.LBE102:
 147:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.data[self->buffer.read_coil_res.cnt + 3] = crc >> 8;
 908              		.loc 1 147 9 is_stmt 1 view .LVU260
 147:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.data[self->buffer.read_coil_res.cnt + 3] = crc >> 8;
 909              		.loc 1 147 15 is_stmt 0 view .LVU261
 910 018a 0331     		adds	r1, r1, #3
 911 018c 2800     		movs	r0, r5
 912 018e FFF7FEFF 		bl	modbus_crc
 913              	.LVL84:
 148:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.data[self->buffer.read_coil_res.cnt + 4] = crc & 0xFF;
 914              		.loc 1 148 9 is_stmt 1 view .LVU262
 148:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.data[self->buffer.read_coil_res.cnt + 4] = crc & 0xFF;
 915              		.loc 1 148 67 is_stmt 0 view .LVU263
 916 0192 2E23     		movs	r3, #46
 917 0194 E15C     		ldrb	r1, [r4, r3]
 148:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.data[self->buffer.read_coil_res.cnt + 4] = crc & 0xFF;
 918              		.loc 1 148 77 view .LVU264
 919 0196 060A     		lsrs	r6, r0, #8
 920              	.LVL85:
 148:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.data[self->buffer.read_coil_res.cnt + 4] = crc & 0xFF;
 921              		.loc 1 148 77 view .LVU265
 922 0198 6318     		adds	r3, r4, r1
 923 019a 1A00     		movs	r2, r3
 149:Component/modbus/modbus_rtu_slave.c ****         __modbus_rtu_slave_on_send(self, self->buffer.read_coil_res.cnt + 5);
 924              		.loc 1 149 77 view .LVU266
 925 019c 3333     		adds	r3, r3, #51
 148:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_coil_res.data[self->buffer.read_coil_res.cnt + 4] = crc & 0xFF;
 926              		.loc 1 148 77 view .LVU267
 927 019e 3232     		adds	r2, r2, #50
 928 01a0 1670     		strb	r6, [r2]
 149:Component/modbus/modbus_rtu_slave.c ****         __modbus_rtu_slave_on_send(self, self->buffer.read_coil_res.cnt + 5);
 929              		.loc 1 149 9 is_stmt 1 view .LVU268
 149:Component/modbus/modbus_rtu_slave.c ****         __modbus_rtu_slave_on_send(self, self->buffer.read_coil_res.cnt + 5);
 930              		.loc 1 149 77 is_stmt 0 view .LVU269
 931 01a2 1870     		strb	r0, [r3]
 150:Component/modbus/modbus_rtu_slave.c ****         break;
 932              		.loc 1 150 9 is_stmt 1 view .LVU270
 933              	.LVL86:
 934              	.LBB109:
 935              	.LBI109:
  52:Component/modbus/modbus_rtu_slave.c **** {
 936              		.loc 1 52 13 view .LVU271
 937              	.LBB110:
  54:Component/modbus/modbus_rtu_slave.c ****     {
 938              		.loc 1 54 5 view .LVU272
  54:Component/modbus/modbus_rtu_slave.c ****     {
 939              		.loc 1 54 13 is_stmt 0 view .LVU273
 940 01a4 2369     		ldr	r3, [r4, #16]
  54:Component/modbus/modbus_rtu_slave.c ****     {
 941              		.loc 1 54 8 view .LVU274
 942 01a6 002B     		cmp	r3, #0
 943 01a8 00D1     		bne	.LCB822
 944 01aa 4BE7     		b	.L31	@long jump
ARM GAS  /tmp/ccJrCDWl.s 			page 28


 945              	.LCB822:
 946              	.LVL87:
 947              	.L167:
  54:Component/modbus/modbus_rtu_slave.c ****     {
 948              		.loc 1 54 8 view .LVU275
 949              	.LBE110:
 950              	.LBE109:
 951              	.LBB111:
 952              	.LBB112:
  56:Component/modbus/modbus_rtu_slave.c ****     }
 953              		.loc 1 56 9 view .LVU276
 954 01ac 2800     		movs	r0, r5
 955              	.LBE112:
 956              	.LBE111:
 181:Component/modbus/modbus_rtu_slave.c ****         break;
 957              		.loc 1 181 73 view .LVU277
 958 01ae 0531     		adds	r1, r1, #5
 959              	.LBB115:
 960              	.LBB113:
  56:Component/modbus/modbus_rtu_slave.c ****     }
 961              		.loc 1 56 9 view .LVU278
 962 01b0 9847     		blx	r3
 963              	.LVL88:
 964 01b2 47E7     		b	.L31
 965              	.LVL89:
 966              	.L32:
  56:Component/modbus/modbus_rtu_slave.c ****     }
 967              		.loc 1 56 9 view .LVU279
 968              	.LBE113:
 969              	.LBE115:
 266:Component/modbus/modbus_rtu_slave.c ****         {
 970              		.loc 1 266 9 is_stmt 1 view .LVU280
 266:Component/modbus/modbus_rtu_slave.c ****         {
 971              		.loc 1 266 19 is_stmt 0 view .LVU281
 972 01b4 C268     		ldr	r2, [r0, #12]
 266:Component/modbus/modbus_rtu_slave.c ****         {
 973              		.loc 1 266 12 view .LVU282
 974 01b6 002A     		cmp	r2, #0
 975 01b8 00D1     		bne	.LCB854
 976 01ba 43E7     		b	.L31	@long jump
 977              	.LCB854:
 270:Component/modbus/modbus_rtu_slave.c ****         if (self->buffer.write_mul_regs_req.cnt < (len << 1))
 978              		.loc 1 270 9 is_stmt 1 view .LVU283
 270:Component/modbus/modbus_rtu_slave.c ****         if (self->buffer.write_mul_regs_req.cnt < (len << 1))
 979              		.loc 1 270 15 is_stmt 0 view .LVU284
 980 01bc 238E     		ldrh	r3, [r4, #48]
 981 01be 5BBA     		rev16	r3, r3
 270:Component/modbus/modbus_rtu_slave.c ****         if (self->buffer.write_mul_regs_req.cnt < (len << 1))
 982              		.loc 1 270 13 discriminator 1 view .LVU285
 983 01c0 DBB2     		uxtb	r3, r3
 984 01c2 9846     		mov	r8, r3
 985              	.LVL90:
 271:Component/modbus/modbus_rtu_slave.c ****         {
 986              		.loc 1 271 9 is_stmt 1 view .LVU286
 271:Component/modbus/modbus_rtu_slave.c ****         {
 987              		.loc 1 271 44 is_stmt 0 view .LVU287
 988 01c4 3223     		movs	r3, #50
ARM GAS  /tmp/ccJrCDWl.s 			page 29


 989 01c6 E15C     		ldrb	r1, [r4, r3]
 271:Component/modbus/modbus_rtu_slave.c ****         {
 990              		.loc 1 271 56 view .LVU288
 991 01c8 4346     		mov	r3, r8
 992 01ca 5B00     		lsls	r3, r3, #1
 271:Component/modbus/modbus_rtu_slave.c ****         {
 993              		.loc 1 271 12 view .LVU289
 994 01cc 9942     		cmp	r1, r3
 995 01ce 00DA     		bge	.LCB868
 996 01d0 38E7     		b	.L31	@long jump
 997              	.LCB868:
 998              	.LVL91:
 999              	.LBB116:
 275:Component/modbus/modbus_rtu_slave.c ****         {
 1000              		.loc 1 275 40 is_stmt 1 discriminator 1 view .LVU290
 1001 01d2 4346     		mov	r3, r8
 1002 01d4 002B     		cmp	r3, #0
 1003 01d6 00D1     		bne	.LCB874
 1004 01d8 D5E0     		b	.L56	@long jump
 1005              	.LCB874:
 1006 01da 1423     		movs	r3, #20
 1007 01dc 9946     		mov	r9, r3
 275:Component/modbus/modbus_rtu_slave.c ****         {
 1008              		.loc 1 275 23 is_stmt 0 view .LVU291
 1009 01de 0027     		movs	r7, #0
 1010 01e0 A144     		add	r9, r9, r4
 1011 01e2 00E0     		b	.L59
 1012              	.LVL92:
 1013              	.L186:
 278:Component/modbus/modbus_rtu_slave.c ****             if (self->message.id && err)
 1014              		.loc 1 278 24 view .LVU292
 1015 01e4 F268     		ldr	r2, [r6, #12]
 1016              	.LVL93:
 1017              	.L59:
 277:Component/modbus/modbus_rtu_slave.c ****             err = slave->on_write((struct modbus_write *)&self->message);
 1018              		.loc 1 277 13 is_stmt 1 view .LVU293
 277:Component/modbus/modbus_rtu_slave.c ****             err = slave->on_write((struct modbus_write *)&self->message);
 1019              		.loc 1 277 34 is_stmt 0 view .LVU294
 1020 01e6 3B00     		movs	r3, r7
 1021 01e8 1433     		adds	r3, r3, #20
 1022 01ea 5B00     		lsls	r3, r3, #1
 1023 01ec E318     		adds	r3, r4, r3
 1024 01ee D97A     		ldrb	r1, [r3, #11]
 1025 01f0 1B7B     		ldrb	r3, [r3, #12]
 278:Component/modbus/modbus_rtu_slave.c ****             if (self->message.id && err)
 1026              		.loc 1 278 19 view .LVU295
 1027 01f2 4846     		mov	r0, r9
 277:Component/modbus/modbus_rtu_slave.c ****             err = slave->on_write((struct modbus_write *)&self->message);
 1028              		.loc 1 277 34 view .LVU296
 1029 01f4 1B02     		lsls	r3, r3, #8
 1030 01f6 0B43     		orrs	r3, r1
 1031 01f8 5BBA     		rev16	r3, r3
 277:Component/modbus/modbus_rtu_slave.c ****             err = slave->on_write((struct modbus_write *)&self->message);
 1032              		.loc 1 277 32 discriminator 1 view .LVU297
 1033 01fa 2383     		strh	r3, [r4, #24]
 278:Component/modbus/modbus_rtu_slave.c ****             if (self->message.id && err)
 1034              		.loc 1 278 13 is_stmt 1 view .LVU298
ARM GAS  /tmp/ccJrCDWl.s 			page 30


 278:Component/modbus/modbus_rtu_slave.c ****             if (self->message.id && err)
 1035              		.loc 1 278 19 is_stmt 0 view .LVU299
 1036 01fc 9047     		blx	r2
 1037              	.LVL94:
 279:Component/modbus/modbus_rtu_slave.c ****             {
 1038              		.loc 1 279 13 is_stmt 1 view .LVU300
 279:Component/modbus/modbus_rtu_slave.c ****             {
 1039              		.loc 1 279 30 is_stmt 0 view .LVU301
 1040 01fe 227D     		ldrb	r2, [r4, #20]
 279:Component/modbus/modbus_rtu_slave.c ****             {
 1041              		.loc 1 279 16 view .LVU302
 1042 0200 002A     		cmp	r2, #0
 1043 0202 01D0     		beq	.L57
 279:Component/modbus/modbus_rtu_slave.c ****             {
 1044              		.loc 1 279 34 discriminator 1 view .LVU303
 1045 0204 0028     		cmp	r0, #0
 1046 0206 6FD1     		bne	.L169
 1047              	.L57:
 284:Component/modbus/modbus_rtu_slave.c ****         }
 1048              		.loc 1 284 13 is_stmt 1 view .LVU304
 284:Component/modbus/modbus_rtu_slave.c ****         }
 1049              		.loc 1 284 31 is_stmt 0 view .LVU305
 1050 0208 E38A     		ldrh	r3, [r4, #22]
 275:Component/modbus/modbus_rtu_slave.c ****         {
 1051              		.loc 1 275 52 discriminator 2 view .LVU306
 1052 020a 0137     		adds	r7, r7, #1
 1053              	.LVL95:
 284:Component/modbus/modbus_rtu_slave.c ****         }
 1054              		.loc 1 284 31 view .LVU307
 1055 020c 0133     		adds	r3, r3, #1
 1056 020e E382     		strh	r3, [r4, #22]
 275:Component/modbus/modbus_rtu_slave.c ****         {
 1057              		.loc 1 275 52 is_stmt 1 discriminator 2 view .LVU308
 1058              	.LVL96:
 275:Component/modbus/modbus_rtu_slave.c ****         {
 1059              		.loc 1 275 40 discriminator 1 view .LVU309
 1060 0210 4745     		cmp	r7, r8
 1061 0212 E7D3     		bcc	.L186
 1062              	.LVL97:
 1063              	.L58:
 275:Component/modbus/modbus_rtu_slave.c ****         {
 1064              		.loc 1 275 40 is_stmt 0 discriminator 1 view .LVU310
 1065              	.LBE116:
 286:Component/modbus/modbus_rtu_slave.c ****         {
 1066              		.loc 1 286 9 is_stmt 1 view .LVU311
 286:Component/modbus/modbus_rtu_slave.c ****         {
 1067              		.loc 1 286 12 is_stmt 0 view .LVU312
 1068 0214 002A     		cmp	r2, #0
 1069 0216 00D1     		bne	.LCB938
 1070 0218 14E7     		b	.L31	@long jump
 1071              	.LCB938:
 1072 021a 47E0     		b	.L178
 1073              	.LVL98:
 1074              	.L34:
 206:Component/modbus/modbus_rtu_slave.c ****         {
 1075              		.loc 1 206 9 is_stmt 1 view .LVU313
 206:Component/modbus/modbus_rtu_slave.c ****         {
ARM GAS  /tmp/ccJrCDWl.s 			page 31


 1076              		.loc 1 206 12 is_stmt 0 view .LVU314
 1077 021c C368     		ldr	r3, [r0, #12]
 1078 021e 002B     		cmp	r3, #0
 1079 0220 00D1     		bne	.LCB950
 1080 0222 0FE7     		b	.L31	@long jump
 1081              	.LCB950:
 210:Component/modbus/modbus_rtu_slave.c ****         if (self->buffer.write_mul_coil_req.cnt < (len >> 3))
 1082              		.loc 1 210 9 is_stmt 1 view .LVU315
 210:Component/modbus/modbus_rtu_slave.c ****         if (self->buffer.write_mul_coil_req.cnt < (len >> 3))
 1083              		.loc 1 210 15 is_stmt 0 view .LVU316
 1084 0224 238E     		ldrh	r3, [r4, #48]
 1085 0226 5BBA     		rev16	r3, r3
 210:Component/modbus/modbus_rtu_slave.c ****         if (self->buffer.write_mul_coil_req.cnt < (len >> 3))
 1086              		.loc 1 210 13 discriminator 1 view .LVU317
 1087 0228 DBB2     		uxtb	r3, r3
 1088 022a 9846     		mov	r8, r3
 1089              	.LVL99:
 211:Component/modbus/modbus_rtu_slave.c ****         {
 1090              		.loc 1 211 9 is_stmt 1 view .LVU318
 211:Component/modbus/modbus_rtu_slave.c ****         {
 1091              		.loc 1 211 44 is_stmt 0 view .LVU319
 1092 022c 3223     		movs	r3, #50
 211:Component/modbus/modbus_rtu_slave.c ****         {
 1093              		.loc 1 211 12 view .LVU320
 1094 022e 4246     		mov	r2, r8
 211:Component/modbus/modbus_rtu_slave.c ****         {
 1095              		.loc 1 211 44 view .LVU321
 1096 0230 E35C     		ldrb	r3, [r4, r3]
 211:Component/modbus/modbus_rtu_slave.c ****         {
 1097              		.loc 1 211 12 view .LVU322
 1098 0232 D208     		lsrs	r2, r2, #3
 1099 0234 9342     		cmp	r3, r2
 1100 0236 00D2     		bcs	.LCB965
 1101 0238 04E7     		b	.L31	@long jump
 1102              	.LCB965:
 1103              	.LVL100:
 1104              	.LBB123:
 215:Component/modbus/modbus_rtu_slave.c ****         {
 1105              		.loc 1 215 40 is_stmt 1 discriminator 1 view .LVU323
 1106 023a 002B     		cmp	r3, #0
 1107 023c 32D0     		beq	.L50
 1108 023e 3323     		movs	r3, #51
 1109 0240 9946     		mov	r9, r3
 1110              	.LBB124:
 221:Component/modbus/modbus_rtu_slave.c ****                     err = slave->on_write((struct modbus_write *)&self->message);
 1111              		.loc 1 221 42 is_stmt 0 view .LVU324
 1112 0242 323B     		subs	r3, r3, #50
 1113 0244 9B46     		mov	fp, r3
 222:Component/modbus/modbus_rtu_slave.c ****                     if (self->message.id && err)
 1114              		.loc 1 222 66 view .LVU325
 1115 0246 1333     		adds	r3, r3, #19
 1116 0248 9A46     		mov	r10, r3
 1117 024a A144     		add	r9, r9, r4
 1118 024c A244     		add	r10, r10, r4
 1119              	.LVL101:
 1120              	.L51:
 217:Component/modbus/modbus_rtu_slave.c ****             {
ARM GAS  /tmp/ccJrCDWl.s 			page 32


 1121              		.loc 1 217 41 is_stmt 1 discriminator 1 view .LVU326
 1122 024e 4346     		mov	r3, r8
 1123 0250 013B     		subs	r3, r3, #1
 1124 0252 DBB2     		uxtb	r3, r3
 1125 0254 9846     		mov	r8, r3
 1126              	.LVL102:
 217:Component/modbus/modbus_rtu_slave.c ****             {
 1127              		.loc 1 217 41 is_stmt 0 discriminator 1 view .LVU327
 1128 0256 0027     		movs	r7, #0
 1129 0258 00E0     		b	.L54
 1130              	.LVL103:
 1131              	.L63:
 217:Component/modbus/modbus_rtu_slave.c ****             {
 1132              		.loc 1 217 41 discriminator 1 view .LVU328
 1133 025a 9846     		mov	r8, r3
 1134              	.LVL104:
 1135              	.L54:
 219:Component/modbus/modbus_rtu_slave.c ****                 {
 1136              		.loc 1 219 17 is_stmt 1 view .LVU329
 219:Component/modbus/modbus_rtu_slave.c ****                 {
 1137              		.loc 1 219 20 is_stmt 0 view .LVU330
 1138 025c 4346     		mov	r3, r8
 1139 025e FF2B     		cmp	r3, #255
 1140 0260 16D0     		beq	.L52
 221:Component/modbus/modbus_rtu_slave.c ****                     err = slave->on_write((struct modbus_write *)&self->message);
 1141              		.loc 1 221 21 is_stmt 1 view .LVU331
 221:Component/modbus/modbus_rtu_slave.c ****                     err = slave->on_write((struct modbus_write *)&self->message);
 1142              		.loc 1 221 85 is_stmt 0 view .LVU332
 1143 0262 4B46     		mov	r3, r9
 1144 0264 1B78     		ldrb	r3, [r3]
 221:Component/modbus/modbus_rtu_slave.c ****                     err = slave->on_write((struct modbus_write *)&self->message);
 1145              		.loc 1 221 42 view .LVU333
 1146 0266 5A46     		mov	r2, fp
 1147 0268 3B41     		asrs	r3, r3, r7
 1148 026a 1340     		ands	r3, r2
 221:Component/modbus/modbus_rtu_slave.c ****                     err = slave->on_write((struct modbus_write *)&self->message);
 1149              		.loc 1 221 40 view .LVU334
 1150 026c 2383     		strh	r3, [r4, #24]
 222:Component/modbus/modbus_rtu_slave.c ****                     if (self->message.id && err)
 1151              		.loc 1 222 21 is_stmt 1 view .LVU335
 222:Component/modbus/modbus_rtu_slave.c ****                     if (self->message.id && err)
 1152              		.loc 1 222 27 is_stmt 0 view .LVU336
 1153 026e 5046     		mov	r0, r10
 1154 0270 F368     		ldr	r3, [r6, #12]
 1155 0272 9847     		blx	r3
 1156              	.LVL105:
 223:Component/modbus/modbus_rtu_slave.c ****                     {
 1157              		.loc 1 223 21 is_stmt 1 view .LVU337
 223:Component/modbus/modbus_rtu_slave.c ****                     {
 1158              		.loc 1 223 24 is_stmt 0 view .LVU338
 1159 0274 237D     		ldrb	r3, [r4, #20]
 1160 0276 002B     		cmp	r3, #0
 1161 0278 01D0     		beq	.L53
 223:Component/modbus/modbus_rtu_slave.c ****                     {
 1162              		.loc 1 223 42 discriminator 1 view .LVU339
 1163 027a 0028     		cmp	r0, #0
 1164 027c 34D1     		bne	.L169
ARM GAS  /tmp/ccJrCDWl.s 			page 33


 1165              	.L53:
 228:Component/modbus/modbus_rtu_slave.c ****                 }
 1166              		.loc 1 228 21 is_stmt 1 view .LVU340
 228:Component/modbus/modbus_rtu_slave.c ****                 }
 1167              		.loc 1 228 39 is_stmt 0 view .LVU341
 1168 027e E38A     		ldrh	r3, [r4, #22]
 217:Component/modbus/modbus_rtu_slave.c ****             {
 1169              		.loc 1 217 41 discriminator 1 view .LVU342
 1170 0280 0137     		adds	r7, r7, #1
 1171              	.LVL106:
 228:Component/modbus/modbus_rtu_slave.c ****                 }
 1172              		.loc 1 228 39 view .LVU343
 1173 0282 0133     		adds	r3, r3, #1
 1174 0284 E382     		strh	r3, [r4, #22]
 217:Component/modbus/modbus_rtu_slave.c ****             {
 1175              		.loc 1 217 50 is_stmt 1 discriminator 2 view .LVU344
 1176              	.LVL107:
 217:Component/modbus/modbus_rtu_slave.c ****             {
 1177              		.loc 1 217 41 discriminator 1 view .LVU345
 1178 0286 4346     		mov	r3, r8
 1179 0288 013B     		subs	r3, r3, #1
 1180 028a DBB2     		uxtb	r3, r3
 1181 028c 082F     		cmp	r7, #8
 1182 028e E4D1     		bne	.L63
 1183              	.LVL108:
 1184              	.L52:
 217:Component/modbus/modbus_rtu_slave.c ****             {
 1185              		.loc 1 217 41 is_stmt 0 discriminator 1 view .LVU346
 1186              	.LBE124:
 215:Component/modbus/modbus_rtu_slave.c ****         {
 1187              		.loc 1 215 84 is_stmt 1 discriminator 2 view .LVU347
 215:Component/modbus/modbus_rtu_slave.c ****         {
 1188              		.loc 1 215 40 discriminator 1 view .LVU348
 1189 0290 0123     		movs	r3, #1
 1190 0292 9C46     		mov	ip, r3
 215:Component/modbus/modbus_rtu_slave.c ****         {
 1191              		.loc 1 215 73 is_stmt 0 discriminator 1 view .LVU349
 1192 0294 3133     		adds	r3, r3, #49
 215:Component/modbus/modbus_rtu_slave.c ****         {
 1193              		.loc 1 215 40 discriminator 1 view .LVU350
 1194 0296 E144     		add	r9, r9, ip
 1195              	.LVL109:
 215:Component/modbus/modbus_rtu_slave.c ****         {
 1196              		.loc 1 215 73 discriminator 1 view .LVU351
 1197 0298 E25C     		ldrb	r2, [r4, r3]
 215:Component/modbus/modbus_rtu_slave.c ****         {
 1198              		.loc 1 215 40 discriminator 1 view .LVU352
 1199 029a 4B46     		mov	r3, r9
 1200 029c 1B1B     		subs	r3, r3, r4
 1201 029e 333B     		subs	r3, r3, #51
 1202 02a0 9A42     		cmp	r2, r3
 1203 02a2 D4D8     		bhi	.L51
 1204              	.LVL110:
 1205              	.L50:
 215:Component/modbus/modbus_rtu_slave.c ****         {
 1206              		.loc 1 215 40 discriminator 1 view .LVU353
 1207              	.LBE123:
ARM GAS  /tmp/ccJrCDWl.s 			page 34


 236:Component/modbus/modbus_rtu_slave.c ****         {
 1208              		.loc 1 236 9 is_stmt 1 view .LVU354
 236:Component/modbus/modbus_rtu_slave.c ****         {
 1209              		.loc 1 236 12 is_stmt 0 view .LVU355
 1210 02a4 237D     		ldrb	r3, [r4, #20]
 1211 02a6 002B     		cmp	r3, #0
 1212 02a8 00D1     		bne	.LCB1093
 1213 02aa CBE6     		b	.L31	@long jump
 1214              	.LCB1093:
 1215              	.L178:
 288:Component/modbus/modbus_rtu_slave.c ****             __modbus_rtu_slave_on_send(self, sizeof(self->buffer.write_mul_res));
 1216              		.loc 1 288 13 is_stmt 1 view .LVU356
 288:Component/modbus/modbus_rtu_slave.c ****             __modbus_rtu_slave_on_send(self, sizeof(self->buffer.write_mul_res));
 1217              		.loc 1 288 46 is_stmt 0 view .LVU357
 1218 02ac 0621     		movs	r1, #6
 1219 02ae 2800     		movs	r0, r5
 1220 02b0 FFF7FEFF 		bl	modbus_crc
 1221              	.LVL111:
 288:Component/modbus/modbus_rtu_slave.c ****             __modbus_rtu_slave_on_send(self, sizeof(self->buffer.write_mul_res));
 1222              		.loc 1 288 46 discriminator 1 view .LVU358
 1223 02b4 40BA     		rev16	r0, r0
 288:Component/modbus/modbus_rtu_slave.c ****             __modbus_rtu_slave_on_send(self, sizeof(self->buffer.write_mul_res));
 1224              		.loc 1 288 44 discriminator 2 view .LVU359
 1225 02b6 6086     		strh	r0, [r4, #50]
 1226              	.LVL112:
 1227              	.L176:
 289:Component/modbus/modbus_rtu_slave.c ****         }
 1228              		.loc 1 289 13 is_stmt 1 view .LVU360
 1229              	.LBB125:
 1230              	.LBI125:
  52:Component/modbus/modbus_rtu_slave.c **** {
 1231              		.loc 1 52 13 view .LVU361
 1232              	.LBB126:
  54:Component/modbus/modbus_rtu_slave.c ****     {
 1233              		.loc 1 54 5 view .LVU362
  54:Component/modbus/modbus_rtu_slave.c ****     {
 1234              		.loc 1 54 13 is_stmt 0 view .LVU363
 1235 02b8 2369     		ldr	r3, [r4, #16]
  54:Component/modbus/modbus_rtu_slave.c ****     {
 1236              		.loc 1 54 8 view .LVU364
 1237 02ba 002B     		cmp	r3, #0
 1238 02bc 00D1     		bne	.LCB1120
 1239 02be C1E6     		b	.L31	@long jump
 1240              	.LCB1120:
  56:Component/modbus/modbus_rtu_slave.c ****     }
 1241              		.loc 1 56 9 is_stmt 1 view .LVU365
 1242 02c0 0821     		movs	r1, #8
 1243 02c2 2800     		movs	r0, r5
 1244 02c4 9847     		blx	r3
 1245              	.LVL113:
 1246 02c6 BDE6     		b	.L31
 1247              	.LVL114:
 1248              	.L35:
  56:Component/modbus/modbus_rtu_slave.c ****     }
 1249              		.loc 1 56 9 is_stmt 0 view .LVU366
 1250              	.LBE126:
 1251              	.LBE125:
ARM GAS  /tmp/ccJrCDWl.s 			page 35


 244:Component/modbus/modbus_rtu_slave.c ****         {
 1252              		.loc 1 244 9 is_stmt 1 view .LVU367
 244:Component/modbus/modbus_rtu_slave.c ****         {
 1253              		.loc 1 244 19 is_stmt 0 view .LVU368
 1254 02c8 C268     		ldr	r2, [r0, #12]
 244:Component/modbus/modbus_rtu_slave.c ****         {
 1255              		.loc 1 244 12 view .LVU369
 1256 02ca 002A     		cmp	r2, #0
 1257 02cc 00D1     		bne	.LCB1139
 1258 02ce B9E6     		b	.L31	@long jump
 1259              	.LCB1139:
 248:Component/modbus/modbus_rtu_slave.c ****         err = slave->on_write((struct modbus_write *)&self->message);
 1260              		.loc 1 248 9 is_stmt 1 view .LVU370
 248:Component/modbus/modbus_rtu_slave.c ****         err = slave->on_write((struct modbus_write *)&self->message);
 1261              		.loc 1 248 30 is_stmt 0 view .LVU371
 1262 02d0 238E     		ldrh	r3, [r4, #48]
 1263 02d2 5BBA     		rev16	r3, r3
 1264              	.L183:
 249:Component/modbus/modbus_rtu_slave.c ****         if (self->message.id)
 1265              		.loc 1 249 54 view .LVU372
 1266 02d4 2000     		movs	r0, r4
 1267              	.LVL115:
 248:Component/modbus/modbus_rtu_slave.c ****         err = slave->on_write((struct modbus_write *)&self->message);
 1268              		.loc 1 248 28 discriminator 1 view .LVU373
 1269 02d6 2383     		strh	r3, [r4, #24]
 249:Component/modbus/modbus_rtu_slave.c ****         if (self->message.id)
 1270              		.loc 1 249 9 is_stmt 1 view .LVU374
 249:Component/modbus/modbus_rtu_slave.c ****         if (self->message.id)
 1271              		.loc 1 249 54 is_stmt 0 view .LVU375
 1272 02d8 1430     		adds	r0, r0, #20
 249:Component/modbus/modbus_rtu_slave.c ****         if (self->message.id)
 1273              		.loc 1 249 15 view .LVU376
 1274 02da 9047     		blx	r2
 1275              	.LVL116:
 250:Component/modbus/modbus_rtu_slave.c ****         {
 1276              		.loc 1 250 9 is_stmt 1 view .LVU377
 250:Component/modbus/modbus_rtu_slave.c ****         {
 1277              		.loc 1 250 12 is_stmt 0 view .LVU378
 1278 02dc 237D     		ldrb	r3, [r4, #20]
 1279 02de 002B     		cmp	r3, #0
 1280 02e0 00D1     		bne	.LCB1158
 1281 02e2 AFE6     		b	.L31	@long jump
 1282              	.LCB1158:
 252:Component/modbus/modbus_rtu_slave.c ****             {
 1283              		.loc 1 252 13 is_stmt 1 view .LVU379
 252:Component/modbus/modbus_rtu_slave.c ****             {
 1284              		.loc 1 252 16 is_stmt 0 view .LVU380
 1285 02e4 0028     		cmp	r0, #0
 1286 02e6 E7D0     		beq	.L176
 1287              	.L169:
 1288              	.LBB127:
 281:Component/modbus/modbus_rtu_slave.c ****                 return;
 1289              		.loc 1 281 17 is_stmt 1 view .LVU381
 1290              	.LVL117:
 1291              	.LBB117:
 1292              	.LBI117:
  63:Component/modbus/modbus_rtu_slave.c **** {
ARM GAS  /tmp/ccJrCDWl.s 			page 36


 1293              		.loc 1 63 13 view .LVU382
 1294              	.LBB118:
  68:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.err = error;
 1295              		.loc 1 68 5 view .LVU383
  68:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.err = error;
 1296              		.loc 1 68 27 is_stmt 0 view .LVU384
 1297 02e8 2D22     		movs	r2, #45
  68:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.err = error;
 1298              		.loc 1 68 33 view .LVU385
 1299 02ea 8023     		movs	r3, #128
 1300 02ec A15C     		ldrb	r1, [r4, r2]
 1301 02ee 5B42     		rsbs	r3, r3, #0
 1302 02f0 0B43     		orrs	r3, r1
 1303 02f2 A354     		strb	r3, [r4, r2]
  69:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.crc = BE16(modbus_crc(self->buffer.bytes, 3));
 1304              		.loc 1 69 5 is_stmt 1 view .LVU386
  69:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.crc = BE16(modbus_crc(self->buffer.bytes, 3));
 1305              		.loc 1 69 32 is_stmt 0 view .LVU387
 1306 02f4 2E23     		movs	r3, #46
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1307              		.loc 1 70 34 view .LVU388
 1308 02f6 0321     		movs	r1, #3
  69:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.crc = BE16(modbus_crc(self->buffer.bytes, 3));
 1309              		.loc 1 69 32 view .LVU389
 1310 02f8 E054     		strb	r0, [r4, r3]
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1311              		.loc 1 70 5 is_stmt 1 view .LVU390
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1312              		.loc 1 70 34 is_stmt 0 view .LVU391
 1313 02fa 2800     		movs	r0, r5
 1314              	.LVL118:
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1315              		.loc 1 70 34 view .LVU392
 1316 02fc FFF7FEFF 		bl	modbus_crc
 1317              	.LVL119:
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1318              		.loc 1 70 32 discriminator 2 view .LVU393
 1319 0300 2200     		movs	r2, r4
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1320              		.loc 1 70 34 discriminator 1 view .LVU394
 1321 0302 40BA     		rev16	r0, r0
 1322 0304 83B2     		uxth	r3, r0
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1323              		.loc 1 70 32 discriminator 2 view .LVU395
 1324 0306 2F32     		adds	r2, r2, #47
 1325              	.LVL120:
 1326              	.L172:
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1327              		.loc 1 70 32 discriminator 2 view .LVU396
 1328 0308 1B0A     		lsrs	r3, r3, #8
 1329 030a 5370     		strb	r3, [r2, #1]
  71:Component/modbus/modbus_rtu_slave.c **** }
 1330              		.loc 1 71 5 is_stmt 1 view .LVU397
 1331              	.LVL121:
 1332              	.LBB119:
 1333              	.LBI119:
  52:Component/modbus/modbus_rtu_slave.c **** {
ARM GAS  /tmp/ccJrCDWl.s 			page 37


 1334              		.loc 1 52 13 view .LVU398
 1335              	.LBB120:
  54:Component/modbus/modbus_rtu_slave.c ****     {
 1336              		.loc 1 54 5 view .LVU399
  54:Component/modbus/modbus_rtu_slave.c ****     {
 1337              		.loc 1 54 13 is_stmt 0 view .LVU400
 1338 030c 2369     		ldr	r3, [r4, #16]
 1339              	.LBE120:
 1340              	.LBE119:
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1341              		.loc 1 70 32 discriminator 2 view .LVU401
 1342 030e 1070     		strb	r0, [r2]
 1343              	.LBB122:
 1344              	.LBB121:
  54:Component/modbus/modbus_rtu_slave.c ****     {
 1345              		.loc 1 54 8 view .LVU402
 1346 0310 002B     		cmp	r3, #0
 1347 0312 00D1     		bne	.LCB1222
 1348 0314 96E6     		b	.L31	@long jump
 1349              	.LCB1222:
  56:Component/modbus/modbus_rtu_slave.c ****     }
 1350              		.loc 1 56 9 is_stmt 1 view .LVU403
 1351 0316 0521     		movs	r1, #5
 1352 0318 2800     		movs	r0, r5
 1353 031a 9847     		blx	r3
 1354              	.LVL122:
 1355 031c 92E6     		b	.L31
 1356              	.LVL123:
 1357              	.L36:
  56:Component/modbus/modbus_rtu_slave.c ****     }
 1358              		.loc 1 56 9 is_stmt 0 view .LVU404
 1359              	.LBE121:
 1360              	.LBE122:
 1361              	.LBE118:
 1362              	.LBE117:
 1363              	.LBE127:
 185:Component/modbus/modbus_rtu_slave.c ****         {
 1364              		.loc 1 185 9 is_stmt 1 view .LVU405
 185:Component/modbus/modbus_rtu_slave.c ****         {
 1365              		.loc 1 185 19 is_stmt 0 view .LVU406
 1366 031e C268     		ldr	r2, [r0, #12]
 185:Component/modbus/modbus_rtu_slave.c ****         {
 1367              		.loc 1 185 12 view .LVU407
 1368 0320 002A     		cmp	r2, #0
 1369 0322 00D1     		bne	.LCB1244
 1370 0324 8EE6     		b	.L31	@long jump
 1371              	.LCB1244:
 189:Component/modbus/modbus_rtu_slave.c ****         err = slave->on_write((struct modbus_write *)&self->message);
 1372              		.loc 1 189 9 is_stmt 1 view .LVU408
 189:Component/modbus/modbus_rtu_slave.c ****         err = slave->on_write((struct modbus_write *)&self->message);
 1373              		.loc 1 189 68 is_stmt 0 view .LVU409
 1374 0326 238E     		ldrh	r3, [r4, #48]
 1375 0328 DB05     		lsls	r3, r3, #23
 1376 032a DB0F     		lsrs	r3, r3, #31
 1377 032c D2E7     		b	.L183
 1378              	.LVL124:
 1379              	.L61:
ARM GAS  /tmp/ccJrCDWl.s 			page 38


 189:Component/modbus/modbus_rtu_slave.c ****         err = slave->on_write((struct modbus_write *)&self->message);
 1380              		.loc 1 189 68 view .LVU410
 1381              	.LBE131:
 1382              	.LBE133:
 390:Component/modbus/modbus_rtu_slave.c ****     }
 1383              		.loc 1 390 16 view .LVU411
 1384 032e 0520     		movs	r0, #5
 1385              	.LVL125:
 390:Component/modbus/modbus_rtu_slave.c ****     }
 1386              		.loc 1 390 16 view .LVU412
 1387 0330 4042     		rsbs	r0, r0, #0
 1388 0332 8BE6     		b	.L23
 1389              	.LVL126:
 1390              	.L185:
 1391              	.LBB134:
 1392              	.LBB132:
 1393              	.LBB128:
 1394              	.LBB108:
 132:Component/modbus/modbus_rtu_slave.c ****                         return;
 1395              		.loc 1 132 25 is_stmt 1 view .LVU413
 1396              	.LBB104:
 1397              	.LBI104:
  63:Component/modbus/modbus_rtu_slave.c **** {
 1398              		.loc 1 63 13 view .LVU414
 1399              	.LBB105:
  68:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.err = error;
 1400              		.loc 1 68 5 view .LVU415
  68:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.err = error;
 1401              		.loc 1 68 27 is_stmt 0 view .LVU416
 1402 0334 2D22     		movs	r2, #45
  68:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.err = error;
 1403              		.loc 1 68 33 view .LVU417
 1404 0336 8023     		movs	r3, #128
 1405 0338 A15C     		ldrb	r1, [r4, r2]
 1406 033a 5B42     		rsbs	r3, r3, #0
 1407 033c 0B43     		orrs	r3, r1
 1408 033e A354     		strb	r3, [r4, r2]
  69:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.crc = BE16(modbus_crc(self->buffer.bytes, 3));
 1409              		.loc 1 69 5 is_stmt 1 view .LVU418
  69:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.crc = BE16(modbus_crc(self->buffer.bytes, 3));
 1410              		.loc 1 69 32 is_stmt 0 view .LVU419
 1411 0340 2E23     		movs	r3, #46
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1412              		.loc 1 70 34 view .LVU420
 1413 0342 0321     		movs	r1, #3
  69:Component/modbus/modbus_rtu_slave.c ****     self->buffer.error_res.crc = BE16(modbus_crc(self->buffer.bytes, 3));
 1414              		.loc 1 69 32 view .LVU421
 1415 0344 E054     		strb	r0, [r4, r3]
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1416              		.loc 1 70 5 is_stmt 1 view .LVU422
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1417              		.loc 1 70 34 is_stmt 0 view .LVU423
 1418 0346 2800     		movs	r0, r5
 1419              	.LVL127:
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1420              		.loc 1 70 34 view .LVU424
 1421 0348 FFF7FEFF 		bl	modbus_crc
ARM GAS  /tmp/ccJrCDWl.s 			page 39


 1422              	.LVL128:
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1423              		.loc 1 70 34 discriminator 1 view .LVU425
 1424 034c 40BA     		rev16	r0, r0
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1425              		.loc 1 70 32 discriminator 2 view .LVU426
 1426 034e 019A     		ldr	r2, [sp, #4]
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1427              		.loc 1 70 34 discriminator 1 view .LVU427
 1428 0350 83B2     		uxth	r3, r0
 1429 0352 D9E7     		b	.L172
 1430              	.LVL129:
 1431              	.L39:
  70:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_on_send(self, sizeof(self->buffer.error_res));
 1432              		.loc 1 70 34 discriminator 1 view .LVU428
 1433              	.LBE105:
 1434              	.LBE104:
 1435              	.LBE108:
 1436              	.LBE128:
 120:Component/modbus/modbus_rtu_slave.c ****         }
 1437              		.loc 1 120 13 is_stmt 1 view .LVU429
 120:Component/modbus/modbus_rtu_slave.c ****         }
 1438              		.loc 1 120 43 is_stmt 0 view .LVU430
 1439 0354 2E23     		movs	r3, #46
 1440 0356 0131     		adds	r1, r1, #1
 1441 0358 E154     		strb	r1, [r4, r3]
 1442              	.LVL130:
 1443              	.LBB129:
 122:Component/modbus/modbus_rtu_slave.c ****         {
 1444              		.loc 1 122 40 is_stmt 1 discriminator 1 view .LVU431
 1445 035a DCE6     		b	.L40
 1446              	.LVL131:
 1447              	.L46:
 122:Component/modbus/modbus_rtu_slave.c ****         {
 1448              		.loc 1 122 40 is_stmt 0 discriminator 1 view .LVU432
 1449              	.LBE129:
 179:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_regs_res.data[len] = BE16(crc);
 1450              		.loc 1 179 9 is_stmt 1 view .LVU433
 179:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_regs_res.data[len] = BE16(crc);
 1451              		.loc 1 179 72 is_stmt 0 view .LVU434
 1452 035c 2E26     		movs	r6, #46
 1453              	.LVL132:
 179:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_regs_res.data[len] = BE16(crc);
 1454              		.loc 1 179 72 view .LVU435
 1455 035e A15D     		ldrb	r1, [r4, r6]
 179:Component/modbus/modbus_rtu_slave.c ****         self->buffer.read_regs_res.data[len] = BE16(crc);
 1456              		.loc 1 179 15 view .LVU436
 1457 0360 2800     		movs	r0, r5
 1458 0362 0331     		adds	r1, r1, #3
 1459 0364 FFF7FEFF 		bl	modbus_crc
 1460              	.LVL133:
 180:Component/modbus/modbus_rtu_slave.c ****         __modbus_rtu_slave_on_send(self, self->buffer.read_regs_res.cnt + 5);
 1461              		.loc 1 180 9 is_stmt 1 view .LVU437
 180:Component/modbus/modbus_rtu_slave.c ****         __modbus_rtu_slave_on_send(self, self->buffer.read_regs_res.cnt + 5);
 1462              		.loc 1 180 46 is_stmt 0 discriminator 1 view .LVU438
 1463 0368 4346     		mov	r3, r8
 180:Component/modbus/modbus_rtu_slave.c ****         __modbus_rtu_slave_on_send(self, self->buffer.read_regs_res.cnt + 5);
ARM GAS  /tmp/ccJrCDWl.s 			page 40


 1464              		.loc 1 180 48 view .LVU439
 1465 036a 40BA     		rev16	r0, r0
 1466              	.LVL134:
 180:Component/modbus/modbus_rtu_slave.c ****         __modbus_rtu_slave_on_send(self, self->buffer.read_regs_res.cnt + 5);
 1467              		.loc 1 180 46 discriminator 1 view .LVU440
 1468 036c 1433     		adds	r3, r3, #20
 180:Component/modbus/modbus_rtu_slave.c ****         __modbus_rtu_slave_on_send(self, self->buffer.read_regs_res.cnt + 5);
 1469              		.loc 1 180 48 view .LVU441
 1470 036e 82B2     		uxth	r2, r0
 180:Component/modbus/modbus_rtu_slave.c ****         __modbus_rtu_slave_on_send(self, self->buffer.read_regs_res.cnt + 5);
 1471              		.loc 1 180 46 discriminator 1 view .LVU442
 1472 0370 5B00     		lsls	r3, r3, #1
 1473 0372 E318     		adds	r3, r4, r3
 1474 0374 120A     		lsrs	r2, r2, #8
 1475 0376 D871     		strb	r0, [r3, #7]
 1476 0378 1A72     		strb	r2, [r3, #8]
 181:Component/modbus/modbus_rtu_slave.c ****         break;
 1477              		.loc 1 181 9 is_stmt 1 view .LVU443
 1478              	.LVL135:
 1479              	.LBB130:
 1480              	.LBI111:
  52:Component/modbus/modbus_rtu_slave.c **** {
 1481              		.loc 1 52 13 view .LVU444
 1482              	.LBB114:
  54:Component/modbus/modbus_rtu_slave.c ****     {
 1483              		.loc 1 54 5 view .LVU445
  54:Component/modbus/modbus_rtu_slave.c ****     {
 1484              		.loc 1 54 13 is_stmt 0 view .LVU446
 1485 037a 2369     		ldr	r3, [r4, #16]
  54:Component/modbus/modbus_rtu_slave.c ****     {
 1486              		.loc 1 54 8 view .LVU447
 1487 037c 002B     		cmp	r3, #0
 1488 037e 00D1     		bne	.LCB1380
 1489 0380 60E6     		b	.L31	@long jump
 1490              	.LCB1380:
  56:Component/modbus/modbus_rtu_slave.c ****     }
 1491              		.loc 1 56 9 is_stmt 1 view .LVU448
 1492              	.LBE114:
 1493              	.LBE130:
 181:Component/modbus/modbus_rtu_slave.c ****         break;
 1494              		.loc 1 181 68 is_stmt 0 view .LVU449
 1495 0382 A15D     		ldrb	r1, [r4, r6]
 1496 0384 12E7     		b	.L167
 1497              	.LVL136:
 1498              	.L56:
 112:Component/modbus/modbus_rtu_slave.c ****         {
 1499              		.loc 1 112 27 view .LVU450
 1500 0386 227D     		ldrb	r2, [r4, #20]
 1501 0388 44E7     		b	.L58
 1502              	.L188:
 1503 038a C046     		.align	2
 1504              	.L187:
 1505 038c 00000000 		.word	.L33
 1506              	.LBE132:
 1507              	.LBE134:
 1508              		.cfi_endproc
 1509              	.LFE11:
ARM GAS  /tmp/ccJrCDWl.s 			page 41


 1511              		.section	.text.modbus_rtu_slave_on_recv,"ax",%progbits
 1512              		.align	1
 1513              		.p2align 2,,3
 1514              		.global	modbus_rtu_slave_on_recv
 1515              		.syntax unified
 1516              		.code	16
 1517              		.thumb_func
 1519              	modbus_rtu_slave_on_recv:
 1520              	.LVL137:
 1521              	.LFB12:
 409:Component/modbus/modbus_rtu_slave.c **** 
 410:Component/modbus/modbus_rtu_slave.c **** /// @brief
 411:Component/modbus/modbus_rtu_slave.c **** /// @param self
 412:Component/modbus/modbus_rtu_slave.c **** /// @param data
 413:Component/modbus/modbus_rtu_slave.c **** /// @param len
 414:Component/modbus/modbus_rtu_slave.c **** /// @return
 415:Component/modbus/modbus_rtu_slave.c **** int modbus_rtu_slave_on_recv(modbus_rtu_slave_t self, const void *data, const uint32_t len)
 416:Component/modbus/modbus_rtu_slave.c **** {
 1522              		.loc 1 416 1 is_stmt 1 view -0
 1523              		.cfi_startproc
 1524              		@ args = 0, pretend = 0, frame = 0
 1525              		@ frame_needed = 0, uses_anonymous_args = 0
 417:Component/modbus/modbus_rtu_slave.c ****     if (!self)
 1526              		.loc 1 417 5 view .LVU452
 416:Component/modbus/modbus_rtu_slave.c ****     if (!self)
 1527              		.loc 1 416 1 is_stmt 0 view .LVU453
 1528 0000 70B5     		push	{r4, r5, r6, lr}
 1529              	.LCFI7:
 1530              		.cfi_def_cfa_offset 16
 1531              		.cfi_offset 4, -16
 1532              		.cfi_offset 5, -12
 1533              		.cfi_offset 6, -8
 1534              		.cfi_offset 14, -4
 416:Component/modbus/modbus_rtu_slave.c ****     if (!self)
 1535              		.loc 1 416 1 view .LVU454
 1536 0002 0400     		movs	r4, r0
 1537 0004 1500     		movs	r5, r2
 1538              		.loc 1 417 8 view .LVU455
 1539 0006 0028     		cmp	r0, #0
 1540 0008 13D0     		beq	.L193
 418:Component/modbus/modbus_rtu_slave.c ****     {
 419:Component/modbus/modbus_rtu_slave.c ****         return -MODBUS_ERROR_NULL_POINTER;
 420:Component/modbus/modbus_rtu_slave.c ****     }
 421:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_lock(self);
 1541              		.loc 1 421 5 is_stmt 1 view .LVU456
 422:Component/modbus/modbus_rtu_slave.c ****     if ((self->length + len) > MODBUS_BUFFER_SIZE)
 1542              		.loc 1 422 5 view .LVU457
 1543              		.loc 1 422 14 is_stmt 0 view .LVU458
 1544 000a 4068     		ldr	r0, [r0, #4]
 1545              	.LVL138:
 1546              		.loc 1 422 23 view .LVU459
 1547 000c 8318     		adds	r3, r0, r2
 1548              		.loc 1 422 8 view .LVU460
 1549 000e 8422     		movs	r2, #132
 1550              	.LVL139:
 1551              		.loc 1 422 8 view .LVU461
 1552 0010 5200     		lsls	r2, r2, #1
ARM GAS  /tmp/ccJrCDWl.s 			page 42


 1553 0012 9342     		cmp	r3, r2
 1554 0014 0BD8     		bhi	.L191
 423:Component/modbus/modbus_rtu_slave.c ****     {
 424:Component/modbus/modbus_rtu_slave.c ****         return -MODBUS_ERROR_NO_ERROR;
 425:Component/modbus/modbus_rtu_slave.c ****     }
 426:Component/modbus/modbus_rtu_slave.c ****     if (data)
 1555              		.loc 1 426 5 is_stmt 1 view .LVU462
 1556              		.loc 1 426 8 is_stmt 0 view .LVU463
 1557 0016 0029     		cmp	r1, #0
 1558 0018 06D0     		beq	.L192
 427:Component/modbus/modbus_rtu_slave.c ****     {
 428:Component/modbus/modbus_rtu_slave.c ****         memcpy(&self->buffer.bytes[self->length], data, len);
 1559              		.loc 1 428 9 is_stmt 1 view .LVU464
 1560              		.loc 1 428 16 is_stmt 0 view .LVU465
 1561 001a 2C30     		adds	r0, r0, #44
 1562              		.loc 1 428 9 view .LVU466
 1563 001c 2A00     		movs	r2, r5
 1564              		.loc 1 428 16 view .LVU467
 1565 001e 2018     		adds	r0, r4, r0
 1566              		.loc 1 428 9 view .LVU468
 1567 0020 FFF7FEFF 		bl	memcpy
 1568              	.LVL140:
 429:Component/modbus/modbus_rtu_slave.c ****     }
 430:Component/modbus/modbus_rtu_slave.c ****     self->length += len;
 1569              		.loc 1 430 18 view .LVU469
 1570 0024 6368     		ldr	r3, [r4, #4]
 1571 0026 EB18     		adds	r3, r5, r3
 1572              	.L192:
 1573              		.loc 1 430 5 is_stmt 1 view .LVU470
 1574              		.loc 1 430 18 is_stmt 0 view .LVU471
 1575 0028 6360     		str	r3, [r4, #4]
 431:Component/modbus/modbus_rtu_slave.c ****     self->interval = self->reset_interval;
 1576              		.loc 1 431 5 is_stmt 1 view .LVU472
 1577              		.loc 1 431 20 is_stmt 0 view .LVU473
 1578 002a E368     		ldr	r3, [r4, #12]
 1579 002c A360     		str	r3, [r4, #8]
 432:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_unlock(self);
 1580              		.loc 1 432 5 is_stmt 1 view .LVU474
 433:Component/modbus/modbus_rtu_slave.c ****     return -MODBUS_ERROR_NO_ERROR;
 1581              		.loc 1 433 5 view .LVU475
 1582              	.L191:
 424:Component/modbus/modbus_rtu_slave.c ****     }
 1583              		.loc 1 424 16 is_stmt 0 view .LVU476
 1584 002e 0020     		movs	r0, #0
 1585              	.L189:
 434:Component/modbus/modbus_rtu_slave.c **** }
 1586              		.loc 1 434 1 view .LVU477
 1587              		@ sp needed
 1588              	.LVL141:
 1589              	.LVL142:
 1590              		.loc 1 434 1 view .LVU478
 1591 0030 70BD     		pop	{r4, r5, r6, pc}
 1592              	.LVL143:
 1593              	.L193:
 419:Component/modbus/modbus_rtu_slave.c ****     }
 1594              		.loc 1 419 16 view .LVU479
 1595 0032 0520     		movs	r0, #5
ARM GAS  /tmp/ccJrCDWl.s 			page 43


 1596              	.LVL144:
 419:Component/modbus/modbus_rtu_slave.c ****     }
 1597              		.loc 1 419 16 view .LVU480
 1598 0034 4042     		rsbs	r0, r0, #0
 1599 0036 FBE7     		b	.L189
 1600              		.cfi_endproc
 1601              	.LFE12:
 1603              		.section	.text.modbus_rtu_slave_set_on_send,"ax",%progbits
 1604              		.align	1
 1605              		.p2align 2,,3
 1606              		.global	modbus_rtu_slave_set_on_send
 1607              		.syntax unified
 1608              		.code	16
 1609              		.thumb_func
 1611              	modbus_rtu_slave_set_on_send:
 1612              	.LVL145:
 1613              	.LFB13:
 435:Component/modbus/modbus_rtu_slave.c **** 
 436:Component/modbus/modbus_rtu_slave.c **** /// @brief
 437:Component/modbus/modbus_rtu_slave.c **** /// @param self
 438:Component/modbus/modbus_rtu_slave.c **** /// @param point
 439:Component/modbus/modbus_rtu_slave.c **** /// @return
 440:Component/modbus/modbus_rtu_slave.c **** int modbus_rtu_slave_set_on_send(modbus_rtu_slave_t self, void (*point)(void *, uint32_t))
 441:Component/modbus/modbus_rtu_slave.c **** {
 1614              		.loc 1 441 1 is_stmt 1 view -0
 1615              		.cfi_startproc
 1616              		@ args = 0, pretend = 0, frame = 0
 1617              		@ frame_needed = 0, uses_anonymous_args = 0
 1618              		@ link register save eliminated.
 442:Component/modbus/modbus_rtu_slave.c ****     if (!(self && point))
 1619              		.loc 1 442 5 view .LVU482
 1620              		.loc 1 442 8 is_stmt 0 view .LVU483
 1621 0000 0028     		cmp	r0, #0
 1622 0002 04D0     		beq	.L200
 1623              		.loc 1 442 9 discriminator 1 view .LVU484
 1624 0004 0029     		cmp	r1, #0
 1625 0006 02D0     		beq	.L200
 443:Component/modbus/modbus_rtu_slave.c ****     {
 444:Component/modbus/modbus_rtu_slave.c ****         return -MODBUS_ERROR_NULL_POINTER;
 445:Component/modbus/modbus_rtu_slave.c ****     }
 446:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_lock(self);
 1626              		.loc 1 446 5 is_stmt 1 view .LVU485
 447:Component/modbus/modbus_rtu_slave.c ****     self->on_send = point;
 1627              		.loc 1 447 5 view .LVU486
 1628              		.loc 1 447 19 is_stmt 0 view .LVU487
 1629 0008 0161     		str	r1, [r0, #16]
 448:Component/modbus/modbus_rtu_slave.c ****     __modbus_rtu_slave_unlock(self);
 1630              		.loc 1 448 5 is_stmt 1 view .LVU488
 449:Component/modbus/modbus_rtu_slave.c ****     return -MODBUS_ERROR_NO_ERROR;
 1631              		.loc 1 449 5 view .LVU489
 1632              		.loc 1 449 12 is_stmt 0 view .LVU490
 1633 000a 0020     		movs	r0, #0
 1634              	.LVL146:
 1635              	.L197:
 450:Component/modbus/modbus_rtu_slave.c **** }
 1636              		.loc 1 450 1 view .LVU491
 1637              		@ sp needed
ARM GAS  /tmp/ccJrCDWl.s 			page 44


 1638 000c 7047     		bx	lr
 1639              	.LVL147:
 1640              	.L200:
 444:Component/modbus/modbus_rtu_slave.c ****     }
 1641              		.loc 1 444 16 view .LVU492
 1642 000e 0520     		movs	r0, #5
 1643              	.LVL148:
 444:Component/modbus/modbus_rtu_slave.c ****     }
 1644              		.loc 1 444 16 view .LVU493
 1645 0010 4042     		rsbs	r0, r0, #0
 1646 0012 FBE7     		b	.L197
 1647              		.cfi_endproc
 1648              	.LFE13:
 1650              		.section	.text.modbus_rtu_slave_add_node,"ax",%progbits
 1651              		.align	1
 1652              		.p2align 2,,3
 1653              		.global	modbus_rtu_slave_add_node
 1654              		.syntax unified
 1655              		.code	16
 1656              		.thumb_func
 1658              	modbus_rtu_slave_add_node:
 1659              	.LVL149:
 1660              	.LFB14:
 451:Component/modbus/modbus_rtu_slave.c **** 
 452:Component/modbus/modbus_rtu_slave.c **** /// @brief
 453:Component/modbus/modbus_rtu_slave.c **** /// @param self
 454:Component/modbus/modbus_rtu_slave.c **** /// @param slave
 455:Component/modbus/modbus_rtu_slave.c **** /// @return
 456:Component/modbus/modbus_rtu_slave.c **** int modbus_rtu_slave_add_node(modbus_rtu_slave_t self, modbus_slave_t slave)
 457:Component/modbus/modbus_rtu_slave.c **** {
 1661              		.loc 1 457 1 is_stmt 1 view -0
 1662              		.cfi_startproc
 1663              		@ args = 0, pretend = 0, frame = 0
 1664              		@ frame_needed = 0, uses_anonymous_args = 0
 458:Component/modbus/modbus_rtu_slave.c ****     return modbus_slave_add_node(&self->slave, slave);
 1665              		.loc 1 458 5 view .LVU495
 457:Component/modbus/modbus_rtu_slave.c ****     return modbus_slave_add_node(&self->slave, slave);
 1666              		.loc 1 457 1 is_stmt 0 view .LVU496
 1667 0000 10B5     		push	{r4, lr}
 1668              	.LCFI8:
 1669              		.cfi_def_cfa_offset 8
 1670              		.cfi_offset 4, -8
 1671              		.cfi_offset 14, -4
 1672              		.loc 1 458 12 view .LVU497
 1673 0002 1C30     		adds	r0, r0, #28
 1674              	.LVL150:
 1675              		.loc 1 458 12 view .LVU498
 1676 0004 FFF7FEFF 		bl	modbus_slave_add_node
 1677              	.LVL151:
 459:Component/modbus/modbus_rtu_slave.c **** }
 1678              		.loc 1 459 1 view .LVU499
 1679              		@ sp needed
 1680 0008 10BD     		pop	{r4, pc}
 1681              		.cfi_endproc
 1682              	.LFE14:
 1684 000a C046     		.section	.text.modbus_rtu_slave_create_node,"ax",%progbits
 1685              		.align	1
ARM GAS  /tmp/ccJrCDWl.s 			page 45


 1686              		.p2align 2,,3
 1687              		.global	modbus_rtu_slave_create_node
 1688              		.syntax unified
 1689              		.code	16
 1690              		.thumb_func
 1692              	modbus_rtu_slave_create_node:
 1693              	.LVL152:
 1694              	.LFB15:
 460:Component/modbus/modbus_rtu_slave.c **** 
 461:Component/modbus/modbus_rtu_slave.c **** /// @brief
 462:Component/modbus/modbus_rtu_slave.c **** /// @param self
 463:Component/modbus/modbus_rtu_slave.c **** /// @param id
 464:Component/modbus/modbus_rtu_slave.c **** /// @param MODBUS_HOOK_FUNC
 465:Component/modbus/modbus_rtu_slave.c **** /// @return
 466:Component/modbus/modbus_rtu_slave.c **** int modbus_rtu_slave_create_node(modbus_rtu_slave_t self, uint8_t id, MODBUS_READ_HOOK_FUNC(on_read
 467:Component/modbus/modbus_rtu_slave.c **** {
 1695              		.loc 1 467 1 is_stmt 1 view -0
 1696              		.cfi_startproc
 1697              		@ args = 0, pretend = 0, frame = 0
 1698              		@ frame_needed = 0, uses_anonymous_args = 0
 468:Component/modbus/modbus_rtu_slave.c ****     return modbus_slave_node_create(&self->slave, id, on_read, on_write);
 1699              		.loc 1 468 5 view .LVU501
 467:Component/modbus/modbus_rtu_slave.c ****     return modbus_slave_node_create(&self->slave, id, on_read, on_write);
 1700              		.loc 1 467 1 is_stmt 0 view .LVU502
 1701 0000 10B5     		push	{r4, lr}
 1702              	.LCFI9:
 1703              		.cfi_def_cfa_offset 8
 1704              		.cfi_offset 4, -8
 1705              		.cfi_offset 14, -4
 1706              		.loc 1 468 12 view .LVU503
 1707 0002 1C30     		adds	r0, r0, #28
 1708              	.LVL153:
 1709              		.loc 1 468 12 view .LVU504
 1710 0004 FFF7FEFF 		bl	modbus_slave_node_create
 1711              	.LVL154:
 469:Component/modbus/modbus_rtu_slave.c **** }
 1712              		.loc 1 469 1 view .LVU505
 1713              		@ sp needed
 1714 0008 10BD     		pop	{r4, pc}
 1715              		.cfi_endproc
 1716              	.LFE15:
 1718 000a C046     		.section	.text.modbus_rtu_slave_remove_node,"ax",%progbits
 1719              		.align	1
 1720              		.p2align 2,,3
 1721              		.global	modbus_rtu_slave_remove_node
 1722              		.syntax unified
 1723              		.code	16
 1724              		.thumb_func
 1726              	modbus_rtu_slave_remove_node:
 1727              	.LVL155:
 1728              	.LFB16:
 470:Component/modbus/modbus_rtu_slave.c **** 
 471:Component/modbus/modbus_rtu_slave.c **** /// @brief
 472:Component/modbus/modbus_rtu_slave.c **** /// @param self
 473:Component/modbus/modbus_rtu_slave.c **** /// @param id
 474:Component/modbus/modbus_rtu_slave.c **** /// @return
 475:Component/modbus/modbus_rtu_slave.c **** int modbus_rtu_slave_remove_node(modbus_rtu_slave_t self, uint8_t id)
ARM GAS  /tmp/ccJrCDWl.s 			page 46


 476:Component/modbus/modbus_rtu_slave.c **** {
 1729              		.loc 1 476 1 is_stmt 1 view -0
 1730              		.cfi_startproc
 1731              		@ args = 0, pretend = 0, frame = 0
 1732              		@ frame_needed = 0, uses_anonymous_args = 0
 477:Component/modbus/modbus_rtu_slave.c ****     return modbus_slave_remove_node(&self->slave, id);
 1733              		.loc 1 477 5 view .LVU507
 476:Component/modbus/modbus_rtu_slave.c ****     return modbus_slave_remove_node(&self->slave, id);
 1734              		.loc 1 476 1 is_stmt 0 view .LVU508
 1735 0000 10B5     		push	{r4, lr}
 1736              	.LCFI10:
 1737              		.cfi_def_cfa_offset 8
 1738              		.cfi_offset 4, -8
 1739              		.cfi_offset 14, -4
 1740              		.loc 1 477 12 view .LVU509
 1741 0002 1C30     		adds	r0, r0, #28
 1742              	.LVL156:
 1743              		.loc 1 477 12 view .LVU510
 1744 0004 FFF7FEFF 		bl	modbus_slave_remove_node
 1745              	.LVL157:
 478:Component/modbus/modbus_rtu_slave.c **** }
 1746              		.loc 1 478 1 view .LVU511
 1747              		@ sp needed
 1748 0008 10BD     		pop	{r4, pc}
 1749              		.cfi_endproc
 1750              	.LFE16:
 1752 000a C046     		.section	.text.modbus_rtu_slave_delete_node,"ax",%progbits
 1753              		.align	1
 1754              		.p2align 2,,3
 1755              		.global	modbus_rtu_slave_delete_node
 1756              		.syntax unified
 1757              		.code	16
 1758              		.thumb_func
 1760              	modbus_rtu_slave_delete_node:
 1761              	.LVL158:
 1762              	.LFB17:
 479:Component/modbus/modbus_rtu_slave.c **** 
 480:Component/modbus/modbus_rtu_slave.c **** /// @brief
 481:Component/modbus/modbus_rtu_slave.c **** /// @param self
 482:Component/modbus/modbus_rtu_slave.c **** /// @param id
 483:Component/modbus/modbus_rtu_slave.c **** /// @return
 484:Component/modbus/modbus_rtu_slave.c **** int modbus_rtu_slave_delete_node(modbus_rtu_slave_t self, uint8_t id)
 485:Component/modbus/modbus_rtu_slave.c **** {
 1763              		.loc 1 485 1 is_stmt 1 view -0
 1764              		.cfi_startproc
 1765              		@ args = 0, pretend = 0, frame = 0
 1766              		@ frame_needed = 0, uses_anonymous_args = 0
 486:Component/modbus/modbus_rtu_slave.c ****     return modbus_slave_delete_node(&self->slave, id);
 1767              		.loc 1 486 5 view .LVU513
 485:Component/modbus/modbus_rtu_slave.c ****     return modbus_slave_delete_node(&self->slave, id);
 1768              		.loc 1 485 1 is_stmt 0 view .LVU514
 1769 0000 10B5     		push	{r4, lr}
 1770              	.LCFI11:
 1771              		.cfi_def_cfa_offset 8
 1772              		.cfi_offset 4, -8
 1773              		.cfi_offset 14, -4
 1774              		.loc 1 486 12 view .LVU515
ARM GAS  /tmp/ccJrCDWl.s 			page 47


 1775 0002 1C30     		adds	r0, r0, #28
 1776              	.LVL159:
 1777              		.loc 1 486 12 view .LVU516
 1778 0004 FFF7FEFF 		bl	modbus_slave_delete_node
 1779              	.LVL160:
 487:Component/modbus/modbus_rtu_slave.c **** }
 1780              		.loc 1 487 1 view .LVU517
 1781              		@ sp needed
 1782 0008 10BD     		pop	{r4, pc}
 1783              		.cfi_endproc
 1784              	.LFE17:
 1786 000a C046     		.text
 1787              	.Letext0:
 1788              		.file 2 "/home/ha/toolchain/arm-gnu-toolchain-14.3/arm-none-eabi/include/machine/_default_types.h"
 1789              		.file 3 "/home/ha/toolchain/arm-gnu-toolchain-14.3/arm-none-eabi/include/sys/_stdint.h"
 1790              		.file 4 "Component/modbus/modbus_define.h"
 1791              		.file 5 "Component/modbus/modbus_rtu.h"
 1792              		.file 6 "Component/modbus/modbus_rtu_slave.h"
 1793              		.file 7 "/home/ha/toolchain/arm-gnu-toolchain-14.3/arm-none-eabi/include/string.h"
 1794              		.file 8 "/home/ha/toolchain/arm-gnu-toolchain-14.3/arm-none-eabi/include/stdlib.h"
 1795              		.file 9 "<built-in>"
ARM GAS  /tmp/ccJrCDWl.s 			page 48


DEFINED SYMBOLS
                            *ABS*:00000000 modbus_rtu_slave.c
     /tmp/ccJrCDWl.s:17     .text.modbus_rtu_slave_init:00000000 $t
     /tmp/ccJrCDWl.s:24     .text.modbus_rtu_slave_init:00000000 modbus_rtu_slave_init
     /tmp/ccJrCDWl.s:96     .text.modbus_rtu_slave_create:00000000 $t
     /tmp/ccJrCDWl.s:103    .text.modbus_rtu_slave_create:00000000 modbus_rtu_slave_create
     /tmp/ccJrCDWl.s:182    .text.modbus_rtu_slave_stop:00000000 $t
     /tmp/ccJrCDWl.s:189    .text.modbus_rtu_slave_stop:00000000 modbus_rtu_slave_stop
     /tmp/ccJrCDWl.s:263    .text.modbus_rtu_slave_delete:00000000 $t
     /tmp/ccJrCDWl.s:270    .text.modbus_rtu_slave_delete:00000000 modbus_rtu_slave_delete
     /tmp/ccJrCDWl.s:359    .text.modbus_rtu_slave_buffer_size:00000000 $t
     /tmp/ccJrCDWl.s:366    .text.modbus_rtu_slave_buffer_size:00000000 modbus_rtu_slave_buffer_size
     /tmp/ccJrCDWl.s:401    .text.modbus_rtu_slave_buffer_addr:00000000 $t
     /tmp/ccJrCDWl.s:408    .text.modbus_rtu_slave_buffer_addr:00000000 modbus_rtu_slave_buffer_addr
     /tmp/ccJrCDWl.s:441    .text.modbus_rtu_slave_on_step:00000000 $t
     /tmp/ccJrCDWl.s:448    .text.modbus_rtu_slave_on_step:00000000 modbus_rtu_slave_on_step
     /tmp/ccJrCDWl.s:630    .rodata.modbus_rtu_slave_on_step:00000000 $d
     /tmp/ccJrCDWl.s:1505   .text.modbus_rtu_slave_on_step:0000038c $d
     /tmp/ccJrCDWl.s:1512   .text.modbus_rtu_slave_on_recv:00000000 $t
     /tmp/ccJrCDWl.s:1519   .text.modbus_rtu_slave_on_recv:00000000 modbus_rtu_slave_on_recv
     /tmp/ccJrCDWl.s:1604   .text.modbus_rtu_slave_set_on_send:00000000 $t
     /tmp/ccJrCDWl.s:1611   .text.modbus_rtu_slave_set_on_send:00000000 modbus_rtu_slave_set_on_send
     /tmp/ccJrCDWl.s:1651   .text.modbus_rtu_slave_add_node:00000000 $t
     /tmp/ccJrCDWl.s:1658   .text.modbus_rtu_slave_add_node:00000000 modbus_rtu_slave_add_node
     /tmp/ccJrCDWl.s:1685   .text.modbus_rtu_slave_create_node:00000000 $t
     /tmp/ccJrCDWl.s:1692   .text.modbus_rtu_slave_create_node:00000000 modbus_rtu_slave_create_node
     /tmp/ccJrCDWl.s:1719   .text.modbus_rtu_slave_remove_node:00000000 $t
     /tmp/ccJrCDWl.s:1726   .text.modbus_rtu_slave_remove_node:00000000 modbus_rtu_slave_remove_node
     /tmp/ccJrCDWl.s:1753   .text.modbus_rtu_slave_delete_node:00000000 $t
     /tmp/ccJrCDWl.s:1760   .text.modbus_rtu_slave_delete_node:00000000 modbus_rtu_slave_delete_node

UNDEFINED SYMBOLS
memset
modbus_slave_root_init
calloc
free
modbus_crc
modbus_slave_find_node
memcpy
modbus_slave_add_node
modbus_slave_node_create
modbus_slave_remove_node
modbus_slave_delete_node
