From 919fd8f2a8fc0dc9f99ff83ab13f46adbc5518b4 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期三, 02 四月 2025 17:08:13 +0800 Subject: [PATCH] 最新boot,测试可以用,支持升级 ota,注意跳转延时不要动 --- dualboots_Gai_youhua/keil/customboot/Objects/customboot.htm | 92 +++++++++++++++++++++++++-------------------- 1 files changed, 51 insertions(+), 41 deletions(-) diff --git a/dualboots_Gai_youhua/keil/customboot/Objects/customboot.htm b/dualboots_Gai_youhua/keil/customboot/Objects/customboot.htm index 44e475c..2d1a850 100644 --- a/dualboots_Gai_youhua/keil/customboot/Objects/customboot.htm +++ b/dualboots_Gai_youhua/keil/customboot/Objects/customboot.htm @@ -3,7 +3,7 @@ <title>Static Call Graph - [.\Objects\customboot.axf]</title></head> <body><HR> <H1>Static Call Graph for image .\Objects\customboot.axf</H1><HR> -<BR><P>#<CALLGRAPH># ARM Linker, 6140002: Last Updated: Thu Mar 27 17:53:36 2025 +<BR><P>#<CALLGRAPH># ARM Linker, 6140002: Last Updated: Wed Apr 2 15:10:04 2025 <BR><P> <H3>Maximum Stack Usage = 368 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3> Call chain for Maximum Stack Depth:</H3> @@ -74,7 +74,7 @@ <P><STRONG><a name="[2c]"></a>__main</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000)) <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(.text.start_main_asm) </UL> -<P><STRONG><a name="[8d]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry4.o(.ARM.Collect$$$$00000003)) +<P><STRONG><a name="[8e]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry4.o(.ARM.Collect$$$$00000003)) <P><STRONG><a name="[2e]"></a>_main_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) <BR><BR>[Calls]<UL><LI><a href="#[2f]">>></a> __scatterload @@ -84,15 +84,15 @@ <BR><BR>[Called By]<UL><LI><a href="#[2f]">>></a> __scatterload </UL> -<P><STRONG><a name="[8e]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) +<P><STRONG><a name="[8f]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) -<P><STRONG><a name="[8f]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) +<P><STRONG><a name="[90]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) -<P><STRONG><a name="[90]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) +<P><STRONG><a name="[91]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) -<P><STRONG><a name="[91]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) +<P><STRONG><a name="[92]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) -<P><STRONG><a name="[92]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F)) +<P><STRONG><a name="[93]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F)) <P><STRONG><a name="[38]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text)) <BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = __aeabi_uidiv @@ -122,7 +122,7 @@ <LI><a href="#[4d]">>></a> Ymodem_Receive </UL> -<P><STRONG><a name="[85]"></a>__aeabi_memcpy4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text)) +<P><STRONG><a name="[86]"></a>__aeabi_memcpy4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text)) <BR><BR>[Called By]<UL><LI><a href="#[25]">>></a> main </UL> @@ -136,19 +136,19 @@ <LI><a href="#[30]">>></a> __aeabi_memclr </UL> -<P><STRONG><a name="[93]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +<P><STRONG><a name="[94]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -<P><STRONG><a name="[94]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +<P><STRONG><a name="[95]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) <P><STRONG><a name="[30]"></a>__aeabi_memclr</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) <BR><BR>[Calls]<UL><LI><a href="#[31]">>></a> __aeabi_memset </UL> -<P><STRONG><a name="[8c]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) +<P><STRONG><a name="[8d]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) <BR><BR>[Called By]<UL><LI><a href="#[4e]">>></a> uart_send </UL> -<P><STRONG><a name="[95]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +<P><STRONG><a name="[96]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) <P><STRONG><a name="[32]"></a>_memset$wrapper</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) <BR><BR>[Calls]<UL><LI><a href="#[31]">>></a> __aeabi_memset @@ -160,11 +160,11 @@ <BR>[Called By]<UL><LI><a href="#[2e]">>></a> _main_scatterload </UL> -<P><STRONG><a name="[96]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) +<P><STRONG><a name="[97]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) -<P><STRONG><a name="[97]"></a>__decompress</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl.o(.text), UNUSED) +<P><STRONG><a name="[98]"></a>__decompress</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl.o(.text), UNUSED) -<P><STRONG><a name="[98]"></a>__decompress0</STRONG> (Thumb, 58 bytes, Stack size unknown bytes, __dczerorl.o(.text), UNUSED) +<P><STRONG><a name="[99]"></a>__decompress0</STRONG> (Thumb, 58 bytes, Stack size unknown bytes, __dczerorl.o(.text), UNUSED) <P><STRONG><a name="[7]"></a>BOD_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, mk_misc.o(.text.BOD_IRQHandler)) <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) @@ -232,7 +232,7 @@ <P><STRONG><a name="[f]"></a>AES_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) </UL> -<P><STRONG><a name="[99]"></a>Default_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler), UNUSED) +<P><STRONG><a name="[9a]"></a>Default_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler), UNUSED) <P><STRONG><a name="[3]"></a>HardFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) @@ -592,7 +592,8 @@ <BR>[Address Reference Count : 1]<UL><LI> board.o(.text.board_clock_run) </UL> <P><STRONG><a name="[64]"></a>clock_disable</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, mk_clock.o(.text.clock_disable)) -<BR><BR>[Called By]<UL><LI><a href="#[81]">>></a> wdt_close +<BR><BR>[Called By]<UL><LI><a href="#[85]">>></a> uart_close +<LI><a href="#[81]">>></a> wdt_close <LI><a href="#[5d]">>></a> calib_close </UL> @@ -618,7 +619,7 @@ </UL> <P><STRONG><a name="[5e]"></a>clock_set_divider</STRONG> (Thumb, 96 bytes, Stack size 0 bytes, mk_clock.o(.text.clock_set_divider)) -<BR><BR>[Called By]<UL><LI><a href="#[89]">>></a> uart_baud_set +<BR><BR>[Called By]<UL><LI><a href="#[8a]">>></a> uart_baud_set <LI><a href="#[79]">>></a> flash_open <LI><a href="#[58]">>></a> board_clock_run </UL> @@ -637,7 +638,7 @@ </UL> <P><STRONG><a name="[59]"></a>delay_us</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, mk_misc.o(.text.delay_us)) -<BR><BR>[Called By]<UL><LI><a href="#[89]">>></a> uart_baud_set +<BR><BR>[Called By]<UL><LI><a href="#[8a]">>></a> uart_baud_set <LI><a href="#[79]">>></a> flash_open <LI><a href="#[71]">>></a> flash_wait_done <LI><a href="#[2b]">>></a> flash_dma_write_nbytes_callback @@ -666,7 +667,7 @@ <LI><a href="#[2a]">>></a> flash_dma_callback </UL> -<P><STRONG><a name="[87]"></a>dual_timer_get</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_dual_timer.o(.text.dual_timer_get)) +<P><STRONG><a name="[88]"></a>dual_timer_get</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_dual_timer.o(.text.dual_timer_get)) <BR><BR>[Called By]<UL><LI><a href="#[7e]">>></a> sys_timer_get </UL> @@ -678,7 +679,7 @@ <BR>[Called By]<UL><LI><a href="#[60]">>></a> sys_timer_open </UL> -<P><STRONG><a name="[88]"></a>dual_timer_start</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, mk_dual_timer.o(.text.dual_timer_start)) +<P><STRONG><a name="[89]"></a>dual_timer_start</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, mk_dual_timer.o(.text.dual_timer_start)) <BR><BR>[Called By]<UL><LI><a href="#[60]">>></a> sys_timer_open </UL> @@ -795,12 +796,13 @@ <P><STRONG><a name="[29]"></a>io_pin_mux_set</STRONG> (Thumb, 80 bytes, Stack size 0 bytes, mk_io.o(.text.io_pin_mux_set)) <BR>[Address Reference Count : 1]<UL><LI> pin_config.o(.text.board_pins_config) </UL> -<P><STRONG><a name="[25]"></a>main</STRONG> (Thumb, 628 bytes, Stack size 40 bytes, customboot.o(.text.main)) +<P><STRONG><a name="[25]"></a>main</STRONG> (Thumb, 680 bytes, Stack size 40 bytes, customboot.o(.text.main)) <BR><BR>[Stack]<UL><LI>Max Depth = 368<LI>Call Chain = main ⇒ Main_Menu ⇒ SerialDownload ⇒ Ymodem_Receive ⇒ flash_write_nbytes ⇒ flash_page_write_nbytes ⇒ flash_wait_done ⇒ flash_read_status ⇒ flash_write_cmd ⇒ flash_wait_status ⇒ sys_timer_get </UL> <BR>[Calls]<UL><LI><a href="#[53]">>></a> aesDecrypt <LI><a href="#[50]">>></a> aesDecInit <LI><a href="#[84]">>></a> uart_open +<LI><a href="#[85]">>></a> uart_close <LI><a href="#[27]">>></a> Serial_PutString <LI><a href="#[43]">>></a> flash_write_nbytes <LI><a href="#[7d]">>></a> flash_read @@ -813,12 +815,12 @@ <LI><a href="#[61]">>></a> calib_chip <LI><a href="#[7f]">>></a> gpio_open <LI><a href="#[44]">>></a> __aeabi_memcpy8 -<LI><a href="#[85]">>></a> __aeabi_memcpy4 +<LI><a href="#[86]">>></a> __aeabi_memcpy4 <LI><a href="#[52]">>></a> __aeabi_memcpy <LI><a href="#[80]">>></a> board_pins_config <LI><a href="#[83]">>></a> board_configure <LI><a href="#[58]">>></a> board_clock_run -<LI><a href="#[86]">>></a> __NVIC_SystemReset +<LI><a href="#[87]">>></a> __NVIC_SystemReset <LI><a href="#[45]">>></a> delay_ms <LI><a href="#[40]">>></a> Main_Menu </UL> @@ -850,7 +852,7 @@ <P><STRONG><a name="[7e]"></a>sys_timer_get</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, mk_misc.o(.text.sys_timer_get)) <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = sys_timer_get </UL> -<BR>[Calls]<UL><LI><a href="#[87]">>></a> dual_timer_get +<BR>[Calls]<UL><LI><a href="#[88]">>></a> dual_timer_get </UL> <BR>[Called By]<UL><LI><a href="#[7a]">>></a> flash_wait_status <LI><a href="#[71]">>></a> flash_wait_done @@ -860,14 +862,14 @@ <BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = sys_timer_open ⇒ clock_get_frequency ⇒ clock_get_apb_clk_freq ⇒ clock_get_ahb_clk_freq </UL> <BR>[Calls]<UL><LI><a href="#[6a]">>></a> clock_get_frequency -<LI><a href="#[88]">>></a> dual_timer_start +<LI><a href="#[89]">>></a> dual_timer_start <LI><a href="#[6c]">>></a> dual_timer_open <LI><a href="#[52]">>></a> __aeabi_memcpy </UL> <BR>[Called By]<UL><LI><a href="#[58]">>></a> board_clock_run </UL> -<P><STRONG><a name="[89]"></a>uart_baud_set</STRONG> (Thumb, 72 bytes, Stack size 24 bytes, mk_uart.o(.text.uart_baud_set)) +<P><STRONG><a name="[8a]"></a>uart_baud_set</STRONG> (Thumb, 72 bytes, Stack size 24 bytes, mk_uart.o(.text.uart_baud_set)) <BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = uart_baud_set </UL> <BR>[Calls]<UL><LI><a href="#[5e]">>></a> clock_set_divider @@ -876,21 +878,29 @@ <BR>[Called By]<UL><LI><a href="#[84]">>></a> uart_open </UL> -<P><STRONG><a name="[4f]"></a>uart_irq_handler</STRONG> (Thumb, 372 bytes, Stack size 32 bytes, mk_uart.o(.text.uart_irq_handler)) +<P><STRONG><a name="[85]"></a>uart_close</STRONG> (Thumb, 124 bytes, Stack size 16 bytes, mk_uart.o(.text.uart_close)) +<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = uart_close +</UL> +<BR>[Calls]<UL><LI><a href="#[64]">>></a> clock_disable +</UL> +<BR>[Called By]<UL><LI><a href="#[25]">>></a> main +</UL> + +<P><STRONG><a name="[4f]"></a>uart_irq_handler</STRONG> (Thumb, 376 bytes, Stack size 32 bytes, mk_uart.o(.text.uart_irq_handler)) <BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = uart_irq_handler ⇒ uart_state_clear </UL> -<BR>[Calls]<UL><LI><a href="#[8a]">>></a> uart_state_clear +<BR>[Calls]<UL><LI><a href="#[8b]">>></a> uart_state_clear </UL> <BR>[Called By]<UL><LI><a href="#[20]">>></a> UART1_IRQHandler <LI><a href="#[1f]">>></a> UART0_IRQHandler </UL> -<P><STRONG><a name="[84]"></a>uart_open</STRONG> (Thumb, 332 bytes, Stack size 32 bytes, mk_uart.o(.text.uart_open)) +<P><STRONG><a name="[84]"></a>uart_open</STRONG> (Thumb, 336 bytes, Stack size 32 bytes, mk_uart.o(.text.uart_open)) <BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = uart_open ⇒ uart_baud_set </UL> <BR>[Calls]<UL><LI><a href="#[65]">>></a> reset_module <LI><a href="#[62]">>></a> clock_enable -<LI><a href="#[89]">>></a> uart_baud_set +<LI><a href="#[8a]">>></a> uart_baud_set </UL> <BR>[Called By]<UL><LI><a href="#[25]">>></a> main </UL> @@ -900,9 +910,9 @@ </UL> <BR>[Calls]<UL><LI><a href="#[75]">>></a> dma_transfer <LI><a href="#[6b]">>></a> dma_open -<LI><a href="#[8b]">>></a> uart_state_set -<LI><a href="#[8a]">>></a> uart_state_clear -<LI><a href="#[8c]">>></a> __aeabi_memclr4 +<LI><a href="#[8c]">>></a> uart_state_set +<LI><a href="#[8b]">>></a> uart_state_clear +<LI><a href="#[8d]">>></a> __aeabi_memclr4 </UL> <BR>[Called By]<UL><LI><a href="#[4c]">>></a> SerialPutChar </UL> @@ -929,11 +939,11 @@ <LI><a href="#[4d]">>></a> Ymodem_Receive </UL> -<P><STRONG><a name="[9a]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) +<P><STRONG><a name="[9b]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) -<P><STRONG><a name="[9b]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) +<P><STRONG><a name="[9c]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) -<P><STRONG><a name="[9c]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) +<P><STRONG><a name="[9d]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) <P> <H3> Local Symbols @@ -1103,11 +1113,11 @@ <P><STRONG><a name="[2d]"></a>uart_dma_callback</STRONG> (Thumb, 200 bytes, Stack size 24 bytes, mk_uart.o(.text.uart_dma_callback)) <BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = uart_dma_callback ⇒ uart_state_clear </UL> -<BR>[Calls]<UL><LI><a href="#[8a]">>></a> uart_state_clear +<BR>[Calls]<UL><LI><a href="#[8b]">>></a> uart_state_clear </UL> <BR>[Address Reference Count : 1]<UL><LI> mk_uart.o(.text.uart_send) </UL> -<P><STRONG><a name="[8a]"></a>uart_state_clear</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, mk_uart.o(.text.uart_state_clear)) +<P><STRONG><a name="[8b]"></a>uart_state_clear</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, mk_uart.o(.text.uart_state_clear)) <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = uart_state_clear </UL> <BR>[Called By]<UL><LI><a href="#[4e]">>></a> uart_send @@ -1115,7 +1125,7 @@ <LI><a href="#[2d]">>></a> uart_dma_callback </UL> -<P><STRONG><a name="[8b]"></a>uart_state_set</STRONG> (Thumb, 96 bytes, Stack size 16 bytes, mk_uart.o(.text.uart_state_set)) +<P><STRONG><a name="[8c]"></a>uart_state_set</STRONG> (Thumb, 96 bytes, Stack size 16 bytes, mk_uart.o(.text.uart_state_set)) <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = uart_state_set </UL> <BR>[Called By]<UL><LI><a href="#[4e]">>></a> uart_send @@ -1125,7 +1135,7 @@ <BR><BR>[Called By]<UL><LI><a href="#[40]">>></a> Main_Menu </UL> -<P><STRONG><a name="[86]"></a>__NVIC_SystemReset</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, customboot.o(.text.__NVIC_SystemReset)) +<P><STRONG><a name="[87]"></a>__NVIC_SystemReset</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, customboot.o(.text.__NVIC_SystemReset)) <BR><BR>[Called By]<UL><LI><a href="#[25]">>></a> main </UL> -- Gitblit v1.9.3