Browse Source

可正常解析MCU数据

huang_chao 1 year ago
parent
commit
1597e4fa71
40 changed files with 414 additions and 296 deletions
  1. 144 29
      components/ql-application/spi/spi_demo.c
  2. BIN
      target/EC600GCN_LA_RELEASE/8850XM_cat1_open.elf
  3. BIN
      target/EC600GCN_LA_RELEASE/8850XM_cat1_open_RELEASE.pac
  4. BIN
      target/EC600GCN_LA_RELEASE/8850XM_cat1_open_RELEASE_merge.pac
  5. BIN
      target/EC600GCN_LA_RELEASE/app/RELEASE_APP.appimg
  6. BIN
      target/EC600GCN_LA_RELEASE/app/RELEASE_APP.elf
  7. BIN
      target/EC600GCN_LA_RELEASE/app/RELEASE_APP.img
  8. BIN
      target/EC600GCN_LA_RELEASE/app/RELEASE_APP.img.chaincert
  9. BIN
      target/EC600GCN_LA_RELEASE/app/RELEASE_APP.img.debugcert
  10. BIN
      target/EC600GCN_LA_RELEASE/app/RELEASE_APP.img.enc
  11. BIN
      target/EC600GCN_LA_RELEASE/app/RELEASE_APP.img.keycert
  12. 270 267
      target/EC600GCN_LA_RELEASE/app/RELEASE_APP.map
  13. BIN
      target/EC600GCN_LA_RELEASE/app/RELEASE_APP.pac
  14. BIN
      target/EC600GCN_LA_RELEASE/app/RELEASE_APP.sign.img
  15. BIN
      target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.img
  16. BIN
      target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.img.chaincert
  17. BIN
      target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.img.debugcert
  18. BIN
      target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.img.enc
  19. BIN
      target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.img.keycert
  20. BIN
      target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.sign.img
  21. BIN
      target/EC600GCN_LA_RELEASE/prepack/appimg_flash_delete.pac
  22. BIN
      target/EC600GCN_LA_RELEASE/prepack/boot.img
  23. BIN
      target/EC600GCN_LA_RELEASE/prepack/boot.img.chaincert
  24. BIN
      target/EC600GCN_LA_RELEASE/prepack/boot.img.debugcert
  25. BIN
      target/EC600GCN_LA_RELEASE/prepack/boot.img.enc
  26. BIN
      target/EC600GCN_LA_RELEASE/prepack/boot.img.keycert
  27. BIN
      target/EC600GCN_LA_RELEASE/prepack/boot.sign.img
  28. BIN
      target/EC600GCN_LA_RELEASE/prepack/norfdl.img
  29. BIN
      target/EC600GCN_LA_RELEASE/prepack/norfdl.img.chaincert
  30. BIN
      target/EC600GCN_LA_RELEASE/prepack/norfdl.img.debugcert
  31. BIN
      target/EC600GCN_LA_RELEASE/prepack/norfdl.img.enc
  32. BIN
      target/EC600GCN_LA_RELEASE/prepack/norfdl.img.keycert
  33. BIN
      target/EC600GCN_LA_RELEASE/prepack/norfdl.sign.img
  34. BIN
      target/EC600GCN_LA_RELEASE/prepack/spl.img
  35. BIN
      target/EC600GCN_LA_RELEASE/prepack/spl.img.chaincert
  36. BIN
      target/EC600GCN_LA_RELEASE/prepack/spl.img.debugcert
  37. BIN
      target/EC600GCN_LA_RELEASE/prepack/spl.img.enc
  38. BIN
      target/EC600GCN_LA_RELEASE/prepack/spl.img.keycert
  39. BIN
      target/EC600GCN_LA_RELEASE/prepack/spl.sign.img
  40. BIN
      智锂MCU和MPU通信协议1.0.3.docx

+ 144 - 29
components/ql-application/spi/spi_demo.c

@@ -216,15 +216,17 @@ void ql_spi_demo_cb_handler(ql_spi_irq_s cause)
 static void ql_spi_demo_task_pthread(void *ctx)
 {
     QlOSStatus err = 0;
-
+    unsigned char *outdata = NULL;
     unsigned short outlen;
-
-    //unsigned short inlen;
+    unsigned char *indata = NULL;
+    unsigned short inlen;
+    unsigned char *out_mal_data = NULL;
+    unsigned char *in_mal_data = NULL;
     ql_errcode_gpio ret;
     ql_spi_clk_e spiclk;
     ql_spi_transfer_mode_e transmode;
     unsigned int framesize;
-    //
+    unsigned int tx_free = 0;
     ql_spi_config_s spi_config = {0};
     
     if (QL_CUR_SPI_CS_PIN == QUEC_PIN_NONE || QL_CUR_SPI_CS_PIN == QUEC_PIN_NONE || \
@@ -295,6 +297,9 @@ static void ql_spi_demo_task_pthread(void *ctx)
         ql_spi_irq_s mask = {0};
         mask.rx_dma_done = 1;
         mask.tx_dma_done = 1;
+        //mask.tx_threshold = QL_SPI_TRIGGER_4_DATA;
+        //mask.rx_threshold = QL_SPI_TRIGGER_4_DATA;
+
         ql_rtos_semaphore_create(&spi_demo_write, 0);
         ql_rtos_semaphore_create(&spi_demo_read, 0);
         ql_spi_set_irq(QL_CUR_SPI_PORT, mask, ql_spi_demo_cb_handler);
@@ -307,43 +312,153 @@ static void ql_spi_demo_task_pthread(void *ctx)
     ql_spi_cs_auto(QL_CUR_SPI_PORT);
 
     //使用QL_SPI_DMA_IRQ模式,传输一次最大的数据量为512个字节,如果采用16bit传输数据,需要填充256字节无效数据用于DMA对齐,实际有效最大数据量为256字节
-    outlen = SPI_BUF_LEN;
-    //inlen = SPI_BUF_LEN;
-    unsigned char outdata[SPI_BUF_LEN] = {0};
-    unsigned char indata[SPI_BUF_LEN] = {0};
+#if QL_SPI_16BIT_DMA
+    outlen = QL_SPI_DMA_IRQ_SIZE/2;
+    inlen = QL_SPI_DMA_IRQ_SIZE/2;
+#else
+    outlen = QL_SPI_DMA_IRQ_SIZE;
+    inlen = QL_SPI_DMA_IRQ_SIZE;
+#endif
+    out_mal_data = (unsigned char *)malloc(QL_SPI_DMA_ADDR_ALIN+outlen);
+    in_mal_data = (unsigned char *)malloc(QL_SPI_DMA_ADDR_ALIN+outlen);
+    if (out_mal_data == NULL || in_mal_data == NULL)
+    {
+        QL_SPI_DEMO_LOG("malloc err");
+        goto QL_SPI_EXIT;
+    }
+
+    //使用QL_SPI_DMA_POLLING和QL_SPI_DMA_IRQ模式,使用的地址必须4字节对齐
+    if(transmode == QL_SPI_DMA_POLLING || transmode == QL_SPI_DMA_IRQ)
+    {
+        outdata = (unsigned char *)OSI_ALIGN_UP(out_mal_data, QL_SPI_DMA_ADDR_ALIN);
+        indata = (unsigned char *)OSI_ALIGN_UP(in_mal_data, QL_SPI_DMA_ADDR_ALIN);
+    }
+    else
+    {
+        outdata = out_mal_data;
+        indata = in_mal_data;
+    }
+    
+    memset(outdata, 0x00, outlen);
+    memset(indata, 0x00, inlen);
+    ql_spi_flash_data_printf(outdata, outlen);
+#if QL_SPI_DEMO_LOW_POWER_USE    
+    ql_autosleep_enable(QL_ALLOW_SLEEP);
+    ql_rtos_task_sleep_s(2);
+#endif
+    static uint8_t cmd_type = 0;
     while(1)
     {
 #if QL_SPI_DEMO_LOW_POWER_USE
         ql_lpm_wakelock_lock(spi_power_lock);
 #endif
         ql_spi_cs_low(QL_CUR_SPI_PORT);
-        spi_demo_wait_write_read = QL_SPI_DEMO_WAIT_WRITE;
-        //不允许进入慢时钟
-        ql_spi_request_sys_clk(QL_CUR_SPI_PORT);
-
-        QL_SPI_DEMO_LOG("spi send data\n");
-        data_mpu_pack(outdata, &outlen, 0X50, 0X01);
+#if 1
+        memset(outdata, 0x00, outlen);
+        memset(indata, 0x00, inlen);
+        if(transmode == QL_SPI_DMA_IRQ)
+        {
+            spi_demo_wait_write_read = QL_SPI_DEMO_WAIT_WRITE;
+            //不允许进入慢时钟
+            ql_spi_request_sys_clk(QL_CUR_SPI_PORT);
+        }
+#if QL_SPI_16BIT_DMA
+        ql_spi_write_16bit_dma(QL_CUR_SPI_PORT, outdata, outlen);
+#else
+        cmd_type = cmd_type + 1 > 4 ? 1 : cmd_type + 1;
+        data_mpu_pack(outdata, &outlen, 0X50, cmd_type);
         ql_spi_write(QL_CUR_SPI_PORT, outdata, 256);
-        ql_spi_flash_data_printf(outdata, outlen);
-        ql_rtos_semaphore_wait(spi_demo_write, QL_WAIT_FOREVER);
-         QL_SPI_DEMO_LOG("spi send data over\n");
-        //tx_dma_done只是DMA完成了,但是SPI的FIFO还可能存在数据未发送,在进入慢时钟或clk频率较低时出现
-        unsigned int tx_free = 0;
-        ql_spi_get_tx_fifo_free(QL_CUR_SPI_PORT, &tx_free);
-        ql_delay_us((framesize+2)*(QL_SPI_FIFO_SIZE - tx_free)*1000000/spiclk);
+#endif
+        if(transmode == QL_SPI_DMA_IRQ)
+        {
+            ql_rtos_semaphore_wait(spi_demo_write, QL_WAIT_FOREVER);
+            //tx_dma_done只是DMA完成了,但是SPI的FIFO还可能存在数据未发送,在进入慢时钟或clk频率较低时出现
+            ql_spi_get_tx_fifo_free(QL_CUR_SPI_PORT, &tx_free);
+            QL_SPI_DEMO_LOG("tx_free=%d",tx_free);
+            ql_delay_us((framesize+2)*(QL_SPI_FIFO_SIZE - tx_free)*1000000/spiclk);
+            //恢复允许进入慢时钟
+            ql_spi_release_sys_clk(QL_CUR_SPI_PORT);
+            ql_spi_flash_data_printf(outdata, outlen);
+        }
+
+        if(transmode == QL_SPI_DMA_IRQ)
+        {
+            spi_demo_wait_write_read = QL_SPI_DEMO_WAIT_READ;
+            //不允许进入慢时钟
+            ql_spi_request_sys_clk(QL_CUR_SPI_PORT);
+        }
+#if QL_SPI_16BIT_DMA
+        ql_spi_read_16bit_dma(QL_CUR_SPI_PORT, indata, inlen);
+#else
         ql_spi_read(QL_CUR_SPI_PORT, indata, 256);
-        unsigned short sendLen = 0;
-        data_decode_mpu(indata, 256, outdata, &sendLen);
-        //恢复允许进入慢时钟
+#endif
+        if(transmode == QL_SPI_DMA_IRQ)
+        {
+            ql_rtos_semaphore_wait(spi_demo_read, QL_WAIT_FOREVER);
+            //恢复允许进入慢时钟
+            ql_spi_release_sys_clk(QL_CUR_SPI_PORT);
+            ql_spi_flash_data_printf(indata, inlen);
+            unsigned short sendLen = 0;
+            data_decode_mpu(indata, 256, outdata, &sendLen);
+#if QL_SPI_16BIT_DMA
+            //清除dma输入的无效数据
+            ql_spi_read_data_transform(indata, inlen);
+#endif
+        }
+#endif
+        if(transmode == QL_SPI_DMA_IRQ)
+        {
+            spi_demo_wait_write_read = QL_SPI_DEMO_WAIT_READ;
+            //不允许进入慢时钟
+            ql_spi_request_sys_clk(QL_CUR_SPI_PORT);
+        }
+        ql_spi_flash_data_printf(outdata, outlen);
+#if QL_SPI_16BIT_DMA
+        ql_spi_write_read_16bit_dma(QL_CUR_SPI_PORT, indata, outdata, inlen);
+#else        
+        ql_spi_write_read(QL_CUR_SPI_PORT, indata, outdata, inlen);
+#endif
+        if(transmode == QL_SPI_DMA_IRQ)
+        {
+            ql_rtos_semaphore_wait(spi_demo_read, QL_WAIT_FOREVER);
+            //恢复允许进入慢时钟
+            ql_spi_release_sys_clk(QL_CUR_SPI_PORT);
+#if QL_SPI_16BIT_DMA
+            //清除dma输入的无效数据
+            ql_spi_read_data_transform(indata, inlen);
+#endif
+        }
+        //ql_spi_flash_data_printf(indata, inlen);
 
-        memset(outdata,0,256);
-        memset(indata, 0, 256);
-        ql_spi_release_sys_clk(QL_CUR_SPI_PORT);
+#if 0
+//测试同步发送接收,需要将模块MOSI和MISO脚短接起来
+        if (memcmp(indata, outdata, inlen))
+        {
+            QL_SPI_DEMO_LOG("write_read not match");
+            ql_spi_flash_data_printf(indata, inlen);
+            ql_spi_flash_data_printf(outdata, inlen);
+            ql_spi_release(QL_CUR_SPI_PORT);
+            free(out_mal_data);
+            free(in_mal_data);
+            goto QL_SPI_EXIT;
+        }
+        else
+        {
+            QL_SPI_DEMO_LOG("write_read ok");
+            ql_spi_flash_data_printf(indata, inlen);
+        }
+#endif
+        
         ql_spi_cs_high(QL_CUR_SPI_PORT);
-        ql_rtos_task_sleep_ms(100);
+#if QL_SPI_DEMO_LOW_POWER_USE
+        ql_lpm_wakelock_unlock(spi_power_lock);
+#endif
+        //ql_rtos_task_sleep_s(2);
+        ql_rtos_task_sleep_ms(500);
     }   
     ql_spi_release(QL_CUR_SPI_PORT);
-
+    free(out_mal_data);
+    free(in_mal_data);
 QL_SPI_EXIT:
     QL_SPI_DEMO_LOG("ql_rtos_task_delete");
 	err = ql_rtos_task_delete(NULL);

BIN
target/EC600GCN_LA_RELEASE/8850XM_cat1_open.elf


BIN
target/EC600GCN_LA_RELEASE/8850XM_cat1_open_RELEASE.pac


BIN
target/EC600GCN_LA_RELEASE/8850XM_cat1_open_RELEASE_merge.pac


BIN
target/EC600GCN_LA_RELEASE/app/RELEASE_APP.appimg


BIN
target/EC600GCN_LA_RELEASE/app/RELEASE_APP.elf


BIN
target/EC600GCN_LA_RELEASE/app/RELEASE_APP.img


BIN
target/EC600GCN_LA_RELEASE/app/RELEASE_APP.img.chaincert


BIN
target/EC600GCN_LA_RELEASE/app/RELEASE_APP.img.debugcert


BIN
target/EC600GCN_LA_RELEASE/app/RELEASE_APP.img.enc


BIN
target/EC600GCN_LA_RELEASE/app/RELEASE_APP.img.keycert


+ 270 - 267
target/EC600GCN_LA_RELEASE/app/RELEASE_APP.map

@@ -1366,8 +1366,6 @@ Discarded input sections
                 0x00000000        0x8 lib/core_stub.o
  .text.core_stub.ql_spi_release
                 0x00000000        0x8 lib/core_stub.o
- .text.core_stub.ql_spi_write_read
-                0x00000000        0x8 lib/core_stub.o
  .text.core_stub.ql_ssl_close_notify
                 0x00000000        0x8 lib/core_stub.o
  .text.core_stub.ql_ssl_conf_free
@@ -1804,24 +1802,24 @@ LOAD ../../prebuilts/win32/gcc-arm-none-eabi/gcc-arm-none-eabi-9.2.1/bin/../lib/
                 0x6025010c                gAppImageCoreHeader
                 0x60250120        0x4 LONG 0x2
                 0x60250124        0x4 LONG 0x80 (__corestub_load_start - __flash_start)
-                0x60250128        0x4 LONG 0x140 (__corestub_end - __corestub_start)
+                0x60250128        0x4 LONG 0x148 (__corestub_end - __corestub_start)
                 0x6025012c        0x4 LONG 0x807f0000 __corestub_start
                 0x60250130        0x4 LONG 0x4
-                0x60250134        0x4 LONG 0x340 (__text_load_start - __flash_start)
-                0x60250138        0x4 LONG 0x4698 (__text_end - __text_start)
-                0x6025013c        0x4 LONG 0x60250440 __text_start
+                0x60250134        0x4 LONG 0x360 (__text_load_start - __flash_start)
+                0x60250138        0x4 LONG 0x4700 (__text_end - __text_start)
+                0x6025013c        0x4 LONG 0x60250460 __text_start
                 0x60250140        0x4 LONG 0x4
-                0x60250144        0x4 LONG 0x4a00 (__init_array_load_start - __flash_start)
+                0x60250144        0x4 LONG 0x4a80 (__init_array_load_start - __flash_start)
                 0x60250148        0x4 LONG 0x0 (__init_array_end - __init_array_start)
-                0x6025014c        0x4 LONG 0x60254b00 __init_array_start
+                0x6025014c        0x4 LONG 0x60254b80 __init_array_start
                 0x60250150        0x4 LONG 0x1
-                0x60250154        0x4 LONG 0x1c0 (__data_load_start - __flash_start)
+                0x60250154        0x4 LONG 0x1e0 (__data_load_start - __flash_start)
                 0x60250158        0x4 LONG 0x16c (__data_end - __data_start)
-                0x6025015c        0x4 LONG 0x807f0140 __data_start
+                0x6025015c        0x4 LONG 0x807f0160 __data_start
                 0x60250160        0x4 LONG 0x3
                 0x60250164        0x4 LONG 0x0
                 0x60250168        0x4 LONG 0x440 (__bss_end - __bss_start)
-                0x6025016c        0x4 LONG 0x807f02c0 __bss_start
+                0x6025016c        0x4 LONG 0x807f02e0 __bss_start
                 0x60250170        0x4 LONG 0x0
                 0x60250174        0x4 LONG 0x0
                 0x60250178        0x4 LONG 0x0
@@ -1830,7 +1828,7 @@ LOAD ../../prebuilts/win32/gcc-arm-none-eabi/gcc-arm-none-eabi-9.2.1/bin/../lib/
                 0x807f0000                . = ORIGIN (ram)
                 0x807f0000                __ram_start = .
 
-.corestub       0x807f0000      0x140 load address 0x60250180
+.corestub       0x807f0000      0x160 load address 0x60250180
                 0x807f0000                __corestub_start = .
  *(.text.core_stub.*)
  .text.core_stub.__getreent
@@ -1944,331 +1942,336 @@ LOAD ../../prebuilts/win32/gcc-arm-none-eabi/gcc-arm-none-eabi-9.2.1/bin/../lib/
  .text.core_stub.ql_spi_write
                 0x807f0120        0x8 lib/core_stub.o
                 0x807f0120                ql_spi_write
- .text.core_stub.ql_usb_bind_hotplug_cb
+ .text.core_stub.ql_spi_write_read
                 0x807f0128        0x8 lib/core_stub.o
-                0x807f0128                ql_usb_bind_hotplug_cb
- .text.core_stub.ql_wakeup_register_cb
+                0x807f0128                ql_spi_write_read
+ .text.core_stub.ql_usb_bind_hotplug_cb
                 0x807f0130        0x8 lib/core_stub.o
-                0x807f0130                ql_wakeup_register_cb
- .text.core_stub.realloc
+                0x807f0130                ql_usb_bind_hotplug_cb
+ .text.core_stub.ql_wakeup_register_cb
                 0x807f0138        0x8 lib/core_stub.o
-                0x807f0138                realloc
-                0x807f0140                __corestub_end = .
-                0x807f0140                . = ALIGN (0x20)
+                0x807f0138                ql_wakeup_register_cb
+ .text.core_stub.realloc
+                0x807f0140        0x8 lib/core_stub.o
+                0x807f0140                realloc
+                0x807f0148                __corestub_end = .
+                0x807f0160                . = ALIGN (0x20)
+ *fill*         0x807f0148       0x18 
                 0x60250180                __corestub_load_start = LOADADDR (.corestub)
 
-.data           0x807f0140      0x180 load address 0x602502c0
-                0x807f0140                __data_start = .
+.data           0x807f0160      0x180 load address 0x602502e0
+                0x807f0160                __data_start = .
  *(.data .data.* .gnu.linkonce.d.*)
  .data.__global_locale
-                0x807f0140      0x16c ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-locale.o)
-                0x807f0140                __global_locale
-                0x807f02ac                __data_end = .
-                0x807f02c0                . = ALIGN (0x20)
- *fill*         0x807f02ac       0x14 
-                0x602502c0                __data_load_start = LOADADDR (.data)
+                0x807f0160      0x16c ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-locale.o)
+                0x807f0160                __global_locale
+                0x807f02cc                __data_end = .
+                0x807f02e0                . = ALIGN (0x20)
+ *fill*         0x807f02cc       0x14 
+                0x602502e0                __data_load_start = LOADADDR (.data)
 
