mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-12-10 21:55:07 -05:00
Fix mpu simulator demo (#805)
* All for the Demo/Cortex_MPU_Simulator_Keil_GCC GCC demo: + Update the linker script so the project builds now the heap is part of the privileged data. + Add simulator.ini to setup the simulator memory map when the debugger starts to prevent invalid access errors. + Set configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY to 1 in FreeRTOSConfig.h, then fix up resultant build errors. + Set configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS to 0 in FreeRTOSConfig.h, then fix up resultant build errors. * Fix compiler warning in Arm startup file. * Update comments in the file headers to pass the git checkin tests. * Update header comments to pass git checkin tests. * Second attempt to get file header comments correct for the check-in tests. * Third attempt to get the header comments correct. * Fix spelling. * Fix manifest check Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com> Co-authored-by: none <> Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
This commit is contained in:
parent
fc9396f576
commit
da3a1371db
17 changed files with 146 additions and 98 deletions
|
|
@ -1 +1 @@
|
||||||
Subproject commit 0fbca6ddabe898f9191c8af1f0285b000d492caf
|
Subproject commit c4f04ea87d044b4a95b18aa8ba50a3e707c603f6
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 2bd3f79b4e5070a3e3ec500980e86b5013fdcc62
|
Subproject commit 0289b787b745d0c675fb12ef002574d98d4b402e
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*
|
*
|
||||||
* https://www.FreeRTOS.org
|
* https://www.FreeRTOS.org
|
||||||
* https://aws.amazon.com/freertos
|
* https://github.com/FreeRTOS
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -47,7 +47,8 @@ extern "C" {
|
||||||
/* The MPU version of port.c includes and excludes functions depending on the
|
/* The MPU version of port.c includes and excludes functions depending on the
|
||||||
settings within this file. Therefore, to ensure all the functions in port.c
|
settings within this file. Therefore, to ensure all the functions in port.c
|
||||||
build, this configuration file has all options turned on. */
|
build, this configuration file has all options turned on. */
|
||||||
|
#define configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY 1
|
||||||
|
#define configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS 0
|
||||||
#define configUSE_PREEMPTION 1
|
#define configUSE_PREEMPTION 1
|
||||||
#define configTICK_RATE_HZ ( 1000 )
|
#define configTICK_RATE_HZ ( 1000 )
|
||||||
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
|
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
|
||||||
|
|
@ -57,7 +58,7 @@ build, this configuration file has all options turned on. */
|
||||||
#define configCPU_CLOCK_HZ 48000000
|
#define configCPU_CLOCK_HZ 48000000
|
||||||
#define configMAX_PRIORITIES ( 5 )
|
#define configMAX_PRIORITIES ( 5 )
|
||||||
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 120 )
|
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 120 )
|
||||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 16 * 1024 ) )
|
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 15 * 1024 ) )
|
||||||
#define configMAX_TASK_NAME_LEN ( 10 )
|
#define configMAX_TASK_NAME_LEN ( 10 )
|
||||||
#define configUSE_TRACE_FACILITY 1
|
#define configUSE_TRACE_FACILITY 1
|
||||||
#define configUSE_16_BIT_TICKS 0
|
#define configUSE_16_BIT_TICKS 0
|
||||||
|
|
@ -149,7 +150,7 @@ standard names. */
|
||||||
|
|
||||||
/* Normal assert() semantics without relying on the provision of an assert.h
|
/* Normal assert() semantics without relying on the provision of an assert.h
|
||||||
header file. */
|
header file. */
|
||||||
#define configASSERT( x ) if( ( x ) == 0UL ) { portDISABLE_INTERRUPTS(); for( ;; ); }
|
#define configASSERT( x ) if( ( x ) == 0 ) { portDISABLE_INTERRUPTS(); for( ;; ); }
|
||||||
|
|
||||||
/* LED not used at present, so just increment a variable to keep a count of the
|
/* LED not used at present, so just increment a variable to keep a count of the
|
||||||
number of times the LED would otherwise have been toggled. */
|
number of times the LED would otherwise have been toggled. */
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
<aExt></aExt>
|
<aExt></aExt>
|
||||||
<oExt>*.obj; *.o</oExt>
|
<oExt>*.obj; *.o</oExt>
|
||||||
<lExt>*.lib</lExt>
|
<lExt>*.lib</lExt>
|
||||||
<tExt>*.txt; *.h; *.inc</tExt>
|
<tExt>*.txt; *.h; *.inc; *.md</tExt>
|
||||||
<pExt>*.plm</pExt>
|
<pExt>*.plm</pExt>
|
||||||
<CppX>*.cpp</CppX>
|
<CppX>*.cpp</CppX>
|
||||||
<nMigrate>0</nMigrate>
|
<nMigrate>0</nMigrate>
|
||||||
|
|
@ -101,12 +101,14 @@
|
||||||
<sRunDeb>0</sRunDeb>
|
<sRunDeb>0</sRunDeb>
|
||||||
<sLrtime>0</sLrtime>
|
<sLrtime>0</sLrtime>
|
||||||
<bEvRecOn>1</bEvRecOn>
|
<bEvRecOn>1</bEvRecOn>
|
||||||
|
<bSchkAxf>0</bSchkAxf>
|
||||||
|
<bTchkAxf>0</bTchkAxf>
|
||||||
<nTsel>0</nTsel>
|
<nTsel>0</nTsel>
|
||||||
<sDll></sDll>
|
<sDll></sDll>
|
||||||
<sDllPa></sDllPa>
|
<sDllPa></sDllPa>
|
||||||
<sDlgDll></sDlgDll>
|
<sDlgDll></sDlgDll>
|
||||||
<sDlgPa></sDlgPa>
|
<sDlgPa></sDlgPa>
|
||||||
<sIfile></sIfile>
|
<sIfile>..\simulator.ini</sIfile>
|
||||||
<tDll></tDll>
|
<tDll></tDll>
|
||||||
<tDllPa></tDllPa>
|
<tDllPa></tDllPa>
|
||||||
<tDlgDll></tDlgDll>
|
<tDlgDll></tDlgDll>
|
||||||
|
|
@ -115,10 +117,15 @@
|
||||||
<pMon>BIN\UL2CM3.DLL</pMon>
|
<pMon>BIN\UL2CM3.DLL</pMon>
|
||||||
</DebugOpt>
|
</DebugOpt>
|
||||||
<TargetDriverDllRegistry>
|
<TargetDriverDllRegistry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>UL2CM3</Key>
|
||||||
|
<Name>-UV1115SAE -O2983 -S0 -C0 -P00 -N00("ARM CoreSight JTAG-DP") -D00(4BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO11 -FC1000 -FD20000000</Name>
|
||||||
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>DLGDARM</Key>
|
<Key>DLGDARM</Key>
|
||||||
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=1071,201,1536,501,0)</Name>
|
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=120,153,364,701,0)(1012=856,515,1331,829,0)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
|
|
@ -140,30 +147,8 @@
|
||||||
<Key>DLGUARM</Key>
|
<Key>DLGUARM</Key>
|
||||||
<Name>(105=-1,-1,-1,-1,0)</Name>
|
<Name>(105=-1,-1,-1,-1,0)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>UL2CM3</Key>
|
|
||||||
<Name>-UV1115SAE -O2983 -S0 -C0 -P00 -N00("ARM CoreSight JTAG-DP") -D00(4BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO11 -FN1 -FC1000 -FD20000000 -FF0NEW_DEVICE -FL080000 -FS00 -FP0($$Device:ARMCM4_FP$Device\ARM\Flash\NEW_DEVICE.FLM)</Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint>
|
<Breakpoint/>
|
||||||
<Bp>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>614</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>23164</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>1</BreakIfRCount>
|
|
||||||
<Filename>C:\Users\ribarry\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\stream_buffer.c</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression>\\RTOSDemo\../../../Source/stream_buffer.c\614</Expression>
|
|
||||||
</Bp>
|
|
||||||
</Breakpoint>
|
|
||||||
<WatchWindow1>
|
<WatchWindow1>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>0</count>
|
<count>0</count>
|
||||||
|
|
@ -173,14 +158,24 @@
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>1</count>
|
<count>1</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>pcStatusMessage</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>2</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>ulCycleCount</ItemText>
|
<ItemText>ulCycleCount</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>3</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>pxCurrentTCB</ItemText>
|
||||||
|
</Ww>
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
<MemoryWindow1>
|
<MemoryWindow1>
|
||||||
<Mm>
|
<Mm>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<SubType>2</SubType>
|
<SubType>2</SubType>
|
||||||
<ItemText>0x100000</ItemText>
|
<ItemText>0x20000598</ItemText>
|
||||||
<AccSizeX>4</AccSizeX>
|
<AccSizeX>4</AccSizeX>
|
||||||
</Mm>
|
</Mm>
|
||||||
</MemoryWindow1>
|
</MemoryWindow1>
|
||||||
|
|
@ -190,7 +185,7 @@
|
||||||
<DebugFlag>
|
<DebugFlag>
|
||||||
<trace>0</trace>
|
<trace>0</trace>
|
||||||
<periodic>1</periodic>
|
<periodic>1</periodic>
|
||||||
<aLwin>0</aLwin>
|
<aLwin>1</aLwin>
|
||||||
<aCover>0</aCover>
|
<aCover>0</aCover>
|
||||||
<aSer1>0</aSer1>
|
<aSer1>0</aSer1>
|
||||||
<aSer2>0</aSer2>
|
<aSer2>0</aSer2>
|
||||||
|
|
@ -207,7 +202,7 @@
|
||||||
<aLa>0</aLa>
|
<aLa>0</aLa>
|
||||||
<aPa1>0</aPa1>
|
<aPa1>0</aPa1>
|
||||||
<AscS4>0</AscS4>
|
<AscS4>0</AscS4>
|
||||||
<aSer4>1</aSer4>
|
<aSer4>0</aSer4>
|
||||||
<StkLoc>0</StkLoc>
|
<StkLoc>0</StkLoc>
|
||||||
<TrcWin>0</TrcWin>
|
<TrcWin>0</TrcWin>
|
||||||
<newCpu>0</newCpu>
|
<newCpu>0</newCpu>
|
||||||
|
|
@ -226,18 +221,12 @@
|
||||||
<pszMrulep></pszMrulep>
|
<pszMrulep></pszMrulep>
|
||||||
<pSingCmdsp></pSingCmdsp>
|
<pSingCmdsp></pSingCmdsp>
|
||||||
<pMultCmdsp></pMultCmdsp>
|
<pMultCmdsp></pMultCmdsp>
|
||||||
<DebugDescription>
|
|
||||||
<Enable>1</Enable>
|
|
||||||
<EnableLog>0</EnableLog>
|
|
||||||
<Protocol>2</Protocol>
|
|
||||||
<DbgClock>10000000</DbgClock>
|
|
||||||
</DebugDescription>
|
|
||||||
</TargetOption>
|
</TargetOption>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>System</GroupName>
|
<GroupName>System</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
|
@ -257,7 +246,7 @@
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>application_and_config</GroupName>
|
<GroupName>application_and_config</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
|
@ -301,7 +290,7 @@
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>FreeRTOS_Source</GroupName>
|
<GroupName>FreeRTOS_Source</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,12 @@
|
||||||
<TargetCommonOption>
|
<TargetCommonOption>
|
||||||
<Device>ARMCM4_FP</Device>
|
<Device>ARMCM4_FP</Device>
|
||||||
<Vendor>ARM</Vendor>
|
<Vendor>ARM</Vendor>
|
||||||
<PackID>ARM.CMSIS.5.0.1</PackID>
|
<PackID>ARM.CMSIS.5.8.0</PackID>
|
||||||
<PackURL>http://www.keil.com/pack/</PackURL>
|
<PackURL>http://www.keil.com/pack/</PackURL>
|
||||||
<Cpu>IROM(0x00000000,0x80000) IRAM(0x20000000,0x20000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ESEL ELITTLE</Cpu>
|
<Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ESEL ELITTLE</Cpu>
|
||||||
<FlashUtilSpec></FlashUtilSpec>
|
<FlashUtilSpec></FlashUtilSpec>
|
||||||
<StartupFile></StartupFile>
|
<StartupFile></StartupFile>
|
||||||
<FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0NEW_DEVICE -FS00 -FL080000 -FP0($$Device:ARMCM4_FP$Device\ARM\Flash\NEW_DEVICE.FLM))</FlashDriverDll>
|
<FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
|
||||||
<DeviceId>0</DeviceId>
|
<DeviceId>0</DeviceId>
|
||||||
<RegisterFile>$$Device:ARMCM4_FP$Device\ARM\ARMCM4\Include\ARMCM4_FP.h</RegisterFile>
|
<RegisterFile>$$Device:ARMCM4_FP$Device\ARM\ARMCM4\Include\ARMCM4_FP.h</RegisterFile>
|
||||||
<MemoryEnv></MemoryEnv>
|
<MemoryEnv></MemoryEnv>
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
<SLE66CMisc></SLE66CMisc>
|
<SLE66CMisc></SLE66CMisc>
|
||||||
<SLE66AMisc></SLE66AMisc>
|
<SLE66AMisc></SLE66AMisc>
|
||||||
<SLE66LinkerMisc></SLE66LinkerMisc>
|
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||||
<SFDFile>$$Device:ARMCM4_FP$Device\ARM\SVD\ARMCM4.svd</SFDFile>
|
<SFDFile></SFDFile>
|
||||||
<bCustSvd>0</bCustSvd>
|
<bCustSvd>0</bCustSvd>
|
||||||
<UseEnv>0</UseEnv>
|
<UseEnv>0</UseEnv>
|
||||||
<BinPath></BinPath>
|
<BinPath></BinPath>
|
||||||
|
|
@ -168,6 +168,8 @@
|
||||||
<hadXRAM>0</hadXRAM>
|
<hadXRAM>0</hadXRAM>
|
||||||
<uocXRam>0</uocXRam>
|
<uocXRam>0</uocXRam>
|
||||||
<RvdsVP>2</RvdsVP>
|
<RvdsVP>2</RvdsVP>
|
||||||
|
<RvdsMve>0</RvdsMve>
|
||||||
|
<RvdsCdeCp>0</RvdsCdeCp>
|
||||||
<hadIRAM2>0</hadIRAM2>
|
<hadIRAM2>0</hadIRAM2>
|
||||||
<hadIROM2>0</hadIROM2>
|
<hadIROM2>0</hadIROM2>
|
||||||
<OnChipMemories>
|
<OnChipMemories>
|
||||||
|
|
@ -209,7 +211,7 @@
|
||||||
<IROM>
|
<IROM>
|
||||||
<Type>1</Type>
|
<Type>1</Type>
|
||||||
<StartAddress>0x0</StartAddress>
|
<StartAddress>0x0</StartAddress>
|
||||||
<Size>0x80000</Size>
|
<Size>0x40000</Size>
|
||||||
</IROM>
|
</IROM>
|
||||||
<XRAM>
|
<XRAM>
|
||||||
<Type>0</Type>
|
<Type>0</Type>
|
||||||
|
|
@ -362,4 +364,13 @@
|
||||||
<files/>
|
<files/>
|
||||||
</RTE>
|
</RTE>
|
||||||
|
|
||||||
|
<LayerInfo>
|
||||||
|
<Layers>
|
||||||
|
<Layer>
|
||||||
|
<LayName>RTOSDemo</LayName>
|
||||||
|
<LayPrjMark>1</LayPrjMark>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
</LayerInfo>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*
|
*
|
||||||
* https://www.FreeRTOS.org
|
* https://www.FreeRTOS.org
|
||||||
* https://aws.amazon.com/freertos
|
* https://github.com/FreeRTOS
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -619,6 +619,7 @@ void HardFault_Handler( void )
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
|
".align 8 \n"
|
||||||
" tst lr, #4 \n"
|
" tst lr, #4 \n"
|
||||||
" ite eq \n"
|
" ite eq \n"
|
||||||
" mrseq r0, msp \n"
|
" mrseq r0, msp \n"
|
||||||
|
|
@ -636,6 +637,7 @@ void MemManage_Handler( void )
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
|
".align 8 \n"
|
||||||
" tst lr, #4 \n"
|
" tst lr, #4 \n"
|
||||||
" ite eq \n"
|
" ite eq \n"
|
||||||
" mrseq r0, msp \n"
|
" mrseq r0, msp \n"
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ MEMORY
|
||||||
|
|
||||||
/* Variables used by FreeRTOS-MPU. */
|
/* Variables used by FreeRTOS-MPU. */
|
||||||
_Privileged_Functions_Region_Size = 32K;
|
_Privileged_Functions_Region_Size = 32K;
|
||||||
_Privileged_Data_Region_Size = 512;
|
_Privileged_Data_Region_Size = 16384;
|
||||||
|
|
||||||
__FLASH_segment_start__ = ORIGIN( ROM );
|
__FLASH_segment_start__ = ORIGIN( ROM );
|
||||||
__FLASH_segment_end__ = __FLASH_segment_start__ + LENGTH( ROM );
|
__FLASH_segment_end__ = __FLASH_segment_start__ + LENGTH( ROM );
|
||||||
|
|
@ -90,6 +90,10 @@ SECTIONS
|
||||||
{
|
{
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
/* Place the FreeRTOS System Calls first in the unprivileged region. */
|
||||||
|
__syscalls_flash_start__ = .;
|
||||||
|
*(freertos_system_calls)
|
||||||
|
__syscalls_flash_end__ = .;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This section is here for convenience, to store the
|
* This section is here for convenience, to store the
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
* Version: V2.0
|
* Version: V2.0
|
||||||
* Date: 16 August 2013
|
* Date: 16 August 2013
|
||||||
*
|
*
|
||||||
/* Copyright (c) 2011 - 2013 ARM LIMITED
|
* Copyright (c) 2011 - 2013 ARM LIMITED
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
<aExt>*.s*; *.src; *.a*</aExt>
|
<aExt>*.s*; *.src; *.a*</aExt>
|
||||||
<oExt>*.obj; *.o</oExt>
|
<oExt>*.obj; *.o</oExt>
|
||||||
<lExt>*.lib</lExt>
|
<lExt>*.lib</lExt>
|
||||||
<tExt>*.txt; *.h; *.inc</tExt>
|
<tExt>*.txt; *.h; *.inc; *.md</tExt>
|
||||||
<pExt>*.plm</pExt>
|
<pExt>*.plm</pExt>
|
||||||
<CppX>*.cpp</CppX>
|
<CppX>*.cpp</CppX>
|
||||||
<nMigrate>0</nMigrate>
|
<nMigrate>0</nMigrate>
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,13 @@
|
||||||
<TargetName>RTOSDemo</TargetName>
|
<TargetName>RTOSDemo</TargetName>
|
||||||
<ToolsetNumber>0x4</ToolsetNumber>
|
<ToolsetNumber>0x4</ToolsetNumber>
|
||||||
<ToolsetName>ARM-ADS</ToolsetName>
|
<ToolsetName>ARM-ADS</ToolsetName>
|
||||||
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
|
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
|
||||||
<uAC6>0</uAC6>
|
<uAC6>0</uAC6>
|
||||||
<TargetOption>
|
<TargetOption>
|
||||||
<TargetCommonOption>
|
<TargetCommonOption>
|
||||||
<Device>ARMCM4_FP</Device>
|
<Device>ARMCM4_FP</Device>
|
||||||
<Vendor>ARM</Vendor>
|
<Vendor>ARM</Vendor>
|
||||||
<PackID>ARM.CMSIS.5.6.0</PackID>
|
<PackID>ARM.CMSIS.5.8.0</PackID>
|
||||||
<PackURL>http://www.keil.com/pack/</PackURL>
|
<PackURL>http://www.keil.com/pack/</PackURL>
|
||||||
<Cpu>IROM(0x00000000,0x80000) IRAM(0x20000000,0x20000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ESEL ELITTLE</Cpu>
|
<Cpu>IROM(0x00000000,0x80000) IRAM(0x20000000,0x20000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ESEL ELITTLE</Cpu>
|
||||||
<FlashUtilSpec></FlashUtilSpec>
|
<FlashUtilSpec></FlashUtilSpec>
|
||||||
|
|
@ -185,6 +185,7 @@
|
||||||
<uocXRam>0</uocXRam>
|
<uocXRam>0</uocXRam>
|
||||||
<RvdsVP>2</RvdsVP>
|
<RvdsVP>2</RvdsVP>
|
||||||
<RvdsMve>0</RvdsMve>
|
<RvdsMve>0</RvdsMve>
|
||||||
|
<RvdsCdeCp>0</RvdsCdeCp>
|
||||||
<hadIRAM2>0</hadIRAM2>
|
<hadIRAM2>0</hadIRAM2>
|
||||||
<hadIROM2>0</hadIROM2>
|
<hadIROM2>0</hadIROM2>
|
||||||
<StupSel>8</StupSel>
|
<StupSel>8</StupSel>
|
||||||
|
|
@ -351,7 +352,7 @@
|
||||||
<NoWarn>0</NoWarn>
|
<NoWarn>0</NoWarn>
|
||||||
<uSurpInc>0</uSurpInc>
|
<uSurpInc>0</uSurpInc>
|
||||||
<useXO>0</useXO>
|
<useXO>0</useXO>
|
||||||
<uClangAs>0</uClangAs>
|
<ClangAsOpt>4</ClangAsOpt>
|
||||||
<VariousControls>
|
<VariousControls>
|
||||||
<MiscControls></MiscControls>
|
<MiscControls></MiscControls>
|
||||||
<Define></Define>
|
<Define></Define>
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,11 @@
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*
|
*
|
||||||
* https://www.FreeRTOS.org
|
* https://www.FreeRTOS.org
|
||||||
* https://aws.amazon.com/freertos
|
* https://github.com/FreeRTOS
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/* FreeRTOS includes. */
|
/* FreeRTOS includes. */
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*
|
*
|
||||||
* https://www.FreeRTOS.org
|
* https://www.FreeRTOS.org
|
||||||
* https://aws.amazon.com/freertos
|
* https://github.com/FreeRTOS
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -134,8 +134,13 @@ static void prvCheckTask( void *pvParameters );
|
||||||
* Prototype for a task created in User mode using the original vTaskCreate()
|
* Prototype for a task created in User mode using the original vTaskCreate()
|
||||||
* API function. The task demonstrates the characteristics of such a task,
|
* API function. The task demonstrates the characteristics of such a task,
|
||||||
* before simply deleting itself.
|
* before simply deleting itself.
|
||||||
|
*
|
||||||
|
* It is not possible to use xTaskCreate() to create an unprivileged task since
|
||||||
|
* heap moved to the privileged data section, so the access tests implemented by
|
||||||
|
* this function are now called from an unprivileged register check task created
|
||||||
|
* using the xTaskCreateRestricted() API.
|
||||||
*/
|
*/
|
||||||
static void prvOldStyleUserModeTask( void *pvParameters );
|
static void prvOldStyleUserModeTask( void );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prototype for a task created in Privileged mode using the original
|
* Prototype for a task created in Privileged mode using the original
|
||||||
|
|
@ -258,7 +263,7 @@ stack size is defined in words, not bytes. */
|
||||||
automatically create an MPU region for the stack. The stack alignment must
|
automatically create an MPU region for the stack. The stack alignment must
|
||||||
match its size, so if 128 words are reserved for the stack then it must be
|
match its size, so if 128 words are reserved for the stack then it must be
|
||||||
aligned to ( 128 * 4 ) bytes. */
|
aligned to ( 128 * 4 ) bytes. */
|
||||||
static portSTACK_TYPE xCheckTaskStack[ mainCHECK_TASK_STACK_SIZE_WORDS ] mainALIGN_TO( mainCHECK_TASK_STACK_ALIGNMENT );
|
PRIVILEGED_DATA static portSTACK_TYPE xCheckTaskStack[ mainCHECK_TASK_STACK_SIZE_WORDS ] mainALIGN_TO( mainCHECK_TASK_STACK_ALIGNMENT );
|
||||||
|
|
||||||
/* Declare three arrays - an MPU region will be created for each array
|
/* Declare three arrays - an MPU region will be created for each array
|
||||||
using the TaskParameters_t structure below. THIS IS JUST TO DEMONSTRATE THE
|
using the TaskParameters_t structure below. THIS IS JUST TO DEMONSTRATE THE
|
||||||
|
|
@ -332,6 +337,8 @@ match its size, so if 128 words are reserved for the stack then it must be
|
||||||
aligned to ( 128 * 4 ) bytes. */
|
aligned to ( 128 * 4 ) bytes. */
|
||||||
static portSTACK_TYPE xRegTest1Stack[ mainREG_TEST_STACK_SIZE_WORDS ] mainALIGN_TO( mainREG_TEST_STACK_ALIGNMENT );
|
static portSTACK_TYPE xRegTest1Stack[ mainREG_TEST_STACK_SIZE_WORDS ] mainALIGN_TO( mainREG_TEST_STACK_ALIGNMENT );
|
||||||
static portSTACK_TYPE xRegTest2Stack[ mainREG_TEST_STACK_SIZE_WORDS ] mainALIGN_TO( mainREG_TEST_STACK_ALIGNMENT );
|
static portSTACK_TYPE xRegTest2Stack[ mainREG_TEST_STACK_SIZE_WORDS ] mainALIGN_TO( mainREG_TEST_STACK_ALIGNMENT );
|
||||||
|
static portSTACK_TYPE xRegTest3Stack[ mainREG_TEST_STACK_SIZE_WORDS ] mainALIGN_TO( mainREG_TEST_STACK_ALIGNMENT );
|
||||||
|
static portSTACK_TYPE xRegTest4Stack[ mainREG_TEST_STACK_SIZE_WORDS ] mainALIGN_TO( mainREG_TEST_STACK_ALIGNMENT );
|
||||||
|
|
||||||
/* Fill in a TaskParameters_t structure per reg test task to define the tasks. */
|
/* Fill in a TaskParameters_t structure per reg test task to define the tasks. */
|
||||||
static const TaskParameters_t xRegTest1Parameters =
|
static const TaskParameters_t xRegTest1Parameters =
|
||||||
|
|
@ -366,6 +373,40 @@ static TaskParameters_t xRegTest2Parameters =
|
||||||
{ 0x00, 0x00, 0x00 }
|
{ 0x00, 0x00, 0x00 }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static const TaskParameters_t xRegTest3Parameters =
|
||||||
|
{
|
||||||
|
prvRegTest3Task, /* pvTaskCode - the function that implements the task. */
|
||||||
|
"RegTest3", /* pcName */
|
||||||
|
mainREG_TEST_STACK_SIZE_WORDS, /* usStackDepth */
|
||||||
|
( void * ) configREG_TEST_TASK_3_PARAMETER, /* pvParameters - this value is just to test that the parameter is being passed into the task correctly. */
|
||||||
|
tskIDLE_PRIORITY | portPRIVILEGE_BIT, /* uxPriority - note that this task is created with privileges to demonstrate one method of passing a queue handle into the task. */
|
||||||
|
xRegTest3Stack, /* puxStackBuffer - the array to use as the task stack, as declared above. */
|
||||||
|
{ /* xRegions - this task does not use any non-stack data hence all members are zero. */
|
||||||
|
/* Base address Length Parameters */
|
||||||
|
{ 0x00, 0x00, 0x00 },
|
||||||
|
{ 0x00, 0x00, 0x00 },
|
||||||
|
{ 0x00, 0x00, 0x00 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static const TaskParameters_t xRegTest4Parameters =
|
||||||
|
{
|
||||||
|
prvRegTest4Task, /* pvTaskCode - the function that implements the task. */
|
||||||
|
"RegTest4", /* pcName */
|
||||||
|
mainREG_TEST_STACK_SIZE_WORDS, /* usStackDepth */
|
||||||
|
( void * ) configREG_TEST_TASK_4_PARAMETER, /* pvParameters - this value is just to test that the parameter is being passed into the task correctly. */
|
||||||
|
tskIDLE_PRIORITY | portPRIVILEGE_BIT, /* uxPriority - note that this task is created with privileges to demonstrate one method of passing a queue handle into the task. */
|
||||||
|
xRegTest4Stack, /* puxStackBuffer - the array to use as the task stack, as declared above. */
|
||||||
|
{ /* xRegions - this task does not use any non-stack data hence all members are zero. */
|
||||||
|
/* Base address Length Parameters */
|
||||||
|
{ 0x00, 0x00, 0x00 },
|
||||||
|
{ 0x00, 0x00, 0x00 },
|
||||||
|
{ 0x00, 0x00, 0x00 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
/* Configures the task that is deleted. ---------------------*/
|
/* Configures the task that is deleted. ---------------------*/
|
||||||
|
|
@ -428,16 +469,6 @@ int main( void )
|
||||||
get deleted in the idle task hook. */
|
get deleted in the idle task hook. */
|
||||||
xTaskCreateRestricted( &xTaskToDeleteParameters, &xTaskToDelete );
|
xTaskCreateRestricted( &xTaskToDeleteParameters, &xTaskToDelete );
|
||||||
|
|
||||||
/* Create the tasks that are created using the original xTaskCreate() API
|
|
||||||
function. */
|
|
||||||
xTaskCreate( prvOldStyleUserModeTask, /* The function that implements the task. */
|
|
||||||
"Task1", /* Text name for the task. */
|
|
||||||
100, /* Stack depth in words. */
|
|
||||||
NULL, /* Task parameters. */
|
|
||||||
3, /* Priority and mode (user in this case). */
|
|
||||||
NULL /* Handle. */
|
|
||||||
);
|
|
||||||
|
|
||||||
xTaskCreate( prvOldStylePrivilegedModeTask, /* The function that implements the task. */
|
xTaskCreate( prvOldStylePrivilegedModeTask, /* The function that implements the task. */
|
||||||
"Task2", /* Text name for the task. */
|
"Task2", /* Text name for the task. */
|
||||||
100, /* Stack depth in words. */
|
100, /* Stack depth in words. */
|
||||||
|
|
@ -448,8 +479,8 @@ int main( void )
|
||||||
|
|
||||||
/* Create the third and fourth register check tasks, as described at the top
|
/* Create the third and fourth register check tasks, as described at the top
|
||||||
of this file. */
|
of this file. */
|
||||||
xTaskCreate( prvRegTest3Task, "Reg3", configMINIMAL_STACK_SIZE, configREG_TEST_TASK_3_PARAMETER, tskIDLE_PRIORITY, NULL );
|
xTaskCreateRestricted( &xRegTest3Parameters, NULL );
|
||||||
xTaskCreate( prvRegTest4Task, "Reg4", configMINIMAL_STACK_SIZE, configREG_TEST_TASK_4_PARAMETER, tskIDLE_PRIORITY, NULL );
|
xTaskCreateRestricted( &xRegTest4Parameters, NULL );
|
||||||
|
|
||||||
/* Create and start the software timer. */
|
/* Create and start the software timer. */
|
||||||
xTimer = xTimerCreate( "Timer", /* Test name for the timer. */
|
xTimer = xTimerCreate( "Timer", /* Test name for the timer. */
|
||||||
|
|
@ -762,8 +793,12 @@ static void prvTaskToDelete( void *pvParameters )
|
||||||
/* Check the enter and exit critical macros are working correctly. If the
|
/* Check the enter and exit critical macros are working correctly. If the
|
||||||
SVC priority is below configMAX_SYSCALL_INTERRUPT_PRIORITY then this will
|
SVC priority is below configMAX_SYSCALL_INTERRUPT_PRIORITY then this will
|
||||||
fault. */
|
fault. */
|
||||||
|
#if( configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS == 1 )
|
||||||
|
{
|
||||||
taskENTER_CRITICAL();
|
taskENTER_CRITICAL();
|
||||||
taskEXIT_CRITICAL();
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Exercise the API of various RTOS objects. */
|
/* Exercise the API of various RTOS objects. */
|
||||||
prvExerciseEventGroupAPI();
|
prvExerciseEventGroupAPI();
|
||||||
|
|
@ -940,7 +975,7 @@ volatile uint32_t ulReadData;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void prvOldStyleUserModeTask( void *pvParameters )
|
static void prvOldStyleUserModeTask( void )
|
||||||
{
|
{
|
||||||
/*const volatile uint32_t *pulStandardPeripheralRegister = ( volatile uint32_t * ) 0x40000000;*/
|
/*const volatile uint32_t *pulStandardPeripheralRegister = ( volatile uint32_t * ) 0x40000000;*/
|
||||||
volatile const uint32_t *pul;
|
volatile const uint32_t *pul;
|
||||||
|
|
@ -951,8 +986,6 @@ compiler warnings when the tests that use the variable are also commented out. *
|
||||||
/* extern uint32_t __privileged_functions_start__[]; */
|
/* extern uint32_t __privileged_functions_start__[]; */
|
||||||
/* const volatile uint32_t *pulSystemPeripheralRegister = ( volatile uint32_t * ) 0xe000e014; */
|
/* const volatile uint32_t *pulSystemPeripheralRegister = ( volatile uint32_t * ) 0xe000e014; */
|
||||||
|
|
||||||
( void ) pvParameters;
|
|
||||||
|
|
||||||
/* This task is created in User mode using the original xTaskCreate() API
|
/* This task is created in User mode using the original xTaskCreate() API
|
||||||
function. It should have access to all Flash and RAM except that marked
|
function. It should have access to all Flash and RAM except that marked
|
||||||
as Privileged access only. Reading from the start and end of the non-
|
as Privileged access only. Reading from the start and end of the non-
|
||||||
|
|
@ -996,11 +1029,6 @@ compiler warnings when the tests that use the variable are also commented out. *
|
||||||
/*pul = __privileged_data_end__ - 1;
|
/*pul = __privileged_data_end__ - 1;
|
||||||
ulReadData = *pul;*/
|
ulReadData = *pul;*/
|
||||||
|
|
||||||
/* Must not just run off the end of a task function, so delete this task.
|
|
||||||
Note that because this task was created using xTaskCreate() the stack was
|
|
||||||
allocated dynamically and I have not included any code to free it again. */
|
|
||||||
vTaskDelete( NULL );
|
|
||||||
|
|
||||||
( void ) ulReadData;
|
( void ) ulReadData;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
@ -1199,6 +1227,12 @@ static void prvRegTest3Task( void *pvParameters )
|
||||||
in correctly. */
|
in correctly. */
|
||||||
if( pvParameters == configREG_TEST_TASK_3_PARAMETER )
|
if( pvParameters == configREG_TEST_TASK_3_PARAMETER )
|
||||||
{
|
{
|
||||||
|
/* Run the unprivileged mode access tests that used to be executed
|
||||||
|
form an unprivileged task created using the xTaskCreate() API.
|
||||||
|
Since the heap moved to the privileged data section xTaskCreate() can
|
||||||
|
no longer be used to create unprivileged tasks. */
|
||||||
|
prvOldStyleUserModeTask();
|
||||||
|
|
||||||
/* Start the part of the test that is written in assembler. */
|
/* Start the part of the test that is written in assembler. */
|
||||||
vRegTest3Implementation();
|
vRegTest3Implementation();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
MAP 0x00000000, 0x00FFFFFF CLEAR
|
||||||
|
MAP 0x20000000, 0x20FFFFFF CLEAR
|
||||||
|
MAP 0x00000000, 0x0007FFFF READ EXEC
|
||||||
|
MAP 0x20000000, 0x20007FFF READ WRITE EXEC
|
||||||
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 475d942d06bc38007e266ce42686842649047041
|
Subproject commit e21b617e4c0516fd64ac7cb1352a7cde81b571bc
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit dfb7cc9b9c680218eef040ac31e31df86b0b57bc
|
Subproject commit 109ef4d0f8973aa4e624cc3a4048c88ea048e0a4
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit d5a10e45958148d437ae5096835a118be58e6df9
|
Subproject commit 356fff8028734dc50a46972b2e315e2871b0a12e
|
||||||
10
manifest.yml
10
manifest.yml
|
|
@ -4,7 +4,7 @@ description: "This is the standard distribution of FreeRTOS."
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: "FreeRTOS-Kernel"
|
- name: "FreeRTOS-Kernel"
|
||||||
version: "d5a10e459"
|
version: "356fff802"
|
||||||
repository:
|
repository:
|
||||||
type: "git"
|
type: "git"
|
||||||
url: "https://github.com/FreeRTOS/FreeRTOS-Kernel.git"
|
url: "https://github.com/FreeRTOS/FreeRTOS-Kernel.git"
|
||||||
|
|
@ -32,7 +32,7 @@ dependencies:
|
||||||
path: "FreeRTOS-Plus/Source/AWS/sigv4"
|
path: "FreeRTOS-Plus/Source/AWS/sigv4"
|
||||||
|
|
||||||
- name: "coreHTTP"
|
- name: "coreHTTP"
|
||||||
version: "0fbca6d"
|
version: "v2.1.0"
|
||||||
repository:
|
repository:
|
||||||
type: "git"
|
type: "git"
|
||||||
url: "https://github.com/FreeRTOS/coreHTTP.git"
|
url: "https://github.com/FreeRTOS/coreHTTP.git"
|
||||||
|
|
@ -116,21 +116,21 @@ dependencies:
|
||||||
path: "FreeRTOS-Plus/Source/Application-Protocols/coreSNTP"
|
path: "FreeRTOS-Plus/Source/Application-Protocols/coreSNTP"
|
||||||
|
|
||||||
- name: "FreeRTOS-Community-Supported-Demos"
|
- name: "FreeRTOS-Community-Supported-Demos"
|
||||||
version: "475d942"
|
version: "e21b617"
|
||||||
repository:
|
repository:
|
||||||
type: "git"
|
type: "git"
|
||||||
url: "https://github.com/FreeRTOS/FreeRTOS-Community-Supported-Demos"
|
url: "https://github.com/FreeRTOS/FreeRTOS-Community-Supported-Demos"
|
||||||
path: "FreeRTOS/Demo/ThirdParty/Community-Supported-Demos"
|
path: "FreeRTOS/Demo/ThirdParty/Community-Supported-Demos"
|
||||||
|
|
||||||
- name: "FreeRTOS-Partner-Supported-Demos"
|
- name: "FreeRTOS-Partner-Supported-Demos"
|
||||||
version: "dfb7cc9"
|
version: "109ef4d"
|
||||||
repository:
|
repository:
|
||||||
type: "git"
|
type: "git"
|
||||||
url: "https://github.com/FreeRTOS/FreeRTOS-Partner-Supported-Demos"
|
url: "https://github.com/FreeRTOS/FreeRTOS-Partner-Supported-Demos"
|
||||||
path: "FreeRTOS/Demo/ThirdParty/Partner-Supported-Demos"
|
path: "FreeRTOS/Demo/ThirdParty/Partner-Supported-Demos"
|
||||||
|
|
||||||
- name: "FreeRTOS-Cellular-Interface"
|
- name: "FreeRTOS-Cellular-Interface"
|
||||||
version: "2bd3f79"
|
version: "v1.2.0"
|
||||||
repository:
|
repository:
|
||||||
type: "git"
|
type: "git"
|
||||||
url: "https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface.git"
|
url: "https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface.git"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue