소스 검색

LT-OTA-rev-status

bootloader
ws-Huang 6 달 전
부모
커밋
07a633e59d
88개의 변경된 파일3298개의 추가작업 그리고 3031개의 파일을 삭제
  1. +40
    -38
      LT7689.uvguix.14874
  2. +1
    -1
      LT7689.uvoptx
  3. +727
    -726
      Listings/LT7689.map
  4. BIN
      OBJ/bin/MCU_Code.bin
  5. BIN
      OBJ/obj_debug_efm/LT7689.axf
  6. +1
    -1
      OBJ/obj_debug_efm/LT7689.build_log.htm
  7. +979
    -968
      OBJ/obj_debug_efm/LT7689.hex
  8. +761
    -883
      OBJ/obj_debug_efm/LT7689.htm
  9. +7
    -7
      OBJ/obj_debug_efm/LT7689_LT7689.dep
  10. BIN
      OBJ/obj_debug_efm/adc_dma.o
  11. BIN
      OBJ/obj_debug_efm/adc_drv.o
  12. BIN
      OBJ/obj_debug_efm/alg_drv.o
  13. BIN
      OBJ/obj_debug_efm/bitstream.o
  14. BIN
      OBJ/obj_debug_efm/cache_drv.o
  15. BIN
      OBJ/obj_debug_efm/ccm_drv.o
  16. BIN
      OBJ/obj_debug_efm/common.o
  17. BIN
      OBJ/obj_debug_efm/cpm_drv.o
  18. BIN
      OBJ/obj_debug_efm/crc.o
  19. BIN
      OBJ/obj_debug_efm/crc_drv.o
  20. BIN
      OBJ/obj_debug_efm/dac_drv.o
  21. BIN
      OBJ/obj_debug_efm/data.o
  22. BIN
      OBJ/obj_debug_efm/delay.o
  23. BIN
      OBJ/obj_debug_efm/diskio.o
  24. BIN
      OBJ/obj_debug_efm/dma.o
  25. BIN
      OBJ/obj_debug_efm/dmac_drv.o
  26. BIN
      OBJ/obj_debug_efm/edma_drv.o
  27. BIN
      OBJ/obj_debug_efm/eflash_drv.o
  28. BIN
      OBJ/obj_debug_efm/eport_drv.o
  29. BIN
      OBJ/obj_debug_efm/ff.o
  30. BIN
      OBJ/obj_debug_efm/ffunicode.o
  31. BIN
      OBJ/obj_debug_efm/flash.crf
  32. BIN
      OBJ/obj_debug_efm/flash.o
  33. BIN
      OBJ/obj_debug_efm/i2c_drv.o
  34. BIN
      OBJ/obj_debug_efm/if_port.o
  35. BIN
      OBJ/obj_debug_efm/iic.o
  36. BIN
      OBJ/obj_debug_efm/ioctrl_drv.o
  37. BIN
      OBJ/obj_debug_efm/lt768.o
  38. BIN
      OBJ/obj_debug_efm/lt768_lib.o
  39. BIN
      OBJ/obj_debug_efm/main.crf
  40. +1
    -1
      OBJ/obj_debug_efm/main.d
  41. BIN
      OBJ/obj_debug_efm/main.o
  42. BIN
      OBJ/obj_debug_efm/mask.o
  43. BIN
      OBJ/obj_debug_efm/mmask.o
  44. BIN
      OBJ/obj_debug_efm/mqrspec.o
  45. BIN
      OBJ/obj_debug_efm/ota.crf
  46. BIN
      OBJ/obj_debug_efm/ota.o
  47. BIN
      OBJ/obj_debug_efm/pci_drv.o
  48. BIN
      OBJ/obj_debug_efm/pit.o
  49. BIN
      OBJ/obj_debug_efm/pit32_drv.o
  50. BIN
      OBJ/obj_debug_efm/pwm_drv.o
  51. BIN
      OBJ/obj_debug_efm/qr_encode.o
  52. BIN
      OBJ/obj_debug_efm/qrencode.o
  53. BIN
      OBJ/obj_debug_efm/qrinput.o
  54. BIN
      OBJ/obj_debug_efm/qrspec.o
  55. BIN
      OBJ/obj_debug_efm/reset_drv.o
  56. BIN
      OBJ/obj_debug_efm/rscode.o
  57. BIN
      OBJ/obj_debug_efm/rtc_drv.o
  58. BIN
      OBJ/obj_debug_efm/sincostable.o
  59. BIN
      OBJ/obj_debug_efm/spi_drv.o
  60. BIN
      OBJ/obj_debug_efm/spi_sd.o
  61. BIN
      OBJ/obj_debug_efm/split.o
  62. BIN
      OBJ/obj_debug_efm/ssi_drv.o
  63. BIN
      OBJ/obj_debug_efm/sys.o
  64. BIN
      OBJ/obj_debug_efm/system_armcm4.o
  65. BIN
      OBJ/obj_debug_efm/systick_drv.o
  66. BIN
      OBJ/obj_debug_efm/tc_drv.o
  67. BIN
      OBJ/obj_debug_efm/tp_drv.o
  68. BIN
      OBJ/obj_debug_efm/trng_drv.o
  69. BIN
      OBJ/obj_debug_efm/uart.o
  70. BIN
      OBJ/obj_debug_efm/uart_drv.o
  71. BIN
      OBJ/obj_debug_efm/uart_vcom.o
  72. BIN
      OBJ/obj_debug_efm/updata.o
  73. BIN
      OBJ/obj_debug_efm/usb_ccid_config.o
  74. BIN
      OBJ/obj_debug_efm/usb_ccid_contril.o
  75. BIN
      OBJ/obj_debug_efm/usb_cdc_config.o
  76. BIN
      OBJ/obj_debug_efm/usb_cdc_control.o
  77. BIN
      OBJ/obj_debug_efm/usb_drv.o
  78. BIN
      OBJ/obj_debug_efm/usb_hid_control.o
  79. BIN
      OBJ/obj_debug_efm/usb_hid_isr.o
  80. BIN
      OBJ/obj_debug_efm/usb_ms_config.o
  81. BIN
      OBJ/obj_debug_efm/usb_ms_control.o
  82. BIN
      OBJ/obj_debug_efm/usbdev_control.o
  83. BIN
      OBJ/obj_debug_efm/usbdev_isr.o
  84. BIN
      OBJ/obj_debug_efm/wdt_drv.o
  85. +1
    -1
      User/Flash.c
  86. +23
    -0
      User/OTA_H.h
  87. +302
    -361
      User/main.c
  88. +455
    -44
      User/ota.c

+ 40
- 38
LT7689.uvguix.14874
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 1
- 1
LT7689.uvoptx 파일 보기

@ -480,7 +480,7 @@
<GroupNumber>1</GroupNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\User\ota.c</PathWithFileName>

+ 727
- 726
Listings/LT7689.map
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


BIN
OBJ/bin/MCU_Code.bin 파일 보기


BIN
OBJ/obj_debug_efm/LT7689.axf 파일 보기


+ 1
- 1
OBJ/obj_debug_efm/LT7689.build_log.htm 파일 보기

@ -41,7 +41,7 @@ Package Vendor: ARM
D:\keil5Mdk\Keil5_MDK\Packs\ARM\CMSIS\5.7.0\Device\ARM\ARMCM4\Include
<h2>Collection of Component Files used:</h2>
Build Time Elapsed: 00:00:00
Build Time Elapsed: 00:00:01
</pre>
</body>
</html>

+ 979
- 968
OBJ/obj_debug_efm/LT7689.hex
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 761
- 883
OBJ/obj_debug_efm/LT7689.htm
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 7
- 7
OBJ/obj_debug_efm/LT7689_LT7689.dep 파일 보기

@ -1,6 +1,7 @@
Dependencies for Project 'LT7689', Target 'LT7689': (DO NOT MODIFY !)
CompilerVersion: 5060960::V5.06 update 7 (build 960)::.\ARMCC
F (.\User\main.c)(0x68255E46)(--c99 --gnu -c --cpu Cortex-M4.fp.sp -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\ccore\common -I .\ccore -I .\Function -I .\Function_drv -I .\Levetoplib -I .\MCU_drv\drv\inc -I .\MCU_drv\drv\src -I .\MCU_drv\lib -I .\QRCODE -I .\User -I .\MCU_drv\drv\src\usb -ID:\keil5Mdk\Keil5_MDK\Packs\ARM\CMSIS\5.7.0\Device\ARM\ARMCM4\Include -D__UVISION_VERSION="534" -DARMCM4_FP -DARM_MATH_CM4 -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__CC_ARM -o .\obj\obj_debug_efm\main.o --omf_browse .\obj\obj_debug_efm\main.crf --depend .\obj\obj_debug_efm\main.d)
F (.\User\main.c)(0x68396A7B)(--c99 --gnu -c --cpu Cortex-M4.fp.sp -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\ccore\common -I .\ccore -I .\Function -I .\Function_drv -I .\Levetoplib -I .\MCU_drv\drv\inc -I .\MCU_drv\drv\src -I .\MCU_drv\lib -I .\QRCODE -I .\User -I .\MCU_drv\drv\src\usb -ID:\keil5Mdk\Keil5_MDK\Packs\ARM\CMSIS\5.7.0\Device\ARM\ARMCM4\Include -D__UVISION_VERSION="534" -DARMCM4_FP -DARM_MATH_CM4 -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__CC_ARM -o .\obj\obj_debug_efm\main.o --omf_browse .\obj\obj_debug_efm\main.crf --depend .\obj\obj_debug_efm\main.d)
I (D:\keil5Mdk\Keil5_MDK\ARM\ARMCC\include\stdio.h)(0x5E8E3CC2)
I (.\ccore\common\sys.h)(0x67B2F52B)
I (.\ccore\LT7689_C.h)(0x67B2F52B)
I (.\ccore\core_cm4.h)(0x67B2F52B)
@ -13,7 +14,6 @@ I (.\ccore\system_lt7689.h)(0x67B2F52B)
I (.\ccore\common\type.h)(0x67B2F52B)
I (.\ccore\common\common.h)(0x67B2F52B)
I (.\Function_drv\uart.h)(0x67CEADB2)
I (D:\keil5Mdk\Keil5_MDK\ARM\ARMCC\include\stdio.h)(0x5E8E3CC2)
I (.\ccore\common\memmap.h)(0x67B2F52B)
I (.\MCU_drv\drv\inc\uart_drv.h)(0x67B2F52B)
I (.\MCU_drv\drv\inc\uart_reg.h)(0x67B2F52B)
@ -56,7 +56,7 @@ I (.\MCU_drv\drv\inc\wdt_reg.h)(0x67B2F52B)
I (.\MCU_drv\drv\inc\usb_drv.h)(0x67B2F52B)
I (.\MCU_drv\drv\inc\usb_reg.h)(0x67B2F52B)
I (User\UI_H.h)(0x681072CC)
I (User\OTA_H.h)(0x6821A18F)
I (User\OTA_H.h)(0x68395D97)
I (User\meg.h)(0x681072DA)
I (User\CRC.h)(0x62FCA25A)
I (User\cpm_drv.h)(0x5DF1B6F4)
@ -71,7 +71,7 @@ I (.\MCU_drv\drv\inc\reset_drv.h)(0x67B2F52B)
I (.\MCU_drv\drv\inc\reset_reg.h)(0x67B2F52B)
F (.\User\module_select.h)(0x67CFA11F)()
F (.\User\UI_H.h)(0x681072CC)()
F (.\User\OTA_H.h)(0x6821A18F)()
F (.\User\OTA_H.h)(0x68395D97)()
F (.\User\meg.h)(0x681072DA)()
F (.\User\cpm_drv.h)(0x5DF1B6F4)()
F (.\User\Updata.h)(0x680F2D55)()
@ -79,7 +79,7 @@ F (.\User\ff.h)(0x6367B56C)()
F (.\User\ffconf.h)(0x63E610EE)()
F (.\User\SPI_SD.h)(0x681072D7)()
F (.\User\diskio.h)(0x6367B56C)()
F (.\User\Flash.c)(0x682405E3)(--c99 --gnu -c --cpu Cortex-M4.fp.sp -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\ccore\common -I .\ccore -I .\Function -I .\Function_drv -I .\Levetoplib -I .\MCU_drv\drv\inc -I .\MCU_drv\drv\src -I .\MCU_drv\lib -I .\QRCODE -I .\User -I .\MCU_drv\drv\src\usb -ID:\keil5Mdk\Keil5_MDK\Packs\ARM\CMSIS\5.7.0\Device\ARM\ARMCM4\Include -D__UVISION_VERSION="534" -DARMCM4_FP -DARM_MATH_CM4 -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__CC_ARM -o .\obj\obj_debug_efm\flash.o --omf_browse .\obj\obj_debug_efm\flash.crf --depend .\obj\obj_debug_efm\flash.d)
F (.\User\Flash.c)(0x68259861)(--c99 --gnu -c --cpu Cortex-M4.fp.sp -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\ccore\common -I .\ccore -I .\Function -I .\Function_drv -I .\Levetoplib -I .\MCU_drv\drv\inc -I .\MCU_drv\drv\src -I .\MCU_drv\lib -I .\QRCODE -I .\User -I .\MCU_drv\drv\src\usb -ID:\keil5Mdk\Keil5_MDK\Packs\ARM\CMSIS\5.7.0\Device\ARM\ARMCM4\Include -D__UVISION_VERSION="534" -DARMCM4_FP -DARM_MATH_CM4 -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__CC_ARM -o .\obj\obj_debug_efm\flash.o --omf_browse .\obj\obj_debug_efm\flash.crf --depend .\obj\obj_debug_efm\flash.d)
I (D:\keil5Mdk\Keil5_MDK\ARM\ARMCC\include\string.h)(0x5E8E3CC2)
I (User\Flash.h)(0x682405E2)
I (.\ccore\common\sys.h)(0x67B2F52B)
@ -304,8 +304,8 @@ I (User\ffconf.h)(0x63E610EE)
I (User\SPI_SD.h)(0x681072D7)
I (User\diskio.h)(0x6367B56C)
I (User\CRC.h)(0x62FCA25A)
F (.\User\ota.c)(0x6823F6B0)(--c99 --gnu -c --cpu Cortex-M4.fp.sp -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\ccore\common -I .\ccore -I .\Function -I .\Function_drv -I .\Levetoplib -I .\MCU_drv\drv\inc -I .\MCU_drv\drv\src -I .\MCU_drv\lib -I .\QRCODE -I .\User -I .\MCU_drv\drv\src\usb -ID:\keil5Mdk\Keil5_MDK\Packs\ARM\CMSIS\5.7.0\Device\ARM\ARMCM4\Include -D__UVISION_VERSION="534" -DARMCM4_FP -DARM_MATH_CM4 -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__CC_ARM -o .\obj\obj_debug_efm\ota.o --omf_browse .\obj\obj_debug_efm\ota.crf --depend .\obj\obj_debug_efm\ota.d)
I (User\OTA_H.h)(0x6821A18F)
F (.\User\ota.c)(0x68395D8D)(--c99 --gnu -c --cpu Cortex-M4.fp.sp -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\ccore\common -I .\ccore -I .\Function -I .\Function_drv -I .\Levetoplib -I .\MCU_drv\drv\inc -I .\MCU_drv\drv\src -I .\MCU_drv\lib -I .\QRCODE -I .\User -I .\MCU_drv\drv\src\usb -ID:\keil5Mdk\Keil5_MDK\Packs\ARM\CMSIS\5.7.0\Device\ARM\ARMCM4\Include -D__UVISION_VERSION="534" -DARMCM4_FP -DARM_MATH_CM4 -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__CC_ARM -o .\obj\obj_debug_efm\ota.o --omf_browse .\obj\obj_debug_efm\ota.crf --depend .\obj\obj_debug_efm\ota.d)
I (User\OTA_H.h)(0x68395D97)
I (.\MCU_drv\drv\inc\eflash_drv.h)(0x67B2F52B)
I (.\ccore\common\type.h)(0x67B2F52B)
I (.\ccore\LT7689_C.h)(0x67B2F52B)

BIN
OBJ/obj_debug_efm/adc_dma.o 파일 보기


BIN
OBJ/obj_debug_efm/adc_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/alg_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/bitstream.o 파일 보기


BIN
OBJ/obj_debug_efm/cache_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/ccm_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/common.o 파일 보기


BIN
OBJ/obj_debug_efm/cpm_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/crc.o 파일 보기


BIN
OBJ/obj_debug_efm/crc_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/dac_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/data.o 파일 보기


BIN
OBJ/obj_debug_efm/delay.o 파일 보기


BIN
OBJ/obj_debug_efm/diskio.o 파일 보기


BIN
OBJ/obj_debug_efm/dma.o 파일 보기


BIN
OBJ/obj_debug_efm/dmac_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/edma_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/eflash_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/eport_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/ff.o 파일 보기


BIN
OBJ/obj_debug_efm/ffunicode.o 파일 보기


BIN
OBJ/obj_debug_efm/flash.crf 파일 보기


BIN
OBJ/obj_debug_efm/flash.o 파일 보기


BIN
OBJ/obj_debug_efm/i2c_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/if_port.o 파일 보기


BIN
OBJ/obj_debug_efm/iic.o 파일 보기


BIN
OBJ/obj_debug_efm/ioctrl_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/lt768.o 파일 보기


BIN
OBJ/obj_debug_efm/lt768_lib.o 파일 보기


BIN
OBJ/obj_debug_efm/main.crf 파일 보기


+ 1
- 1
OBJ/obj_debug_efm/main.d 파일 보기

@ -1,4 +1,5 @@
.\obj\obj_debug_efm\main.o: User\main.c
.\obj\obj_debug_efm\main.o: D:\keil5Mdk\Keil5_MDK\ARM\ARMCC\Bin\..\include\stdio.h
.\obj\obj_debug_efm\main.o: .\ccore\common\sys.h
.\obj\obj_debug_efm\main.o: .\ccore\LT7689_C.h
.\obj\obj_debug_efm\main.o: .\ccore\core_cm4.h
@ -12,7 +13,6 @@
.\obj\obj_debug_efm\main.o: .\ccore\common\common.h
.\obj\obj_debug_efm\main.o: .\Function_drv\uart.h
.\obj\obj_debug_efm\main.o: .\ccore\common\sys.h
.\obj\obj_debug_efm\main.o: D:\keil5Mdk\Keil5_MDK\ARM\ARMCC\Bin\..\include\stdio.h
.\obj\obj_debug_efm\main.o: .\ccore\common\memmap.h
.\obj\obj_debug_efm\main.o: .\MCU_drv\drv\inc\uart_drv.h
.\obj\obj_debug_efm\main.o: .\MCU_drv\drv\inc\uart_reg.h

BIN
OBJ/obj_debug_efm/main.o 파일 보기


BIN
OBJ/obj_debug_efm/mask.o 파일 보기


BIN
OBJ/obj_debug_efm/mmask.o 파일 보기


BIN
OBJ/obj_debug_efm/mqrspec.o 파일 보기


BIN
OBJ/obj_debug_efm/ota.crf 파일 보기


BIN
OBJ/obj_debug_efm/ota.o 파일 보기


BIN
OBJ/obj_debug_efm/pci_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/pit.o 파일 보기


BIN
OBJ/obj_debug_efm/pit32_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/pwm_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/qr_encode.o 파일 보기


BIN
OBJ/obj_debug_efm/qrencode.o 파일 보기


BIN
OBJ/obj_debug_efm/qrinput.o 파일 보기


BIN
OBJ/obj_debug_efm/qrspec.o 파일 보기


BIN
OBJ/obj_debug_efm/reset_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/rscode.o 파일 보기


BIN
OBJ/obj_debug_efm/rtc_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/sincostable.o 파일 보기


BIN
OBJ/obj_debug_efm/spi_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/spi_sd.o 파일 보기


BIN
OBJ/obj_debug_efm/split.o 파일 보기


BIN
OBJ/obj_debug_efm/ssi_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/sys.o 파일 보기


BIN
OBJ/obj_debug_efm/system_armcm4.o 파일 보기


BIN
OBJ/obj_debug_efm/systick_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/tc_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/tp_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/trng_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/uart.o 파일 보기


BIN
OBJ/obj_debug_efm/uart_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/uart_vcom.o 파일 보기


BIN
OBJ/obj_debug_efm/updata.o 파일 보기


BIN
OBJ/obj_debug_efm/usb_ccid_config.o 파일 보기


BIN
OBJ/obj_debug_efm/usb_ccid_contril.o 파일 보기


BIN
OBJ/obj_debug_efm/usb_cdc_config.o 파일 보기


BIN
OBJ/obj_debug_efm/usb_cdc_control.o 파일 보기


BIN
OBJ/obj_debug_efm/usb_drv.o 파일 보기


BIN
OBJ/obj_debug_efm/usb_hid_control.o 파일 보기


BIN
OBJ/obj_debug_efm/usb_hid_isr.o 파일 보기


BIN
OBJ/obj_debug_efm/usb_ms_config.o 파일 보기


BIN
OBJ/obj_debug_efm/usb_ms_control.o 파일 보기


BIN
OBJ/obj_debug_efm/usbdev_control.o 파일 보기


BIN
OBJ/obj_debug_efm/usbdev_isr.o 파일 보기


BIN
OBJ/obj_debug_efm/wdt_drv.o 파일 보기


+ 1
- 1
User/Flash.c 파일 보기

@ -496,7 +496,7 @@ uint32_t W25N01GV_ReadID(void)
}
/**********************擦除**********************/
//128KB Block
//128KB Block //1024 0-1023 511
void W25N01GV_Erase_Block(uint16_t block)
{
uint32_t addr = 0;

+ 23
- 0
User/OTA_H.h 파일 보기

@ -24,4 +24,27 @@ extern unsigned int ota_lt7689_length ;
extern unsigned char ui_buf[2050] ;
extern unsigned int ui_buf_length;
/*OTA - 3-enhance */
#if 1
extern unsigned char CalCheckSum( char * buf,unsigned short len);
extern unsigned char pkg_seq ;
extern unsigned char rev_status ;
extern unsigned char rev_datalength;
extern unsigned char datalength;
extern unsigned char wifi_buf[256] ;
extern unsigned char mes_length ;
extern unsigned char inf_wifi_buf[20] ;
extern unsigned char inf_wifi_buf_length ;
extern unsigned short ota_seq ;
extern unsigned char inf_wifi_ack(unsigned char * inf_wifi_buf,unsigned char pkg_seq);
extern unsigned char send_meg_wifi(unsigned char * send_buf,unsigned char length);
extern unsigned char ota_analysis(unsigned char * rev_wifi_buf,unsigned short len);
extern unsigned char inf_wifi_ota_start(unsigned char * inf_wifi_buf,unsigned char pkg_seq);
extern unsigned char inf_wifi_data_check_error(unsigned char * inf_wifi_buf,unsigned char pkg_seq);
#endif
#endif

+ 302
- 361
User/main.c 파일 보기

@ -7,7 +7,7 @@
* @brief This file include main function.
*************************************************************************/
#include <stdio.h>
#include "sys.h"
#include "uart.h"
#include "delay.h"
@ -198,8 +198,8 @@ void SCI1_Init(uint32_t pclk, uint32_t bound,uint8_t parity)
band_rate =(pclk*4/bound)>>6;
SCI1->SCIBDH=(u8)((band_rate>>8)&0x00ff);
SCI1->SCIBDL=(u8)(band_rate&0x00ff);
SCI1->SCICR2 |= (1<<2)|(1<<3)|(1<<5)|(1 << 4);
NVIC_Init(0, 0, SCI1_IRQn, 2);
SCI1->SCICR2 |= (1<<2)|(1<<3)|(1<<5);// |(1 << 4)
NVIC_Init(1, 1, SCI1_IRQn, 2);
}
void SCI2_Init(uint32_t pclk, uint32_t bound,uint8_t parity)
@ -220,7 +220,7 @@ void SCI3_Init(uint32_t pclk, uint32_t bound,uint8_t parity)
band_rate =(pclk*4/bound)>>6;
SCI3->SCIBDH=(u8)((band_rate>>8)&0x00ff);
SCI3->SCIBDL=(u8)(band_rate&0x00ff);
SCI3->SCICR2 |= (1<<2)|(1<<3)|(1<<5)|(1 << 4);
SCI3->SCICR2 |= (1<<2)|(1<<3)|(1<<5);//|(1 << 4)
NVIC_Init(0, 0, SCI3_IRQn, 2);
}
int fputc(int ch, FILE *f)
@ -235,7 +235,7 @@ int fputc(int ch, FILE *f)
// {
// };
// SCI2->SCIDRL = (uint8_t)ch; //SCI1->SCIDRL = (uint8_t)data;
// return ch;
return ch;
}
@ -324,6 +324,7 @@ void SCI1_IRQHandler(void)
extern unsigned char app_flag;
/******************************************************************/
extern uint8_t Rx_Buffer_short[512] ;
extern uint8_t Rx_Buffer1_short[512] ;
extern uint16_t Rx_Count_short ;
@ -345,40 +346,30 @@ extern unsigned short block ;
extern unsigned int page ;
extern unsigned int ui_addr;
extern unsigned char last_flag;
extern unsigned char dma_flag;
//unsigned char flash[2050] = {0};
int main(void)
{
// printf("***app!!**\r\n");
// u8 inBuf[64];
// u16 X_pos=0;
// u16 Y_pos=0;
// uint16_t cx, cy;
// uint8_t w_temp, h_temp;
// u8 Sd_card_exist = 0; char Download_flag = 0;
NVIC_SetVectorTable(0x800A000, 0);//0x800A000 0x8010000
// NVIC_SetVectorTable(0x800F800, 0);
// PeripheralInit();
Sys_Init();
Enable_Interrupts;
SCI1_Init(g_ips_clk,921600 ,0); //115200 921600
// SCI2_Init(g_ips_clk, 115200,0);
// SCI3_Init(g_ips_clk,921600 ,0);
SCI3_Init(g_ips_clk,38400 ,0);
/********************升级*******************/
ota_address = LT_APP;
Make_CRC32_Table();
ota_address = 0x08010000;
printf("***bootloader1!!**\r\n");
// APP(APP_ADDR); //21KB
// SCI3_DMA_Init(g_ips_clk,115200);
SCI3_DMA_Init(g_ips_clk,921600);//921600
unsigned short i = 0;
// APP(APP2_ADDR);
// SCI3_DMA_Init(g_ips_clk,38400);
//SCI3_DMA_Init(g_ips_clk,921600);//921600 38400
#if 0
while(1)
{
@ -924,212 +915,32 @@ SCI3_DMA_Init(g_ips_clk,921600);//921600
}
#endif
// APP(APP_ADDR);
#if 0
Run_Boot_ID = 0x47210659;
if((Run_Boot_ID == 0x47210659) || (EFLASH_WordRead(0x8009E00)!=0x21436587))
{
// printf("enter-updata\r\n");
uart_rx_number = 0;
uart_buf[0] = 0x0;
uart_rx_endIndex = 0;
uart_act_index = 0;
vcom_rp[0].fullIndex = 0;
vcom_rp[1].fullIndex = 0;
baud_index = 0x7F;
display_manu(0);
Enable_Interrupts;
// Uart_Init(g_ips_clk, 921600); //升级的串口初始化 1382400;//921600;//230400;//115200;
Uart_Init(g_ips_clk, 115200);
PIT1_Init_Uart(); //PIT定时器初始化,用来监控串口数据结束的
#if Display_Progress
PIT2_Loop();
#endif
LT_SingleByteToPc(0xAA);
inBuf[0]=0xAA;
inBuf[1]=0xFF;
inBuf[2]=0x42;
inBuf[3]=0x4F;
inBuf[4]=0x4F;
inBuf[5]=0x54;
inBuf[6]=0x55;
inBuf[7]=0x50;
inBuf[8]=0x44;
inBuf[9]=0x41;
inBuf[10]=0x54;
inBuf[11]=0x45;
inBuf[12]=0xA4;
inBuf[13]=0x18;
inBuf[14]=0xE4;
inBuf[15]=0x1B;
inBuf[16]=0x11;
inBuf[17]=0xEE;
uart_send(inBuf,18);
unsigned char buff[1024],buff1[1024];
LT768_Print_Internal_Font_String(50,50,Red,Blue2,"Uart_Updating,please keep power on");
// LT768_Print_Internal_Font_String(100,2*50,Red,Blue2,"Uart_Updating,do not off");
printf("***baud_index=%d***\r\n",baud_index);
while(1)
{
// printf("uart updata!\r\n");
WDT_FeedDog();
#if 1
if( app_flag ==1)
{
app_flag = 0;
WDT_FeedDog();
APP(APP2_ADDR); //21KB APP_ADDR 0x8022000
}
#endif
if(uart_act_index == 1)
{
do_all_uart();
}
if(baud_index<11)
{
DelayMS(5);
Uart_Init(g_ips_clk,bdRate[baud_index]);
printf("bdRate[baud_index]=%d\r\n",bdRate[baud_index]);
baud_index = 0x7F;
}
#if Display_Progress
if(Flag_Loop)
{
Flag_Loop=0;
if(FLag_Pos==0)
{
X_pos=202;
Y_pos=120;
}
else if(FLag_Pos==1)
{
X_pos=226;
Y_pos=170;
}
if(count_Loop==0) LT768_Print_Internal_Font_String(X_pos,Y_pos,Red,Blue2,"* ");
else if(count_Loop==1) LT768_Print_Internal_Font_String(X_pos,Y_pos,Red,Blue2," *");
count_Loop++;
if(count_Loop>1) count_Loop=0;
}
#endif
}
}
display_manu(0);
printf(" date = %s,time = %s \r\n", (char *)__DATE__, (char *)__TIME__);
// for(unsigned short i = 0 ; i < 512 ; i++)
// printf(" %x",Rx_Buffer_short[i]);
// printf("--------------\r\n");
// for(unsigned short i = 0 ; i < 512 ; i++)
// printf(" %x",Rx_Buffer1_short[i]);
// printf("--------------\r\n");
// char debug[256] = {0xA5,0x5A,0x01,0x0E,0x20,0xCD,0x02,0x01,0x00,0x00,0xC8,0x3A,0x7A,0xAC,0xFF 0x02 0x59 0x0F 0x90 0xF7 0x65 0xE0 0x44 0x80 0xF0 0x22 0x02 0x55 0x0D 0x12 0x79 0x00 0x12 0x5B 0xFE 0xD2 0xC5 0x12 0x5B 0xFE 0x00 0x00 0x12 0x77 0x6D 0x00 0x00 0x00 0x00 0x22 0x02 0x4C 0x57 0x90 0xF1 0x26 0xE0 0xFE 0xEF 0xF4 0xFF 0xEE 0x5F 0xF0 0x22 0x00 0x02 0x4E 0x7A 0xEF 0x14 0x60 0x22 0x14 0x60 0x31 0x14 0x60 40 14 60 4F 14 60 5E 24 05 70 6B EC 90 F1 31 F0 90 F1 30 ED F0 90 F1 29 E0 44 01 F0 22 EC 90 F1 33 F0 90 F1 32 ED F0 90 F1 29 E0 44 02 F0 22 EC 90 F1 35 F0 90 F1 34 ED F0 90 F1 29 E0 44 04 F0 22 EC 90 F1 37 F0 90 F1 36 ED F0 90 F1 29 E0 44 08 F0 22 EC 90 F1 39 F0 90 F1 38 ED F0 90 F1 29 E0 44 10 F0 22 EC 90 F1 3B F0 90 F1 3A ED F0 90 F1 29 E0 44 20 F0 22 D2 60 02 68 CE 02 41 DB 90 06 36 E4 F0 A3};
// unsigned char check_number = CalCheckSum(debug,12);
// printf("check_number: %x\r\n",check_number);
//A5 5A 01 1B 20 06 01 01 00 00 7A 3E FB
// else //没有卡,离开BootLoader,跳转到app
// {
//
// APP(APP_ADDR);
// }
#endif
#if 0
unsigned char flash[256]={0};
unsigned char flash1[256]={0};
unsigned char flash2[256]={0};
unsigned char flash3[512]={0};
unsigned char flash4[512]={0};
for(unsigned int i = 0 ; i < 256 ; i++)
{
flash[i] = 6;
}
// W25N01GV_Erase_Block(0);//W25N01GV_Erase_Block(0x200000/131072);
for(unsigned int i = 0 ; i < 256 ; i++)
{
printf(" %x" , flash1[i]);
}
W25N01GV_ReadPageAddr_Data(flash1,0,0,256); //W25N01GV_ReadPageAddr_Data(flash1,0,0x200000/2048,256);
printf("\r\n--------Erase---------------\r\n");
for(unsigned int i = 0 ; i < 256 ; i++)
{
printf(" %x" , flash1[i]);
}
W25N01GV_ReadPageAddr_Data(flash1,256,0,256); //W25N01GV_ReadPageAddr_Data(flash1,256,0x200000/2048,256);
printf("\r\n--------Erase---------------\r\n");
for(unsigned int i = 0 ; i < 256 ; i++)
{
printf(" %x" , flash1[i]);
}
W25N01GV_ReadPageAddr_Data(flash3,0,0,512); //W25N01GV_ReadPageAddr_Data(flash3,0,0x200000/2048,512);
printf("\r\n--------Erase---------------\r\n");
for(unsigned int i = 0 ; i < 512 ; i++)
{
printf(" %x" , flash3[i]);
}
//写入
W25N01GV_WritePageAddr_Data(flash,0,0,256); //W25N01GV_WritePageAddr_Data(flash,0,0x200000/2048,256);
//读取
W25N01GV_ReadPageAddr_Data(flash1,0,0,256); //W25N01GV_ReadPageAddr_Data(flash1,0,0x200000/2048,256);
printf("\r\n-----------write--flash1----------\r\n");
for(unsigned int i = 0 ; i < 256 ; i++)
{
printf(" %x" , flash1[i]);
}
printf("\r\n-----------write---flash2---------\r\n");
W25N01GV_WritePageAddr_Data(flash,256,0,256); // W25N01GV_WritePageAddr_Data(flash,256,0x200000/2048,256);
W25N01GV_ReadPageAddr_Data(flash2,256,0,256); // W25N01GV_ReadPageAddr_Data(flash2,256,0x200000/2048,256);
for(unsigned int i = 0 ; i < 256 ; i++)
{
printf(" %x" , flash2[i]);
}
printf("\r\n-----------write---flash3---------\r\n");
W25N01GV_ReadPageAddr_Data(flash3,0,0,512);//W25N01GV_ReadPageAddr_Data(flash3,0,0x200000/2048,512);
for(unsigned int i = 0 ; i < 512 ; i++)
{
printf(" %x" , flash3[i]);
}
printf("\r\n-----------write---flash4---------\r\n");
W25N01GV_ReadPageAddr_Data(flash4,512,0,512);//W25N01GV_ReadPageAddr_Data(flash4,512,0x200000/2048,512);
for(unsigned int i = 0 ; i < 512 ; i++)
{
printf(" %x" , flash4[i]);
}
#endif
//W25N01GV_Erase_Block(0);
display_manu(0);
// unsigned char my_buf[2050];
// unsigned char my_show[2050];
// for(unsigned short i = 0 ; i < 2048 ; i++)
// {
// my_buf[i] = i%9;
// }
// printf("\r\n--------------\r\n");
// W25N01GV_Erase_Block(0);
//// printf("bdRate[baud_index]=%d\r\n",bdRate[baud_index]);
// W25N01GV_WritePageAddr_Data(my_buf,0,0,2048);
// W25N01GV_ReadPageAddr_Data(my_show,0,0,2048);
// for(unsigned short i = 0 ; i<2048;i++)
// {
// printf(" %x",my_show[i]);
// }
// printf("\r\n--------------\r\n");
while(1)
{
WDT_FeedDog();
// printf("init finish!\r\n");
// DelayMS(500);
// printf("f:%d\r\n",ota_lt7689_flag);
if(ota_lt7689_flag==1)
{
WDT_FeedDog();
{
// printf("ota_flag=%d\r\n",ota_lt7689_flag);
#if 0 //跳转程序
if((Rx_Buffer_short[0]==0xA5)&&
(Rx_Buffer_short[1]==0x5A)&&
(Rx_Buffer_short[2]==0x08)&&
@ -1157,107 +968,8 @@ SCI3_DMA_Init(g_ips_clk,921600);//921600
APP(APP2_ADDR);
}
#if 0
// printf("length:%d\r\n",ui_buf_length);
for(unsigned int i = 0 ; i < Rx_Count_short; i++)
{
ui_buf[i+ui_buf_length]=Rx_Buffer_short[i];
}
ui_buf_length += Rx_Count_short;
printf("ui=%d\r\n",ui_buf_length);
if(ui_buf_length==2048)//||(ui_buf_length==662)
{
#if 0
W25N01GV_Erase_Block(0);
printf("erase0\r\n");
W25N01GV_Erase_Block(1);
printf("erase1\r\n");
WDT_FeedDog();
W25N01GV_WritePageAddr_Data(ui_buf,0,0,ui_buf_length);
printf("Write\r\n");
WDT_FeedDog();
W25N01GV_ReadPageAddr_Data(flash,0,0,ui_buf_length);
printf("Read\r\n");
WDT_FeedDog();
for(unsigned int i = 0 ; i < ui_buf_length; i++)
{
printf(" %x",flash[i]);
}
printf("\r\n");
#endif
if(page%64==0)
{
printf("erase:%d\r\n",block);
W25N01GV_Erase_Block(block);
block++;
}
printf("page:%d length:%d\r\n",page,ui_buf_length);
W25N01GV_WritePageAddr_Data(ui_buf,0,page,ui_buf_length);
// for(unsigned int i = 0 ; i < ui_buf_length ; i++)
// {
// printf(" %x",ui_buf[i]);
// }
// printf("\r\n");
ui_buf_length=0;
page++;
}
#endif
#if 0
// 块擦除 每64页(128KB)的时候擦除下一块
if(page%64==0)
{
printf("block=%d\r\n",block);
W25N01GV_Erase_Block(1);
block++;
}
//写入 到2048(2KB)的时候 换页
// W25N01GV_Erase_Block(0);
// if(ui_offset%2048==0)
// {
//
// W25N01GV_Erase_Block(page);
// printf("erase\r\n");
// }
printf("%d %d %d\r\n",ui_offset,Rx_Count_short,page);
// ota_ui(page , Rx_Buffer_short ,Rx_Count_short,ui_offset);
// W25N01GV_WritePageAddr_Data(Rx_Buffer_short,ui_offset,page,Rx_Count_short);
// W25N01GV_ReadPageAddr_Data(flash,ui_offset,page,Rx_Count_short);
printf("OTA\r\n");
for(unsigned short i = 0 ; i < Rx_Count_short ; i++)
{
printf(" %x",Rx_Buffer_short[i]);//Rx_Buffer_short flash
}
printf("\r\n");
if(ui_offset==2048)
{
printf("enter 2048 \r\n");
page++;
ui_offset=0;
}
ui_offset+=Rx_Count_short;
Rx_Count_short=0;
printf("end %d %d %d\r\n",ui_offset,Rx_Count_short,page);
#endif
// for(i=0 ; i<256 ;i++)
// {
// printf("%x ",Rx_Buffer_short[i]);
// }
// printf("\r\n");
// if(Rx_Count_short<256)
// {
// printf("end number=%d Rx_Count_short=%d\r\n",number1,Rx_Count_short);
// }
#if 0 //OTA BIN-core 初版
ota_offset = Rx_Count_short;
// printf("ota_address %x\r\n",ota_address);// 256 0x8010000
@ -1281,57 +993,16 @@ SCI3_DMA_Init(g_ips_clk,921600);//921600
// printf("end number:%d\r\n",number);
// APP(APP_ADDR);
}
Rx_Count_short=0;
ota_lt7689_flag=0;
#endif
// number+=Rx_Count_short;
// for(unsigned short i = 0 ; i < Rx_Count_short; i++)
// {
// printf(" %x",Rx_Buffer_short[i]);
// }
// printf("\r\n");
#if 0 //
//保存数据 2048
// for(offset=0;offset<Rx_Count_short;offset++)
// {
// ui_buf[offset+ui_offset]=Rx_Buffer_short[offset];
// }
ui_offset+=Rx_Count_short;
ui_addr+=Rx_Count_short;
printf("addr=%x offset=%d\r\n",ui_addr,ui_offset);
// if(ui_addr%0x20000==0)//128KB 擦除
// {
// W25N01GV_Erase_Block(block);
// printf("block=%d\r\n",block);
// block++;
// }
// if((ui_offset%2048==0))
// {
// W25N01GV_WritePageAddr_Data(ui_buf,0,page,2048);
// ui_offset = 0;
// printf("page:%d offset:%d\r\n",page,ui_offset);
// page++;
// }
// else if (last_flag == 1)
// {
// W25N01GV_WritePageAddr_Data(ui_buf,0,page,ui_offset);
// ui_offset = 0;
// printf("page:%d offset:%d\r\n",page,ui_offset);
// page++;
// last_flag=0;
// printf("ui_addr=%x\r\n",ui_addr+Rx_Count_short);
// }
#endif
#if 1 //OTA-UI-BIN 初版
#if 0 //OTA-UI-BIN 初版
if((ui_addr%131072)==0)//128KB 擦除
{
W25N01GV_Erase_Block(block);
@ -1371,12 +1042,282 @@ SCI3_DMA_Init(g_ips_clk,921600);//921600
printf("ui_addr=%x\r\n",ui_addr);
}
Rx_Count_short=0;
ota_lt7689_flag=0;
#endif
#if 0 //对比DMA
// printf("ui_offset=%d\r\n",ui_offset);
printf("\r\n**1**\r\n");
// if(dma_flag==1)
// {
// printf("Rx_Buffer_short\r\n");
for(unsigned short i = 0; i < Rx_Count_short ; i++) //Rx_Count_short ui_offset
{
printf(" %x",Rx_Buffer_short[i]);//Rx_Buffer_short[i] ui_buf[i]
// printf(" %d",i);
}
// }
// else if (dma_flag==0)
// {
// printf("Rx_Buffer_short1\r\n");
// for(unsigned short i = 0; i < Rx_Count_short ; i++) //Rx_Count_short ui_offset
// {
// printf(" %x",Rx_Buffer1_short[i]);//Rx_Buffer_short[i] ui_buf[i]
//// printf(" %d",i);
// }
// }
// ui_offset=0;
printf("\r\n****\r\n");
Rx_Count_short=0;
ota_lt7689_flag=0;
#endif
// printf("number=%d\r\n",number);
#if 1 //3-enhance //211
//
// ota_analysis(Rx_Buffer_short,Rx_Count_short);
// printf("\r\n--------\r\n");
// for(unsigned char i = 0 ; i < Rx_Count_short; i++)
// printf(" %x",Rx_Buffer_short[i]);
// printf("\r\n %x \r\n",CalCheckSum(Rx_Buffer_short,Rx_Count_short-1));
// if(Rx_Count_short<200)
// {
// printf("all: %d\r\n",);
// }
// pkg_seq = 0;
// Rx_Count_short=0;
// ota_lt7689_flag=0;
// 收到WIFI开始升级报文
//收到WIFI固件发送完成
//收到WIFI 请求固件失败
//收到WIFI OTA超时
//收到WIFI 发送固件内容
/*******************rev_status**********************/
// 判断校验码是否准确
// ota_analysis(wifi_buf,mes_length);
printf("rev:%d check:%x\r\n",mes_length,CalCheckSum( (char *)wifi_buf, mes_length-1));
if(wifi_buf[mes_length-1]!= CalCheckSum( (char *)wifi_buf, mes_length-1))
{
printf("%x check_erro %x\r\n",CalCheckSum( (char *)wifi_buf, mes_length-1),wifi_buf[mes_length-1]);
// return 1;
// inf_wifi_data_check_error( inf_wifi_buf,wifi_buf[3]);
}
if((wifi_buf[0]!=0xA5)&&(wifi_buf[1]!=0x5A)&&(wifi_buf[2]!=0x01))
{
printf("illegal_new!\r\n");
// return 2;
}
for(unsigned char i = 0 ; i < mes_length; i++)
{
printf(" %x",wifi_buf[i]);
}
printf("\r\n");
//实现算法
// 收到wifi-ota通知
if((wifi_buf[4]==0x20)&&(wifi_buf[6]==0x01)&&(wifi_buf[7]==0x01))
{
pkg_seq = wifi_buf[3];
//ACK
unsigned char send_length=inf_wifi_ack(inf_wifi_buf,pkg_seq);
inf_wifi_buf[send_length] = CalCheckSum( (char *)inf_wifi_buf,send_length);
send_length++;
inf_wifi_buf_length = 0; // ACK
mes_length =0;
ota_lt7689_flag = 0;
send_meg_wifi(inf_wifi_buf,send_length);
// printf("ACK:");
// for(unsigned char i = 0 ; i < send_length ; i++)
// {
// printf(" %x",inf_wifi_buf[i]);
// }
// printf("\r\n---\r\n");
//发送 通知wifi 开始发送固件
DelayMS(30);//跳转Bootloader!!80
unsigned char length=inf_wifi_ota_start(inf_wifi_buf, pkg_seq);
// printf("inf:");
// for(unsigned char i = 0 ; i < length ; i++)
// {
// printf(" %x",inf_wifi_buf[i]);
// }
// printf("\r\n---\r\n");
inf_wifi_buf_length = 0;
mes_length =0;
ota_lt7689_flag = 0;
printf("start updata\r\n");
send_meg_wifi(inf_wifi_buf, length);
}
else if ((wifi_buf[4]==0x20)&&(wifi_buf[6]==0x02)&&(wifi_buf[7]==0x01))//wifi 发送固件内容报文
{
// printf("%d %d\r\n",wifi_buf[8],wifi_buf[9]);
// unsigned short updata_seq = 256*wifi_buf[8]+wifi_buf[9];//(wifi_buf[8] || (wifi_buf[9]<<8));
// printf("0***%d %d\r\n",updata_seq,ota_seq);
// updata_seq = wifi_buf[9] || (wifi_buf[8]<<8);
// printf("1***%d %d\r\n",updata_seq,ota_seq);
printf("***%d %d\r\n",ota_seq,256*wifi_buf[8]+wifi_buf[9]);
if(ota_seq==(256*wifi_buf[8]+wifi_buf[9]))
{
printf("bin:");
for(unsigned char i = 0 ; i < wifi_buf[10]; i++)
{
printf(" %x",wifi_buf[i+11]);
}
printf("\r\n");
ota_seq++;
}
else
{
printf("***repeat!\r\n");
}
//封装ACK
pkg_seq = wifi_buf[3]; //包序号
unsigned char send_length=inf_wifi_ack(inf_wifi_buf,pkg_seq);
inf_wifi_buf[send_length] = CalCheckSum( (char *)inf_wifi_buf,send_length);
send_length++;
// 发送ACK
inf_wifi_buf_length = 0; // ACK
mes_length =0;
ota_lt7689_flag = 0;
send_meg_wifi(inf_wifi_buf,send_length);
}
//wifi 发送固件完成
else if ((wifi_buf[4]==0x20)&&(wifi_buf[6]==0x01)&&(wifi_buf[7]==0x02))
{
printf("OTA-finish\r\n");
//封装ACK
pkg_seq = wifi_buf[3]; //包序号
unsigned char send_length=inf_wifi_ack(inf_wifi_buf,pkg_seq);
inf_wifi_buf[send_length] = CalCheckSum( (char *)inf_wifi_buf,send_length);
send_length++;
// 发送ACK
inf_wifi_buf_length = 0; // ACK
mes_length =0;
ota_lt7689_flag = 0;
ota_seq = 0;
printf("ota_seq=%d\r\n",ota_seq);
send_meg_wifi(inf_wifi_buf,send_length);
// mcu inform wifi
}
//wifi 请求失败
else if ((wifi_buf[4]==0x20)&&(wifi_buf[6]==0x01)&&(wifi_buf[7]==0x02))
{
printf("OTA-request-fail\r\n");
//封装ACK
pkg_seq = wifi_buf[3]; //包序号
unsigned char send_length=inf_wifi_ack(inf_wifi_buf,pkg_seq);
inf_wifi_buf[send_length] = CalCheckSum( (char *)inf_wifi_buf,send_length);
send_length++;
// 发送ACK
inf_wifi_buf_length = 0; // ACK
mes_length =0;
ota_lt7689_flag = 0;
send_meg_wifi(inf_wifi_buf,send_length);
}
//wifi 超时
else if ((wifi_buf[4]==0x20)&&(wifi_buf[6]==0x01)&&(wifi_buf[7]==0x02))
{
printf("OTA-timeout\r\n");
//封装ACK
pkg_seq = wifi_buf[3]; //包序号
unsigned char send_length=inf_wifi_ack(inf_wifi_buf,pkg_seq);
inf_wifi_buf[send_length] = CalCheckSum( (char *)inf_wifi_buf,send_length);
send_length++;
// 发送ACK
inf_wifi_buf_length = 0; // ACK
mes_length =0;
ota_lt7689_flag = 0;
send_meg_wifi(inf_wifi_buf,send_length);
}
else
{
printf("other new!\r\n");
//封装ACK
pkg_seq = wifi_buf[3]; //包序号
unsigned char send_length=inf_wifi_ack(inf_wifi_buf,pkg_seq);
inf_wifi_buf[send_length] = CalCheckSum( (char *)inf_wifi_buf,send_length);
send_length++;
// 发送ACK
inf_wifi_buf_length = 0; // ACK
mes_length =0;
ota_lt7689_flag = 0;
send_meg_wifi(inf_wifi_buf,send_length);
}
#endif
}

+ 455
- 44
User/ota.c 파일 보기

@ -41,9 +41,13 @@ unsigned int ota_ui(unsigned int addr , unsigned char * ota_lt_buf , unsigned in
/* Idle interrupt reception(SCI1) */
/*For debug */
uint8_t Rx_Buffer_short[512] = {0}; //256
uint8_t Rx_Buffer1_short[512] = {0}; //256
uint16_t Rx_Count_short = 0;
#include "dmac_drv.h"
#define Uart_Channel 2 //DMA channel
@ -164,7 +168,7 @@ void SCI3_DMA_Init(unsigned int pclk,unsigned int bound)
// SCI3->SCICR2 |= SCICR2_RE_MASK;
SCI3->SCIDCR |= SCIDCR_RXDMAE_MASK; //Uart_DMA enable
dma_uartRX(SCI3,Uart_Channel, Rx_Buffer_short,256);
dma_uartRX(SCI3,Uart_Channel, Rx_Buffer_short,256);//256
}
//void SCI1_IRQHandler(void)
@ -210,12 +214,18 @@ void SCI3_DMA_Init(unsigned int pclk,unsigned int bound)
unsigned char ui_buf[2050];
unsigned int ui_offset=0;
unsigned short block = 0;
unsigned int page = 0;
unsigned int ui_addr =0x00000000;
//extern unsigned short block1 = 512;
//extern unsigned int ui_addr1 =0x00100000;
//extern unsigned int page =64*512 32768
unsigned char last_flag = 0;
unsigned char dma_flag = 0;
// SCI3 DMA
#if 1
#if 0
void SCI3_IRQHandler(void)
{
uint16_t tmp,ret;
@ -237,64 +247,222 @@ void SCI3_IRQHandler(void)
tmp = UARTx->SCIDRL;
UARTx->SCIFCR2 |= SCIFCR2_RXFCLR;
Rx_Count_short = DMA_uart_GetRecvLen(UARTx,Uart_Channel);
gUsartRx.Flag = 1;
// gUsartRx.Flag = 1;
printf("len:%d\r\n",Rx_Count_short);
clear_idle_flag = SCI1->SCIDRL;
clear_idle_flag = SCI1->SCISR1;
dma_uartRX(UARTx,Uart_Channel, Rx_Buffer_short,256);//256 212
// SCI3->SCICR2 |= SCICR2_RE_MASK;
// SCI3->SCIDCR |= SCIDCR_RXDMAE_MASK; //Uart_DMA enable
// for(unsigned char i = 0 ; i < Rx_Count_short;i++ )
// {
// printf(" %x ",Rx_Buffer_short[i]);
// }
number1+=Rx_Count_short;
printf("R:");
for(unsigned char i = 0 ; i < Rx_Count_short;i++ )
{
printf(" %x ",Rx_Buffer_short[i]);
}
printf("\r\n");
// number1+=Rx_Count_short;
// ui_offset+=Rx_Count_short;
// Rx_Count_short=0;
dma_uartRX(UARTx,Uart_Channel, Rx_Buffer_short,256);
#if 1 // UI_bin
// dma_flag++;
//
// dma_flag %= 2;
#endif
if(Rx_Count_short<256)
{
last_flag = 1;
ota_lt7689_flag=1;
}
ota_lt7689_flag=1;
// printf("dma_flag=%d\r\n",dma_flag);
// if(dma_flag==0)
// printf("\r\n**\r\n");
// for(unsigned char i = 0 ; i < Rx_Count_short; i++)
// printf(" %x",Rx_Buffer_short[i]);
// printf("\r\n %x \r\n",CalCheckSum(Rx_Buffer_short,Rx_Count_short-1));
ota_analysis(Rx_Buffer_short,Rx_Count_short);
//双缓冲
// if(dma_flag==1)
// dma_uartRX(UARTx,Uart_Channel, Rx_Buffer1_short,256);
// if(Rx_Count_short<256)
// {
// last_flag = 1;
// ota_lt7689_flag=1;
// }
// ota_lt7689_flag=1;
clear_idle_flag = SCI1->SCIDRL;
clear_idle_flag = SCI1->SCISR1;
if(Rx_Count_short<256)
printf("number1=%d\r\n",number1);
// if(Rx_Count_short<256)
// printf("number1=%d\r\n",number1);
// for(unsigned char i =0;i<Rx_Count_short;i++)
// {
// printf(" %x",Rx_Buffer_short[i]);
// }
//
// printf("\r\n");
}
}
#endif
#if 0
// SCI3 接收 /空闲中断
// SCI3 接收 空闲中断
#if 1
void SCI3_IRQHandler(void)
{
// uint8_t ch = 0;
// printf("SCI3!\r\n");
WDT_FeedDog();
// WDT_FeedDog();
if ((SCI3->SCISR1 & 0x20) == 0x20)
{
// Rx_Buffer_short[Rx_Count_short++]=SCI3->SCIDRL;
ui_buf[ui_offset++]=SCI3->SCIDRL;
// ui_buf[ui_offset++]=SCI3->SCIDRL;
// number1++;
// ch = SCI3->SCIDRL;
// number1++;
if(ui_offset%2048==0)
{
ota_lt7689_flag=1;
// ui_buf_length=0;
}
else if(ui_offset%2048==288)
{
ota_lt7689_flag=1;
last_flag = 1;
}
// if(ui_offset%256==0)
// {
// ota_lt7689_flag=1;
//
//// ui_buf_length=0;
// }
// else if(ui_offset>256)
// {
// ota_lt7689_flag=1;
// }
// printf("flag=%d %d\r\n",ota_lt7689_flag,number1);
#if 1 //3-enhance
unsigned char ch = SCI3->SCIDRL;
// wifi_buf[mes_length++] =SCI3->SCIDRL;
#if 1 //状态机接收
// printf("%d\r\n",rev_status);
if(rev_status == 0) //A5
{
if(ch==0xA5)
{
wifi_buf[mes_length++] = ch;
rev_status = 1;
}
else
{
rev_status = 0;
mes_length = 0;
}
}
else if (rev_status == 1) //5A
{
if(ch==0x5A)
{
wifi_buf[mes_length++] = ch;
rev_status = 2;
}
else
{
rev_status = 0;
mes_length = 0;
}
}
else if (rev_status == 2) // 01
{
if(ch==0x01)
{
wifi_buf[mes_length++] = ch;
rev_status = 3;
}
else
{
rev_status = 0;
mes_length = 0;
}
}
else if (rev_status == 3) // 包序号
{
wifi_buf[mes_length++] = ch;
rev_status = 4;
}
else if(rev_status==4) //消息类型
{
// if(ch==0x20||ch==0x21||ch==0x03)
wifi_buf[mes_length++] = ch;
rev_status = 5;
}
else if(rev_status==5) //数据长度
{
datalength =ch;
wifi_buf[mes_length++] = datalength;
rev_status = 6;
}
else if(rev_status==6) //命令
{
wifi_buf[mes_length++] = ch;
rev_status = 7;
}
else if(rev_status==7) //子命令
{
wifi_buf[mes_length++] = ch;
rev_status = 8;
}
else if(rev_status==8) //值或者校验码
{
if((datalength-2)==0) //校验码
{
wifi_buf[mes_length++] = ch;
datalength =0;
ota_lt7689_flag = 1;
rev_status =0;
}
else //值
{
wifi_buf[mes_length++] = ch;
// printf("%d %d\r\n",mes_length,datalength + 6);
if(mes_length == datalength + 6) //
rev_status = 9;
// printf("datalength=%d\r\n",datalength);
}
}
else if(rev_status==9) //校验码
{
wifi_buf[mes_length++] = ch;
datalength =0;
// printf("\r\nrev:%d",mes_length);
// for(unsigned char i = 0 ; i < mes_length ; i++)
// printf(" %x",wifi_buf[i]);
// printf("\r\n");
// ota_analysis(wifi_buf,mes_length);
// mes_length = 0;
// rev_status =0;
#if 1 //中断接收 app执行后续
ota_lt7689_flag = 1;
rev_status =0;
#endif
}
#endif
#endif
}
#if 0
if((SCI3->SCISR1 & 0x10) == 0x10) //空闲中断
@ -304,16 +472,259 @@ void SCI3_IRQHandler(void)
unsigned char clear_idle_flag;
clear_idle_flag = SCI3->SCIDRL;
clear_idle_flag = SCI3->SCISR1;
if(ui_buf_length==2048)
{
ui_buf_length=0;
}
// ota_lt7689_flag=1;
printf("number1=%d\r\n",number1);
// printf("ui_offset=%d\r\n",ui_offset);
// if(ui_buf_length==2048)
// {
// ui_buf_length=0;
// }
// if(ui_offset==2048)
// {
// ui_offset=0;
// }
// printf("number1=%d\r\n",number1);
/*
ota_lt7689_flag=1;
printf("R:");
for(unsigned char i = 0 ; i < mes_length;i++ )
{
printf(" %x ",wifi_buf[i]);
}
printf("\r\n");
ota_analysis(wifi_buf,mes_length);
*/
// printf("rev:%d\r\n",mes_length);
// for(unsigned char i = 0 ; i < mes_length;i++ )
// {
// printf(" %x ",wifi_buf[i]);
// }
// printf("\r\n");
ota_analysis(wifi_buf,mes_length);
mes_length = 0;
}
#endif
// printf("flag %d\r\n",ota_lt7689_flag);
}
#endif
/* 3-enhance OTA 接口*/
#if 1
unsigned char inf_wifi_buf[20] = {0};
unsigned char inf_wifi_buf_length = 0;
unsigned char pkg_seq = 0;
unsigned char wifi_buf[256] = {0};
unsigned char mes_length = 0;
unsigned char rev_status = 0;
unsigned char rev_datalength=0; //判断消息接收长度
unsigned char datalength=0; //缓存消息长度
unsigned short ota_seq = 0;
//分析报文
unsigned char ota_analysis(unsigned char * rev_wifi_buf,unsigned short len)
{
// unsigned char check_number = CalCheckSum( inf_wifi_buf, len);
//校验码不正确
printf("check:%x\r\n",CalCheckSum( (char *)rev_wifi_buf, len-1));
if(rev_wifi_buf[len-1]!= CalCheckSum( (char *)rev_wifi_buf, len-1))
{
printf("%x check_number_erro!\r\n",CalCheckSum( (char *)rev_wifi_buf, len-1));
// return 1;
}
if((rev_wifi_buf[0]!=0xA5)&&(rev_wifi_buf[1]!=0x5A)&&(rev_wifi_buf[2]!=0x01))
{
printf("illegal_new!\r\n");
// return 2;
}
pkg_seq = rev_wifi_buf[3];
//
unsigned char send_length=inf_wifi_ack(inf_wifi_buf,pkg_seq);
inf_wifi_buf[send_length] = CalCheckSum( (char *)inf_wifi_buf,send_length);
send_length++;
//发送ACK
send_meg_wifi(inf_wifi_buf,send_length);
printf("S:");
for(unsigned char i = 0 ; i < send_length;i++)
{
printf(" %x",inf_wifi_buf[i]);
}
printf("\r\n");
inf_wifi_buf_length = 0;
// printf("send_wifi!\r\n");
return 0;
}
// 通知WIFI 数据包校验错误
unsigned char inf_wifi_data_check_error(unsigned char * inf_wifi_buf,unsigned char pkg_seq)
{
//封装协议
inf_wifi_buf[inf_wifi_buf_length++] = 0xa5;
inf_wifi_buf[inf_wifi_buf_length++] = 0x5a;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
// pkg_seq++;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;//pkg_seq;
inf_wifi_buf[inf_wifi_buf_length++] = 0x21;
inf_wifi_buf[inf_wifi_buf_length++] = 0x02;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
inf_wifi_buf[inf_wifi_buf_length++] = 0x26;
return inf_wifi_buf_length;
}
//通知WiFi固件校验错误
unsigned char inf_wifi_bin_check_error(unsigned char * inf_wifi_buf,unsigned char pkg_seq)
{
//封装协议
inf_wifi_buf[inf_wifi_buf_length++] = 0xa5;
inf_wifi_buf[inf_wifi_buf_length++] = 0x5a;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
// pkg_seq++;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;// pkg_seq;
inf_wifi_buf[inf_wifi_buf_length++] = 0x21;
inf_wifi_buf[inf_wifi_buf_length++] = 0x02;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
inf_wifi_buf[inf_wifi_buf_length++] = 0x02;
inf_wifi_buf[inf_wifi_buf_length++] = 0x27;
return inf_wifi_buf_length;
}
//通知WIFI OTA 完成
unsigned char inf_wifi_ota_suc(unsigned char * inf_wifi_buf,unsigned char pkg_seq)
{
//封装协议
inf_wifi_buf[inf_wifi_buf_length++] = 0xa5;
inf_wifi_buf[inf_wifi_buf_length++] = 0x5a;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
// pkg_seq++;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;//pkg_seq;
inf_wifi_buf[inf_wifi_buf_length++] = 0x21;
inf_wifi_buf[inf_wifi_buf_length++] = 0x02;
inf_wifi_buf[inf_wifi_buf_length++] = 0x02;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
inf_wifi_buf[inf_wifi_buf_length++] = 0x27;
return inf_wifi_buf_length;
}
//通知 WIFI 开始发送固件内容
unsigned char inf_wifi_ota_start(unsigned char * inf_wifi_buf,unsigned char pkg_seq)
{
//封装协议
inf_wifi_buf[inf_wifi_buf_length++] = 0xa5;
inf_wifi_buf[inf_wifi_buf_length++] = 0x5a;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
// pkg_seq++;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
inf_wifi_buf[inf_wifi_buf_length++] = 0x21;
inf_wifi_buf[inf_wifi_buf_length++] = 0x02;
inf_wifi_buf[inf_wifi_buf_length++] = 0x03;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
inf_wifi_buf[inf_wifi_buf_length++] = 0x28;
return inf_wifi_buf_length;
}
// 用于确认 收到的消息
unsigned char inf_wifi_ack(unsigned char * inf_wifi_buf,unsigned char pkg_seq)
{
//封装协议
inf_wifi_buf[inf_wifi_buf_length++] = 0xa5;
inf_wifi_buf[inf_wifi_buf_length++] = 0x5a;
inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
// pkg_seq++;
inf_wifi_buf[inf_wifi_buf_length++] = pkg_seq;
inf_wifi_buf[inf_wifi_buf_length++] = 0x03;
inf_wifi_buf[inf_wifi_buf_length++] = 0x00;
// inf_wifi_buf[inf_wifi_buf_length++] = 0x02;
// inf_wifi_buf[inf_wifi_buf_length++] = 0x01;
//
// inf_wifi_buf[inf_wifi_buf_length++] = 0x27;
return inf_wifi_buf_length;
}
unsigned char CalCheckSum( char * buf,unsigned short len)
{
int checkSum=0;
char *pBuf=(buf); //jump to len byte
unsigned short bufLen=len;
// printf ("Start cal checksum: ");
for (int i=0;i<bufLen;i++){
checkSum +=pBuf[i];
//printf(" 0x%x", pBuf[i]);
}
// printf("\r\nExpect checksum: 0x%x", pBuf[bufLen]);
checkSum = checkSum%(0x100);
//printf("\r\nCal checksum: 0x%x", checkSum);
return checkSum;
}
//UART3 - WIFI
unsigned char send_meg_wifi(unsigned char * send_buf,unsigned char length)
{
printf("ack:");
for(unsigned char i = 0 ; i < length ; i++)
printf(" %x",send_buf[i]);
printf("\r\n");
for( unsigned char i = 0 ; i < length ; i++)
{
while ((SCI3->SCISR1 & 0x40) == 0x00)
{
};
SCI3->SCIDRL = send_buf[i];//(uint8_t)ch; //SCI1->SCIDRL = (uint8_t)data;
}
return 0 ;
}
#endif

불러오는 중...
취소
저장