-.igot.plt       0x60250440        0x0
- .igot.plt      0x60250440        0x0 lib/core_stub.o
+.igot.plt       0x60250460        0x0
+ .igot.plt      0x60250460        0x0 lib/core_stub.o
 
-.bss            0x807f02c0      0x440
-                0x807f02c0                __bss_start = .
+.bss            0x807f02e0      0x440
+                0x807f02e0                __bss_start = .
  *(.bss .bss.* COMMON .scommon .sbss .sbss.* .sbss2 .sbss2.* .gnu.linkonce.b.*)
  .bss.ledcfg_task
-                0x807f02c0        0x4 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
-                0x807f02c0                ledcfg_task
+                0x807f02e0        0x4 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
+                0x807f02e0                ledcfg_task
  .bss.power_task
-                0x807f02c4        0x4 lib/libql_app_power.a(power_demo.c.obj)
-                0x807f02c4                power_task
- COMMON         0x807f02c8        0x8 lib/libql_app_power.a(power_demo.c.obj)
-                0x807f02c8                wake_lock_1
-                0x807f02cc                wake_lock_2
- .bss.frame_tmp.8729
-                0x807f02d0        0x7 lib/libql_app_spi.a(spi_demo.c.obj)
- *fill*         0x807f02d7        0x1 
+                0x807f02e4        0x4 lib/libql_app_power.a(power_demo.c.obj)
+                0x807f02e4                power_task
+ COMMON         0x807f02e8        0x8 lib/libql_app_power.a(power_demo.c.obj)
+                0x807f02e8                wake_lock_1
+                0x807f02ec                wake_lock_2
+ .bss.cmd_type.8684
+                0x807f02f0        0x1 lib/libql_app_spi.a(spi_demo.c.obj)
+ .bss.frame_tmp.8733
+                0x807f02f1        0x7 lib/libql_app_spi.a(spi_demo.c.obj)
  .bss.spi_demo_task
