📄 iap.htm
字号:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html><head>
<title>Static Call Graph - [D:\LPCARMWORK\IAP\IAP.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image D:\LPCARMWORK\IAP\IAP.axf</H1><HR>
<BR><P>#<CALLGRAPH># ARM Linker, RVCT3.0 [Build 951]: Last Updated: Mon Feb 12 21:04:41 2007
<BR><P>
<H3>Maximum Stack Usage = 848 bytes + Unknown(Functions without stacksize,Cycles,Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
main -> __0sprintf -> _printf_char_common -> __printf -> _printf_longlong_hex -> _printf_int_common -> _printf_post_padding<P>
<H3>
Functions with no stack information
</H3><UL>
<LI><a href="#[b2838c]">Reset_Handler</a>
<LI><a href="#[b2820c]">__user_initial_stackheap</a>
<LI><a href="#[c06764]">__ARM_call_via_r0</a>
<LI><a href="#[c067b4]">__call_via_r0</a>
<LI><a href="#[c06668]">__ARM_call_via_r1</a>
<LI><a href="#[c066e8]">__call_via_r1</a>
<LI><a href="#[c0659c]">__ARM_call_via_r2</a>
<LI><a href="#[c065ec]">__call_via_r2</a>
<LI><a href="#[c064a0]">__ARM_call_via_r3</a>
<LI><a href="#[c06520]">__call_via_r3</a>
<LI><a href="#[c063a4]">__ARM_call_via_r4</a>
<LI><a href="#[c06424]">__call_via_r4</a>
<LI><a href="#[c062a8]">__ARM_call_via_r5</a>
<LI><a href="#[c06328]">__call_via_r5</a>
<LI><a href="#[c061ac]">__ARM_call_via_r6</a>
<LI><a href="#[c0622c]">__call_via_r6</a>
<LI><a href="#[c060b0]">__ARM_call_via_r7</a>
<LI><a href="#[c06130]">__call_via_r7</a>
<LI><a href="#[10d864c]">__fplib_config_pureend_doubles</a>
<LI><a href="#[b2897c]">Undef_Handler</a>
<LI><a href="#[b28904]">SWI_Handler</a>
<LI><a href="#[b28888]">PAbt_Handler</a>
<LI><a href="#[b2880c]">DAbt_Handler</a>
<LI><a href="#[b28794]">IRQ_Handler</a>
<LI><a href="#[b2871c]">FIQ_Handler</a>
</UL>
<P>
<H3>
Mutually Recursive functions
</H3><UL>
<LI><a href="#[b2897c]">Undef_Handler</a> -> <a href="#[b2897c]">Undef_Handler</a><BR>
<LI><a href="#[b28904]">SWI_Handler</a> -> <a href="#[b28904]">SWI_Handler</a><BR>
<LI><a href="#[b28888]">PAbt_Handler</a> -> <a href="#[b28888]">PAbt_Handler</a><BR>
<LI><a href="#[b2880c]">DAbt_Handler</a> -> <a href="#[b2880c]">DAbt_Handler</a><BR>
<LI><a href="#[b28794]">IRQ_Handler</a> -> <a href="#[b28794]">IRQ_Handler</a><BR>
<LI><a href="#[b2871c]">FIQ_Handler</a> -> <a href="#[b2871c]">FIQ_Handler</a><BR>
</UL>
<BR>
<P><STRONG><a name="[b2838c]"></a>Reset_Handler</STRONG> (ARM, 0 bytes, Stack size unknown bytes, startup.o(RESET))
<BR>[Address Reference Count : 1]<UL><LI> startup.o(RESET)
</UL>
<P><STRONG><a name="[c0b918]"></a>__main</STRONG> (ARM, 8 bytes, Stack size 0 bytes, __main.o(!!!main))
<BR><BR>[Stack]<UL><LI>Max Depth = 72 + Unknown Stack Size
<LI>Call Chain = __main -> __rt_entry -> __rt_lib_init -> __cpp_initialize__aeabi_</UL>
<BR>[Calls]<UL><LI><a href="#[c09c00]">>></a> __rt_entry
<LI><a href="#[c0b968]">>></a> __scatterload (Weak Reference)
</UL>
<P><STRONG><a name="[10de0fc]"></a>__ARM_argv_veneer</STRONG> (ARM, 16 bytes, Stack size 0 bytes, lib_init.o(.emb_text))
<BR><BR>[Called By]<UL><LI><a href="#[10de030]"><<</a> __rt_lib_init (via Veneer)
</UL>
<P><STRONG><a name="[b2820c]"></a>__user_initial_stackheap</STRONG> (ARM, 0 bytes, Stack size unknown bytes, startup.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[c0929c]"><<</a> __user_setup_stackheap
</UL>
<P><STRONG><a name="[b252cc]"></a>IRQ_UART0</STRONG> (ARM, 360 bytes, Stack size 20 bytes, main.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = IRQ_UART0</UL>
<BR>[Address Reference Count : 1]<UL><LI> uart.o(.text)
</UL>
<P><STRONG><a name="[b25258]"></a>main</STRONG> (ARM, 1920 bytes, Stack size 536 bytes, main.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 848 + Unknown Stack Size
<LI>Call Chain = main -> __0sprintf -> _printf_char_common -> __printf -> _printf_longlong_hex -> _printf_int_common -> _printf_post_padding</UL>
<BR>[Calls]<UL><LI><a href="#[b24d18]">>></a> UartObj::puts(const char*)
<LI><a href="#[b24d9c]">>></a> UartObj::Wait()
<LI><a href="#[b24e98]">>></a> IAPObj::ReadFlash(unsigned, unsigned char*, unsigned)
<LI><a href="#[b24f20]">>></a> IAPObj::ReadBootLoaderID()
<LI><a href="#[b24fac]">>></a> IAPObj::CompareFlash(unsigned, unsigned, unsigned)
<LI><a href="#[b25038]">>></a> IAPObj::WriteFlash(unsigned, unsigned, unsigned)
<LI><a href="#[b250c0]">>></a> IAPObj::ReadPartID()
<LI><a href="#[b25148]">>></a> IAPObj::EraseFlash(unsigned, unsigned)
<LI><a href="#[b251d0]">>></a> IAPObj::CheckFlash(unsigned, unsigned)
<LI><a href="#[c0c63c]">>></a> strcpy (via Veneer)
<LI><a href="#[c0cb90]">>></a> __0sprintf (via Veneer)
</UL>
<BR>[Address Reference Count : 1]<UL><LI> kernel.o(.text)
</UL>
<P><STRONG><a name="[b24e1c]"></a>IAPObj::IAPObj()</STRONG> (ARM, 12 bytes, Stack size 0 bytes, iap.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[b25e24]"><<</a> __sti___8_main_cpp
</UL>
<P><STRONG><a name="[bce80c]"></a>IAPObj::IAPObj__sub_object()</STRONG> (ARM, 0 bytes, Stack size 0 bytes, iap.o(.text), UNUSED)
<P><STRONG><a name="[bce788]"></a>IAPObj::SelSector(unsigned, unsigned)</STRONG> (ARM, 64 bytes, Stack size 16 bytes, iap.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = IAPObj::SelSector(unsigned, unsigned)</UL>
<BR>[Called By]<UL><LI><a href="#[b25038]"><<</a> IAPObj::WriteFlash(unsigned, unsigned, unsigned)
<LI><a href="#[b25148]"><<</a> IAPObj::EraseFlash(unsigned, unsigned)
<LI><a href="#[bce2b4]"><<</a> IAPObj::BlockWriteFlash(unsigned, unsigned, unsigned)
</UL>
<P><STRONG><a name="[b24f20]"></a>IAPObj::ReadBootLoaderID()</STRONG> (ARM, 48 bytes, Stack size 8 bytes, iap.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = IAPObj::ReadBootLoaderID()</UL>
<BR>[Called By]<UL><LI><a href="#[b25258]"><<</a> main
</UL>
<P><STRONG><a name="[b250c0]"></a>IAPObj::ReadPartID()</STRONG> (ARM, 48 bytes, Stack size 8 bytes, iap.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = IAPObj::ReadPartID()</UL>
<BR>[Called By]<UL><LI><a href="#[b25258]"><<</a> main
</UL>
<P><STRONG><a name="[bce700]"></a>IAPObj::EraseSector(unsigned, unsigned)</STRONG> (ARM, 72 bytes, Stack size 16 bytes, iap.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = IAPObj::EraseSector(unsigned, unsigned)</UL>
<BR>[Called By]<UL><LI><a href="#[b25148]"><<</a> IAPObj::EraseFlash(unsigned, unsigned)
</UL>
<P><STRONG><a name="[bce674]"></a>IAPObj::UploadtoFlash(unsigned, unsigned, unsigned)</STRONG> (ARM, 80 bytes, Stack size 24 bytes, iap.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = IAPObj::UploadtoFlash(unsigned, unsigned, unsigned)</UL>
<BR>[Called By]<UL><LI><a href="#[b25038]"><<</a> IAPObj::WriteFlash(unsigned, unsigned, unsigned)
<LI><a href="#[bce2b4]"><<</a> IAPObj::BlockWriteFlash(unsigned, unsigned, unsigned)
</UL>
<P><STRONG><a name="[b24fac]"></a>IAPObj::CompareFlash(unsigned, unsigned, unsigned)</STRONG> (ARM, 72 bytes, Stack size 24 bytes, iap.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = IAPObj::CompareFlash(unsigned, unsigned, unsigned)</UL>
<BR>[Called By]<UL><LI><a href="#[b25258]"><<</a> main
</UL>
<P><STRONG><a name="[bce5ec]"></a>IAPObj::BlankCheck(unsigned, unsigned)</STRONG> (ARM, 64 bytes, Stack size 16 bytes, iap.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = IAPObj::BlankCheck(unsigned, unsigned)</UL>
<BR>[Called By]<UL><LI><a href="#[b251d0]"><<</a> IAPObj::CheckFlash(unsigned, unsigned)
</UL>
<P><STRONG><a name="[bce568]"></a>IAPObj::IapExec()</STRONG> (ARM, 48 bytes, Stack size 8 bytes, iap.o(.text), UNUSED)
<P><STRONG><a name="[bce4dc]"></a>IAPObj::GetSectorNumber(unsigned)</STRONG> (ARM, 52 bytes, Stack size 0 bytes, iap.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[b25038]"><<</a> IAPObj::WriteFlash(unsigned, unsigned, unsigned)
<LI><a href="#[b25148]"><<</a> IAPObj::EraseFlash(unsigned, unsigned)
<LI><a href="#[b251d0]"><<</a> IAPObj::CheckFlash(unsigned, unsigned)
<LI><a href="#[bce2b4]"><<</a> IAPObj::BlockWriteFlash(unsigned, unsigned, unsigned)
<LI><a href="#[bce340]"><<</a> IAPObj::GetSectorBottom(unsigned)
<LI><a href="#[bce3cc]"><<</a> IAPObj::GetSectorTop(unsigned)
<LI><a href="#[bce454]"><<</a> IAPObj::GetSectorSize(unsigned)
</UL>
<P><STRONG><a name="[bce454]"></a>IAPObj::GetSectorSize(unsigned)</STRONG> (ARM, 68 bytes, Stack size 20 bytes, iap.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[bce4dc]">>></a> IAPObj::GetSectorNumber(unsigned)
</UL>
<P><STRONG><a name="[bce3cc]"></a>IAPObj::GetSectorTop(unsigned)</STRONG> (ARM, 88 bytes, Stack size 20 bytes, iap.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[bce4dc]">>></a> IAPObj::GetSectorNumber(unsigned)
</UL>
<P><STRONG><a name="[bce340]"></a>IAPObj::GetSectorBottom(unsigned)</STRONG> (ARM, 96 bytes, Stack size 20 bytes, iap.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[bce4dc]">>></a> IAPObj::GetSectorNumber(unsigned)
</UL>
<P><STRONG><a name="[b25148]"></a>IAPObj::EraseFlash(unsigned, unsigned)</STRONG> (ARM, 104 bytes, Stack size 24 bytes, iap.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = IAPObj::EraseFlash(unsigned, unsigned) -> IAPObj::EraseSector(unsigned, unsigned)</UL>
<BR>[Calls]<UL><LI><a href="#[bce4dc]">>></a> IAPObj::GetSectorNumber(unsigned)
<LI><a href="#[bce700]">>></a> IAPObj::EraseSector(unsigned, unsigned)
<LI><a href="#[bce788]">>></a> IAPObj::SelSector(unsigned, unsigned)
</UL>
<BR>[Called By]<UL><LI><a href="#[b25258]"><<</a> main
</UL>
<P><STRONG><a name="[b25038]"></a>IAPObj::WriteFlash(unsigned, unsigned, unsigned)</STRONG> (ARM, 116 bytes, Stack size 32 bytes, iap.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = IAPObj::WriteFlash(unsigned, unsigned, unsigned) -> IAPObj::UploadtoFlash(unsigned, unsigned, unsigned)</UL>
<BR>[Calls]<UL><LI><a href="#[bce4dc]">>></a> IAPObj::GetSectorNumber(unsigned)
<LI><a href="#[bce674]">>></a> IAPObj::UploadtoFlash(unsigned, unsigned, unsigned)
<LI><a href="#[bce788]">>></a> IAPObj::SelSector(unsigned, unsigned)
</UL>
<BR>[Called By]<UL><LI><a href="#[b25258]"><<</a> main
</UL>
<P><STRONG><a name="[b24e98]"></a>IAPObj::ReadFlash(unsigned, unsigned char*, unsigned)</STRONG> (ARM, 44 bytes, Stack size 8 bytes, iap.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = IAPObj::ReadFlash(unsigned, unsigned char*, unsigned)</UL>
<BR>[Called By]<UL><LI><a href="#[b25258]"><<</a> main
</UL>
<P><STRONG><a name="[bce2b4]"></a>IAPObj::BlockWriteFlash(unsigned, unsigned, unsigned)</STRONG> (ARM, 260 bytes, Stack size 304 bytes, iap.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[bce4dc]">>></a> IAPObj::GetSectorNumber(unsigned)
<LI><a href="#[bce674]">>></a> IAPObj::UploadtoFlash(unsigned, unsigned, unsigned)
<LI><a href="#[bce788]">>></a> IAPObj::SelSector(unsigned, unsigned)
</UL>
<P><STRONG><a name="[b251d0]"></a>IAPObj::CheckFlash(unsigned, unsigned)</STRONG> (ARM, 76 bytes, Stack size 24 bytes, iap.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = IAPObj::CheckFlash(unsigned, unsigned) -> IAPObj::BlankCheck(unsigned, unsigned)</UL>
<BR>[Calls]<UL><LI><a href="#[bce4dc]">>></a> IAPObj::GetSectorNumber(unsigned)
<LI><a href="#[bce5ec]">>></a> IAPObj::BlankCheck(unsigned, unsigned)
</UL>
<BR>[Called By]<UL><LI><a href="#[b25258]"><<</a> main
</UL>
<P><STRONG><a name="[bc952c]"></a>UartObj::Init()</STRONG> (ARM, 140 bytes, Stack size 0 bytes, uart.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[b24c9c]"><<</a> UartObj::UartObj()
</UL>
<P><STRONG><a name="[b24c9c]"></a>UartObj::UartObj()</STRONG> (ARM, 28 bytes, Stack size 8 bytes, uart.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = UartObj::UartObj()</UL>
<BR>[Calls]<UL><LI><a href="#[bc952c]">>></a> UartObj::Init()
</UL>
<BR>[Called By]<UL><LI><a href="#[b25e24]"><<</a> __sti___8_main_cpp
</UL>
<P><STRONG><a name="[bc94b0]"></a>UartObj::UartObj__sub_object()</STRONG> (ARM, 0 bytes, Stack size 8 bytes, uart.o(.text), UNUSED)
<P><STRONG><a name="[bc942c]"></a>UartObj::putchar(unsigned char)</STRONG> (ARM, 60 bytes, Stack size 0 bytes, uart.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[b24d18]"><<</a> UartObj::puts(const char*)
</UL>
<P><STRONG><a name="[b24d18]"></a>UartObj::puts(const char*)</STRONG> (ARM, 48 bytes, Stack size 12 bytes, uart.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = UartObj::puts(const char*)</UL>
<BR>[Calls]<UL><LI><a href="#[bc942c]">>></a> UartObj::putchar(unsigned char)
</UL>
<BR>[Called By]<UL><LI><a href="#[b25258]"><<</a> main
</UL>
<P><STRONG><a name="[b24d9c]"></a>UartObj::Wait()</STRONG> (ARM, 20 bytes, Stack size 0 bytes, uart.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[b25258]"><<</a> main
</UL>
<P><STRONG><a name="[c0df0c]"></a>_printf_pre_padding</STRONG> (Thumb, 48 bytes, Stack size 16 bytes, _printf_pad.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 16 + Unknown Stack Size
<LI>Call Chain = _printf_pre_padding</UL>
<BR>[Calls]<UL><LI><a href="#[c0659c]">>></a> __ARM_call_via_r2
</UL>
<BR>[Called By]<UL><LI><a href="#[c07a64]"><<</a> _printf_int_common
</UL>
<P><STRONG><a name="[c0de88]"></a>_printf_post_padding</STRONG> (Thumb, 36 bytes, Stack size 16 bytes, _printf_pad.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 16 + Unknown Stack Size
<LI>Call Chain = _printf_post_padding</UL>
<BR>[Calls]<UL><LI><a href="#[c0659c]">>></a> __ARM_call_via_r2
</UL>
<BR>[Called By]<UL><LI><a href="#[c07a64]"><<</a> _printf_int_common
</UL>
<P><STRONG><a name="[c0d800]"></a>_printf_longlong_hex</STRONG> (Thumb, 182 bytes, Stack size 88 bytes, _printf_longlong_hex.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 144 + Unknown Stack Size
<LI>Call Chain = _printf_longlong_hex -> _printf_int_common -> _printf_post_padding</UL>
<BR>[Calls]<UL><LI><a href="#[c07a64]">>></a> _printf_int_common
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -