diff --git a/build/bootloader_hi.bin b/build/bootloader_hi.bin index 159ec19..b7d34b8 100755 Binary files a/build/bootloader_hi.bin and b/build/bootloader_hi.bin differ diff --git a/build/bootloader_hi.dump b/build/bootloader_hi.dump index 5e6e561..6a86cfc 100644 --- a/build/bootloader_hi.dump +++ b/build/bootloader_hi.dump @@ -44,7 +44,7 @@ int main(void) 805e0030: f14027f3 csrr a5,mhartid 805e0034: 2781 sext.w a5,a5 805e0036: 00002717 auipc a4,0x2 - 805e003a: f2f72523 sw a5,-214(a4) # 805e1f60 + 805e003a: f2f72d23 sw a5,-198(a4) # 805e1f70 //-------------------------------------------------------- if (i != 0) { 805e003e: 44079663 bnez a5,805e048a @@ -55,7 +55,7 @@ int main(void) // wait for synchronization with core #1 while (core0_sync == 0) { 805e0042: 00002797 auipc a5,0x2 - 805e0046: ef678793 addi a5,a5,-266 # 805e1f38 + 805e0046: f0678793 addi a5,a5,-250 # 805e1f48 805e004a: 4398 lw a4,0(a5) 805e004c: e701 bnez a4,805e0054 asm("nop"); @@ -71,7 +71,7 @@ int main(void) boot_pin = 1; 805e0054: 4785 li a5,1 805e0056: 00002717 auipc a4,0x2 - 805e005a: aaf72923 sw a5,-1358(a4) # 805e1b08 + 805e005a: acf72323 sw a5,-1338(a4) # 805e1b1c cfg_magic = cfg_flash_ptr[BOOT_CONFIG_ITEMS*8]; 805e005e: 540047b7 lui a5,0x54004 805e0062: 1007a703 lw a4,256(a5) # 54004100 <_start-0x2c5dbf00> @@ -82,17 +82,17 @@ int main(void) 805e0072: 00d036b3 snez a3,a3 cfg_magic = cfg_flash_ptr[BOOT_CONFIG_ITEMS*8]; 805e0076: 00002617 auipc a2,0x2 - 805e007a: eae62923 sw a4,-334(a2) # 805e1f28 + 805e007a: ece62123 sw a4,-318(a2) # 805e1f38 print_enabled = (cfg_magic == MAGIC_ID) ? 0 : 1; 805e007e: 00002617 auipc a2,0x2 - 805e0082: eed62523 sw a3,-278(a2) # 805e1f68 + 805e0082: eed62d23 sw a3,-262(a2) # 805e1f78 805e0086: 00002497 auipc s1,0x2 - 805e008a: ee248493 addi s1,s1,-286 # 805e1f68 + 805e008a: ef248493 addi s1,s1,-270 # 805e1f78 if (print_enabled) { - 805e008e: 00f719e3 bne a4,a5,805e08a0 + 805e008e: 00f717e3 bne a4,a5,805e089c 805e0092: 00002417 auipc s0,0x2 - 805e0096: ef643403 ld s0,-266(s0) # 805e1f88 <__TMC_END__+0x8> - LOG("\nK210 bootloader by LoBo v.1.4.1\n\n"); + 805e0096: f3643403 ld s0,-202(s0) # 805e1fc8 <__TMC_END__+0x8> + LOG("\nK210 bootloader by LoBo v.1.4.2\n\n"); LOG("* Find applications in MAIN parameters\n"); @@ -110,32 +110,32 @@ check_cfg: 805e00a0: edb88b37 lui s6,0xedb88 app_flash_start = DEFAULT_APP_ADDR; 805e00a4: 00002717 auipc a4,0x2 - 805e00a8: a2f72623 sw a5,-1492(a4) # 805e1ad0 + 805e00a8: a2f72e23 sw a5,-1476(a4) # 805e1ae0 cfg_offset = 0; 805e00ac: 4601 li a2,0 805e00ae: 00002797 auipc a5,0x2 - 805e00b2: e607af23 sw zero,-386(a5) # 805e1f2c + 805e00b2: e807a723 sw zero,-370(a5) # 805e1f3c 805e00b6: 00002c17 auipc s8,0x2 - 805e00ba: e5ac0c13 addi s8,s8,-422 # 805e1f10 + 805e00ba: e6ac0c13 addi s8,s8,-406 # 805e1f20 805e00be: 00002d97 auipc s11,0x2 - 805e00c2: e72d8d93 addi s11,s11,-398 # 805e1f30 + 805e00c2: e82d8d93 addi s11,s11,-382 # 805e1f40 805e00c6: 00002d17 auipc s10,0x2 - 805e00ca: e62d0d13 addi s10,s10,-414 # 805e1f28 + 805e00ca: e72d0d13 addi s10,s10,-398 # 805e1f38 805e00ce: 00002a97 auipc s5,0x2 - 805e00d2: e92a8a93 addi s5,s5,-366 # 805e1f60 + 805e00d2: ea2a8a93 addi s5,s5,-350 # 805e1f70 805e00d6: 00002a17 auipc s4,0x2 - 805e00da: a2aa0a13 addi s4,s4,-1494 # 805e1b00 + 805e00da: a3aa0a13 addi s4,s4,-1478 # 805e1b10 805e00de: 00002b97 auipc s7,0x2 - 805e00e2: 9f2b8b93 addi s7,s7,-1550 # 805e1ad0 + 805e00e2: a02b8b93 addi s7,s7,-1534 # 805e1ae0 805e00e6: 00002997 auipc s3,0x2 - 805e00ea: e4698993 addi s3,s3,-442 # 805e1f2c + 805e00ea: e5698993 addi s3,s3,-426 # 805e1f3c if ((cfg_magic & MAGIC_ID_MASK) == MAGIC_ID) { 805e00ee: 0c090913 addi s2,s2,192 # 5aa5d0c0 <_start-0x25b82f40> crc = (crc >> 1) ^ (0xEDB88320 & mask); - 805e00f2: 320b0b13 addi s6,s6,800 # ffffffffedb88320 + 805e00f2: 320b0b13 addi s6,s6,800 # ffffffffedb88320 for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { 805e00f6: 00002797 auipc a5,0x2 - 805e00fa: e607a523 sw zero,-406(a5) # 805e1f60 + 805e00fa: e607ad23 sw zero,-390(a5) # 805e1f70 805e00fe: 4581 li a1,0 cfg_magic = cfg_flash_ptr[offset + 0]; 805e0100: 54004cb7 lui s9,0x54004 @@ -143,7 +143,7 @@ check_cfg: for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { 805e0106: 2585 addiw a1,a1,1 805e0108: 00002717 auipc a4,0x2 - 805e010c: e4b72c23 sw a1,-424(a4) # 805e1f60 + 805e010c: e6b72423 sw a1,-408(a4) # 805e1f70 805e0110: 479d li a5,7 805e0112: 2eb7e063 bltu a5,a1,805e03f2 805e0116: 0009a603 lw a2,0(s3) @@ -217,76 +217,76 @@ check_cfg: cfg_info[n] = cfg_flash_bptr[offset + n]; 805e017e: 01cc86b3 add a3,s9,t3 805e0182: 00002717 auipc a4,0x2 - 805e0186: d9070b23 sb a6,-618(a4) # 805e1f18 + 805e0186: db070323 sb a6,-602(a4) # 805e1f28 805e018a: 0006ce03 lbu t3,0(a3) 805e018e: 0127869b addiw a3,a5,18 805e0192: 1682 slli a3,a3,0x20 805e0194: 9281 srli a3,a3,0x20 805e0196: 00002717 auipc a4,0x2 - 805e019a: d9c701a3 sb t3,-637(a4) # 805e1f19 + 805e019a: d9c709a3 sb t3,-621(a4) # 805e1f29 805e019e: 96e6 add a3,a3,s9 805e01a0: 0006ce03 lbu t3,0(a3) 805e01a4: 0137869b addiw a3,a5,19 805e01a8: 1682 slli a3,a3,0x20 805e01aa: 9281 srli a3,a3,0x20 805e01ac: 00002717 auipc a4,0x2 - 805e01b0: d7c70723 sb t3,-658(a4) # 805e1f1a + 805e01b0: d7c70f23 sb t3,-642(a4) # 805e1f2a 805e01b4: 96e6 add a3,a3,s9 805e01b6: 0006ce03 lbu t3,0(a3) 805e01ba: 0147869b addiw a3,a5,20 805e01be: 1682 slli a3,a3,0x20 805e01c0: 9281 srli a3,a3,0x20 805e01c2: 00002717 auipc a4,0x2 - 805e01c6: d5c70ca3 sb t3,-679(a4) # 805e1f1b + 805e01c6: d7c704a3 sb t3,-663(a4) # 805e1f2b 805e01ca: 96e6 add a3,a3,s9 805e01cc: 0006ce03 lbu t3,0(a3) 805e01d0: 0157869b addiw a3,a5,21 805e01d4: 1682 slli a3,a3,0x20 805e01d6: 9281 srli a3,a3,0x20 805e01d8: 00002717 auipc a4,0x2 - 805e01dc: d5c70223 sb t3,-700(a4) # 805e1f1c + 805e01dc: d5c70a23 sb t3,-684(a4) # 805e1f2c 805e01e0: 96e6 add a3,a3,s9 805e01e2: 0006ce03 lbu t3,0(a3) 805e01e6: 0167869b addiw a3,a5,22 805e01ea: 1682 slli a3,a3,0x20 805e01ec: 9281 srli a3,a3,0x20 805e01ee: 00002717 auipc a4,0x2 - 805e01f2: d3c707a3 sb t3,-721(a4) # 805e1f1d + 805e01f2: d3c70fa3 sb t3,-705(a4) # 805e1f2d 805e01f6: 96e6 add a3,a3,s9 805e01f8: 0006ce03 lbu t3,0(a3) 805e01fc: 0177869b addiw a3,a5,23 805e0200: 1682 slli a3,a3,0x20 805e0202: 9281 srli a3,a3,0x20 805e0204: 00002717 auipc a4,0x2 - 805e0208: d1c70d23 sb t3,-742(a4) # 805e1f1e + 805e0208: d3c70523 sb t3,-726(a4) # 805e1f2e 805e020c: 96e6 add a3,a3,s9 805e020e: 0006ce03 lbu t3,0(a3) 805e0212: 0187869b addiw a3,a5,24 805e0216: 1682 slli a3,a3,0x20 805e0218: 9281 srli a3,a3,0x20 805e021a: 00002717 auipc a4,0x2 - 805e021e: d1c702a3 sb t3,-763(a4) # 805e1f1f + 805e021e: d1c70aa3 sb t3,-747(a4) # 805e1f2f 805e0222: 96e6 add a3,a3,s9 805e0224: 0006ce03 lbu t3,0(a3) 805e0228: 0197869b addiw a3,a5,25 805e022c: 1682 slli a3,a3,0x20 805e022e: 9281 srli a3,a3,0x20 805e0230: 00002717 auipc a4,0x2 - 805e0234: cfc70823 sb t3,-784(a4) # 805e1f20 + 805e0234: d1c70023 sb t3,-768(a4) # 805e1f30 805e0238: 96e6 add a3,a3,s9 805e023a: 0006ce03 lbu t3,0(a3) 805e023e: 01a7869b addiw a3,a5,26 805e0242: 1682 slli a3,a3,0x20 805e0244: 9281 srli a3,a3,0x20 805e0246: 00002717 auipc a4,0x2 - 805e024a: cdc70da3 sb t3,-805(a4) # 805e1f21 + 805e024a: cfc705a3 sb t3,-789(a4) # 805e1f31 805e024e: 96e6 add a3,a3,s9 805e0250: 0006ce03 lbu t3,0(a3) 805e0254: 01b7869b addiw a3,a5,27 805e0258: 1682 slli a3,a3,0x20 805e025a: 9281 srli a3,a3,0x20 805e025c: 00002717 auipc a4,0x2 - 805e0260: cdc70323 sb t3,-826(a4) # 805e1f22 + 805e0260: cdc70b23 sb t3,-810(a4) # 805e1f32 805e0264: 96e6 add a3,a3,s9 805e0266: 0006ce03 lbu t3,0(a3) 805e026a: 01c7869b addiw a3,a5,28 @@ -294,47 +294,47 @@ check_cfg: 805e0270: 9281 srli a3,a3,0x20 cfg_magic = cfg_flash_ptr[offset + 0]; 805e0272: 00002717 auipc a4,0x2 - 805e0276: ca672b23 sw t1,-842(a4) # 805e1f28 + 805e0276: cc672323 sw t1,-826(a4) # 805e1f38 cfg_crc = cfg_flash_ptr[offset + 3]; 805e027a: 00002717 auipc a4,0x2 - 805e027e: c8c72d23 sw a2,-870(a4) # 805e1f14 + 805e027e: cac72523 sw a2,-854(a4) # 805e1f24 cfg_info[n] = cfg_flash_bptr[offset + n]; 805e0282: 96e6 add a3,a3,s9 cfg_address = cfg_flash_ptr[offset + 1]; 805e0284: 00002717 auipc a4,0x2 - 805e0288: c9172623 sw a7,-884(a4) # 805e1f10 + 805e0288: c9172e23 sw a7,-868(a4) # 805e1f20 cfg_size = cfg_flash_ptr[offset + 2]; 805e028c: 00002717 auipc a4,0x2 - 805e0290: caa72223 sw a0,-860(a4) # 805e1f30 + 805e0290: caa72a23 sw a0,-844(a4) # 805e1f40 key = cfg_flash_bptr[offset]; // dummy read needed to switch to 8bit XiP read 805e0294: 00002717 auipc a4,0x2 - 805e0298: cd070823 sb a6,-816(a4) # 805e1f64 + 805e0298: cf070023 sb a6,-800(a4) # 805e1f74 cfg_info[n] = cfg_flash_bptr[offset + n]; 805e029c: 00002717 auipc a4,0x2 - 805e02a0: c9c703a3 sb t3,-889(a4) # 805e1f23 + 805e02a0: c9c70ba3 sb t3,-873(a4) # 805e1f33 805e02a4: 0006c603 lbu a2,0(a3) 805e02a8: 01d7869b addiw a3,a5,29 805e02ac: 1682 slli a3,a3,0x20 805e02ae: 9281 srli a3,a3,0x20 805e02b0: 00002717 auipc a4,0x2 - 805e02b4: c6c70a23 sb a2,-908(a4) # 805e1f24 + 805e02b4: c8c70223 sb a2,-892(a4) # 805e1f34 805e02b8: 96e6 add a3,a3,s9 805e02ba: 0006c683 lbu a3,0(a3) 805e02be: 27f9 addiw a5,a5,30 805e02c0: 1782 slli a5,a5,0x20 805e02c2: 9381 srli a5,a5,0x20 805e02c4: 00002717 auipc a4,0x2 - 805e02c8: c6d700a3 sb a3,-927(a4) # 805e1f25 + 805e02c8: c6d708a3 sb a3,-911(a4) # 805e1f35 805e02cc: 97e6 add a5,a5,s9 805e02ce: 0007c783 lbu a5,0(a5) if ((cfg_magic & MAGIC_ID_MASK) == MAGIC_ID) { 805e02d2: ff037313 andi t1,t1,-16 cfg_info[15] = 0; 805e02d6: 00002717 auipc a4,0x2 - 805e02da: c40708a3 sb zero,-943(a4) # 805e1f27 + 805e02da: c60700a3 sb zero,-927(a4) # 805e1f37 cfg_info[n] = cfg_flash_bptr[offset + n]; 805e02de: 00002717 auipc a4,0x2 - 805e02e2: c4f70423 sb a5,-952(a4) # 805e1f26 + 805e02e2: c4f70c23 sb a5,-936(a4) # 805e1f36 if ((cfg_magic & MAGIC_ID_MASK) == MAGIC_ID) { 805e02e6: e32310e3 bne t1,s2,805e0106 // *** Valid configuration found @@ -343,13 +343,13 @@ check_cfg: 805e02ec: 1e078e63 beqz a5,805e04e8 805e02f0: 601c ld a5,0(s0) 805e02f2: 00002617 auipc a2,0x2 - 805e02f6: c2660613 addi a2,a2,-986 # 805e1f18 + 805e02f6: c3660613 addi a2,a2,-970 # 805e1f28 805e02fa: 00001517 auipc a0,0x1 - 805e02fe: 56e50513 addi a0,a0,1390 # 805e1868 + 805e02fe: 57e50513 addi a0,a0,1406 # 805e1878 805e0302: 9782 jalr a5 805e0304: 0c800513 li a0,200 805e0308: 00001097 auipc ra,0x1 - 805e030c: de4080e7 jalr -540(ra) # 805e10ec + 805e030c: df4080e7 jalr -524(ra) # 805e10fc // Check if the Flash address is in range (512K ~ 8MB) if ((cfg_address >= MIN_APP_FLASH_ADDR) && (cfg_address <= MAX_APP_FLASH_ADDR)) { 805e0310: 000c2583 lw a1,0(s8) @@ -370,22 +370,22 @@ check_cfg: 805e0334: cf89 beqz a5,805e034e 805e0336: 601c ld a5,0(s0) 805e0338: 00001517 auipc a0,0x1 - 805e033c: 54850513 addi a0,a0,1352 # 805e1880 + 805e033c: 55850513 addi a0,a0,1368 # 805e1890 805e0340: 9782 jalr a5 805e0342: 0c800513 li a0,200 805e0346: 00001097 auipc ra,0x1 - 805e034a: da6080e7 jalr -602(ra) # 805e10ec + 805e034a: db6080e7 jalr -586(ra) # 805e10fc /* - * Basic check passed, now we can check the application's vilidity + * Basic check passed, now we can check the application's validity * If in interractive mode, all applications are checked, - * otherwize, the application is checked only if flagged as active + * otherwise, the application is checked only if flagged as active */ if ((cfg_magic & CFG_APP_FLAG_ACTIVE) || (boot_pin == 0)) { - 805e034e: 000d2603 lw a2,0(s10) - 805e0352: 00167793 andi a5,a2,1 + 805e034e: 000d2683 lw a3,0(s10) + 805e0352: 0016f793 andi a5,a3,1 805e0356: 1a079963 bnez a5,805e0508 805e035a: 00001797 auipc a5,0x1 - 805e035e: 7ae78793 addi a5,a5,1966 # 805e1b08 + 805e035e: 7c278793 addi a5,a5,1986 # 805e1b1c 805e0362: 439c lw a5,0(a5) 805e0364: 1a078263 beqz a5,805e0508 } @@ -398,18 +398,18 @@ check_cfg: 805e036a: 16078c63 beqz a5,805e04e2 805e036e: 601c ld a5,0(s0) 805e0370: 00001517 auipc a0,0x1 - 805e0374: 57050513 addi a0,a0,1392 # 805e18e0 + 805e0374: 58050513 addi a0,a0,1408 # 805e18f0 805e0378: 9782 jalr a5 805e037a: 0c800513 li a0,200 805e037e: 00001097 auipc ra,0x1 - 805e0382: d6e080e7 jalr -658(ra) # 805e10ec + 805e0382: d7e080e7 jalr -642(ra) # 805e10fc } // ** Check if this is an active config (bit #0 set) if ((cfg_magic & CFG_APP_FLAG_ACTIVE) == 0) { 805e0386: 000d2683 lw a3,0(s10) 805e038a: 409c lw a5,0(s1) 805e038c: 8a85 andi a3,a3,1 - 805e038e: 2c068663 beqz a3,805e065a + 805e038e: 2c068563 beqz a3,805e0658 LOG("NOT "); } else { @@ -423,17 +423,17 @@ check_cfg: 805e03a0: 000c2683 lw a3,0(s8) app_size = cfg_size; 805e03a4: 00001717 auipc a4,0x1 - 805e03a8: 74c72a23 sw a2,1876(a4) # 805e1af8 + 805e03a8: 76c72223 sw a2,1892(a4) # 805e1b08 app_flash_start = cfg_address; 805e03ac: 00001717 auipc a4,0x1 - 805e03b0: 72d72223 sw a3,1828(a4) # 805e1ad0 + 805e03b0: 72d72a23 sw a3,1844(a4) # 805e1ae0 } if (boot_pin > 0) { 805e03b4: 00001717 auipc a4,0x1 - 805e03b8: 75470713 addi a4,a4,1876 # 805e1b08 + 805e03b8: 76870713 addi a4,a4,1896 # 805e1b1c 805e03bc: 4314 lw a3,0(a4) - 805e03be: 56069263 bnez a3,805e0922 - // Active application found and cheched and not in interractive mode + 805e03be: 56069063 bnez a3,805e091e + // Active application found and checked and not in interractive mode LOG("ACTIVE\n"); break; } @@ -442,76 +442,76 @@ check_cfg: 805e03c2: 12078063 beqz a5,805e04e2 805e03c6: 601c ld a5,0(s0) 805e03c8: 00001517 auipc a0,0x1 - 805e03cc: 53050513 addi a0,a0,1328 # 805e18f8 + 805e03cc: 54050513 addi a0,a0,1344 # 805e1908 805e03d0: 9782 jalr a5 805e03d2: 0c800513 li a0,200 805e03d6: 00001097 auipc ra,0x1 - 805e03da: d16080e7 jalr -746(ra) # 805e10ec + 805e03da: d26080e7 jalr -730(ra) # 805e10fc 805e03de: 000aa583 lw a1,0(s5) for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { 805e03e2: 479d li a5,7 805e03e4: 2585 addiw a1,a1,1 805e03e6: 00002717 auipc a4,0x2 - 805e03ea: b6b72d23 sw a1,-1158(a4) # 805e1f60 + 805e03ea: b8b72523 sw a1,-1142(a4) # 805e1f70 805e03ee: d2b7f4e3 bleu a1,a5,805e0116 } } // check if any valid application was found - for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { - if (available_apps[i]) break; + for (boot_entry = 0; boot_entry < BOOT_CONFIG_ITEMS; boot_entry++) { + if (available_apps[boot_entry]) break; 805e03f2: 000a4783 lbu a5,0(s4) - for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { - 805e03f6: 00002717 auipc a4,0x2 - 805e03fa: b6072523 sw zero,-1174(a4) # 805e1f60 - if (available_apps[i]) break; - 805e03fe: 38079d63 bnez a5,805e0798 + for (boot_entry = 0; boot_entry < BOOT_CONFIG_ITEMS; boot_entry++) { + 805e03f6: 00001717 auipc a4,0x1 + 805e03fa: 72072123 sw zero,1826(a4) # 805e1b18 + if (available_apps[boot_entry]) break; + 805e03fe: 38079b63 bnez a5,805e0794 805e0402: 001a4783 lbu a5,1(s4) - for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { + for (boot_entry = 0; boot_entry < BOOT_CONFIG_ITEMS; boot_entry++) { 805e0406: 4705 li a4,1 - 805e0408: 00002697 auipc a3,0x2 - 805e040c: b4e6ac23 sw a4,-1192(a3) # 805e1f60 - if (available_apps[i]) break; - 805e0410: 38079463 bnez a5,805e0798 + 805e0408: 00001697 auipc a3,0x1 + 805e040c: 70e6a823 sw a4,1808(a3) # 805e1b18 + if (available_apps[boot_entry]) break; + 805e0410: 38079263 bnez a5,805e0794 805e0414: 002a4783 lbu a5,2(s4) - 805e0418: 50079363 bnez a5,805e091e + 805e0418: 50079163 bnez a5,805e091a 805e041c: 003a4783 lbu a5,3(s4) - 805e0420: 36079763 bnez a5,805e078e + 805e0420: 36079563 bnez a5,805e078a 805e0424: 004a4783 lbu a5,4(s4) - 805e0428: 6c079d63 bnez a5,805e0b02 + 805e0428: 6e079163 bnez a5,805e0b0a 805e042c: 005a4783 lbu a5,5(s4) - 805e0430: 6c079763 bnez a5,805e0afe + 805e0430: 6c079b63 bnez a5,805e0b06 805e0434: 006a4783 lbu a5,6(s4) - 805e0438: 6c079163 bnez a5,805e0afa + 805e0438: 6c079563 bnez a5,805e0b02 805e043c: 007a4783 lbu a5,7(s4) - 805e0440: 6a079b63 bnez a5,805e0af6 + 805e0440: 6a079f63 bnez a5,805e0afe } - if ((app_flash_start == DEFAULT_APP_ADDR) && (i >= BOOT_CONFIG_ITEMS)) { + if ((app_flash_start == DEFAULT_APP_ADDR) && (boot_entry >= BOOT_CONFIG_ITEMS)) { 805e0444: 000ba703 lw a4,0(s7) 805e0448: 47a1 li a5,8 - 805e044a: 00002697 auipc a3,0x2 - 805e044e: b0f6ab23 sw a5,-1258(a3) # 805e1f60 + 805e044a: 00001697 auipc a3,0x1 + 805e044e: 6cf6a723 sw a5,1742(a3) # 805e1b18 805e0452: 67c1 lui a5,0x10 - 805e0454: 58f71363 bne a4,a5,805e09da + 805e0454: 54f71063 bne a4,a5,805e0994 // No valid application found if (cfg_offset == 0) { 805e0458: 0009a703 lw a4,0(s3) 805e045c: 409c lw a5,0(s1) - 805e045e: 6a071463 bnez a4,805e0b06 + 805e045e: 6a071863 bnez a4,805e0b0e // no valid entry found in main config sector, check the backup one LOG("\n* Find applications in BACKUP parameters\n"); 805e0462: cf89 beqz a5,805e047c 805e0464: 601c ld a5,0(s0) 805e0466: 00001517 auipc a0,0x1 - 805e046a: 4ba50513 addi a0,a0,1210 # 805e1920 + 805e046a: 4ca50513 addi a0,a0,1226 # 805e1930 805e046e: 9782 jalr a5 805e0470: 0c800513 li a0,200 805e0474: 00001097 auipc ra,0x1 - 805e0478: c78080e7 jalr -904(ra) # 805e10ec + 805e0478: c88080e7 jalr -888(ra) # 805e10fc cfg_offset = 4096; 805e047c: 6785 lui a5,0x1 805e047e: 00002717 auipc a4,0x2 - 805e0482: aaf72723 sw a5,-1362(a4) # 805e1f2c + 805e0482: aaf72f23 sw a5,-1346(a4) # 805e1f3c //if (boot_pin == 0) { // cfg_magic = cfg_flash_ptr[4096+BOOT_CONFIG_ITEMS]; // boot_pin = (cfg_magic == MAGIC_ID) ? 1 : 0; @@ -521,12 +521,12 @@ check_cfg: 805e0488: b1bd j 805e00f6 while (core1_sync == 0) { 805e048a: 00002797 auipc a5,0x2 - 805e048e: ab278793 addi a5,a5,-1358 # 805e1f3c + 805e048e: ac278793 addi a5,a5,-1342 # 805e1f4c 805e0492: 4398 lw a4,0(a5) core0_sync = 1; 805e0494: 4685 li a3,1 805e0496: 00002617 auipc a2,0x2 - 805e049a: aad62123 sw a3,-1374(a2) # 805e1f38 + 805e049a: aad62923 sw a3,-1358(a2) # 805e1f48 while (core1_sync == 0) { 805e049e: e701 bnez a4,805e04a6 asm("nop"); @@ -537,7 +537,7 @@ check_cfg: usleep(1000); 805e04a6: 3e800513 li a0,1000 805e04aa: 00001097 auipc ra,0x1 - 805e04ae: c42080e7 jalr -958(ra) # 805e10ec + 805e04ae: c52080e7 jalr -942(ra) # 805e10fc asm("fence"); // D-Cache; this may not be necessary, but it looks it doesn't hurt if it is executed 805e04b2: 0ff0000f fence asm("fence.i"); // I-Cache @@ -555,11 +555,11 @@ check_cfg: 805e04c8: cf89 beqz a5,805e04e2 805e04ca: 601c ld a5,0(s0) 805e04cc: 00001517 auipc a0,0x1 - 805e04d0: 44450513 addi a0,a0,1092 # 805e1910 + 805e04d0: 45450513 addi a0,a0,1108 # 805e1920 805e04d4: 9782 jalr a5 805e04d6: 0c800513 li a0,200 805e04da: 00001097 auipc ra,0x1 - 805e04de: c12080e7 jalr -1006(ra) # 805e10ec + 805e04de: c22080e7 jalr -990(ra) # 805e10fc 805e04e2: 000aa583 lw a1,0(s5) 805e04e6: b105 j 805e0106 if ((cfg_address >= MIN_APP_FLASH_ADDR) && (cfg_address <= MAX_APP_FLASH_ADDR)) { @@ -577,30 +577,30 @@ check_cfg: uint8_t key = app_flash_ptr[cfg_address]; // must be 0, SHA256 key NOT specified 805e0508: 000c2783 lw a5,0(s8) 805e050c: 54000837 lui a6,0x54000 - 805e0510: 02079693 slli a3,a5,0x20 - 805e0514: 9281 srli a3,a3,0x20 - 805e0516: 96c2 add a3,a3,a6 + 805e0510: 02079613 slli a2,a5,0x20 + 805e0514: 9201 srli a2,a2,0x20 + 805e0516: 9642 add a2,a2,a6 if (key != 0) return 0; - 805e0518: 0006c683 lbu a3,0(a3) - 805e051c: eeb9 bnez a3,805e057a + 805e0518: 00064603 lbu a2,0(a2) + 805e051c: ee39 bnez a2,805e057a val += app_flash_ptr[addr+2] << 16; - 805e051e: 0037869b addiw a3,a5,3 + 805e051e: 0037861b addiw a2,a5,3 val += app_flash_ptr[addr+3] << 24; 805e0522: 0047851b addiw a0,a5,4 val += app_flash_ptr[addr+2] << 16; - 805e0526: 1682 slli a3,a3,0x20 + 805e0526: 1602 slli a2,a2,0x20 val += app_flash_ptr[addr+3] << 24; 805e0528: 1502 slli a0,a0,0x20 uint32_t sz = flash2uint32(cfg_address+1); // app size 805e052a: 0017859b addiw a1,a5,1 val += app_flash_ptr[addr+2] << 16; - 805e052e: 9281 srli a3,a3,0x20 + 805e052e: 9201 srli a2,a2,0x20 val += app_flash_ptr[addr+3] << 24; 805e0530: 9101 srli a0,a0,0x20 val += app_flash_ptr[addr+1] << 8; 805e0532: 2789 addiw a5,a5,2 val += app_flash_ptr[addr+2] << 16; - 805e0534: 96c2 add a3,a3,a6 + 805e0534: 9642 add a2,a2,a6 val += app_flash_ptr[addr+3] << 24; 805e0536: 9542 add a0,a0,a6 uint32_t val = app_flash_ptr[addr]; @@ -608,1832 +608,1839 @@ check_cfg: val += app_flash_ptr[addr+1] << 8; 805e053a: 1782 slli a5,a5,0x20 val += app_flash_ptr[addr+2] << 16; - 805e053c: 0006c683 lbu a3,0(a3) + 805e053c: 00064603 lbu a2,0(a2) val += app_flash_ptr[addr+3] << 24; 805e0540: 00054503 lbu a0,0(a0) uint32_t val = app_flash_ptr[addr]; 805e0544: 9181 srli a1,a1,0x20 val += app_flash_ptr[addr+1] << 8; 805e0546: 9381 srli a5,a5,0x20 + 805e0548: 97c2 add a5,a5,a6 uint32_t val = app_flash_ptr[addr]; - 805e0548: 95c2 add a1,a1,a6 + 805e054a: 95c2 add a1,a1,a6 + 805e054c: 0005c803 lbu a6,0(a1) val += app_flash_ptr[addr+1] << 8; - 805e054a: 97c2 add a5,a5,a6 - 805e054c: 0007c783 lbu a5,0(a5) # 2fc000 <_start-0x802e4000> - uint32_t val = app_flash_ptr[addr]; - 805e0550: 0005c803 lbu a6,0(a1) + 805e0550: 0007c583 lbu a1,0(a5) # 2fc000 <_start-0x802e4000> val += app_flash_ptr[addr+2] << 16; - 805e0554: 0106969b slliw a3,a3,0x10 + 805e0554: 0106179b slliw a5,a2,0x10 val += app_flash_ptr[addr+3] << 24; - 805e0558: 0185159b slliw a1,a0,0x18 - 805e055c: 9ead addw a3,a3,a1 - 805e055e: 010686bb addw a3,a3,a6 + 805e0558: 0185161b slliw a2,a0,0x18 + 805e055c: 9fb1 addw a5,a5,a2 + 805e055e: 010787bb addw a5,a5,a6 val += app_flash_ptr[addr+1] << 8; - 805e0562: 0087979b slliw a5,a5,0x8 + 805e0562: 0085961b slliw a2,a1,0x8 val += app_flash_ptr[addr+3] << 24; - 805e0566: 9ebd addw a3,a3,a5 + 805e0566: 9fb1 addw a5,a5,a2 if ((cfg_magic & CFG_APP_FLAG_SIZE) && (cfg_size != sz)) return 0; - 805e0568: 00867593 andi a1,a2,8 + 805e0568: 0086f593 andi a1,a3,8 val += app_flash_ptr[addr+3] << 24; - 805e056c: 0006879b sext.w a5,a3 + 805e056c: 0007881b sext.w a6,a5 if ((cfg_magic & CFG_APP_FLAG_SIZE) && (cfg_size != sz)) return 0; - 805e0570: 000da803 lw a6,0(s11) + 805e0570: 000da603 lw a2,0(s11) 805e0574: c5a1 beqz a1,805e05bc - 805e0576: 07078f63 beq a5,a6,805e05f4 + 805e0576: 06c80f63 beq a6,a2,805e05f4 LOG("App CHECK failed\n"); 805e057a: 409c lw a5,0(s1) 805e057c: d3bd beqz a5,805e04e2 805e057e: 601c ld a5,0(s0) 805e0580: 00001517 auipc a0,0x1 - 805e0584: 33850513 addi a0,a0,824 # 805e18b8 + 805e0584: 34850513 addi a0,a0,840 # 805e18c8 805e0588: 9782 jalr a5 805e058a: 0c800513 li a0,200 805e058e: 00001097 auipc ra,0x1 - 805e0592: b5e080e7 jalr -1186(ra) # 805e10ec + 805e0592: b6e080e7 jalr -1170(ra) # 805e10fc 805e0596: 000aa583 lw a1,0(s5) 805e059a: b6b5 j 805e0106 LOG("size Error!\n"); 805e059c: d3b9 beqz a5,805e04e2 805e059e: 601c ld a5,0(s0) 805e05a0: 00001517 auipc a0,0x1 - 805e05a4: 36050513 addi a0,a0,864 # 805e1900 + 805e05a4: 37050513 addi a0,a0,880 # 805e1910 805e05a8: 9782 jalr a5 805e05aa: 0c800513 li a0,200 805e05ae: 00001097 auipc ra,0x1 - 805e05b2: b3e080e7 jalr -1218(ra) # 805e10ec + 805e05b2: b4e080e7 jalr -1202(ra) # 805e10fc 805e05b6: 000aa583 lw a1,0(s5) 805e05ba: b6b1 j 805e0106 else if (cfg_size != sz) { - 805e05bc: 03078c63 beq a5,a6,805e05f4 + 805e05bc: 02c80c63 beq a6,a2,805e05f4 LOG("app_size=%u, ", sz); - 805e05c0: 408c lw a1,0(s1) - 805e05c2: c585 beqz a1,805e05ea - 805e05c4: 6010 ld a2,0(s0) - 805e05c6: 85be mv a1,a5 + 805e05c0: 4090 lw a2,0(s1) + 805e05c2: c605 beqz a2,805e05ea + 805e05c4: 6014 ld a3,0(s0) + 805e05c6: 85c2 mv a1,a6 805e05c8: 00001517 auipc a0,0x1 - 805e05cc: 2d050513 addi a0,a0,720 # 805e1898 - 805e05d0: e436 sd a3,8(sp) - 805e05d2: e03e sd a5,0(sp) - 805e05d4: 9602 jalr a2 + 805e05cc: 2e050513 addi a0,a0,736 # 805e18a8 + 805e05d0: e43e sd a5,8(sp) + 805e05d2: e042 sd a6,0(sp) + 805e05d4: 9682 jalr a3 805e05d6: 0c800513 li a0,200 805e05da: 00001097 auipc ra,0x1 - 805e05de: b12080e7 jalr -1262(ra) # 805e10ec - 805e05e2: 000d2603 lw a2,0(s10) - 805e05e6: 66a2 ld a3,8(sp) - 805e05e8: 6782 ld a5,0(sp) + 805e05de: b22080e7 jalr -1246(ra) # 805e10fc + 805e05e2: 000d2683 lw a3,0(s10) + 805e05e6: 67a2 ld a5,8(sp) + 805e05e8: 6802 ld a6,0(sp) cfg_size = sz; 805e05ea: 00002717 auipc a4,0x2 - 805e05ee: 94d72323 sw a3,-1722(a4) # 805e1f30 - 805e05f2: 883e mv a6,a5 + 805e05ee: 94f72b23 sw a5,-1706(a4) # 805e1f40 + 805e05f2: 8642 mv a2,a6 if (cfg_magic & CFG_APP_FLAG_SHA256) { - 805e05f4: 00467793 andi a5,a2,4 - 805e05f8: 18079363 bnez a5,805e077e + 805e05f4: 0046f793 andi a5,a3,4 + 805e05f8: 18079163 bnez a5,805e077a if (cfg_magic & CFG_APP_FLAG_CRC32) { - 805e05fc: 00267793 andi a5,a2,2 - 805e0600: efad bnez a5,805e067a + 805e05fc: 8a89 andi a3,a3,2 + 805e05fe: eead bnez a3,805e0678 LOG("App ok, "); - 805e0602: 409c lw a5,0(s1) - 805e0604: e38d bnez a5,805e0626 + 805e0600: 409c lw a5,0(s1) + 805e0602: e38d bnez a5,805e0624 if ((cfg_magic & CFG_APP_FLAG_ACTIVE) == 0) { - 805e0606: 000d2683 lw a3,0(s10) + 805e0604: 000d2683 lw a3,0(s10) available_apps[i] = 1; - 805e060a: 00002617 auipc a2,0x2 - 805e060e: 95666603 lwu a2,-1706(a2) # 805e1f60 - 805e0612: 9652 add a2,a2,s4 - 805e0614: 4585 li a1,1 - 805e0616: 00b60023 sb a1,0(a2) + 805e0608: 00002617 auipc a2,0x2 + 805e060c: 96866603 lwu a2,-1688(a2) # 805e1f70 + 805e0610: 9652 add a2,a2,s4 + 805e0612: 4585 li a1,1 + 805e0614: 00b60023 sb a1,0(a2) if ((cfg_magic & CFG_APP_FLAG_ACTIVE) == 0) { - 805e061a: 8a85 andi a3,a3,1 - 805e061c: d6069be3 bnez a3,805e0392 - 805e0620: 000aa583 lw a1,0(s5) - 805e0624: b4cd j 805e0106 + 805e0618: 8a85 andi a3,a3,1 + 805e061a: d6069ce3 bnez a3,805e0392 + 805e061e: 000aa583 lw a1,0(s5) + 805e0622: b4d5 j 805e0106 LOG("App ok, "); - 805e0626: 601c ld a5,0(s0) - 805e0628: 00001517 auipc a0,0x1 - 805e062c: 2a850513 addi a0,a0,680 # 805e18d0 - 805e0630: 9782 jalr a5 - 805e0632: 0c800513 li a0,200 - 805e0636: 00001097 auipc ra,0x1 - 805e063a: ab6080e7 jalr -1354(ra) # 805e10ec + 805e0624: 601c ld a5,0(s0) + 805e0626: 00001517 auipc a0,0x1 + 805e062a: 2ba50513 addi a0,a0,698 # 805e18e0 + 805e062e: 9782 jalr a5 + 805e0630: 0c800513 li a0,200 + 805e0634: 00001097 auipc ra,0x1 + 805e0638: ac8080e7 jalr -1336(ra) # 805e10fc available_apps[i] = 1; - 805e063e: 00002697 auipc a3,0x2 - 805e0642: 9226e683 lwu a3,-1758(a3) # 805e1f60 - 805e0646: 96d2 add a3,a3,s4 - 805e0648: 4605 li a2,1 - 805e064a: 00c68023 sb a2,0(a3) + 805e063c: 00002697 auipc a3,0x2 + 805e0640: 9346e683 lwu a3,-1740(a3) # 805e1f70 + 805e0644: 96d2 add a3,a3,s4 + 805e0646: 4605 li a2,1 + 805e0648: 00c68023 sb a2,0(a3) if ((cfg_magic & CFG_APP_FLAG_ACTIVE) == 0) { - 805e064e: 000d2683 lw a3,0(s10) - 805e0652: 409c lw a5,0(s1) - 805e0654: 8a85 andi a3,a3,1 - 805e0656: d2069ee3 bnez a3,805e0392 + 805e064c: 000d2683 lw a3,0(s10) + 805e0650: 409c lw a5,0(s1) + 805e0652: 8a85 andi a3,a3,1 + 805e0654: d2069fe3 bnez a3,805e0392 LOG("NOT "); - 805e065a: e80784e3 beqz a5,805e04e2 - 805e065e: 601c ld a5,0(s0) - 805e0660: 00001517 auipc a0,0x1 - 805e0664: 29050513 addi a0,a0,656 # 805e18f0 - 805e0668: 9782 jalr a5 - 805e066a: 0c800513 li a0,200 - 805e066e: 00001097 auipc ra,0x1 - 805e0672: a7e080e7 jalr -1410(ra) # 805e10ec - 805e0676: 409c lw a5,0(s1) - 805e0678: b3a9 j 805e03c2 + 805e0658: e80785e3 beqz a5,805e04e2 + 805e065c: 601c ld a5,0(s0) + 805e065e: 00001517 auipc a0,0x1 + 805e0662: 2a250513 addi a0,a0,674 # 805e1900 + 805e0666: 9782 jalr a5 + 805e0668: 0c800513 li a0,200 + 805e066c: 00001097 auipc ra,0x1 + 805e0670: a90080e7 jalr -1392(ra) # 805e10fc + 805e0674: 409c lw a5,0(s1) + 805e0676: b3b1 j 805e03c2 for (uint32_t n = 5; n < (cfg_size+5); n++) { - 805e067a: 0058079b addiw a5,a6,5 - 805e067e: 4695 li a3,5 - 805e0680: 5cf6f463 bleu a5,a3,805e0c48 - 805e0684: 000c2603 lw a2,0(s8) + 805e0678: 0056079b addiw a5,a2,5 + 805e067c: 4695 li a3,5 + 805e067e: 5cf6fd63 bleu a5,a3,805e0c58 + 805e0682: 000c2683 lw a3,0(s8) uint32_t crc = 0xFFFFFFFF; - 805e0688: 57fd li a5,-1 + 805e0686: 57fd li a5,-1 byte = app_flash_ptr[cfg_address + n]; - 805e068a: 54000537 lui a0,0x54000 - 805e068e: 0056059b addiw a1,a2,5 - 805e0692: 0105863b addw a2,a1,a6 - 805e0696: 02059693 slli a3,a1,0x20 - 805e069a: 9281 srli a3,a3,0x20 - 805e069c: 96aa add a3,a3,a0 - 805e069e: 0006c683 lbu a3,0(a3) - 805e06a2: 2585 addiw a1,a1,1 + 805e0688: 54000537 lui a0,0x54000 + 805e068c: 0056859b addiw a1,a3,5 + 805e0690: 9e2d addw a2,a2,a1 + 805e0692: 02059693 slli a3,a1,0x20 + 805e0696: 9281 srli a3,a3,0x20 + 805e0698: 96aa add a3,a3,a0 + 805e069a: 0006c683 lbu a3,0(a3) + 805e069e: 2585 addiw a1,a1,1 crc = crc ^ byte; - 805e06a4: 8fb5 xor a5,a5,a3 + 805e06a0: 8fb5 xor a5,a5,a3 mask = -(crc & 1); - 805e06a6: 0017f693 andi a3,a5,1 - 805e06aa: 40d006bb negw a3,a3 + 805e06a2: 0017f693 andi a3,a5,1 + 805e06a6: 40d006bb negw a3,a3 crc = (crc >> 1) ^ (0xEDB88320 & mask); - 805e06ae: 0166f6b3 and a3,a3,s6 - 805e06b2: 0017d79b srliw a5,a5,0x1 - 805e06b6: 8fb5 xor a5,a5,a3 - 805e06b8: 0007869b sext.w a3,a5 + 805e06aa: 0166f6b3 and a3,a3,s6 + 805e06ae: 0017d79b srliw a5,a5,0x1 + 805e06b2: 8fb5 xor a5,a5,a3 + 805e06b4: 0007869b sext.w a3,a5 mask = -(crc & 1); - 805e06bc: 0016f793 andi a5,a3,1 - 805e06c0: 40f007bb negw a5,a5 + 805e06b8: 0016f793 andi a5,a3,1 + 805e06bc: 40f007bb negw a5,a5 crc = (crc >> 1) ^ (0xEDB88320 & mask); - 805e06c4: 0016d69b srliw a3,a3,0x1 - 805e06c8: 0167f7b3 and a5,a5,s6 - 805e06cc: 8fb5 xor a5,a5,a3 - 805e06ce: 2781 sext.w a5,a5 + 805e06c0: 0016d69b srliw a3,a3,0x1 + 805e06c4: 0167f7b3 and a5,a5,s6 + 805e06c8: 8fb5 xor a5,a5,a3 + 805e06ca: 2781 sext.w a5,a5 mask = -(crc & 1); - 805e06d0: 0017f693 andi a3,a5,1 - 805e06d4: 40d006bb negw a3,a3 + 805e06cc: 0017f693 andi a3,a5,1 + 805e06d0: 40d006bb negw a3,a3 crc = (crc >> 1) ^ (0xEDB88320 & mask); - 805e06d8: 0017d79b srliw a5,a5,0x1 - 805e06dc: 0166f6b3 and a3,a3,s6 - 805e06e0: 8ebd xor a3,a3,a5 - 805e06e2: 2681 sext.w a3,a3 + 805e06d4: 0017d79b srliw a5,a5,0x1 + 805e06d8: 0166f6b3 and a3,a3,s6 + 805e06dc: 8ebd xor a3,a3,a5 + 805e06de: 2681 sext.w a3,a3 mask = -(crc & 1); - 805e06e4: 0016f793 andi a5,a3,1 - 805e06e8: 40f007bb negw a5,a5 + 805e06e0: 0016f793 andi a5,a3,1 + 805e06e4: 40f007bb negw a5,a5 crc = (crc >> 1) ^ (0xEDB88320 & mask); - 805e06ec: 0016d69b srliw a3,a3,0x1 - 805e06f0: 0167f7b3 and a5,a5,s6 - 805e06f4: 8fb5 xor a5,a5,a3 - 805e06f6: 2781 sext.w a5,a5 + 805e06e8: 0016d69b srliw a3,a3,0x1 + 805e06ec: 0167f7b3 and a5,a5,s6 + 805e06f0: 8fb5 xor a5,a5,a3 + 805e06f2: 2781 sext.w a5,a5 mask = -(crc & 1); - 805e06f8: 0017f693 andi a3,a5,1 - 805e06fc: 40d006bb negw a3,a3 + 805e06f4: 0017f693 andi a3,a5,1 + 805e06f8: 40d006bb negw a3,a3 crc = (crc >> 1) ^ (0xEDB88320 & mask); - 805e0700: 0017d79b srliw a5,a5,0x1 - 805e0704: 0166f6b3 and a3,a3,s6 - 805e0708: 8ebd xor a3,a3,a5 - 805e070a: 2681 sext.w a3,a3 + 805e06fc: 0017d79b srliw a5,a5,0x1 + 805e0700: 0166f6b3 and a3,a3,s6 + 805e0704: 8ebd xor a3,a3,a5 + 805e0706: 2681 sext.w a3,a3 mask = -(crc & 1); - 805e070c: 0016f793 andi a5,a3,1 - 805e0710: 40f007bb negw a5,a5 + 805e0708: 0016f793 andi a5,a3,1 + 805e070c: 40f007bb negw a5,a5 crc = (crc >> 1) ^ (0xEDB88320 & mask); - 805e0714: 0016d69b srliw a3,a3,0x1 - 805e0718: 0167f7b3 and a5,a5,s6 - 805e071c: 8fb5 xor a5,a5,a3 - 805e071e: 2781 sext.w a5,a5 + 805e0710: 0016d69b srliw a3,a3,0x1 + 805e0714: 0167f7b3 and a5,a5,s6 + 805e0718: 8fb5 xor a5,a5,a3 + 805e071a: 2781 sext.w a5,a5 mask = -(crc & 1); - 805e0720: 0017f693 andi a3,a5,1 - 805e0724: 40d006bb negw a3,a3 + 805e071c: 0017f693 andi a3,a5,1 + 805e0720: 40d006bb negw a3,a3 crc = (crc >> 1) ^ (0xEDB88320 & mask); - 805e0728: 0017d79b srliw a5,a5,0x1 - 805e072c: 0166f6b3 and a3,a3,s6 - 805e0730: 8ebd xor a3,a3,a5 - 805e0732: 2681 sext.w a3,a3 + 805e0724: 0017d79b srliw a5,a5,0x1 + 805e0728: 0166f6b3 and a3,a3,s6 + 805e072c: 8ebd xor a3,a3,a5 + 805e072e: 2681 sext.w a3,a3 mask = -(crc & 1); - 805e0734: 0016f793 andi a5,a3,1 - 805e0738: 40f007bb negw a5,a5 + 805e0730: 0016f793 andi a5,a3,1 + 805e0734: 40f007bb negw a5,a5 crc = (crc >> 1) ^ (0xEDB88320 & mask); - 805e073c: 0016d69b srliw a3,a3,0x1 - 805e0740: 0167f7b3 and a5,a5,s6 - 805e0744: 8fb5 xor a5,a5,a3 - 805e0746: 2781 sext.w a5,a5 + 805e0738: 0016d69b srliw a3,a3,0x1 + 805e073c: 0167f7b3 and a5,a5,s6 + 805e0740: 8fb5 xor a5,a5,a3 + 805e0742: 2781 sext.w a5,a5 for (uint32_t n = 5; n < (cfg_size+5); n++) { - 805e0748: f4c597e3 bne a1,a2,805e0696 + 805e0744: f4c597e3 bne a1,a2,805e0692 if (crc32 != cfg_crc) { - 805e074c: 00001717 auipc a4,0x1 - 805e0750: 7c870713 addi a4,a4,1992 # 805e1f14 - 805e0754: 4314 lw a3,0(a4) - 805e0756: fff7c793 not a5,a5 - 805e075a: eaf684e3 beq a3,a5,805e0602 + 805e0748: 00001717 auipc a4,0x1 + 805e074c: 7dc70713 addi a4,a4,2012 # 805e1f24 + 805e0750: 4314 lw a3,0(a4) + 805e0752: fff7c793 not a5,a5 + 805e0756: eaf685e3 beq a3,a5,805e0600 LOG("CRC32 error, "); - 805e075e: 409c lw a5,0(s1) - 805e0760: d80781e3 beqz a5,805e04e2 - 805e0764: 601c ld a5,0(s0) - 805e0766: 00001517 auipc a0,0x1 - 805e076a: 14250513 addi a0,a0,322 # 805e18a8 - 805e076e: 9782 jalr a5 - 805e0770: 0c800513 li a0,200 - 805e0774: 00001097 auipc ra,0x1 - 805e0778: 978080e7 jalr -1672(ra) # 805e10ec - 805e077c: bbfd j 805e057a + 805e075a: 409c lw a5,0(s1) + 805e075c: d80783e3 beqz a5,805e04e2 + 805e0760: 601c ld a5,0(s0) + 805e0762: 00001517 auipc a0,0x1 + 805e0766: 15650513 addi a0,a0,342 # 805e18b8 + 805e076a: 9782 jalr a5 + 805e076c: 0c800513 li a0,200 + 805e0770: 00001097 auipc ra,0x1 + 805e0774: 98c080e7 jalr -1652(ra) # 805e10fc + 805e0778: b509 j 805e057a return app_sha256(); - 805e077e: 00000097 auipc ra,0x0 - 805e0782: 7dc080e7 jalr 2012(ra) # 805e0f5a - 805e0786: 2501 sext.w a0,a0 + 805e077a: 00000097 auipc ra,0x0 + 805e077e: 7f0080e7 jalr 2032(ra) # 805e0f6a + 805e0782: 2501 sext.w a0,a0 if (app_check() == 0) { - 805e0788: e6051de3 bnez a0,805e0602 - 805e078c: b3fd j 805e057a - for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { - 805e078e: 478d li a5,3 - 805e0790: 00001717 auipc a4,0x1 - 805e0794: 7cf72823 sw a5,2000(a4) # 805e1f60 + 805e0784: e6051ee3 bnez a0,805e0600 + 805e0788: bbcd j 805e057a + for (boot_entry = 0; boot_entry < BOOT_CONFIG_ITEMS; boot_entry++) { + 805e078a: 478d li a5,3 + 805e078c: 00001717 auipc a4,0x1 + 805e0790: 38f72623 sw a5,908(a4) # 805e1b18 } else { LOG("\n* No app found, loading default\n"); } } else if (boot_pin == 0) { - 805e0798: 00001797 auipc a5,0x1 - 805e079c: 37078793 addi a5,a5,880 # 805e1b08 - 805e07a0: 439c lw a5,0(a5) - 805e07a2: 24078363 beqz a5,805e09e8 + 805e0794: 00001797 auipc a5,0x1 + 805e0798: 38878793 addi a5,a5,904 # 805e1b1c + 805e079c: 439c lw a5,0(a5) + 805e079e: 20078263 beqz a5,805e09a2 LOG("%c\n\n", (char)char_in); } } // If default application is selected for load, get its size and check SHA hash if (app_flash_start == DEFAULT_APP_ADDR) { - 805e07a6: 000ba703 lw a4,0(s7) - 805e07aa: 67c1 lui a5,0x10 - 805e07ac: 18f70a63 beq a4,a5,805e0940 + 805e07a2: 000ba703 lw a4,0(s7) + 805e07a6: 67c1 lui a5,0x10 + 805e07a8: 18f70a63 beq a4,a5,805e093c } } } // === Copy the application code from flash to SRAM === LOG("* Loading app from flash at 0x%08X (%u B)\n", app_flash_start, app_size); - 805e07b0: 409c lw a5,0(s1) - 805e07b2: 00001917 auipc s2,0x1 - 805e07b6: 34690913 addi s2,s2,838 # 805e1af8 - 805e07ba: c38d beqz a5,805e07dc - 805e07bc: 601c ld a5,0(s0) - 805e07be: 00092603 lw a2,0(s2) - 805e07c2: 000ba583 lw a1,0(s7) - 805e07c6: 00001517 auipc a0,0x1 - 805e07ca: 24a50513 addi a0,a0,586 # 805e1a10 - 805e07ce: 9782 jalr a5 - 805e07d0: 0c800513 li a0,200 - 805e07d4: 00001097 auipc ra,0x1 - 805e07d8: 918080e7 jalr -1768(ra) # 805e10ec + 805e07ac: 409c lw a5,0(s1) + 805e07ae: 00001917 auipc s2,0x1 + 805e07b2: 35a90913 addi s2,s2,858 # 805e1b08 + 805e07b6: c38d beqz a5,805e07d8 + 805e07b8: 601c ld a5,0(s0) + 805e07ba: 00092603 lw a2,0(s2) + 805e07be: 000ba583 lw a1,0(s7) + 805e07c2: 00001517 auipc a0,0x1 + 805e07c6: 25e50513 addi a0,a0,606 # 805e1a20 + 805e07ca: 9782 jalr a5 + 805e07cc: 0c800513 li a0,200 + 805e07d0: 00001097 auipc ra,0x1 + 805e07d4: 92c080e7 jalr -1748(ra) # 805e10fc for (i=0; i < app_size; i++) { - 805e07dc: 00092603 lw a2,0(s2) - 805e07e0: 00001797 auipc a5,0x1 - 805e07e4: 7807a023 sw zero,1920(a5) # 805e1f60 - 805e07e8: c231 beqz a2,805e082c - 805e07ea: 4785 li a5,1 - 805e07ec: fff6071b addiw a4,a2,-1 - 805e07f0: 07fe slli a5,a5,0x1f - 805e07f2: 1702 slli a4,a4,0x20 - 805e07f4: 00178693 addi a3,a5,1 + 805e07d8: 00092603 lw a2,0(s2) + 805e07dc: 00001797 auipc a5,0x1 + 805e07e0: 7807aa23 sw zero,1940(a5) # 805e1f70 + 805e07e4: c231 beqz a2,805e0828 + 805e07e6: 4785 li a5,1 + 805e07e8: fff6071b addiw a4,a2,-1 + 805e07ec: 07fe slli a5,a5,0x1f + 805e07ee: 1702 slli a4,a4,0x20 + 805e07f0: 00178693 addi a3,a5,1 app_sram_ptr[i] = app_flash_ptr[app_flash_start+i+5]; - 805e07f8: 000ba583 lw a1,0(s7) - 805e07fc: 9301 srli a4,a4,0x20 - 805e07fe: 9736 add a4,a4,a3 - 805e0800: 800006b7 lui a3,0x80000 - 805e0804: 2695 addiw a3,a3,5 - 805e0806: 9db5 addw a1,a1,a3 - 805e0808: 54000537 lui a0,0x54000 - 805e080c: 00f586bb addw a3,a1,a5 - 805e0810: 1682 slli a3,a3,0x20 - 805e0812: 9281 srli a3,a3,0x20 - 805e0814: 96aa add a3,a3,a0 - 805e0816: 0006c683 lbu a3,0(a3) # ffffffff80000000 - 805e081a: 0785 addi a5,a5,1 - 805e081c: fed78fa3 sb a3,-1(a5) + 805e07f4: 000ba583 lw a1,0(s7) + 805e07f8: 9301 srli a4,a4,0x20 + 805e07fa: 9736 add a4,a4,a3 + 805e07fc: 800006b7 lui a3,0x80000 + 805e0800: 2695 addiw a3,a3,5 + 805e0802: 9db5 addw a1,a1,a3 + 805e0804: 54000537 lui a0,0x54000 + 805e0808: 00f586bb addw a3,a1,a5 + 805e080c: 1682 slli a3,a3,0x20 + 805e080e: 9281 srli a3,a3,0x20 + 805e0810: 96aa add a3,a3,a0 + 805e0812: 0006c683 lbu a3,0(a3) # ffffffff80000000 + 805e0816: 0785 addi a5,a5,1 + 805e0818: fed78fa3 sb a3,-1(a5) for (i=0; i < app_size; i++) { - 805e0820: fee796e3 bne a5,a4,805e080c - 805e0824: 00001797 auipc a5,0x1 - 805e0828: 72c7ae23 sw a2,1852(a5) # 805e1f60 + 805e081c: fee796e3 bne a5,a4,805e0808 + 805e0820: 00001797 auipc a5,0x1 + 805e0824: 74c7a823 sw a2,1872(a5) # 805e1f70 } // === Start the application === LOG("* Starting at 0x%08X ...\n\n", app_start); - 805e082c: 409c lw a5,0(s1) - 805e082e: cf99 beqz a5,805e084c - 805e0830: 601c ld a5,0(s0) - 805e0832: 4585 li a1,1 - 805e0834: 05fe slli a1,a1,0x1f - 805e0836: 00001517 auipc a0,0x1 - 805e083a: 20a50513 addi a0,a0,522 # 805e1a40 - 805e083e: 9782 jalr a5 - 805e0840: 0c800513 li a0,200 - 805e0844: 00001097 auipc ra,0x1 - 805e0848: 8a8080e7 jalr -1880(ra) # 805e10ec + 805e0828: 409c lw a5,0(s1) + 805e082a: cf99 beqz a5,805e0848 + 805e082c: 601c ld a5,0(s0) + 805e082e: 4585 li a1,1 + 805e0830: 05fe slli a1,a1,0x1f + 805e0832: 00001517 auipc a0,0x1 + 805e0836: 21e50513 addi a0,a0,542 # 805e1a50 + 805e083a: 9782 jalr a5 + 805e083c: 0c800513 li a0,200 + 805e0840: 00001097 auipc ra,0x1 + 805e0844: 8bc080e7 jalr -1860(ra) # 805e10fc usleep(1000); - 805e084c: 3e800513 li a0,1000 - 805e0850: 00001097 auipc ra,0x1 - 805e0854: 89c080e7 jalr -1892(ra) # 805e10ec + 805e0848: 3e800513 li a0,1000 + 805e084c: 00001097 auipc ra,0x1 + 805e0850: 8b0080e7 jalr -1872(ra) # 805e10fc // Disable XIP mode sysctl->peri.spi3_xip_en = 0; - 805e0858: 504406b7 lui a3,0x50440 - 805e085c: 4ebc lw a5,88(a3) - 805e085e: 7761 lui a4,0xffff8 - 805e0860: 177d addi a4,a4,-1 - 805e0862: 8ff9 and a5,a5,a4 - 805e0864: cebc sw a5,88(a3) + 805e0854: 504406b7 lui a3,0x50440 + 805e0858: 4ebc lw a5,88(a3) + 805e085a: 7761 lui a4,0xffff8 + 805e085c: 177d addi a4,a4,-1 + 805e085e: 8ff9 and a5,a5,a4 + 805e0860: cebc sw a5,88(a3) /* * each core has separate instruction cache * we must clear it before continuing */ core1_sync = 1; - 805e0866: 4785 li a5,1 - 805e0868: 00001717 auipc a4,0x1 - 805e086c: 6cf72a23 sw a5,1748(a4) # 805e1f3c + 805e0862: 4785 li a5,1 + 805e0864: 00001717 auipc a4,0x1 + 805e0868: 6ef72423 sw a5,1768(a4) # 805e1f4c asm("fence"); // D-Cache; this may not be necessary, but it looks it doesn't hurt if it is executed - 805e0870: 0ff0000f fence + 805e086c: 0ff0000f fence asm("fence.i"); // I-Cache - 805e0874: 0000100f fence.i + 805e0870: 0000100f fence.i asm ("jr %0" : : "r"(app_start)); - 805e0878: 4785 li a5,1 - 805e087a: 07fe slli a5,a5,0x1f - 805e087c: 8782 jr a5 + 805e0874: 4785 li a5,1 + 805e0876: 07fe slli a5,a5,0x1f + 805e0878: 8782 jr a5 // This should never be reached! LOG("\nERROR, SYSTEM HALTED\n"); - 805e087e: 409c lw a5,0(s1) - 805e0880: cf89 beqz a5,805e089a - 805e0882: 601c ld a5,0(s0) - 805e0884: 00001517 auipc a0,0x1 - 805e0888: 1dc50513 addi a0,a0,476 # 805e1a60 - 805e088c: 9782 jalr a5 - 805e088e: 0c800513 li a0,200 - 805e0892: 00001097 auipc ra,0x1 - 805e0896: 85a080e7 jalr -1958(ra) # 805e10ec + 805e087a: 409c lw a5,0(s1) + 805e087c: cf89 beqz a5,805e0896 + 805e087e: 601c ld a5,0(s0) + 805e0880: 00001517 auipc a0,0x1 + 805e0884: 1f050513 addi a0,a0,496 # 805e1a70 + 805e0888: 9782 jalr a5 + 805e088a: 0c800513 li a0,200 + 805e088e: 00001097 auipc ra,0x1 + 805e0892: 86e080e7 jalr -1938(ra) # 805e10fc while (1) { asm ("nop"); - 805e089a: 0001 nop - 805e089c: 0001 nop - 805e089e: bff5 j 805e089a + 805e0896: 0001 nop + 805e0898: 0001 nop + 805e089a: bff5 j 805e0896 fpioa_set_function(BOOT_PIN, FUNC_GPIOHS2); - 805e08a0: 45e9 li a1,26 - 805e08a2: 4549 li a0,18 - 805e08a4: 00000097 auipc ra,0x0 - 805e08a8: 4c2080e7 jalr 1218(ra) # 805e0d66 + 805e089c: 45e9 li a1,26 + 805e089e: 4549 li a0,18 + 805e08a0: 00000097 auipc ra,0x0 + 805e08a4: 4d6080e7 jalr 1238(ra) # 805e0d76 gpiohs_set_drive_mode(GPIO_KEY, GPIO_DM_INPUT_PULL_UP); - 805e08ac: 4589 li a1,2 - 805e08ae: 4509 li a0,2 - 805e08b0: 00000097 auipc ra,0x0 - 805e08b4: 5bc080e7 jalr 1468(ra) # 805e0e6c + 805e08a8: 4589 li a1,2 + 805e08aa: 4509 li a0,2 + 805e08ac: 00000097 auipc ra,0x0 + 805e08b0: 5d0080e7 jalr 1488(ra) # 805e0e7c usleep(1000); - 805e08b8: 3e800513 li a0,1000 - 805e08bc: 00001097 auipc ra,0x1 - 805e08c0: 830080e7 jalr -2000(ra) # 805e10ec + 805e08b4: 3e800513 li a0,1000 + 805e08b8: 00001097 auipc ra,0x1 + 805e08bc: 844080e7 jalr -1980(ra) # 805e10fc boot_pin = gpiohs_get_pin(GPIO_KEY); - 805e08c4: 4509 li a0,2 - 805e08c6: 00000097 auipc ra,0x0 - 805e08ca: 63a080e7 jalr 1594(ra) # 805e0f00 - LOG("\nK210 bootloader by LoBo v.1.4.1\n\n"); - 805e08ce: 409c lw a5,0(s1) + 805e08c0: 4509 li a0,2 + 805e08c2: 00000097 auipc ra,0x0 + 805e08c6: 64e080e7 jalr 1614(ra) # 805e0f10 + LOG("\nK210 bootloader by LoBo v.1.4.2\n\n"); + 805e08ca: 409c lw a5,0(s1) boot_pin = gpiohs_get_pin(GPIO_KEY); - 805e08d0: 00001717 auipc a4,0x1 - 805e08d4: 22a72c23 sw a0,568(a4) # 805e1b08 - LOG("\nK210 bootloader by LoBo v.1.4.1\n\n"); - 805e08d8: 00001417 auipc s0,0x1 - 805e08dc: 6b043403 ld s0,1712(s0) # 805e1f88 <__TMC_END__+0x8> - 805e08e0: fa078d63 beqz a5,805e009a - 805e08e4: 601c ld a5,0(s0) - 805e08e6: 00001517 auipc a0,0x1 - 805e08ea: f3250513 addi a0,a0,-206 # 805e1818 - 805e08ee: 9782 jalr a5 - 805e08f0: 0c800513 li a0,200 - 805e08f4: 00000097 auipc ra,0x0 - 805e08f8: 7f8080e7 jalr 2040(ra) # 805e10ec + 805e08cc: 00001717 auipc a4,0x1 + 805e08d0: 24a72823 sw a0,592(a4) # 805e1b1c + LOG("\nK210 bootloader by LoBo v.1.4.2\n\n"); + 805e08d4: 00001417 auipc s0,0x1 + 805e08d8: 6f443403 ld s0,1780(s0) # 805e1fc8 <__TMC_END__+0x8> + 805e08dc: fa078f63 beqz a5,805e009a + 805e08e0: 601c ld a5,0(s0) + 805e08e2: 00001517 auipc a0,0x1 + 805e08e6: f4650513 addi a0,a0,-186 # 805e1828 + 805e08ea: 9782 jalr a5 + 805e08ec: 0c800513 li a0,200 + 805e08f0: 00001097 auipc ra,0x1 + 805e08f4: 80c080e7 jalr -2036(ra) # 805e10fc LOG("* Find applications in MAIN parameters\n"); - 805e08fc: 409c lw a5,0(s1) - 805e08fe: f8078e63 beqz a5,805e009a - 805e0902: 601c ld a5,0(s0) - 805e0904: 00001517 auipc a0,0x1 - 805e0908: f3c50513 addi a0,a0,-196 # 805e1840 - 805e090c: 9782 jalr a5 - 805e090e: 0c800513 li a0,200 - 805e0912: 00000097 auipc ra,0x0 - 805e0916: 7da080e7 jalr 2010(ra) # 805e10ec - 805e091a: f80ff06f j 805e009a - for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { - 805e091e: 4789 li a5,2 - 805e0920: bd85 j 805e0790 + 805e08f8: 409c lw a5,0(s1) + 805e08fa: fa078063 beqz a5,805e009a + 805e08fe: 601c ld a5,0(s0) + 805e0900: 00001517 auipc a0,0x1 + 805e0904: f5050513 addi a0,a0,-176 # 805e1850 + 805e0908: 9782 jalr a5 + 805e090a: 0c800513 li a0,200 + 805e090e: 00000097 auipc ra,0x0 + 805e0912: 7ee080e7 jalr 2030(ra) # 805e10fc + 805e0916: f84ff06f j 805e009a + for (boot_entry = 0; boot_entry < BOOT_CONFIG_ITEMS; boot_entry++) { + 805e091a: 4789 li a5,2 + 805e091c: bd85 j 805e078c LOG("ACTIVE\n"); - 805e0922: ac0788e3 beqz a5,805e03f2 - 805e0926: 601c ld a5,0(s0) - 805e0928: 00001517 auipc a0,0x1 - 805e092c: fd050513 addi a0,a0,-48 # 805e18f8 - 805e0930: 9782 jalr a5 - 805e0932: 0c800513 li a0,200 - 805e0936: 00000097 auipc ra,0x0 - 805e093a: 7b6080e7 jalr 1974(ra) # 805e10ec - 805e093e: bc55 j 805e03f2 + 805e091e: ac078ae3 beqz a5,805e03f2 + 805e0922: 601c ld a5,0(s0) + 805e0924: 00001517 auipc a0,0x1 + 805e0928: fe450513 addi a0,a0,-28 # 805e1908 + 805e092c: 9782 jalr a5 + 805e092e: 0c800513 li a0,200 + 805e0932: 00000097 auipc ra,0x0 + 805e0936: 7ca080e7 jalr 1994(ra) # 805e10fc + 805e093a: bc65 j 805e03f2 app_size = flash2uint32(app_flash_start+1); // get app size - 805e0940: 6941 lui s2,0x10 + 805e093c: 6941 lui s2,0x10 key = 1; - 805e0942: 4785 li a5,1 + 805e093e: 4785 li a5,1 app_size = flash2uint32(app_flash_start+1); // get app size - 805e0944: 00190513 addi a0,s2,1 # 10001 <_start-0x805cffff> + 805e0940: 00190513 addi a0,s2,1 # 10001 <_start-0x805cffff> key = 1; - 805e0948: 00001717 auipc a4,0x1 - 805e094c: 60f70e23 sb a5,1564(a4) # 805e1f64 + 805e0944: 00001717 auipc a4,0x1 + 805e0948: 62f70823 sb a5,1584(a4) # 805e1f74 app_size = flash2uint32(app_flash_start+1); // get app size - 805e0950: 00000097 auipc ra,0x0 - 805e0954: 5be080e7 jalr 1470(ra) # 805e0f0e - 805e0958: 2501 sext.w a0,a0 - 805e095a: 00001797 auipc a5,0x1 - 805e095e: 18a7af23 sw a0,414(a5) # 805e1af8 + 805e094c: 00000097 auipc ra,0x0 + 805e0950: 5d2080e7 jalr 1490(ra) # 805e0f1e + 805e0954: 2501 sext.w a0,a0 + 805e0956: 00001797 auipc a5,0x1 + 805e095a: 1aa7a923 sw a0,434(a5) # 805e1b08 if ((app_size >= MIN_APP_FLASH_SIZE) && (app_size <= MAX_APP_FLASH_SIZE)) { - 805e0962: 77f1 lui a5,0xffffc - 805e0964: 9fa9 addw a5,a5,a0 - 805e0966: 002fc737 lui a4,0x2fc - 805e096a: 04f77463 bleu a5,a4,805e09b2 - LOG("\n* Default application check failed!\n"); - 805e096e: 601c ld a5,0(s0) - print_enabled = 1; - 805e0970: 4705 li a4,1 - LOG("\n* Default application check failed!\n"); - 805e0972: 00001517 auipc a0,0x1 - 805e0976: 05e50513 addi a0,a0,94 # 805e19d0 - print_enabled = 1; - 805e097a: 00001697 auipc a3,0x1 - 805e097e: 5ee6a723 sw a4,1518(a3) # 805e1f68 - LOG("\n* Default application check failed!\n"); - 805e0982: 9782 jalr a5 - 805e0984: 0c800513 li a0,200 - 805e0988: 00000097 auipc ra,0x0 - 805e098c: 764080e7 jalr 1892(ra) # 805e10ec - LOG("* SYSTEM HALTED\n"); - 805e0990: 409c lw a5,0(s1) - 805e0992: cf89 beqz a5,805e09ac - 805e0994: 601c ld a5,0(s0) - 805e0996: 00001517 auipc a0,0x1 - 805e099a: 06250513 addi a0,a0,98 # 805e19f8 - 805e099e: 9782 jalr a5 - 805e09a0: 0c800513 li a0,200 - 805e09a4: 00000097 auipc ra,0x0 - 805e09a8: 748080e7 jalr 1864(ra) # 805e10ec - asm ("nop"); - 805e09ac: 0001 nop - 805e09ae: 0001 nop - 805e09b0: bff5 j 805e09ac + 805e095e: 77f1 lui a5,0xffffc + 805e0960: 9fa9 addw a5,a5,a0 + 805e0962: 002fc737 lui a4,0x2fc + 805e0966: 14f76a63 bltu a4,a5,805e0aba + if ((boot_entry < BOOT_CONFIG_ITEMS) || app_sha256()) { + 805e096a: 00001797 auipc a5,0x1 + 805e096e: 1ae78793 addi a5,a5,430 # 805e1b18 + 805e0972: 4398 lw a4,0(a5) cfg_size = app_size; - 805e09b2: 00001797 auipc a5,0x1 - 805e09b6: 56a7af23 sw a0,1406(a5) # 805e1f30 + 805e0974: 00001797 auipc a5,0x1 + 805e0978: 5ca7a623 sw a0,1484(a5) # 805e1f40 cfg_address = app_flash_start; - 805e09ba: 00001797 auipc a5,0x1 - 805e09be: 5527ab23 sw s2,1366(a5) # 805e1f10 - if (app_sha256()) key = 0; - 805e09c2: 00000097 auipc ra,0x0 - 805e09c6: 598080e7 jalr 1432(ra) # 805e0f5a - 805e09ca: 2501 sext.w a0,a0 - 805e09cc: 10050e63 beqz a0,805e0ae8 - 805e09d0: 00001797 auipc a5,0x1 - 805e09d4: 58078a23 sb zero,1428(a5) # 805e1f64 + 805e097c: 00001797 auipc a5,0x1 + 805e0980: 5b27a223 sw s2,1444(a5) # 805e1f20 + if ((boot_entry < BOOT_CONFIG_ITEMS) || app_sha256()) { + 805e0984: 479d li a5,7 + 805e0986: 10e7ed63 bltu a5,a4,805e0aa0 + key = 0; + 805e098a: 00001797 auipc a5,0x1 + 805e098e: 5e078523 sb zero,1514(a5) # 805e1f74 if (key) { - 805e09d8: bbe1 j 805e07b0 + 805e0992: bd29 j 805e07ac else if (boot_pin == 0) { - 805e09da: 00001797 auipc a5,0x1 - 805e09de: 12e78793 addi a5,a5,302 # 805e1b08 - 805e09e2: 439c lw a5,0(a5) - 805e09e4: dc0796e3 bnez a5,805e07b0 + 805e0994: 00001797 auipc a5,0x1 + 805e0998: 18878793 addi a5,a5,392 # 805e1b1c + 805e099c: 439c lw a5,0(a5) + 805e099e: e00797e3 bnez a5,805e07ac boot_pin = gpiohs_get_pin(GPIO_KEY); - 805e09e8: 4509 li a0,2 - 805e09ea: 00000097 auipc ra,0x0 - 805e09ee: 516080e7 jalr 1302(ra) # 805e0f00 - 805e09f2: 0005091b sext.w s2,a0 - 805e09f6: 00001797 auipc a5,0x1 - 805e09fa: 1127a923 sw s2,274(a5) # 805e1b08 + 805e09a2: 4509 li a0,2 + 805e09a4: 00000097 auipc ra,0x0 + 805e09a8: 56c080e7 jalr 1388(ra) # 805e0f10 + 805e09ac: 0005091b sext.w s2,a0 + 805e09b0: 00001797 auipc a5,0x1 + 805e09b4: 1727a623 sw s2,364(a5) # 805e1b1c if (boot_pin == 0) { - 805e09fe: da0914e3 bnez s2,805e07a6 + 805e09b8: de0915e3 bnez s2,805e07a2 LOG("\nSelect the application number to load ["); - 805e0a02: 409c lw a5,0(s1) - 805e0a04: 24079463 bnez a5,805e0c4c + 805e09bc: 409c lw a5,0(s1) + 805e09be: 28079f63 bnez a5,805e0c5c for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { - 805e0a08: 00001797 auipc a5,0x1 - 805e0a0c: 5407ac23 sw zero,1368(a5) # 805e1f60 + 805e09c2: 00001797 auipc a5,0x1 + 805e09c6: 5a07a723 sw zero,1454(a5) # 805e1f70 LOG(" %u,", i); - 805e0a10: 00001c17 auipc s8,0x1 - 805e0a14: f98c0c13 addi s8,s8,-104 # 805e19a8 + 805e09ca: 00001c17 auipc s8,0x1 + 805e09ce: feec0c13 addi s8,s8,-18 # 805e19b8 for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { - 805e0a18: 4b1d li s6,7 + 805e09d2: 4b1d li s6,7 if (available_apps[i]) { - 805e0a1a: 02091793 slli a5,s2,0x20 - 805e0a1e: 9381 srli a5,a5,0x20 - 805e0a20: 97d2 add a5,a5,s4 - 805e0a22: 0007c783 lbu a5,0(a5) - 805e0a26: cf89 beqz a5,805e0a40 + 805e09d4: 02091793 slli a5,s2,0x20 + 805e09d8: 9381 srli a5,a5,0x20 + 805e09da: 97d2 add a5,a5,s4 + 805e09dc: 0007c783 lbu a5,0(a5) + 805e09e0: cf89 beqz a5,805e09fa LOG(" %u,", i); - 805e0a28: 409c lw a5,0(s1) - 805e0a2a: 85ca mv a1,s2 - 805e0a2c: 8562 mv a0,s8 - 805e0a2e: cb89 beqz a5,805e0a40 - 805e0a30: 601c ld a5,0(s0) - 805e0a32: 9782 jalr a5 - 805e0a34: 0c800513 li a0,200 - 805e0a38: 00000097 auipc ra,0x0 - 805e0a3c: 6b4080e7 jalr 1716(ra) # 805e10ec + 805e09e2: 409c lw a5,0(s1) + 805e09e4: 85ca mv a1,s2 + 805e09e6: 8562 mv a0,s8 + 805e09e8: cb89 beqz a5,805e09fa + 805e09ea: 601c ld a5,0(s0) + 805e09ec: 9782 jalr a5 + 805e09ee: 0c800513 li a0,200 + 805e09f2: 00000097 auipc ra,0x0 + 805e09f6: 70a080e7 jalr 1802(ra) # 805e10fc for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { - 805e0a40: 000aa783 lw a5,0(s5) - 805e0a44: 0017891b addiw s2,a5,1 - 805e0a48: 00001717 auipc a4,0x1 - 805e0a4c: 51272c23 sw s2,1304(a4) # 805e1f60 - 805e0a50: fd2b75e3 bleu s2,s6,805e0a1a + 805e09fa: 000aa783 lw a5,0(s5) + 805e09fe: 0017891b addiw s2,a5,1 + 805e0a02: 00001717 auipc a4,0x1 + 805e0a06: 57272723 sw s2,1390(a4) # 805e1f70 + 805e0a0a: fd2b75e3 bleu s2,s6,805e09d4 LOG(" d=default ] ? "); - 805e0a54: 409c lw a5,0(s1) - 805e0a56: 1c079c63 bnez a5,805e0c2e - 805e0a5a: 00001c97 auipc s9,0x1 - 805e0a5e: 53ecbc83 ld s9,1342(s9) # 805e1f98 <__TMC_END__+0x18> + 805e0a0e: 409c lw a5,0(s1) + 805e0a10: 22079763 bnez a5,805e0c3e + 805e0a14: 00001d17 auipc s10,0x1 + 805e0a18: 5c4d3d03 ld s10,1476(s10) # 805e1fd8 <__TMC_END__+0x18> if ((char_in == 'd') || (char_in == 'D')) { - 805e0a62: 04400c13 li s8,68 + 805e0a1c: 04400c93 li s9,68 if ((char_in >= 0) && (char_in < BOOT_CONFIG_ITEMS)) { - 805e0a66: 4b1d li s6,7 + 805e0a20: 4c1d li s8,7 LOG("%c? ", char_in); - 805e0a68: 00001a97 auipc s5,0x1 - 805e0a6c: f58a8a93 addi s5,s5,-168 # 805e19c0 - 805e0a70: a005 j 805e0a90 + 805e0a22: 00001b17 auipc s6,0x1 + 805e0a26: faeb0b13 addi s6,s6,-82 # 805e19d0 + 805e0a2a: a00d j 805e0a4c char_in -= 0x30; - 805e0a72: 00001797 auipc a5,0x1 - 805e0a76: 4cd7a123 sw a3,1218(a5) # 805e1f34 + 805e0a2c: 00001797 auipc a5,0x1 + 805e0a30: 5157ac23 sw s5,1304(a5) # 805e1f44 if ((char_in >= 0) && (char_in < BOOT_CONFIG_ITEMS)) { - 805e0a7a: 00eb6563 bltu s6,a4,805e0a84 + 805e0a34: 015c6663 bltu s8,s5,805e0a40 if (available_apps[char_in]) { - 805e0a7e: 00064783 lbu a5,0(a2) - 805e0a82: efc5 bnez a5,805e0b3a + 805e0a38: 0006c783 lbu a5,0(a3) # 50440000 <_start-0x301a0000> + 805e0a3c: 10079363 bnez a5,805e0b42 LOG("%c? ", char_in); - 805e0a84: 409c lw a5,0(s1) + 805e0a40: 409c lw a5,0(s1) char_in += 0x30; - 805e0a86: 00001717 auipc a4,0x1 - 805e0a8a: 4b272723 sw s2,1198(a4) # 805e1f34 + 805e0a42: 00001717 auipc a4,0x1 + 805e0a46: 51272123 sw s2,1282(a4) # 805e1f44 LOG("%c? ", char_in); - 805e0a8e: ebd9 bnez a5,805e0b24 + 805e0a4a: e3ed bnez a5,805e0b2c char_in = rom_getchar(); - 805e0a90: 000cb783 ld a5,0(s9) - 805e0a94: 9782 jalr a5 + 805e0a4c: 000d3783 ld a5,0(s10) + 805e0a50: 9782 jalr a5 if ((char_in == 'd') || (char_in == 'D')) { - 805e0a96: fdf57793 andi a5,a0,-33 + 805e0a52: fdf57793 andi a5,a0,-33 char_in -= 0x30; - 805e0a9a: fd05069b addiw a3,a0,-48 + 805e0a56: fd050a9b addiw s5,a0,-48 char_in = rom_getchar(); - 805e0a9e: 00001717 auipc a4,0x1 - 805e0aa2: 48a72b23 sw a0,1174(a4) # 805e1f34 - char_in -= 0x30; - 805e0aa6: 0006871b sext.w a4,a3 + 805e0a5a: 00001697 auipc a3,0x1 + 805e0a5e: 4ea6a523 sw a0,1258(a3) # 805e1f44 if ((char_in == 'd') || (char_in == 'D')) { - 805e0aaa: 2781 sext.w a5,a5 + 805e0a62: 2781 sext.w a5,a5 char_in = rom_getchar(); - 805e0aac: 892a mv s2,a0 + 805e0a64: 892a mv s2,a0 if (available_apps[char_in]) { - 805e0aae: 00ea0633 add a2,s4,a4 + 805e0a66: 015a06b3 add a3,s4,s5 if ((char_in == 'd') || (char_in == 'D')) { - 805e0ab2: fd8790e3 bne a5,s8,805e0a72 + 805e0a6a: fd9791e3 bne a5,s9,805e0a2c LOG("%c\n\n", (char)char_in); - 805e0ab6: 409c lw a5,0(s1) + 805e0a6e: 409c lw a5,0(s1) app_flash_start = DEFAULT_APP_ADDR; - 805e0ab8: 6741 lui a4,0x10 - 805e0aba: 00001697 auipc a3,0x1 - 805e0abe: 00e6ab23 sw a4,22(a3) # 805e1ad0 + 805e0a70: 6741 lui a4,0x10 + 805e0a72: 00001697 auipc a3,0x1 + 805e0a76: 06e6a723 sw a4,110(a3) # 805e1ae0 LOG("%c\n\n", (char)char_in); - 805e0ac2: e6078fe3 beqz a5,805e0940 - 805e0ac6: 601c ld a5,0(s0) - 805e0ac8: 00001597 auipc a1,0x1 - 805e0acc: 46c5c583 lbu a1,1132(a1) # 805e1f34 - 805e0ad0: 00001517 auipc a0,0x1 - 805e0ad4: ef850513 addi a0,a0,-264 # 805e19c8 - 805e0ad8: 9782 jalr a5 - 805e0ada: 0c800513 li a0,200 - 805e0ade: 00000097 auipc ra,0x0 - 805e0ae2: 60e080e7 jalr 1550(ra) # 805e10ec - 805e0ae6: b1c1 j 805e07a6 + 805e0a7a: ec0781e3 beqz a5,805e093c + 805e0a7e: 601c ld a5,0(s0) + 805e0a80: 00001597 auipc a1,0x1 + 805e0a84: 4c45c583 lbu a1,1220(a1) # 805e1f44 + 805e0a88: 00001517 auipc a0,0x1 + 805e0a8c: f5050513 addi a0,a0,-176 # 805e19d8 + 805e0a90: 9782 jalr a5 + 805e0a92: 0c800513 li a0,200 + 805e0a96: 00000097 auipc ra,0x0 + 805e0a9a: 666080e7 jalr 1638(ra) # 805e10fc + 805e0a9e: b311 j 805e07a2 + if ((boot_entry < BOOT_CONFIG_ITEMS) || app_sha256()) { + 805e0aa0: 00000097 auipc ra,0x0 + 805e0aa4: 4ca080e7 jalr 1226(ra) # 805e0f6a + 805e0aa8: 2501 sext.w a0,a0 + 805e0aaa: ee0510e3 bnez a0,805e098a if (key) { - 805e0ae8: 00001797 auipc a5,0x1 - 805e0aec: 47c7c783 lbu a5,1148(a5) # 805e1f64 - 805e0af0: cc0780e3 beqz a5,805e07b0 - 805e0af4: bdad j 805e096e - for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { - 805e0af6: 479d li a5,7 - 805e0af8: b961 j 805e0790 - 805e0afa: 4799 li a5,6 - 805e0afc: b951 j 805e0790 - 805e0afe: 4795 li a5,5 - 805e0b00: b941 j 805e0790 - 805e0b02: 4791 li a5,4 - 805e0b04: b171 j 805e0790 + 805e0aae: 00001797 auipc a5,0x1 + 805e0ab2: 4c67c783 lbu a5,1222(a5) # 805e1f74 + 805e0ab6: ce078be3 beqz a5,805e07ac + LOG("\n* Default application check failed!\n"); + 805e0aba: 601c ld a5,0(s0) + print_enabled = 1; + 805e0abc: 4705 li a4,1 + LOG("\n* Default application check failed!\n"); + 805e0abe: 00001517 auipc a0,0x1 + 805e0ac2: f2250513 addi a0,a0,-222 # 805e19e0 + print_enabled = 1; + 805e0ac6: 00001697 auipc a3,0x1 + 805e0aca: 4ae6a923 sw a4,1202(a3) # 805e1f78 + LOG("\n* Default application check failed!\n"); + 805e0ace: 9782 jalr a5 + 805e0ad0: 0c800513 li a0,200 + 805e0ad4: 00000097 auipc ra,0x0 + 805e0ad8: 628080e7 jalr 1576(ra) # 805e10fc + LOG("* SYSTEM HALTED\n"); + 805e0adc: 409c lw a5,0(s1) + 805e0ade: cf89 beqz a5,805e0af8 + 805e0ae0: 601c ld a5,0(s0) + 805e0ae2: 00001517 auipc a0,0x1 + 805e0ae6: f2650513 addi a0,a0,-218 # 805e1a08 + 805e0aea: 9782 jalr a5 + 805e0aec: 0c800513 li a0,200 + 805e0af0: 00000097 auipc ra,0x0 + 805e0af4: 60c080e7 jalr 1548(ra) # 805e10fc + asm ("nop"); + 805e0af8: 0001 nop + 805e0afa: 0001 nop + 805e0afc: bff5 j 805e0af8 + for (boot_entry = 0; boot_entry < BOOT_CONFIG_ITEMS; boot_entry++) { + 805e0afe: 479d li a5,7 + 805e0b00: b171 j 805e078c + 805e0b02: 4799 li a5,6 + 805e0b04: b161 j 805e078c + 805e0b06: 4795 li a5,5 + 805e0b08: b151 j 805e078c + 805e0b0a: 4791 li a5,4 + 805e0b0c: b141 j 805e078c LOG("\n* No app found, loading default\n"); - 805e0b06: e2078de3 beqz a5,805e0940 - 805e0b0a: 601c ld a5,0(s0) - 805e0b0c: 00001517 auipc a0,0x1 - 805e0b10: e4450513 addi a0,a0,-444 # 805e1950 - 805e0b14: 9782 jalr a5 - 805e0b16: 0c800513 li a0,200 - 805e0b1a: 00000097 auipc ra,0x0 - 805e0b1e: 5d2080e7 jalr 1490(ra) # 805e10ec - 805e0b22: b151 j 805e07a6 + 805e0b0e: e20787e3 beqz a5,805e093c + 805e0b12: 601c ld a5,0(s0) + 805e0b14: 00001517 auipc a0,0x1 + 805e0b18: e4c50513 addi a0,a0,-436 # 805e1960 + 805e0b1c: 9782 jalr a5 + 805e0b1e: 0c800513 li a0,200 + 805e0b22: 00000097 auipc ra,0x0 + 805e0b26: 5da080e7 jalr 1498(ra) # 805e10fc + 805e0b2a: b9a5 j 805e07a2 LOG("%c? ", char_in); - 805e0b24: 601c ld a5,0(s0) - 805e0b26: 85ca mv a1,s2 - 805e0b28: 8556 mv a0,s5 - 805e0b2a: 9782 jalr a5 - 805e0b2c: 0c800513 li a0,200 - 805e0b30: 00000097 auipc ra,0x0 - 805e0b34: 5bc080e7 jalr 1468(ra) # 805e10ec - 805e0b38: bfa1 j 805e0a90 + 805e0b2c: 601c ld a5,0(s0) + 805e0b2e: 85ca mv a1,s2 + 805e0b30: 855a mv a0,s6 + 805e0b32: 9782 jalr a5 + 805e0b34: 0c800513 li a0,200 + 805e0b38: 00000097 auipc ra,0x0 + 805e0b3c: 5c4080e7 jalr 1476(ra) # 805e10fc + 805e0b40: b731 j 805e0a4c offset = (i*8) + (cfg_offset / 4); // 32bit offset in current config sector - 805e0b3a: 0009a583 lw a1,0(s3) - 805e0b3e: 0037179b slliw a5,a4,0x3 + 805e0b42: 0009a703 lw a4,0(s3) + 805e0b46: 003a979b slliw a5,s5,0x3 offset = (i*32) + cfg_offset + 0x10; // 8bit offset in current config sector - 805e0b42: 0057171b slliw a4,a4,0x5 + 805e0b4a: 005a969b slliw a3,s5,0x5 offset = (i*8) + (cfg_offset / 4); // 32bit offset in current config sector - 805e0b46: 0025d69b srliw a3,a1,0x2 - 805e0b4a: 9fb5 addw a5,a5,a3 + 805e0b4e: 0027561b srliw a2,a4,0x2 + 805e0b52: 9fb1 addw a5,a5,a2 cfg_address = cfg_flash_ptr[offset + 1]; - 805e0b4c: 0017851b addiw a0,a5,1 + 805e0b54: 0017881b addiw a6,a5,1 cfg_size = cfg_flash_ptr[offset + 2]; - 805e0b50: 0027861b addiw a2,a5,2 + 805e0b58: 0027851b addiw a0,a5,2 cfg_crc = cfg_flash_ptr[offset + 3]; - 805e0b54: 0037869b addiw a3,a5,3 + 805e0b5c: 0037861b addiw a2,a5,3 offset = (i*32) + cfg_offset + 0x10; // 8bit offset in current config sector - 805e0b58: 25c1 addiw a1,a1,16 - 805e0b5a: 9db9 addw a1,a1,a4 + 805e0b60: 2741 addiw a4,a4,16 + 805e0b62: 9f35 addw a4,a4,a3 cfg_magic = cfg_flash_ptr[offset + 0]; - 805e0b5c: 1782 slli a5,a5,0x20 + 805e0b64: 1782 slli a5,a5,0x20 cfg_address = cfg_flash_ptr[offset + 1]; - 805e0b5e: 1502 slli a0,a0,0x20 + 805e0b66: 1802 slli a6,a6,0x20 cfg_size = cfg_flash_ptr[offset + 2]; - 805e0b60: 1602 slli a2,a2,0x20 + 805e0b68: 1502 slli a0,a0,0x20 cfg_crc = cfg_flash_ptr[offset + 3]; - 805e0b62: 1682 slli a3,a3,0x20 + 805e0b6a: 1602 slli a2,a2,0x20 cfg_magic = cfg_flash_ptr[offset + 0]; - 805e0b64: 9381 srli a5,a5,0x20 + 805e0b6c: 9381 srli a5,a5,0x20 cfg_address = cfg_flash_ptr[offset + 1]; - 805e0b66: 9101 srli a0,a0,0x20 + 805e0b6e: 02085813 srli a6,a6,0x20 cfg_size = cfg_flash_ptr[offset + 2]; - 805e0b68: 9201 srli a2,a2,0x20 + 805e0b72: 9101 srli a0,a0,0x20 cfg_crc = cfg_flash_ptr[offset + 3]; - 805e0b6a: 9281 srli a3,a3,0x20 + 805e0b74: 9201 srli a2,a2,0x20 key = cfg_flash_bptr[offset]; // dummy read needed to switch to 8bit XiP read - 805e0b6c: 02059813 slli a6,a1,0x20 + 805e0b76: 02071593 slli a1,a4,0x20 cfg_magic = cfg_flash_ptr[offset + 0]; - 805e0b70: 54004737 lui a4,0x54004 + 805e0b7a: 540046b7 lui a3,0x54004 key = cfg_flash_bptr[offset]; // dummy read needed to switch to 8bit XiP read - 805e0b74: 02085813 srli a6,a6,0x20 + 805e0b7e: 9181 srli a1,a1,0x20 cfg_magic = cfg_flash_ptr[offset + 0]; - 805e0b78: 078a slli a5,a5,0x2 + 805e0b80: 078a slli a5,a5,0x2 cfg_address = cfg_flash_ptr[offset + 1]; - 805e0b7a: 050a slli a0,a0,0x2 + 805e0b82: 080a slli a6,a6,0x2 cfg_size = cfg_flash_ptr[offset + 2]; - 805e0b7c: 060a slli a2,a2,0x2 + 805e0b84: 050a slli a0,a0,0x2 cfg_crc = cfg_flash_ptr[offset + 3]; - 805e0b7e: 068a slli a3,a3,0x2 + 805e0b86: 060a slli a2,a2,0x2 cfg_magic = cfg_flash_ptr[offset + 0]; - 805e0b80: 97ba add a5,a5,a4 + 805e0b88: 97b6 add a5,a5,a3 cfg_address = cfg_flash_ptr[offset + 1]; - 805e0b82: 953a add a0,a0,a4 + 805e0b8a: 9836 add a6,a6,a3 cfg_size = cfg_flash_ptr[offset + 2]; - 805e0b84: 963a add a2,a2,a4 + 805e0b8c: 9536 add a0,a0,a3 cfg_crc = cfg_flash_ptr[offset + 3]; - 805e0b86: 96ba add a3,a3,a4 + 805e0b8e: 9636 add a2,a2,a3 key = cfg_flash_bptr[offset]; // dummy read needed to switch to 8bit XiP read - 805e0b88: 9742 add a4,a4,a6 - cfg_size = cfg_flash_ptr[offset + 2]; - 805e0b8a: 4210 lw a2,0(a2) + 805e0b90: 96ae add a3,a3,a1 cfg_magic = cfg_flash_ptr[offset + 0]; - 805e0b8c: 0007a803 lw a6,0(a5) - cfg_crc = cfg_flash_ptr[offset + 3]; - 805e0b90: 4294 lw a3,0(a3) + 805e0b92: 0007a883 lw a7,0(a5) + cfg_size = cfg_flash_ptr[offset + 2]; + 805e0b96: 410c lw a1,0(a0) key = cfg_flash_bptr[offset]; // dummy read needed to switch to 8bit XiP read - 805e0b92: 00074783 lbu a5,0(a4) # 54004000 <_start-0x2c5dc000> + 805e0b98: 0006c783 lbu a5,0(a3) # 54004000 <_start-0x2c5dc000> + cfg_crc = cfg_flash_ptr[offset + 3]; + 805e0b9c: 4210 lw a2,0(a2) cfg_address = cfg_flash_ptr[offset + 1]; - 805e0b96: 00052983 lw s3,0(a0) + 805e0b9e: 00082983 lw s3,0(a6) # 54000000 <_start-0x2c5e0000> cfg_size = cfg_flash_ptr[offset + 2]; - 805e0b9a: 00001717 auipc a4,0x1 - 805e0b9e: 38c72b23 sw a2,918(a4) # 805e1f30 + 805e0ba2: 00001697 auipc a3,0x1 + 805e0ba6: 38b6af23 sw a1,926(a3) # 805e1f40 cfg_crc = cfg_flash_ptr[offset + 3]; - 805e0ba2: 00001717 auipc a4,0x1 - 805e0ba6: 36d72923 sw a3,882(a4) # 805e1f14 + 805e0baa: 00001697 auipc a3,0x1 + 805e0bae: 36c6ad23 sw a2,890(a3) # 805e1f24 key = cfg_flash_bptr[offset]; // dummy read needed to switch to 8bit XiP read - 805e0baa: 00001717 auipc a4,0x1 - 805e0bae: 3af70d23 sb a5,954(a4) # 805e1f64 + 805e0bb2: 00001697 auipc a3,0x1 + 805e0bb6: 3cf68123 sb a5,962(a3) # 805e1f74 cfg_magic = cfg_flash_ptr[offset + 0]; - 805e0bb2: 00001717 auipc a4,0x1 - 805e0bb6: 37072b23 sw a6,886(a4) # 805e1f28 + 805e0bba: 00001697 auipc a3,0x1 + 805e0bbe: 3716af23 sw a7,894(a3) # 805e1f38 cfg_address = cfg_flash_ptr[offset + 1]; - 805e0bba: 00001717 auipc a4,0x1 - 805e0bbe: 35372b23 sw s3,854(a4) # 805e1f10 + 805e0bc2: 00001697 auipc a3,0x1 + 805e0bc6: 3536af23 sw s3,862(a3) # 805e1f20 key = cfg_flash_bptr[offset]; // dummy read needed to switch to 8bit XiP read - 805e0bc2: 4781 li a5,0 + 805e0bca: 4781 li a5,0 cfg_info[n] = cfg_flash_bptr[offset + n]; - 805e0bc4: 54004637 lui a2,0x54004 + 805e0bcc: 540045b7 lui a1,0x54004 for (int n=0; n<16; n++) { - 805e0bc8: 46c1 li a3,16 + 805e0bd0: 4641 li a2,16 cfg_info[n] = cfg_flash_bptr[offset + n]; - 805e0bca: 00b7873b addw a4,a5,a1 - 805e0bce: 1702 slli a4,a4,0x20 - 805e0bd0: 9301 srli a4,a4,0x20 - 805e0bd2: 9732 add a4,a4,a2 - 805e0bd4: 00074503 lbu a0,0(a4) - 805e0bd8: 00001717 auipc a4,0x1 - 805e0bdc: 34070713 addi a4,a4,832 # 805e1f18 - 805e0be0: 973e add a4,a4,a5 - 805e0be2: 00a70023 sb a0,0(a4) - 805e0be6: 0785 addi a5,a5,1 + 805e0bd2: 00e786bb addw a3,a5,a4 + 805e0bd6: 1682 slli a3,a3,0x20 + 805e0bd8: 9281 srli a3,a3,0x20 + 805e0bda: 96ae add a3,a3,a1 + 805e0bdc: 0006c503 lbu a0,0(a3) + 805e0be0: 00001697 auipc a3,0x1 + 805e0be4: 34868693 addi a3,a3,840 # 805e1f28 + 805e0be8: 96be add a3,a3,a5 + 805e0bea: 00a68023 sb a0,0(a3) + 805e0bee: 0785 addi a5,a5,1 for (int n=0; n<16; n++) { - 805e0be8: fed791e3 bne a5,a3,805e0bca + 805e0bf0: fec791e3 bne a5,a2,805e0bd2 app_size = flash2uint32(cfg_address+1); - 805e0bec: 0019851b addiw a0,s3,1 + 805e0bf4: 0019851b addiw a0,s3,1 cfg_info[15] = 0; - 805e0bf0: 00001797 auipc a5,0x1 - 805e0bf4: 32078ba3 sb zero,823(a5) # 805e1f27 + 805e0bf8: 00001797 auipc a5,0x1 + 805e0bfc: 32078fa3 sb zero,831(a5) # 805e1f37 app_size = flash2uint32(cfg_address+1); - 805e0bf8: 00000097 auipc ra,0x0 - 805e0bfc: 316080e7 jalr 790(ra) # 805e0f0e + 805e0c00: 00000097 auipc ra,0x0 + 805e0c04: 31e080e7 jalr 798(ra) # 805e0f1e LOG("%c\n\n", (char)char_in); - 805e0c00: 409c lw a5,0(s1) + 805e0c08: 409c lw a5,0(s1) app_size = flash2uint32(cfg_address+1); - 805e0c02: 00001717 auipc a4,0x1 - 805e0c06: eea72b23 sw a0,-266(a4) # 805e1af8 - app_flash_start = cfg_address; 805e0c0a: 00001717 auipc a4,0x1 - 805e0c0e: ed372323 sw s3,-314(a4) # 805e1ad0 - char_in += 0x30; + 805e0c0e: eea72f23 sw a0,-258(a4) # 805e1b08 + app_flash_start = cfg_address; 805e0c12: 00001717 auipc a4,0x1 - 805e0c16: 33272123 sw s2,802(a4) # 805e1f34 + 805e0c16: ed372723 sw s3,-306(a4) # 805e1ae0 + boot_entry = char_in; + 805e0c1a: 00001717 auipc a4,0x1 + 805e0c1e: ef572f23 sw s5,-258(a4) # 805e1b18 + char_in += 0x30; + 805e0c22: 00001717 auipc a4,0x1 + 805e0c26: 33272123 sw s2,802(a4) # 805e1f44 LOG("%c\n\n", (char)char_in); - 805e0c1a: ea0796e3 bnez a5,805e0ac6 + 805e0c2a: e4079ae3 bnez a5,805e0a7e if (app_flash_start == DEFAULT_APP_ADDR) { - 805e0c1e: 67c1 lui a5,0x10 - 805e0c20: d2f980e3 beq s3,a5,805e0940 - 805e0c24: 00001917 auipc s2,0x1 - 805e0c28: ed490913 addi s2,s2,-300 # 805e1af8 - 805e0c2c: be45 j 805e07dc + 805e0c2e: 67c1 lui a5,0x10 + 805e0c30: d0f986e3 beq s3,a5,805e093c + 805e0c34: 00001917 auipc s2,0x1 + 805e0c38: ed490913 addi s2,s2,-300 # 805e1b08 + 805e0c3c: be71 j 805e07d8 LOG(" d=default ] ? "); - 805e0c2e: 601c ld a5,0(s0) - 805e0c30: 00001517 auipc a0,0x1 - 805e0c34: d8050513 addi a0,a0,-640 # 805e19b0 - 805e0c38: 9782 jalr a5 - 805e0c3a: 0c800513 li a0,200 - 805e0c3e: 00000097 auipc ra,0x0 - 805e0c42: 4ae080e7 jalr 1198(ra) # 805e10ec - 805e0c46: bd11 j 805e0a5a + 805e0c3e: 601c ld a5,0(s0) + 805e0c40: 00001517 auipc a0,0x1 + 805e0c44: d8050513 addi a0,a0,-640 # 805e19c0 + 805e0c48: 9782 jalr a5 + 805e0c4a: 0c800513 li a0,200 + 805e0c4e: 00000097 auipc ra,0x0 + 805e0c52: 4ae080e7 jalr 1198(ra) # 805e10fc + 805e0c56: bb7d j 805e0a14 uint32_t crc = 0xFFFFFFFF; - 805e0c48: 57fd li a5,-1 - 805e0c4a: b609 j 805e074c + 805e0c58: 57fd li a5,-1 + 805e0c5a: b4fd j 805e0748 LOG("\nSelect the application number to load ["); - 805e0c4c: 601c ld a5,0(s0) - 805e0c4e: 00001517 auipc a0,0x1 - 805e0c52: d2a50513 addi a0,a0,-726 # 805e1978 - 805e0c56: 9782 jalr a5 - 805e0c58: 0c800513 li a0,200 - 805e0c5c: 00000097 auipc ra,0x0 - 805e0c60: 490080e7 jalr 1168(ra) # 805e10ec - 805e0c64: b355 j 805e0a08 - -00000000805e0c66 : - 805e0c66: 00001517 auipc a0,0x1 - 805e0c6a: 31a50513 addi a0,a0,794 # 805e1f80 <__TMC_END__> - 805e0c6e: 00001797 auipc a5,0x1 - 805e0c72: 31278793 addi a5,a5,786 # 805e1f80 <__TMC_END__> - 805e0c76: 00a78963 beq a5,a0,805e0c88 - 805e0c7a: 00000337 lui t1,0x0 - 805e0c7e: 00030313 mv t1,t1 - 805e0c82: 00030363 beqz t1,805e0c88 - 805e0c86: 8302 jr t1 - 805e0c88: 8082 ret - -00000000805e0c8a <__do_global_dtors_aux>: - 805e0c8a: 00001797 auipc a5,0x1 - 805e0c8e: 3267c783 lbu a5,806(a5) # 805e1fb0 - 805e0c92: ef85 bnez a5,805e0cca <__do_global_dtors_aux+0x40> - 805e0c94: 1141 addi sp,sp,-16 - 805e0c96: e406 sd ra,8(sp) - 805e0c98: 00000097 auipc ra,0x0 - 805e0c9c: fce080e7 jalr -50(ra) # 805e0c66 - 805e0ca0: 000007b7 lui a5,0x0 - 805e0ca4: 00078793 mv a5,a5 - 805e0ca8: cb89 beqz a5,805e0cba <__do_global_dtors_aux+0x30> - 805e0caa: 00001517 auipc a0,0x1 - 805e0cae: e1650513 addi a0,a0,-490 # 805e1ac0 <__FRAME_END__> - 805e0cb2: 00000097 auipc ra,0x0 - 805e0cb6: 000000e7 jalr zero # 0 <_start-0x805e0000> - 805e0cba: 60a2 ld ra,8(sp) - 805e0cbc: 4785 li a5,1 - 805e0cbe: 00001717 auipc a4,0x1 - 805e0cc2: 2ef70923 sb a5,754(a4) # 805e1fb0 - 805e0cc6: 0141 addi sp,sp,16 - 805e0cc8: 8082 ret - 805e0cca: 8082 ret - -00000000805e0ccc : + 805e0c5c: 601c ld a5,0(s0) + 805e0c5e: 00001517 auipc a0,0x1 + 805e0c62: d2a50513 addi a0,a0,-726 # 805e1988 + 805e0c66: 9782 jalr a5 + 805e0c68: 0c800513 li a0,200 + 805e0c6c: 00000097 auipc ra,0x0 + 805e0c70: 490080e7 jalr 1168(ra) # 805e10fc + 805e0c74: b3b9 j 805e09c2 + +00000000805e0c76 : + 805e0c76: 00001517 auipc a0,0x1 + 805e0c7a: 34a50513 addi a0,a0,842 # 805e1fc0 <__TMC_END__> + 805e0c7e: 00001797 auipc a5,0x1 + 805e0c82: 34278793 addi a5,a5,834 # 805e1fc0 <__TMC_END__> + 805e0c86: 00a78963 beq a5,a0,805e0c98 + 805e0c8a: 00000337 lui t1,0x0 + 805e0c8e: 00030313 mv t1,t1 + 805e0c92: 00030363 beqz t1,805e0c98 + 805e0c96: 8302 jr t1 + 805e0c98: 8082 ret + +00000000805e0c9a <__do_global_dtors_aux>: + 805e0c9a: 00001797 auipc a5,0x1 + 805e0c9e: 3567c783 lbu a5,854(a5) # 805e1ff0 + 805e0ca2: ef85 bnez a5,805e0cda <__do_global_dtors_aux+0x40> + 805e0ca4: 1141 addi sp,sp,-16 + 805e0ca6: e406 sd ra,8(sp) + 805e0ca8: 00000097 auipc ra,0x0 + 805e0cac: fce080e7 jalr -50(ra) # 805e0c76 + 805e0cb0: 000007b7 lui a5,0x0 + 805e0cb4: 00078793 mv a5,a5 + 805e0cb8: cb89 beqz a5,805e0cca <__do_global_dtors_aux+0x30> + 805e0cba: 00001517 auipc a0,0x1 + 805e0cbe: e1650513 addi a0,a0,-490 # 805e1ad0 <__FRAME_END__> + 805e0cc2: 00000097 auipc ra,0x0 + 805e0cc6: 000000e7 jalr zero # 0 <_start-0x805e0000> + 805e0cca: 60a2 ld ra,8(sp) + 805e0ccc: 4785 li a5,1 + 805e0cce: 00001717 auipc a4,0x1 + 805e0cd2: 32f70123 sb a5,802(a4) # 805e1ff0 + 805e0cd6: 0141 addi sp,sp,16 + 805e0cd8: 8082 ret + 805e0cda: 8082 ret + +00000000805e0cdc : } int fpioa_set_io_pull(int number, fpioa_pull_t pull) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO || pull >= FPIOA_PULL_MAX) - 805e0ccc: 02f00793 li a5,47 - 805e0cd0: 04a7ec63 bltu a5,a0,805e0d28 - 805e0cd4: 4789 li a5,2 - 805e0cd6: 04b7e963 bltu a5,a1,805e0d28 + 805e0cdc: 02f00793 li a5,47 + 805e0ce0: 04a7ec63 bltu a5,a0,805e0d38 + 805e0ce4: 4789 li a5,2 + 805e0ce6: 04b7e963 bltu a5,a1,805e0d38 return -1; /* Atomic read register */ fpioa_io_config_t cfg = fpioa->io[number]; - 805e0cda: 1582 slli a1,a1,0x20 - 805e0cdc: 9181 srli a1,a1,0x20 + 805e0cea: 1582 slli a1,a1,0x20 + 805e0cec: 9181 srli a1,a1,0x20 break; default: break; } /* Atomic write register */ fpioa->io[number] = cfg; - 805e0cde: 00000717 auipc a4,0x0 - 805e0ce2: 6fa70713 addi a4,a4,1786 # 805e13d8 - 805e0ce6: 972e add a4,a4,a1 + 805e0cee: 00000717 auipc a4,0x0 + 805e0cf2: 6fa70713 addi a4,a4,1786 # 805e13e8 + 805e0cf6: 972e add a4,a4,a1 fpioa_io_config_t cfg = fpioa->io[number]; - 805e0ce8: 502b07b7 lui a5,0x502b0 - 805e0cec: 050a slli a0,a0,0x2 - 805e0cee: 953e add a0,a0,a5 + 805e0cf8: 502b07b7 lui a5,0x502b0 + 805e0cfc: 050a slli a0,a0,0x2 + 805e0cfe: 953e add a0,a0,a5 fpioa->io[number] = cfg; - 805e0cf0: 00074783 lbu a5,0(a4) - 805e0cf4: 00000697 auipc a3,0x0 - 805e0cf8: 6ec68693 addi a3,a3,1772 # 805e13e0 - 805e0cfc: 95b6 add a1,a1,a3 + 805e0d00: 00074783 lbu a5,0(a4) + 805e0d04: 00000697 auipc a3,0x0 + 805e0d08: 6ec68693 addi a3,a3,1772 # 805e13f0 + 805e0d0c: 95b6 add a1,a1,a3 fpioa_io_config_t cfg = fpioa->io[number]; - 805e0cfe: 4118 lw a4,0(a0) + 805e0d0e: 4118 lw a4,0(a0) switch(pull) - 805e0d00: 0005c683 lbu a3,0(a1) + 805e0d10: 0005c683 lbu a3,0(a1) # 54004000 <_start-0x2c5dc000> fpioa->io[number] = cfg; - 805e0d04: 8b85 andi a5,a5,1 - 805e0d06: 0107961b slliw a2,a5,0x10 - 805e0d0a: 77c1 lui a5,0xffff0 - 805e0d0c: 17fd addi a5,a5,-1 - 805e0d0e: 8ff9 and a5,a5,a4 - 805e0d10: 0016f713 andi a4,a3,1 - 805e0d14: 7681 lui a3,0xfffe0 - 805e0d16: 8fd1 or a5,a5,a2 - 805e0d18: 16fd addi a3,a3,-1 - 805e0d1a: 0117171b slliw a4,a4,0x11 - 805e0d1e: 8ff5 and a5,a5,a3 - 805e0d20: 8fd9 or a5,a5,a4 - 805e0d22: c11c sw a5,0(a0) + 805e0d14: 8b85 andi a5,a5,1 + 805e0d16: 0107961b slliw a2,a5,0x10 + 805e0d1a: 77c1 lui a5,0xffff0 + 805e0d1c: 17fd addi a5,a5,-1 + 805e0d1e: 8ff9 and a5,a5,a4 + 805e0d20: 0016f713 andi a4,a3,1 + 805e0d24: 7681 lui a3,0xfffe0 + 805e0d26: 8fd1 or a5,a5,a2 + 805e0d28: 16fd addi a3,a3,-1 + 805e0d2a: 0117171b slliw a4,a4,0x11 + 805e0d2e: 8ff5 and a5,a5,a3 + 805e0d30: 8fd9 or a5,a5,a4 + 805e0d32: c11c sw a5,0(a0) return 0; - 805e0d24: 4501 li a0,0 - 805e0d26: 8082 ret + 805e0d34: 4501 li a0,0 + 805e0d36: 8082 ret return -1; - 805e0d28: 557d li a0,-1 + 805e0d38: 557d li a0,-1 } - 805e0d2a: 8082 ret + 805e0d3a: 8082 ret -00000000805e0d2c : +00000000805e0d3c : } int fpioa_set_function_raw(int number, fpioa_function_t function) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO || function < 0 || function >= FUNC_MAX) - 805e0d2c: 02f00793 li a5,47 - 805e0d30: 02a7e963 bltu a5,a0,805e0d62 - 805e0d34: 0ff00793 li a5,255 - 805e0d38: 02b7e563 bltu a5,a1,805e0d62 + 805e0d3c: 02f00793 li a5,47 + 805e0d40: 02a7e963 bltu a5,a0,805e0d72 + 805e0d44: 0ff00793 li a5,255 + 805e0d48: 02b7e563 bltu a5,a1,805e0d72 return -1; /* Atomic write register */ fpioa->io[number] = (const fpioa_io_config_t){ .ch_sel = function_config[function].ch_sel, - 805e0d3c: 1582 slli a1,a1,0x20 - 805e0d3e: 00000797 auipc a5,0x0 - 805e0d42: 6aa78793 addi a5,a5,1706 # 805e13e8 - 805e0d46: 81f9 srli a1,a1,0x1e - 805e0d48: 95be add a1,a1,a5 - 805e0d4a: 419c lw a5,0(a1) + 805e0d4c: 1582 slli a1,a1,0x20 + 805e0d4e: 00000797 auipc a5,0x0 + 805e0d52: 6aa78793 addi a5,a5,1706 # 805e13f8 + 805e0d56: 81f9 srli a1,a1,0x1e + 805e0d58: 95be add a1,a1,a5 + 805e0d5a: 419c lw a5,0(a1) fpioa->io[number] = (const fpioa_io_config_t){ - 805e0d4c: 00fc0737 lui a4,0xfc0 - 805e0d50: 177d addi a4,a4,-1 - 805e0d52: 8f7d and a4,a4,a5 - 805e0d54: 050a slli a0,a0,0x2 - 805e0d56: 502b07b7 lui a5,0x502b0 - 805e0d5a: 953e add a0,a0,a5 - 805e0d5c: c118 sw a4,0(a0) + 805e0d5c: 00fc0737 lui a4,0xfc0 + 805e0d60: 177d addi a4,a4,-1 + 805e0d62: 8f7d and a4,a4,a5 + 805e0d64: 050a slli a0,a0,0x2 + 805e0d66: 502b07b7 lui a5,0x502b0 + 805e0d6a: 953e add a0,a0,a5 + 805e0d6c: c118 sw a4,0(a0) .ie_inv = function_config[function].ie_inv, .di_inv = function_config[function].di_inv, .st = function_config[function].st, /* resv and pad_di do not need initialization */ }; return 0; - 805e0d5e: 4501 li a0,0 - 805e0d60: 8082 ret + 805e0d6e: 4501 li a0,0 + 805e0d70: 8082 ret return -1; - 805e0d62: 557d li a0,-1 + 805e0d72: 557d li a0,-1 } - 805e0d64: 8082 ret + 805e0d74: 8082 ret -00000000805e0d66 : +00000000805e0d76 : int fpioa_set_function(int number, fpioa_function_t function) { uint8_t index = 0; /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO || function < 0 || function >= FUNC_MAX) - 805e0d66: 02f00793 li a5,47 - 805e0d6a: 08a7e063 bltu a5,a0,805e0dea + 805e0d76: 02f00793 li a5,47 + 805e0d7a: 08a7e063 bltu a5,a0,805e0dfa { - 805e0d6e: 7179 addi sp,sp,-48 - 805e0d70: ec26 sd s1,24(sp) - 805e0d72: f406 sd ra,40(sp) - 805e0d74: f022 sd s0,32(sp) - 805e0d76: e84a sd s2,16(sp) - 805e0d78: e44e sd s3,8(sp) - 805e0d7a: e052 sd s4,0(sp) + 805e0d7e: 7179 addi sp,sp,-48 + 805e0d80: ec26 sd s1,24(sp) + 805e0d82: f406 sd ra,40(sp) + 805e0d84: f022 sd s0,32(sp) + 805e0d86: e84a sd s2,16(sp) + 805e0d88: e44e sd s3,8(sp) + 805e0d8a: e052 sd s4,0(sp) if(number < 0 || number >= FPIOA_NUM_IO || function < 0 || function >= FUNC_MAX) - 805e0d7c: 0ff00793 li a5,255 - 805e0d80: 84ae mv s1,a1 - 805e0d82: 06b7e663 bltu a5,a1,805e0dee + 805e0d8c: 0ff00793 li a5,255 + 805e0d90: 84ae mv s1,a1 + 805e0d92: 06b7e663 bltu a5,a1,805e0dfe return -1; if(function == FUNC_RESV0) - 805e0d86: 07800793 li a5,120 - 805e0d8a: 8a2a mv s4,a0 - 805e0d8c: 4401 li s0,0 + 805e0d96: 07800793 li a5,120 + 805e0d9a: 8a2a mv s4,a0 + 805e0d9c: 4401 li s0,0 return 0; } /* Compare all IO */ for(index = 0; index < FPIOA_NUM_IO; index++) { if((fpioa->io[index].ch_sel == function) && (index != number)) - 805e0d8e: 502b09b7 lui s3,0x502b0 + 805e0d9e: 502b09b7 lui s3,0x502b0 for(index = 0; index < FPIOA_NUM_IO; index++) - 805e0d92: 03000913 li s2,48 + 805e0da2: 03000913 li s2,48 if(function == FUNC_RESV0) - 805e0d96: 02f58163 beq a1,a5,805e0db8 + 805e0da6: 02f58163 beq a1,a5,805e0dc8 if((fpioa->io[index].ch_sel == function) && (index != number)) - 805e0d9a: 0004071b sext.w a4,s0 - 805e0d9e: 00271793 slli a5,a4,0x2 - 805e0da2: 97ce add a5,a5,s3 - 805e0da4: 439c lw a5,0(a5) - 805e0da6: 2405 addiw s0,s0,1 - 805e0da8: 0ff7f793 andi a5,a5,255 - 805e0dac: 02978363 beq a5,s1,805e0dd2 + 805e0daa: 0004071b sext.w a4,s0 + 805e0dae: 00271793 slli a5,a4,0x2 + 805e0db2: 97ce add a5,a5,s3 + 805e0db4: 439c lw a5,0(a5) + 805e0db6: 2405 addiw s0,s0,1 + 805e0db8: 0ff7f793 andi a5,a5,255 + 805e0dbc: 02978363 beq a5,s1,805e0de2 for(index = 0; index < FPIOA_NUM_IO; index++) - 805e0db0: ff2415e3 bne s0,s2,805e0d9a + 805e0dc0: ff2415e3 bne s0,s2,805e0daa fpioa_set_function_raw(index, FUNC_RESV0); } fpioa_set_function_raw(number, function); - 805e0db4: 85a6 mv a1,s1 - 805e0db6: 8552 mv a0,s4 - 805e0db8: 00000097 auipc ra,0x0 - 805e0dbc: f74080e7 jalr -140(ra) # 805e0d2c + 805e0dc4: 85a6 mv a1,s1 + 805e0dc6: 8552 mv a0,s4 + 805e0dc8: 00000097 auipc ra,0x0 + 805e0dcc: f74080e7 jalr -140(ra) # 805e0d3c return 0; - 805e0dc0: 4501 li a0,0 + 805e0dd0: 4501 li a0,0 } - 805e0dc2: 70a2 ld ra,40(sp) - 805e0dc4: 7402 ld s0,32(sp) - 805e0dc6: 64e2 ld s1,24(sp) - 805e0dc8: 6942 ld s2,16(sp) - 805e0dca: 69a2 ld s3,8(sp) - 805e0dcc: 6a02 ld s4,0(sp) - 805e0dce: 6145 addi sp,sp,48 - 805e0dd0: 8082 ret + 805e0dd2: 70a2 ld ra,40(sp) + 805e0dd4: 7402 ld s0,32(sp) + 805e0dd6: 64e2 ld s1,24(sp) + 805e0dd8: 6942 ld s2,16(sp) + 805e0dda: 69a2 ld s3,8(sp) + 805e0ddc: 6a02 ld s4,0(sp) + 805e0dde: 6145 addi sp,sp,48 + 805e0de0: 8082 ret fpioa_set_function_raw(index, FUNC_RESV0); - 805e0dd2: 07800593 li a1,120 - 805e0dd6: 853a mv a0,a4 + 805e0de2: 07800593 li a1,120 + 805e0de6: 853a mv a0,a4 if((fpioa->io[index].ch_sel == function) && (index != number)) - 805e0dd8: fd470ce3 beq a4,s4,805e0db0 + 805e0de8: fd470ce3 beq a4,s4,805e0dc0 fpioa_set_function_raw(index, FUNC_RESV0); - 805e0ddc: 00000097 auipc ra,0x0 - 805e0de0: f50080e7 jalr -176(ra) # 805e0d2c + 805e0dec: 00000097 auipc ra,0x0 + 805e0df0: f50080e7 jalr -176(ra) # 805e0d3c for(index = 0; index < FPIOA_NUM_IO; index++) - 805e0de4: fb241be3 bne s0,s2,805e0d9a - 805e0de8: b7f1 j 805e0db4 + 805e0df4: fb241be3 bne s0,s2,805e0daa + 805e0df8: b7f1 j 805e0dc4 return -1; - 805e0dea: 557d li a0,-1 + 805e0dfa: 557d li a0,-1 } - 805e0dec: 8082 ret + 805e0dfc: 8082 ret return -1; - 805e0dee: 557d li a0,-1 - 805e0df0: bfc9 j 805e0dc2 + 805e0dfe: 557d li a0,-1 + 805e0e00: bfc9 j 805e0dd2 -00000000805e0df2 : +00000000805e0e02 : } int fpioa_get_io_by_function(fpioa_function_t function) { int index = 0; for(index = 0; index < FPIOA_NUM_IO; index++) - 805e0df2: 4781 li a5,0 + 805e0e02: 4781 li a5,0 { if(fpioa->io[index].ch_sel == function) - 805e0df4: 502b06b7 lui a3,0x502b0 + 805e0e04: 502b06b7 lui a3,0x502b0 for(index = 0; index < FPIOA_NUM_IO; index++) - 805e0df8: 03000613 li a2,48 - 805e0dfc: a021 j 805e0e04 - 805e0dfe: 2785 addiw a5,a5,1 - 805e0e00: 00c78c63 beq a5,a2,805e0e18 + 805e0e08: 03000613 li a2,48 + 805e0e0c: a021 j 805e0e14 + 805e0e0e: 2785 addiw a5,a5,1 + 805e0e10: 00c78c63 beq a5,a2,805e0e28 if(fpioa->io[index].ch_sel == function) - 805e0e04: 00279713 slli a4,a5,0x2 - 805e0e08: 9736 add a4,a4,a3 - 805e0e0a: 4318 lw a4,0(a4) - 805e0e0c: 0ff77713 andi a4,a4,255 - 805e0e10: fea717e3 bne a4,a0,805e0dfe + 805e0e14: 00279713 slli a4,a5,0x2 + 805e0e18: 9736 add a4,a4,a3 + 805e0e1a: 4318 lw a4,0(a4) + 805e0e1c: 0ff77713 andi a4,a4,255 + 805e0e20: fea717e3 bne a4,a0,805e0e0e return index; } return -1; } - 805e0e14: 853e mv a0,a5 - 805e0e16: 8082 ret + 805e0e24: 853e mv a0,a5 + 805e0e26: 8082 ret return -1; - 805e0e18: 57fd li a5,-1 + 805e0e28: 57fd li a5,-1 } - 805e0e1a: 853e mv a0,a5 - 805e0e1c: 8082 ret + 805e0e2a: 853e mv a0,a5 + 805e0e2c: 8082 ret -00000000805e0e1e : +00000000805e0e2e : static gpiohs_pin_instance_t pin_instance[32]; */ void set_bit(volatile uint32_t *bits, uint32_t mask, uint32_t value) { uint32_t org = (*bits) & ~mask; - 805e0e1e: 411c lw a5,0(a0) - 805e0e20: 2781 sext.w a5,a5 + 805e0e2e: 411c lw a5,0(a0) + 805e0e30: 2781 sext.w a5,a5 *bits = org | (value & mask); - 805e0e22: 8e3d xor a2,a2,a5 - 805e0e24: 8df1 and a1,a1,a2 - 805e0e26: 8fad xor a5,a5,a1 - 805e0e28: c11c sw a5,0(a0) + 805e0e32: 8e3d xor a2,a2,a5 + 805e0e34: 8df1 and a1,a1,a2 + 805e0e36: 8fad xor a5,a5,a1 + 805e0e38: c11c sw a5,0(a0) } - 805e0e2a: 8082 ret + 805e0e3a: 8082 ret -00000000805e0e2c : +00000000805e0e3c : void set_bit_offset(volatile uint32_t *bits, uint32_t mask, size_t offset, uint32_t value) { set_bit(bits, mask << offset, value << offset); - 805e0e2c: 0006079b sext.w a5,a2 - 805e0e30: 00f6963b sllw a2,a3,a5 - 805e0e34: 00f595bb sllw a1,a1,a5 - 805e0e38: 00000317 auipc t1,0x0 - 805e0e3c: fe630067 jr -26(t1) # 805e0e1e + 805e0e3c: 0006079b sext.w a5,a2 + 805e0e40: 00f6963b sllw a2,a3,a5 + 805e0e44: 00f595bb sllw a1,a1,a5 + 805e0e48: 00000317 auipc t1,0x0 + 805e0e4c: fe630067 jr -26(t1) # 805e0e2e -00000000805e0e40 : +00000000805e0e50 : } void set_gpio_bit(volatile uint32_t *bits, size_t offset, uint32_t value) { set_bit_offset(bits, 1, offset, value); - 805e0e40: 86b2 mv a3,a2 - 805e0e42: 862e mv a2,a1 - 805e0e44: 4585 li a1,1 - 805e0e46: 00000317 auipc t1,0x0 - 805e0e4a: fe630067 jr -26(t1) # 805e0e2c + 805e0e50: 86b2 mv a3,a2 + 805e0e52: 862e mv a2,a1 + 805e0e54: 4585 li a1,1 + 805e0e56: 00000317 auipc t1,0x0 + 805e0e5a: fe630067 jr -26(t1) # 805e0e3c -00000000805e0e4e : +00000000805e0e5e : } uint32_t get_bit(volatile uint32_t *bits, uint32_t mask, size_t offset) { return ((*bits) & (mask << offset)) >> offset; - 805e0e4e: 411c lw a5,0(a0) - 805e0e50: 2601 sext.w a2,a2 - 805e0e52: 00c595bb sllw a1,a1,a2 - 805e0e56: 2781 sext.w a5,a5 - 805e0e58: 8fed and a5,a5,a1 + 805e0e5e: 411c lw a5,0(a0) + 805e0e60: 2601 sext.w a2,a2 + 805e0e62: 00c595bb sllw a1,a1,a2 + 805e0e66: 2781 sext.w a5,a5 + 805e0e68: 8fed and a5,a5,a1 } - 805e0e5a: 00c7d53b srlw a0,a5,a2 - 805e0e5e: 8082 ret + 805e0e6a: 00c7d53b srlw a0,a5,a2 + 805e0e6e: 8082 ret -00000000805e0e60 : +00000000805e0e70 : uint32_t get_gpio_bit(volatile uint32_t *bits, size_t offset) { return get_bit(bits, 1, offset); - 805e0e60: 862e mv a2,a1 - 805e0e62: 4585 li a1,1 - 805e0e64: 00000317 auipc t1,0x0 - 805e0e68: fea30067 jr -22(t1) # 805e0e4e + 805e0e70: 862e mv a2,a1 + 805e0e72: 4585 li a1,1 + 805e0e74: 00000317 auipc t1,0x0 + 805e0e78: fea30067 jr -22(t1) # 805e0e5e -00000000805e0e6c : +00000000805e0e7c : void gpiohs_set_drive_mode(uint8_t pin, gpio_drive_mode_t mode) { - 805e0e6c: 1101 addi sp,sp,-32 - 805e0e6e: e426 sd s1,8(sp) - 805e0e70: 84aa mv s1,a0 + 805e0e7c: 1101 addi sp,sp,-32 + 805e0e7e: e426 sd s1,8(sp) + 805e0e80: 84aa mv s1,a0 int io_number = fpioa_get_io_by_function(FUNC_GPIOHS0 + pin); - 805e0e72: 0561 addi a0,a0,24 + 805e0e82: 0561 addi a0,a0,24 { - 805e0e74: e822 sd s0,16(sp) - 805e0e76: ec06 sd ra,24(sp) - 805e0e78: 842e mv s0,a1 + 805e0e84: e822 sd s0,16(sp) + 805e0e86: ec06 sd ra,24(sp) + 805e0e88: 842e mv s0,a1 int io_number = fpioa_get_io_by_function(FUNC_GPIOHS0 + pin); - 805e0e7a: 00000097 auipc ra,0x0 - 805e0e7e: f78080e7 jalr -136(ra) # 805e0df2 + 805e0e8a: 00000097 auipc ra,0x0 + 805e0e8e: f78080e7 jalr -136(ra) # 805e0e02 fpioa_pull_t pull = FPIOA_PULL_NONE; uint32_t dir = 0; switch(mode) - 805e0e82: fff4059b addiw a1,s0,-1 - 805e0e86: 0005871b sext.w a4,a1 - 805e0e8a: 4789 li a5,2 - 805e0e8c: 02e7fd63 bleu a4,a5,805e0ec6 + 805e0e92: fff4059b addiw a1,s0,-1 + 805e0e96: 0005871b sext.w a4,a1 + 805e0e9a: 4789 li a5,2 + 805e0e9c: 02e7fd63 bleu a4,a5,805e0ed6 break; default: break; } fpioa_set_io_pull(io_number, pull); - 805e0e90: 4581 li a1,0 - 805e0e92: 00000097 auipc ra,0x0 - 805e0e96: e3a080e7 jalr -454(ra) # 805e0ccc + 805e0ea0: 4581 li a1,0 + 805e0ea2: 00000097 auipc ra,0x0 + 805e0ea6: e3a080e7 jalr -454(ra) # 805e0cdc volatile uint32_t *reg = dir ? gpiohs->output_en.u32 : gpiohs->input_en.u32; - 805e0e9a: 38001537 lui a0,0x38001 - 805e0e9e: 00450413 addi s0,a0,4 # 38001004 <_start-0x485deffc> + 805e0eaa: 38001537 lui a0,0x38001 + 805e0eae: 00450413 addi s0,a0,4 # 38001004 <_start-0x485deffc> volatile uint32_t *reg_d = !dir ? gpiohs->output_en.u32 : gpiohs->input_en.u32; - 805e0ea2: 0521 addi a0,a0,8 + 805e0eb2: 0521 addi a0,a0,8 set_gpio_bit(reg_d, pin, 0); - 805e0ea4: 85a6 mv a1,s1 - 805e0ea6: 4601 li a2,0 - 805e0ea8: 00000097 auipc ra,0x0 - 805e0eac: f98080e7 jalr -104(ra) # 805e0e40 + 805e0eb4: 85a6 mv a1,s1 + 805e0eb6: 4601 li a2,0 + 805e0eb8: 00000097 auipc ra,0x0 + 805e0ebc: f98080e7 jalr -104(ra) # 805e0e50 set_gpio_bit(reg, pin, 1); - 805e0eb0: 8522 mv a0,s0 + 805e0ec0: 8522 mv a0,s0 } - 805e0eb2: 6442 ld s0,16(sp) - 805e0eb4: 60e2 ld ra,24(sp) + 805e0ec2: 6442 ld s0,16(sp) + 805e0ec4: 60e2 ld ra,24(sp) set_gpio_bit(reg, pin, 1); - 805e0eb6: 85a6 mv a1,s1 + 805e0ec6: 85a6 mv a1,s1 } - 805e0eb8: 64a2 ld s1,8(sp) + 805e0ec8: 64a2 ld s1,8(sp) set_gpio_bit(reg, pin, 1); - 805e0eba: 4605 li a2,1 + 805e0eca: 4605 li a2,1 } - 805e0ebc: 6105 addi sp,sp,32 + 805e0ecc: 6105 addi sp,sp,32 set_gpio_bit(reg, pin, 1); - 805e0ebe: 00000317 auipc t1,0x0 - 805e0ec2: f8230067 jr -126(t1) # 805e0e40 - 805e0ec6: 1582 slli a1,a1,0x20 - 805e0ec8: 81f9 srli a1,a1,0x1e + 805e0ece: 00000317 auipc t1,0x0 + 805e0ed2: f8230067 jr -126(t1) # 805e0e50 + 805e0ed6: 1582 slli a1,a1,0x20 + 805e0ed8: 81f9 srli a1,a1,0x1e fpioa_set_io_pull(io_number, pull); - 805e0eca: 00001797 auipc a5,0x1 - 805e0ece: 91e78793 addi a5,a5,-1762 # 805e17e8 - 805e0ed2: 00001717 auipc a4,0x1 - 805e0ed6: 92670713 addi a4,a4,-1754 # 805e17f8 - 805e0eda: 972e add a4,a4,a1 - 805e0edc: 95be add a1,a1,a5 - 805e0ede: 418c lw a1,0(a1) - 805e0ee0: 4300 lw s0,0(a4) - 805e0ee2: 00000097 auipc ra,0x0 - 805e0ee6: dea080e7 jalr -534(ra) # 805e0ccc + 805e0eda: 00001797 auipc a5,0x1 + 805e0ede: 91e78793 addi a5,a5,-1762 # 805e17f8 + 805e0ee2: 00001717 auipc a4,0x1 + 805e0ee6: 92670713 addi a4,a4,-1754 # 805e1808 + 805e0eea: 972e add a4,a4,a1 + 805e0eec: 95be add a1,a1,a5 + 805e0eee: 418c lw a1,0(a1) + 805e0ef0: 4300 lw s0,0(a4) + 805e0ef2: 00000097 auipc ra,0x0 + 805e0ef6: dea080e7 jalr -534(ra) # 805e0cdc volatile uint32_t *reg = dir ? gpiohs->output_en.u32 : gpiohs->input_en.u32; - 805e0eea: 38001537 lui a0,0x38001 - 805e0eee: c409 beqz s0,805e0ef8 - 805e0ef0: 00850413 addi s0,a0,8 # 38001008 <_start-0x485deff8> + 805e0efa: 38001537 lui a0,0x38001 + 805e0efe: c409 beqz s0,805e0f08 + 805e0f00: 00850413 addi s0,a0,8 # 38001008 <_start-0x485deff8> volatile uint32_t *reg_d = !dir ? gpiohs->output_en.u32 : gpiohs->input_en.u32; - 805e0ef4: 0511 addi a0,a0,4 - 805e0ef6: b77d j 805e0ea4 + 805e0f04: 0511 addi a0,a0,4 + 805e0f06: b77d j 805e0eb4 volatile uint32_t *reg = dir ? gpiohs->output_en.u32 : gpiohs->input_en.u32; - 805e0ef8: 00450413 addi s0,a0,4 + 805e0f08: 00450413 addi s0,a0,4 volatile uint32_t *reg_d = !dir ? gpiohs->output_en.u32 : gpiohs->input_en.u32; - 805e0efc: 0521 addi a0,a0,8 - 805e0efe: b75d j 805e0ea4 + 805e0f0c: 0521 addi a0,a0,8 + 805e0f0e: b75d j 805e0eb4 -00000000805e0f00 : +00000000805e0f10 : gpio_pin_value_t gpiohs_get_pin(uint8_t pin) { return get_gpio_bit(gpiohs->input_val.u32, pin); - 805e0f00: 85aa mv a1,a0 - 805e0f02: 38001537 lui a0,0x38001 - 805e0f06: 00000317 auipc t1,0x0 - 805e0f0a: f5a30067 jr -166(t1) # 805e0e60 + 805e0f10: 85aa mv a1,a0 + 805e0f12: 38001537 lui a0,0x38001 + 805e0f16: 00000317 auipc t1,0x0 + 805e0f1a: f5a30067 jr -166(t1) # 805e0e70 -00000000805e0f0e : +00000000805e0f1e : val += app_flash_ptr[addr+1] << 8; - 805e0f0e: 0015079b addiw a5,a0,1 + 805e0f1e: 0015079b addiw a5,a0,1 val += app_flash_ptr[addr+2] << 16; - 805e0f12: 0025069b addiw a3,a0,2 + 805e0f22: 0025069b addiw a3,a0,2 val += app_flash_ptr[addr+1] << 8; - 805e0f16: 1782 slli a5,a5,0x20 + 805e0f26: 1782 slli a5,a5,0x20 val += app_flash_ptr[addr+2] << 16; - 805e0f18: 1682 slli a3,a3,0x20 + 805e0f28: 1682 slli a3,a3,0x20 uint32_t val = app_flash_ptr[addr]; - 805e0f1a: 54000737 lui a4,0x54000 + 805e0f2a: 54000737 lui a4,0x54000 val += app_flash_ptr[addr+3] << 24; - 805e0f1e: 0035061b addiw a2,a0,3 + 805e0f2e: 0035061b addiw a2,a0,3 val += app_flash_ptr[addr+1] << 8; - 805e0f22: 9381 srli a5,a5,0x20 + 805e0f32: 9381 srli a5,a5,0x20 val += app_flash_ptr[addr+2] << 16; - 805e0f24: 9281 srli a3,a3,0x20 + 805e0f34: 9281 srli a3,a3,0x20 val += app_flash_ptr[addr+1] << 8; - 805e0f26: 97ba add a5,a5,a4 + 805e0f36: 97ba add a5,a5,a4 val += app_flash_ptr[addr+2] << 16; - 805e0f28: 96ba add a3,a3,a4 + 805e0f38: 96ba add a3,a3,a4 uint32_t val = app_flash_ptr[addr]; - 805e0f2a: 1502 slli a0,a0,0x20 + 805e0f3a: 1502 slli a0,a0,0x20 val += app_flash_ptr[addr+3] << 24; - 805e0f2c: 1602 slli a2,a2,0x20 + 805e0f3c: 1602 slli a2,a2,0x20 val += app_flash_ptr[addr+1] << 8; - 805e0f2e: 0007c783 lbu a5,0(a5) + 805e0f3e: 0007c783 lbu a5,0(a5) val += app_flash_ptr[addr+2] << 16; - 805e0f32: 0006c683 lbu a3,0(a3) # 502b0000 <_start-0x30330000> + 805e0f42: 0006c683 lbu a3,0(a3) # 502b0000 <_start-0x30330000> val += app_flash_ptr[addr+3] << 24; - 805e0f36: 9201 srli a2,a2,0x20 + 805e0f46: 9201 srli a2,a2,0x20 uint32_t val = app_flash_ptr[addr]; - 805e0f38: 9101 srli a0,a0,0x20 - 805e0f3a: 953a add a0,a0,a4 + 805e0f48: 9101 srli a0,a0,0x20 + 805e0f4a: 953a add a0,a0,a4 val += app_flash_ptr[addr+3] << 24; - 805e0f3c: 9732 add a4,a4,a2 + 805e0f4c: 9732 add a4,a4,a2 uint32_t val = app_flash_ptr[addr]; - 805e0f3e: 00054603 lbu a2,0(a0) # 38001000 <_start-0x485df000> + 805e0f4e: 00054603 lbu a2,0(a0) # 38001000 <_start-0x485df000> val += app_flash_ptr[addr+3] << 24; - 805e0f42: 00074503 lbu a0,0(a4) # 54000000 <_start-0x2c5e0000> + 805e0f52: 00074503 lbu a0,0(a4) # 54000000 <_start-0x2c5e0000> val += app_flash_ptr[addr+1] << 8; - 805e0f46: 0087979b slliw a5,a5,0x8 + 805e0f56: 0087979b slliw a5,a5,0x8 val += app_flash_ptr[addr+2] << 16; - 805e0f4a: 0106971b slliw a4,a3,0x10 - 805e0f4e: 9fb9 addw a5,a5,a4 - 805e0f50: 9fb1 addw a5,a5,a2 + 805e0f5a: 0106971b slliw a4,a3,0x10 + 805e0f5e: 9fb9 addw a5,a5,a4 + 805e0f60: 9fb1 addw a5,a5,a2 val += app_flash_ptr[addr+3] << 24; - 805e0f52: 0185151b slliw a0,a0,0x18 + 805e0f62: 0185151b slliw a0,a0,0x18 } - 805e0f56: 9d3d addw a0,a0,a5 - 805e0f58: 8082 ret + 805e0f66: 9d3d addw a0,a0,a5 + 805e0f68: 8082 ret -00000000805e0f5a : +00000000805e0f6a : { - 805e0f5a: 711d addi sp,sp,-96 - 805e0f5c: fc4e sd s3,56(sp) + 805e0f6a: 711d addi sp,sp,-96 + 805e0f6c: fc4e sd s3,56(sp) int size = cfg_size+5; - 805e0f5e: 00001997 auipc s3,0x1 - 805e0f62: fd298993 addi s3,s3,-46 # 805e1f30 + 805e0f6e: 00001997 auipc s3,0x1 + 805e0f72: fd298993 addi s3,s3,-46 # 805e1f40 { - 805e0f66: f05a sd s6,32(sp) + 805e0f76: f05a sd s6,32(sp) int size = cfg_size+5; - 805e0f68: 0009ab03 lw s6,0(s3) + 805e0f78: 0009ab03 lw s6,0(s3) sha256_init(&context, size); - 805e0f6c: 00001517 auipc a0,0x1 - 805e0f70: 04c50513 addi a0,a0,76 # 805e1fb8 + 805e0f7c: 00001517 auipc a0,0x1 + 805e0f80: 07c50513 addi a0,a0,124 # 805e1ff8 { - 805e0f74: e466 sd s9,8(sp) + 805e0f84: e466 sd s9,8(sp) int size = cfg_size+5; - 805e0f76: 2b15 addiw s6,s6,5 + 805e0f86: 2b15 addiw s6,s6,5 sha256_init(&context, size); - 805e0f78: 85da mv a1,s6 + 805e0f88: 85da mv a1,s6 { - 805e0f7a: ec86 sd ra,88(sp) - 805e0f7c: e8a2 sd s0,80(sp) - 805e0f7e: e4a6 sd s1,72(sp) - 805e0f80: e0ca sd s2,64(sp) - 805e0f82: f852 sd s4,48(sp) - 805e0f84: f456 sd s5,40(sp) - 805e0f86: ec5e sd s7,24(sp) - 805e0f88: e862 sd s8,16(sp) - 805e0f8a: 00001c97 auipc s9,0x1 - 805e0f8e: f86c8c93 addi s9,s9,-122 # 805e1f10 + 805e0f8a: ec86 sd ra,88(sp) + 805e0f8c: e8a2 sd s0,80(sp) + 805e0f8e: e4a6 sd s1,72(sp) + 805e0f90: e0ca sd s2,64(sp) + 805e0f92: f852 sd s4,48(sp) + 805e0f94: f456 sd s5,40(sp) + 805e0f96: ec5e sd s7,24(sp) + 805e0f98: e862 sd s8,16(sp) + 805e0f9a: 00001c97 auipc s9,0x1 + 805e0f9e: f86c8c93 addi s9,s9,-122 # 805e1f20 sha256_init(&context, size); - 805e0f92: 00000097 auipc ra,0x0 - 805e0f96: 184080e7 jalr 388(ra) # 805e1116 + 805e0fa2: 00000097 auipc ra,0x0 + 805e0fa6: 184080e7 jalr 388(ra) # 805e1126 while (size > 0) { - 805e0f9a: 09605663 blez s6,805e1026 + 805e0faa: 09605663 blez s6,805e1036 uint32_t idx = 0; - 805e0f9e: 4b81 li s7,0 - 805e0fa0: 00001c97 auipc s9,0x1 - 805e0fa4: f70c8c93 addi s9,s9,-144 # 805e1f10 - 805e0fa8: 00001917 auipc s2,0x1 - 805e0fac: b6990913 addi s2,s2,-1175 # 805e1b11 + 805e0fae: 4b81 li s7,0 + 805e0fb0: 00001c97 auipc s9,0x1 + 805e0fb4: f70c8c93 addi s9,s9,-144 # 805e1f20 + 805e0fb8: 00001917 auipc s2,0x1 + 805e0fbc: b6990913 addi s2,s2,-1175 # 805e1b21 sz = (size >= 1024) ? 1024 : size; - 805e0fb0: 40000493 li s1,1024 - 805e0fb4: 00001c17 auipc s8,0x1 - 805e0fb8: b5cc0c13 addi s8,s8,-1188 # 805e1b10 + 805e0fc0: 40000493 li s1,1024 + 805e0fc4: 00001c17 auipc s8,0x1 + 805e0fc8: b5cc0c13 addi s8,s8,-1188 # 805e1b20 buffer[n] = app_flash_ptr[cfg_address + idx + n]; - 805e0fbc: 54000a37 lui s4,0x54000 + 805e0fcc: 54000a37 lui s4,0x54000 sha256_update(&context, buffer, sz); - 805e0fc0: 00001417 auipc s0,0x1 - 805e0fc4: ff840413 addi s0,s0,-8 # 805e1fb8 + 805e0fd0: 00001417 auipc s0,0x1 + 805e0fd4: 02840413 addi s0,s0,40 # 805e1ff8 sz = (size >= 1024) ? 1024 : size; - 805e0fc8: 87da mv a5,s6 - 805e0fca: 0164d463 ble s6,s1,805e0fd2 - 805e0fce: 40000793 li a5,1024 + 805e0fd8: 87da mv a5,s6 + 805e0fda: 0164d463 ble s6,s1,805e0fe2 + 805e0fde: 40000793 li a5,1024 buffer[n] = app_flash_ptr[cfg_address + idx + n]; - 805e0fd2: 000ca683 lw a3,0(s9) - 805e0fd6: fff7861b addiw a2,a5,-1 - 805e0fda: 1602 slli a2,a2,0x20 - 805e0fdc: 9201 srli a2,a2,0x20 - 805e0fde: 017686bb addw a3,a3,s7 + 805e0fe2: 000ca683 lw a3,0(s9) + 805e0fe6: fff7861b addiw a2,a5,-1 + 805e0fea: 1602 slli a2,a2,0x20 + 805e0fec: 9201 srli a2,a2,0x20 + 805e0fee: 017686bb addw a3,a3,s7 sz = (size >= 1024) ? 1024 : size; - 805e0fe2: 00078a9b sext.w s5,a5 + 805e0ff2: 00078a9b sext.w s5,a5 for (int n=0; n - 805e0ff0: 418686bb subw a3,a3,s8 - 805e0ff4: 00e687bb addw a5,a3,a4 - 805e0ff8: 1782 slli a5,a5,0x20 - 805e0ffa: 9381 srli a5,a5,0x20 - 805e0ffc: 97d2 add a5,a5,s4 - 805e0ffe: 0007c783 lbu a5,0(a5) - 805e1002: 0705 addi a4,a4,1 - 805e1004: fef70fa3 sb a5,-1(a4) + 805e0ff8: 00001717 auipc a4,0x1 + 805e0ffc: b2870713 addi a4,a4,-1240 # 805e1b20 + 805e1000: 418686bb subw a3,a3,s8 + 805e1004: 00e687bb addw a5,a3,a4 + 805e1008: 1782 slli a5,a5,0x20 + 805e100a: 9381 srli a5,a5,0x20 + 805e100c: 97d2 add a5,a5,s4 + 805e100e: 0007c783 lbu a5,0(a5) + 805e1012: 0705 addi a4,a4,1 + 805e1014: fef70fa3 sb a5,-1(a4) for (int n=0; n + 805e1018: fec716e3 bne a4,a2,805e1004 sha256_update(&context, buffer, sz); - 805e100c: 8656 mv a2,s5 - 805e100e: 85e2 mv a1,s8 - 805e1010: 8522 mv a0,s0 + 805e101c: 8656 mv a2,s5 + 805e101e: 85e2 mv a1,s8 + 805e1020: 8522 mv a0,s0 size -= sz; - 805e1012: 415b0b3b subw s6,s6,s5 + 805e1022: 415b0b3b subw s6,s6,s5 sha256_update(&context, buffer, sz); - 805e1016: 00000097 auipc ra,0x0 - 805e101a: 188080e7 jalr 392(ra) # 805e119e + 805e1026: 00000097 auipc ra,0x0 + 805e102a: 188080e7 jalr 392(ra) # 805e11ae idx += sz; - 805e101e: 015b8bbb addw s7,s7,s5 + 805e102e: 015b8bbb addw s7,s7,s5 while (size > 0) { - 805e1022: fb6043e3 bgtz s6,805e0fc8 + 805e1032: fb6043e3 bgtz s6,805e0fd8 sha256_final(&context, hash); - 805e1026: 00001597 auipc a1,0x1 - 805e102a: f1a58593 addi a1,a1,-230 # 805e1f40 - 805e102e: 00001517 auipc a0,0x1 - 805e1032: f8a50513 addi a0,a0,-118 # 805e1fb8 - 805e1036: 00000097 auipc ra,0x0 - 805e103a: 20a080e7 jalr 522(ra) # 805e1240 + 805e1036: 00001597 auipc a1,0x1 + 805e103a: f1a58593 addi a1,a1,-230 # 805e1f50 + 805e103e: 00001517 auipc a0,0x1 + 805e1042: fba50513 addi a0,a0,-70 # 805e1ff8 + 805e1046: 00000097 auipc ra,0x0 + 805e104a: 20a080e7 jalr 522(ra) # 805e1250 offset = cfg_address + cfg_size + 5; - 805e103e: 000ca683 lw a3,0(s9) - 805e1042: 0009a783 lw a5,0(s3) - 805e1046: 00001617 auipc a2,0x1 - 805e104a: a9260613 addi a2,a2,-1390 # 805e1ad8 - 805e104e: 00001517 auipc a0,0x1 - 805e1052: aaa50513 addi a0,a0,-1366 # 805e1af8 - 805e1056: 9ebd addw a3,a3,a5 - 805e1058: 2695 addiw a3,a3,5 - 805e105a: 8732 mv a4,a2 - 805e105c: 9e91 subw a3,a3,a2 + 805e104e: 000ca683 lw a3,0(s9) + 805e1052: 0009a783 lw a5,0(s3) + 805e1056: 00001617 auipc a2,0x1 + 805e105a: a9260613 addi a2,a2,-1390 # 805e1ae8 + 805e105e: 00001517 auipc a0,0x1 + 805e1062: aaa50513 addi a0,a0,-1366 # 805e1b08 + 805e1066: 9ebd addw a3,a3,a5 + 805e1068: 2695 addiw a3,a3,5 + 805e106a: 8732 mv a4,a2 + 805e106c: 9e91 subw a3,a3,a2 app_hash[n] = app_flash_ptr[offset + n]; - 805e105e: 540005b7 lui a1,0x54000 - 805e1062: 00e687bb addw a5,a3,a4 - 805e1066: 1782 slli a5,a5,0x20 - 805e1068: 9381 srli a5,a5,0x20 - 805e106a: 97ae add a5,a5,a1 - 805e106c: 0007c783 lbu a5,0(a5) - 805e1070: 0705 addi a4,a4,1 - 805e1072: fef70fa3 sb a5,-1(a4) + 805e106e: 540005b7 lui a1,0x54000 + 805e1072: 00e687bb addw a5,a3,a4 + 805e1076: 1782 slli a5,a5,0x20 + 805e1078: 9381 srli a5,a5,0x20 + 805e107a: 97ae add a5,a5,a1 + 805e107c: 0007c783 lbu a5,0(a5) + 805e1080: 0705 addi a4,a4,1 + 805e1082: fef70fa3 sb a5,-1(a4) for (int n=0; n - 805e107a: 00001797 auipc a5,0x1 - 805e107e: ec678793 addi a5,a5,-314 # 805e1f40 - 805e1082: 00001597 auipc a1,0x1 - 805e1086: ede58593 addi a1,a1,-290 # 805e1f60 - 805e108a: a019 j 805e1090 + 805e1086: fee516e3 bne a0,a4,805e1072 + 805e108a: 00001797 auipc a5,0x1 + 805e108e: ec678793 addi a5,a5,-314 # 805e1f50 + 805e1092: 00001597 auipc a1,0x1 + 805e1096: ede58593 addi a1,a1,-290 # 805e1f70 + 805e109a: a019 j 805e10a0 for (idx=0; idx + 805e109c: 04f58e63 beq a1,a5,805e10f8 if (hash[idx] != app_hash[idx]) { - 805e1090: 0007c683 lbu a3,0(a5) - 805e1094: 00064703 lbu a4,0(a2) - 805e1098: 0785 addi a5,a5,1 - 805e109a: 0605 addi a2,a2,1 - 805e109c: fee688e3 beq a3,a4,805e108c + 805e10a0: 0007c683 lbu a3,0(a5) + 805e10a4: 00064703 lbu a4,0(a2) + 805e10a8: 0785 addi a5,a5,1 + 805e10aa: 0605 addi a2,a2,1 + 805e10ac: fee688e3 beq a3,a4,805e109c LOG("SHA256 error, "); - 805e10a0: 00001797 auipc a5,0x1 - 805e10a4: ec878793 addi a5,a5,-312 # 805e1f68 - 805e10a8: 4388 lw a0,0(a5) - 805e10aa: c115 beqz a0,805e10ce - 805e10ac: 00001797 auipc a5,0x1 - 805e10b0: edc7b783 ld a5,-292(a5) # 805e1f88 <__TMC_END__+0x8> - 805e10b4: 639c ld a5,0(a5) - 805e10b6: 00000517 auipc a0,0x0 - 805e10ba: 75250513 addi a0,a0,1874 # 805e1808 - 805e10be: 9782 jalr a5 - 805e10c0: 0c800513 li a0,200 - 805e10c4: 00000097 auipc ra,0x0 - 805e10c8: 028080e7 jalr 40(ra) # 805e10ec + 805e10b0: 00001797 auipc a5,0x1 + 805e10b4: ec878793 addi a5,a5,-312 # 805e1f78 + 805e10b8: 4388 lw a0,0(a5) + 805e10ba: c115 beqz a0,805e10de + 805e10bc: 00001797 auipc a5,0x1 + 805e10c0: f0c7b783 ld a5,-244(a5) # 805e1fc8 <__TMC_END__+0x8> + 805e10c4: 639c ld a5,0(a5) + 805e10c6: 00000517 auipc a0,0x0 + 805e10ca: 75250513 addi a0,a0,1874 # 805e1818 + 805e10ce: 9782 jalr a5 + 805e10d0: 0c800513 li a0,200 + 805e10d4: 00000097 auipc ra,0x0 + 805e10d8: 028080e7 jalr 40(ra) # 805e10fc return 0; - 805e10cc: 4501 li a0,0 + 805e10dc: 4501 li a0,0 } - 805e10ce: 60e6 ld ra,88(sp) - 805e10d0: 6446 ld s0,80(sp) - 805e10d2: 64a6 ld s1,72(sp) - 805e10d4: 6906 ld s2,64(sp) - 805e10d6: 79e2 ld s3,56(sp) - 805e10d8: 7a42 ld s4,48(sp) - 805e10da: 7aa2 ld s5,40(sp) - 805e10dc: 7b02 ld s6,32(sp) - 805e10de: 6be2 ld s7,24(sp) - 805e10e0: 6c42 ld s8,16(sp) - 805e10e2: 6ca2 ld s9,8(sp) - 805e10e4: 6125 addi sp,sp,96 - 805e10e6: 8082 ret + 805e10de: 60e6 ld ra,88(sp) + 805e10e0: 6446 ld s0,80(sp) + 805e10e2: 64a6 ld s1,72(sp) + 805e10e4: 6906 ld s2,64(sp) + 805e10e6: 79e2 ld s3,56(sp) + 805e10e8: 7a42 ld s4,48(sp) + 805e10ea: 7aa2 ld s5,40(sp) + 805e10ec: 7b02 ld s6,32(sp) + 805e10ee: 6be2 ld s7,24(sp) + 805e10f0: 6c42 ld s8,16(sp) + 805e10f2: 6ca2 ld s9,8(sp) + 805e10f4: 6125 addi sp,sp,96 + 805e10f6: 8082 ret return 1; - 805e10e8: 4505 li a0,1 - 805e10ea: b7d5 j 805e10ce + 805e10f8: 4505 li a0,1 + 805e10fa: b7d5 j 805e10de -00000000805e10ec : +00000000805e10fc : #define BYTESWAP(x) ((ROTR((x), 8) & 0xff00ff00L) | (ROTL((x), 8) & 0x00ff00ffL)) #define BYTESWAP64(x) byteswap64(x) int usleep(uint64_t usec) { uint64_t cycle = read_cycle(); - 805e10ec: b0002773 csrr a4,mcycle + 805e10fc: b0002773 csrr a4,mcycle uint64_t nop_all = usec * DEFAULT_CPU_CLOCK / 1000000UL; - 805e10f0: 173ef7b7 lui a5,0x173ef - 805e10f4: d8078793 addi a5,a5,-640 # 173eed80 <_start-0x691f1280> - 805e10f8: 02f50533 mul a0,a0,a5 - 805e10fc: 000f47b7 lui a5,0xf4 - 805e1100: 24078793 addi a5,a5,576 # f4240 <_start-0x804ebdc0> - 805e1104: 02f55533 divu a0,a0,a5 + 805e1100: 173ef7b7 lui a5,0x173ef + 805e1104: d8078793 addi a5,a5,-640 # 173eed80 <_start-0x691f1280> + 805e1108: 02f50533 mul a0,a0,a5 + 805e110c: 000f47b7 lui a5,0xf4 + 805e1110: 24078793 addi a5,a5,576 # f4240 <_start-0x804ebdc0> + 805e1114: 02f55533 divu a0,a0,a5 while(1) { if(read_cycle() - cycle >= nop_all) - 805e1108: b00027f3 csrr a5,mcycle - 805e110c: 8f99 sub a5,a5,a4 - 805e110e: fea7ede3 bltu a5,a0,805e1108 + 805e1118: b00027f3 csrr a5,mcycle + 805e111c: 8f99 sub a5,a5,a4 + 805e111e: fea7ede3 bltu a5,a0,805e1118 break; } return 0; } - 805e1112: 4501 li a0,0 - 805e1114: 8082 ret + 805e1122: 4501 li a0,0 + 805e1124: 8082 ret -00000000805e1116 : +00000000805e1126 : uint32_t b = (uint32_t)x; return ((uint64_t)BYTESWAP(b) << 32) | (uint64_t)BYTESWAP(a); } void sha256_init(sha256_context_t *context, size_t input_len) { - 805e1116: 1101 addi sp,sp,-32 + 805e1126: 1101 addi sp,sp,-32 //sysctl_clock_enable(SYSCTL_CLOCK_SHA); sysctl->clk_en_cent.apb0_clk_en = 1; - 805e1118: 00001797 auipc a5,0x1 - 805e111c: e787b783 ld a5,-392(a5) # 805e1f90 <__TMC_END__+0x10> + 805e1128: 00001797 auipc a5,0x1 + 805e112c: ea87b783 ld a5,-344(a5) # 805e1fd0 <__TMC_END__+0x10> { - 805e1120: e822 sd s0,16(sp) + 805e1130: e822 sd s0,16(sp) sysctl->clk_en_cent.apb0_clk_en = 1; - 805e1122: 6380 ld s0,0(a5) + 805e1132: 6380 ld s0,0(a5) { - 805e1124: e426 sd s1,8(sp) - 805e1126: e04a sd s2,0(sp) - 805e1128: ec06 sd ra,24(sp) + 805e1134: e426 sd s1,8(sp) + 805e1136: e04a sd s2,0(sp) + 805e1138: ec06 sd ra,24(sp) sysctl->clk_en_cent.apb0_clk_en = 1; - 805e112a: 5418 lw a4,40(s0) + 805e113a: 5418 lw a4,40(s0) sysctl->clk_en_peri.sha_clk_en = 1; - 805e112c: 040006b7 lui a3,0x4000 + 805e113c: 040006b7 lui a3,0x4000 { - 805e1130: 892a mv s2,a0 + 805e1140: 892a mv s2,a0 sysctl->clk_en_cent.apb0_clk_en = 1; - 805e1132: 00876713 ori a4,a4,8 - 805e1136: d418 sw a4,40(s0) + 805e1142: 00876713 ori a4,a4,8 + 805e1146: d418 sw a4,40(s0) sysctl->clk_en_peri.sha_clk_en = 1; - 805e1138: 5458 lw a4,44(s0) + 805e1148: 5458 lw a4,44(s0) //sysctl_reset(SYSCTL_RESET_SHA); sysctl->peri_reset.sha_reset = 1; usleep(10); - 805e113a: 4529 li a0,10 + 805e114a: 4529 li a0,10 { - 805e113c: 84ae mv s1,a1 + 805e114c: 84ae mv s1,a1 sysctl->clk_en_peri.sha_clk_en = 1; - 805e113e: 8f55 or a4,a4,a3 - 805e1140: d458 sw a4,44(s0) + 805e114e: 8f55 or a4,a4,a3 + 805e1150: d458 sw a4,44(s0) sysctl->peri_reset.sha_reset = 1; - 805e1142: 585c lw a5,52(s0) + 805e1152: 585c lw a5,52(s0) sysctl->peri_reset.sha_reset = 0; sha256->sha_num_reg.sha_data_cnt = (uint32_t)((input_len + SHA256_BLOCK_LEN + 8) / SHA256_BLOCK_LEN); - 805e1144: 04848493 addi s1,s1,72 - 805e1148: 8099 srli s1,s1,0x6 + 805e1154: 04848493 addi s1,s1,72 + 805e1158: 8099 srli s1,s1,0x6 sysctl->peri_reset.sha_reset = 1; - 805e114a: 8fd5 or a5,a5,a3 - 805e114c: d85c sw a5,52(s0) + 805e115a: 8fd5 or a5,a5,a3 + 805e115c: d85c sw a5,52(s0) usleep(10); - 805e114e: 00000097 auipc ra,0x0 - 805e1152: f9e080e7 jalr -98(ra) # 805e10ec + 805e115e: 00000097 auipc ra,0x0 + 805e1162: f9e080e7 jalr -98(ra) # 805e10fc sysctl->peri_reset.sha_reset = 0; - 805e1156: 585c lw a5,52(s0) - 805e1158: fc000737 lui a4,0xfc000 - 805e115c: 177d addi a4,a4,-1 - 805e115e: 8ff9 and a5,a5,a4 - 805e1160: d85c sw a5,52(s0) + 805e1166: 585c lw a5,52(s0) + 805e1168: fc000737 lui a4,0xfc000 + 805e116c: 177d addi a4,a4,-1 + 805e116e: 8ff9 and a5,a5,a4 + 805e1170: d85c sw a5,52(s0) sha256->sha_num_reg.sha_data_cnt = (uint32_t)((input_len + SHA256_BLOCK_LEN + 8) / SHA256_BLOCK_LEN); - 805e1162: 502c07b7 lui a5,0x502c0 - 805e1166: 5798 lw a4,40(a5) - 805e1168: 76c1 lui a3,0xffff0 - 805e116a: 14c2 slli s1,s1,0x30 - 805e116c: 8f75 and a4,a4,a3 - 805e116e: 90c1 srli s1,s1,0x30 - 805e1170: 8cd9 or s1,s1,a4 - 805e1172: d784 sw s1,40(a5) + 805e1172: 502c07b7 lui a5,0x502c0 + 805e1176: 5798 lw a4,40(a5) + 805e1178: 76c1 lui a3,0xffff0 + 805e117a: 14c2 slli s1,s1,0x30 + 805e117c: 8f75 and a4,a4,a3 + 805e117e: 90c1 srli s1,s1,0x30 + 805e1180: 8cd9 or s1,s1,a4 + 805e1182: d784 sw s1,40(a5) sha256->sha_function_reg_1.dma_en = 0x0; - 805e1174: 5bd8 lw a4,52(a5) + 805e1184: 5bd8 lw a4,52(a5) sha256->sha_function_reg_0.sha_endian = SHA256_BIG_ENDIAN; - 805e1176: 66c1 lui a3,0x10 + 805e1186: 66c1 lui a3,0x10 sha256->sha_function_reg_1.dma_en = 0x0; - 805e1178: 9b79 andi a4,a4,-2 - 805e117a: dbd8 sw a4,52(a5) + 805e1188: 9b79 andi a4,a4,-2 + 805e118a: dbd8 sw a4,52(a5) sha256->sha_function_reg_0.sha_endian = SHA256_BIG_ENDIAN; - 805e117c: 57d8 lw a4,44(a5) - 805e117e: 8f55 or a4,a4,a3 - 805e1180: d7d8 sw a4,44(a5) + 805e118c: 57d8 lw a4,44(a5) + 805e118e: 8f55 or a4,a4,a3 + 805e1190: d7d8 sw a4,44(a5) sha256->sha_function_reg_0.sha_en = ENABLE_SHA; - 805e1182: 57d8 lw a4,44(a5) - 805e1184: 00176713 ori a4,a4,1 - 805e1188: d7d8 sw a4,44(a5) + 805e1192: 57d8 lw a4,44(a5) + 805e1194: 00176713 ori a4,a4,1 + 805e1198: d7d8 sw a4,44(a5) context->total_len = 0L; context->buffer_len = 0L; } - 805e118a: 60e2 ld ra,24(sp) - 805e118c: 6442 ld s0,16(sp) + 805e119a: 60e2 ld ra,24(sp) + 805e119c: 6442 ld s0,16(sp) context->total_len = 0L; - 805e118e: 00093023 sd zero,0(s2) + 805e119e: 00093023 sd zero,0(s2) context->buffer_len = 0L; - 805e1192: 00093423 sd zero,8(s2) + 805e11a2: 00093423 sd zero,8(s2) } - 805e1196: 64a2 ld s1,8(sp) - 805e1198: 6902 ld s2,0(sp) - 805e119a: 6105 addi sp,sp,32 - 805e119c: 8082 ret + 805e11a6: 64a2 ld s1,8(sp) + 805e11a8: 6902 ld s2,0(sp) + 805e11aa: 6105 addi sp,sp,32 + 805e11ac: 8082 ret -00000000805e119e : +00000000805e11ae : const uint8_t *data = input; size_t buffer_bytes_left; size_t bytes_to_copy; uint32_t i; while(input_len) - 805e119e: c245 beqz a2,805e123e + 805e11ae: c245 beqz a2,805e124e { - 805e11a0: 7139 addi sp,sp,-64 - 805e11a2: f04a sd s2,32(sp) - 805e11a4: 892a mv s2,a0 - 805e11a6: 6508 ld a0,8(a0) - 805e11a8: f822 sd s0,48(sp) - 805e11aa: ec4e sd s3,24(sp) - 805e11ac: e852 sd s4,16(sp) - 805e11ae: e456 sd s5,8(sp) - 805e11b0: e05a sd s6,0(sp) - 805e11b2: fc06 sd ra,56(sp) - 805e11b4: f426 sd s1,40(sp) - 805e11b6: 89b2 mv s3,a2 - 805e11b8: 8a2e mv s4,a1 + 805e11b0: 7139 addi sp,sp,-64 + 805e11b2: f04a sd s2,32(sp) + 805e11b4: 892a mv s2,a0 + 805e11b6: 6508 ld a0,8(a0) + 805e11b8: f822 sd s0,48(sp) + 805e11ba: ec4e sd s3,24(sp) + 805e11bc: e852 sd s4,16(sp) + 805e11be: e456 sd s5,8(sp) + 805e11c0: e05a sd s6,0(sp) + 805e11c2: fc06 sd ra,56(sp) + 805e11c4: f426 sd s1,40(sp) + 805e11c6: 89b2 mv s3,a2 + 805e11c8: 8a2e mv s4,a1 { buffer_bytes_left = SHA256_BLOCK_LEN - context->buffer_len; - 805e11ba: 04000b13 li s6,64 - 805e11be: 05090a93 addi s5,s2,80 + 805e11ca: 04000b13 li s6,64 + 805e11ce: 05090a93 addi s5,s2,80 input_len -= bytes_to_copy; if(context->buffer_len == SHA256_BLOCK_LEN) { for(i = 0; i < 16; i++) { while(sha256->sha_function_reg_1.fifo_in_full) - 805e11c2: 502c0437 lui s0,0x502c0 + 805e11d2: 502c0437 lui s0,0x502c0 buffer_bytes_left = SHA256_BLOCK_LEN - context->buffer_len; - 805e11c6: 40ab04b3 sub s1,s6,a0 - 805e11ca: 0099f363 bleu s1,s3,805e11d0 - 805e11ce: 84ce mv s1,s3 + 805e11d6: 40ab04b3 sub s1,s6,a0 + 805e11da: 0099f363 bleu s1,s3,805e11e0 + 805e11de: 84ce mv s1,s3 memcpy(&context->buffer.bytes[context->buffer_len], data, bytes_to_copy); - 805e11d0: 0541 addi a0,a0,16 - 805e11d2: 85d2 mv a1,s4 - 805e11d4: 8626 mv a2,s1 - 805e11d6: 954a add a0,a0,s2 - 805e11d8: 00000097 auipc ra,0x0 - 805e11dc: 144080e7 jalr 324(ra) # 805e131c + 805e11e0: 0541 addi a0,a0,16 + 805e11e2: 85d2 mv a1,s4 + 805e11e4: 8626 mv a2,s1 + 805e11e6: 954a add a0,a0,s2 + 805e11e8: 00000097 auipc ra,0x0 + 805e11ec: 144080e7 jalr 324(ra) # 805e132c context->total_len += bytes_to_copy * 8L; - 805e11e0: 00093783 ld a5,0(s2) + 805e11f0: 00093783 ld a5,0(s2) context->buffer_len += bytes_to_copy; - 805e11e4: 00893503 ld a0,8(s2) + 805e11f4: 00893503 ld a0,8(s2) context->total_len += bytes_to_copy * 8L; - 805e11e8: 00349713 slli a4,s1,0x3 - 805e11ec: 97ba add a5,a5,a4 + 805e11f8: 00349713 slli a4,s1,0x3 + 805e11fc: 97ba add a5,a5,a4 context->buffer_len += bytes_to_copy; - 805e11ee: 9526 add a0,a0,s1 + 805e11fe: 9526 add a0,a0,s1 context->total_len += bytes_to_copy * 8L; - 805e11f0: 00f93023 sd a5,0(s2) + 805e1200: 00f93023 sd a5,0(s2) context->buffer_len += bytes_to_copy; - 805e11f4: 00a93423 sd a0,8(s2) + 805e1204: 00a93423 sd a0,8(s2) data += bytes_to_copy; - 805e11f8: 9a26 add s4,s4,s1 + 805e1208: 9a26 add s4,s4,s1 input_len -= bytes_to_copy; - 805e11fa: 409989b3 sub s3,s3,s1 + 805e120a: 409989b3 sub s3,s3,s1 if(context->buffer_len == SHA256_BLOCK_LEN) - 805e11fe: 01650e63 beq a0,s6,805e121a + 805e120e: 01650e63 beq a0,s6,805e122a while(input_len) - 805e1202: fc0992e3 bnez s3,805e11c6 + 805e1212: fc0992e3 bnez s3,805e11d6 sha256->sha_data_in1 = context->buffer.words[i]; } context->buffer_len = 0L; } } } - 805e1206: 70e2 ld ra,56(sp) - 805e1208: 7442 ld s0,48(sp) - 805e120a: 74a2 ld s1,40(sp) - 805e120c: 7902 ld s2,32(sp) - 805e120e: 69e2 ld s3,24(sp) - 805e1210: 6a42 ld s4,16(sp) - 805e1212: 6aa2 ld s5,8(sp) - 805e1214: 6b02 ld s6,0(sp) - 805e1216: 6121 addi sp,sp,64 - 805e1218: 8082 ret - 805e121a: 01090713 addi a4,s2,16 + 805e1216: 70e2 ld ra,56(sp) + 805e1218: 7442 ld s0,48(sp) + 805e121a: 74a2 ld s1,40(sp) + 805e121c: 7902 ld s2,32(sp) + 805e121e: 69e2 ld s3,24(sp) + 805e1220: 6a42 ld s4,16(sp) + 805e1222: 6aa2 ld s5,8(sp) + 805e1224: 6b02 ld s6,0(sp) + 805e1226: 6121 addi sp,sp,64 + 805e1228: 8082 ret + 805e122a: 01090713 addi a4,s2,16 while(sha256->sha_function_reg_1.fifo_in_full) - 805e121e: 585c lw a5,52(s0) - 805e1220: 0087d79b srliw a5,a5,0x8 - 805e1224: 8b85 andi a5,a5,1 - 805e1226: ffe5 bnez a5,805e121e + 805e122e: 585c lw a5,52(s0) + 805e1230: 0087d79b srliw a5,a5,0x8 + 805e1234: 8b85 andi a5,a5,1 + 805e1236: ffe5 bnez a5,805e122e sha256->sha_data_in1 = context->buffer.words[i]; - 805e1228: 431c lw a5,0(a4) - 805e122a: 0711 addi a4,a4,4 - 805e122c: d01c sw a5,32(s0) + 805e1238: 431c lw a5,0(a4) + 805e123a: 0711 addi a4,a4,4 + 805e123c: d01c sw a5,32(s0) for(i = 0; i < 16; i++) - 805e122e: feea98e3 bne s5,a4,805e121e + 805e123e: feea98e3 bne s5,a4,805e122e context->buffer_len = 0L; - 805e1232: 00093423 sd zero,8(s2) - 805e1236: 4501 li a0,0 + 805e1242: 00093423 sd zero,8(s2) + 805e1246: 4501 li a0,0 while(input_len) - 805e1238: f80997e3 bnez s3,805e11c6 - 805e123c: b7e9 j 805e1206 - 805e123e: 8082 ret + 805e1248: f80997e3 bnez s3,805e11d6 + 805e124c: b7e9 j 805e1216 + 805e124e: 8082 ret -00000000805e1240 : +00000000805e1250 : { size_t bytes_to_pad; size_t length_pad; uint32_t i; bytes_to_pad = 120L - context->buffer_len; - 805e1240: 651c ld a5,8(a0) + 805e1250: 651c ld a5,8(a0) { - 805e1242: 7179 addi sp,sp,-48 + 805e1252: 7179 addi sp,sp,-48 bytes_to_pad = 120L - context->buffer_len; - 805e1244: 07800613 li a2,120 + 805e1254: 07800613 li a2,120 { - 805e1248: f022 sd s0,32(sp) - 805e124a: ec26 sd s1,24(sp) - 805e124c: f406 sd ra,40(sp) + 805e1258: f022 sd s0,32(sp) + 805e125a: ec26 sd s1,24(sp) + 805e125c: f406 sd ra,40(sp) if(bytes_to_pad > 64L) - 805e124e: 04000713 li a4,64 + 805e125e: 04000713 li a4,64 bytes_to_pad = 120L - context->buffer_len; - 805e1252: 8e1d sub a2,a2,a5 + 805e1262: 8e1d sub a2,a2,a5 { - 805e1254: 84aa mv s1,a0 - 805e1256: 842e mv s0,a1 + 805e1264: 84aa mv s1,a0 + 805e1266: 842e mv s0,a1 if(bytes_to_pad > 64L) - 805e1258: 00c77563 bleu a2,a4,805e1262 + 805e1268: 00c77563 bleu a2,a4,805e1272 bytes_to_pad -= 64L; - 805e125c: 03800613 li a2,56 - 805e1260: 8e1d sub a2,a2,a5 + 805e126c: 03800613 li a2,56 + 805e1270: 8e1d sub a2,a2,a5 length_pad = BYTESWAP64(context->total_len); - 805e1262: 6098 ld a4,0(s1) + 805e1272: 6098 ld a4,0(s1) return ((uint64_t)BYTESWAP(b) << 32) | (uint64_t)BYTESWAP(a); - 805e1264: ff010337 lui t1,0xff010 - 805e1268: 00ff08b7 lui a7,0xff0 + 805e1274: ff010337 lui t1,0xff010 + 805e1278: 00ff08b7 lui a7,0xff0 uint32_t a = (uint32_t)(x >> 32); - 805e126c: 42075593 srai a1,a4,0x20 + 805e127c: 42075593 srai a1,a4,0x20 uint32_t b = (uint32_t)x; - 805e1270: 2701 sext.w a4,a4 + 805e1280: 2701 sext.w a4,a4 return ((uint64_t)BYTESWAP(b) << 32) | (uint64_t)BYTESWAP(a); - 805e1272: 01871e9b slliw t4,a4,0x18 - 805e1276: 0087181b slliw a6,a4,0x8 - 805e127a: 01859e1b slliw t3,a1,0x18 - 805e127e: 0085951b slliw a0,a1,0x8 - 805e1282: 0087579b srliw a5,a4,0x8 - 805e1286: 0187569b srliw a3,a4,0x18 - 805e128a: 0085d71b srliw a4,a1,0x8 - 805e128e: 0185d59b srliw a1,a1,0x18 - 805e1292: f0030313 addi t1,t1,-256 # ffffffffff00ff00 - 805e1296: 0ff88893 addi a7,a7,255 # ff00ff <_start-0x7f5eff01> - 805e129a: 01c76733 or a4,a4,t3 - 805e129e: 8dc9 or a1,a1,a0 - 805e12a0: 0115f5b3 and a1,a1,a7 - 805e12a4: 01d7e7b3 or a5,a5,t4 - 805e12a8: 00d866b3 or a3,a6,a3 - 805e12ac: 00677733 and a4,a4,t1 - 805e12b0: 0067f7b3 and a5,a5,t1 - 805e12b4: 0116f6b3 and a3,a3,a7 - 805e12b8: 8f4d or a4,a4,a1 - 805e12ba: 8fd5 or a5,a5,a3 - 805e12bc: 1702 slli a4,a4,0x20 - 805e12be: 9301 srli a4,a4,0x20 - 805e12c0: 1782 slli a5,a5,0x20 - 805e12c2: 8fd9 or a5,a5,a4 + 805e1282: 01871e9b slliw t4,a4,0x18 + 805e1286: 0087181b slliw a6,a4,0x8 + 805e128a: 01859e1b slliw t3,a1,0x18 + 805e128e: 0085951b slliw a0,a1,0x8 + 805e1292: 0087579b srliw a5,a4,0x8 + 805e1296: 0187569b srliw a3,a4,0x18 + 805e129a: 0085d71b srliw a4,a1,0x8 + 805e129e: 0185d59b srliw a1,a1,0x18 + 805e12a2: f0030313 addi t1,t1,-256 # ffffffffff00ff00 + 805e12a6: 0ff88893 addi a7,a7,255 # ff00ff <_start-0x7f5eff01> + 805e12aa: 01c76733 or a4,a4,t3 + 805e12ae: 8dc9 or a1,a1,a0 + 805e12b0: 0115f5b3 and a1,a1,a7 + 805e12b4: 01d7e7b3 or a5,a5,t4 + 805e12b8: 00d866b3 or a3,a6,a3 + 805e12bc: 00677733 and a4,a4,t1 + 805e12c0: 0067f7b3 and a5,a5,t1 + 805e12c4: 0116f6b3 and a3,a3,a7 + 805e12c8: 8f4d or a4,a4,a1 + 805e12ca: 8fd5 or a5,a5,a3 + 805e12cc: 1702 slli a4,a4,0x20 + 805e12ce: 9301 srli a4,a4,0x20 + 805e12d0: 1782 slli a5,a5,0x20 + 805e12d2: 8fd9 or a5,a5,a4 sha256_update(context, padding, bytes_to_pad); - 805e12c4: 00000597 auipc a1,0x0 - 805e12c8: 7bc58593 addi a1,a1,1980 # 805e1a80 - 805e12cc: 8526 mv a0,s1 + 805e12d4: 00000597 auipc a1,0x0 + 805e12d8: 7bc58593 addi a1,a1,1980 # 805e1a90 + 805e12dc: 8526 mv a0,s1 length_pad = BYTESWAP64(context->total_len); - 805e12ce: e43e sd a5,8(sp) + 805e12de: e43e sd a5,8(sp) sha256_update(context, padding, bytes_to_pad); - 805e12d0: 00000097 auipc ra,0x0 - 805e12d4: ece080e7 jalr -306(ra) # 805e119e + 805e12e0: 00000097 auipc ra,0x0 + 805e12e4: ece080e7 jalr -306(ra) # 805e11ae sha256_update(context, &length_pad, 8L); - 805e12d8: 4621 li a2,8 - 805e12da: 002c addi a1,sp,8 - 805e12dc: 8526 mv a0,s1 - 805e12de: 00000097 auipc ra,0x0 - 805e12e2: ec0080e7 jalr -320(ra) # 805e119e + 805e12e8: 4621 li a2,8 + 805e12ea: 002c addi a1,sp,8 + 805e12ec: 8526 mv a0,s1 + 805e12ee: 00000097 auipc ra,0x0 + 805e12f2: ec0080e7 jalr -320(ra) # 805e11ae while(!(sha256->sha_function_reg_0.sha_en)) - 805e12e6: 502c0737 lui a4,0x502c0 - 805e12ea: 575c lw a5,44(a4) - 805e12ec: 8b85 andi a5,a5,1 - 805e12ee: dff5 beqz a5,805e12ea + 805e12f6: 502c0737 lui a4,0x502c0 + 805e12fa: 575c lw a5,44(a4) + 805e12fc: 8b85 andi a5,a5,1 + 805e12fe: dff5 beqz a5,805e12fa ; if(output) - 805e12f0: c00d beqz s0,805e1312 + 805e1300: c00d beqz s0,805e1322 { for(i = 0; i < SHA256_HASH_WORDS; i++) { *((uint32_t *)output) = sha256->sha_result[SHA256_HASH_WORDS - i - 1]; - 805e12f2: 4f5c lw a5,28(a4) - 805e12f4: c01c sw a5,0(s0) - 805e12f6: 4f1c lw a5,24(a4) - 805e12f8: c05c sw a5,4(s0) - 805e12fa: 4b5c lw a5,20(a4) - 805e12fc: c41c sw a5,8(s0) - 805e12fe: 4b1c lw a5,16(a4) - 805e1300: c45c sw a5,12(s0) - 805e1302: 475c lw a5,12(a4) - 805e1304: c81c sw a5,16(s0) - 805e1306: 471c lw a5,8(a4) - 805e1308: c85c sw a5,20(s0) - 805e130a: 435c lw a5,4(a4) - 805e130c: cc1c sw a5,24(s0) - 805e130e: 431c lw a5,0(a4) - 805e1310: cc5c sw a5,28(s0) + 805e1302: 4f5c lw a5,28(a4) + 805e1304: c01c sw a5,0(s0) + 805e1306: 4f1c lw a5,24(a4) + 805e1308: c05c sw a5,4(s0) + 805e130a: 4b5c lw a5,20(a4) + 805e130c: c41c sw a5,8(s0) + 805e130e: 4b1c lw a5,16(a4) + 805e1310: c45c sw a5,12(s0) + 805e1312: 475c lw a5,12(a4) + 805e1314: c81c sw a5,16(s0) + 805e1316: 471c lw a5,8(a4) + 805e1318: c85c sw a5,20(s0) + 805e131a: 435c lw a5,4(a4) + 805e131c: cc1c sw a5,24(s0) + 805e131e: 431c lw a5,0(a4) + 805e1320: cc5c sw a5,28(s0) output += 4; } } } - 805e1312: 70a2 ld ra,40(sp) - 805e1314: 7402 ld s0,32(sp) - 805e1316: 64e2 ld s1,24(sp) - 805e1318: 6145 addi sp,sp,48 - 805e131a: 8082 ret - -00000000805e131c : - 805e131c: 00a5c7b3 xor a5,a1,a0 - 805e1320: 8b9d andi a5,a5,7 - 805e1322: 00c50733 add a4,a0,a2 - 805e1326: e781 bnez a5,805e132e - 805e1328: 479d li a5,7 - 805e132a: 00c7ee63 bltu a5,a2,805e1346 - 805e132e: 87aa mv a5,a0 - 805e1330: 0ae57063 bleu a4,a0,805e13d0 - 805e1334: 0005c683 lbu a3,0(a1) - 805e1338: 0785 addi a5,a5,1 - 805e133a: 0585 addi a1,a1,1 - 805e133c: fed78fa3 sb a3,-1(a5) # 502bffff <_start-0x30320001> - 805e1340: fee7eae3 bltu a5,a4,805e1334 - 805e1344: 8082 ret - 805e1346: 00757693 andi a3,a0,7 - 805e134a: 87aa mv a5,a0 - 805e134c: ca91 beqz a3,805e1360 - 805e134e: 0005c683 lbu a3,0(a1) - 805e1352: 0785 addi a5,a5,1 - 805e1354: 0585 addi a1,a1,1 - 805e1356: fed78fa3 sb a3,-1(a5) - 805e135a: 0077f693 andi a3,a5,7 - 805e135e: b7fd j 805e134c - 805e1360: ff877693 andi a3,a4,-8 - 805e1364: fc068613 addi a2,a3,-64 # ffc0 <_start-0x805d0040> - 805e1368: 06c7f063 bleu a2,a5,805e13c8 - 805e136c: 0005b383 ld t2,0(a1) - 805e1370: 0085b283 ld t0,8(a1) - 805e1374: 0105bf83 ld t6,16(a1) - 805e1378: 0185bf03 ld t5,24(a1) - 805e137c: 0205be83 ld t4,32(a1) - 805e1380: 0285be03 ld t3,40(a1) - 805e1384: 0305b303 ld t1,48(a1) - 805e1388: 0385b883 ld a7,56(a1) - 805e138c: 04858593 addi a1,a1,72 - 805e1390: 0077b023 sd t2,0(a5) - 805e1394: ff85b803 ld a6,-8(a1) - 805e1398: 0057b423 sd t0,8(a5) - 805e139c: 01f7b823 sd t6,16(a5) - 805e13a0: 01e7bc23 sd t5,24(a5) - 805e13a4: 03d7b023 sd t4,32(a5) - 805e13a8: 03c7b423 sd t3,40(a5) - 805e13ac: 0267b823 sd t1,48(a5) - 805e13b0: 0317bc23 sd a7,56(a5) - 805e13b4: 04878793 addi a5,a5,72 - 805e13b8: ff07bc23 sd a6,-8(a5) - 805e13bc: b775 j 805e1368 - 805e13be: 6190 ld a2,0(a1) - 805e13c0: 07a1 addi a5,a5,8 - 805e13c2: 05a1 addi a1,a1,8 - 805e13c4: fec7bc23 sd a2,-8(a5) - 805e13c8: fed7ebe3 bltu a5,a3,805e13be - 805e13cc: f6e7e4e3 bltu a5,a4,805e1334 - 805e13d0: 8082 ret - 805e13d2: 0000 unimp - 805e13d4: 0000 unimp + 805e1322: 70a2 ld ra,40(sp) + 805e1324: 7402 ld s0,32(sp) + 805e1326: 64e2 ld s1,24(sp) + 805e1328: 6145 addi sp,sp,48 + 805e132a: 8082 ret + +00000000805e132c : + 805e132c: 00a5c7b3 xor a5,a1,a0 + 805e1330: 8b9d andi a5,a5,7 + 805e1332: 00c50733 add a4,a0,a2 + 805e1336: e781 bnez a5,805e133e + 805e1338: 479d li a5,7 + 805e133a: 00c7ee63 bltu a5,a2,805e1356 + 805e133e: 87aa mv a5,a0 + 805e1340: 0ae57063 bleu a4,a0,805e13e0 + 805e1344: 0005c683 lbu a3,0(a1) + 805e1348: 0785 addi a5,a5,1 + 805e134a: 0585 addi a1,a1,1 + 805e134c: fed78fa3 sb a3,-1(a5) # 502bffff <_start-0x30320001> + 805e1350: fee7eae3 bltu a5,a4,805e1344 + 805e1354: 8082 ret + 805e1356: 00757693 andi a3,a0,7 + 805e135a: 87aa mv a5,a0 + 805e135c: ca91 beqz a3,805e1370 + 805e135e: 0005c683 lbu a3,0(a1) + 805e1362: 0785 addi a5,a5,1 + 805e1364: 0585 addi a1,a1,1 + 805e1366: fed78fa3 sb a3,-1(a5) + 805e136a: 0077f693 andi a3,a5,7 + 805e136e: b7fd j 805e135c + 805e1370: ff877693 andi a3,a4,-8 + 805e1374: fc068613 addi a2,a3,-64 # ffc0 <_start-0x805d0040> + 805e1378: 06c7f063 bleu a2,a5,805e13d8 + 805e137c: 0005b383 ld t2,0(a1) + 805e1380: 0085b283 ld t0,8(a1) + 805e1384: 0105bf83 ld t6,16(a1) + 805e1388: 0185bf03 ld t5,24(a1) + 805e138c: 0205be83 ld t4,32(a1) + 805e1390: 0285be03 ld t3,40(a1) + 805e1394: 0305b303 ld t1,48(a1) + 805e1398: 0385b883 ld a7,56(a1) + 805e139c: 04858593 addi a1,a1,72 + 805e13a0: 0077b023 sd t2,0(a5) + 805e13a4: ff85b803 ld a6,-8(a1) + 805e13a8: 0057b423 sd t0,8(a5) + 805e13ac: 01f7b823 sd t6,16(a5) + 805e13b0: 01e7bc23 sd t5,24(a5) + 805e13b4: 03d7b023 sd t4,32(a5) + 805e13b8: 03c7b423 sd t3,40(a5) + 805e13bc: 0267b823 sd t1,48(a5) + 805e13c0: 0317bc23 sd a7,56(a5) + 805e13c4: 04878793 addi a5,a5,72 + 805e13c8: ff07bc23 sd a6,-8(a5) + 805e13cc: b775 j 805e1378 + 805e13ce: 6190 ld a2,0(a1) + 805e13d0: 07a1 addi a5,a5,8 + 805e13d2: 05a1 addi a1,a1,8 + 805e13d4: fec7bc23 sd a2,-8(a5) + 805e13d8: fed7ebe3 bltu a5,a3,805e13ce + 805e13dc: f6e7e4e3 bltu a5,a4,805e1344 + 805e13e0: 8082 ret + 805e13e2: 0000 unimp + 805e13e4: 0000 unimp ... diff --git a/build/bootloader_hi.elf b/build/bootloader_hi.elf index 75a26fd..10d5487 100755 Binary files a/build/bootloader_hi.elf and b/build/bootloader_hi.elf differ diff --git a/build/bootloader_lo.elf b/build/bootloader_lo.elf index 95373c7..9d9de98 100755 Binary files a/build/bootloader_lo.elf and b/build/bootloader_lo.elf differ diff --git a/build/kboot.kfpkg b/build/kboot.kfpkg index b3a723e..4033cd1 100644 Binary files a/build/kboot.kfpkg and b/build/kboot.kfpkg differ diff --git a/src/bootloader_hi/README.md b/src/bootloader_hi/README.md index b7e29fc..4afbe7a 100644 --- a/src/bootloader_hi/README.md +++ b/src/bootloader_hi/README.md @@ -48,13 +48,12 @@ The following SPI Flash layout must be used when using **Kboot* | From | To | Length | Comment | | ---: | ---: | ---: | :--- | -| `0x00000000` | `0x0000FFFF` | 64K | **Kboot** application code | -| `0x00010000` | `0x0001FFFF` | 64K | reserved for future use | -| `0x00020000` | `0x00020FFF` | 4K | main **boot configuration** sector | -| `0x00021000` | `0x00021FFF` | 4K | backup **boot configuration** sector | -| `0x00022000` | `0x0002FFFF` | 56K | reserved, user data etc. | -| `0x00030000` | `0x0007FFFF` | 320K | **default application** code | -| `0x00080000` | `Flash end` | --- | user area, application(s) code, file system(s), user data etc. | +| `0x00000000` | `0x00003FFF` | 64K | **Kboot** application code | +| `0x00004000` | `0x00004FFF` | 4K | main **boot configuration** sector | +| `0x00005000` | `0x00005FFF` | 4K | backup **boot configuration** sector | +| `0x00006000` | `0x0000FFFF` | 40K | reserved | +| `0x00010000` | `DEF_END` | --- | **default application** code | +| `DEF_END` | `Flash end` | --- | user area, application(s) code, file system(s), user data etc. |
diff --git a/src/bootloader_hi/main.c b/src/bootloader_hi/main.c index 947a7f1..5dbdbd8 100644 --- a/src/bootloader_hi/main.c +++ b/src/bootloader_hi/main.c @@ -98,6 +98,7 @@ static uint32_t *cfg_flash_ptr = (uint32_t *)(SPI3_BASE_ADDR+BOOT_CONFIG_ADDR); static uint8_t *cfg_flash_bptr = (uint8_t *)(SPI3_BASE_ADDR+BOOT_CONFIG_ADDR); static uint32_t i = 0; +static uint32_t boot_entry = 0; static uint32_t cfg_offset = 0; static uint32_t offset = 0; static uint8_t key = 0; @@ -341,7 +342,7 @@ int main(void) boot_pin = gpiohs_get_pin(GPIO_KEY); } - LOG("\nK210 bootloader by LoBo v.1.4.1\n\n"); + LOG("\nK210 bootloader by LoBo v.1.4.2\n\n"); LOG("* Find applications in MAIN parameters\n"); @@ -365,9 +366,9 @@ int main(void) // Valid size LOG("@ 0x%08X, size=%u, ", cfg_address, cfg_size); /* - * Basic check passed, now we can check the application's vilidity + * Basic check passed, now we can check the application's validity * If in interractive mode, all applications are checked, - * otherwize, the application is checked only if flagged as active + * otherwise, the application is checked only if flagged as active */ if ((cfg_magic & CFG_APP_FLAG_ACTIVE) || (boot_pin == 0)) { // ** Check if valid application @@ -391,7 +392,7 @@ int main(void) app_flash_start = cfg_address; } if (boot_pin > 0) { - // Active application found and cheched and not in interractive mode + // Active application found and checked and not in interractive mode LOG("ACTIVE\n"); break; } @@ -409,10 +410,10 @@ int main(void) } // check if any valid application was found - for (i = 0; i < BOOT_CONFIG_ITEMS; i++) { - if (available_apps[i]) break; + for (boot_entry = 0; boot_entry < BOOT_CONFIG_ITEMS; boot_entry++) { + if (available_apps[boot_entry]) break; } - if ((app_flash_start == DEFAULT_APP_ADDR) && (i >= BOOT_CONFIG_ITEMS)) { + if ((app_flash_start == DEFAULT_APP_ADDR) && (boot_entry >= BOOT_CONFIG_ITEMS)) { // No valid application found if (cfg_offset == 0) { // no valid entry found in main config sector, check the backup one @@ -456,6 +457,7 @@ int main(void) // get application's size and address in Flash app_size = flash2uint32(cfg_address+1); app_flash_start = cfg_address; + boot_entry = char_in; char_in += 0x30; break; } @@ -475,8 +477,10 @@ int main(void) if ((app_size >= MIN_APP_FLASH_SIZE) && (app_size <= MAX_APP_FLASH_SIZE)) { cfg_size = app_size; cfg_address = app_flash_start; - // Check default application - if (app_sha256()) key = 0; + // Check default application if no app selected + if ((boot_entry < BOOT_CONFIG_ITEMS) || app_sha256()) { + key = 0; + } } if (key) { // Check failed