+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_guix.xsd">
-
- <SchemaVersion>-5.1</SchemaVersion>
-
- <Header>### uVision Project, (C) Keil Software</Header>
-
- <ViewPool/>
-
- <SECTreeCtrl>
- <View>
- <WinId>38003</WinId>
- <ViewName>Registers</ViewName>
- <TableColWidths>115 235</TableColWidths>
- </View>
- <View>
- <WinId>346</WinId>
- <ViewName>Code Coverage</ViewName>
- <TableColWidths>868 438</TableColWidths>
- </View>
- <View>
- <WinId>204</WinId>
- <ViewName>Performance Analyzer</ViewName>
- <TableColWidths>1028 154 154 100</TableColWidths>
- </View>
- </SECTreeCtrl>
-
- <TreeListPane>
- <View>
- <WinId>1506</WinId>
- <ViewName>Symbols</ViewName>
- <UserString></UserString>
- <TableColWidths>70 70 70</TableColWidths>
- </View>
- <View>
- <WinId>1936</WinId>
- <ViewName>Watch 1</ViewName>
- <UserString></UserString>
- <TableColWidths>167 70 70</TableColWidths>
- </View>
- <View>
- <WinId>1937</WinId>
- <ViewName>Watch 2</ViewName>
- <UserString></UserString>
- <TableColWidths>70 70 70</TableColWidths>
- </View>
- <View>
- <WinId>1935</WinId>
- <ViewName>Call Stack + Locals</ViewName>
- <UserString></UserString>
- <TableColWidths>70 70 70</TableColWidths>
- </View>
- <View>
- <WinId>2506</WinId>
- <ViewName>Trace Data</ViewName>
- <UserString>FiltIdx=0;DescrEn=0;DescrHeight=4;FuncTrc=1;FindType=8;ColWidths=004B00870082005F004600E600C80096</UserString>
- <TableColWidths>75 135 95 70 230 200 150</TableColWidths>
- </View>
- </TreeListPane>
-
- <WindowSettings>
- <LogicAnalizer>
- <ShowLACursor>0</ShowLACursor>
- <ShowSignalInfo>0</ShowSignalInfo>
- <ShowCycles>0</ShowCycles>
- <LeftSideBarSize>50</LeftSideBarSize>
- <TimeBaseIndex>16</TimeBaseIndex>
- </LogicAnalizer>
- </WindowSettings>
-
- <WinLayoutEx>
- <sActiveDebugView></sActiveDebugView>
- <WindowPosition>
- <length>44</length>
- <flags>2</flags>
- <showCmd>3</showCmd>
- <MinPosition>
- <xPos>-1</xPos>
- <yPos>-1</yPos>
- </MinPosition>
- <MaxPosition>
- <xPos>-1</xPos>
- <yPos>-1</yPos>
- </MaxPosition>
- <NormalPosition>
- <Top>0</Top>
- <Left>351</Left>
- <Right>1293</Right>
- <Bottom>872</Bottom>
- </NormalPosition>
- </WindowPosition>
- <MDIClientArea>
- <RegID>0</RegID>
- <MDITabState>
- <Len>857</Len>
- <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000600000002000000010000004C433A5C455C4465765C4672656552544F535C576F726B696E67436F70795C4672656552544F535C536F757263655C706F727461626C655C436F6D6D6F6E5C6D70755F77726170706572732E63000000000E6D70755F77726170706572732E6300000000F7B88600FFFFFFFF5A433A5C455C4465765C4672656552544F535C576F726B696E67436F70795C4672656552544F535C44656D6F5C434F525445585F4D50555F53696D756C61746F725F4B65696C5F4743435C4672656552544F53436F6E6669672E6800000000104672656552544F53436F6E6669672E68000000009CC1B600FFFFFFFF50433A5C455C4465765C4672656552544F535C576F726B696E67436F70795C4672656552544F535C44656D6F5C434F525445585F4D50555F53696D756C61746F725F4B65696C5F4743435C6D61696E2E6300000000066D61696E2E6300000000BCA8E100FFFFFFFF4D433A5C455C4465765C4672656552544F535C576F726B696E67436F70795C4672656552544F535C536F757263655C706F727461626C655C4743435C41524D5F434D335F4D50555C706F72742E630000000006706F72742E6300000000F0A0A100FFFFFFFF67433A5C455C4465765C4672656552544F535C576F726B696E67436F70795C4672656552544F535C44656D6F5C434F525445585F4D50555F53696D756C61746F725F4B65696C5F4743435C4743435F53706563696669635C737461727475705F41524D434D342E530000000010737461727475705F41524D434D342E5300000000BECEA100FFFFFFFF52433A5C455C4465765C4672656552544F535C576F726B696E67436F70795C4672656552544F535C536F757263655C706F727461626C655C4743435C41524D5F434D335F4D50555C706F72746D6163726F2E68000000000B706F72746D6163726F2E6800000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000110100005E0000008007000050030000</Data>
- </MDITabState>
- </MDIClientArea>
- <ViewEx>
- <ViewType>0</ViewType>
- <ViewName>Build</ViewName>
- <Window>
- <RegID>-1</RegID>
- <PaneID>-1</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>D60000004B000000E4040000DB000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>D60000005E000000E4040000EE000000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1005</RegID>
- <PaneID>1005</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000620000000A01000024030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>109</RegID>
- <PaneID>109</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000620000000A01000024030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>72000000850000006C010000C7020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1465</RegID>
- <PaneID>1465</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1466</RegID>
- <PaneID>1466</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1467</RegID>
- <PaneID>1467</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1468</RegID>
- <PaneID>1468</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1506</RegID>
- <PaneID>1506</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>16384</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1913</RegID>
- <PaneID>1913</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>D900000062000000E1040000C2000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1935</RegID>
- <PaneID>1935</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1936</RegID>
- <PaneID>1936</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1937</RegID>
- <PaneID>1937</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1939</RegID>
- <PaneID>1939</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1940</RegID>
- <PaneID>1940</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1941</RegID>
- <PaneID>1941</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1942</RegID>
- <PaneID>1942</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>195</RegID>
- <PaneID>195</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000620000000A01000024030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>72000000850000006C010000C7020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>196</RegID>
- <PaneID>196</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000620000000A01000024030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>72000000850000006C010000C7020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>197</RegID>
- <PaneID>197</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000580300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>198</RegID>
- <PaneID>198</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>000000001B020000E4040000BF020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>199</RegID>
- <PaneID>199</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000580300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>203</RegID>
- <PaneID>203</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>8192</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>D900000062000000E1040000C2000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>204</RegID>
- <PaneID>204</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>D900000062000000E1040000C2000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>221</RegID>
- <PaneID>221</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>00000000000000000000000000000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>0A0000000A0000006E0000006E000000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>2506</RegID>
- <PaneID>2506</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>2507</RegID>
- <PaneID>2507</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>343</RegID>
- <PaneID>343</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>D900000062000000E1040000C2000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>346</RegID>
- <PaneID>346</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>D900000062000000E1040000C2000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35824</RegID>
- <PaneID>35824</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>D900000062000000E1040000C2000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35885</RegID>
- <PaneID>35885</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35886</RegID>
- <PaneID>35886</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35887</RegID>
- <PaneID>35887</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35888</RegID>
- <PaneID>35888</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35889</RegID>
- <PaneID>35889</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35890</RegID>
- <PaneID>35890</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35891</RegID>
- <PaneID>35891</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35892</RegID>
- <PaneID>35892</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35893</RegID>
- <PaneID>35893</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35894</RegID>
- <PaneID>35894</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35895</RegID>
- <PaneID>35895</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35896</RegID>
- <PaneID>35896</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35897</RegID>
- <PaneID>35897</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35898</RegID>
- <PaneID>35898</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35899</RegID>
- <PaneID>35899</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35900</RegID>
- <PaneID>35900</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35901</RegID>
- <PaneID>35901</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35902</RegID>
- <PaneID>35902</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35903</RegID>
- <PaneID>35903</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35904</RegID>
- <PaneID>35904</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35905</RegID>
- <PaneID>35905</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>1504000062000000E104000012020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>38003</RegID>
- <PaneID>38003</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000620000000A01000024030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>72000000850000006C010000C7020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>38007</RegID>
- <PaneID>38007</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000580300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000E402000015010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>436</RegID>
- <PaneID>436</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000580300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>72000000850000006C010000C7020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>437</RegID>
- <PaneID>437</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>440</RegID>
- <PaneID>440</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0300000032020000E1040000A6020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>7200000085000000440100004D010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>59392</RegID>
- <PaneID>59392</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>882</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>8192</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>00000000000000007D0300001A000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>0A0000000A0000006E0000006E000000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>59393</RegID>
- <PaneID>0</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>000000006E0400008007000081040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>0A0000000A0000006E0000006E000000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>59399</RegID>
- <PaneID>59399</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>439</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>8192</RecentFrameAlignment>
- <RecentRowIndex>1</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>000000001A000000C201000034000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>0A0000000A0000006E0000006E000000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>59400</RegID>
- <PaneID>59400</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>572</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>8192</RecentFrameAlignment>
- <RecentRowIndex>2</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0000000034000000470200004E000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>0A0000000A0000006E0000006E000000</Data>
- </RectRecentFloat>
- </Window>
- <DockMan>
- <Len>2619</Len>
- <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD6000000DB000000E4040000DF000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000D60000005E000000E4040000EE000000D60000004B000000E4040000DB0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0E0400004B000000120400002B020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000000000000120400005E000000E40400003E020000120400004B000000E40400002B0200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF0D0100004B000000110100003D03000001000000020000100400000001000000D2FEFFFF57050000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000005E0000000D01000050030000000000004B0000000D0100003D0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000017020000E40400001B02000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000002E020000E4040000D2020000000000001B020000E4040000BF02000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF720200001B02000076020000BF02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000003D03000080070000410300000100000001000010040000000100000099FCFFFFB1000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000000000005403000080070000810400000000000041030000800700006E0400000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
- </DockMan>
- <ToolBar>
- <RegID>59392</RegID>
- <Name>File</Name>
- <Buttons>
- <Len>2234</Len>
- <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C636F6E66696741535345525496000000000000000B000C636F6E6669674153534552540008546F44656C65746511707276526169736550726976696C6567650870727652616973650B706F727452455345545F501476506F7274526573657450726976696C6567656413706F727452455345545F50524956494C4547451378506F7274526169736550726976696C656765237374617469632042617365547970655F7420707276526169736550726976696C65676510706F72744E5649435F5356435F5052490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000</Data>
- </Buttons>
- <OriginalItems>
- <Len>1423</Len>
- <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
- </OriginalItems>
- <OrigResetItems>
- <Len>1423</Len>
- <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>
- </OrigResetItems>
- </ToolBar>
- <ToolBar>
- <RegID>59399</RegID>
- <Name>Build</Name>
- <Buttons>
- <Len>694</Len>
- <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000001052544F5344656D6F5F4743435F4D5055960000000000000001001052544F5344656D6F5F4743435F4D5055000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64B7010000</Data>
- </Buttons>
- <OriginalItems>
- <Len>583</Len>
- <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
- </OriginalItems>
- <OrigResetItems>
- <Len>583</Len>
- <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>
- </OrigResetItems>
- </ToolBar>
- <ToolBar>
- <RegID>59400</RegID>
- <Name>Debug</Name>
- <Buttons>
- <Len>2247</Len>
- <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B000000000000310000000857617463682026320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F777300000000000000000000000001000000010000000000000000000000010000000400138093070000000000003300000008554152542023263100000000000000000000000001000000010000000000000000000000010000000000138094070000000000003300000008554152542023263200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000008554152542023263300000000000000000000000001000000010000000000000000000000010000000000138096070000000000003300000015446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F7201000000000000000100000000000000010000000000000000000000010000000000000000000544656275673C020000</Data>
- </Buttons>
- <OriginalItems>
- <Len>898</Len>
- <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
- </OriginalItems>
- <OrigResetItems>
- <Len>898</Len>
- <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>
- </OrigResetItems>
- </ToolBar>
- <ControlBarsSummary>
- <Bars>0</Bars>
- <ScreenCX>1920</ScreenCX>
- <ScreenCY>1200</ScreenCY>
- </ControlBarsSummary>
- </ViewEx>
- <ViewEx>
- <ViewType>1</ViewType>
- <ViewName>Debug</ViewName>
- <Window>
- <RegID>-1</RegID>
- <PaneID>-1</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>6C0100004B00000090060000F5000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>6C0100005E0000009006000008010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1005</RegID>
- <PaneID>1005</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000620000006501000073030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>109</RegID>
- <PaneID>109</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000620000006501000073030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>220100003501000040020000D1030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1465</RegID>
- <PaneID>1465</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1466</RegID>
- <PaneID>1466</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1467</RegID>
- <PaneID>1467</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1468</RegID>
- <PaneID>1468</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1506</RegID>
- <PaneID>1506</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>16384</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1913</RegID>
- <PaneID>1913</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>6F010000620000008D060000DC000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000EE030000DB010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1935</RegID>
- <PaneID>1935</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1936</RegID>
- <PaneID>1936</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1937</RegID>
- <PaneID>1937</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1939</RegID>
- <PaneID>1939</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1940</RegID>
- <PaneID>1940</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1941</RegID>
- <PaneID>1941</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>1942</RegID>
- <PaneID>1942</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>195</RegID>
- <PaneID>195</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000620000006501000073030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>220100003501000040020000D1030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>196</RegID>
- <PaneID>196</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000620000006501000073030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>220100003501000040020000D1030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>197</RegID>
- <PaneID>197</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000A00200009505000016030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000EE030000DB010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>198</RegID>
- <PaneID>198</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>0000000090030000C00300006E040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000EE030000DB010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>199</RegID>
- <PaneID>199</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000A00200009505000016030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000EE030000DB010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>203</RegID>
- <PaneID>203</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>8192</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>6F010000620000008D060000DC000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000EE030000DB010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>204</RegID>
- <PaneID>204</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>6F010000620000008D060000DC000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000EE030000DB010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>221</RegID>
- <PaneID>221</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>00000000000000000000000000000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>0A0000000A0000006E0000006E000000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>2506</RegID>
- <PaneID>2506</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>2507</RegID>
- <PaneID>2507</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>343</RegID>
- <PaneID>343</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>6F010000620000008D060000DC000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000EE030000DB010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>346</RegID>
- <PaneID>346</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>6F010000620000008D060000DC000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000EE030000DB010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35824</RegID>
- <PaneID>35824</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>6F010000620000008D060000DC000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000EE030000DB010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35885</RegID>
- <PaneID>35885</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35886</RegID>
- <PaneID>35886</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35887</RegID>
- <PaneID>35887</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35888</RegID>
- <PaneID>35888</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35889</RegID>
- <PaneID>35889</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35890</RegID>
- <PaneID>35890</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35891</RegID>
- <PaneID>35891</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35892</RegID>
- <PaneID>35892</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35893</RegID>
- <PaneID>35893</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35894</RegID>
- <PaneID>35894</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35895</RegID>
- <PaneID>35895</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35896</RegID>
- <PaneID>35896</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35897</RegID>
- <PaneID>35897</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35898</RegID>
- <PaneID>35898</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35899</RegID>
- <PaneID>35899</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35900</RegID>
- <PaneID>35900</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35901</RegID>
- <PaneID>35901</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35902</RegID>
- <PaneID>35902</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35903</RegID>
- <PaneID>35903</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35904</RegID>
- <PaneID>35904</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>35905</RegID>
- <PaneID>35905</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>AB04000062000000950500006C020000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000120200001B020000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>38003</RegID>
- <PaneID>38003</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000620000006501000073030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>220100003501000040020000D1030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>38007</RegID>
- <PaneID>38007</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000A00200009505000016030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>2201000035010000EE030000DB010000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>436</RegID>
- <PaneID>436</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>03000000A00200009505000016030000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>220100003501000040020000D1030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>437</RegID>
- <PaneID>437</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>440</RegID>
- <PaneID>440</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>32768</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>C7030000A70300007D07000055040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>F601000069020000B2050000B0030000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>59392</RegID>
- <PaneID>59392</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>882</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>8192</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>00000000000000007D0300001A000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>0A0000000A0000006E0000006E000000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>59393</RegID>
- <PaneID>0</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>32767</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>4096</RecentFrameAlignment>
- <RecentRowIndex>0</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>000000006E0400008007000081040000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>0A0000000A0000006E0000006E000000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>59399</RegID>
- <PaneID>59399</PaneID>
- <IsVisible>0</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>439</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>8192</RecentFrameAlignment>
- <RecentRowIndex>1</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>000000001A000000C201000034000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>0A0000000A0000006E0000006E000000</Data>
- </RectRecentFloat>
- </Window>
- <Window>
- <RegID>59400</RegID>
- <PaneID>59400</PaneID>
- <IsVisible>1</IsVisible>
- <IsFloating>0</IsFloating>
- <IsTabbed>0</IsTabbed>
- <IsActivated>0</IsActivated>
- <MRUWidth>572</MRUWidth>
- <PinState>0</PinState>
- <RecentFrameAlignment>8192</RecentFrameAlignment>
- <RecentRowIndex>2</RecentRowIndex>
- <RectRecentDocked>
- <Len>16</Len>
- <Data>040000001A0000004B02000034000000</Data>
- </RectRecentDocked>
- <RectRecentFloat>
- <Len>16</Len>
- <Data>0A0000000A0000006E0000006E000000</Data>
- </RectRecentFloat>
- </Window>
- <DockMan>
- <Len>2694</Len>
- <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF6C010000F500000090060000F900000000000000010000000400000001000000C2FEFFFFB4000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E6500200000000000006C0100005E00000090060000080100006C0100004B00000090060000F50000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFA40400004B000000A804000085020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000000000000A80400005E0000009805000098020000A80400004B00000098050000850200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF680100004B0000006C0100008C0300000100000002000010040000000100000012FFFFFF87060000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000005E000000680100009F030000000000004B000000680100008C0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF000000008C03000080070000900300000100000001000010040000000100000008FEFFFF2701000000000000000000000000000001000000000000000000000001000000000000000000000001000000FFFFFFFFC003000094020000C40300006E04000000000000020000000400000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000001000000C4030000A30300008007000081040000C403000090030000800700006E04000000000000404100560E0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF050000000000000002000000000000000100000002000000FFFFFFFFC003000090030000C40300006E0400000100000002000010040000000000000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000850200009805000089020000000000000100000004000000010000000000000000000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000000000000000000009C02000098050000420300000000000089020000980500002F0300000000000040820046040000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
- </DockMan>
- <ToolBar>
- <RegID>59392</RegID>
- <Name>File</Name>
- <Buttons>
- <Len>2234</Len>
- <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C636F6E66696741535345525496000000000000000B000C636F6E6669674153534552540008546F44656C65746511707276526169736550726976696C6567650870727652616973650B706F727452455345545F501476506F7274526573657450726976696C6567656413706F727452455345545F50524956494C4547451378506F7274526169736550726976696C656765237374617469632042617365547970655F7420707276526169736550726976696C65676510706F72744E5649435F5356435F5052490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020001001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000</Data>
- </Buttons>
- <OriginalItems>
- <Len>1423</Len>
- <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
- </OriginalItems>
- <OrigResetItems>
- <Len>1423</Len>
- <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>
- </OrigResetItems>
- </ToolBar>
- <ToolBar>
- <RegID>59399</RegID>
- <Name>Build</Name>
- <Buttons>
- <Len>657</Len>
- <Data>00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64B7010000</Data>
- </Buttons>
- <OriginalItems>
- <Len>583</Len>
- <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
- </OriginalItems>
- <OrigResetItems>
- <Len>583</Len>
- <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>
- </OrigResetItems>
- </ToolBar>
- <ToolBar>
- <RegID>59400</RegID>
- <Name>Debug</Name>
- <Buttons>
- <Len>2236</Len>
- <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020000002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B000000000000310000000857617463682026320000000000000000000000000100000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F727920263400000000000000000000000001000000010000000000000000000000010000000000138010010000020000003300000008554152542023263100000000000000000000000001000000010000000000000000000000010000000400138093070000000000003300000008554152542023263100000000000000000000000001000000010000000000000000000000010000000000138094070000000000003300000008554152542023263200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000008554152542023263300000000000000000000000001000000010000000000000000000000010000000000138096070000000000003300000015446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F7201000000000000000100000000000000010000000000000000000000010000000000000000000544656275673C020000</Data>
- </Buttons>
- <OriginalItems>
- <Len>898</Len>
- <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
- </OriginalItems>
- <OrigResetItems>
- <Len>898</Len>
- <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>
- </OrigResetItems>
- </ToolBar>
- <ControlBarsSummary>
- <Bars>0</Bars>
- <ScreenCX>1920</ScreenCX>
- <ScreenCY>1200</ScreenCY>
- </ControlBarsSummary>
- </ViewEx>
- </WinLayoutEx>
-
- <MDIGroups>
- <Orientation>1</Orientation>
- <ActiveMDIGroup>0</ActiveMDIGroup>
- <MDIGroup>
- <Size>100</Size>
- <ActiveTab>2</ActiveTab>
- <Doc>
- <Name>..\..\..\Source\portable\Common\mpu_wrappers.c</Name>
- <ColumnNumber>2</ColumnNumber>
- <TopLine>1071</TopLine>
- <CurrentLine>1136</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>..\FreeRTOSConfig.h</Name>
- <ColumnNumber>68</ColumnNumber>
- <TopLine>147</TopLine>
- <CurrentLine>194</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>..\main.c</Name>
- <ColumnNumber>0</ColumnNumber>
- <TopLine>510</TopLine>
- <CurrentLine>382</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>..\..\..\Source\portable\GCC\ARM_CM3_MPU\port.c</Name>
- <ColumnNumber>23</ColumnNumber>
- <TopLine>382</TopLine>
- <CurrentLine>424</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>.\startup_ARMCM4.S</Name>
- <ColumnNumber>0</ColumnNumber>
- <TopLine>125</TopLine>
- <CurrentLine>139</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\ARM_CM3_MPU\portmacro.h</Name>
- <ColumnNumber>49</ColumnNumber>
- <TopLine>241</TopLine>
- <CurrentLine>253</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- </MDIGroup>
- </MDIGroups>
-
-</ProjectGui>
RAM (rw) : ORIGIN = 0x20000000, LENGTH = 0x8000\r
}\r
\r
-/* Variables required by FreeRTOS MPU. */\r
-_Privileged_Functions_Region_Size = 16K;\r
-_Privileged_Data_Region_Size = 256;\r
-\r
-__FLASH_segment_start__ = ORIGIN( ROM );\r
-__FLASH_segment_end__ = __FLASH_segment_start__ + LENGTH( ROM );\r
-\r
-__privileged_functions_start__ = ORIGIN( ROM );\r
-__privileged_functions_end__ = __privileged_functions_start__ + _Privileged_Functions_Region_Size;\r
-\r
-__SRAM_segment_start__ = ORIGIN( RAM );\r
-__SRAM_segment_end__ = __SRAM_segment_start__ + LENGTH( RAM );\r
-\r
-__privileged_data_start__ = ORIGIN( RAM );\r
-__privileged_data_end__ = ORIGIN( RAM ) + _Privileged_Data_Region_Size;\r
-\r
/* Variables used by FreeRTOS-MPU. */\r
_Privileged_Functions_Region_Size = 16K;\r
_Privileged_Data_Region_Size = 256;\r
#define LWIP_SO_RCVTIMEO 1
#define LWIP_SO_RCVBUF 1
-#define LWIP_DEBUG
+#define NOT_LWIP_DEBUG
#ifdef LWIP_DEBUG
#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL // LWIP_DBG_LEVEL_SERIOUS
byte alignment -> define MEM_ALIGNMENT to 2. */
/* MSVC port: intel processors don't need 4-byte alignment,
but are faster that way! */
-#define MEM_ALIGNMENT 4
+#define MEM_ALIGNMENT 64 /* For Eth lite. */
/* MEM_SIZE: the size of the heap memory. If the application will send
a lot of data that needs to be copied, this should be set high. */
/* MEMP_NUM_TCPIP_MSG_*: the number of struct tcpip_msg, which is used
for sequential API communication and incoming packets. Used in
src/api/tcpip.c. */
-#define MEMP_NUM_TCPIP_MSG_API 8
-#define MEMP_NUM_TCPIP_MSG_INPKT 8
+#define MEMP_NUM_TCPIP_MSG_API 16
+#define MEMP_NUM_TCPIP_MSG_INPKT 16
#define MEMP_NUM_ARP_QUEUE 10
#define PBUF_POOL_SIZE 40
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
-#define PBUF_POOL_BUFSIZE 512
+#define PBUF_POOL_BUFSIZE 1518 /* Max eth frame size so no chaining. */
/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a
link level header. */
#endif\r
/*-----------------------------------------------------------*/\r
\r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
+#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) )\r
void MPU_vTaskList( char *pcWriteBuffer )\r
{\r
BaseType_t xRunningPrivileged = xPortRaisePrivilege();\r
uxCriticalNesting = 0;\r
\r
/* Start the first task. */\r
- __asm volatile( " svc %0 \n"\r
+ __asm volatile(\r
+ " ldr r0, =0xE000ED08 \n" /* Use the NVIC offset register to locate the stack. */\r
+ " ldr r0, [r0] \n"\r
+ " ldr r0, [r0] \n"\r
+ " msr msp, r0 \n" /* Set the msp back to the start of the stack. */\r
+ " cpsie i \n" /* Globally enable interrupts. */\r
+ " cpsie f \n"\r
+ " dsb \n"\r
+ " isb \n"\r
+ " svc %0 \n" /* System call to start first task. */\r
+ " nop \n"\r
:: "i" (portSVC_START_SCHEDULER) );\r
\r
/* Should not get here! */\r
--- /dev/null
+/*\r
+ FreeRTOS V9.0.0rc2 - Copyright (C) 2016 Real Time Engineers Ltd.\r
+ All rights reserved\r
+\r
+ VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
+\r
+ This file is part of the FreeRTOS distribution.\r
+\r
+ FreeRTOS is free software; you can redistribute it and/or modify it under\r
+ the terms of the GNU General Public License (version 2) as published by the\r
+ Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.\r
+\r
+ ***************************************************************************\r
+ >>! NOTE: The modification to the GPL is included to allow you to !<<\r
+ >>! distribute a combined work that includes FreeRTOS without being !<<\r
+ >>! obliged to provide the source code for proprietary components !<<\r
+ >>! outside of the FreeRTOS kernel. !<<\r
+ ***************************************************************************\r
+\r
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
+ FOR A PARTICULAR PURPOSE. Full license text is available on the following\r
+ link: http://www.freertos.org/a00114.html\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * FreeRTOS provides completely free yet professionally developed, *\r
+ * robust, strictly quality controlled, supported, and cross *\r
+ * platform software that is more than just the market leader, it *\r
+ * is the industry's de facto standard. *\r
+ * *\r
+ * Help yourself get started quickly while simultaneously helping *\r
+ * to support the FreeRTOS project by purchasing a FreeRTOS *\r
+ * tutorial book, reference manual, or both: *\r
+ * http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading\r
+ the FAQ page "My application does not run, what could be wrong?". Have you\r
+ defined configASSERT()?\r
+\r
+ http://www.FreeRTOS.org/support - In return for receiving this top quality\r
+ embedded software for free we request you assist our global community by\r
+ participating in the support forum.\r
+\r
+ http://www.FreeRTOS.org/training - Investing in training allows your team to\r
+ be as productive as possible as early as possible. Now you can receive\r
+ FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers\r
+ Ltd, and the world's leading authority on the world's leading RTOS.\r
+\r
+ http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
+ including FreeRTOS+Trace - an indispensable productivity tool, a DOS\r
+ compatible FAT file system, and our tiny thread aware UDP/IP stack.\r
+\r
+ http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.\r
+ Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.\r
+\r
+ http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High\r
+ Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS\r
+ licenses offer ticketed support, indemnification and commercial middleware.\r
+\r
+ http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
+ engineered and independently SIL3 certified version for use in safety and\r
+ mission critical applications that require provable dependability.\r
+\r
+ 1 tab == 4 spaces!\r
+*/\r
+\r
+/*-----------------------------------------------------------\r
+ * Implementation of functions defined in portable.h for the ARM CM3 port.\r
+ *----------------------------------------------------------*/\r
+\r
+/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining\r
+all the API functions to use the MPU wrappers. That should only be done when\r
+task.h is included from an application file. */\r
+#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+#include "queue.h"\r
+#include "event_groups.h"\r
+#include "mpu_prototypes.h"\r
+\r
+#ifndef __VFP_FP__\r
+ #error This port can only be used when the project options are configured to enable hardware floating point support.\r
+#endif\r
+\r
+#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE\r
+\r
+/* Constants required to access and manipulate the NVIC. */\r
+#define portNVIC_SYSTICK_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000e010 ) )\r
+#define portNVIC_SYSTICK_LOAD_REG ( * ( ( volatile uint32_t * ) 0xe000e014 ) )\r
+#define portNVIC_SYSPRI2_REG ( * ( ( volatile uint32_t * ) 0xe000ed20 ) )\r
+#define portNVIC_SYSPRI1_REG ( * ( ( volatile uint32_t * ) 0xe000ed1c ) )\r
+#define portNVIC_SYS_CTRL_STATE_REG ( * ( ( volatile uint32_t * ) 0xe000ed24 ) )\r
+#define portNVIC_MEM_FAULT_ENABLE ( 1UL << 16UL )\r
+\r
+/* Constants required to access and manipulate the MPU. */\r
+#define portMPU_TYPE_REG ( * ( ( volatile uint32_t * ) 0xe000ed90 ) )\r
+#define portMPU_REGION_BASE_ADDRESS_REG ( * ( ( volatile uint32_t * ) 0xe000ed9C ) )\r
+#define portMPU_REGION_ATTRIBUTE_REG ( * ( ( volatile uint32_t * ) 0xe000edA0 ) )\r
+#define portMPU_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000ed94 ) )\r
+#define portEXPECTED_MPU_TYPE_VALUE ( 8UL << 8UL ) /* 8 regions, unified. */\r
+#define portMPU_ENABLE ( 0x01UL )\r
+#define portMPU_BACKGROUND_ENABLE ( 1UL << 2UL )\r
+#define portPRIVILEGED_EXECUTION_START_ADDRESS ( 0UL )\r
+#define portMPU_REGION_VALID ( 0x10UL )\r
+#define portMPU_REGION_ENABLE ( 0x01UL )\r
+#define portPERIPHERALS_START_ADDRESS 0x40000000UL\r
+#define portPERIPHERALS_END_ADDRESS 0x5FFFFFFFUL\r
+\r
+/* Constants required to access and manipulate the SysTick. */\r
+#define portNVIC_SYSTICK_CLK ( 0x00000004UL )\r
+#define portNVIC_SYSTICK_INT ( 0x00000002UL )\r
+#define portNVIC_SYSTICK_ENABLE ( 0x00000001UL )\r
+#define portNVIC_PENDSV_PRI ( ( ( uint32_t ) configKERNEL_INTERRUPT_PRIORITY ) << 16UL )\r
+#define portNVIC_SYSTICK_PRI ( ( ( uint32_t ) configKERNEL_INTERRUPT_PRIORITY ) << 24UL )\r
+#define portNVIC_SVC_PRI ( ( ( uint32_t ) configMAX_SYSCALL_INTERRUPT_PRIORITY - 1UL ) << 24UL )\r
+\r
+/* Constants required to manipulate the VFP. */\r
+#define portFPCCR ( ( volatile uint32_t * ) 0xe000ef34UL ) /* Floating point context control register. */\r
+#define portASPEN_AND_LSPEN_BITS ( 0x3UL << 30UL )\r
+\r
+/* Constants required to set up the initial stack. */\r
+#define portINITIAL_XPSR ( 0x01000000UL )\r
+#define portINITIAL_EXEC_RETURN ( 0xfffffffdUL )\r
+#define portINITIAL_CONTROL_IF_UNPRIVILEGED ( 0x03 )\r
+#define portINITIAL_CONTROL_IF_PRIVILEGED ( 0x02 )\r
+\r
+/* Constants required to check the validity of an interrupt priority. */\r
+#define portFIRST_USER_INTERRUPT_NUMBER ( 16 )\r
+#define portNVIC_IP_REGISTERS_OFFSET_16 ( 0xE000E3F0 )\r
+#define portAIRCR_REG ( * ( ( volatile uint32_t * ) 0xE000ED0C ) )\r
+#define portMAX_8_BIT_VALUE ( ( uint8_t ) 0xff )\r
+#define portTOP_BIT_OF_BYTE ( ( uint8_t ) 0x80 )\r
+#define portMAX_PRIGROUP_BITS ( ( uint8_t ) 7 )\r
+#define portPRIORITY_GROUP_MASK ( 0x07UL << 8UL )\r
+#define portPRIGROUP_SHIFT ( 8UL )\r
+\r
+/* Offsets in the stack to the parameters when inside the SVC handler. */\r
+#define portOFFSET_TO_PC ( 6 )\r
+\r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK ( ( StackType_t ) 0xfffffffeUL )\r
+\r
+/* Each task maintains its own interrupt status in the critical nesting\r
+variable. Note this is not saved as part of the task context as context\r
+switches can only occur when uxCriticalNesting is zero. */\r
+static UBaseType_t uxCriticalNesting = 0xaaaaaaaa;\r
+\r
+/*\r
+ * Setup the timer to generate the tick interrupts.\r
+ */\r
+static void prvSetupTimerInterrupt( void ) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * Configure a number of standard MPU regions that are used by all tasks.\r
+ */\r
+static void prvSetupMPU( void ) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * Return the smallest MPU region size that a given number of bytes will fit\r
+ * into. The region size is returned as the value that should be programmed\r
+ * into the region attribute register for that region.\r
+ */\r
+static uint32_t prvGetMPURegionSizeSetting( uint32_t ulActualSizeInBytes ) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * Checks to see if being called from the context of an unprivileged task, and\r
+ * if so raises the privilege level and returns false - otherwise does nothing\r
+ * other than return true.\r
+ */\r
+BaseType_t xPortRaisePrivilege( void ) __attribute__(( naked ));\r
+\r
+/*\r
+ * Standard FreeRTOS exception handlers.\r
+ */\r
+void xPortPendSVHandler( void ) __attribute__ (( naked )) PRIVILEGED_FUNCTION;\r
+void xPortSysTickHandler( void ) __attribute__ ((optimize("3"))) PRIVILEGED_FUNCTION;\r
+void vPortSVCHandler( void ) __attribute__ (( naked )) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * Starts the scheduler by restoring the context of the first task to run.\r
+ */\r
+static void prvRestoreContextOfFirstTask( void ) __attribute__(( naked )) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * C portion of the SVC handler. The SVC handler is split between an asm entry\r
+ * and a C wrapper for simplicity of coding and maintenance.\r
+ */\r
+static void prvSVCHandler( uint32_t *pulRegisters ) __attribute__(( noinline )) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * Function to enable the VFP.\r
+ */\r
+ static void vPortEnableVFP( void ) __attribute__ (( naked ));\r
+ \r
+/*\r
+ * Used by the portASSERT_IF_INTERRUPT_PRIORITY_INVALID() macro to ensure\r
+ * FreeRTOS API functions are not called from interrupts that have been assigned\r
+ * a priority above configMAX_SYSCALL_INTERRUPT_PRIORITY.\r
+ */\r
+#if ( configASSERT_DEFINED == 1 )\r
+ static uint8_t ucMaxSysCallPriority = 0;\r
+ static uint32_t ulMaxPRIGROUPValue = 0;\r
+ static const volatile uint8_t * const pcInterruptPriorityRegisters = ( const volatile uint8_t * const ) portNVIC_IP_REGISTERS_OFFSET_16;\r
+#endif /* configASSERT_DEFINED */\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * See header file for description.\r
+ */\r
+StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters, BaseType_t xRunPrivileged )\r
+{\r
+ /* Simulate the stack frame as it would be created by a context switch\r
+ interrupt. */\r
+ pxTopOfStack--; /* Offset added to account for the way the MCU uses the stack on entry/exit of interrupts. */\r
+ *pxTopOfStack = portINITIAL_XPSR; /* xPSR */\r
+ pxTopOfStack--;\r
+ *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK; /* PC */\r
+ pxTopOfStack--;\r
+ *pxTopOfStack = 0; /* LR */\r
+ pxTopOfStack -= 5; /* R12, R3, R2 and R1. */\r
+ *pxTopOfStack = ( StackType_t ) pvParameters; /* R0 */\r
+ \r
+ /* A save method is being used that requires each task to maintain its\r
+ own exec return value. */\r
+ pxTopOfStack--;\r
+ *pxTopOfStack = portINITIAL_EXEC_RETURN;\r
+ \r
+ pxTopOfStack -= 9; /* R11, R10, R9, R8, R7, R6, R5 and R4. */\r
+\r
+ if( xRunPrivileged == pdTRUE )\r
+ {\r
+ *pxTopOfStack = portINITIAL_CONTROL_IF_PRIVILEGED;\r
+ }\r
+ else\r
+ {\r
+ *pxTopOfStack = portINITIAL_CONTROL_IF_UNPRIVILEGED;\r
+ }\r
+\r
+ return pxTopOfStack;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vPortSVCHandler( void )\r
+{\r
+ /* Assumes psp was in use. */\r
+ __asm volatile\r
+ (\r
+ #ifndef USE_PROCESS_STACK /* Code should not be required if a main() is using the process stack. */\r
+ " tst lr, #4 \n"\r
+ " ite eq \n"\r
+ " mrseq r0, msp \n"\r
+ " mrsne r0, psp \n"\r
+ #else\r
+ " mrs r0, psp \n"\r
+ #endif\r
+ " b %0 \n"\r
+ ::"i"(prvSVCHandler):"r0"\r
+ );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvSVCHandler( uint32_t *pulParam )\r
+{\r
+uint8_t ucSVCNumber;\r
+\r
+ /* The stack contains: r0, r1, r2, r3, r12, r14, the return address and\r
+ xPSR. The first argument (r0) is pulParam[ 0 ]. */\r
+ ucSVCNumber = ( ( uint8_t * ) pulParam[ portOFFSET_TO_PC ] )[ -2 ];\r
+ switch( ucSVCNumber )\r
+ {\r
+ case portSVC_START_SCHEDULER : portNVIC_SYSPRI1_REG |= portNVIC_SVC_PRI;\r
+ prvRestoreContextOfFirstTask();\r
+ break;\r
+\r
+ case portSVC_YIELD : portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;\r
+ /* Barriers are normally not required\r
+ but do ensure the code is completely\r
+ within the specified behaviour for the\r
+ architecture. */\r
+ __asm volatile( "dsb" );\r
+ __asm volatile( "isb" );\r
+\r
+ break;\r
+\r
+ case portSVC_RAISE_PRIVILEGE : __asm volatile\r
+ (\r
+ " mrs r1, control \n" /* Obtain current control value. */\r
+ " bic r1, #1 \n" /* Set privilege bit. */\r
+ " msr control, r1 \n" /* Write back new control value. */\r
+ :::"r1"\r
+ );\r
+ break;\r
+\r
+ default : /* Unknown SVC call. */\r
+ break;\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvRestoreContextOfFirstTask( void )\r
+{\r
+ __asm volatile\r
+ (\r
+ " ldr r0, =0xE000ED08 \n" /* Use the NVIC offset register to locate the stack. */\r
+ " ldr r0, [r0] \n"\r
+ " ldr r0, [r0] \n"\r
+ " msr msp, r0 \n" /* Set the msp back to the start of the stack. */\r
+ " ldr r3, pxCurrentTCBConst2 \n" /* Restore the context. */\r
+ " ldr r1, [r3] \n"\r
+ " ldr r0, [r1] \n" /* The first item in the TCB is the task top of stack. */\r
+ " add r1, r1, #4 \n" /* Move onto the second item in the TCB... */\r
+ " ldr r2, =0xe000ed9c \n" /* Region Base Address register. */\r
+ " ldmia r1!, {r4-r11} \n" /* Read 4 sets of MPU registers. */\r
+ " stmia r2!, {r4-r11} \n" /* Write 4 sets of MPU registers. */\r
+ " ldmia r0!, {r3-r11, r14} \n" /* Pop the registers that are not automatically saved on exception entry. */\r
+ " msr control, r3 \n"\r
+ " msr psp, r0 \n" /* Restore the task stack pointer. */\r
+ " mov r0, #0 \n"\r
+ " msr basepri, r0 \n"\r
+ " bx r14 \n"\r
+ " \n"\r
+ " .align 4 \n"\r
+ "pxCurrentTCBConst2: .word pxCurrentTCB \n"\r
+ );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * See header file for description.\r
+ */\r
+BaseType_t xPortStartScheduler( void )\r
+{\r
+ /* configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0. See\r
+ http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html */\r
+ configASSERT( ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) );\r
+\r
+ #if( configASSERT_DEFINED == 1 )\r
+ {\r
+ volatile uint32_t ulOriginalPriority;\r
+ volatile uint8_t * const pucFirstUserPriorityRegister = ( volatile uint8_t * const ) ( portNVIC_IP_REGISTERS_OFFSET_16 + portFIRST_USER_INTERRUPT_NUMBER );\r
+ volatile uint8_t ucMaxPriorityValue;\r
+\r
+ /* Determine the maximum priority from which ISR safe FreeRTOS API\r
+ functions can be called. ISR safe functions are those that end in\r
+ "FromISR". FreeRTOS maintains separate thread and ISR API functions to\r
+ ensure interrupt entry is as fast and simple as possible.\r
+\r
+ Save the interrupt priority value that is about to be clobbered. */\r
+ ulOriginalPriority = *pucFirstUserPriorityRegister;\r
+\r
+ /* Determine the number of priority bits available. First write to all\r
+ possible bits. */\r
+ *pucFirstUserPriorityRegister = portMAX_8_BIT_VALUE;\r
+\r
+ /* Read the value back to see how many bits stuck. */\r
+ ucMaxPriorityValue = *pucFirstUserPriorityRegister;\r
+\r
+ /* Use the same mask on the maximum system call priority. */\r
+ ucMaxSysCallPriority = configMAX_SYSCALL_INTERRUPT_PRIORITY & ucMaxPriorityValue;\r
+\r
+ /* Calculate the maximum acceptable priority group value for the number\r
+ of bits read back. */\r
+ ulMaxPRIGROUPValue = portMAX_PRIGROUP_BITS;\r
+ while( ( ucMaxPriorityValue & portTOP_BIT_OF_BYTE ) == portTOP_BIT_OF_BYTE )\r
+ {\r
+ ulMaxPRIGROUPValue--;\r
+ ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
+ }\r
+\r
+ /* Shift the priority group value back to its position within the AIRCR\r
+ register. */\r
+ ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
+ ulMaxPRIGROUPValue &= portPRIORITY_GROUP_MASK;\r
+\r
+ /* Restore the clobbered interrupt priority register to its original\r
+ value. */\r
+ *pucFirstUserPriorityRegister = ulOriginalPriority;\r
+ }\r
+ #endif /* conifgASSERT_DEFINED */\r
+\r
+ /* Make PendSV and SysTick the same priority as the kernel, and the SVC\r
+ handler higher priority so it can be used to exit a critical section (where\r
+ lower priorities are masked). */\r
+ portNVIC_SYSPRI2_REG |= portNVIC_PENDSV_PRI;\r
+ portNVIC_SYSPRI2_REG |= portNVIC_SYSTICK_PRI;\r
+\r
+ /* Configure the regions in the MPU that are common to all tasks. */\r
+ prvSetupMPU();\r
+\r
+ /* Start the timer that generates the tick ISR. Interrupts are disabled\r
+ here already. */\r
+ prvSetupTimerInterrupt();\r
+\r
+ /* Initialise the critical nesting count ready for the first task. */\r
+ uxCriticalNesting = 0;\r
+\r
+ /* Ensure the VFP is enabled - it should be anyway. */\r
+ vPortEnableVFP();\r
+\r
+ /* Lazy save always. */\r
+ *( portFPCCR ) |= portASPEN_AND_LSPEN_BITS;\r
+\r
+ /* Start the first task. */\r
+ __asm volatile(\r
+ " ldr r0, =0xE000ED08 \n" /* Use the NVIC offset register to locate the stack. */\r
+ " ldr r0, [r0] \n"\r
+ " ldr r0, [r0] \n"\r
+ " msr msp, r0 \n" /* Set the msp back to the start of the stack. */\r
+ " cpsie i \n" /* Globally enable interrupts. */\r
+ " cpsie f \n"\r
+ " dsb \n"\r
+ " isb \n"\r
+ " svc %0 \n" /* System call to start first task. */\r
+ " nop \n"\r
+ :: "i" (portSVC_START_SCHEDULER) );\r
+\r
+ /* Should not get here! */\r
+ return 0;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vPortEndScheduler( void )\r
+{\r
+ /* Not implemented in ports where there is nothing to return to.\r
+ Artificially force an assert. */\r
+ configASSERT( uxCriticalNesting == 1000UL );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vPortEnterCritical( void )\r
+{\r
+BaseType_t xRunningPrivileged = xPortRaisePrivilege();\r
+\r
+ portDISABLE_INTERRUPTS();\r
+ uxCriticalNesting++;\r
+\r
+ vPortResetPrivilege( xRunningPrivileged );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vPortExitCritical( void )\r
+{\r
+BaseType_t xRunningPrivileged = xPortRaisePrivilege();\r
+\r
+ configASSERT( uxCriticalNesting );\r
+ uxCriticalNesting--;\r
+ if( uxCriticalNesting == 0 )\r
+ {\r
+ portENABLE_INTERRUPTS();\r
+ }\r
+ vPortResetPrivilege( xRunningPrivileged );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void xPortPendSVHandler( void )\r
+{\r
+ /* This is a naked function. */\r
+\r
+ __asm volatile\r
+ (\r
+ " mrs r0, psp \n"\r
+ " \n"\r
+ " ldr r3, pxCurrentTCBConst \n" /* Get the location of the current TCB. */\r
+ " ldr r2, [r3] \n"\r
+ " \n"\r
+ " tst r14, #0x10 \n" /* Is the task using the FPU context? If so, push high vfp registers. */\r
+ " it eq \n"\r
+ " vstmdbeq r0!, {s16-s31} \n"\r
+ " \n"\r
+ " mrs r1, control \n"\r
+ " stmdb r0!, {r1, r4-r11, r14} \n" /* Save the remaining registers. */\r
+ " str r0, [r2] \n" /* Save the new top of stack into the first member of the TCB. */\r
+ " \n"\r
+ " stmdb sp!, {r3} \n"\r
+ " mov r0, %0 \n"\r
+ " msr basepri, r0 \n"\r
+ " dsb \n"\r
+ " isb \n"\r
+ " bl vTaskSwitchContext \n"\r
+ " mov r0, #0 \n"\r
+ " msr basepri, r0 \n"\r
+ " ldmia sp!, {r3} \n"\r
+ " \n" /* Restore the context. */\r
+ " ldr r1, [r3] \n"\r
+ " ldr r0, [r1] \n" /* The first item in the TCB is the task top of stack. */\r
+ " add r1, r1, #4 \n" /* Move onto the second item in the TCB... */\r
+ " ldr r2, =0xe000ed9c \n" /* Region Base Address register. */\r
+ " ldmia r1!, {r4-r11} \n" /* Read 4 sets of MPU registers. */\r
+ " stmia r2!, {r4-r11} \n" /* Write 4 sets of MPU registers. */\r
+ " ldmia r0!, {r3-r11, r14} \n" /* Pop the registers that are not automatically saved on exception entry. */\r
+ " msr control, r3 \n"\r
+ " \n"\r
+ " tst r14, #0x10 \n" /* Is the task using the FPU context? If so, pop the high vfp registers too. */\r
+ " it eq \n"\r
+ " vldmiaeq r0!, {s16-s31} \n"\r
+ " \n"\r
+ " msr psp, r0 \n"\r
+ " bx r14 \n"\r
+ " \n"\r
+ " .align 4 \n"\r
+ "pxCurrentTCBConst: .word pxCurrentTCB \n"\r
+ ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY)\r
+ );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void xPortSysTickHandler( void )\r
+{\r
+uint32_t ulDummy;\r
+\r
+ ulDummy = portSET_INTERRUPT_MASK_FROM_ISR();\r
+ {\r
+ /* Increment the RTOS tick. */\r
+ if( xTaskIncrementTick() != pdFALSE )\r
+ {\r
+ /* Pend a context switch. */\r
+ portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;\r
+ }\r
+ }\r
+ portCLEAR_INTERRUPT_MASK_FROM_ISR( ulDummy );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * Setup the systick timer to generate the tick interrupts at the required\r
+ * frequency.\r
+ */\r
+static void prvSetupTimerInterrupt( void )\r
+{\r
+ /* Configure SysTick to interrupt at the requested rate. */\r
+ portNVIC_SYSTICK_LOAD_REG = ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;\r
+ portNVIC_SYSTICK_CTRL_REG = portNVIC_SYSTICK_CLK | portNVIC_SYSTICK_INT | portNVIC_SYSTICK_ENABLE;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/* This is a naked function. */\r
+static void vPortEnableVFP( void )\r
+{\r
+ __asm volatile\r
+ (\r
+ " ldr.w r0, =0xE000ED88 \n" /* The FPU enable bits are in the CPACR. */\r
+ " ldr r1, [r0] \n"\r
+ " \n"\r
+ " orr r1, r1, #( 0xf << 20 ) \n" /* Enable CP10 and CP11 coprocessors, then save back. */\r
+ " str r1, [r0] \n"\r
+ " bx r14 "\r
+ );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvSetupMPU( void )\r
+{\r
+extern uint32_t __privileged_functions_end__[];\r
+extern uint32_t __FLASH_segment_start__[];\r
+extern uint32_t __FLASH_segment_end__[];\r
+extern uint32_t __privileged_data_start__[];\r
+extern uint32_t __privileged_data_end__[];\r
+\r
+ /* Check the expected MPU is present. */\r
+ if( portMPU_TYPE_REG == portEXPECTED_MPU_TYPE_VALUE )\r
+ {\r
+ /* First setup the entire flash for unprivileged read only access. */\r
+ portMPU_REGION_BASE_ADDRESS_REG = ( ( uint32_t ) __FLASH_segment_start__ ) | /* Base address. */\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portUNPRIVILEGED_FLASH_REGION );\r
+\r
+ portMPU_REGION_ATTRIBUTE_REG = ( portMPU_REGION_READ_ONLY ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ ( prvGetMPURegionSizeSetting( ( uint32_t ) __FLASH_segment_end__ - ( uint32_t ) __FLASH_segment_start__ ) ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* Setup the first 16K for privileged only access (even though less\r
+ than 10K is actually being used). This is where the kernel code is\r
+ placed. */\r
+ portMPU_REGION_BASE_ADDRESS_REG = ( ( uint32_t ) __FLASH_segment_start__ ) | /* Base address. */\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portPRIVILEGED_FLASH_REGION );\r
+\r
+ portMPU_REGION_ATTRIBUTE_REG = ( portMPU_REGION_PRIVILEGED_READ_ONLY ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ ( prvGetMPURegionSizeSetting( ( uint32_t ) __privileged_functions_end__ - ( uint32_t ) __FLASH_segment_start__ ) ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* Setup the privileged data RAM region. This is where the kernel data\r
+ is placed. */\r
+ portMPU_REGION_BASE_ADDRESS_REG = ( ( uint32_t ) __privileged_data_start__ ) | /* Base address. */\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portPRIVILEGED_RAM_REGION );\r
+\r
+ portMPU_REGION_ATTRIBUTE_REG = ( portMPU_REGION_PRIVILEGED_READ_WRITE ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ prvGetMPURegionSizeSetting( ( uint32_t ) __privileged_data_end__ - ( uint32_t ) __privileged_data_start__ ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* By default allow everything to access the general peripherals. The\r
+ system peripherals and registers are protected. */\r
+ portMPU_REGION_BASE_ADDRESS_REG = ( portPERIPHERALS_START_ADDRESS ) |\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portGENERAL_PERIPHERALS_REGION );\r
+\r
+ portMPU_REGION_ATTRIBUTE_REG = ( portMPU_REGION_READ_WRITE | portMPU_REGION_EXECUTE_NEVER ) |\r
+ ( prvGetMPURegionSizeSetting( portPERIPHERALS_END_ADDRESS - portPERIPHERALS_START_ADDRESS ) ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* Enable the memory fault exception. */\r
+ portNVIC_SYS_CTRL_STATE_REG |= portNVIC_MEM_FAULT_ENABLE;\r
+\r
+ /* Enable the MPU with the background region configured. */\r
+ portMPU_CTRL_REG |= ( portMPU_ENABLE | portMPU_BACKGROUND_ENABLE );\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static uint32_t prvGetMPURegionSizeSetting( uint32_t ulActualSizeInBytes )\r
+{\r
+uint32_t ulRegionSize, ulReturnValue = 4;\r
+\r
+ /* 32 is the smallest region size, 31 is the largest valid value for\r
+ ulReturnValue. */\r
+ for( ulRegionSize = 32UL; ulReturnValue < 31UL; ( ulRegionSize <<= 1UL ) )\r
+ {\r
+ if( ulActualSizeInBytes <= ulRegionSize )\r
+ {\r
+ break;\r
+ }\r
+ else\r
+ {\r
+ ulReturnValue++;\r
+ }\r
+ }\r
+\r
+ /* Shift the code by one before returning so it can be written directly\r
+ into the the correct bit position of the attribute register. */\r
+ return ( ulReturnValue << 1UL );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+BaseType_t xPortRaisePrivilege( void )\r
+{\r
+ __asm volatile\r
+ (\r
+ " mrs r0, control \n"\r
+ " tst r0, #1 \n" /* Is the task running privileged? */\r
+ " itte ne \n"\r
+ " movne r0, #0 \n" /* CONTROL[0]!=0, return false. */\r
+ " svcne %0 \n" /* Switch to privileged. */\r
+ " moveq r0, #1 \n" /* CONTROL[0]==0, return true. */\r
+ " bx lr \n"\r
+ :: "i" (portSVC_RAISE_PRIVILEGE) : "r0"\r
+ );\r
+\r
+ return 0;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vPortStoreTaskMPUSettings( xMPU_SETTINGS *xMPUSettings, const struct xMEMORY_REGION * const xRegions, StackType_t *pxBottomOfStack, uint32_t ulStackDepth )\r
+{\r
+extern uint32_t __SRAM_segment_start__[];\r
+extern uint32_t __SRAM_segment_end__[];\r
+extern uint32_t __privileged_data_start__[];\r
+extern uint32_t __privileged_data_end__[];\r
+int32_t lIndex;\r
+uint32_t ul;\r
+\r
+ if( xRegions == NULL )\r
+ {\r
+ /* No MPU regions are specified so allow access to all RAM. */\r
+ xMPUSettings->xRegion[ 0 ].ulRegionBaseAddress =\r
+ ( ( uint32_t ) __SRAM_segment_start__ ) | /* Base address. */\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portSTACK_REGION );\r
+\r
+ xMPUSettings->xRegion[ 0 ].ulRegionAttribute =\r
+ ( portMPU_REGION_READ_WRITE ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ ( prvGetMPURegionSizeSetting( ( uint32_t ) __SRAM_segment_end__ - ( uint32_t ) __SRAM_segment_start__ ) ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* Re-instate the privileged only RAM region as xRegion[ 0 ] will have\r
+ just removed the privileged only parameters. */\r
+ xMPUSettings->xRegion[ 1 ].ulRegionBaseAddress =\r
+ ( ( uint32_t ) __privileged_data_start__ ) | /* Base address. */\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portSTACK_REGION + 1 );\r
+\r
+ xMPUSettings->xRegion[ 1 ].ulRegionAttribute =\r
+ ( portMPU_REGION_PRIVILEGED_READ_WRITE ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ prvGetMPURegionSizeSetting( ( uint32_t ) __privileged_data_end__ - ( uint32_t ) __privileged_data_start__ ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* Invalidate all other regions. */\r
+ for( ul = 2; ul <= portNUM_CONFIGURABLE_REGIONS; ul++ )\r
+ {\r
+ xMPUSettings->xRegion[ ul ].ulRegionBaseAddress = ( portSTACK_REGION + ul ) | portMPU_REGION_VALID;\r
+ xMPUSettings->xRegion[ ul ].ulRegionAttribute = 0UL;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ /* This function is called automatically when the task is created - in\r
+ which case the stack region parameters will be valid. At all other\r
+ times the stack parameters will not be valid and it is assumed that the\r
+ stack region has already been configured. */\r
+ if( ulStackDepth > 0 )\r
+ {\r
+ /* Define the region that allows access to the stack. */\r
+ xMPUSettings->xRegion[ 0 ].ulRegionBaseAddress =\r
+ ( ( uint32_t ) pxBottomOfStack ) |\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portSTACK_REGION ); /* Region number. */\r
+\r
+ xMPUSettings->xRegion[ 0 ].ulRegionAttribute =\r
+ ( portMPU_REGION_READ_WRITE ) | /* Read and write. */\r
+ ( prvGetMPURegionSizeSetting( ulStackDepth * ( uint32_t ) sizeof( StackType_t ) ) ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ ( portMPU_REGION_ENABLE );\r
+ }\r
+\r
+ lIndex = 0;\r
+\r
+ for( ul = 1; ul <= portNUM_CONFIGURABLE_REGIONS; ul++ )\r
+ {\r
+ if( ( xRegions[ lIndex ] ).ulLengthInBytes > 0UL )\r
+ {\r
+ /* Translate the generic region definition contained in\r
+ xRegions into the CM3 specific MPU settings that are then\r
+ stored in xMPUSettings. */\r
+ xMPUSettings->xRegion[ ul ].ulRegionBaseAddress =\r
+ ( ( uint32_t ) xRegions[ lIndex ].pvBaseAddress ) |\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portSTACK_REGION + ul ); /* Region number. */\r
+\r
+ xMPUSettings->xRegion[ ul ].ulRegionAttribute =\r
+ ( prvGetMPURegionSizeSetting( xRegions[ lIndex ].ulLengthInBytes ) ) |\r
+ ( xRegions[ lIndex ].ulParameters ) |\r
+ ( portMPU_REGION_ENABLE );\r
+ }\r
+ else\r
+ {\r
+ /* Invalidate the region. */\r
+ xMPUSettings->xRegion[ ul ].ulRegionBaseAddress = ( portSTACK_REGION + ul ) | portMPU_REGION_VALID;\r
+ xMPUSettings->xRegion[ ul ].ulRegionAttribute = 0UL;\r
+ }\r
+\r
+ lIndex++;\r
+ }\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+#if( configASSERT_DEFINED == 1 )\r
+\r
+ void vPortValidateInterruptPriority( void )\r
+ {\r
+ uint32_t ulCurrentInterrupt;\r
+ uint8_t ucCurrentPriority;\r
+\r
+ /* Obtain the number of the currently executing interrupt. */\r
+ __asm volatile( "mrs %0, ipsr" : "=r"( ulCurrentInterrupt ) );\r
+\r
+ /* Is the interrupt number a user defined interrupt? */\r
+ if( ulCurrentInterrupt >= portFIRST_USER_INTERRUPT_NUMBER )\r
+ {\r
+ /* Look up the interrupt's priority. */\r
+ ucCurrentPriority = pcInterruptPriorityRegisters[ ulCurrentInterrupt ];\r
+\r
+ /* The following assertion will fail if a service routine (ISR) for\r
+ an interrupt that has been assigned a priority above\r
+ configMAX_SYSCALL_INTERRUPT_PRIORITY calls an ISR safe FreeRTOS API\r
+ function. ISR safe FreeRTOS API functions must *only* be called\r
+ from interrupts that have been assigned a priority at or below\r
+ configMAX_SYSCALL_INTERRUPT_PRIORITY.\r
+\r
+ Numerically low interrupt priority numbers represent logically high\r
+ interrupt priorities, therefore the priority of the interrupt must\r
+ be set to a value equal to or numerically *higher* than\r
+ configMAX_SYSCALL_INTERRUPT_PRIORITY.\r
+\r
+ Interrupts that use the FreeRTOS API must not be left at their\r
+ default priority of zero as that is the highest possible priority,\r
+ which is guaranteed to be above configMAX_SYSCALL_INTERRUPT_PRIORITY,\r
+ and therefore also guaranteed to be invalid.\r
+\r
+ FreeRTOS maintains separate thread and ISR API functions to ensure\r
+ interrupt entry is as fast and simple as possible.\r
+\r
+ The following links provide detailed information:\r
+ http://www.freertos.org/RTOS-Cortex-M3-M4.html\r
+ http://www.freertos.org/FAQHelp.html */\r
+ configASSERT( ucCurrentPriority >= ucMaxSysCallPriority );\r
+ }\r
+\r
+ /* Priority grouping: The interrupt controller (NVIC) allows the bits\r
+ that define each interrupt's priority to be split between bits that\r
+ define the interrupt's pre-emption priority bits and bits that define\r
+ the interrupt's sub-priority. For simplicity all bits must be defined\r
+ to be pre-emption priority bits. The following assertion will fail if\r
+ this is not the case (if some bits represent a sub-priority).\r
+\r
+ If the application only uses CMSIS libraries for interrupt\r
+ configuration then the correct setting can be achieved on all Cortex-M\r
+ devices by calling NVIC_SetPriorityGrouping( 0 ); before starting the\r
+ scheduler. Note however that some vendor specific peripheral libraries\r
+ assume a non-zero priority group setting, in which cases using a value\r
+ of zero will result in unpredicable behaviour. */\r
+ configASSERT( ( portAIRCR_REG & portPRIORITY_GROUP_MASK ) <= ulMaxPRIGROUPValue );\r
+ }\r
+\r
+#endif /* configASSERT_DEFINED */\r
+/*-----------------------------------------------------------*/\r
+\r
+\r
--- /dev/null
+/*\r
+ FreeRTOS V9.0.0rc2 - Copyright (C) 2016 Real Time Engineers Ltd.\r
+ All rights reserved\r
+\r
+ VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
+\r
+ This file is part of the FreeRTOS distribution.\r
+\r
+ FreeRTOS is free software; you can redistribute it and/or modify it under\r
+ the terms of the GNU General Public License (version 2) as published by the\r
+ Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.\r
+\r
+ ***************************************************************************\r
+ >>! NOTE: The modification to the GPL is included to allow you to !<<\r
+ >>! distribute a combined work that includes FreeRTOS without being !<<\r
+ >>! obliged to provide the source code for proprietary components !<<\r
+ >>! outside of the FreeRTOS kernel. !<<\r
+ ***************************************************************************\r
+\r
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
+ FOR A PARTICULAR PURPOSE. Full license text is available on the following\r
+ link: http://www.freertos.org/a00114.html\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * FreeRTOS provides completely free yet professionally developed, *\r
+ * robust, strictly quality controlled, supported, and cross *\r
+ * platform software that is more than just the market leader, it *\r
+ * is the industry's de facto standard. *\r
+ * *\r
+ * Help yourself get started quickly while simultaneously helping *\r
+ * to support the FreeRTOS project by purchasing a FreeRTOS *\r
+ * tutorial book, reference manual, or both: *\r
+ * http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading\r
+ the FAQ page "My application does not run, what could be wrong?". Have you\r
+ defined configASSERT()?\r
+\r
+ http://www.FreeRTOS.org/support - In return for receiving this top quality\r
+ embedded software for free we request you assist our global community by\r
+ participating in the support forum.\r
+\r
+ http://www.FreeRTOS.org/training - Investing in training allows your team to\r
+ be as productive as possible as early as possible. Now you can receive\r
+ FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers\r
+ Ltd, and the world's leading authority on the world's leading RTOS.\r
+\r
+ http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
+ including FreeRTOS+Trace - an indispensable productivity tool, a DOS\r
+ compatible FAT file system, and our tiny thread aware UDP/IP stack.\r
+\r
+ http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.\r
+ Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.\r
+\r
+ http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High\r
+ Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS\r
+ licenses offer ticketed support, indemnification and commercial middleware.\r
+\r
+ http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
+ engineered and independently SIL3 certified version for use in safety and\r
+ mission critical applications that require provable dependability.\r
+\r
+ 1 tab == 4 spaces!\r
+*/\r
+\r
+\r
+#ifndef PORTMACRO_H\r
+#define PORTMACRO_H\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/*-----------------------------------------------------------\r
+ * Port specific definitions.\r
+ *\r
+ * The settings in this file configure FreeRTOS correctly for the\r
+ * given hardware and compiler.\r
+ *\r
+ * These settings should not be altered.\r
+ *-----------------------------------------------------------\r
+ */\r
+\r
+/* Type definitions. */\r
+#define portCHAR char\r
+#define portFLOAT float\r
+#define portDOUBLE double\r
+#define portLONG long\r
+#define portSHORT short\r
+#define portSTACK_TYPE uint32_t\r
+#define portBASE_TYPE long\r
+\r
+typedef portSTACK_TYPE StackType_t;\r
+typedef long BaseType_t;\r
+typedef unsigned long UBaseType_t;\r
+\r
+#if( configUSE_16_BIT_TICKS == 1 )\r
+ typedef uint16_t TickType_t;\r
+ #define portMAX_DELAY ( TickType_t ) 0xffff\r
+#else\r
+ typedef uint32_t TickType_t;\r
+ #define portMAX_DELAY ( TickType_t ) 0xffffffffUL\r
+\r
+ /* 32-bit tick type on a 32-bit architecture, so reads of the tick count do\r
+ not need to be guarded with a critical section. */\r
+ #define portTICK_TYPE_IS_ATOMIC 1\r
+#endif\r
+/*-----------------------------------------------------------*/\r
+\r
+/* MPU specific constants. */\r
+#define portUSING_MPU_WRAPPERS 1\r
+#define portPRIVILEGE_BIT ( 0x80000000UL )\r
+\r
+#define portMPU_REGION_READ_WRITE ( 0x03UL << 24UL )\r
+#define portMPU_REGION_PRIVILEGED_READ_ONLY ( 0x05UL << 24UL )\r
+#define portMPU_REGION_READ_ONLY ( 0x06UL << 24UL )\r
+#define portMPU_REGION_PRIVILEGED_READ_WRITE ( 0x01UL << 24UL )\r
+#define portMPU_REGION_CACHEABLE_BUFFERABLE ( 0x07UL << 16UL )\r
+#define portMPU_REGION_EXECUTE_NEVER ( 0x01UL << 28UL )\r
+\r
+#define portUNPRIVILEGED_FLASH_REGION ( 0UL )\r
+#define portPRIVILEGED_FLASH_REGION ( 1UL )\r
+#define portPRIVILEGED_RAM_REGION ( 2UL )\r
+#define portGENERAL_PERIPHERALS_REGION ( 3UL )\r
+#define portSTACK_REGION ( 4UL )\r
+#define portFIRST_CONFIGURABLE_REGION ( 5UL )\r
+#define portLAST_CONFIGURABLE_REGION ( 7UL )\r
+#define portNUM_CONFIGURABLE_REGIONS ( ( portLAST_CONFIGURABLE_REGION - portFIRST_CONFIGURABLE_REGION ) + 1 )\r
+#define portTOTAL_NUM_REGIONS ( portNUM_CONFIGURABLE_REGIONS + 1 ) /* Plus one to make space for the stack region. */\r
+\r
+#define portSWITCH_TO_USER_MODE() __asm volatile ( " mrs r0, control \n orr r0, #1 \n msr control, r0 " :::"r0" )\r
+\r
+typedef struct MPU_REGION_REGISTERS\r
+{\r
+ uint32_t ulRegionBaseAddress;\r
+ uint32_t ulRegionAttribute;\r
+} xMPU_REGION_REGISTERS;\r
+\r
+/* Plus 1 to create space for the stack region. */\r
+typedef struct MPU_SETTINGS\r
+{\r
+ xMPU_REGION_REGISTERS xRegion[ portTOTAL_NUM_REGIONS ];\r
+} xMPU_SETTINGS;\r
+\r
+/* Architecture specifics. */\r
+#define portSTACK_GROWTH ( -1 )\r
+#define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ )\r
+#define portBYTE_ALIGNMENT 8\r
+/*-----------------------------------------------------------*/\r
+\r
+/* SVC numbers for various services. */\r
+#define portSVC_START_SCHEDULER 0\r
+#define portSVC_YIELD 1\r
+#define portSVC_RAISE_PRIVILEGE 2\r
+\r
+/* Scheduler utilities. */\r
+\r
+#define portYIELD() __asm volatile ( " SVC %0 \n" :: "i" (portSVC_YIELD) )\r
+#define portYIELD_WITHIN_API() \\r
+{ \\r
+ /* Set a PendSV to request a context switch. */ \\r
+ portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; \\r
+ \\r
+ /* Barriers are normally not required but do ensure the code is completely \\r
+ within the specified behaviour for the architecture. */ \\r
+ __asm volatile( "dsb" ); \\r
+ __asm volatile( "isb" ); \\r
+}\r
+\r
+#define portNVIC_INT_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000ed04 ) )\r
+#define portNVIC_PENDSVSET_BIT ( 1UL << 28UL )\r
+#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET\r
+#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Critical section management. */\r
+extern void vPortEnterCritical( void );\r
+extern void vPortExitCritical( void );\r
+#define portSET_INTERRUPT_MASK_FROM_ISR() ulPortRaiseBASEPRI()\r
+#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) vPortSetBASEPRI(x)\r
+#define portDISABLE_INTERRUPTS() vPortRaiseBASEPRI()\r
+#define portENABLE_INTERRUPTS() vPortSetBASEPRI(0)\r
+#define portENTER_CRITICAL() vPortEnterCritical()\r
+#define portEXIT_CRITICAL() vPortExitCritical()\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Task function macros as described on the FreeRTOS.org WEB site. These are\r
+not necessary for to use this port. They are defined so the common demo files\r
+(which build with all the ports) will build. */\r
+#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters )\r
+#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Architecture specific optimisations. */\r
+#ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION\r
+ #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1\r
+#endif\r
+\r
+#if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1\r
+\r
+ /* Generic helper function. */\r
+ __attribute__( ( always_inline ) ) static inline uint8_t ucPortCountLeadingZeros( uint32_t ulBitmap )\r
+ {\r
+ uint8_t ucReturn;\r
+\r
+ __asm volatile ( "clz %0, %1" : "=r" ( ucReturn ) : "r" ( ulBitmap ) );\r
+ return ucReturn;\r
+ }\r
+\r
+ /* Check the configuration. */\r
+ #if( configMAX_PRIORITIES > 32 )\r
+ #error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32. It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice.\r
+ #endif\r
+\r
+ /* Store/clear the ready priorities in a bit map. */\r
+ #define portRECORD_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) |= ( 1UL << ( uxPriority ) )\r
+ #define portRESET_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) &= ~( 1UL << ( uxPriority ) )\r
+\r
+ /*-----------------------------------------------------------*/\r
+\r
+ #define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) uxTopPriority = ( 31UL - ( uint32_t ) ucPortCountLeadingZeros( ( uxReadyPriorities ) ) )\r
+\r
+#endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+#ifdef configASSERT\r
+ void vPortValidateInterruptPriority( void );\r
+ #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID() vPortValidateInterruptPriority()\r
+#endif\r
+\r
+/* portNOP() is not required by this port. */\r
+#define portNOP()\r
+\r
+#define portINLINE __inline\r
+\r
+#ifndef portFORCE_INLINE\r
+ #define portFORCE_INLINE inline __attribute__(( always_inline))\r
+#endif\r
+\r
+/* Set the privilege level to user mode if xRunningPrivileged is false. */\r
+portFORCE_INLINE static void vPortResetPrivilege( BaseType_t xRunningPrivileged )\r
+{\r
+ if( xRunningPrivileged != pdTRUE ) \r
+ {\r
+ __asm volatile ( " mrs r0, control \n" \\r
+ " orr r0, #1 \n" \\r
+ " msr control, r0 \n" \\r
+ :::"r0" );\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+portFORCE_INLINE static BaseType_t xPortIsInsideInterrupt( void )\r
+{\r
+uint32_t ulCurrentInterrupt;\r
+BaseType_t xReturn;\r
+\r
+ /* Obtain the number of the currently executing interrupt. */\r
+ __asm volatile( "mrs %0, ipsr" : "=r"( ulCurrentInterrupt ) );\r
+\r
+ if( ulCurrentInterrupt == 0 )\r
+ {\r
+ xReturn = pdFALSE;\r
+ }\r
+ else\r
+ {\r
+ xReturn = pdTRUE;\r
+ }\r
+\r
+ return xReturn;\r
+}\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+portFORCE_INLINE static void vPortRaiseBASEPRI( void )\r
+{\r
+uint32_t ulNewBASEPRI;\r
+\r
+ __asm volatile\r
+ (\r
+ " mov %0, %1 \n" \\r
+ " msr basepri, %0 \n" \\r
+ " isb \n" \\r
+ " dsb \n" \\r
+ :"=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )\r
+ );\r
+}\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+portFORCE_INLINE static uint32_t ulPortRaiseBASEPRI( void )\r
+{\r
+uint32_t ulOriginalBASEPRI, ulNewBASEPRI;\r
+\r
+ __asm volatile\r
+ (\r
+ " mrs %0, basepri \n" \\r
+ " mov %1, %2 \n" \\r
+ " msr basepri, %1 \n" \\r
+ " isb \n" \\r
+ " dsb \n" \\r
+ :"=r" (ulOriginalBASEPRI), "=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )\r
+ );\r
+\r
+ /* This return will not be reached but is necessary to prevent compiler\r
+ warnings. */\r
+ return ulOriginalBASEPRI;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+portFORCE_INLINE static void vPortSetBASEPRI( uint32_t ulNewMaskValue )\r
+{\r
+ __asm volatile\r
+ (\r
+ " msr basepri, %0 " :: "r" ( ulNewMaskValue )\r
+ );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* PORTMACRO_H */\r
+\r
given to the FSR register when the initial context is set up for a task being\r
created. */\r
#define portINITIAL_FSR ( 0U )\r
+\r
/*-----------------------------------------------------------*/\r
\r
/*\r
extern void *_SDA2_BASE_, *_SDA_BASE_;\r
const uint32_t ulR2 = ( uint32_t ) &_SDA2_BASE_;\r
const uint32_t ulR13 = ( uint32_t ) &_SDA_BASE_;\r
+extern void _start1( void );\r
\r
/* Place a few bytes of known values on the bottom of the stack.\r
This is essential for the Microblaze port and these lines must\r
pxTopOfStack--;\r
*pxTopOfStack = ( StackType_t ) 0x07; /* R7 - other parameters and temporaries. */\r
pxTopOfStack--;\r
- *pxTopOfStack = ( StackType_t ) 0x08; /* R8 - other parameters and temporaries. */\r
+ *pxTopOfStack = ( StackType_t ) NULL; /* R8 - other parameters and temporaries. */\r
pxTopOfStack--;\r
*pxTopOfStack = ( StackType_t ) 0x09; /* R9 - other parameters and temporaries. */\r
pxTopOfStack--;\r
pxTopOfStack--;\r
*pxTopOfStack = ( StackType_t ) pxCode; /* R14 - return address for interrupt. */\r
pxTopOfStack--;\r
- *pxTopOfStack = ( StackType_t ) NULL; /* R15 - return address for subroutine. */\r
+ *pxTopOfStack = ( StackType_t ) _start1; /* R15 - return address for subroutine. */\r
\r
#ifdef portPRE_LOAD_STACK_FOR_DEBUGGING\r
pxTopOfStack--;\r
--- /dev/null
+/*\r
+ FreeRTOS V9.0.0rc2 - Copyright (C) 2016 Real Time Engineers Ltd.\r
+ All rights reserved\r
+\r
+ VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
+\r
+ This file is part of the FreeRTOS distribution.\r
+\r
+ FreeRTOS is free software; you can redistribute it and/or modify it under\r
+ the terms of the GNU General Public License (version 2) as published by the\r
+ Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.\r
+\r
+ ***************************************************************************\r
+ >>! NOTE: The modification to the GPL is included to allow you to !<<\r
+ >>! distribute a combined work that includes FreeRTOS without being !<<\r
+ >>! obliged to provide the source code for proprietary components !<<\r
+ >>! outside of the FreeRTOS kernel. !<<\r
+ ***************************************************************************\r
+\r
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
+ FOR A PARTICULAR PURPOSE. Full license text is available on the following\r
+ link: http://www.freertos.org/a00114.html\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * FreeRTOS provides completely free yet professionally developed, *\r
+ * robust, strictly quality controlled, supported, and cross *\r
+ * platform software that is more than just the market leader, it *\r
+ * is the industry's de facto standard. *\r
+ * *\r
+ * Help yourself get started quickly while simultaneously helping *\r
+ * to support the FreeRTOS project by purchasing a FreeRTOS *\r
+ * tutorial book, reference manual, or both: *\r
+ * http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading\r
+ the FAQ page "My application does not run, what could be wrong?". Have you\r
+ defined configASSERT()?\r
+\r
+ http://www.FreeRTOS.org/support - In return for receiving this top quality\r
+ embedded software for free we request you assist our global community by\r
+ participating in the support forum.\r
+\r
+ http://www.FreeRTOS.org/training - Investing in training allows your team to\r
+ be as productive as possible as early as possible. Now you can receive\r
+ FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers\r
+ Ltd, and the world's leading authority on the world's leading RTOS.\r
+\r
+ http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
+ including FreeRTOS+Trace - an indispensable productivity tool, a DOS\r
+ compatible FAT file system, and our tiny thread aware UDP/IP stack.\r
+\r
+ http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.\r
+ Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.\r
+\r
+ http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High\r
+ Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS\r
+ licenses offer ticketed support, indemnification and commercial middleware.\r
+\r
+ http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
+ engineered and independently SIL3 certified version for use in safety and\r
+ mission critical applications that require provable dependability.\r
+\r
+ 1 tab == 4 spaces!\r
+*/\r
+\r
+/*-----------------------------------------------------------\r
+ * Implementation of functions defined in portable.h for the ARM CM3 port.\r
+ *----------------------------------------------------------*/\r
+\r
+/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining\r
+all the API functions to use the MPU wrappers. That should only be done when\r
+task.h is included from an application file. */\r
+#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+#include "queue.h"\r
+#include "event_groups.h"\r
+#include "mpu_prototypes.h"\r
+\r
+#ifndef __TARGET_FPU_VFP\r
+ #error This port can only be used when the project options are configured to enable hardware floating point support.\r
+#endif\r
+\r
+#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE\r
+\r
+/* Constants required to access and manipulate the NVIC. */\r
+#define portNVIC_SYSTICK_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000e010 ) )\r
+#define portNVIC_SYSTICK_LOAD_REG ( * ( ( volatile uint32_t * ) 0xe000e014 ) )\r
+#define portNVIC_SYSPRI2_REG ( * ( ( volatile uint32_t * ) 0xe000ed20 ) )\r
+#define portNVIC_SYSPRI1_REG ( * ( ( volatile uint32_t * ) 0xe000ed1c ) )\r
+#define portNVIC_SYS_CTRL_STATE_REG ( * ( ( volatile uint32_t * ) 0xe000ed24 ) )\r
+#define portNVIC_MEM_FAULT_ENABLE ( 1UL << 16UL )\r
+\r
+/* Constants required to access and manipulate the MPU. */\r
+#define portMPU_TYPE_REG ( * ( ( volatile uint32_t * ) 0xe000ed90 ) )\r
+#define portMPU_REGION_BASE_ADDRESS_REG ( * ( ( volatile uint32_t * ) 0xe000ed9C ) )\r
+#define portMPU_REGION_ATTRIBUTE_REG ( * ( ( volatile uint32_t * ) 0xe000edA0 ) )\r
+#define portMPU_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000ed94 ) )\r
+#define portEXPECTED_MPU_TYPE_VALUE ( 8UL << 8UL ) /* 8 regions, unified. */\r
+#define portMPU_ENABLE ( 0x01UL )\r
+#define portMPU_BACKGROUND_ENABLE ( 1UL << 2UL )\r
+#define portPRIVILEGED_EXECUTION_START_ADDRESS ( 0UL )\r
+#define portMPU_REGION_VALID ( 0x10UL )\r
+#define portMPU_REGION_ENABLE ( 0x01UL )\r
+#define portPERIPHERALS_START_ADDRESS 0x40000000UL\r
+#define portPERIPHERALS_END_ADDRESS 0x5FFFFFFFUL\r
+\r
+/* Constants required to access and manipulate the SysTick. */\r
+#define portNVIC_SYSTICK_CLK ( 0x00000004UL )\r
+#define portNVIC_SYSTICK_INT ( 0x00000002UL )\r
+#define portNVIC_SYSTICK_ENABLE ( 0x00000001UL )\r
+#define portNVIC_PENDSV_PRI ( ( ( uint32_t ) configKERNEL_INTERRUPT_PRIORITY ) << 16UL )\r
+#define portNVIC_SYSTICK_PRI ( ( ( uint32_t ) configKERNEL_INTERRUPT_PRIORITY ) << 24UL )\r
+#define portNVIC_SVC_PRI ( ( ( uint32_t ) configMAX_SYSCALL_INTERRUPT_PRIORITY - 1UL ) << 24UL )\r
+\r
+/* Constants required to manipulate the VFP. */\r
+#define portFPCCR ( ( volatile uint32_t * ) 0xe000ef34UL ) /* Floating point context control register. */\r
+#define portASPEN_AND_LSPEN_BITS ( 0x3UL << 30UL )\r
+\r
+/* Constants required to set up the initial stack. */\r
+#define portINITIAL_XPSR ( 0x01000000UL )\r
+#define portINITIAL_EXEC_RETURN ( 0xfffffffdUL )\r
+#define portINITIAL_CONTROL_IF_UNPRIVILEGED ( 0x03 )\r
+#define portINITIAL_CONTROL_IF_PRIVILEGED ( 0x02 )\r
+\r
+/* Constants required to check the validity of an interrupt priority. */\r
+#define portFIRST_USER_INTERRUPT_NUMBER ( 16 )\r
+#define portNVIC_IP_REGISTERS_OFFSET_16 ( 0xE000E3F0 )\r
+#define portAIRCR_REG ( * ( ( volatile uint32_t * ) 0xE000ED0C ) )\r
+#define portMAX_8_BIT_VALUE ( ( uint8_t ) 0xff )\r
+#define portTOP_BIT_OF_BYTE ( ( uint8_t ) 0x80 )\r
+#define portMAX_PRIGROUP_BITS ( ( uint8_t ) 7 )\r
+#define portPRIORITY_GROUP_MASK ( 0x07UL << 8UL )\r
+#define portPRIGROUP_SHIFT ( 8UL )\r
+\r
+/* Offsets in the stack to the parameters when inside the SVC handler. */\r
+#define portOFFSET_TO_PC ( 6 )\r
+\r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK ( ( StackType_t ) 0xfffffffeUL )\r
+\r
+/* Each task maintains its own interrupt status in the critical nesting\r
+variable. Note this is not saved as part of the task context as context\r
+switches can only occur when uxCriticalNesting is zero. */\r
+static UBaseType_t uxCriticalNesting = 0xaaaaaaaa;\r
+\r
+/*\r
+ * Setup the timer to generate the tick interrupts.\r
+ */\r
+static void prvSetupTimerInterrupt( void ) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * Configure a number of standard MPU regions that are used by all tasks.\r
+ */\r
+static void prvSetupMPU( void ) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * Start first task is a separate function so it can be tested in isolation.\r
+ */\r
+static void prvStartFirstTask( void ) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * Return the smallest MPU region size that a given number of bytes will fit\r
+ * into. The region size is returned as the value that should be programmed\r
+ * into the region attribute register for that region.\r
+ */\r
+static uint32_t prvGetMPURegionSizeSetting( uint32_t ulActualSizeInBytes ) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * Checks to see if being called from the context of an unprivileged task, and\r
+ * if so raises the privilege level and returns false - otherwise does nothing\r
+ * other than return true.\r
+ */\r
+BaseType_t xPortRaisePrivilege( void );\r
+\r
+/*\r
+ * Standard FreeRTOS exception handlers.\r
+ */\r
+void xPortPendSVHandler( void ) PRIVILEGED_FUNCTION;\r
+void xPortSysTickHandler( void ) PRIVILEGED_FUNCTION;\r
+void vPortSVCHandler( void ) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * Starts the scheduler by restoring the context of the first task to run.\r
+ */\r
+static void prvRestoreContextOfFirstTask( void ) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * C portion of the SVC handler. The SVC handler is split between an asm entry\r
+ * and a C wrapper for simplicity of coding and maintenance.\r
+ */\r
+void prvSVCHandler( uint32_t *pulRegisters ) __attribute__((used)) PRIVILEGED_FUNCTION;\r
+\r
+/*\r
+ * Function to enable the VFP.\r
+ */\r
+static void vPortEnableVFP( void );\r
+\r
+/*\r
+ * Utility function.\r
+ */\r
+static uint32_t prvPortGetIPSR( void );\r
+ \r
+/*\r
+ * Used by the portASSERT_IF_INTERRUPT_PRIORITY_INVALID() macro to ensure\r
+ * FreeRTOS API functions are not called from interrupts that have been assigned\r
+ * a priority above configMAX_SYSCALL_INTERRUPT_PRIORITY.\r
+ */\r
+#if ( configASSERT_DEFINED == 1 )\r
+ static uint8_t ucMaxSysCallPriority = 0;\r
+ static uint32_t ulMaxPRIGROUPValue = 0;\r
+ static const volatile uint8_t * const pcInterruptPriorityRegisters = ( const uint8_t * ) portNVIC_IP_REGISTERS_OFFSET_16;\r
+#endif /* configASSERT_DEFINED */\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * See header file for description.\r
+ */\r
+StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters, BaseType_t xRunPrivileged )\r
+{\r
+ /* Simulate the stack frame as it would be created by a context switch\r
+ interrupt. */\r
+ pxTopOfStack--; /* Offset added to account for the way the MCU uses the stack on entry/exit of interrupts. */\r
+ *pxTopOfStack = portINITIAL_XPSR; /* xPSR */\r
+ pxTopOfStack--;\r
+ *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK; /* PC */\r
+ pxTopOfStack--;\r
+ *pxTopOfStack = 0; /* LR */\r
+ pxTopOfStack -= 5; /* R12, R3, R2 and R1. */\r
+ *pxTopOfStack = ( StackType_t ) pvParameters; /* R0 */\r
+\r
+ /* A save method is being used that requires each task to maintain its\r
+ own exec return value. */\r
+ pxTopOfStack--;\r
+ *pxTopOfStack = portINITIAL_EXEC_RETURN;\r
+\r
+ pxTopOfStack -= 9; /* R11, R10, R9, R8, R7, R6, R5 and R4. */\r
+\r
+ if( xRunPrivileged == pdTRUE )\r
+ {\r
+ *pxTopOfStack = portINITIAL_CONTROL_IF_PRIVILEGED;\r
+ }\r
+ else\r
+ {\r
+ *pxTopOfStack = portINITIAL_CONTROL_IF_UNPRIVILEGED;\r
+ }\r
+\r
+ return pxTopOfStack;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void prvSVCHandler( uint32_t *pulParam )\r
+{\r
+uint8_t ucSVCNumber;\r
+uint32_t ulReg;\r
+\r
+ /* The stack contains: r0, r1, r2, r3, r12, r14, the return address and\r
+ xPSR. The first argument (r0) is pulParam[ 0 ]. */\r
+ ucSVCNumber = ( ( uint8_t * ) pulParam[ portOFFSET_TO_PC ] )[ -2 ];\r
+ switch( ucSVCNumber )\r
+ {\r
+ case portSVC_START_SCHEDULER : portNVIC_SYSPRI1_REG |= portNVIC_SVC_PRI;\r
+ prvRestoreContextOfFirstTask();\r
+ break;\r
+\r
+ case portSVC_YIELD : portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;\r
+ /* Barriers are normally not required\r
+ but do ensure the code is completely\r
+ within the specified behaviour for the\r
+ architecture. */\r
+ __asm volatile( "dsb" );\r
+ __asm volatile( "isb" );\r
+\r
+ break;\r
+\r
+ case portSVC_RAISE_PRIVILEGE : __asm\r
+ {\r
+ mrs ulReg, control /* Obtain current control value. */\r
+ bic ulReg, #1 /* Set privilege bit. */\r
+ msr control, ulReg /* Write back new control value. */\r
+ }\r
+ break;\r
+\r
+ default : /* Unknown SVC call. */\r
+ break;\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+__asm void vPortSVCHandler( void )\r
+{\r
+ extern prvSVCHandler\r
+ \r
+ PRESERVE8\r
+\r
+ /* Assumes psp was in use. */\r
+ #ifndef USE_PROCESS_STACK /* Code should not be required if a main() is using the process stack. */\r
+ tst lr, #4\r
+ ite eq\r
+ mrseq r0, msp\r
+ mrsne r0, psp\r
+ #else\r
+ mrs r0, psp\r
+ #endif\r
+ b prvSVCHandler\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+__asm void prvRestoreContextOfFirstTask( void )\r
+{\r
+ PRESERVE8\r
+\r
+ ldr r0, =0xE000ED08 /* Use the NVIC offset register to locate the stack. */\r
+ ldr r0, [r0]\r
+ ldr r0, [r0]\r
+ msr msp, r0 /* Set the msp back to the start of the stack. */\r
+ ldr r3, =pxCurrentTCB /* Restore the context. */\r
+ ldr r1, [r3]\r
+ ldr r0, [r1] /* The first item in the TCB is the task top of stack. */\r
+ add r1, r1, #4 /* Move onto the second item in the TCB... */\r
+ ldr r2, =0xe000ed9c /* Region Base Address register. */\r
+ ldmia r1!, {r4-r11} /* Read 4 sets of MPU registers. */\r
+ stmia r2!, {r4-r11} /* Write 4 sets of MPU registers. */\r
+ ldmia r0!, {r3-r11, r14} /* Pop the registers that are not automatically saved on exception entry. */\r
+ msr control, r3\r
+ msr psp, r0 /* Restore the task stack pointer. */\r
+ mov r0, #0\r
+ msr basepri, r0\r
+ bx r14\r
+ nop\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * See header file for description.\r
+ */\r
+BaseType_t xPortStartScheduler( void )\r
+{\r
+ /* configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0. See\r
+ http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html */\r
+ configASSERT( ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) );\r
+\r
+ #if( configASSERT_DEFINED == 1 )\r
+ {\r
+ volatile uint32_t ulOriginalPriority;\r
+ volatile uint8_t * const pucFirstUserPriorityRegister = ( volatile uint8_t * ) ( portNVIC_IP_REGISTERS_OFFSET_16 + portFIRST_USER_INTERRUPT_NUMBER );\r
+ volatile uint8_t ucMaxPriorityValue;\r
+\r
+ /* Determine the maximum priority from which ISR safe FreeRTOS API\r
+ functions can be called. ISR safe functions are those that end in\r
+ "FromISR". FreeRTOS maintains separate thread and ISR API functions to\r
+ ensure interrupt entry is as fast and simple as possible.\r
+\r
+ Save the interrupt priority value that is about to be clobbered. */\r
+ ulOriginalPriority = *pucFirstUserPriorityRegister;\r
+\r
+ /* Determine the number of priority bits available. First write to all\r
+ possible bits. */\r
+ *pucFirstUserPriorityRegister = portMAX_8_BIT_VALUE;\r
+\r
+ /* Read the value back to see how many bits stuck. */\r
+ ucMaxPriorityValue = *pucFirstUserPriorityRegister;\r
+\r
+ /* Use the same mask on the maximum system call priority. */\r
+ ucMaxSysCallPriority = configMAX_SYSCALL_INTERRUPT_PRIORITY & ucMaxPriorityValue;\r
+\r
+ /* Calculate the maximum acceptable priority group value for the number\r
+ of bits read back. */\r
+ ulMaxPRIGROUPValue = portMAX_PRIGROUP_BITS;\r
+ while( ( ucMaxPriorityValue & portTOP_BIT_OF_BYTE ) == portTOP_BIT_OF_BYTE )\r
+ {\r
+ ulMaxPRIGROUPValue--;\r
+ ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
+ }\r
+\r
+ /* Shift the priority group value back to its position within the AIRCR\r
+ register. */\r
+ ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
+ ulMaxPRIGROUPValue &= portPRIORITY_GROUP_MASK;\r
+\r
+ /* Restore the clobbered interrupt priority register to its original\r
+ value. */\r
+ *pucFirstUserPriorityRegister = ulOriginalPriority;\r
+ }\r
+ #endif /* conifgASSERT_DEFINED */\r
+\r
+ /* Make PendSV and SysTick the same priority as the kernel, and the SVC\r
+ handler higher priority so it can be used to exit a critical section (where\r
+ lower priorities are masked). */\r
+ portNVIC_SYSPRI2_REG |= portNVIC_PENDSV_PRI;\r
+ portNVIC_SYSPRI2_REG |= portNVIC_SYSTICK_PRI;\r
+\r
+ /* Configure the regions in the MPU that are common to all tasks. */\r
+ prvSetupMPU();\r
+\r
+ /* Start the timer that generates the tick ISR. Interrupts are disabled\r
+ here already. */\r
+ prvSetupTimerInterrupt();\r
+\r
+ /* Initialise the critical nesting count ready for the first task. */\r
+ uxCriticalNesting = 0;\r
+\r
+ /* Ensure the VFP is enabled - it should be anyway. */\r
+ vPortEnableVFP();\r
+\r
+ /* Lazy save always. */\r
+ *( portFPCCR ) |= portASPEN_AND_LSPEN_BITS;\r
+\r
+ /* Start the first task. */\r
+ prvStartFirstTask();\r
+\r
+ /* Should not get here! */\r
+ return 0;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+__asm void prvStartFirstTask( void )\r
+{\r
+ PRESERVE8\r
+ \r
+ ldr r0, =0xE000ED08 /* Use the NVIC offset register to locate the stack. */\r
+ ldr r0, [r0]\r
+ ldr r0, [r0]\r
+ msr msp, r0 /* Set the msp back to the start of the stack. */\r
+ cpsie i /* Globally enable interrupts. */\r
+ cpsie f\r
+ dsb\r
+ isb\r
+ svc portSVC_START_SCHEDULER /* System call to start first task. */\r
+ nop\r
+ nop\r
+}\r
+\r
+void vPortEndScheduler( void )\r
+{\r
+ /* Not implemented in ports where there is nothing to return to.\r
+ Artificially force an assert. */\r
+ configASSERT( uxCriticalNesting == 1000UL );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vPortEnterCritical( void )\r
+{\r
+BaseType_t xRunningPrivileged = xPortRaisePrivilege();\r
+\r
+ portDISABLE_INTERRUPTS();\r
+ uxCriticalNesting++;\r
+\r
+ vPortResetPrivilege( xRunningPrivileged );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vPortExitCritical( void )\r
+{\r
+BaseType_t xRunningPrivileged = xPortRaisePrivilege();\r
+\r
+ configASSERT( uxCriticalNesting );\r
+ uxCriticalNesting--;\r
+ if( uxCriticalNesting == 0 )\r
+ {\r
+ portENABLE_INTERRUPTS();\r
+ }\r
+ vPortResetPrivilege( xRunningPrivileged );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+__asm void xPortPendSVHandler( void )\r
+{\r
+ extern uxCriticalNesting;\r
+ extern pxCurrentTCB;\r
+ extern vTaskSwitchContext;\r
+\r
+ PRESERVE8\r
+\r
+ mrs r0, psp\r
+\r
+ ldr r3, =pxCurrentTCB /* Get the location of the current TCB. */\r
+ ldr r2, [r3]\r
+\r
+ tst r14, #0x10 /* Is the task using the FPU context? If so, push high vfp registers. */\r
+ it eq\r
+ vstmdbeq r0!, {s16-s31}\r
+\r
+ mrs r1, control\r
+ stmdb r0!, {r1, r4-r11, r14} /* Save the remaining registers. */\r
+ str r0, [r2] /* Save the new top of stack into the first member of the TCB. */\r
+\r
+ stmdb sp!, {r3}\r
+ mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY\r
+ msr basepri, r0\r
+ dsb\r
+ isb\r
+ bl vTaskSwitchContext\r
+ mov r0, #0\r
+ msr basepri, r0\r
+ ldmia sp!, {r3}\r
+ /* Restore the context. */\r
+ ldr r1, [r3]\r
+ ldr r0, [r1] /* The first item in the TCB is the task top of stack. */\r
+ add r1, r1, #4 /* Move onto the second item in the TCB... */\r
+ ldr r2, =0xe000ed9c /* Region Base Address register. */\r
+ ldmia r1!, {r4-r11} /* Read 4 sets of MPU registers. */\r
+ stmia r2!, {r4-r11} /* Write 4 sets of MPU registers. */\r
+ ldmia r0!, {r3-r11, r14} /* Pop the registers that are not automatically saved on exception entry. */\r
+ msr control, r3\r
+\r
+ tst r14, #0x10 /* Is the task using the FPU context? If so, pop the high vfp registers too. */\r
+ it eq\r
+ vldmiaeq r0!, {s16-s31}\r
+\r
+ msr psp, r0\r
+ bx r14\r
+ nop\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void xPortSysTickHandler( void )\r
+{\r
+uint32_t ulDummy;\r
+\r
+ ulDummy = portSET_INTERRUPT_MASK_FROM_ISR();\r
+ {\r
+ /* Increment the RTOS tick. */\r
+ if( xTaskIncrementTick() != pdFALSE )\r
+ {\r
+ /* Pend a context switch. */\r
+ portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;\r
+ }\r
+ }\r
+ portCLEAR_INTERRUPT_MASK_FROM_ISR( ulDummy );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * Setup the systick timer to generate the tick interrupts at the required\r
+ * frequency.\r
+ */\r
+static void prvSetupTimerInterrupt( void )\r
+{\r
+ /* Configure SysTick to interrupt at the requested rate. */\r
+ portNVIC_SYSTICK_LOAD_REG = ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;\r
+ portNVIC_SYSTICK_CTRL_REG = portNVIC_SYSTICK_CLK | portNVIC_SYSTICK_INT | portNVIC_SYSTICK_ENABLE;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+__asm void vPortSwitchToUserMode( void )\r
+{\r
+ PRESERVE8\r
+ \r
+ mrs r0, control\r
+ orr r0, #1\r
+ msr control, r0\r
+ bx r14\r
+}\r
+/*-----------------------------------------------------------*/\r
+ \r
+__asm void vPortEnableVFP( void )\r
+{\r
+ PRESERVE8\r
+ \r
+ ldr.w r0, =0xE000ED88 /* The FPU enable bits are in the CPACR. */\r
+ ldr r1, [r0]\r
+\r
+ orr r1, r1, #( 0xf << 20 ) /* Enable CP10 and CP11 coprocessors, then save back. */\r
+ str r1, [r0]\r
+ bx r14\r
+ nop\r
+ nop\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvSetupMPU( void )\r
+{\r
+extern uint32_t __privileged_functions_end__;\r
+extern uint32_t __FLASH_segment_start__;\r
+extern uint32_t __FLASH_segment_end__;\r
+extern uint32_t __privileged_data_start__;\r
+extern uint32_t __privileged_data_end__;\r
+\r
+ /* Check the expected MPU is present. */\r
+ if( portMPU_TYPE_REG == portEXPECTED_MPU_TYPE_VALUE )\r
+ {\r
+ /* First setup the entire flash for unprivileged read only access. */\r
+ portMPU_REGION_BASE_ADDRESS_REG = ( ( uint32_t ) __FLASH_segment_start__ ) | /* Base address. */\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portUNPRIVILEGED_FLASH_REGION );\r
+\r
+ portMPU_REGION_ATTRIBUTE_REG = ( portMPU_REGION_READ_ONLY ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ ( prvGetMPURegionSizeSetting( ( uint32_t ) __FLASH_segment_end__ - ( uint32_t ) __FLASH_segment_start__ ) ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* Setup the first 16K for privileged only access (even though less\r
+ than 10K is actually being used). This is where the kernel code is\r
+ placed. */\r
+ portMPU_REGION_BASE_ADDRESS_REG = ( ( uint32_t ) __FLASH_segment_start__ ) | /* Base address. */\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portPRIVILEGED_FLASH_REGION );\r
+\r
+ portMPU_REGION_ATTRIBUTE_REG = ( portMPU_REGION_PRIVILEGED_READ_ONLY ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ ( prvGetMPURegionSizeSetting( ( uint32_t ) __privileged_functions_end__ - ( uint32_t ) __FLASH_segment_start__ ) ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* Setup the privileged data RAM region. This is where the kernel data\r
+ is placed. */\r
+ portMPU_REGION_BASE_ADDRESS_REG = ( ( uint32_t ) __privileged_data_start__ ) | /* Base address. */\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portPRIVILEGED_RAM_REGION );\r
+\r
+ portMPU_REGION_ATTRIBUTE_REG = ( portMPU_REGION_PRIVILEGED_READ_WRITE ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ prvGetMPURegionSizeSetting( ( uint32_t ) __privileged_data_end__ - ( uint32_t ) __privileged_data_start__ ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* By default allow everything to access the general peripherals. The\r
+ system peripherals and registers are protected. */\r
+ portMPU_REGION_BASE_ADDRESS_REG = ( portPERIPHERALS_START_ADDRESS ) |\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portGENERAL_PERIPHERALS_REGION );\r
+\r
+ portMPU_REGION_ATTRIBUTE_REG = ( portMPU_REGION_READ_WRITE | portMPU_REGION_EXECUTE_NEVER ) |\r
+ ( prvGetMPURegionSizeSetting( portPERIPHERALS_END_ADDRESS - portPERIPHERALS_START_ADDRESS ) ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* Enable the memory fault exception. */\r
+ portNVIC_SYS_CTRL_STATE_REG |= portNVIC_MEM_FAULT_ENABLE;\r
+\r
+ /* Enable the MPU with the background region configured. */\r
+ portMPU_CTRL_REG |= ( portMPU_ENABLE | portMPU_BACKGROUND_ENABLE );\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static uint32_t prvGetMPURegionSizeSetting( uint32_t ulActualSizeInBytes )\r
+{\r
+uint32_t ulRegionSize, ulReturnValue = 4;\r
+\r
+ /* 32 is the smallest region size, 31 is the largest valid value for\r
+ ulReturnValue. */\r
+ for( ulRegionSize = 32UL; ulReturnValue < 31UL; ( ulRegionSize <<= 1UL ) )\r
+ {\r
+ if( ulActualSizeInBytes <= ulRegionSize )\r
+ {\r
+ break;\r
+ }\r
+ else\r
+ {\r
+ ulReturnValue++;\r
+ }\r
+ }\r
+\r
+ /* Shift the code by one before returning so it can be written directly\r
+ into the the correct bit position of the attribute register. */\r
+ return ( ulReturnValue << 1UL );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+__asm BaseType_t xPortRaisePrivilege( void )\r
+{\r
+ mrs r0, control\r
+ tst r0, #1 /* Is the task running privileged? */\r
+ itte ne\r
+ movne r0, #0 /* CONTROL[0]!=0, return false. */\r
+ svcne portSVC_RAISE_PRIVILEGE /* Switch to privileged. */\r
+ moveq r0, #1 /* CONTROL[0]==0, return true. */\r
+ bx lr\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vPortStoreTaskMPUSettings( xMPU_SETTINGS *xMPUSettings, const struct xMEMORY_REGION * const xRegions, StackType_t *pxBottomOfStack, uint32_t ulStackDepth )\r
+{\r
+extern uint32_t __SRAM_segment_start__;\r
+extern uint32_t __SRAM_segment_end__;\r
+extern uint32_t __privileged_data_start__;\r
+extern uint32_t __privileged_data_end__;\r
+\r
+ \r
+int32_t lIndex;\r
+uint32_t ul;\r
+\r
+ if( xRegions == NULL )\r
+ {\r
+ /* No MPU regions are specified so allow access to all RAM. */\r
+ xMPUSettings->xRegion[ 0 ].ulRegionBaseAddress =\r
+ ( ( uint32_t ) __SRAM_segment_start__ ) | /* Base address. */\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portSTACK_REGION );\r
+\r
+ xMPUSettings->xRegion[ 0 ].ulRegionAttribute =\r
+ ( portMPU_REGION_READ_WRITE ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ ( prvGetMPURegionSizeSetting( ( uint32_t ) __SRAM_segment_end__ - ( uint32_t ) __SRAM_segment_start__ ) ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* Re-instate the privileged only RAM region as xRegion[ 0 ] will have\r
+ just removed the privileged only parameters. */\r
+ xMPUSettings->xRegion[ 1 ].ulRegionBaseAddress =\r
+ ( ( uint32_t ) __privileged_data_start__ ) | /* Base address. */\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portSTACK_REGION + 1 );\r
+\r
+ xMPUSettings->xRegion[ 1 ].ulRegionAttribute =\r
+ ( portMPU_REGION_PRIVILEGED_READ_WRITE ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ prvGetMPURegionSizeSetting( ( uint32_t ) __privileged_data_end__ - ( uint32_t ) __privileged_data_start__ ) |\r
+ ( portMPU_REGION_ENABLE );\r
+\r
+ /* Invalidate all other regions. */\r
+ for( ul = 2; ul <= portNUM_CONFIGURABLE_REGIONS; ul++ )\r
+ {\r
+ xMPUSettings->xRegion[ ul ].ulRegionBaseAddress = ( portSTACK_REGION + ul ) | portMPU_REGION_VALID;\r
+ xMPUSettings->xRegion[ ul ].ulRegionAttribute = 0UL;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ /* This function is called automatically when the task is created - in\r
+ which case the stack region parameters will be valid. At all other\r
+ times the stack parameters will not be valid and it is assumed that the\r
+ stack region has already been configured. */\r
+ if( ulStackDepth > 0 )\r
+ {\r
+ /* Define the region that allows access to the stack. */\r
+ xMPUSettings->xRegion[ 0 ].ulRegionBaseAddress =\r
+ ( ( uint32_t ) pxBottomOfStack ) |\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portSTACK_REGION ); /* Region number. */\r
+\r
+ xMPUSettings->xRegion[ 0 ].ulRegionAttribute =\r
+ ( portMPU_REGION_READ_WRITE ) | /* Read and write. */\r
+ ( prvGetMPURegionSizeSetting( ulStackDepth * ( uint32_t ) sizeof( StackType_t ) ) ) |\r
+ ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
+ ( portMPU_REGION_ENABLE );\r
+ }\r
+\r
+ lIndex = 0;\r
+\r
+ for( ul = 1; ul <= portNUM_CONFIGURABLE_REGIONS; ul++ )\r
+ {\r
+ if( ( xRegions[ lIndex ] ).ulLengthInBytes > 0UL )\r
+ {\r
+ /* Translate the generic region definition contained in\r
+ xRegions into the CM3 specific MPU settings that are then\r
+ stored in xMPUSettings. */\r
+ xMPUSettings->xRegion[ ul ].ulRegionBaseAddress =\r
+ ( ( uint32_t ) xRegions[ lIndex ].pvBaseAddress ) |\r
+ ( portMPU_REGION_VALID ) |\r
+ ( portSTACK_REGION + ul ); /* Region number. */\r
+\r
+ xMPUSettings->xRegion[ ul ].ulRegionAttribute =\r
+ ( prvGetMPURegionSizeSetting( xRegions[ lIndex ].ulLengthInBytes ) ) |\r
+ ( xRegions[ lIndex ].ulParameters ) |\r
+ ( portMPU_REGION_ENABLE );\r
+ }\r
+ else\r
+ {\r
+ /* Invalidate the region. */\r
+ xMPUSettings->xRegion[ ul ].ulRegionBaseAddress = ( portSTACK_REGION + ul ) | portMPU_REGION_VALID;\r
+ xMPUSettings->xRegion[ ul ].ulRegionAttribute = 0UL;\r
+ }\r
+\r
+ lIndex++;\r
+ }\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+__asm uint32_t prvPortGetIPSR( void )\r
+{\r
+ PRESERVE8\r
+\r
+ mrs r0, ipsr\r
+ bx r14\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+#if( configASSERT_DEFINED == 1 )\r
+\r
+ void vPortValidateInterruptPriority( void )\r
+ {\r
+ uint32_t ulCurrentInterrupt;\r
+ uint8_t ucCurrentPriority;\r
+\r
+ /* Obtain the number of the currently executing interrupt. */\r
+ ulCurrentInterrupt = prvPortGetIPSR();\r
+\r
+ /* Is the interrupt number a user defined interrupt? */\r
+ if( ulCurrentInterrupt >= portFIRST_USER_INTERRUPT_NUMBER )\r
+ {\r
+ /* Look up the interrupt's priority. */\r
+ ucCurrentPriority = pcInterruptPriorityRegisters[ ulCurrentInterrupt ];\r
+\r
+ /* The following assertion will fail if a service routine (ISR) for\r
+ an interrupt that has been assigned a priority above\r
+ configMAX_SYSCALL_INTERRUPT_PRIORITY calls an ISR safe FreeRTOS API\r
+ function. ISR safe FreeRTOS API functions must *only* be called\r
+ from interrupts that have been assigned a priority at or below\r
+ configMAX_SYSCALL_INTERRUPT_PRIORITY.\r
+\r
+ Numerically low interrupt priority numbers represent logically high\r
+ interrupt priorities, therefore the priority of the interrupt must\r
+ be set to a value equal to or numerically *higher* than\r
+ configMAX_SYSCALL_INTERRUPT_PRIORITY.\r
+\r
+ Interrupts that use the FreeRTOS API must not be left at their\r
+ default priority of zero as that is the highest possible priority,\r
+ which is guaranteed to be above configMAX_SYSCALL_INTERRUPT_PRIORITY,\r
+ and therefore also guaranteed to be invalid.\r
+\r
+ FreeRTOS maintains separate thread and ISR API functions to ensure\r
+ interrupt entry is as fast and simple as possible.\r
+\r
+ The following links provide detailed information:\r
+ http://www.freertos.org/RTOS-Cortex-M3-M4.html\r
+ http://www.freertos.org/FAQHelp.html */\r
+ configASSERT( ucCurrentPriority >= ucMaxSysCallPriority );\r
+ }\r
+\r
+ /* Priority grouping: The interrupt controller (NVIC) allows the bits\r
+ that define each interrupt's priority to be split between bits that\r
+ define the interrupt's pre-emption priority bits and bits that define\r
+ the interrupt's sub-priority. For simplicity all bits must be defined\r
+ to be pre-emption priority bits. The following assertion will fail if\r
+ this is not the case (if some bits represent a sub-priority).\r
+\r
+ If the application only uses CMSIS libraries for interrupt\r
+ configuration then the correct setting can be achieved on all Cortex-M\r
+ devices by calling NVIC_SetPriorityGrouping( 0 ); before starting the\r
+ scheduler. Note however that some vendor specific peripheral libraries\r
+ assume a non-zero priority group setting, in which cases using a value\r
+ of zero will result in unpredicable behaviour. */\r
+ configASSERT( ( portAIRCR_REG & portPRIORITY_GROUP_MASK ) <= ulMaxPRIGROUPValue );\r
+ }\r
+\r
+#endif /* configASSERT_DEFINED */\r
+\r
+\r
--- /dev/null
+/*\r
+ FreeRTOS V9.0.0rc2 - Copyright (C) 2016 Real Time Engineers Ltd.\r
+ All rights reserved\r
+\r
+ VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
+\r
+ This file is part of the FreeRTOS distribution.\r
+\r
+ FreeRTOS is free software; you can redistribute it and/or modify it under\r
+ the terms of the GNU General Public License (version 2) as published by the\r
+ Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.\r
+\r
+ ***************************************************************************\r
+ >>! NOTE: The modification to the GPL is included to allow you to !<<\r
+ >>! distribute a combined work that includes FreeRTOS without being !<<\r
+ >>! obliged to provide the source code for proprietary components !<<\r
+ >>! outside of the FreeRTOS kernel. !<<\r
+ ***************************************************************************\r
+\r
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
+ FOR A PARTICULAR PURPOSE. Full license text is available on the following\r
+ link: http://www.freertos.org/a00114.html\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * FreeRTOS provides completely free yet professionally developed, *\r
+ * robust, strictly quality controlled, supported, and cross *\r
+ * platform software that is more than just the market leader, it *\r
+ * is the industry's de facto standard. *\r
+ * *\r
+ * Help yourself get started quickly while simultaneously helping *\r
+ * to support the FreeRTOS project by purchasing a FreeRTOS *\r
+ * tutorial book, reference manual, or both: *\r
+ * http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading\r
+ the FAQ page "My application does not run, what could be wrong?". Have you\r
+ defined configASSERT()?\r
+\r
+ http://www.FreeRTOS.org/support - In return for receiving this top quality\r
+ embedded software for free we request you assist our global community by\r
+ participating in the support forum.\r
+\r
+ http://www.FreeRTOS.org/training - Investing in training allows your team to\r
+ be as productive as possible as early as possible. Now you can receive\r
+ FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers\r
+ Ltd, and the world's leading authority on the world's leading RTOS.\r
+\r
+ http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
+ including FreeRTOS+Trace - an indispensable productivity tool, a DOS\r
+ compatible FAT file system, and our tiny thread aware UDP/IP stack.\r
+\r
+ http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.\r
+ Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.\r
+\r
+ http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High\r
+ Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS\r
+ licenses offer ticketed support, indemnification and commercial middleware.\r
+\r
+ http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
+ engineered and independently SIL3 certified version for use in safety and\r
+ mission critical applications that require provable dependability.\r
+\r
+ 1 tab == 4 spaces!\r
+*/\r
+\r
+\r
+#ifndef PORTMACRO_H\r
+#define PORTMACRO_H\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/*-----------------------------------------------------------\r
+ * Port specific definitions.\r
+ *\r
+ * The settings in this file configure FreeRTOS correctly for the\r
+ * given hardware and compiler.\r
+ *\r
+ * These settings should not be altered.\r
+ *-----------------------------------------------------------\r
+ */\r
+\r
+/* Type definitions. */\r
+#define portCHAR char\r
+#define portFLOAT float\r
+#define portDOUBLE double\r
+#define portLONG long\r
+#define portSHORT short\r
+#define portSTACK_TYPE uint32_t\r
+#define portBASE_TYPE long\r
+\r
+typedef portSTACK_TYPE StackType_t;\r
+typedef long BaseType_t;\r
+typedef unsigned long UBaseType_t;\r
+\r
+#if( configUSE_16_BIT_TICKS == 1 )\r
+ typedef uint16_t TickType_t;\r
+ #define portMAX_DELAY ( TickType_t ) 0xffff\r
+#else\r
+ typedef uint32_t TickType_t;\r
+ #define portMAX_DELAY ( TickType_t ) 0xffffffffUL\r
+\r
+ /* 32-bit tick type on a 32-bit architecture, so reads of the tick count do\r
+ not need to be guarded with a critical section. */\r
+ #define portTICK_TYPE_IS_ATOMIC 1\r
+#endif\r
+/*-----------------------------------------------------------*/\r
+\r
+/* MPU specific constants. */\r
+#define portUSING_MPU_WRAPPERS 1\r
+#define portPRIVILEGE_BIT ( 0x80000000UL )\r
+\r
+#define portMPU_REGION_READ_WRITE ( 0x03UL << 24UL )\r
+#define portMPU_REGION_PRIVILEGED_READ_ONLY ( 0x05UL << 24UL )\r
+#define portMPU_REGION_READ_ONLY ( 0x06UL << 24UL )\r
+#define portMPU_REGION_PRIVILEGED_READ_WRITE ( 0x01UL << 24UL )\r
+#define portMPU_REGION_CACHEABLE_BUFFERABLE ( 0x07UL << 16UL )\r
+#define portMPU_REGION_EXECUTE_NEVER ( 0x01UL << 28UL )\r
+\r
+#define portUNPRIVILEGED_FLASH_REGION ( 0UL )\r
+#define portPRIVILEGED_FLASH_REGION ( 1UL )\r
+#define portPRIVILEGED_RAM_REGION ( 2UL )\r
+#define portGENERAL_PERIPHERALS_REGION ( 3UL )\r
+#define portSTACK_REGION ( 4UL )\r
+#define portFIRST_CONFIGURABLE_REGION ( 5UL )\r
+#define portLAST_CONFIGURABLE_REGION ( 7UL )\r
+#define portNUM_CONFIGURABLE_REGIONS ( ( portLAST_CONFIGURABLE_REGION - portFIRST_CONFIGURABLE_REGION ) + 1 )\r
+#define portTOTAL_NUM_REGIONS ( portNUM_CONFIGURABLE_REGIONS + 1 ) /* Plus one to make space for the stack region. */\r
+\r
+void vPortSwitchToUserMode( void );\r
+#define portSWITCH_TO_USER_MODE() vPortSwitchToUserMode()\r
+\r
+typedef struct MPU_REGION_REGISTERS\r
+{\r
+ uint32_t ulRegionBaseAddress;\r
+ uint32_t ulRegionAttribute;\r
+} xMPU_REGION_REGISTERS;\r
+\r
+/* Plus 1 to create space for the stack region. */\r
+typedef struct MPU_SETTINGS\r
+{\r
+ xMPU_REGION_REGISTERS xRegion[ portTOTAL_NUM_REGIONS ];\r
+} xMPU_SETTINGS;\r
+\r
+/* Architecture specifics. */\r
+#define portSTACK_GROWTH ( -1 )\r
+#define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ )\r
+#define portBYTE_ALIGNMENT 8\r
+\r
+/* Constants used with memory barrier intrinsics. */\r
+#define portSY_FULL_READ_WRITE ( 15 )\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* SVC numbers for various services. */\r
+#define portSVC_START_SCHEDULER 0\r
+#define portSVC_YIELD 1\r
+#define portSVC_RAISE_PRIVILEGE 2\r
+\r
+/* Scheduler utilities. */\r
+\r
+#define portYIELD() __asm{ SVC portSVC_YIELD }\r
+#define portYIELD_WITHIN_API() \\r
+{ \\r
+ /* Set a PendSV to request a context switch. */ \\r
+ portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; \\r
+ \\r
+ /* Barriers are normally not required but do ensure the code is completely \\r
+ within the specified behaviour for the architecture. */ \\r
+ __dsb( portSY_FULL_READ_WRITE ); \\r
+ __isb( portSY_FULL_READ_WRITE ); \\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+#define portNVIC_INT_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000ed04 ) )\r
+#define portNVIC_PENDSVSET_BIT ( 1UL << 28UL )\r
+#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET\r
+#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Critical section management. */\r
+extern void vPortEnterCritical( void );\r
+extern void vPortExitCritical( void );\r
+\r
+#define portDISABLE_INTERRUPTS() vPortRaiseBASEPRI()\r
+#define portENABLE_INTERRUPTS() vPortSetBASEPRI(0)\r
+#define portENTER_CRITICAL() vPortEnterCritical()\r
+#define portEXIT_CRITICAL() vPortExitCritical()\r
+#define portSET_INTERRUPT_MASK_FROM_ISR() ulPortRaiseBASEPRI()\r
+#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) vPortSetBASEPRI(x)\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Architecture specific optimisations. */\r
+#ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION\r
+ #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1\r
+#endif\r
+\r
+#if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1\r
+\r
+ /* Check the configuration. */\r
+ #if( configMAX_PRIORITIES > 32 )\r
+ #error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32. It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice.\r
+ #endif\r
+\r
+ /* Store/clear the ready priorities in a bit map. */\r
+ #define portRECORD_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) |= ( 1UL << ( uxPriority ) )\r
+ #define portRESET_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) &= ~( 1UL << ( uxPriority ) )\r
+\r
+ /*-----------------------------------------------------------*/\r
+\r
+ #define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) uxTopPriority = ( 31UL - ( uint32_t ) __clz( ( uxReadyPriorities ) ) )\r
+\r
+#endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Task function macros as described on the FreeRTOS.org WEB site. These are\r
+not necessary for to use this port. They are defined so the common demo files\r
+(which build with all the ports) will build. */\r
+#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters )\r
+#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )\r
+/*-----------------------------------------------------------*/\r
+\r
+#ifdef configASSERT\r
+ void vPortValidateInterruptPriority( void );\r
+ #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID() vPortValidateInterruptPriority()\r
+#endif\r
+\r
+/* portNOP() is not required by this port. */\r
+#define portNOP()\r
+\r
+#define portINLINE __inline\r
+\r
+#ifndef portFORCE_INLINE\r
+ #define portFORCE_INLINE __forceinline\r
+#endif\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+static portFORCE_INLINE void vPortSetBASEPRI( uint32_t ulBASEPRI )\r
+{\r
+ __asm\r
+ {\r
+ /* Barrier instructions are not used as this function is only used to\r
+ lower the BASEPRI value. */\r
+ msr basepri, ulBASEPRI\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portFORCE_INLINE void vPortRaiseBASEPRI( void )\r
+{\r
+uint32_t ulNewBASEPRI = configMAX_SYSCALL_INTERRUPT_PRIORITY;\r
+\r
+ __asm\r
+ {\r
+ /* Set BASEPRI to the max syscall priority to effect a critical\r
+ section. */\r
+ msr basepri, ulNewBASEPRI\r
+ dsb\r
+ isb\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portFORCE_INLINE void vPortClearBASEPRIFromISR( void )\r
+{\r
+ __asm\r
+ {\r
+ /* Set BASEPRI to 0 so no interrupts are masked. This function is only\r
+ used to lower the mask in an interrupt, so memory barriers are not \r
+ used. */\r
+ msr basepri, #0\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portFORCE_INLINE uint32_t ulPortRaiseBASEPRI( void )\r
+{\r
+uint32_t ulReturn, ulNewBASEPRI = configMAX_SYSCALL_INTERRUPT_PRIORITY;\r
+\r
+ __asm\r
+ {\r
+ /* Set BASEPRI to the max syscall priority to effect a critical\r
+ section. */\r
+ mrs ulReturn, basepri\r
+ msr basepri, ulNewBASEPRI\r
+ dsb\r
+ isb\r
+ }\r
+\r
+ return ulReturn;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portFORCE_INLINE BaseType_t xPortIsInsideInterrupt( void )\r
+{\r
+uint32_t ulCurrentInterrupt;\r
+BaseType_t xReturn;\r
+\r
+ /* Obtain the number of the currently executing interrupt. */\r
+ __asm\r
+ {\r
+ mrs ulCurrentInterrupt, ipsr\r
+ }\r
+\r
+ if( ulCurrentInterrupt == 0 )\r
+ {\r
+ xReturn = pdFALSE;\r
+ }\r
+ else\r
+ {\r
+ xReturn = pdTRUE;\r
+ }\r
+\r
+ return xReturn;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Set the privilege level to user mode if xRunningPrivileged is false. */\r
+portFORCE_INLINE static void vPortResetPrivilege( BaseType_t xRunningPrivileged )\r
+{\r
+uint32_t ulReg;\r
+ \r
+ if( xRunningPrivileged != pdTRUE ) \r
+ {\r
+ __asm \r
+ {\r
+ mrs ulReg, control\r
+ orr ulReg, #1\r
+ msr control, ulReg\r
+ }\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* PORTMACRO_H */\r
+\r