Stair56E UART project

This commit is contained in:
2026-08-05 19:07:52 +08:00
parent 7ca1af130d
commit f5654b70cc
2500 changed files with 619007 additions and 282610 deletions
@@ -0,0 +1,12 @@
FUNC void Initialization(void)
{
SP = _RDWORD(0x10000000);
PC = _RDWORD(0x10000004);
}
LOAD %L INCREMENTAL
Initialization();
@@ -0,0 +1,39 @@
[BREAKPOINTS]
ForceImpTypeAny = 0
ShowInfoWin = 1
EnableFlashBP = 2
BPDuringExecution = 0
[CFI]
CFISize = 0x00
CFIAddr = 0x00
[CPU]
MonModeVTableAddr = 0xFFFFFFFF
MonModeDebug = 0
MaxNumAPs = 0
LowPowerHandlingMode = 0
OverrideMemMap = 0
AllowSimulation = 1
ScriptFile=""
[FLASH]
CacheExcludeSize = 0x00
CacheExcludeAddr = 0x00
MinNumBytesFlashDL = 0
SkipProgOnCRCMatch = 1
VerifyDownload = 1
AllowCaching = 1
EnableFlashDL = 2
Override = 0
Device="ARM7"
[GENERAL]
WorkRAMSize = 0x00
WorkRAMAddr = 0x00
RAMUsageLimit = 0x00
[SWO]
SWOLogFile=""
[MEM]
RdOverrideOrMask = 0x00
RdOverrideAndMask = 0xFFFFFFFF
RdOverrideAddr = 0xFFFFFFFF
WrOverrideOrMask = 0x00
WrOverrideAndMask = 0xFFFFFFFF
WrOverrideAddr = 0xFFFFFFFF
@@ -0,0 +1,16 @@
LOAD 0x10000000
{
EXE 0x10000000
{
startup_xinc.o (RESET, +FIRST)
* (+RO)
}
RW +0000
{
* (+RW,+ZI)
}
ScatterAssert(ImageLength(RW) < 1024 * 28)
}
@@ -0,0 +1,33 @@
LOAD 0x11013000
{
EXE 0x11013000
{
startup_xinc.o (RESET, +FIRST)
* (+RO)
}
;This area is vector
RW1 0x10000100
{
startup_xinc.o(STACK)
}
ScatterAssert(ImageLength(RW1) < (0x800 - 0x100))
RW 0x10001F00
{
; startup_xinc.o(STACK)
* (+RW,+ZI)
*(ram_code)
aeabi_sdiv.o(.text)
uread4.o(.text)
rt_memclr.o(.text)
}
ScatterAssert((0x1F00+ImageLength(RW)) < 1024 * 32 )
RW2 (0x53004000+10*1024)
{
*(ram_em)
}
ScatterAssert((0x53004000+10*1024)+ImageLength(RW2) < (0x53004000+16*1024))
}
@@ -0,0 +1,32 @@
LOAD 0x11015000
{
EXE 0x11015000
{
startup_xinc.o (RESET, +FIRST)
* (+RO)
}
;This area is vector
RW1 0x10000100
{
startup_xinc.o(STACK)
}
ScatterAssert(ImageLength(RW1) < (0x800 - 0x100))
RW 0x10001F00
{
; startup_xinc.o(STACK)
* (+RW,+ZI)
*(ram_code)
aeabi_sdiv.o(.text)
uread4.o(.text)
}
ScatterAssert((0x1F00+ImageLength(RW)) < 1024 * 32 )
RW2 (0x53004000+10*1024)
{
*(ram_em)
}
ScatterAssert((0x53004000+10*1024)+ImageLength(RW2) < (0x53004000+16*1024))
}
@@ -0,0 +1,84 @@
FUNC void InitGpio(void)
{
// Config IOMUX
/*
gpio_mux_ctl_u(33,1);//d2
gpio_mux_ctl_u(34,1);//d3
gpio_mux_ctl_u(35,2);//clk
gpio_mux_ctl_u(36,2);//cs
gpio_mux_ctl_u(37,2);//d0 rx
gpio_mux_ctl_u(38,2);//d1 tx
*/
_WDWORD(0x4000019c, 0x00002A94);
}
FUNC void InitFlash(void)
{
}
FUNC void InitXIP(void)
{
_WDWORD(0x40000104,0x040000);//reset ssi0
_WDWORD(0x40000104,0x040004);//reset ssi0
_WDWORD(0x40000050,0x110000);//close spi0 mclk
_WDWORD(0x40000070,0x1000000);//close spi0 pclk
//config fmc
_WDWORD(0x40000270, 0x0503);
_Sleep_(1);// delay about 400us
_WDWORD(0x40000270, 0x3503);
//config cache
_Sleep_(1);// delay about 400us
_WDWORD(0x52000000, 0x0);
_Sleep_(1);// delay about 400us
_WDWORD(0x52000000, 0x21);
_Sleep_(1);// delay about 400us
_Sleep_(1);// delay about 400us
_Sleep_(1);// delay about 400us
_Sleep_(1);// delay about 400us
//config xip spi
_WDWORD(0x51000008, 0); //disable spi
_WDWORD(0x5100002c,0); //close IE
_WDWORD(0x51000000,0x1F); //32bit SPI data
_WDWORD(0x51000010,0x01); //enable select slave -- SE
_WDWORD(0x51000018,0x0); //TXFTL be set 0
_WDWORD(0x5100001c,0x0); //RXFTL be set 0
_WDWORD(0x5100010c, 0x01);//enable select slave
_WDWORD(0x51000114, 0xFF);//XIP time out
_WDWORD(0x51000014, 0x2);//div 2
//quad
// _WDWORD(0x51000108, (2)|(6<<4)|(2<<9)|(1<<22)|(1<<29)|(1<<23)|(0<<24)|(8<<13));
// _WDWORD(0x51000100, 0x6b);//quad read cmd
// _WDWORD(0x51000104, 0x6b);//quad read cmd
//dual
_WDWORD(0x51000108, (1)|(6<<4)|(2<<9)|(1<<22)|(1<<29)|(1<<23)|(0)|(8<<13));
_WDWORD(0x51000100, 0x3b);//dual read cmd
_WDWORD(0x51000104, 0x3b);//dual read cmd
_WDWORD(0x51000008, 1); //enable spi
}
FUNC void Initialization(void)
{
InitGpio();
InitFlash();
InitXIP();
SP = _RDWORD(0x11013000);
PC = _RDWORD(0x11013004);
_WDWORD(0x4000013C, 0x11013001);
}
LOAD %L INCREMENTAL
Initialization();
Binary file not shown.
@@ -0,0 +1,933 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
<SchemaVersion>1.0</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Extensions>
<cExt>*.c</cExt>
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj; *.o</oExt>
<lExt>*.lib</lExt>
<tExt>*.txt; *.h; *.inc</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
<nMigrate>0</nMigrate>
</Extensions>
<DaveTm>
<dwLowDateTime>0</dwLowDateTime>
<dwHighDateTime>0</dwHighDateTime>
</DaveTm>
<Target>
<TargetName>ble-sdk-xip</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
<CLKADS>12000000</CLKADS>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\Listings\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>0</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>1</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>0</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon>BIN\UL2CM3.DLL</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>UL2CM3</Key>
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>0</periodic>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>0</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<Target>
<TargetName>ble-sdk-xip_single</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
<CLKADS>12000000</CLKADS>
<OPTTT>
<gFlags>0</gFlags>
<BeepAtEnd>1</BeepAtEnd>
<RunSim>1</RunSim>
<RunTarget>0</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\Listings\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget>
</OPTFL>
<CpuCode>0</CpuCode>
<DebugOpt>
<uSim>1</uSim>
<uTrg>0</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>0</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>-1</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon></pMon>
</DebugOpt>
<Breakpoint/>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>0</periodic>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>0</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<Group>
<GroupName>startup</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>1</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h</PathWithFileName>
<FilenameWithoutPath>core_cm0.h</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\startup_xinc.s</PathWithFileName>
<FilenameWithoutPath>startup_xinc.s</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>3</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\system_xinc.c</PathWithFileName>
<FilenameWithoutPath>system_xinc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>application</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>4</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\app_batt.c</PathWithFileName>
<FilenameWithoutPath>app_batt.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\app_task.c</PathWithFileName>
<FilenameWithoutPath>app_task.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\arch_main.c</PathWithFileName>
<FilenameWithoutPath>arch_main.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>7</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\app_sec.c</PathWithFileName>
<FilenameWithoutPath>app_sec.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>8</FileNumber>
<FileType>3</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\rom_symdefs.o</PathWithFileName>
<FilenameWithoutPath>rom_symdefs.o</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>9</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\sleep.c</PathWithFileName>
<FilenameWithoutPath>sleep.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>10</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\ota_server.c</PathWithFileName>
<FilenameWithoutPath>ota_server.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>11</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\ota_flash_interface.c</PathWithFileName>
<FilenameWithoutPath>ota_flash_interface.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\ota_protocol.c</PathWithFileName>
<FilenameWithoutPath>ota_protocol.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\usr_server.c</PathWithFileName>
<FilenameWithoutPath>usr_server.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\aes.c</PathWithFileName>
<FilenameWithoutPath>aes.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>15</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\fast_ota.c</PathWithFileName>
<FilenameWithoutPath>fast_ota.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\src\fast_ota_server.c</PathWithFileName>
<FilenameWithoutPath>fast_ota_server.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>17</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\uart_app\useruart.c</PathWithFileName>
<FilenameWithoutPath>useruart.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\app\uart_app\xc_ring_buffer.c</PathWithFileName>
<FilenameWithoutPath>xc_ring_buffer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>modules_rf</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>19</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\ble\modules\rf\src\rf_extrc.c</PathWithFileName>
<FilenameWithoutPath>rf_extrc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>hal</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.c</PathWithFileName>
<FilenameWithoutPath>ringbuffer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_clock.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_gpio.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_pwr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_timer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_uart.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_wdt.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_systick.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_fmc_spi.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_calib.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>30</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_rtc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_adc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>32</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_aotimer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>33</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_dma.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>34</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_fmc_spi_dma.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>35</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_i2c.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>36</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pga.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_pga.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>37</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_pwm.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>38</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_qdec.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_qdec.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>39</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_spi.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>40</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_spi_dma.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>41</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_sw_i2c.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>42</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.c</PathWithFileName>
<FilenameWithoutPath>xc_drv_uart_dma.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>ble_api</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>43</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\ble\ip\ble\api\xc_gap_api.c</PathWithFileName>
<FilenameWithoutPath>xc_gap_api.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>44</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\ble\ip\ble\api\xc_gatt_client_api.c</PathWithFileName>
<FilenameWithoutPath>xc_gatt_client_api.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>45</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\ble\ip\ble\api\xc_gatt_server_api.c</PathWithFileName>
<FilenameWithoutPath>xc_gatt_server_api.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>modules_nvds</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>46</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\ble\modules\nvds\src\nvds.c</PathWithFileName>
<FilenameWithoutPath>nvds.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>dut</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>47</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\..\component\ble\plf\refip\src\driver\uart\uart.c</PathWithFileName>
<FilenameWithoutPath>uart.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
</ProjectOpt>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,248 @@
;#<FEEDBACK># ARM Linker, 5060960: Last Updated: Thu Dec 18 14:10:14 2025
;VERSION 0.2
;FILE aes.o
__asm___5_aes_c____REV16 <= USED 0
__asm___5_aes_c____REVSH <= USED 0
;FILE app_batt.o
__asm___10_app_batt_c_f5559a01____REV16 <= USED 0
__asm___10_app_batt_c_f5559a01____REVSH <= USED 0
app_batt_add_bas <= USED 0
app_batt_enable_prf <= USED 0
app_batt_init <= USED 0
app_batt_send_lvl <= USED 0
;FILE app_sec.o
__asm___9_app_sec_c_9f4819f3____REV16 <= USED 0
__asm___9_app_sec_c_9f4819f3____REVSH <= USED 0
app_sec_get_bond_status <= USED 0
app_sec_init <= USED 0
app_sec_remove_bond <= USED 0
;FILE app_task.o
__asm___10_app_task_c_app_env____REV16 <= USED 0
__asm___10_app_task_c_app_env____REVSH <= USED 0
app_set_dev_name <= USED 0
app_set_scan_rsp_data <= USED 0
app_stop_advertising <= USED 0
;FILE arch_main.o
__asm___11_arch_main_c_809c0803____REV16 <= USED 0
__asm___11_arch_main_c_809c0803____REVSH <= USED 0
ble_tx_rx_on_irq_config <= USED 0
stack_tag <= USED 0
update_data_count_get <= USED 0
;FILE fast_ota.o
__asm___10_fast_ota_c_33469843____REV16 <= USED 0
__asm___10_fast_ota_c_33469843____REVSH <= USED 0
;FILE fast_ota_server.o
__asm___17_fast_ota_server_c_6263f28e____REV16 <= USED 0
__asm___17_fast_ota_server_c_6263f28e____REVSH <= USED 0
enter_ota_mode <= USED 0
fast_ota_slave_send_data <= USED 0
fast_ota_srv_get_hdl_from_att_idx <= USED 0
;FILE nvds.o
__asm___6_nvds_c_4f985c9b____REV16 <= USED 0
__asm___6_nvds_c_4f985c9b____REVSH <= USED 0
nvds_lock <= USED 0
;FILE rf_extrc.o
__asm___10_rf_extrc_c_8fc8a65a____REV16 <= USED 0
__asm___10_rf_extrc_c_8fc8a65a____REVSH <= USED 0
auto_agc_init <= USED 0
rf_test_pin_init <= USED 0
rf_xtal_cal_set <= USED 0
;FILE ringbuffer.o
ring_buffer_create <= USED 0
ring_buffer_dequeue <= USED 0
ring_buffer_dequeue_arr <= USED 0
ring_buffer_is_empty <= USED 0
ring_buffer_is_full <= USED 0
ring_buffer_num_items <= USED 0
ring_buffer_peek <= USED 0
ring_buffer_queue <= USED 0
ring_buffer_queue_arr <= USED 0
;FILE sleep.o
__asm___7_sleep_c_efd8dd31____REV16 <= USED 0
__asm___7_sleep_c_efd8dd31____REVSH <= USED 0
;FILE startup_xinc.o
;FILE system_xinc.o
__asm___13_system_xinc_c_bf2b7dca____REV16 <= USED 0
__asm___13_system_xinc_c_bf2b7dca____REVSH <= USED 0
_ttywrch <= USED 0
;FILE uart.o
__asm___6_uart_c____REV16 <= USED 0
__asm___6_uart_c____REVSH <= USED 0
;FILE useruart.o
__asm___10_useruart_c_d9474c0e____REV16 <= USED 0
__asm___10_useruart_c_d9474c0e____REVSH <= USED 0
hal_console_clear_rx_fifo <= USED 0
hal_console_get_rx_space <= USED 0
hal_console_write <= USED 0
;FILE usr_server.o
__asm___12_usr_server_c_16ab253a____REV16 <= USED 0
__asm___12_usr_server_c_16ab253a____REVSH <= USED 0
;FILE xc_drv_adc.o
__asm___12_xc_drv_adc_c____REV16 <= USED 0
__asm___12_xc_drv_adc_c____REVSH <= USED 0
;FILE xc_drv_aotimer.o
__asm___16_xc_drv_aotimer_c____REV16 <= USED 0
__asm___16_xc_drv_aotimer_c____REVSH <= USED 0
;FILE xc_drv_calib.o
__asm___14_xc_drv_calib_c_d3c395c8____REV16 <= USED 0
__asm___14_xc_drv_calib_c_d3c395c8____REVSH <= USED 0
xc_flfclk_calcu <= USED 0
xc_rc32k_calib_by_hw <= USED 0
xc_rc32k_calib_by_soft <= USED 0
xc_rc32k_calib_init <= USED 0
xc_rc32k_freq_scope <= USED 0
xc_rc32k_soft_calib_disable <= USED 0
xc_rc32k_soft_calib_enable <= USED 0
xc_rc32k_soft_calib_start <= USED 0
;FILE xc_drv_clock.o
__asm___14_xc_drv_clock_c_54f5dcab____REV16 <= USED 0
__asm___14_xc_drv_clock_c_54f5dcab____REVSH <= USED 0
xc_clock_hfclk_src_get <= USED 0
xc_clock_lfclk_in_get <= USED 0
xc_clock_lfclk_src_get <= USED 0
xc_clock_set_osc32m <= USED 0
xc_clock_set_osc32m_bbpll_16m <= USED 0
xc_clock_set_osc32m_bbpll_24m <= USED 0
xc_clock_set_osc32m_bbpll_32m <= USED 0
xc_clock_set_osc32m_bbpll_48m <= USED 0
xc_clock_set_osc32m_bbpll_64m <= USED 0
xc_clock_set_osc32m_bbpll_96m <= USED 0
xc_clock_set_osc32m_div_16m <= USED 0
xc_clock_set_rc16m <= USED 0
xc_clock_set_rc16m_bbpll_32m <= USED 0
xc_clock_set_rc16m_bbpll_48m <= USED 0
xc_clock_set_rc16m_bbpll_64m <= USED 0
xc_clock_set_rc16m_bbpll_96m <= USED 0
xc_system_param_check <= USED 0
xc_system_param_check_rf24g <= USED 0
;FILE xc_drv_dma.o
__asm___12_xc_drv_dma_c____REV16 <= USED 0
__asm___12_xc_drv_dma_c____REVSH <= USED 0
;FILE xc_drv_fmc_spi.o
__asm___16_xc_drv_fmc_spi_c_0d19a3b4____REV16 <= USED 0
__asm___16_xc_drv_fmc_spi_c_0d19a3b4____REVSH <= USED 0
xc_adc_2v4_calibrate_read <= USED 0
xc_fmc_spi_flash_erase_sector <= USED 0
xc_fmc_spi_flash_power_down <= USED 0
xc_fmc_spi_flash_write <= USED 0
;FILE xc_drv_fmc_spi_dma.o
__asm___20_xc_drv_fmc_spi_dma_c____REV16 <= USED 0
__asm___20_xc_drv_fmc_spi_dma_c____REVSH <= USED 0
;FILE xc_drv_gpio.o
__asm___13_xc_drv_gpio_c_f617b6af____REV16 <= USED 0
__asm___13_xc_drv_gpio_c_f617b6af____REVSH <= USED 0
xc_gpio_read_pin <= USED 0
xc_gpio_toggle_pin <= USED 0
xc_gpio_write_pin <= USED 0
;FILE xc_drv_i2c.o
__asm___12_xc_drv_i2c_c____REV16 <= USED 0
__asm___12_xc_drv_i2c_c____REVSH <= USED 0
;FILE xc_drv_pga.o
__asm___12_xc_drv_pga_c____REV16 <= USED 0
__asm___12_xc_drv_pga_c____REVSH <= USED 0
;FILE xc_drv_pwm.o
__asm___12_xc_drv_pwm_c____REV16 <= USED 0
__asm___12_xc_drv_pwm_c____REVSH <= USED 0
;FILE xc_drv_pwr.o
__asm___12_xc_drv_pwr_c_ed5c409a____REV16 <= USED 0
__asm___12_xc_drv_pwr_c_ed5c409a____REVSH <= USED 0
xc_adc_powerdown <= USED 0
xc_adc_wakeup <= USED 0
xc_deep_sleep <= USED 0
xc_pwr_ao_timer_pclk32k_set <= USED 0
xc_pwr_ao_timer_pclk32m_Set <= USED 0
xc_pwr_ble_sleep_enter <= USED 0
xc_pwr_cpu_sleep_enter <= USED 0
xc_pwr_dcdc_close <= USED 0
xc_pwr_dcdc_init <= USED 0
xc_pwr_dcdc_open <= USED 0
xc_pwr_gpio_lightsleep_wake_config <= USED 0
xc_pwr_gpio_sleep_config <= USED 0
xc_pwr_pwrkey_deepsleep_wake_config <= USED 0
xc_pwr_pwrkey_init <= USED 0
xc_pwr_pwrkey_toggle_pin <= USED 0
xc_pwr_pwrkey_write_pin <= USED 0
xc_pwr_sleep_init <= USED 0
xc_sleep <= USED 0
;FILE xc_drv_qdec.o
__asm___13_xc_drv_qdec_c____REV16 <= USED 0
__asm___13_xc_drv_qdec_c____REVSH <= USED 0
;FILE xc_drv_rtc.o
__asm___12_xc_drv_rtc_c_34360c96____REV16 <= USED 0
__asm___12_xc_drv_rtc_c_34360c96____REVSH <= USED 0
xc_rtc_date_get <= USED 0
xc_rtc_init <= USED 0
xc_rtc_start <= USED 0
xc_rtc_stop <= USED 0
;FILE xc_drv_spi.o
__asm___12_xc_drv_spi_c____REV16 <= USED 0
__asm___12_xc_drv_spi_c____REVSH <= USED 0
;FILE xc_drv_spi_dma.o
__asm___16_xc_drv_spi_dma_c____REV16 <= USED 0
__asm___16_xc_drv_spi_dma_c____REVSH <= USED 0
;FILE xc_drv_sw_i2c.o
__asm___15_xc_drv_sw_i2c_c____REV16 <= USED 0
__asm___15_xc_drv_sw_i2c_c____REVSH <= USED 0
;FILE xc_drv_systick.o
__asm___16_xc_drv_systick_c_b672aa62____REV16 <= USED 0
__asm___16_xc_drv_systick_c_b672aa62____REVSH <= USED 0
delay_ms <= USED 0
;FILE xc_drv_timer.o
__asm___14_xc_drv_timer_c_a67257da____REV16 <= USED 0
__asm___14_xc_drv_timer_c_a67257da____REVSH <= USED 0
xc_timer_init <= USED 0
xc_timer_set_value <= USED 0
xc_timer_start <= USED 0
xc_timer_stop <= USED 0
;FILE xc_drv_uart.o
__asm___13_xc_drv_uart_c_c8f8d781____REV16 <= USED 0
__asm___13_xc_drv_uart_c_c8f8d781____REVSH <= USED 0
xc_uart_ctl_block_reset <= USED 0
xc_uart_disable_rx_it <= USED 0
;FILE xc_drv_uart_dma.o
__asm___17_xc_drv_uart_dma_c____REV16 <= USED 0
__asm___17_xc_drv_uart_dma_c____REVSH <= USED 0
;FILE xc_drv_wdt.o
__asm___12_xc_drv_wdt_c_acf1ef54____REV16 <= USED 0
__asm___12_xc_drv_wdt_c_acf1ef54____REVSH <= USED 0
xc_ext32k_wdt_init <= USED 0
xc_ext32k_wdt_start <= USED 0
xc_wdt_stop <= USED 0
;FILE xc_gap_api.o
__asm___12_xc_gap_api_c_76ebb078____REV16 <= USED 0
__asm___12_xc_gap_api_c_76ebb078____REVSH <= USED 0
xc_ble_activity_stop <= USED 0
xc_ble_bond <= USED 0
xc_ble_bond_cfm <= USED 0
xc_ble_encrypt <= USED 0
xc_ble_encrypt_cfm <= USED 0
xc_ble_gen_random_addr <= USED 0
xc_ble_gen_random_nb <= USED 0
xc_ble_get_dev_info <= USED 0
xc_ble_get_ral_addr <= USED 0
xc_ble_init_create <= USED 0
xc_ble_init_start <= USED 0
xc_ble_req_security <= USED 0
xc_ble_resolve_addr <= USED 0
xc_ble_scan_create <= USED 0
xc_ble_scan_start <= USED 0
xc_ble_set_channel_map <= USED 0
xc_ble_set_irk <= USED 0
xc_ble_set_pkt_size <= USED 0
xc_ble_set_ral_list <= USED 0
xc_ble_set_rx_pkt_size <= USED 0
xc_ble_set_scan_rsp_data <= USED 0
xc_ble_set_white_list <= USED 0
;FILE xc_gatt_client_api.o
__asm___20_xc_gatt_client_api_c_ad56cc7a____REV16 <= USED 0
__asm___20_xc_gatt_client_api_c_ad56cc7a____REVSH <= USED 0
;FILE xc_gatt_server_api.o
__asm___20_xc_gatt_server_api_c_f4c610f4____REV16 <= USED 0
__asm___20_xc_gatt_server_api_c_f4c610f4____REVSH <= USED 0
xc_ble_gatt_service_add <= USED 0
xc_ble_gatt_srv_indicate <= USED 0
;FILE xc_ring_buffer.o
__asm___16_xc_ring_buffer_c_xc_min____REV16 <= USED 0
__asm___16_xc_ring_buffer_c_xc_min____REVSH <= USED 0
xc_max <= USED 0
xc_ring_buffer_empty <= USED 0
@@ -0,0 +1,53 @@
@echo off
set Ota_app_bin=.\ota_app.bin
set Download_bin=.\output_bin\ble_peripheral_uart.bin
set Ota_use_bin=.\output_bin\ota_data.bin
set AES_OUTPUT_BIN= .\output_bin\ota_data_aes.bin
set Host_bin=.\output_tool\host
set Host_addr=0x11002000
set App_bin=.\app.bin
set Loading_addr=0x11013000
REM Back area
set Back_addr=0x20000
set soft_ver=0x10
set hard_ver=0x20
set Is_xip_mode=1
REM If If_add_app is set to 1, then Download_bin = Host_bin + App_bin; else Download_bin = Host_bin.
set Is_add_app=1
REM Set boot2 start app,Only 1 can set 1.
set RUN1=0
set RUN2=1
REM AES Config
set AES_START=1
set KEY=0b0c0d0405060708090a0b0c0d0e0f10
set MODE=ECB
set PADDING=NONE
set BLOCK_SIZE=128Bits
.\output_tool\Double_ota\ge.exe %App_bin% ^
%soft_ver% %hard_ver% ^
%Back_addr% ^
%Loading_addr% ^
%Is_xip_mode% ^
%Ota_use_bin%
.\output_tool\Double_ota\xinchip_bootloader2_tool.exe .\output_tool\Double_ota\boot2 ^
%Host_bin% %Host_addr% %RUN1% ^
%App_bin% %Loading_addr% %RUN2% ^
%Download_bin% %Is_add_app%
REM.\output_tool\aes.exe 1 .\output_bin\ota_data.bin .\output_bin\b.bin 0b0c0d0405060708090a0b0c0d0e0f10 ECB NONE 128Bits
.\output_tool\aes.exe ^
%AES_START% %Ota_use_bin% %AES_OUTPUT_BIN% ^
%KEY% %MODE% %PADDING% %BLOCK_SIZE%
copy %Download_bin% .\
@@ -0,0 +1,57 @@
@echo off
set Download_bin=.\output_bin\ble_peripheral_single.bin
set Ota_use_bin=.\output_bin\single_ota_data.bin
set AES_OUTPUT_BIN= .\output_bin\single_ota_data_aes.bin
set Host_bin=.\output_tool\host
set Host_addr=0x11002000
set App_bin=.\app.bin
set App_loading_addr=0x11015000
set App_save_addr=0x15000
set Ota_app_bin=.\ota_app.bin
set ota_Loading_Save_addr=0x11011000
set soft_ver=0x10
set hard_ver=0x20
set Is_xip_mode=1
REM If If_add_app is set to 1, then Download_bin = Host_bin + Ota_app_bin + App_bin; else Download_bin = Host_bin + Ota_app_bin.
set Is_add_app=1
REM Set boot2 start app,Only 1 can set 1.
set RUN1=0
set RUN2=0
set RUN3=1
REM AES Config
set AES_START=1
set KEY=0b0c0d0405060708090a0b0c0d0e0f10
set MODE=ECB
set PADDING=NONE
set BLOCK_SIZE=128Bits
.\output_tool\Single_ota\ge_single.exe %App_bin% ^
%soft_ver% %hard_ver% ^
%App_save_addr% %App_loading_addr% ^
%Ota_app_bin% %ota_Loading_Save_addr% ^
%Is_xip_mode% ^
%Ota_use_bin%
.\output_tool\Single_ota\xinchip_bootloader2_tool_single.exe .\output_tool\Single_ota\boot2_single_ota ^
%Host_bin% %Host_addr% %RUN1% ^
%Ota_app_bin% %ota_Loading_Save_addr% %RUN2% ^
%App_bin% %App_loading_addr% %RUN3% ^
%Download_bin% %Is_add_app%
.\output_tool\aes.exe ^
%AES_START% %Ota_use_bin% %AES_OUTPUT_BIN% ^
%KEY% %MODE% %PADDING% %BLOCK_SIZE%
copy %Download_bin% .\
@@ -0,0 +1,404 @@
#!/usr/bin/env python
#-*- coding:UTF-8 -*-
import socket
from select import select
import time
import os
import sys
import threading
import json
import struct
import binascii
import time
import re
import fileinput
import io
import logging
replace = {
"co_default_bdaddr":"0x0",
"ke_msg_alloc":"0x0",
"ke_msg_send":"0x0",
"ke_msg_send_basic":"0x0",
"ke_state_set":"0x0",
"ke_task_create":"0x0",
"ke_state_get":"0x0",
"ke_msg_discard":"0x0",
"ke_msg_forward":"0x0",
"ke_msg_in_queue":"0x0",
"ke_msg_src_id_get":"0x0",
"ke_free":"0x0",
"ke_msg_free":"0x0",
"ke_check_malloc":"0x0",
"rwip_init":"0x0",
"rwip_schedule":"0x0",
"rwip_rf":"0x0",
"BLE_Handler":"0x0",
"co_buf_alloc":"0x0",
"co_buf_copy_data_from_mem":"0x0",
"co_buf_release":"0x0",
"co_djob_prepare":"0x0",
"co_djob_reg":"0x0",
"co_djob_unreg":"0x0",
"co_list_extract":"0x0",
"co_list_extract_after":"0x0",
"co_list_pop_front":"0x0",
"co_list_push_back":"0x0",
"co_list_push_front":"0x0",
"co_time_get":"0x0",
"co_time_timer_init":"0x0",
"co_time_timer_set":"0x0",
"co_time_timer_stop":"0x0",
"aes_c1":"0x0",
"aes_decrypt":"0x0",
"aes_encrypt":"0x0",
"aes_f4":"0x0",
"aes_f5":"0x0",
"aes_f6":"0x0",
"aes_g2":"0x0",
"aes_rand":"0x0",
"aes_cmac":"0x0",
"co_buf_head_release":"0x0",
"co_buf_head_reserve":"0x0",
"co_util_pack":"0x0",
"co_util_unpack":"0x0",
"rwip_reset":"0x0",
"aes_rpa_resolve":"0x0",
"co_buf_reuse":"0x0",
"co_buf_size":"0x0",
"co_buf_copy":"0x0",
"co_buf_duplicate":"0x0",
"co_buf_tail_release":"0x0",
"co_list_init":"0x0",
"ble_util_buf_rx_free":"0x0",
"ble_util_buf_acl_tx_alloc":"0x0",
"co_buf_cb_free_set":"0x0",
"ke_malloc":"0x0",
"co_list_insert_after":"0x0",
"ke_timer_active":"0x0",
"ke_timer_clear":"0x0",
"ke_timer_set":"0x0",
"co_buf_acquire":"0x0",
"co_buf_tail_reserve":"0x0",
"co_buf_copy_data_to_mem":"0x0",
"co_list_insert_before":"0x0",
"rom_env":"0x0",
"rwip_param":"0x0",
"one_bits":"0x0",
"hci_rd_rem_ver_info_cmd_handler":"0x0",
"hci_le_con_upd_cmd_handler":"0x0",
"hci_le_rd_chnl_map_cmd_handler":"0x0",
"hci_le_rd_rem_feats_cmd_handler":"0x0",
"hci_le_en_enc_cmd_handler":"0x0",
"hci_le_ltk_req_reply_cmd_handler":"0x0",
"hci_le_ltk_req_neg_reply_cmd_handler":"0x0",
"hci_le_rem_con_param_req_reply_cmd_handler":"0x0",
"hci_le_rem_con_param_req_neg_reply_cmd_handler":"0x0",
"hci_le_set_data_len_cmd_handler":"0x0",
"hci_vs_set_pref_slave_latency_cmd_handler":"0x0",
"hci_vs_set_pref_slave_evt_dur_cmd_handler":"0x0",
"hci_vs_set_max_rx_size_and_time_cmd_handler":"0x0",
"hci_rd_rssi_cmd_handler":"0x0",
"llm_ch_map_update_ind_handler":"0x0",
"llc_loc_llcp_rsp_to_handler":"0x0",
"llc_rem_llcp_rsp_to_handler":"0x0",
"llc_encrypt_ind_handler":"0x0",
"llc_op_ver_exch_ind_handler":"0x0",
"llc_op_feats_exch_ind_handler":"0x0",
"llc_op_encrypt_ind_handler":"0x0",
"llc_op_dl_upd_ind_handler":"0x0",
"llc_op_con_upd_ind_handler":"0x0",
"llc_op_ch_map_upd_ind_handler":"0x0",
"lld_llcp_rx_ind_handler":"0x0",
"lld_llcp_tx_cfm_handler":"0x0",
"lld_acl_rx_ind_handler":"0x0",
"lld_acl_tx_cfm_handler":"0x0",
"lld_con_param_upd_cfm_handler":"0x0",
"lld_ch_map_upd_cfm_handler":"0x0",
"lld_con_offset_upd_ind_handler":"0x0",
"hci_command_llc_handler":"0x0",
"hci_acl_data_handler":"0x0",
"ke_event_callback_set":"0x0",
"ke_event_clear":"0x0",
"ke_event_set":"0x0",
"ble_util_nb_good_channels":"0x0",
"ble_util_pkt_dur_in_us":"0x0",
"co_bdaddr_compare":"0x0",
"lld_ch_assess_data_get":"0x0",
"lld_ch_map_set":"0x0",
"lld_read_clock":"0x0",
"lld_res_list_peer_update":"0x0",
"lld_white_list_add":"0x0",
"rwip_prevent_sleep_clear":"0x0",
"rwip_prevent_sleep_set":"0x0",
"sch_plan_rem":"0x0",
"aes_rpa_gen":"0x0",
"ble_util_buf_adv_tx_alloc":"0x0",
"ble_util_buf_adv_tx_free":"0x0",
"co_null_bdaddr":"0x0",
"co_null_key":"0x0",
"llc_con_move_cbk":"0x0",
"llc_start":"0x0",
"lld_adv_adv_data_update":"0x0",
"lld_adv_rand_addr_update":"0x0",
"lld_adv_restart":"0x0",
"lld_adv_scan_rsp_data_update":"0x0",
"lld_adv_start":"0x0",
"lld_adv_stop":"0x0",
"lld_white_list_rem":"0x0",
"lld_init_rand_addr_update":"0x0",
"lld_res_list_add":"0x0",
"lld_res_list_clear":"0x0",
"lld_res_list_local_rpa_get":"0x0",
"lld_res_list_peer_rpa_get":"0x0",
"lld_res_list_priv_mode_update":"0x0",
"lld_res_list_rem":"0x0",
"lld_scan_rand_addr_update":"0x0",
"lld_init_start":"0x0",
"lld_init_stop":"0x0",
"sch_plan_req":"0x0",
"sch_plan_set":"0x0",
"co_rate_to_phy":"0x0",
"lld_scan_params_update":"0x0",
"lld_scan_start":"0x0",
"lld_scan_stop":"0x0",
"lld_rpa_renew":"0x0",
"ke_mem_init":"0x0",
"co_buf_init":"0x0",
"rwip_sleep":"0x0",
"em_ble_base_address_table_0":"0x0",
"em_ble_base_address_table_1":"0x0",
"em_ble_base_address_table_2":"0x0",
"em_ble_base_address_table_3":"0x0",
"em_ble_base_address_table_4":"0x0",
"em_ble_base_address_table_5":"0x0",
"em_ble_base_address_table_6":"0x0",
"em_ble_base_address_table_7":"0x0",
"em_ble_base_address_table_8":"0x0",
"em_ble_base_address_table_9":"0x0",
"em_ble_base_address_table_10":"0x0",
"ble_util_buf_init_env":"0x0",
"PATCH_FUN":"0x0",
"lld_adv_env":"0x0",
"sch_arb_remove":"0x0",
"sch_slice_fg_remove":"0x0",
"llc_env":"0x0",
"llc_proc_err_ind":"0x0",
"llc_stop":"0x0",
"ll_channel_map_ind_handler":"0x0",
"ll_connection_param_req_handler":"0x0",
"ll_connection_param_rsp_handler":"0x0",
"ll_connection_update_ind_handler":"0x0",
"ll_enc_req_handler":"0x0",
"ll_enc_rsp_handler":"0x0",
"ll_feature_req_handler":"0x0",
"ll_feature_rsp_handler":"0x0",
"ll_length_req_handler":"0x0",
"ll_length_rsp_handler":"0x0",
"ll_min_used_channels_ind_handler":"0x0",
"ll_pause_enc_req_handler":"0x0",
"ll_pause_enc_rsp_handler":"0x0",
"ll_reject_ext_ind_handler":"0x0",
"ll_reject_ind_handler":"0x0",
"ll_slave_feature_req_handler":"0x0",
"ll_start_enc_req_handler":"0x0",
"ll_start_enc_rsp_handler":"0x0",
"ll_unknown_rsp_handler":"0x0",
"ll_version_ind_handler":"0x0",
"ble_util_buf_acl_tx_free":"0x0",
"lld_rxdesc_check":"0x0",
"lld_rxdesc_free":"0x0",
"rwip_priority":"0x0",
"sch_arb_insert":"0x0",
"sch_prog_push":"0x0",
"FMC_SPI_Flash_RDID":"0x0",
"FMC_SPI_Flash_RUID":"0x0",
"FMC_SPI_Flash_WakeUp":"0x0",
"FMC_SPI_Init_Oprt":"0x0",
"FMC_SPI_Flash_PowerDown":"0x0",
"FMC_SPI_FlashRead":"0x0",
"FMC_SPI_FlashWrite":"0x0",
"FMC_SPI_Flash_Erase_Sector":"0x0",
"FMC_SPI_Flash_PowerDown":"0x0",
"FMC_SPI_Flash_WakeUp":"0x0",
"llc_cleanup":"0x0",
"llc_cmd_stat_send":"0x0",
"llc_llcp_send":"0x0",
"llc_llcp_state_set":"0x0",
"llc_proc_get":"0x0",
"llc_proc_id_get":"0x0",
"llc_proc_init":"0x0",
"llc_proc_reg":"0x0",
"llc_proc_state_get":"0x0",
"llc_proc_state_set":"0x0",
"llc_proc_timer_pause_set":"0x0",
"llc_proc_timer_set":"0x0",
"llc_proc_unreg":"0x0",
"lld_con_stop":"0x0",
"lld_adv_evt_start_cbk":"0x0",
"rwip_env":"0x0",
"rwip_prog_delay":"0x0",
"rwip_time_get":"0x0",
"rwip_wakeup_end":"0x0",
"sch_arb_env":"0x0",
"lld_adv_frm_cbk":"0x0",
"rwip_timer_alarm_handler":"0x0",
"rwip_timer_arb_handler":"0x0",
"rwip_timer_co_handler":"0x0",
"lld_env":"0x0",
"aa_gen":"0x0",
"lld_adv_init":"0x0",
"lld_con_init":"0x0",
"lld_core_init":"0x0",
"lld_rpa_renew_env":"0x0",
"lld_channel_assess":"0x0",
"lld_con_env":"0x0",
"lld_con_tx_len_update":"0x0",
"lld_exp_sync_pos_tab":"0x0",
"lld_instant_proc_end":"0x0",
"prf_dst_task_get":"0x0",
"rom_env_init":"0x0",
"gapc_get_bdaddr":"0x0",
"gatt_db_svc16_add":"0x0",
"gatt_db_svc_add":"0x0",
"gatt_db_svc_remove":"0x0",
"_gatt_srv_att_read_get_cfm":"0x0",
"_gatt_srv_att_val_set_cfm":"0x0",
"gatt_srv_event_send":"0x0",
"gatt_user_srv_register":"0x0",
"llc_msg_handler_tab":"0x0",
"rom_llc_state":"0x0",
"lld_con_evt_start_cbk":"0x0",
"lld_con_evt_canceled_cbk":"0x0",
"co_sca2ppm":"0x0",
"lld_con_evt_time_update":"0x0",
"lld_con_max_lat_calc":"0x0",
"lld_con_sched":"0x0",
"sch_slice_per_add":"0x0",
"rwble_isr":"0x0",
"rwip_isr":"0x0",
"lld_con_frm_isr":"0x0",
"ke_task_schedule":"0x0",
"lld_adv_frm_isr":"0x0",
"sv_lock":"0x0",
"sv_txlen":"0x0",
"rom_lld_con_rx":"0x0",
"rom_lld_con_evt_start_cbk":"0x0",
"rom_lld_con_frm_isr":"0x0",
"gatt_cli_mtu_exch":"0x0",
"rom_lld_disable_latency":"0x0",
"rom_lld_enable_latency":"0x0",
"evt_start":"0x0",
"co_rand_word":"0x0",
"co_random_init":"0x0",
"adv_evt_start":"0x0",
"gatt_srv_read_api_tbl":"0x0",
"gatt_srv_write_api_tbl":"0x0",
}
def traverse(f):
fs = os.listdir(f)
for f1 in fs:
tmp_path = os.path.join(f, f1)
if not os.path.isdir(tmp_path):
if os.path.isfile(tmp_path):
if isinstance(tmp_path, str):
# if tmp_path.endswith('2023_11_22.o'):
if tmp_path.endswith('addr_0x800.o'):
#print("ssss", tmp_path)
logger.info(tmp_path)
find_str(tmp_path)
else:
traverse(tmp_path)
def traverse_host(f):
fs = os.listdir(f)
for f1 in fs:
tmp_path = os.path.join(f, f1)
if not os.path.isdir(tmp_path):
if os.path.isfile(tmp_path):
if isinstance(tmp_path, str):
if tmp_path.endswith('rom_symdefs.o'):
#print("ssss", tmp_path)
logger.info(tmp_path)
find_str(tmp_path)
else:
traverse_host(tmp_path)
def traverse_for_replace(f):
fs = os.listdir(f)
for f1 in fs:
tmp_path = os.path.join(f, f1)
if not os.path.isdir(tmp_path):
if os.path.isfile(tmp_path):
if isinstance(tmp_path, str):
if tmp_path.endswith('rom_symdefs.o'):
logger.info(tmp_path)
replace_str(tmp_path)
def find_str(file):
text_lines = set()
with io.open(file, 'r', encoding='utf-8') as fd:
for line in fd:
for key, value in replace.items():
if re.search(key, line.strip()) != None and len(key)+13== len(line.strip()):
#print(line)
logger.info(line)
replace[key] = line
text_lines.add(line.strip())
text_functions = {line.split()[-1] for line in text_lines}
replace_keys = set(replace.keys())
print("del record key start")
for func in list(replace.keys()):
if func not in text_functions:
print(func)
del replace[func]
print("del record key end")
fd.close()
logger.info(str(replace))
def replace_str(file):
header = "#<SYMDEFS># ARM Linker, 5060750: Last Updated: Tue Sep 05 15:30:26 2023\n"
with io.open(r'tmp.c', 'w', encoding='utf-8') as fw:
fw.write(header)
for key, value in replace.items():
#print(len(key)+13, len(line.strip()), key, line.strip())
replace_flag = False
fw.write(value)
logger.info(value)
#print("line2", value, key)
print("line2", value)
fw.close()
with io.open(file, 'w', encoding='utf-8') as fw:
with io.open(r'tmp.c', 'r', encoding='utf-8') as file:
for line in file:
fw.write(line)
if __name__ == "__main__":
if(os.path.exists("log.txt")):
os.remove("log.txt")
logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
#traverse("./Project/example/ble/rom_stack/mdk/")
traverse_host("./Project/example/ble/ble_peripheral_lib/mdk/")
#print(replace)
traverse_for_replace("./Project/example/ble/ble_peripheral/app/src")
@@ -0,0 +1,125 @@
@echo off
cd ..\..\..\..\..\
REM set "folderPath=.\component\boot2\mdk\Objects"
REM if exist "%folderPath%" (
REM rmdir /s /q "%folderPath%"
REM echo Folder deleted successfully.
REM ) else (
REM echo The folder does not exist.
REM )
set UV=C:\Keil_v5\UV4\UV4.exe
::查找uvprojx工程文件
for /f "usebackq delims=" %%j in (`dir /s /b %cd%\component\boot2.uvprojx`) do (
if exist %%j (
set UV_PRO_PATH="%%j"))
echo ---------------------------------------------------------------
echo %UV_PRO_PATH%
echo Init building ...
echo >build_log.txt
%UV% -j0 -sg -b %UV_PRO_PATH% -o %cd%\build_log.txt
type build_log.txt
REM ::查找uvprojx工程文件
REM for /f "usebackq delims=" %%j in (`dir /s /b %cd%\rom_stack.uvprojx`) do (
REM if exist %%j (
REM set UV_PRO_PATH="%%j"))
REM echo ---------------------------------------------------------------
REM echo %UV_PRO_PATH%
REM echo Init building ...
REM echo >build_log.txt
REM %UV% -j0 -sg -b %UV_PRO_PATH% -o %cd%\build_log.txt
REM type build_log.txt
python .\project\example\ble\ble_peripheral_lib\mdk\rom_auto_complie_host.py
REM set "folderPath=.\project\example\ble\ble_peripheral_lib\mdk\Objects"
REM if exist "%folderPath%" (
REM rmdir /s /q "%folderPath%"
REM echo Folder deleted successfully.
REM ) else (
REM echo The folder does not exist.
REM )
rd .\project\example\ble\ble_peripheral_lib\mdk\Objects /s/q
::查找uvprojx工程文件
for /f "usebackq delims=" %%j in (`dir /s /b %cd%\ble_peripheral_lib.uvprojx`) do (
if exist %%j (
set UV_PRO_PATH="%%j"))
echo ---------------------------------------------------------------
echo %UV_PRO_PATH%
echo Init building ...
echo >build_log.txt
%UV% -j0 -sg -b %UV_PRO_PATH% -o %cd%\build_log.txt
type build_log.txt
:: 替换符合表
python .\project\example\ble\ble_peripheral\mdk\rom_auto_complie.py
@REM copy .\Project\example\ble\ble_peripheral_lib\mdk\Objects\Xinc_ble_sdk.lib .\Project\example\ble\ble_peripheral\app\src\Xinc_ble_sdk.lib
copy .\Project\example\ble\rom_stack\mdk\stack_d7c6fc5c_2023_11_22.bin .\Project\example\ble\ble_peripheral\mdk\output_bin\stack.bin
copy .\component\boot2\mdk\boot2 .\Project\example\ble\ble_peripheral\mdk\output_bin\boot2
REM set "folderPath=.\project\example\ble\ble_peripheral\mdk\Objects"
REM if exist "%folderPath%" (
REM rmdir /s /q "%folderPath%"
REM echo Folder deleted successfully.
REM ) else (
REM echo The folder does not exist.
REM )
copy .\project\example\ble\ble_peripheral\app\src\rom_symdefs.o .\project\example\ble\ble_peripheral_ota\app\src\rom_symdefs.o
:: ble_peripheral_ota.uvprojx
for /f "usebackq delims=" %%j in (`dir /s /b %cd%\ble_peripheral_ota.uvprojx`) do (
if exist %%j (
set UV_PRO_PATH="%%j"))
echo ---------------------------------------------------------------
echo %UV_PRO_PATH%
echo Init building ...
echo >build_log.txt
%UV% -j0 -sg -b %UV_PRO_PATH% -o %cd%\build_log.txt
type build_log.txt
copy .\project\example\ble\ble_peripheral\app\src\rom_symdefs.o .\project\example\ble\ble_peripheral_uart\app\src\rom_symdefs.o
:: ble_peripheral_uart.uvprojx
for /f "usebackq delims=" %%j in (`dir /s /b %cd%\ble_peripheral_uart.uvprojx`) do (
if exist %%j (
set UV_PRO_PATH="%%j"))
echo ---------------------------------------------------------------
echo %UV_PRO_PATH%
echo Init building ...
echo >build_log.txt
%UV% -j0 -sg -b %UV_PRO_PATH% -o %cd%\build_log.txt
type build_log.txt
::查找uvprojx工程文件
for /f "usebackq delims=" %%j in (`dir /s /b %cd%\ble_peripheral.uvprojx`) do (
if exist %%j (
set UV_PRO_PATH="%%j"))
echo ---------------------------------------------------------------
echo %UV_PRO_PATH%
echo Init building ...
echo >build_log.txt
%UV% -j0 -sg -b %UV_PRO_PATH% -o %cd%\build_log.txt
type build_log.txt
copy .\project\example\ble\ble_peripheral_lib\mdk\host.bin .\Project\example\ble\ble_peripheral\output_bin\host.bin
copy .\project\example\ble\ble_peripheral_lib\mdk\host.bin .\Project\example\ble\ble_peripheral\mdk\output_tool\host
copy .\project\example\ble\ble_peripheral_lib\mdk\host.bin .\Project\example\ble\ble_peripheral_ota\mdk\output_tool\host
copy .\project\example\ble\ble_peripheral_lib\mdk\host.bin .\Project\example\ble\ble_peripheral_uart\mdk\output_tool\host
copy .\Project\example\ble\ble_peripheral\mdk\app.bin .\Project\example\ble\ble_peripheral\output_bin\app.bin
copy .\component\boot2\mdk\boot2 .\Project\example\ble\ble_peripheral\output_bin\boot2
copy .\component\boot2\mdk\boot2 .\Project\example\ble\ble_peripheral\mdk\output_tool\Double_ota\boot2
.\Project\example\ble\ble_peripheral\output_bin\xinchip_bootloader2_tool.exe .\Project\example\ble\ble_peripheral\output_bin\boot2 ^
.\Project\example\ble\ble_peripheral\output_bin\host.bin 0x11002000 0 ^
.\Project\example\ble\ble_peripheral\output_bin\app.bin 0x11013000 1 ^
.\Project\example\ble\ble_peripheral\output_bin\ble_peripheral.bin 1
cd .\project\example\ble\ble_peripheral\mdk