C51 COMPILER V9.01 FLASH 12/22/2023 12:15:06 PAGE 1 C51 COMPILER V9.01, COMPILATION OF MODULE FLASH OBJECT MODULE PLACED IN .\output\Flash.obj COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_bootloader\Flash.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\header_bootloa -der) DEBUG OBJECTEXTEND PRINT(.\output\Flash.lst) OBJECT(.\output\Flash.obj) line level source 1 /******************************************************************************** 2 Copyright (C), Sinowealth Electronic. Ltd. 3 Author: Sino 4 Version: V0.0 5 Date: 2020/04/26 6 History: 7 V2.0 2020/04/26 Preliminary 8 ********************************************************************************/ 9 #include "MCURegister.h" 10 #include "C51_TYPE.H" 11 #include "Flash.h" 12 #include 13 #include 14 15 U8 ucMcuFlashWrValid; 16 17 18 /************************************************************************************************* 19 * º¯ÊýÃû: McuFlashEraseSector 20 * ²Î Êý: McuFlashAddr£ºÆðʼµØÖ·£»McuType£º²Á³ýCODEÇø»òÕßEEPROM 21 * ·µ»ØÖµ: ÎÞ 22 * Ãè Êö: ²Á³ýSector 23 *************************************************************************************************/ 24 void McuFlashEraseSector(U32 xdata McuFlashAddr, U8 xdata McuType) 25 { 26 1 FLASHCON = McuType; 27 1 XPAGE = McuFlashAddr>>8; 28 1 29 1 IB_CON1 = 0xE6; 30 1 if(!EA) //·ÀÖ¹Îóд 31 1 { 32 2 IB_CON2 = 0x05; 33 2 if(FLASHCON == McuType) //·ÀÖ¹Îóд 34 2 { 35 3 IB_CON3 = 0x0A; 36 3 if(ucMcuFlashWrValid == 0x55) //·ÀÖ¹Îóд 37 3 { 38 4 IB_CON4 = 0x09; 39 4 if(XPAGE == (McuFlashAddr>>8)) //·ÀÖ¹Îóд 40 4 { 41 5 IB_CON5 = 0x06; 42 5 _nop_(); 43 5 _nop_(); 44 5 _nop_(); 45 5 _nop_(); 46 5 } 47 4 } 48 3 } 49 2 } 50 1 51 1 FLASHCON = MCU_TYPE_CODE; 52 1 } 53 54 C51 COMPILER V9.01 FLASH 12/22/2023 12:15:06 PAGE 2 55 /************************************************************************************************* 56 * º¯ÊýÃû: McuFlashBlankCheck 57 * ²Î Êý: McuFlashAddr£ºÆðʼµØÖ· 58 * ·µ»ØÖµ: 0£º·ÇÈ«0£¬Eraseʧ°Ü£»1£ºÈ«0£¬Erase³É¹¦ 59 * Ãè Êö: µ±EraseÍê1¸öSector£¬Ðè¼ì²éÊÇ·ñȫΪ0 60 *************************************************************************************************/ 61 BOOL McuFlashBlankCheck(U32 xdata McuFlashAddr, U8 xdata McuType) 62 { 63 1 BOOL Result = 1; 64 1 U16 i; 65 1 66 1 FLASHCON = McuType; 67 1 for(i=0; i>8; 91 1 IB_OFFSET = McuFlashAddr % 256; 92 1 93 1 IB_DATA = WrData; 94 1 IB_CON1 = 0x6E; 95 1 if(!EA) //·ÀÖ¹Îóд 96 1 { 97 2 IB_CON2 = 0x05; 98 2 if(FLASHCON == McuType) //·ÀÖ¹Îóд 99 2 { 100 3 IB_CON3 = 0x0A; 101 3 if(ucMcuFlashWrValid == 0x55) //·ÀÖ¹Îóд 102 3 { 103 4 IB_CON4 = 0x09; 104 4 if(XPAGE == (McuFlashAddr>>8)) //·ÀÖ¹Îóд 105 4 { 106 5 IB_CON5 = 0x06; 107 5 _nop_(); 108 5 _nop_(); 109 5 _nop_(); 110 5 _nop_(); 111 5 _nop_(); 112 5 } 113 4 } 114 3 } 115 2 } 116 1 C51 COMPILER V9.01 FLASH 12/22/2023 12:15:06 PAGE 3 117 1 FLASHCON = MCU_TYPE_CODE; 118 1 } 119 120 121 /************************************************************************************************* 122 * º¯ÊýÃû: McuFlashRdOneByte 123 * ²Î Êý: McuFlashAddr£º¶ÁÈ¡CODEÇøµÄµØÖ· 124 * ·µ»ØÖµ: ·µ»Øµ±Ç°Code×Ö½Ú 125 * Ãè Êö: ¶Á1¸ö×Ö½Ú 126 *************************************************************************************************/ 127 U8 McuFlashRdOneByte(U32 xdata McuFlashAddr, U8 xdata McuType) 128 { 129 1 U8 GetData = 0; 130 1 131 1 FLASHCON = McuType; 132 1 GetData = CBYTE[McuFlashAddr]; 133 1 FLASHCON = MCU_TYPE_CODE; 134 1 return GetData; 135 1 } 136 137 138 /************************************************************************************************* 139 * º¯ÊýÃû: BootProgram 140 * ²Î Êý: ÎÞ 141 * ·µ»ØÖµ: ÎÞ 142 * Ãè Êö: BootÇø½øÐÐÉý¼¶´úÂë²Ù×÷£ºErase->Program->Verify 143 ÿ²Á³ý1¸öSector£¬¼´¿ÌдÈëÊý¾Ý£¬Ð£ÑéÊý¾Ý 144 *************************************************************************************************/ 145 U8 BootProgram(void) 146 { 147 1 U8 i, McuCode, McuFlashType; 148 1 U16 j; 149 1 U32 McuFlashAddr; 150 1 151 1 for(i=0; iProgram->Verify 193 *************************************************************************************************/ 194 BOOL BootUpgradeCode(void) 195 { 196 1 BOOL Result = 1; 197 1 198 1 if(BootProgram() == BOOT_PGR_OK) 199 1 { 200 2 McuFlashEraseSector(BOOT_FLG_START_ADDR, MCU_TYPE_CODE); //дÈë³É¹¦£¬²Á³ýÔ¶³ÌÉý¼¶±ê־λ 201 2 Result = McuFlashBlankCheck(BOOT_FLG_START_ADDR, MCU_TYPE_CODE); //²Á³ý½áÊøºó£¬ÐèÒª²é¿Õ 202 2 } 203 1 else 204 1 { 205 2 Result = 0; 206 2 } 207 1 208 1 return Result; 209 1 } 210 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 617 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 1 32 IDATA SIZE = ---- ---- BIT SIZE = ---- 2 END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)