-                0x807f02d8        0x4 lib/libql_app_spi.a(spi_demo.c.obj)
-                0x807f02d8                spi_demo_task
+                0x807f02f8        0x4 lib/libql_app_spi.a(spi_demo.c.obj)
+                0x807f02f8                spi_demo_task
  .bss.spi_demo_wait_write_read
-                0x807f02dc        0x1 lib/libql_app_spi.a(spi_demo.c.obj)
-                0x807f02dc                spi_demo_wait_write_read
- *fill*         0x807f02dd        0x3 
- COMMON         0x807f02e0      0x420 lib/libql_app_spi.a(spi_demo.c.obj)
-                0x807f02e0                spi_demo_write
-                0x807f02e4                spi_demo_read
-                0x807f0300                g_inbuf
-                0x807f0500                g_outbuf
-                0x807f0700                __bss_end = .
-                0x807f0700                . = ALIGN (0x20)
-                0x60250440                . = ((LOADADDR (.corestub) + SIZEOF (.corestub)) + SIZEOF (.data))
+                0x807f02fc        0x1 lib/libql_app_spi.a(spi_demo.c.obj)
+                0x807f02fc                spi_demo_wait_write_read
+ *fill*         0x807f02fd        0x3 
+ COMMON         0x807f0300      0x420 lib/libql_app_spi.a(spi_demo.c.obj)
+                0x807f0300                spi_demo_write
+                0x807f0304                spi_demo_read
+                0x807f0320                g_inbuf
+                0x807f0520                g_outbuf
+                0x807f0720                __bss_end = .
+                0x807f0720                . = ALIGN (0x20)
+                0x60250460                . = ((LOADADDR (.corestub) + SIZEOF (.corestub)) + SIZEOF (.data))
 
-.text           0x60250440     0x46a0
-                0x60250440                __text_start = .
+.text           0x60250460     0x4700
+                0x60250460                __text_start = .
  *(.text .text.* .gnu.linkonce.t.* .rdata .rodata .rodata.* .gnu.linkonce.r.* .glue_7 .glue_7t .vfp11_veneer .v4_bx)
- .glue_7        0x60250440        0x0 linker stubs
- .glue_7t       0x60250440        0x0 linker stubs
- .vfp11_veneer  0x60250440        0x0 linker stubs
- .v4_bx         0x60250440        0x0 linker stubs
+ .glue_7        0x60250460        0x0 linker stubs
+ .glue_7t       0x60250460        0x0 linker stubs
+ .vfp11_veneer  0x60250460        0x0 linker stubs
+ .v4_bx         0x60250460        0x0 linker stubs
  .rodata.ql_init_demo_thread.str1.1
-                0x60250440       0x31 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
- *fill*         0x60250471        0x3 
+                0x60250460       0x31 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
+ *fill*         0x60250491        0x3 
  .text.ql_init_demo_thread
-                0x60250474       0x40 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
+                0x60250494       0x40 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
  .rodata.appimg_enter.str1.1
-                0x602504b4       0x61 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
- *fill*         0x60250515        0x3 
+                0x602504d4       0x61 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
+ *fill*         0x60250535        0x3 
  .text.appimg_enter
-                0x60250518       0x94 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
-                0x60250518                appimg_enter
+                0x60250538       0x94 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
+                0x60250538                appimg_enter
  .rodata.appimg_exit.str1.1
-                0x602505ac       0x1d components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
- *fill*         0x602505c9        0x3 
+                0x602505cc       0x1d components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
+ *fill*         0x602505e9        0x3 
  .text.appimg_exit
-                0x602505cc       0x1c components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
-                0x602505cc                appimg_exit
+                0x602505ec       0x1c components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
+                0x602505ec                appimg_exit
  .rodata.__FUNCTION__.9725
-                0x602505e8       0x14 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
+                0x60250608       0x14 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
  .rodata.__FUNCTION__.9731
-                0x602505fc        0xd components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
+                0x6025061c        0xd components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
  .rodata.__FUNCTION__.9735
-                0x60250609        0xc components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
+                0x60250629        0xc components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
  .rodata._ledcfg_demo_cb.str1.1
-                0x60250615       0x6a lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
- *fill*         0x6025067f        0x1 
+                0x60250635       0x6a lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
+ *fill*         0x6025069f        0x1 
  .text._ledcfg_demo_cb
-                0x60250680       0x58 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
+                0x602506a0       0x58 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
  .text.ql_led_pwm_enable
-                0x602506d8       0x36 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
-                0x602506d8                ql_led_pwm_enable
+                0x602506f8       0x36 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
+                0x602506f8                ql_led_pwm_enable
  .rodata.ql_ledcfg_demo_thread.str1.1
-                0x6025070e      0x182 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
+                0x6025072e      0x182 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
  .text.ql_ledcfg_demo_thread
-                0x60250890      0x128 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
+                0x602508b0      0x128 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
  .rodata.ql_ledcfg_app_init.str1.1
-                0x602509b8       0x46 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
- *fill*         0x602509fe        0x2 
+                0x602509d8       0x46 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
+ *fill*         0x60250a1e        0x2 
  .text.ql_ledcfg_app_init
-                0x60250a00       0x50 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
-                0x60250a00                ql_ledcfg_app_init
+                0x60250a20       0x50 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
+                0x60250a20                ql_ledcfg_app_init
  .rodata.__FUNCTION__.8250
-                0x60250a50       0x10 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
+                0x60250a70       0x10 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
  .rodata.__FUNCTION__.8259
-                0x60250a60       0x16 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
+                0x60250a80       0x16 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
  .rodata.__FUNCTION__.8283
-                0x60250a76       0x13 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
- *fill*         0x60250a89        0x1 
+                0x60250a96       0x13 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
+ *fill*         0x60250aa9        0x1 
  .text.ql_enter_sleep_cb
-                0x60250a8a        0x2 lib/libql_app_power.a(power_demo.c.obj)
-                0x60250a8a                ql_enter_sleep_cb
+                0x60250aaa        0x2 lib/libql_app_power.a(power_demo.c.obj)
+                0x60250aaa                ql_enter_sleep_cb
  .rodata.ql_power_demo_thread.str1.1
-                0x60250a8c       0xbf lib/libql_app_power.a(power_demo.c.obj)
- *fill*         0x60250b4b        0x1 
+                0x60250aac       0xbf lib/libql_app_power.a(power_demo.c.obj)
+ *fill*         0x60250b6b        0x1 
  .text.ql_power_demo_thread
-                0x60250b4c      0x10c lib/libql_app_power.a(power_demo.c.obj)
+                0x60250b6c      0x10c lib/libql_app_power.a(power_demo.c.obj)
  .rodata.usb_hotplug_cb.str1.1
-                0x60250c58       0x38 lib/libql_app_power.a(power_demo.c.obj)
+                0x60250c78       0x38 lib/libql_app_power.a(power_demo.c.obj)
  .text.usb_hotplug_cb
-                0x60250c90       0x2c lib/libql_app_power.a(power_demo.c.obj)
-                0x60250c90                usb_hotplug_cb
+                0x60250cb0       0x2c lib/libql_app_power.a(power_demo.c.obj)
+                0x60250cb0                usb_hotplug_cb
  .text.ql_exit_sleep_cb
-                0x60250cbc        0x2 lib/libql_app_power.a(power_demo.c.obj)
-                0x60250cbc                ql_exit_sleep_cb
+                0x60250cdc        0x2 lib/libql_app_power.a(power_demo.c.obj)
+                0x60250cdc                ql_exit_sleep_cb
  .rodata.ql_power_app_init.str1.1
-                0x60250cbe       0x3b lib/libql_app_power.a(power_demo.c.obj)
- *fill*         0x60250cf9        0x3 
+                0x60250cde       0x3b lib/libql_app_power.a(power_demo.c.obj)
+ *fill*         0x60250d19        0x3 
  .text.ql_power_app_init
-                0x60250cfc       0x50 lib/libql_app_power.a(power_demo.c.obj)
-                0x60250cfc                ql_power_app_init
+                0x60250d1c       0x50 lib/libql_app_power.a(power_demo.c.obj)
+                0x60250d1c                ql_power_app_init
  .rodata.__FUNCTION__.8447
-                0x60250d4c        0xf lib/libql_app_power.a(power_demo.c.obj)
+                0x60250d6c        0xf lib/libql_app_power.a(power_demo.c.obj)
  .rodata.__FUNCTION__.8454
-                0x60250d5b       0x15 lib/libql_app_power.a(power_demo.c.obj)
+                0x60250d7b       0x15 lib/libql_app_power.a(power_demo.c.obj)
  .rodata.__FUNCTION__.8472
-                0x60250d70       0x12 lib/libql_app_power.a(power_demo.c.obj)
+                0x60250d90       0x12 lib/libql_app_power.a(power_demo.c.obj)
  .rodata.ql_spi_demo_cb_handler.str1.1
-                0x60250d82       0x4e lib/libql_app_spi.a(spi_demo.c.obj)
+                0x60250da2       0x4e lib/libql_app_spi.a(spi_demo.c.obj)
  .text.ql_spi_demo_cb_handler
-                0x60250dd0       0x7c lib/libql_app_spi.a(spi_demo.c.obj)
-                0x60250dd0                ql_spi_demo_cb_handler
+                0x60250df0       0x7c lib/libql_app_spi.a(spi_demo.c.obj)
+                0x60250df0                ql_spi_demo_cb_handler
  .rodata.ql_spi_flash_data_printf.str1.1
-                0x60250e4c       0x61 lib/libql_app_spi.a(spi_demo.c.obj)
- *fill*         0x60250ead        0x3 
+                0x60250e6c       0x61 lib/libql_app_spi.a(spi_demo.c.obj)
+ *fill*         0x60250ecd        0x3 
  .text.ql_spi_flash_data_printf
-                0x60250eb0       0xd0 lib/libql_app_spi.a(spi_demo.c.obj)
-                0x60250eb0                ql_spi_flash_data_printf
+                0x60250ed0       0xd0 lib/libql_app_spi.a(spi_demo.c.obj)
+                0x60250ed0                ql_spi_flash_data_printf
  .rodata.ql_spi_demo_init.str1.1
-                0x60250f80       0x37 lib/libql_app_spi.a(spi_demo.c.obj)
- *fill*         0x60250fb7        0x1 
+                0x60250fa0       0x37 lib/libql_app_spi.a(spi_demo.c.obj)
+ *fill*         0x60250fd7        0x1 
  .text.ql_spi_demo_init
-                0x60250fb8       0x4c lib/libql_app_spi.a(spi_demo.c.obj)
-                0x60250fb8                ql_spi_demo_init
+                0x60250fd8       0x4c lib/libql_app_spi.a(spi_demo.c.obj)
+                0x60250fd8                ql_spi_demo_init
  .text.crc16_modbus
-                0x60251004       0x30 lib/libql_app_spi.a(spi_demo.c.obj)
-                0x60251004                crc16_modbus
+                0x60251024       0x30 lib/libql_app_spi.a(spi_demo.c.obj)
+                0x60251024                crc16_modbus
  .text.Full_Frame_Verifi
-                0x60251034       0x6e lib/libql_app_spi.a(spi_demo.c.obj)
-                0x60251034                Full_Frame_Verifi
+                0x60251054       0x6e lib/libql_app_spi.a(spi_demo.c.obj)
+                0x60251054                Full_Frame_Verifi
  .text.data_mpu_pack
-                0x602510a2       0x68 lib/libql_app_spi.a(spi_demo.c.obj)
-                0x602510a2                data_mpu_pack
+                0x602510c2       0x68 lib/libql_app_spi.a(spi_demo.c.obj)
+                0x602510c2                data_mpu_pack
  .rodata.data_decode_mpu.str1.1
-                0x6025110a       0x60 lib/libql_app_spi.a(spi_demo.c.obj)
- *fill*         0x6025116a        0x2 
+                0x6025112a       0x60 lib/libql_app_spi.a(spi_demo.c.obj)
+ *fill*         0x6025118a        0x2 
  .text.data_decode_mpu
-                0x6025116c       0xcc lib/libql_app_spi.a(spi_demo.c.obj)
-                0x6025116c                data_decode_mpu
+                0x6025118c       0xcc lib/libql_app_spi.a(spi_demo.c.obj)
+                0x6025118c                data_decode_mpu
  .rodata.ql_spi_demo_task_pthread.str1.1
-                0x60251238       0xb1 lib/libql_app_spi.a(spi_demo.c.obj)
- *fill*         0x602512e9        0x3 
+                0x60251258       0x87 lib/libql_app_spi.a(spi_demo.c.obj)
+ *fill*         0x602512df        0x1 
  .text.ql_spi_demo_task_pthread
-                0x602512ec      0x208 lib/libql_app_spi.a(spi_demo.c.obj)
+                0x602512e0      0x2a8 lib/libql_app_spi.a(spi_demo.c.obj)
  .rodata.__FUNCTION__.8654
-                0x602514f4       0x19 lib/libql_app_spi.a(spi_demo.c.obj)
+                0x60251588       0x19 lib/libql_app_spi.a(spi_demo.c.obj)
  .rodata.__FUNCTION__.8664
-                0x6025150d       0x17 lib/libql_app_spi.a(spi_demo.c.obj)
- .rodata.__FUNCTION__.8675
-                0x60251524       0x19 lib/libql_app_spi.a(spi_demo.c.obj)
- .rodata.__FUNCTION__.8687
-                0x6025153d       0x11 lib/libql_app_spi.a(spi_demo.c.obj)
- .rodata.__FUNCTION__.8732
-                0x6025154e       0x10 lib/libql_app_spi.a(spi_demo.c.obj)
- *fill*         0x6025155e        0x2 
- .text.memcpy   0x60251560       0xc8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-memcpy-stub.o)
-                0x60251560                memcpy
- .text.memset   0x60251628       0xa8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-memset.o)
-                0x60251628                memset
+                0x602515a1       0x17 lib/libql_app_spi.a(spi_demo.c.obj)
+ .rodata.__FUNCTION__.8681
+                0x602515b8       0x19 lib/libql_app_spi.a(spi_demo.c.obj)
+ .rodata.__FUNCTION__.8691
+                0x602515d1       0x11 lib/libql_app_spi.a(spi_demo.c.obj)
+ .rodata.__FUNCTION__.8736
+                0x602515e2       0x10 lib/libql_app_spi.a(spi_demo.c.obj)
+ *fill*         0x602515f2        0x2 
+ .text.memcpy   0x602515f4       0xc8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-memcpy-stub.o)
+                0x602515f4                memcpy
+ .text.memset   0x602516bc       0xa8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-memset.o)
+                0x602516bc                memset
  .text.snprintf
-                0x602516d0       0x66 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-snprintf.o)
-                0x602516d0                snprintf
+                0x60251764       0x66 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-snprintf.o)
+                0x60251764                snprintf
  .rodata._svfprintf_r.str1.1
-                0x60251736       0x3b ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-svfprintf.o)
- *fill*         0x60251771        0x7 
+                0x602517ca       0x3b ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-svfprintf.o)
+ *fill*         0x60251805        0x3 
  .text._svfprintf_r
-                0x60251778     0x1314 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-svfprintf.o)
-                0x60251778                _svfprintf_r
+                0x60251808     0x1314 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-svfprintf.o)
+                0x60251808                _svfprintf_r
  .rodata.blanks.8611
-                0x60252a8c       0x10 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-svfprintf.o)
+                0x60252b1c       0x10 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-svfprintf.o)
  .rodata.zeroes.8612
-                0x60252a9c       0x10 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-svfprintf.o)
- .text.quorem   0x60252aac      0x126 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-dtoa.o)
+                0x60252b2c       0x10 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-svfprintf.o)
+ .text.quorem   0x60252b3c      0x126 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-dtoa.o)
  .rodata._dtoa_r.str1.1
-                0x60252bd2        0xd ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-dtoa.o)
+                0x60252c62        0xd ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-dtoa.o)
                                   0xf (size before relaxing)
- *fill*         0x60252bdf        0x1 
- .text._dtoa_r  0x60252be0      0xa50 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-dtoa.o)
-                0x60252be0                _dtoa_r
+ *fill*         0x60252c6f        0x1 
+ .text._dtoa_r  0x60252c70      0xa50 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-dtoa.o)
+                0x60252c70                _dtoa_r
  .text._localeconv_r
-                0x60253630        0x8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-localeconv.o)
-                0x60253630                _localeconv_r
+                0x602536c0        0x8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-localeconv.o)
+                0x602536c0                _localeconv_r
  .rodata._setlocale_r.str1.1
-                0x60253638        0x8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-locale.o)
+                0x602536c8        0x8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-locale.o)
                                   0x9 (size before relaxing)
  .rodata.str1.1
-                0x60253640        0x2 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-locale.o)
+                0x602536d0        0x2 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-locale.o)
  .text.__ascii_mbtowc
-                0x60253642       0x24 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mbtowc_r.o)
-                0x60253642                __ascii_mbtowc
- *fill*         0x60253666        0xa 
- .text          0x60253670       0xe8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-memchr.o)
-                0x60253670                memchr
- .text._Balloc  0x60253758       0x48 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x60253758                _Balloc
- .text._Bfree   0x602537a0       0x12 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x602537a0                _Bfree
+                0x602536d2       0x24 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mbtowc_r.o)
+                0x602536d2                __ascii_mbtowc
+ *fill*         0x602536f6        0xa 
+ .text          0x60253700       0xe8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-memchr.o)
+                0x60253700                memchr
+ .text._Balloc  0x602537e8       0x48 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x602537e8                _Balloc
+ .text._Bfree   0x60253830       0x12 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x60253830                _Bfree
  .text.__multadd
-                0x602537b2       0x7c ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x602537b2                __multadd
+                0x60253842       0x7c ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x60253842                __multadd
  .text.__hi0bits
-                0x6025382e       0x40 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x6025382e                __hi0bits
+                0x602538be       0x40 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x602538be                __hi0bits
  .text.__lo0bits
-                0x6025386e       0x5c ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x6025386e                __lo0bits
- .text.__i2b    0x602538ca       0x12 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x602538ca                __i2b
+                0x602538fe       0x5c ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x602538fe                __lo0bits
+ .text.__i2b    0x6025395a       0x12 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x6025395a                __i2b
  .text.__multiply
-                0x602538dc      0x136 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x602538dc                __multiply
- *fill*         0x60253a12        0x2 
+                0x6025396c      0x136 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x6025396c                __multiply
+ *fill*         0x60253aa2        0x2 
  .text.__pow5mult
-                0x60253a14       0x80 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x60253a14                __pow5mult
+                0x60253aa4       0x80 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x60253aa4                __pow5mult
  .text.__lshift
-                0x60253a94       0xbe ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x60253a94                __lshift
- .text.__mcmp   0x60253b52       0x36 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x60253b52                __mcmp
- .text.__mdiff  0x60253b88       0xec ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x60253b88                __mdiff
- .text.__d2b    0x60253c74       0xa4 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x60253c74                __d2b
+                0x60253b24       0xbe ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x60253b24                __lshift
+ .text.__mcmp   0x60253be2       0x36 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x60253be2                __mcmp
+ .text.__mdiff  0x60253c18       0xec ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x60253c18                __mdiff
+ .text.__d2b    0x60253d04       0xa4 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x60253d04                __d2b
  .rodata.__mprec_bigtens
-                0x60253d18       0x28 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x60253d18                __mprec_bigtens
+                0x60253da8       0x28 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x60253da8                __mprec_bigtens
  .rodata.__mprec_tens
-                0x60253d40       0xc8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
-                0x60253d40                __mprec_tens
+                0x60253dd0       0xc8 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+                0x60253dd0                __mprec_tens
  .rodata.p05.7384
-                0x60253e08        0xc ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
- *fill*         0x60253e14        0x4 
- .text.frexp    0x60253e18       0x70 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-s_frexp.o)
-                0x60253e18                frexp
- *fill*         0x60253e88       0x38 
- .text          0x60253ec0       0xdc ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-strlen.o)
-                0x60253ec0                strlen
- .text.strncpy  0x60253f9c       0x74 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-strncpy.o)
-                0x60253f9c                strncpy
+                0x60253e98        0xc ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-mprec.o)
+ *fill*         0x60253ea4        0x4 
+ .text.frexp    0x60253ea8       0x70 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-s_frexp.o)
+                0x60253ea8                frexp
+ *fill*         0x60253f18       0x28 
+ .text          0x60253f40       0xdc ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-strlen.o)
+                0x60253f40                strlen
+ .text.strncpy  0x6025401c       0x74 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-strncpy.o)
+                0x6025401c                strncpy
  .text.__ssprint_r
-                0x60254010       0xea ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-svfiprintf.o)
-                0x60254010                __ssprint_r
+                0x60254090       0xea ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-svfiprintf.o)
+                0x60254090                __ssprint_r
  .text.__ascii_wctomb
-                0x602540fa       0x1a ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-wctomb_r.o)
-                0x602540fa                __ascii_wctomb
+                0x6025417a       0x1a ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-wctomb_r.o)
+                0x6025417a                __ascii_wctomb
  .rodata._ctype_
-                0x60254114      0x101 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-ctype_.o)
-                0x60254114                _ctype_
- *fill*         0x60254215        0x3 
- .text.memmove  0x60254218       0xd4 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-memmove.o)
-                0x60254218                memmove
- *fill*         0x602542ec        0x4 
- .text          0x602542f0      0x278 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_udivsi3.o)
-                0x602542f0                __aeabi_uidiv
-                0x602542f0                __udivsi3
-                0x6025454c                __aeabi_uidivmod
- .text          0x60254568      0x2b0 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_divsi3.o)
-                0x60254568                __divsi3
-                0x60254568                __aeabi_idiv
-                0x602547fc                __aeabi_idivmod
- .text          0x60254818        0x4 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_dvmd_tls.o)
-                0x60254818                __aeabi_idiv0
-                0x60254818                __aeabi_ldiv0
- .text          0x6025481c       0x30 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_aeabi_uldivmod.o)
-                0x6025481c                __aeabi_uldivmod
- .text          0x6025484c      0x11c ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_udivmoddi4.o)
-                0x6025484c                __udivmoddi4
- .text.__stub   0x60254968      0x170 linker stubs
-                0x60254ad8                __text_end = .
-                0x60254ae0                . = ALIGN (0x20)
- *fill*         0x60254ad8        0x8 
-                0x60250440                __text_load_start = LOADADDR (.text)
+                0x60254194      0x101 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-ctype_.o)
+                0x60254194                _ctype_
+ *fill*         0x60254295        0x3 
+ .text.memmove  0x60254298       0xd4 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-memmove.o)
+                0x60254298                memmove
+ *fill*         0x6025436c        0x4 
+ .text          0x60254370      0x278 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_udivsi3.o)
+                0x60254370                __aeabi_uidiv
+                0x60254370                __udivsi3
+                0x602545cc                __aeabi_uidivmod
+ .text          0x602545e8      0x2b0 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_divsi3.o)
+                0x602545e8                __divsi3
+                0x602545e8                __aeabi_idiv
+                0x6025487c                __aeabi_idivmod
+ .text          0x60254898        0x4 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_dvmd_tls.o)
+                0x60254898                __aeabi_idiv0
+                0x60254898                __aeabi_ldiv0
+ .text          0x6025489c       0x30 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_aeabi_uldivmod.o)
+                0x6025489c                __aeabi_uldivmod
+ .text          0x602548cc      0x11c ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_udivmoddi4.o)
+                0x602548cc                __udivmoddi4
+ .text.__stub   0x602549e8      0x178 linker stubs
+                0x60254b60                __text_end = .
+                0x60254b60                . = ALIGN (0x20)
+ *fill*         0x60254b60        0x0 
+                0x60250460                __text_load_start = LOADADDR (.text)
 
-.iplt           0x60254ae0        0x0
- .iplt          0x60254ae0        0x0 lib/core_stub.o
+.iplt           0x60254b60        0x0
+ .iplt          0x60254b60        0x0 lib/core_stub.o
 
-.rel.dyn        0x60254ae0        0x0
- .rel.iplt      0x60254ae0        0x0 lib/core_stub.o
+.rel.dyn        0x60254b60        0x0
+ .rel.iplt      0x60254b60        0x0 lib/core_stub.o
 
-.ARM.exidx      0x60254ae0        0x8
- .ARM.exidx     0x60254ae0        0x8 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_udivmoddi4.o)
+.ARM.exidx      0x60254b60        0x8
+ .ARM.exidx     0x60254b60        0x8 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_udivmoddi4.o)
 
-.init_array     0x60254b00        0x0
-                0x60254b00                __init_array_start = .
+.init_array     0x60254b80        0x0
+                0x60254b80                __init_array_start = .
  *(.init_array*)
-                0x60254b00                __init_array_end = .
-                0x60254b00                . = ALIGN (0x20)
-                0x60254b00                __init_array_load_start = LOADADDR (.init_array)
-                0x60254b00                __flash_end = (ADDR (.init_array) + SIZEOF (.init_array))
-                0x807f0700                __ram_end = (ADDR (.bss) + SIZEOF (.bss))
+                0x60254b80                __init_array_end = .
+                0x60254b80                . = ALIGN (0x20)
+                0x60254b80                __init_array_load_start = LOADADDR (.init_array)
+                0x60254b80                __flash_end = (ADDR (.init_array) + SIZEOF (.init_array))
+                0x807f0720                __ram_end = (ADDR (.bss) + SIZEOF (.bss))
                 0x00000001                ASSERT ((__flash_end <= (ORIGIN (flash) + LENGTH (flash))), FLASH overflow)
                 0x00000001                ASSERT ((__ram_end <= (ORIGIN (ram) + LENGTH (ram))), RAM overflow)
 
@@ -2360,23 +2363,23 @@ LOAD ../../prebuilts/win32/gcc-arm-none-eabi/gcc-arm-none-eabi-9.2.1/bin/../lib/
  *(.gnu*)
 OUTPUT(hex\examples\RELEASE_APP.elf elf32-littlearm)
 
-.debug_info     0x00000000     0x7350
+.debug_info     0x00000000     0x7433
  .debug_info    0x00000000     0x1193 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
  .debug_info    0x00001193     0x1da6 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
  .debug_info    0x00002f39     0x1dc9 lib/libql_app_power.a(power_demo.c.obj)
- .debug_info    0x00004d02     0x264e lib/libql_app_spi.a(spi_demo.c.obj)
+ .debug_info    0x00004d02     0x2731 lib/libql_app_spi.a(spi_demo.c.obj)
 
-.debug_abbrev   0x00000000      0xf5e
+.debug_abbrev   0x00000000      0xf66
  .debug_abbrev  0x00000000      0x382 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
  .debug_abbrev  0x00000382      0x384 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
  .debug_abbrev  0x00000706      0x3eb lib/libql_app_power.a(power_demo.c.obj)
- .debug_abbrev  0x00000af1      0x46d lib/libql_app_spi.a(spi_demo.c.obj)
+ .debug_abbrev  0x00000af1      0x475 lib/libql_app_spi.a(spi_demo.c.obj)
 
-.debug_loc      0x00000000     0x1292
+.debug_loc      0x00000000     0x1372
  .debug_loc     0x00000000       0xda components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
  .debug_loc     0x000000da      0x229 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
  .debug_loc     0x00000303      0x1b7 lib/libql_app_power.a(power_demo.c.obj)
- .debug_loc     0x000004ba      0xdd8 lib/libql_app_spi.a(spi_demo.c.obj)
+ .debug_loc     0x000004ba      0xeb8 lib/libql_app_spi.a(spi_demo.c.obj)
 
 .debug_aranges  0x00000000      0x150
  .debug_aranges
@@ -2388,35 +2391,35 @@ OUTPUT(hex\examples\RELEASE_APP.elf elf32-littlearm)
  .debug_aranges
                 0x000000d8       0x78 lib/libql_app_spi.a(spi_demo.c.obj)
 
-.debug_ranges   0x00000000      0x1d8
+.debug_ranges   0x00000000      0x1e0
  .debug_ranges  0x00000000       0x50 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
  .debug_ranges  0x00000050       0x28 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
  .debug_ranges  0x00000078       0x60 lib/libql_app_power.a(power_demo.c.obj)
- .debug_ranges  0x000000d8      0x100 lib/libql_app_spi.a(spi_demo.c.obj)
+ .debug_ranges  0x000000d8      0x108 lib/libql_app_spi.a(spi_demo.c.obj)
 
-.debug_line     0x00000000     0x1c16
+.debug_line     0x00000000     0x1cc6
  .debug_line    0x00000000      0x454 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
  .debug_line    0x00000454      0x4c6 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
  .debug_line    0x0000091a      0x654 lib/libql_app_power.a(power_demo.c.obj)
- .debug_line    0x00000f6e      0xca8 lib/libql_app_spi.a(spi_demo.c.obj)
+ .debug_line    0x00000f6e      0xd58 lib/libql_app_spi.a(spi_demo.c.obj)
 
-.debug_str      0x00000000     0x3b03
+.debug_str      0x00000000     0x3b22
  .debug_str     0x00000000      0xe89 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
                                 0xf24 (size before relaxing)
  .debug_str     0x00000e89     0x1dbc lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
                                0x2a76 (size before relaxing)
  .debug_str     0x00002c45      0x33b lib/libql_app_power.a(power_demo.c.obj)
                                0x28af (size before relaxing)
- .debug_str     0x00002f80      0xb83 lib/libql_app_spi.a(spi_demo.c.obj)
-                               0x211f (size before relaxing)
+ .debug_str     0x00002f80      0xba2 lib/libql_app_spi.a(spi_demo.c.obj)
+                               0x213e (size before relaxing)
 
-.debug_frame    0x00000000      0x4e0
+.debug_frame    0x00000000      0x4e4
  .debug_frame   0x00000000       0x60 components/ql-application/init/CMakeFiles/RELEASE_APP.dir/ql_init.c.obj
  .debug_frame   0x00000060       0x80 lib/libql_app_peripheral.a(led_cfg_demo.c.obj)
  .debug_frame   0x000000e0      0x140 lib/libql_app_power.a(power_demo.c.obj)
- .debug_frame   0x00000220      0x1e8 lib/libql_app_spi.a(spi_demo.c.obj)
- .debug_frame   0x00000408       0x34 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-memchr.o)
- .debug_frame   0x0000043c       0x20 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_udivsi3.o)
- .debug_frame   0x0000045c       0x20 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_divsi3.o)
- .debug_frame   0x0000047c       0x2c ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_aeabi_uldivmod.o)
- .debug_frame   0x000004a8       0x38 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_udivmoddi4.o)
+ .debug_frame   0x00000220      0x1ec lib/libql_app_spi.a(spi_demo.c.obj)
+ .debug_frame   0x0000040c       0x34 ..\..\components\newlib\newlib-3.1.0\armca5\libc.a(lib_a-memchr.o)
+ .debug_frame   0x00000440       0x20 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_udivsi3.o)
+ .debug_frame   0x00000460       0x20 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_divsi3.o)
+ .debug_frame   0x00000480       0x2c ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_aeabi_uldivmod.o)
+ .debug_frame   0x000004ac       0x38 ..\..\prebuilts\win32\gcc-arm-none-eabi\gcc-arm-none-eabi-9.2.1\lib\gcc\arm-none-eabi\9.2.1\thumb\v7+fp\hard\libgcc.a(_udivmoddi4.o)

BIN
target/EC600GCN_LA_RELEASE/app/RELEASE_APP.pac


BIN
target/EC600GCN_LA_RELEASE/app/RELEASE_APP.sign.img


BIN
target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.img


BIN
target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.img.chaincert


BIN
target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.img.debugcert


BIN
target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.img.enc


BIN
target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.img.keycert


BIN
target/EC600GCN_LA_RELEASE/prepack/8850XM_cat1_open.sign.img


BIN
target/EC600GCN_LA_RELEASE/prepack/appimg_flash_delete.pac


BIN
target/EC600GCN_LA_RELEASE/prepack/boot.img


BIN
target/EC600GCN_LA_RELEASE/prepack/boot.img.chaincert


BIN
target/EC600GCN_LA_RELEASE/prepack/boot.img.debugcert


BIN
target/EC600GCN_LA_RELEASE/prepack/boot.img.enc


BIN
target/EC600GCN_LA_RELEASE/prepack/boot.img.keycert


BIN
target/EC600GCN_LA_RELEASE/prepack/boot.sign.img


BIN
target/EC600GCN_LA_RELEASE/prepack/norfdl.img


BIN
target/EC600GCN_LA_RELEASE/prepack/norfdl.img.chaincert


BIN
target/EC600GCN_LA_RELEASE/prepack/norfdl.img.debugcert


BIN
target/EC600GCN_LA_RELEASE/prepack/norfdl.img.enc


BIN
target/EC600GCN_LA_RELEASE/prepack/norfdl.img.keycert


BIN
target/EC600GCN_LA_RELEASE/prepack/norfdl.sign.img


BIN
target/EC600GCN_LA_RELEASE/prepack/spl.img


BIN
target/EC600GCN_LA_RELEASE/prepack/spl.img.chaincert


BIN
target/EC600GCN_LA_RELEASE/prepack/spl.img.debugcert


BIN
target/EC600GCN_LA_RELEASE/prepack/spl.img.enc


BIN
target/EC600GCN_LA_RELEASE/prepack/spl.img.keycert


BIN
target/EC600GCN_LA_RELEASE/prepack/spl.sign.img


BIN
智锂MCU和MPU通信协议1.0.3.docx