diff options
-rw-r--r-- | demos/ARMCM3-STM32F103-GCC/keil/ch.uvopt | 2007 | ||||
-rw-r--r-- | demos/ARMCM3-STM32F103-GCC/keil/ch.uvproj | 1040 | ||||
-rw-r--r-- | os/ports/RVCT/ARMCMx/STM32/cmparams.h | 56 | ||||
-rw-r--r-- | os/ports/RVCT/ARMCMx/STM32/vectors.s | 305 | ||||
-rw-r--r-- | os/ports/RVCT/ARMCMx/chcore.c | 45 | ||||
-rw-r--r-- | os/ports/RVCT/ARMCMx/chcore.h | 325 | ||||
-rw-r--r-- | os/ports/RVCT/ARMCMx/chcore_v7m.c | 46 | ||||
-rw-r--r-- | os/ports/RVCT/ARMCMx/chcore_v7m.h | 252 | ||||
-rw-r--r-- | os/ports/RVCT/ARMCMx/chcoreasm_v7m.s | 134 | ||||
-rw-r--r-- | os/ports/RVCT/ARMCMx/chtypes.h | 80 | ||||
-rw-r--r-- | os/ports/RVCT/ARMCMx/cstartup.s | 109 | ||||
-rw-r--r-- | os/ports/RVCT/ARMCMx/nvic.c | 75 | ||||
-rw-r--r-- | os/ports/RVCT/ARMCMx/nvic.h | 192 |
13 files changed, 4666 insertions, 0 deletions
diff --git a/demos/ARMCM3-STM32F103-GCC/keil/ch.uvopt b/demos/ARMCM3-STM32F103-GCC/keil/ch.uvopt new file mode 100644 index 000000000..2402a0bd6 --- /dev/null +++ b/demos/ARMCM3-STM32F103-GCC/keil/ch.uvopt @@ -0,0 +1,2007 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?> +<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd"> + + <SchemaVersion>1.0</SchemaVersion> + + <Header>### uVision Project, (C) Keil Software</Header> + + <Extensions> + <cExt>*.c</cExt> + <aExt>*.s*; *.src; *.a*</aExt> + <oExt>*.obj</oExt> + <lExt>*.lib</lExt> + <tExt>*.txt; *.h; *.inc</tExt> + <pExt>*.plm</pExt> + <CppX>*.cpp</CppX> + </Extensions> + + <DaveTm> + <dwLowDateTime>0</dwLowDateTime> + <dwHighDateTime>0</dwHighDateTime> + </DaveTm> + + <Target> + <TargetName>Demo</TargetName> + <ToolsetNumber>0x4</ToolsetNumber> + <ToolsetName>ARM-ADS</ToolsetName> + <TargetOption> + <CLKADS>8000000</CLKADS> + <OPTTT> + <gFlags>1</gFlags> + <BeepAtEnd>1</BeepAtEnd> + <RunSim>1</RunSim> + <RunTarget>0</RunTarget> + </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>.\lst\</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>255</CpuCode> + <Books> + <Book> + <Number>0</Number> + <Title>Reference Manual</Title> + <Path>DATASHTS\ST\STM32F10xxx.PDF</Path> + </Book> + </Books> + <DllOpt> + <SimDllName>SARMCM3.DLL</SimDllName> + <SimDllArguments></SimDllArguments> + <SimDlgDllName>DARMSTM.DLL</SimDlgDllName> + <SimDlgDllArguments>-pSTM32F103RB</SimDlgDllArguments> + <TargetDllName>SARMCM3.DLL</TargetDllName> + <TargetDllArguments></TargetDllArguments> + <TargetDlgDllName>TARMSTM.DLL</TargetDlgDllName> + <TargetDlgDllArguments>-pSTM32F103RB</TargetDlgDllArguments> + </DllOpt> + <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>0</tGomain> + <tRbreak>1</tRbreak> + <tRwatch>1</tRwatch> + <tRmem>1</tRmem> + <tRfunc>0</tRfunc> + <tRbox>1</tRbox> + <sRunDeb>0</sRunDeb> + <sLrtime>0</sLrtime> + <nTsel>8</nTsel> + <sDll></sDll> + <sDllPa></sDllPa> + <sDlgDll></sDlgDll> + <sDlgPa></sDlgPa> + <sIfile></sIfile> + <tDll></tDll> + <tDllPa></tDllPa> + <tDlgDll></tDlgDll> + <tDlgPa></tDlgPa> + <tIfile></tIfile> + <pMon>STLink\ST-LINKIII-KEIL.dll</pMon> + </DebugOpt> + <TargetDriverDllRegistry> + <SetRegEntry> + <Number>0</Number> + <Key>DLGTARM</Key> + <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=-1,-1,-1,-1,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)</Name> + </SetRegEntry> + <SetRegEntry> + <Number>0</Number> + <Key>ARMDBGFLAGS</Key> + <Name></Name> + </SetRegEntry> + <SetRegEntry> + <Number>0</Number> + <Key>ST-LINKIII-KEIL</Key> + <Name>-S</Name> + </SetRegEntry> + <SetRegEntry> + <Number>0</Number> + <Key>UL2CM3</Key> + <Name>-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000)</Name> + </SetRegEntry> + </TargetDriverDllRegistry> + <MemoryWindow1> + <Mm> + <WinNumber>1</WinNumber> + <SubType>0</SubType> + <ItemText>0x08005ee0</ItemText> + </Mm> + </MemoryWindow1> + <MemoryWindow2> + <Mm> + <WinNumber>2</WinNumber> + <SubType>0</SubType> + <ItemText>0x08000000</ItemText> + </Mm> + </MemoryWindow2> + <DebugFlag> + <trace>0</trace> + <periodic>1</periodic> + <aLwin>1</aLwin> + <aCover>0</aCover> + <aSer1>0</aSer1> + <aSer2>0</aSer2> + <aPa>0</aPa> + <viewmode>1</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> + </TargetOption> + </Target> + + <Group> + <GroupName>board</GroupName> + <tvExp>0</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <File> + <GroupNumber>1</GroupNumber> + <FileNumber>1</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\boards\OLIMEX_STM32_P103\board.c</PathWithFileName> + <FilenameWithoutPath>board.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>1</GroupNumber> + <FileNumber>2</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\boards\OLIMEX_STM32_P103\board.h</PathWithFileName> + <FilenameWithoutPath>board.h</FilenameWithoutPath> + </File> + </Group> + + <Group> + <GroupName>port</GroupName> + <tvExp>0</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>3</FileNumber> + <FileType>2</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\ports\RVCT\ARMCMx\cstartup.s</PathWithFileName> + <FilenameWithoutPath>cstartup.s</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>4</FileNumber> + <FileType>2</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\ports\RVCT\ARMCMx\STM32\vectors.s</PathWithFileName> + <FilenameWithoutPath>vectors.s</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>5</FileNumber> + <FileType>2</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\ports\RVCT\ARMCMx\chcoreasm_v7m.s</PathWithFileName> + <FilenameWithoutPath>chcoreasm_v7m.s</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>6</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\ports\RVCT\ARMCMx\chcore.c</PathWithFileName> + <FilenameWithoutPath>chcore.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>7</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\ports\RVCT\ARMCMx\chcore_v7m.c</PathWithFileName> + <FilenameWithoutPath>chcore_v7m.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>8</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\ports\RVCT\ARMCMx\nvic.c</PathWithFileName> + <FilenameWithoutPath>nvic.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>9</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\ports\RVCT\ARMCMx\chcore.h</PathWithFileName> + <FilenameWithoutPath>chcore.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>10</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>37</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\ports\RVCT\ARMCMx\chcore_v7m.h</PathWithFileName> + <FilenameWithoutPath>chcore_v7m.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>11</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\ports\RVCT\ARMCMx\chtypes.h</PathWithFileName> + <FilenameWithoutPath>chtypes.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>12</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\ports\RVCT\ARMCMx\nvic.h</PathWithFileName> + <FilenameWithoutPath>nvic.h</FilenameWithoutPath> + </File> + </Group> + + <Group> + <GroupName>kernel</GroupName> + <tvExp>0</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>13</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chcond.c</PathWithFileName> + <FilenameWithoutPath>chcond.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>14</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chdebug.c</PathWithFileName> + <FilenameWithoutPath>chdebug.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>15</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chdynamic.c</PathWithFileName> + <FilenameWithoutPath>chdynamic.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>16</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chevents.c</PathWithFileName> + <FilenameWithoutPath>chevents.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>17</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chheap.c</PathWithFileName> + <FilenameWithoutPath>chheap.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>18</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chlists.c</PathWithFileName> + <FilenameWithoutPath>chlists.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>19</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chmboxes.c</PathWithFileName> + <FilenameWithoutPath>chmboxes.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>20</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chmemcore.c</PathWithFileName> + <FilenameWithoutPath>chmemcore.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>21</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chmempools.c</PathWithFileName> + <FilenameWithoutPath>chmempools.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>22</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chmsg.c</PathWithFileName> + <FilenameWithoutPath>chmsg.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>23</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chmtx.c</PathWithFileName> + <FilenameWithoutPath>chmtx.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>24</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chqueues.c</PathWithFileName> + <FilenameWithoutPath>chqueues.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>25</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chregistry.c</PathWithFileName> + <FilenameWithoutPath>chregistry.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>26</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>11</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chschd.c</PathWithFileName> + <FilenameWithoutPath>chschd.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>27</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chsem.c</PathWithFileName> + <FilenameWithoutPath>chsem.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>28</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chsys.c</PathWithFileName> + <FilenameWithoutPath>chsys.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>29</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chthreads.c</PathWithFileName> + <FilenameWithoutPath>chthreads.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>30</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\src\chvt.c</PathWithFileName> + <FilenameWithoutPath>chvt.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>31</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\ch.h</PathWithFileName> + <FilenameWithoutPath>ch.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>32</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chbsem.h</PathWithFileName> + <FilenameWithoutPath>chbsem.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>33</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chcond.h</PathWithFileName> + <FilenameWithoutPath>chcond.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>34</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chdebug.h</PathWithFileName> + <FilenameWithoutPath>chdebug.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>35</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chdynamic.h</PathWithFileName> + <FilenameWithoutPath>chdynamic.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>36</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chevents.h</PathWithFileName> + <FilenameWithoutPath>chevents.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>37</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chfiles.h</PathWithFileName> + <FilenameWithoutPath>chfiles.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>38</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chheap.h</PathWithFileName> + <FilenameWithoutPath>chheap.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>39</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chinline.h</PathWithFileName> + <FilenameWithoutPath>chinline.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>40</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chioch.h</PathWithFileName> + <FilenameWithoutPath>chioch.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>41</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chlists.h</PathWithFileName> + <FilenameWithoutPath>chlists.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>42</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chmboxes.h</PathWithFileName> + <FilenameWithoutPath>chmboxes.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>43</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chmemcore.h</PathWithFileName> + <FilenameWithoutPath>chmemcore.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>44</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chmempools.h</PathWithFileName> + <FilenameWithoutPath>chmempools.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>45</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chmsg.h</PathWithFileName> + <FilenameWithoutPath>chmsg.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>46</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chmtx.h</PathWithFileName> + <FilenameWithoutPath>chmtx.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>47</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chqueues.h</PathWithFileName> + <FilenameWithoutPath>chqueues.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>48</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chregistry.h</PathWithFileName> + <FilenameWithoutPath>chregistry.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>49</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chschd.h</PathWithFileName> + <FilenameWithoutPath>chschd.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>50</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chsem.h</PathWithFileName> + <FilenameWithoutPath>chsem.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>51</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chstreams.h</PathWithFileName> + <FilenameWithoutPath>chstreams.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>52</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chsys.h</PathWithFileName> + <FilenameWithoutPath>chsys.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>53</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chthreads.h</PathWithFileName> + <FilenameWithoutPath>chthreads.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>54</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\kernel\include\chvt.h</PathWithFileName> + <FilenameWithoutPath>chvt.h</FilenameWithoutPath> + </File> + </Group> + + <Group> + <GroupName>hal</GroupName> + <tvExp>1</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>55</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>13</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>85</TopLine> + <CurrentLine>101</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\src\adc.c</PathWithFileName> + <FilenameWithoutPath>adc.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>56</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>13</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>76</TopLine> + <CurrentLine>98</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\src\can.c</PathWithFileName> + <FilenameWithoutPath>can.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>57</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\src\hal.c</PathWithFileName> + <FilenameWithoutPath>hal.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>58</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>58</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>61</TopLine> + <CurrentLine>81</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\src\i2c.c</PathWithFileName> + <FilenameWithoutPath>i2c.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>59</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\src\mac.c</PathWithFileName> + <FilenameWithoutPath>mac.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>60</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>40</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>226</TopLine> + <CurrentLine>245</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\src\mmc_spi.c</PathWithFileName> + <FilenameWithoutPath>mmc_spi.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>61</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\src\pal.c</PathWithFileName> + <FilenameWithoutPath>pal.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>62</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>56</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>67</TopLine> + <CurrentLine>81</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\src\pwm.c</PathWithFileName> + <FilenameWithoutPath>pwm.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>63</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>32</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>106</TopLine> + <CurrentLine>120</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\src\serial.c</PathWithFileName> + <FilenameWithoutPath>serial.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>64</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\src\spi.c</PathWithFileName> + <FilenameWithoutPath>spi.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>65</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\src\uart.c</PathWithFileName> + <FilenameWithoutPath>uart.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>66</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\adc.h</PathWithFileName> + <FilenameWithoutPath>adc.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>67</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\can.h</PathWithFileName> + <FilenameWithoutPath>can.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>68</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\hal.h</PathWithFileName> + <FilenameWithoutPath>hal.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>69</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\i2c.h</PathWithFileName> + <FilenameWithoutPath>i2c.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>70</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\mac.h</PathWithFileName> + <FilenameWithoutPath>mac.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>71</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\mii.h</PathWithFileName> + <FilenameWithoutPath>mii.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>72</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>55</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\mmc_spi.h</PathWithFileName> + <FilenameWithoutPath>mmc_spi.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>73</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\pal.h</PathWithFileName> + <FilenameWithoutPath>pal.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>74</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\pwm.h</PathWithFileName> + <FilenameWithoutPath>pwm.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>75</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\serial.h</PathWithFileName> + <FilenameWithoutPath>serial.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>76</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\spi.h</PathWithFileName> + <FilenameWithoutPath>spi.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>4</GroupNumber> + <FileNumber>77</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\include\uart.h</PathWithFileName> + <FilenameWithoutPath>uart.h</FilenameWithoutPath> + </File> + </Group> + + <Group> + <GroupName>platform</GroupName> + <tvExp>0</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>78</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\adc_lld.c</PathWithFileName> + <FilenameWithoutPath>adc_lld.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>79</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\can_lld.c</PathWithFileName> + <FilenameWithoutPath>can_lld.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>80</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\hal_lld.c</PathWithFileName> + <FilenameWithoutPath>hal_lld.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>81</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\pal_lld.c</PathWithFileName> + <FilenameWithoutPath>pal_lld.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>82</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\pwm_lld.c</PathWithFileName> + <FilenameWithoutPath>pwm_lld.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>83</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\serial_lld.c</PathWithFileName> + <FilenameWithoutPath>serial_lld.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>84</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\spi_lld.c</PathWithFileName> + <FilenameWithoutPath>spi_lld.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>85</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\stm32_dma.c</PathWithFileName> + <FilenameWithoutPath>stm32_dma.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>86</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\uart_lld.c</PathWithFileName> + <FilenameWithoutPath>uart_lld.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>87</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\adc_lld.h</PathWithFileName> + <FilenameWithoutPath>adc_lld.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>88</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\can_lld.h</PathWithFileName> + <FilenameWithoutPath>can_lld.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>89</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\core_cm3.h</PathWithFileName> + <FilenameWithoutPath>core_cm3.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>90</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\hal_lld.h</PathWithFileName> + <FilenameWithoutPath>hal_lld.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>91</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\hal_lld_f103.h</PathWithFileName> + <FilenameWithoutPath>hal_lld_f103.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>92</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\pal_lld.h</PathWithFileName> + <FilenameWithoutPath>pal_lld.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>93</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\pwm_lld.h</PathWithFileName> + <FilenameWithoutPath>pwm_lld.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>94</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\serial_lld.h</PathWithFileName> + <FilenameWithoutPath>serial_lld.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>95</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\spi_lld.h</PathWithFileName> + <FilenameWithoutPath>spi_lld.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>96</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\stm32_dma.h</PathWithFileName> + <FilenameWithoutPath>stm32_dma.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>97</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\stm32f10x.h</PathWithFileName> + <FilenameWithoutPath>stm32f10x.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>5</GroupNumber> + <FileNumber>98</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\os\hal\platforms\STM32\uart_lld.h</PathWithFileName> + <FilenameWithoutPath>uart_lld.h</FilenameWithoutPath> + </File> + </Group> + + <Group> + <GroupName>test</GroupName> + <tvExp>0</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>99</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\test.c</PathWithFileName> + <FilenameWithoutPath>test.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>100</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testbmk.c</PathWithFileName> + <FilenameWithoutPath>testbmk.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>101</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testdyn.c</PathWithFileName> + <FilenameWithoutPath>testdyn.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>102</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testevt.c</PathWithFileName> + <FilenameWithoutPath>testevt.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>103</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testheap.c</PathWithFileName> + <FilenameWithoutPath>testheap.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>104</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testmbox.c</PathWithFileName> + <FilenameWithoutPath>testmbox.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>105</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testmsg.c</PathWithFileName> + <FilenameWithoutPath>testmsg.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>106</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testmtx.c</PathWithFileName> + <FilenameWithoutPath>testmtx.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>107</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testpools.c</PathWithFileName> + <FilenameWithoutPath>testpools.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>108</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testqueues.c</PathWithFileName> + <FilenameWithoutPath>testqueues.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>109</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testsem.c</PathWithFileName> + <FilenameWithoutPath>testsem.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>110</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testthd.c</PathWithFileName> + <FilenameWithoutPath>testthd.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>111</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\test.h</PathWithFileName> + <FilenameWithoutPath>test.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>112</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testbmk.h</PathWithFileName> + <FilenameWithoutPath>testbmk.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>113</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testdyn.h</PathWithFileName> + <FilenameWithoutPath>testdyn.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>114</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testevt.h</PathWithFileName> + <FilenameWithoutPath>testevt.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>115</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testheap.h</PathWithFileName> + <FilenameWithoutPath>testheap.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>116</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testmbox.h</PathWithFileName> + <FilenameWithoutPath>testmbox.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>117</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testmsg.h</PathWithFileName> + <FilenameWithoutPath>testmsg.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>118</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testmtx.h</PathWithFileName> + <FilenameWithoutPath>testmtx.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>119</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testpools.h</PathWithFileName> + <FilenameWithoutPath>testpools.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>120</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testqueues.h</PathWithFileName> + <FilenameWithoutPath>testqueues.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>121</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testsem.h</PathWithFileName> + <FilenameWithoutPath>testsem.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>122</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\test\testthd.h</PathWithFileName> + <FilenameWithoutPath>testthd.h</FilenameWithoutPath> + </File> + </Group> + + <Group> + <GroupName>demo</GroupName> + <tvExp>1</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <File> + <GroupNumber>7</GroupNumber> + <FileNumber>123</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>32</TopLine> + <CurrentLine>44</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\main.c</PathWithFileName> + <FilenameWithoutPath>main.c</FilenameWithoutPath> + </File> + </Group> + + <MDIGroups> + <Orientation>1</Orientation> + <ActiveMDIGroup>0</ActiveMDIGroup> + <MDIGroup> + <Size>100</Size> + <ActiveTab>3</ActiveTab> + <Documents> + <Doc> + <Name>..\main.c</Name> + <ColumnNumber>0</ColumnNumber> + <TopLine>32</TopLine> + <CurrentLine>44</CurrentLine> + </Doc> + <Doc> + <Name>..\..\..\os\hal\src\serial.c</Name> + <ColumnNumber>32</ColumnNumber> + <TopLine>106</TopLine> + <CurrentLine>120</CurrentLine> + </Doc> + <Doc> + <Name>..\..\..\os\hal\src\adc.c</Name> + <ColumnNumber>13</ColumnNumber> + <TopLine>85</TopLine> + <CurrentLine>101</CurrentLine> + </Doc> + <Doc> + <Name>..\..\..\os\hal\src\can.c</Name> + <ColumnNumber>58</ColumnNumber> + <TopLine>76</TopLine> + <CurrentLine>91</CurrentLine> + </Doc> + <Doc> + <Name>..\..\..\os\hal\src\mmc_spi.c</Name> + <ColumnNumber>40</ColumnNumber> + <TopLine>226</TopLine> + <CurrentLine>245</CurrentLine> + </Doc> + </Documents> + </MDIGroup> + </MDIGroups> + +</ProjectOpt> diff --git a/demos/ARMCM3-STM32F103-GCC/keil/ch.uvproj b/demos/ARMCM3-STM32F103-GCC/keil/ch.uvproj new file mode 100644 index 000000000..452c4255f --- /dev/null +++ b/demos/ARMCM3-STM32F103-GCC/keil/ch.uvproj @@ -0,0 +1,1040 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?> +<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd"> + + <SchemaVersion>1.1</SchemaVersion> + + <Header>### uVision Project, (C) Keil Software</Header> + + <Targets> + <Target> + <TargetName>Demo</TargetName> + <ToolsetNumber>0x4</ToolsetNumber> + <ToolsetName>ARM-ADS</ToolsetName> + <TargetOption> + <TargetCommonOption> + <Device>STM32F103RB</Device> + <Vendor>STMicroelectronics</Vendor> + <Cpu>IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")</Cpu> + <FlashUtilSpec></FlashUtilSpec> + <StartupFile>"STARTUP\ST\STM32F10x.s" ("STM32 Startup Code")</StartupFile> + <FlashDriverDll>UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000)</FlashDriverDll> + <DeviceId>4231</DeviceId> + <RegisterFile>stm32f10x_lib.h</RegisterFile> + <MemoryEnv></MemoryEnv> + <Cmp></Cmp> + <Asm></Asm> + <Linker></Linker> + <OHString></OHString> + <InfinionOptionDll></InfinionOptionDll> + <SLE66CMisc></SLE66CMisc> + <SLE66AMisc></SLE66AMisc> + <SLE66LinkerMisc></SLE66LinkerMisc> + <SFDFile></SFDFile> + <UseEnv>0</UseEnv> + <BinPath></BinPath> + <IncludePath></IncludePath> + <LibPath></LibPath> + <RegisterFilePath>ST\STM32F10x\</RegisterFilePath> + <DBRegisterFilePath>ST\STM32F10x\</DBRegisterFilePath> + <TargetStatus> + <Error>0</Error> + <ExitCodeStop>0</ExitCodeStop> + <ButtonStop>0</ButtonStop> + <NotGenerated>0</NotGenerated> + <InvalidFlash>1</InvalidFlash> + </TargetStatus> + <OutputDirectory>.\obj\</OutputDirectory> + <OutputName>ch</OutputName> + <CreateExecutable>1</CreateExecutable> + <CreateLib>0</CreateLib> + <CreateHexFile>0</CreateHexFile> + <DebugInformation>1</DebugInformation> + <BrowseInformation>1</BrowseInformation> + <ListingPath>.\lst\</ListingPath> + <HexFormatSelection>1</HexFormatSelection> + <Merge32K>0</Merge32K> + <CreateBatchFile>0</CreateBatchFile> + <BeforeCompile> + <RunUserProg1>0</RunUserProg1> + <RunUserProg2>0</RunUserProg2> + <UserProg1Name></UserProg1Name> + <UserProg2Name></UserProg2Name> + <UserProg1Dos16Mode>0</UserProg1Dos16Mode> + <UserProg2Dos16Mode>0</UserProg2Dos16Mode> + </BeforeCompile> + <BeforeMake> + <RunUserProg1>0</RunUserProg1> + <RunUserProg2>0</RunUserProg2> + <UserProg1Name></UserProg1Name> + <UserProg2Name></UserProg2Name> + <UserProg1Dos16Mode>0</UserProg1Dos16Mode> + <UserProg2Dos16Mode>0</UserProg2Dos16Mode> + </BeforeMake> + <AfterMake> + <RunUserProg1>0</RunUserProg1> + <RunUserProg2>0</RunUserProg2> + <UserProg1Name></UserProg1Name> + <UserProg2Name></UserProg2Name> + <UserProg1Dos16Mode>0</UserProg1Dos16Mode> + <UserProg2Dos16Mode>0</UserProg2Dos16Mode> + </AfterMake> + <SelectedForBatchBuild>0</SelectedForBatchBuild> + <SVCSIdString></SVCSIdString> + </TargetCommonOption> + <CommonProperty> + <UseCPPCompiler>0</UseCPPCompiler> + <RVCTCodeConst>0</RVCTCodeConst> + <RVCTZI>0</RVCTZI> + <RVCTOtherData>0</RVCTOtherData> + <ModuleSelection>0</ModuleSelection> + <IncludeInBuild>1</IncludeInBuild> + <AlwaysBuild>0</AlwaysBuild> + <GenerateAssemblyFile>0</GenerateAssemblyFile> + <AssembleAssemblyFile>0</AssembleAssemblyFile> + <PublicsOnly>0</PublicsOnly> + <StopOnExitCode>3</StopOnExitCode> + <CustomArgument></CustomArgument> + <IncludeLibraryModules></IncludeLibraryModules> + </CommonProperty> + <DllOption> + <SimDllName>SARMCM3.DLL</SimDllName> + <SimDllArguments></SimDllArguments> + <SimDlgDll>DARMSTM.DLL</SimDlgDll> + <SimDlgDllArguments>-pSTM32F103RB</SimDlgDllArguments> + <TargetDllName>SARMCM3.DLL</TargetDllName> + <TargetDllArguments></TargetDllArguments> + <TargetDlgDll>TARMSTM.DLL</TargetDlgDll> + <TargetDlgDllArguments>-pSTM32F103RB</TargetDlgDllArguments> + </DllOption> + <DebugOption> + <OPTHX> + <HexSelection>1</HexSelection> + <HexRangeLowAddress>0</HexRangeLowAddress> + <HexRangeHighAddress>0</HexRangeHighAddress> + <HexOffset>0</HexOffset> + <Oh166RecLen>16</Oh166RecLen> + </OPTHX> + <Simulator> + <UseSimulator>0</UseSimulator> + <LoadApplicationAtStartup>1</LoadApplicationAtStartup> + <RunToMain>1</RunToMain> + <RestoreBreakpoints>1</RestoreBreakpoints> + <RestoreWatchpoints>1</RestoreWatchpoints> + <RestoreMemoryDisplay>1</RestoreMemoryDisplay> + <RestoreFunctions>1</RestoreFunctions> + <RestoreToolbox>1</RestoreToolbox> + <LimitSpeedToRealTime>0</LimitSpeedToRealTime> + </Simulator> + <Target> + <UseTarget>1</UseTarget> + <LoadApplicationAtStartup>1</LoadApplicationAtStartup> + <RunToMain>0</RunToMain> + <RestoreBreakpoints>1</RestoreBreakpoints> + <RestoreWatchpoints>1</RestoreWatchpoints> + <RestoreMemoryDisplay>1</RestoreMemoryDisplay> + <RestoreFunctions>0</RestoreFunctions> + <RestoreToolbox>1</RestoreToolbox> + </Target> + <RunDebugAfterBuild>0</RunDebugAfterBuild> + <TargetSelection>8</TargetSelection> + <SimDlls> + <CpuDll></CpuDll> + <CpuDllArguments></CpuDllArguments> + <PeripheralDll></PeripheralDll> + <PeripheralDllArguments></PeripheralDllArguments> + <InitializationFile></InitializationFile> + </SimDlls> + <TargetDlls> + <CpuDll></CpuDll> + <CpuDllArguments></CpuDllArguments> + <PeripheralDll></PeripheralDll> + <PeripheralDllArguments></PeripheralDllArguments> + <InitializationFile></InitializationFile> + <Driver>STLink\ST-LINKIII-KEIL.dll</Driver> + </TargetDlls> + </DebugOption> + <Utilities> + <Flash1> + <UseTargetDll>1</UseTargetDll> + <UseExternalTool>0</UseExternalTool> + <RunIndependent>0</RunIndependent> + <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging> + <Capability>1</Capability> + <DriverSelection>4100</DriverSelection> + </Flash1> + <Flash2>STLink\ST-LINKIII-KEIL.dll</Flash2> + <Flash3>"" ()</Flash3> + <Flash4></Flash4> + </Utilities> + <TargetArmAds> + <ArmAdsMisc> + <GenerateListings>0</GenerateListings> + <asHll>1</asHll> + <asAsm>1</asAsm> + <asMacX>1</asMacX> + <asSyms>1</asSyms> + <asFals>1</asFals> + <asDbgD>1</asDbgD> + <asForm>1</asForm> + <ldLst>0</ldLst> + <ldmm>1</ldmm> + <ldXref>1</ldXref> + <BigEnd>0</BigEnd> + <AdsALst>1</AdsALst> + <AdsACrf>1</AdsACrf> + <AdsANop>0</AdsANop> + <AdsANot>0</AdsANot> + <AdsLLst>1</AdsLLst> + <AdsLmap>1</AdsLmap> + <AdsLcgr>1</AdsLcgr> + <AdsLsym>1</AdsLsym> + <AdsLszi>1</AdsLszi> + <AdsLtoi>1</AdsLtoi> + <AdsLsun>1</AdsLsun> + <AdsLven>1</AdsLven> + <AdsLsxf>1</AdsLsxf> + <RvctClst>0</RvctClst> + <GenPPlst>0</GenPPlst> + <AdsCpuType>"Cortex-M3"</AdsCpuType> + <RvctDeviceName></RvctDeviceName> + <mOS>0</mOS> + <uocRom>0</uocRom> + <uocRam>0</uocRam> + <hadIROM>1</hadIROM> + <hadIRAM>1</hadIRAM> + <hadXRAM>0</hadXRAM> + <uocXRam>0</uocXRam> + <RvdsVP>0</RvdsVP> + <hadIRAM2>0</hadIRAM2> + <hadIROM2>0</hadIROM2> + <StupSel>8</StupSel> + <useUlib>0</useUlib> + <EndSel>0</EndSel> + <uLtcg>0</uLtcg> + <RoSelD>3</RoSelD> + <RwSelD>3</RwSelD> + <CodeSel>0</CodeSel> + <OptFeed>0</OptFeed> + <NoZi1>0</NoZi1> + <NoZi2>0</NoZi2> + <NoZi3>0</NoZi3> + <NoZi4>0</NoZi4> + <NoZi5>0</NoZi5> + <Ro1Chk>0</Ro1Chk> + <Ro2Chk>0</Ro2Chk> + <Ro3Chk>0</Ro3Chk> + <Ir1Chk>1</Ir1Chk> + <Ir2Chk>0</Ir2Chk> + <Ra1Chk>0</Ra1Chk> + <Ra2Chk>0</Ra2Chk> + <Ra3Chk>0</Ra3Chk> + <Im1Chk>1</Im1Chk> + <Im2Chk>1</Im2Chk> + <OnChipMemories> + <Ocm1> + <Type>0</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </Ocm1> + <Ocm2> + <Type>0</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </Ocm2> + <Ocm3> + <Type>0</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </Ocm3> + <Ocm4> + <Type>0</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </Ocm4> + <Ocm5> + <Type>0</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </Ocm5> + <Ocm6> + <Type>0</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </Ocm6> + <IRAM> + <Type>0</Type> + <StartAddress>0x20000000</StartAddress> + <Size>0x5000</Size> + </IRAM> + <IROM> + <Type>1</Type> + <StartAddress>0x8000000</StartAddress> + <Size>0x20000</Size> + </IROM> + <XRAM> + <Type>0</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </XRAM> + <OCR_RVCT1> + <Type>1</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </OCR_RVCT1> + <OCR_RVCT2> + <Type>1</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </OCR_RVCT2> + <OCR_RVCT3> + <Type>1</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </OCR_RVCT3> + <OCR_RVCT4> + <Type>1</Type> + <StartAddress>0x8000000</StartAddress> + <Size>0x20000</Size> + </OCR_RVCT4> + <OCR_RVCT5> + <Type>1</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </OCR_RVCT5> + <OCR_RVCT6> + <Type>0</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </OCR_RVCT6> + <OCR_RVCT7> + <Type>0</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </OCR_RVCT7> + <OCR_RVCT8> + <Type>0</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </OCR_RVCT8> + <OCR_RVCT9> + <Type>0</Type> + <StartAddress>0x20000000</StartAddress> + <Size>0x5000</Size> + </OCR_RVCT9> + <OCR_RVCT10> + <Type>0</Type> + <StartAddress>0x20005000</StartAddress> + <Size>0x1</Size> + </OCR_RVCT10> + </OnChipMemories> + <RvctStartVector></RvctStartVector> + </ArmAdsMisc> + <Cads> + <interw>1</interw> + <Optim>4</Optim> + <oTime>1</oTime> + <SplitLS>0</SplitLS> + <OneElfS>0</OneElfS> + <Strict>0</Strict> + <EnumInt>0</EnumInt> + <PlainCh>0</PlainCh> + <Ropi>0</Ropi> + <Rwpi>0</Rwpi> + <wLevel>0</wLevel> + <uThumb>0</uThumb> + <VariousControls> + <MiscControls></MiscControls> + <Define>__heap_base__=Image$$RW_IRAM1$$ZI$$Limit __heap_end__=Image$$RW_IRAM2$$Base</Define> + <Undefine></Undefine> + <IncludePath>..\..\ARMCM3-STM32F103-GCC;..\..\..\os\kernel\include;..\..\..\os\ports\RVCT\ARMCMx;..\..\..\os\ports\RVCT\ARMCMx\STM32;..\..\..\os\hal\include;..\..\..\os\hal\platforms\STM32;..\..\..\boards\OLIMEX_STM32_P103;..\..\..\test</IncludePath> + </VariousControls> + </Cads> + <Aads> + <interw>1</interw> + <Ropi>0</Ropi> + <Rwpi>0</Rwpi> + <thumb>0</thumb> + <SplitLS>0</SplitLS> + <SwStkChk>0</SwStkChk> + <NoWarn>0</NoWarn> + <VariousControls> + <MiscControls>--cpreproc</MiscControls> + <Define></Define> + <Undefine></Undefine> + <IncludePath>..\..\..\boards\OLIMEX_STM32_P103;..\..\..\os\ports\RVCT\ARMCMx\STM32</IncludePath> + </VariousControls> + </Aads> + <LDads> + <umfTarg>1</umfTarg> + <Ropi>0</Ropi> + <Rwpi>0</Rwpi> + <noStLib>0</noStLib> + <RepFail>1</RepFail> + <useFile>0</useFile> + <TextAddressRange>0x08000000</TextAddressRange> + <DataAddressRange>0x20000000</DataAddressRange> + <ScatterFile></ScatterFile> + <IncludeLibs></IncludeLibs> + <IncludeLibsPath></IncludeLibsPath> + <Misc></Misc> + <LinkerInputFile></LinkerInputFile> + <DisabledWarnings></DisabledWarnings> + </LDads> + </TargetArmAds> + </TargetOption> + <Groups> + <Group> + <GroupName>board</GroupName> + <Files> + <File> + <FileName>board.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\boards\OLIMEX_STM32_P103\board.c</FilePath> + </File> + <File> + <FileName>board.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\boards\OLIMEX_STM32_P103\board.h</FilePath> + </File> + </Files> + </Group> + <Group> + <GroupName>port</GroupName> + <Files> + <File> + <FileName>cstartup.s</FileName> + <FileType>2</FileType> + <FilePath>..\..\..\os\ports\RVCT\ARMCMx\cstartup.s</FilePath> + </File> + <File> + <FileName>vectors.s</FileName> + <FileType>2</FileType> + <FilePath>..\..\..\os\ports\RVCT\ARMCMx\STM32\vectors.s</FilePath> + </File> + <File> + <FileName>chcoreasm_v7m.s</FileName> + <FileType>2</FileType> + <FilePath>..\..\..\os\ports\RVCT\ARMCMx\chcoreasm_v7m.s</FilePath> + </File> + <File> + <FileName>chcore.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\ports\RVCT\ARMCMx\chcore.c</FilePath> + </File> + <File> + <FileName>chcore_v7m.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\ports\RVCT\ARMCMx\chcore_v7m.c</FilePath> + </File> + <File> + <FileName>nvic.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\ports\RVCT\ARMCMx\nvic.c</FilePath> + </File> + <File> + <FileName>chcore.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\ports\RVCT\ARMCMx\chcore.h</FilePath> + </File> + <File> + <FileName>chcore_v7m.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\ports\RVCT\ARMCMx\chcore_v7m.h</FilePath> + </File> + <File> + <FileName>chtypes.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\ports\RVCT\ARMCMx\chtypes.h</FilePath> + </File> + <File> + <FileName>nvic.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\ports\RVCT\ARMCMx\nvic.h</FilePath> + </File> + </Files> + </Group> + <Group> + <GroupName>kernel</GroupName> + <Files> + <File> + <FileName>chcond.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chcond.c</FilePath> + </File> + <File> + <FileName>chdebug.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chdebug.c</FilePath> + </File> + <File> + <FileName>chdynamic.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chdynamic.c</FilePath> + </File> + <File> + <FileName>chevents.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chevents.c</FilePath> + </File> + <File> + <FileName>chheap.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chheap.c</FilePath> + </File> + <File> + <FileName>chlists.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chlists.c</FilePath> + </File> + <File> + <FileName>chmboxes.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chmboxes.c</FilePath> + </File> + <File> + <FileName>chmemcore.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chmemcore.c</FilePath> + </File> + <File> + <FileName>chmempools.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chmempools.c</FilePath> + </File> + <File> + <FileName>chmsg.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chmsg.c</FilePath> + </File> + <File> + <FileName>chmtx.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chmtx.c</FilePath> + </File> + <File> + <FileName>chqueues.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chqueues.c</FilePath> + </File> + <File> + <FileName>chregistry.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chregistry.c</FilePath> + </File> + <File> + <FileName>chschd.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chschd.c</FilePath> + </File> + <File> + <FileName>chsem.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chsem.c</FilePath> + </File> + <File> + <FileName>chsys.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chsys.c</FilePath> + </File> + <File> + <FileName>chthreads.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chthreads.c</FilePath> + </File> + <File> + <FileName>chvt.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\kernel\src\chvt.c</FilePath> + </File> + <File> + <FileName>ch.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\ch.h</FilePath> + </File> + <File> + <FileName>chbsem.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chbsem.h</FilePath> + </File> + <File> + <FileName>chcond.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chcond.h</FilePath> + </File> + <File> + <FileName>chdebug.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chdebug.h</FilePath> + </File> + <File> + <FileName>chdynamic.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chdynamic.h</FilePath> + </File> + <File> + <FileName>chevents.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chevents.h</FilePath> + </File> + <File> + <FileName>chfiles.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chfiles.h</FilePath> + </File> + <File> + <FileName>chheap.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chheap.h</FilePath> + </File> + <File> + <FileName>chinline.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chinline.h</FilePath> + </File> + <File> + <FileName>chioch.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chioch.h</FilePath> + </File> + <File> + <FileName>chlists.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chlists.h</FilePath> + </File> + <File> + <FileName>chmboxes.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chmboxes.h</FilePath> + </File> + <File> + <FileName>chmemcore.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chmemcore.h</FilePath> + </File> + <File> + <FileName>chmempools.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chmempools.h</FilePath> + </File> + <File> + <FileName>chmsg.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chmsg.h</FilePath> + </File> + <File> + <FileName>chmtx.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chmtx.h</FilePath> + </File> + <File> + <FileName>chqueues.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chqueues.h</FilePath> + </File> + <File> + <FileName>chregistry.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chregistry.h</FilePath> + </File> + <File> + <FileName>chschd.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chschd.h</FilePath> + </File> + <File> + <FileName>chsem.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chsem.h</FilePath> + </File> + <File> + <FileName>chstreams.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chstreams.h</FilePath> + </File> + <File> + <FileName>chsys.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chsys.h</FilePath> + </File> + <File> + <FileName>chthreads.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chthreads.h</FilePath> + </File> + <File> + <FileName>chvt.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\kernel\include\chvt.h</FilePath> + </File> + </Files> + </Group> + <Group> + <GroupName>hal</GroupName> + <Files> + <File> + <FileName>adc.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\src\adc.c</FilePath> + </File> + <File> + <FileName>can.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\src\can.c</FilePath> + </File> + <File> + <FileName>hal.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\src\hal.c</FilePath> + </File> + <File> + <FileName>i2c.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\src\i2c.c</FilePath> + </File> + <File> + <FileName>mac.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\src\mac.c</FilePath> + </File> + <File> + <FileName>mmc_spi.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\src\mmc_spi.c</FilePath> + </File> + <File> + <FileName>pal.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\src\pal.c</FilePath> + </File> + <File> + <FileName>pwm.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\src\pwm.c</FilePath> + </File> + <File> + <FileName>serial.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\src\serial.c</FilePath> + </File> + <File> + <FileName>spi.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\src\spi.c</FilePath> + </File> + <File> + <FileName>uart.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\src\uart.c</FilePath> + </File> + <File> + <FileName>adc.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\adc.h</FilePath> + </File> + <File> + <FileName>can.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\can.h</FilePath> + </File> + <File> + <FileName>hal.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\hal.h</FilePath> + </File> + <File> + <FileName>i2c.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\i2c.h</FilePath> + </File> + <File> + <FileName>mac.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\mac.h</FilePath> + </File> + <File> + <FileName>mii.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\mii.h</FilePath> + </File> + <File> + <FileName>mmc_spi.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\mmc_spi.h</FilePath> + </File> + <File> + <FileName>pal.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\pal.h</FilePath> + </File> + <File> + <FileName>pwm.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\pwm.h</FilePath> + </File> + <File> + <FileName>serial.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\serial.h</FilePath> + </File> + <File> + <FileName>spi.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\spi.h</FilePath> + </File> + <File> + <FileName>uart.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\include\uart.h</FilePath> + </File> + </Files> + </Group> + <Group> + <GroupName>platform</GroupName> + <Files> + <File> + <FileName>adc_lld.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\adc_lld.c</FilePath> + </File> + <File> + <FileName>can_lld.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\can_lld.c</FilePath> + </File> + <File> + <FileName>hal_lld.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\hal_lld.c</FilePath> + </File> + <File> + <FileName>pal_lld.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\pal_lld.c</FilePath> + </File> + <File> + <FileName>pwm_lld.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\pwm_lld.c</FilePath> + </File> + <File> + <FileName>serial_lld.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\serial_lld.c</FilePath> + </File> + <File> + <FileName>spi_lld.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\spi_lld.c</FilePath> + </File> + <File> + <FileName>stm32_dma.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\stm32_dma.c</FilePath> + </File> + <File> + <FileName>uart_lld.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\uart_lld.c</FilePath> + </File> + <File> + <FileName>adc_lld.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\adc_lld.h</FilePath> + </File> + <File> + <FileName>can_lld.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\can_lld.h</FilePath> + </File> + <File> + <FileName>core_cm3.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\core_cm3.h</FilePath> + </File> + <File> + <FileName>hal_lld.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\hal_lld.h</FilePath> + </File> + <File> + <FileName>hal_lld_f103.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\hal_lld_f103.h</FilePath> + </File> + <File> + <FileName>pal_lld.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\pal_lld.h</FilePath> + </File> + <File> + <FileName>pwm_lld.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\pwm_lld.h</FilePath> + </File> + <File> + <FileName>serial_lld.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\serial_lld.h</FilePath> + </File> + <File> + <FileName>spi_lld.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\spi_lld.h</FilePath> + </File> + <File> + <FileName>stm32_dma.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\stm32_dma.h</FilePath> + </File> + <File> + <FileName>stm32f10x.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\stm32f10x.h</FilePath> + </File> + <File> + <FileName>uart_lld.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\os\hal\platforms\STM32\uart_lld.h</FilePath> + </File> + </Files> + </Group> + <Group> + <GroupName>test</GroupName> + <Files> + <File> + <FileName>test.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\test.c</FilePath> + </File> + <File> + <FileName>testbmk.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\testbmk.c</FilePath> + </File> + <File> + <FileName>testdyn.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\testdyn.c</FilePath> + </File> + <File> + <FileName>testevt.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\testevt.c</FilePath> + </File> + <File> + <FileName>testheap.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\testheap.c</FilePath> + </File> + <File> + <FileName>testmbox.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\testmbox.c</FilePath> + </File> + <File> + <FileName>testmsg.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\testmsg.c</FilePath> + </File> + <File> + <FileName>testmtx.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\testmtx.c</FilePath> + </File> + <File> + <FileName>testpools.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\testpools.c</FilePath> + </File> + <File> + <FileName>testqueues.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\testqueues.c</FilePath> + </File> + <File> + <FileName>testsem.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\testsem.c</FilePath> + </File> + <File> + <FileName>testthd.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\test\testthd.c</FilePath> + </File> + <File> + <FileName>test.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\test.h</FilePath> + </File> + <File> + <FileName>testbmk.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\testbmk.h</FilePath> + </File> + <File> + <FileName>testdyn.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\testdyn.h</FilePath> + </File> + <File> + <FileName>testevt.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\testevt.h</FilePath> + </File> + <File> + <FileName>testheap.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\testheap.h</FilePath> + </File> + <File> + <FileName>testmbox.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\testmbox.h</FilePath> + </File> + <File> + <FileName>testmsg.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\testmsg.h</FilePath> + </File> + <File> + <FileName>testmtx.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\testmtx.h</FilePath> + </File> + <File> + <FileName>testpools.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\testpools.h</FilePath> + </File> + <File> + <FileName>testqueues.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\testqueues.h</FilePath> + </File> + <File> + <FileName>testsem.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\testsem.h</FilePath> + </File> + <File> + <FileName>testthd.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\test\testthd.h</FilePath> + </File> + </Files> + </Group> + <Group> + <GroupName>demo</GroupName> + <Files> + <File> + <FileName>main.c</FileName> + <FileType>1</FileType> + <FilePath>..\main.c</FilePath> + </File> + </Files> + </Group> + </Groups> + </Target> + </Targets> + +</Project> diff --git a/os/ports/RVCT/ARMCMx/STM32/cmparams.h b/os/ports/RVCT/ARMCMx/STM32/cmparams.h new file mode 100644 index 000000000..de07b7c67 --- /dev/null +++ b/os/ports/RVCT/ARMCMx/STM32/cmparams.h @@ -0,0 +1,56 @@ +/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file STM32/cmparams.h
+ * @brief ARM Cortex-M3 parameters for the STM32.
+ *
+ * @defgroup ARMCMx_STM32 STM32 Specific Parameters
+ * @ingroup ARMCMx_SPECIFIC
+ * @details This file contains the Cortex-M3 specific parameters for the
+ * STM32 platform.
+ * @{
+ */
+
+#ifndef _CMPARAMS_H_
+#define _CMPARAMS_H_
+
+/**
+ * @brief Cortex core model.
+ */
+#define CORTEX_MODEL CORTEX_M3
+
+/**
+ * @brief Systick unit presence.
+ */
+#define CORTEX_HAS_ST TRUE
+
+/**
+ * @brief Memory Protection unit presence.
+ */
+#define CORTEX_HAS_MPU FALSE
+
+/**
+ * @brief Number of bits in priority masks.
+ */
+#define CORTEX_PRIORITY_BITS 4
+
+#endif /* _CMPARAMS_H_ */
+
+/** @} */
diff --git a/os/ports/RVCT/ARMCMx/STM32/vectors.s b/os/ports/RVCT/ARMCMx/STM32/vectors.s new file mode 100644 index 000000000..1abf3cc1e --- /dev/null +++ b/os/ports/RVCT/ARMCMx/STM32/vectors.s @@ -0,0 +1,305 @@ +/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#if !defined(STM32F10X_LD) && !defined(STM32F10X_LD_VL) && \
+ !defined(STM32F10X_MD) && !defined(STM32F10X_MD_VL) && \
+ !defined(STM32F10X_HD) && !defined(STM32F10X_XL) && \
+ !defined(STM32F10X_CL)
+#define _FROM_ASM_
+#include "board.h"
+#endif
+
+ PRESERVE8
+
+ AREA RESET, DATA, READONLY
+
+ IMPORT __initial_msp
+ IMPORT Reset_Handler
+ EXPORT __Vectors
+
+__Vectors
+ DCD __initial_msp
+ DCD Reset_Handler
+ DCD NMIVector
+ DCD HardFaultVector
+ DCD MemManageVector
+ DCD BusFaultVector
+ DCD UsageFaultVector
+ DCD Vector1C
+ DCD Vector20
+ DCD Vector24
+ DCD Vector28
+ DCD SVCallVector
+ DCD DebugMonitorVector
+ DCD Vector34
+ DCD PendSVVector
+ DCD SysTickVector
+ DCD Vector40
+ DCD Vector44
+ DCD Vector48
+ DCD Vector4C
+ DCD Vector50
+ DCD Vector54
+ DCD Vector58
+ DCD Vector5C
+ DCD Vector60
+ DCD Vector64
+ DCD Vector68
+ DCD Vector6C
+ DCD Vector70
+ DCD Vector74
+ DCD Vector78
+ DCD Vector7C
+ DCD Vector80
+ DCD Vector84
+ DCD Vector88
+ DCD Vector8C
+ DCD Vector90
+ DCD Vector94
+ DCD Vector98
+ DCD Vector9C
+ DCD VectorA0
+ DCD VectorA4
+ DCD VectorA8
+ DCD VectorAC
+ DCD VectorB0
+ DCD VectorB4
+ DCD VectorB8
+ DCD VectorBC
+ DCD VectorC0
+ DCD VectorC4
+ DCD VectorC8
+ DCD VectorCC
+ DCD VectorD0
+ DCD VectorD4
+ DCD VectorD8
+ DCD VectorDC
+ DCD VectorE0
+ DCD VectorE4
+ DCD VectorE8
+#if defined(STM32F10X_MD_VL) || defined(STM32F10X_HD) || \
+ defined(STM32F10X_XL) || defined(STM32F10X_CL)
+ DCD VectorEC
+ DCD VectorF0
+ DCD VectorF4
+#endif
+#if defined(STM32F10X_HD) || defined(STM32F10X_XL) || defined(STM32F10X_CL)
+ DCD VectorF8
+ DCD VectorFC
+ DCD Vector100
+ DCD Vector104
+ DCD Vector108
+ DCD Vector10C
+ DCD Vector110
+ DCD Vector114
+ DCD Vector118
+ DCD Vector11C
+ DCD Vector120
+ DCD Vector124
+ DCD Vector128
+ DCD Vector12C
+#endif
+#if defined(STM32F10X_CL)
+ DCD Vector130
+ DCD Vector134
+ DCD Vector138
+ DCD Vector13C
+ DCD Vector140
+ DCD Vector144
+ DCD Vector148
+ DCD Vector14C
+#endif
+
+ AREA |.text|, CODE, READONLY
+ THUMB
+
+/*
+ * Default interrupt handlers.
+ */
+ EXPORT _unhandled_exception
+_unhandled_exception PROC
+ EXPORT NMIVector [WEAK]
+ EXPORT HardFaultVector [WEAK]
+ EXPORT MemManageVector [WEAK]
+ EXPORT BusFaultVector [WEAK]
+ EXPORT UsageFaultVector [WEAK]
+ EXPORT Vector1C [WEAK]
+ EXPORT Vector20 [WEAK]
+ EXPORT Vector24 [WEAK]
+ EXPORT Vector28 [WEAK]
+ EXPORT SVCallVector [WEAK]
+ EXPORT DebugMonitorVector [WEAK]
+ EXPORT Vector34 [WEAK]
+ EXPORT PendSVVector [WEAK]
+ EXPORT SysTickVector [WEAK]
+ EXPORT Vector40 [WEAK]
+ EXPORT Vector44 [WEAK]
+ EXPORT Vector48 [WEAK]
+ EXPORT Vector4C [WEAK]
+ EXPORT Vector50 [WEAK]
+ EXPORT Vector54 [WEAK]
+ EXPORT Vector58 [WEAK]
+ EXPORT Vector5C [WEAK]
+ EXPORT Vector60 [WEAK]
+ EXPORT Vector64 [WEAK]
+ EXPORT Vector68 [WEAK]
+ EXPORT Vector6C [WEAK]
+ EXPORT Vector70 [WEAK]
+ EXPORT Vector74 [WEAK]
+ EXPORT Vector78 [WEAK]
+ EXPORT Vector7C [WEAK]
+ EXPORT Vector80 [WEAK]
+ EXPORT Vector84 [WEAK]
+ EXPORT Vector88 [WEAK]
+ EXPORT Vector8C [WEAK]
+ EXPORT Vector90 [WEAK]
+ EXPORT Vector94 [WEAK]
+ EXPORT Vector98 [WEAK]
+ EXPORT Vector9C [WEAK]
+ EXPORT VectorA0 [WEAK]
+ EXPORT VectorA4 [WEAK]
+ EXPORT VectorA8 [WEAK]
+ EXPORT VectorAC [WEAK]
+ EXPORT VectorB0 [WEAK]
+ EXPORT VectorB4 [WEAK]
+ EXPORT VectorB8 [WEAK]
+ EXPORT VectorBC [WEAK]
+ EXPORT VectorC0 [WEAK]
+ EXPORT VectorC4 [WEAK]
+ EXPORT VectorC8 [WEAK]
+ EXPORT VectorCC [WEAK]
+ EXPORT VectorD0 [WEAK]
+ EXPORT VectorD4 [WEAK]
+ EXPORT VectorD8 [WEAK]
+ EXPORT VectorDC [WEAK]
+ EXPORT VectorE0 [WEAK]
+ EXPORT VectorE4 [WEAK]
+ EXPORT VectorE8 [WEAK]
+ EXPORT VectorEC [WEAK]
+ EXPORT VectorF0 [WEAK]
+ EXPORT VectorF4 [WEAK]
+ EXPORT VectorF8 [WEAK]
+ EXPORT VectorFC [WEAK]
+ EXPORT Vector100 [WEAK]
+ EXPORT Vector104 [WEAK]
+ EXPORT Vector108 [WEAK]
+ EXPORT Vector10C [WEAK]
+ EXPORT Vector110 [WEAK]
+ EXPORT Vector114 [WEAK]
+ EXPORT Vector118 [WEAK]
+ EXPORT Vector11C [WEAK]
+ EXPORT Vector120 [WEAK]
+ EXPORT Vector124 [WEAK]
+ EXPORT Vector128 [WEAK]
+ EXPORT Vector12C [WEAK]
+ EXPORT Vector130 [WEAK]
+ EXPORT Vector134 [WEAK]
+ EXPORT Vector138 [WEAK]
+ EXPORT Vector13C [WEAK]
+ EXPORT Vector140 [WEAK]
+ EXPORT Vector144 [WEAK]
+ EXPORT Vector148 [WEAK]
+ EXPORT Vector14C [WEAK]
+
+NMIVector
+HardFaultVector
+MemManageVector
+BusFaultVector
+UsageFaultVector
+Vector1C
+Vector20
+Vector24
+Vector28
+SVCallVector
+DebugMonitorVector
+Vector34
+PendSVVector
+SysTickVector
+Vector40
+Vector44
+Vector48
+Vector4C
+Vector50
+Vector54
+Vector58
+Vector5C
+Vector60
+Vector64
+Vector68
+Vector6C
+Vector70
+Vector74
+Vector78
+Vector7C
+Vector80
+Vector84
+Vector88
+Vector8C
+Vector90
+Vector94
+Vector98
+Vector9C
+VectorA0
+VectorA4
+VectorA8
+VectorAC
+VectorB0
+VectorB4
+VectorB8
+VectorBC
+VectorC0
+VectorC4
+VectorC8
+VectorCC
+VectorD0
+VectorD4
+VectorD8
+VectorDC
+VectorE0
+VectorE4
+VectorE8
+VectorEC
+VectorF0
+VectorF4
+VectorF8
+VectorFC
+Vector100
+Vector104
+Vector108
+Vector10C
+Vector110
+Vector114
+Vector118
+Vector11C
+Vector120
+Vector124
+Vector128
+Vector12C
+Vector130
+Vector134
+Vector138
+Vector13C
+Vector140
+Vector144
+Vector148
+Vector14C
+ b _unhandled_exception
+ ENDP
+
+ END
diff --git a/os/ports/RVCT/ARMCMx/chcore.c b/os/ports/RVCT/ARMCMx/chcore.c new file mode 100644 index 000000000..2f2122ae4 --- /dev/null +++ b/os/ports/RVCT/ARMCMx/chcore.c @@ -0,0 +1,45 @@ +/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file IAR/ARMCMx/chcore.c
+ * @brief ARM Cortex-Mx port code.
+ *
+ * @addtogroup IAR_ARMCMx_CORE
+ * @{
+ */
+
+#include "ch.h"
+
+/**
+ * @brief Halts the system.
+ * @note The function is declared as a weak symbol, it is possible
+ * to redefine it in your application code.
+ */
+#if !defined(__DOXYGEN__)
+__weak
+#endif
+void port_halt(void) {
+
+ port_disable();
+ while (TRUE) {
+ }
+}
+
+/** @} */
diff --git a/os/ports/RVCT/ARMCMx/chcore.h b/os/ports/RVCT/ARMCMx/chcore.h new file mode 100644 index 000000000..d07d585a9 --- /dev/null +++ b/os/ports/RVCT/ARMCMx/chcore.h @@ -0,0 +1,325 @@ +/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file IAR/ARMCMx/chcore.h
+ * @brief ARM Cortex-Mx port macros and structures.
+ *
+ * @addtogroup IAR_ARMCMx_CORE
+ * @{
+ */
+
+#ifndef _CHCORE_H_
+#define _CHCORE_H_
+
+#include "nvic.h"
+
+/*===========================================================================*/
+/* Port constants. */
+/*===========================================================================*/
+
+#define CORTEX_M0 0 /**< @brief Cortex-M0 variant. */
+#define CORTEX_M1 1 /**< @brief Cortex-M1 variant. */
+#define CORTEX_M3 3 /**< @brief Cortex-M3 variant. */
+#define CORTEX_M4 4 /**< @brief Cortex-M4 variant. */
+
+/* Inclusion of the Cortex-Mx implementation specific parameters.*/
+#include "cmparams.h"
+
+/* Cortex model check, only M0 and M3 supported right now.*/
+#if (CORTEX_MODEL == CORTEX_M0) || (CORTEX_MODEL == CORTEX_M3)
+#elif (CORTEX_MODEL == CORTEX_M1) || (CORTEX_MODEL == CORTEX_M4)
+#warning "untested Cortex-M model"
+#else
+#error "unknown or unsupported Cortex-M model"
+#endif
+
+/*===========================================================================*/
+/* Port statically derived parameters. */
+/*===========================================================================*/
+
+/**
+ * @brief Total priority levels.
+ */
+#define CORTEX_PRIORITY_LEVELS (1 << CORTEX_PRIORITY_BITS)
+
+/**
+ * @brief Minimum priority level.
+ * @details This minimum priority level is calculated from the number of
+ * priority bits supported by the specific Cortex-Mx implementation.
+ */
+#define CORTEX_MINIMUM_PRIORITY (CORTEX_PRIORITY_LEVELS - 1)
+
+/**
+ * @brief Maximum priority level.
+ * @details The maximum allowed priority level is always zero.
+ */
+#define CORTEX_MAXIMUM_PRIORITY 0
+
+/**
+ * @brief Disabled value for BASEPRI register.
+ * @note ARMv7-M architecture only.
+ */
+#define CORTEX_BASEPRI_DISABLED 0
+
+/*===========================================================================*/
+/* Port macros. */
+/*===========================================================================*/
+
+/**
+ * @brief Priority level verification macro.
+ */
+#define CORTEX_IS_VALID_PRIORITY(n) \
+ (((n) >= 0) && ((n) < CORTEX_PRIORITY_LEVELS))
+
+/**
+ * @brief Priority level to priority mask conversion macro.
+ */
+#define CORTEX_PRIORITY_MASK(n) \
+ ((n) << (8 - CORTEX_PRIORITY_BITS))
+
+/*===========================================================================*/
+/* Port configurable parameters. */
+/*===========================================================================*/
+
+/**
+ * @brief Enables the use of the WFI instruction in the idle thread loop.
+ */
+#ifndef CORTEX_ENABLE_WFI_IDLE
+#define CORTEX_ENABLE_WFI_IDLE FALSE
+#endif
+
+/**
+ * @brief SYSTICK handler priority.
+ * @note The default SYSTICK handler priority is calculated as the priority
+ * level in the middle of the numeric priorities range.
+ */
+#ifndef CORTEX_PRIORITY_SYSTICK
+#define CORTEX_PRIORITY_SYSTICK (CORTEX_PRIORITY_LEVELS >> 1)
+#else
+/* If it is externally redefined then better perform a validity check on it.*/
+#if !CORTEX_IS_VALID_PRIORITY(CORTEX_PRIORITY_SYSTICK)
+#error "invalid priority level specified for CORTEX_PRIORITY_SYSTICK"
+#endif
+#endif
+
+/**
+ * @brief SVCALL handler priority.
+ * @note The default SVCALL handler priority is calculated as
+ * @p CORTEX_MAXIMUM_PRIORITY+1, in the ARMv7-M port this reserves
+ * the @p CORTEX_MAXIMUM_PRIORITY priority level as fast interrupts
+ * priority level.
+ * @note The SVCALL vector is only used in the ARMv7-M port, it is available
+ * to user in the ARMv6-M port.
+ */
+#ifndef CORTEX_PRIORITY_SVCALL
+#define CORTEX_PRIORITY_SVCALL (CORTEX_MAXIMUM_PRIORITY + 1)
+#else
+/* If it is externally redefined then better perform a validity check on it.*/
+#if !CORTEX_IS_VALID_PRIORITY(CORTEX_PRIORITY_SVCALL)
+#error "invalid priority level specified for CORTEX_PRIORITY_SVCALL"
+#endif
+#endif
+
+/**
+ * @brief PENDSV handler priority.
+ * @note The default PENDSV handler priority is set at the
+ * @p CORTEX_MINIMUM_PRIORITY priority level.
+ * @note The PENDSV vector is only used in the ARMv7-M legacy port, it is
+ * available to user in the ARMv6-M and ARMv7-M ports.
+ * @note In the ARMv7-M legacy port this value should be not changed from
+ * the minimum priority level.
+ */
+#ifndef CORTEX_PRIORITY_PENDSV
+#define CORTEX_PRIORITY_PENDSV CORTEX_MINIMUM_PRIORITY
+#else
+/* If it is externally redefined then better perform a validity check on it.*/
+#if !CORTEX_IS_VALID_PRIORITY(CORTEX_PRIORITY_PENDSV)
+#error "invalid priority level specified for CORTEX_PRIORITY_PENDSV"
+#endif
+#endif
+
+/**
+ * @brief BASEPRI level within kernel lock.
+ * @note This value must not mask the SVCALL priority level or the
+ * kernel would hard fault.
+ * @note ARMv7-M architecture only.
+ */
+#ifndef CORTEX_BASEPRI_KERNEL
+#define CORTEX_BASEPRI_KERNEL \
+ CORTEX_PRIORITY_MASK(CORTEX_PRIORITY_SVCALL+1)
+#endif
+
+/**
+ * @brief Stack alignment enforcement.
+ * @note The default value is 64 in order to comply with EABI, reducing
+ * the value to 32 can save some RAM space if you don't care about
+ * binary compatibility with EABI compiled libraries.
+ * @note Allowed values are 32 or 64.
+ */
+#ifndef CORTEX_STACK_ALIGNMENT
+#define CORTEX_STACK_ALIGNMENT 64
+#endif
+
+/*===========================================================================*/
+/* Port exported info. */
+/*===========================================================================*/
+
+/**
+ * @brief Macro defining a generic ARM architecture.
+ */
+#define CH_ARCHITECTURE_ARM
+
+#if defined(__DOXYGEN__)
+/**
+ * @brief Macro defining the specific ARM architecture.
+ * @note This macro is for documentation only, the real name changes
+ * depending on the selected architecture, the possible names are:
+ * - CH_ARCHITECTURE_ARM_v6M.
+ * - CH_ARCHITECTURE_ARM_v7M.
+ * .
+ */
+#define CH_ARCHITECTURE_ARM_vxm
+
+/**
+ * @brief Name of the implemented architecture.
+ * @note The value is for documentation only, the real value changes
+ * depending on the selected architecture, the possible values are:
+ * - "ARMv6-M".
+ * - "ARMv7-M".
+ * - "ARMv7-ME".
+ * .
+ */
+#define CH_ARCHITECTURE_NAME "ARMvx-M"
+
+/**
+ * @brief Name of the architecture variant (optional).
+ * @note The value is for documentation only, the real value changes
+ * depending on the selected architecture, the possible values are:
+ * - "Cortex-M0"
+ * - "Cortex-M1"
+ * - "Cortex-M3"
+ * - "Cortex-M4"
+ * .
+ */
+#define CH_CORE_VARIANT_NAME "Cortex-Mx"
+
+#elif CORTEX_MODEL == CORTEX_M4
+#define CH_ARCHITECTURE_ARM_v7M
+#define CH_ARCHITECTURE_NAME "ARMv7-ME"
+#define CH_CORE_VARIANT_NAME "Cortex-M4"
+#elif CORTEX_MODEL == CORTEX_M3
+#define CH_ARCHITECTURE_ARM_v7M
+#define CH_ARCHITECTURE_NAME "ARMv7-M"
+#define CH_CORE_VARIANT_NAME "Cortex-M3"
+#elif CORTEX_MODEL == CORTEX_M1
+#define CH_ARCHITECTURE_ARM_v6M
+#define CH_ARCHITECTURE_NAME "ARMv6-M"
+#define CH_CORE_VARIANT_NAME "Cortex-M1"
+#elif CORTEX_MODEL == CORTEX_M0
+#define CH_ARCHITECTURE_ARM_v6M
+#define CH_ARCHITECTURE_NAME "ARMv6-M"
+#define CH_CORE_VARIANT_NAME "Cortex-M0"
+#endif
+
+/*===========================================================================*/
+/* Port implementation part (common). */
+/*===========================================================================*/
+
+/**
+ * @brief Stack and memory alignment enforcement.
+ */
+#if (CORTEX_STACK_ALIGNMENT == 64) || defined(__DOXYGEN__)
+#if defined(__DOXYGEN__)
+/* Dummy declaration, for Doxygen only.*/
+typedef uint64_t stkalign_t;
+#else
+typedef uint64_t stkalign_t __attribute__ ((aligned (8)));
+#endif
+#elif CORTEX_STACK_ALIGNMENT == 32
+typedef uint32_t stkalign_t __attribute__ ((aligned (4)));
+#else
+#error "invalid stack alignment selected"
+#endif
+
+/**
+ * @brief Generic ARM register.
+ */
+typedef void *regarm_t;
+
+#if defined(__DOXYGEN__)
+/**
+ * @brief Interrupt saved context.
+ * @details This structure represents the stack frame saved during a
+ * preemption-capable interrupt handler.
+ * @note It is implemented to match the Cortex-Mx exception context.
+ */
+struct extctx {
+ /* Dummy definition, just for Doxygen.*/
+};
+
+/**
+ * @brief System saved context.
+ * @details This structure represents the inner stack frame during a context
+ * switching.
+ */
+struct intctx {
+ /* Dummy definition, just for Doxygen.*/
+};
+#endif
+
+/**
+ * @brief Platform dependent part of the @p Thread structure.
+ * @details In this port the structure just holds a pointer to the @p intctx
+ * structure representing the stack pointer at context switch time.
+ */
+struct context {
+ struct intctx *r13;
+};
+
+/**
+ * @brief Enforces a correct alignment for a stack area size value.
+ */
+#define STACK_ALIGN(n) ((((n) - 1) | (sizeof(stkalign_t) - 1)) + 1)
+
+/**
+ * @brief Computes the thread working area global size.
+ */
+#define THD_WA_SIZE(n) STACK_ALIGN(sizeof(Thread) + \
+ sizeof(struct intctx) + \
+ sizeof(struct extctx) + \
+ (n) + (INT_REQUIRED_STACK))
+
+/**
+ * @brief Static working area allocation.
+ * @details This macro is used to allocate a static thread working area
+ * aligned as both position and size.
+ */
+#define WORKING_AREA(s, n) stkalign_t s[THD_WA_SIZE(n) / sizeof(stkalign_t)]
+
+/* Includes the architecture-specific implementation part.*/
+#if defined(CH_ARCHITECTURE_ARM_v6M)
+#include "chcore_v6m.h"
+#elif defined(CH_ARCHITECTURE_ARM_v7M)
+#include "chcore_v7m.h"
+#endif
+
+#endif /* _CHCORE_H_ */
+
+/** @} */
diff --git a/os/ports/RVCT/ARMCMx/chcore_v7m.c b/os/ports/RVCT/ARMCMx/chcore_v7m.c new file mode 100644 index 000000000..fe267b9e9 --- /dev/null +++ b/os/ports/RVCT/ARMCMx/chcore_v7m.c @@ -0,0 +1,46 @@ +/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file IAR/ARMCMx/chcore_v7m.c
+ * @brief ARMv7-M architecture port code.
+ *
+ * @addtogroup IAR_ARMCMx_V7M_CORE
+ * @{
+ */
+
+#include "ch.h"
+
+/**
+ * @brief System Timer vector.
+ * @details This interrupt is used as system tick.
+ * @note The timer must be initialized in the startup code.
+ */
+CH_IRQ_HANDLER(SysTickVector) {
+
+ CH_IRQ_PROLOGUE();
+
+ chSysLockFromIsr();
+ chSysTimerHandlerI();
+ chSysUnlockFromIsr();
+
+ CH_IRQ_EPILOGUE();
+}
+
+/** @} */
diff --git a/os/ports/RVCT/ARMCMx/chcore_v7m.h b/os/ports/RVCT/ARMCMx/chcore_v7m.h new file mode 100644 index 000000000..57b18f980 --- /dev/null +++ b/os/ports/RVCT/ARMCMx/chcore_v7m.h @@ -0,0 +1,252 @@ +/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file IAR/ARMCMx/chcore_v7m.h
+ * @brief ARMv7-M architecture port macros and structures.
+ *
+ * @addtogroup IAR_ARMCMx_V7M_CORE
+ * @{
+ */
+
+#ifndef _CHCORE_V7M_H_
+#define _CHCORE_V7M_H_
+
+/*===========================================================================*/
+/* Port implementation part. */
+/*===========================================================================*/
+
+#if !defined(__DOXYGEN__)
+struct extctx {
+ regarm_t r0;
+ regarm_t r1;
+ regarm_t r2;
+ regarm_t r3;
+ regarm_t r12;
+ regarm_t lr_thd;
+ regarm_t pc;
+ regarm_t xpsr;
+};
+
+struct intctx {
+ regarm_t r4;
+ regarm_t r5;
+ regarm_t r6;
+#ifndef CH_CURRP_REGISTER_CACHE
+ regarm_t r7;
+#endif
+ regarm_t r8;
+ regarm_t r9;
+ regarm_t r10;
+ regarm_t r11;
+ regarm_t lr;
+};
+#endif
+
+/**
+ * @brief Platform dependent part of the @p chThdCreateI() API.
+ * @details This code usually setup the context switching frame represented
+ * by an @p intctx structure.
+ */
+#define SETUP_CONTEXT(workspace, wsize, pf, arg) { \
+ tp->p_ctx.r13 = (struct intctx *)((uint8_t *)workspace + \
+ wsize - \
+ sizeof(struct intctx)); \
+ tp->p_ctx.r13->r4 = (void *)pf; \
+ tp->p_ctx.r13->r5 = arg; \
+ tp->p_ctx.r13->lr = (void *)_port_thread_start; \
+}
+
+/**
+ * @brief Stack size for the system idle thread.
+ * @details This size depends on the idle thread implementation, usually
+ * the idle thread should take no more space than those reserved
+ * by @p INT_REQUIRED_STACK.
+ * @note In this port it is set to 8 because the idle thread does have
+ * a stack frame when compiling without optimizations. You may
+ * reduce this value to zero when compiling with optimizations.
+ */
+#ifndef IDLE_THREAD_STACK_SIZE
+#define IDLE_THREAD_STACK_SIZE 8
+#endif
+
+/**
+ * @brief Per-thread stack overhead for interrupts servicing.
+ * @details This constant is used in the calculation of the correct working
+ * area size.
+ * This value can be zero on those architecture where there is a
+ * separate interrupt stack and the stack space between @p intctx and
+ * @p extctx is known to be zero.
+ * @note In this port it is conservatively set to 16 because the function
+ * @p chSchDoRescheduleI() can have a stack frame, expecially with
+ * compiler optimizations disabled.
+ */
+#ifndef INT_REQUIRED_STACK
+#define INT_REQUIRED_STACK 16
+#endif
+
+/**
+ * @brief IRQ prologue code.
+ * @details This macro must be inserted at the start of all IRQ handlers
+ * enabled to invoke system APIs.
+ */
+#define PORT_IRQ_PROLOGUE()
+
+/**
+ * @brief IRQ epilogue code.
+ * @details This macro must be inserted at the end of all IRQ handlers
+ * enabled to invoke system APIs.
+ */
+#define PORT_IRQ_EPILOGUE() _port_irq_epilogue()
+
+/**
+ * @brief IRQ handler function declaration.
+ * @note @p id can be a function name or a vector number depending on the
+ * port implementation.
+ */
+#define PORT_IRQ_HANDLER(id) void id(void)
+
+/**
+ * @brief Fast IRQ handler function declaration.
+ * @note @p id can be a function name or a vector number depending on the
+ * port implementation.
+ */
+#define PORT_FAST_IRQ_HANDLER(id) void id(void)
+
+/**
+ * @brief Port-related initialization code.
+ */
+#define port_init() { \
+ SCB_AIRCR = AIRCR_VECTKEY | AIRCR_PRIGROUP(0); \
+ NVICSetSystemHandlerPriority(HANDLER_SVCALL, \
+ CORTEX_PRIORITY_MASK(CORTEX_PRIORITY_SVCALL)); \
+ NVICSetSystemHandlerPriority(HANDLER_SYSTICK, \
+ CORTEX_PRIORITY_MASK(CORTEX_PRIORITY_SYSTICK)); \
+}
+
+/**
+ * @brief Kernel-lock action.
+ * @details Usually this function just disables interrupts but may perform
+ * more actions.
+ * @note In this port this it raises the base priority to kernel level.
+ */
+#define port_lock() { \
+ register uint32_t basepri __asm("basepri"); \
+ basepri = CORTEX_BASEPRI_KERNEL; \
+}
+
+/**
+ * @brief Kernel-unlock action.
+ * @details Usually this function just disables interrupts but may perform
+ * more actions.
+ * @note In this port this it lowers the base priority to user level.
+ */
+#define port_unlock() { \
+ register uint32_t basepri __asm("basepri"); \
+ basepri = CORTEX_BASEPRI_DISABLED; \
+}
+
+/**
+ * @brief Kernel-lock action from an interrupt handler.
+ * @details This function is invoked before invoking I-class APIs from
+ * interrupt handlers. The implementation is architecture dependent,
+ * in its simplest form it is void.
+ * @note Same as @p port_lock() in this port.
+ */
+#define port_lock_from_isr() port_lock()
+
+/**
+ * @brief Kernel-unlock action from an interrupt handler.
+ * @details This function is invoked after invoking I-class APIs from interrupt
+ * handlers. The implementation is architecture dependent, in its
+ * simplest form it is void.
+ * @note Same as @p port_unlock() in this port.
+ */
+#define port_unlock_from_isr() port_unlock()
+
+/**
+ * @brief Disables all the interrupt sources.
+ * @note Of course non maskable interrupt sources are not included.
+ * @note In this port it disables all the interrupt sources by raising
+ * the priority mask to level 0.
+ */
+#define port_disable() __disable_irq()
+
+/**
+ * @brief Disables the interrupt sources below kernel-level priority.
+ * @note Interrupt sources above kernel level remains enabled.
+ * @note In this port it raises/lowers the base priority to kernel level.
+ */
+#define port_suspend() { \
+ register uint32_t basepri __asm("basepri"); \
+ basepri = CORTEX_BASEPRI_KERNEL; \
+ __enable_irq(); \
+}
+
+/**
+ * @brief Enables all the interrupt sources.
+ * @note In this port it lowers the base priority to user level.
+ */
+#define port_enable() { \
+ register uint32_t basepri __asm("basepri"); \
+ basepri = CORTEX_BASEPRI_DISABLED; \
+ __enable_irq(); \
+}
+
+/**
+ * @brief Enters an architecture-dependent IRQ-waiting mode.
+ * @details The function is meant to return when an interrupt becomes pending.
+ * The simplest implementation is an empty function or macro but this
+ * would not take advantage of architecture-specific power saving
+ * modes.
+ * @note Implemented as an inlined @p WFI instruction.
+ */
+#if CORTEX_ENABLE_WFI_IDLE || defined(__DOXYGEN__)
+#define port_wait_for_interrupt() __wfi()
+#else
+#define port_wait_for_interrupt()
+#endif
+
+/**
+ * @brief Performs a context switch between two threads.
+ * @details This is the most critical code in any port, this function
+ * is responsible for the context switch between 2 threads.
+ * @note The implementation of this code affects <b>directly</b> the context
+ * switch performance so optimize here as much as you can.
+ *
+ * @param[in] ntp the thread to be switched in
+ * @param[in] otp the thread to be switched out
+ */
+#define port_switch(ntp, otp) _port_switch(ntp, otp)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+ void port_halt(void);
+ void _port_switch(Thread *ntp, Thread *otp);
+ void _port_irq_epilogue(void);
+ void _port_switch_from_isr(void);
+ void _port_thread_start(void);
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CHCORE_V7M_H_ */
+
+/** @} */
diff --git a/os/ports/RVCT/ARMCMx/chcoreasm_v7m.s b/os/ports/RVCT/ARMCMx/chcoreasm_v7m.s new file mode 100644 index 000000000..1e00ccea3 --- /dev/null +++ b/os/ports/RVCT/ARMCMx/chcoreasm_v7m.s @@ -0,0 +1,134 @@ +/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/*
+ * Imports the Cortex-Mx parameters header and performs the same calculations
+ * done in chcore.h.
+ */
+#include "cmparams.h"
+
+#define CORTEX_PRIORITY_MASK(n) ((n) << (8 - CORTEX_PRIORITY_BITS))
+
+#ifndef CORTEX_PRIORITY_SVCALL
+#define CORTEX_PRIORITY_SVCALL 1
+#endif
+
+#ifndef CORTEX_BASEPRI_KERNEL
+#define CORTEX_BASEPRI_KERNEL CORTEX_PRIORITY_MASK(CORTEX_PRIORITY_SVCALL+1)
+#endif
+
+#define CORTEX_BASEPRI_DISABLED 0
+
+EXTCTX_SIZE EQU 32
+CONTEXT_OFFSET EQU 12
+SCB_ICSR EQU 0xE000ED04
+ICSR_RETTOBASE EQU 0x00000800
+
+ PRESERVE8
+ THUMB
+ AREA |.text|, CODE, READONLY
+
+ IMPORT chThdExit
+ IMPORT chSchIsRescRequiredExI
+ IMPORT chSchDoRescheduleI
+
+/*
+ * Performs a context switch between two threads.
+ */
+ EXPORT _port_switch
+_port_switch PROC
+ push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
+ str sp, [r1, #CONTEXT_OFFSET]
+ ldr sp, [r0, #CONTEXT_OFFSET]
+ pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
+ ENDP
+
+/*
+ * Start a thread by invoking its work function.
+ * If the work function returns @p chThdExit() is automatically invoked.
+ */
+ EXPORT _port_thread_start
+_port_thread_start PROC
+ movs r3, #CORTEX_BASEPRI_DISABLED
+ msr BASEPRI, r3
+ mov r0, r5
+ blx r4
+ bl chThdExit
+ ENDP
+
+/*
+ * Post-IRQ switch code.
+ * Exception handlers return here for context switching.
+ */
+ EXPORT _port_switch_from_isr
+_port_switch_from_isr PROC
+ bl chSchDoRescheduleI
+ svc #0
+ ENDP
+
+/*
+ * Reschedule verification and setup after an IRQ.
+ */
+ EXPORT _port_irq_epilogue
+_port_irq_epilogue PROC
+ movs r3, #CORTEX_BASEPRI_KERNEL
+ msr BASEPRI, r3
+ mov r3, #SCB_ICSR :AND: 0xFFFF
+ movt r3, #SCB_ICSR :SHR: 16
+ ldr r3, [r3, #0]
+ tst r3, #ICSR_RETTOBASE
+ bne skipexit
+ movs r3, #CORTEX_BASEPRI_DISABLED
+ msr BASEPRI, r3
+ bx lr
+skipexit
+ push {r3, lr}
+ bl chSchIsRescRequiredExI
+ cmp r0, #0
+ beq noreschedule
+ mrs r3, PSP
+ subs r3, r3, #EXTCTX_SIZE
+ msr PSP, r3
+ ldr r2, =_port_switch_from_isr
+ str r2, [r3, #24]
+ mov r2, #0x01000000
+ str r2, [r3, #28]
+ pop {r3, pc}
+noreschedule
+ movs r3, #CORTEX_BASEPRI_DISABLED
+ msr BASEPRI, r3
+ pop {r3, pc}
+ ENDP
+
+/*
+ * SVC vector.
+ * Discarding the current exception context and positioning the stack to
+ * point to the real one.
+ */
+ EXPORT SVCallVector
+SVCallVector PROC
+ mrs r3, PSP
+ adds r3, r3, #EXTCTX_SIZE
+ msr PSP, r3
+ movs r3, #CORTEX_BASEPRI_DISABLED
+ msr BASEPRI, r3
+ bx lr
+ ENDP
+
+ END
diff --git a/os/ports/RVCT/ARMCMx/chtypes.h b/os/ports/RVCT/ARMCMx/chtypes.h new file mode 100644 index 000000000..3386f5d4b --- /dev/null +++ b/os/ports/RVCT/ARMCMx/chtypes.h @@ -0,0 +1,80 @@ +/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file IAR/ARMCMx/chtypes.h
+ * @brief ARM Cortex-Mx port system types.
+ *
+ * @addtogroup IAR_ARMCMx_CORE
+ * @{
+ */
+
+#ifndef _CHTYPES_H_
+#define _CHTYPES_H_
+
+#define __need_NULL
+#define __need_size_t
+#define __need_ptrdiff_t
+#include <stddef.h>
+
+#include <stdint.h>
+
+typedef int32_t bool_t; /**< Fast boolean type. */
+typedef uint8_t tmode_t; /**< Thread flags. */
+typedef uint8_t tstate_t; /**< Thread state. */
+typedef uint8_t trefs_t; /**< Thread references counter. */
+typedef uint32_t tprio_t; /**< Thread priority. */
+typedef int32_t msg_t; /**< Inter-thread message. */
+typedef int32_t eventid_t; /**< Event Id. */
+typedef uint32_t eventmask_t; /**< Events mask. */
+typedef uint32_t systime_t; /**< System time. */
+typedef int32_t cnt_t; /**< Resources counter. */
+
+/**
+ * @brief Inline function modifier.
+ */
+#define INLINE __inline
+
+/**
+ * @brief ROM constant modifier.
+ * @note It is set to use the "const" keyword in this port.
+ */
+#define ROMCONST const
+
+/**
+ * @brief Packed structure modifier (within).
+ * @note It uses the "packed" GCC attribute.
+ */
+#define PACK_STRUCT_STRUCT __attribute__((packed))
+
+/**
+ * @brief Packed structure modifier (before).
+ * @note Empty in this port.
+ */
+#define PACK_STRUCT_BEGIN
+
+/**
+ * @brief Packed structure modifier (after).
+ * @note Empty in this port.
+ */
+#define PACK_STRUCT_END
+
+#endif /* _CHTYPES_H_ */
+
+/** @} */
diff --git a/os/ports/RVCT/ARMCMx/cstartup.s b/os/ports/RVCT/ARMCMx/cstartup.s new file mode 100644 index 000000000..95a39e831 --- /dev/null +++ b/os/ports/RVCT/ARMCMx/cstartup.s @@ -0,0 +1,109 @@ +/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+;/* <<< Use Configuration Wizard in Context Menu >>> */
+
+;// <h> Main Stack Configuration
+;// <o> Main Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;// </h>
+main_stack_size EQU 0x00000400
+
+;// <h> Process Stack Configuration
+;// <o> Process Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;// </h>
+proc_stack_size EQU 0x00000400
+
+;// <h> C-runtime heap size
+;// <o> C-runtime heap size (in Bytes) <0x0-0xFFFFFFFF:8>
+;// </h>
+heap_size EQU 0x00000400
+
+ AREA MSTACK, NOINIT, READWRITE, ALIGN=3
+main_stack_mem SPACE main_stack_size
+ EXPORT __initial_msp
+__initial_msp
+
+ AREA CSTACK, NOINIT, READWRITE, ALIGN=3
+proc_stack_mem SPACE proc_stack_size
+ EXPORT __initial_sp
+__initial_sp
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE heap_size
+__heap_limit
+
+CONTROL_MODE_PRIVILEGED EQU 0
+CONTROL_MODE_UNPRIVILEGED EQU 1
+CONTROL_USE_MSP EQU 0
+CONTROL_USE_PSP EQU 2
+
+ PRESERVE8
+ THUMB
+
+ AREA |.text|, CODE, READONLY
+
+/*
+ * Reset handler.
+ */
+ IMPORT __main
+ EXPORT Reset_Handler
+Reset_Handler PROC
+ cpsid i
+ ldr r0, =__initial_sp
+ msr PSP, r0
+ movs r0, #CONTROL_MODE_PRIVILEGED :OR: CONTROL_USE_PSP
+ msr CONTROL, r0
+ isb
+ bl __early_init
+ b __main
+ ENDP
+
+__early_init PROC
+ EXPORT __early_init [WEAK]
+ bx lr
+ ENDP
+
+ ALIGN
+
+/*
+ * User Initial Stack & Heap.
+ */
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+__user_initial_stackheap
+ ldr r0, =Heap_Mem
+ ldr r1, =(proc_stack_mem + proc_stack_size)
+ ldr r2, =(Heap_Mem + heap_size)
+ ldr r3, =proc_stack_mem
+ bx lr
+
+ ALIGN
+
+ ENDIF
+
+ END
diff --git a/os/ports/RVCT/ARMCMx/nvic.c b/os/ports/RVCT/ARMCMx/nvic.c new file mode 100644 index 000000000..93dbd6ba4 --- /dev/null +++ b/os/ports/RVCT/ARMCMx/nvic.c @@ -0,0 +1,75 @@ +/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file IAR/ARMCMx/nvic.c
+ * @brief Cortex-Mx NVIC support code.
+ *
+ * @addtogroup IAR_ARMCMx_NVIC
+ * @{
+ */
+
+#include "ch.h"
+#include "nvic.h"
+
+/**
+ * @brief Sets the priority of an interrupt handler and enables it.
+ *
+ * @param n the interrupt number
+ * @param prio the interrupt priority mask
+ *
+ * @note The parameters are not tested for correctness.
+ */
+void NVICEnableVector(uint32_t n, uint32_t prio) {
+ unsigned sh = (n & 3) << 3;
+
+ NVIC_IPR(n >> 2) = (NVIC_IPR(n >> 2) & ~(0xFF << sh)) | (prio << sh);
+ NVIC_ICPR(n >> 5) = 1 << (n & 0x1F);
+ NVIC_ISER(n >> 5) = 1 << (n & 0x1F);
+}
+
+/**
+ * @brief Disables an interrupt handler.
+ *
+ * @param n the interrupt number
+ *
+ * @note The parameters are not tested for correctness.
+ */
+void NVICDisableVector(uint32_t n) {
+ unsigned sh = (n & 3) << 3;
+
+ NVIC_ICER(n >> 5) = 1 << (n & 0x1F);
+ NVIC_IPR(n >> 2) = NVIC_IPR(n >> 2) & ~(0xFF << sh);
+}
+
+/**
+ * @brief Changes the priority of a system handler.
+ *
+ * @param handler the system handler number
+ * @param prio the system handler priority mask
+ * @note The parameters are not tested for correctness.
+ */
+void NVICSetSystemHandlerPriority(uint32_t handler, uint32_t prio) {
+ unsigned sh = (handler & 3) * 8;
+
+ SCB_SHPR(handler >> 2) = (SCB_SHPR(handler >> 2) &
+ ~(0xFF << sh)) | (prio << sh);
+}
+
+/** @} */
diff --git a/os/ports/RVCT/ARMCMx/nvic.h b/os/ports/RVCT/ARMCMx/nvic.h new file mode 100644 index 000000000..321a0ed7b --- /dev/null +++ b/os/ports/RVCT/ARMCMx/nvic.h @@ -0,0 +1,192 @@ +/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file IAR/ARMCMx/nvic.h
+ * @brief Cortex-Mx NVIC support macros and structures.
+ *
+ * @addtogroup IAR_ARMCMx_NVIC
+ * @{
+ */
+
+#ifndef _NVIC_H_
+#define _NVIC_H_
+
+/*
+ * System vector constants for @p NVICSetSystemHandlerPriority().
+ */
+#define HANDLER_MEM_MANAGE 0 /**< MEM MANAGE vector id. */
+#define HANDLER_BUS_FAULT 1 /**< BUS FAULT vector id. */
+#define HANDLER_USAGE_FAULT 2 /**< USAGE FAULT vector id. */
+#define HANDLER_RESERVED_3 3
+#define HANDLER_RESERVED_4 4
+#define HANDLER_RESERVED_5 5
+#define HANDLER_RESERVED_6 6
+#define HANDLER_SVCALL 7 /**< SVCALL vector id. */
+#define HANDLER_DEBUG_MONITOR 8 /**< DEBUG MONITOR vector id. */
+#define HANDLER_RESERVED_9 9
+#define HANDLER_PENDSV 10 /**< PENDSV vector id. */
+#define HANDLER_SYSTICK 11 /**< SYS TCK vector id. */
+
+typedef volatile uint8_t IOREG8; /**< 8 bits I/O register type. */
+typedef volatile uint32_t IOREG32; /**< 32 bits I/O register type. */
+
+/**
+ * @brief NVIC ITCR register.
+ */
+#define NVIC_ITCR (*((IOREG32 *)0xE000E004))
+
+/**
+ * @brief NVIC STIR register.
+ */
+#define NVIC_STIR (*((IOREG32 *)0xE000EF00))
+
+/**
+ * @brief Structure representing the SYSTICK I/O space.
+ */
+typedef struct {
+ IOREG32 CSR;
+ IOREG32 RVR;
+ IOREG32 CVR;
+ IOREG32 CBVR;
+} CM3_ST;
+
+/**
+ * @brief SYSTICK peripheral base address.
+ */
+#define STBase ((CM3_ST *)0xE000E010)
+#define ST_CSR (STBase->CSR)
+#define ST_RVR (STBase->RVR)
+#define ST_CVR (STBase->CVR)
+#define ST_CBVR (STBase->CBVR)
+
+#define CSR_ENABLE_MASK (0x1 << 0)
+#define ENABLE_OFF_BITS (0 << 0)
+#define ENABLE_ON_BITS (1 << 0)
+#define CSR_TICKINT_MASK (0x1 << 1)
+#define TICKINT_DISABLED_BITS (0 << 1)
+#define TICKINT_ENABLED_BITS (1 << 1)
+#define CSR_CLKSOURCE_MASK (0x1 << 2)
+#define CLKSOURCE_EXT_BITS (0 << 2)
+#define CLKSOURCE_CORE_BITS (1 << 2)
+#define CSR_COUNTFLAG_MASK (0x1 << 16)
+
+#define RVR_RELOAD_MASK (0xFFFFFF << 0)
+
+#define CVR_CURRENT_MASK (0xFFFFFF << 0)
+
+#define CBVR_TENMS_MASK (0xFFFFFF << 0)
+#define CBVR_SKEW_MASK (0x1 << 30)
+#define CBVR_NOREF_MASK (0x1 << 31)
+
+/**
+ * @brief Structure representing the NVIC I/O space.
+ */
+typedef struct {
+ IOREG32 ISER[8];
+ IOREG32 unused1[24];
+ IOREG32 ICER[8];
+ IOREG32 unused2[24];
+ IOREG32 ISPR[8];
+ IOREG32 unused3[24];
+ IOREG32 ICPR[8];
+ IOREG32 unused4[24];
+ IOREG32 IABR[8];
+ IOREG32 unused5[56];
+ IOREG32 IPR[60];
+} CM3_NVIC;
+
+/**
+ * @brief NVIC peripheral base address.
+ */
+#define NVICBase ((CM3_NVIC *)0xE000E100)
+#define NVIC_ISER(n) (NVICBase->ISER[n])
+#define NVIC_ICER(n) (NVICBase->ICER[n])
+#define NVIC_ISPR(n) (NVICBase->ISPR[n])
+#define NVIC_ICPR(n) (NVICBase->ICPR[n])
+#define NVIC_IABR(n) (NVICBase->IABR[n])
+#define NVIC_IPR(n) (NVICBase->IPR[n])
+
+/**
+ * @brief Structure representing the System Control Block I/O space.
+ */
+typedef struct {
+ IOREG32 CPUID;
+ IOREG32 ICSR;
+ IOREG32 VTOR;
+ IOREG32 AIRCR;
+ IOREG32 SCR;
+ IOREG32 CCR;
+ IOREG32 SHPR[3];
+ IOREG32 SHCSR;
+ IOREG32 CFSR;
+ IOREG32 HFSR;
+ IOREG32 DFSR;
+ IOREG32 MMFAR;
+ IOREG32 BFAR;
+ IOREG32 AFSR;
+} CM3_SCB;
+
+/**
+ * @brief SCB peripheral base address.
+ */
+#define SCBBase ((CM3_SCB *)0xE000ED00)
+#define SCB_CPUID (SCBBase->CPUID)
+#define SCB_ICSR (SCBBase->ICSR)
+#define SCB_VTOR (SCBBase->VTOR)
+#define SCB_AIRCR (SCBBase->AIRCR)
+#define SCB_SCR (SCBBase->SCR)
+#define SCB_CCR (SCBBase->CCR)
+#define SCB_SHPR(n) (SCBBase->SHPR[n])
+#define SCB_SHCSR (SCBBase->SHCSR)
+#define SCB_CFSR (SCBBase->CFSR)
+#define SCB_HFSR (SCBBase->HFSR)
+#define SCB_DFSR (SCBBase->DFSR)
+#define SCB_MMFAR (SCBBase->MMFAR)
+#define SCB_BFAR (SCBBase->BFAR)
+#define SCB_AFSR (SCBBase->AFSR)
+
+#define ICSR_VECTACTIVE_MASK (0x1FF << 0)
+#define ICSR_RETTOBASE (0x1 << 11)
+#define ICSR_VECTPENDING_MASK (0x1FF << 12)
+#define ICSR_ISRPENDING (0x1 << 22)
+#define ICSR_ISRPREEMPT (0x1 << 23)
+#define ICSR_PENDSTCLR (0x1 << 25)
+#define ICSR_PENDSTSET (0x1 << 26)
+#define ICSR_PENDSVCLR (0x1 << 27)
+#define ICSR_PENDSVSET (0x1 << 28)
+#define ICSR_NMIPENDSET (0x1 << 31)
+
+#define AIRCR_VECTKEY 0x05FA0000
+#define AIRCR_PRIGROUP_MASK (0x7 << 8)
+#define AIRCR_PRIGROUP(n) ((n) << 8)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+ void NVICEnableVector(uint32_t n, uint32_t prio);
+ void NVICDisableVector(uint32_t n);
+ void NVICSetSystemHandlerPriority(uint32_t handler, uint32_t prio);
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NVIC_H_ */
+
+/** @} */
|