Update the LM3Sxxxx_IAR_Keil demo so the IAR project writes to the UART and executes in QEMU.

pull/5/head
Richard Barry 5 years ago
parent cef6548e8b
commit 70dbc12579

@ -46,7 +46,7 @@
#define configCPU_CLOCK_HZ ( ( unsigned long ) 50000000 )
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 70 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 27000 ) )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 50 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 12 )
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0
@ -102,6 +102,11 @@ See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
version. */
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
/* The test that checks the trigger level on stream buffers requires an
allowable margin of error on slower processors (slower than the Win32
machine on which the test is developed). */
#define configSTREAM_BUFFER_TRIGGER_LEVEL_TEST_MARGIN 4
#ifdef __ICCARM__
void vAssertCalled( const char *pcFile, unsigned long ulLine );
#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ );

@ -11,7 +11,7 @@
<name>C-SPY</name>
<archiveVersion>2</archiveVersion>
<data>
<version>29</version>
<version>32</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -76,7 +76,7 @@
</option>
<option>
<name>OCDownloadVerifyAll</name>
<state>1</state>
<state>0</state>
</option>
<option>
<name>OCProductVersion</name>
@ -84,15 +84,15 @@
</option>
<option>
<name>OCDynDriverList</name>
<state>ARMSIM_ID</state>
<state>GDBSERVER_ID</state>
</option>
<option>
<name>OCLastSavedByProductVersion</name>
<state>8.22.1.15696</state>
<state>8.40.2.22864</state>
</option>
<option>
<name>UseFlashLoader</name>
<state>1</state>
<state>0</state>
</option>
<option>
<name>CLowLevel</name>
@ -182,14 +182,6 @@
<name>OCMulticoreNrOfCores</name>
<state>1</state>
</option>
<option>
<name>OCMulticoreMaster</name>
<state>0</state>
</option>
<option>
<name>OCMulticorePort</name>
<state>1024</state>
</option>
<option>
<name>OCMulticoreWorkspace</name>
<state></state>
@ -214,6 +206,22 @@
<name>MassEraseBeforeFlashing</name>
<state>0</state>
</option>
<option>
<name>OCMulticoreNrOfCoresSlave</name>
<state>1</state>
</option>
<option>
<name>OCMulticoreAMPConfigType</name>
<state>0</state>
</option>
<option>
<name>OCMulticoreSessionFile</name>
<state></state>
</option>
<option>
<name>OCTpiuBaseOption</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
@ -462,7 +470,7 @@
</option>
<option>
<name>TCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
<state>localhost,1234</state>
</option>
<option>
<name>DoLogfile</name>
@ -999,7 +1007,7 @@
<name>STLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>5</version>
<version>6</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -1097,7 +1105,7 @@
</option>
<option>
<name>CCSTLinkJtagSpeedList</name>
<version>0</version>
<version>2</version>
<state>0</state>
</option>
<option>
@ -1112,6 +1120,11 @@
<name>CCSTLinkUseServerSelect</name>
<state>0</state>
</option>
<option>
<name>CCSTLinkProbeList</name>
<version>1</version>
<state>2</state>
</option>
</data>
</settings>
<settings>
@ -1214,7 +1227,7 @@
<name>XDS100_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>6</version>
<version>8</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -1376,9 +1389,25 @@
<name>CCXds100SWOPort</name>
<state>1</state>
</option>
<option>
<name>CCXDSTargetVccEnable</name>
<state>0</state>
</option>
<option>
<name>CCXDSTargetVoltage</name>
<state>###Uninitialized###</state>
</option>
<option>
<name>OCXDSDigitalStatesConfigFile</name>
<state>1</state>
</option>
</data>
</settings>
<debuggerPlugins>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\AWS\AWS.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
@ -1395,18 +1424,38 @@
<file>$TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\HWRTOSplugin\HWRTOSplugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\RemedyRtosViewer\RemedyRtosViewer.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
@ -1427,10 +1476,6 @@
<file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
<loadFlag>0</loadFlag>

@ -11,7 +11,7 @@
<name>General</name>
<archiveVersion>3</archiveVersion>
<data>
<version>30</version>
<version>31</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -66,7 +66,7 @@
</option>
<option>
<name>OGLastSavedByProductVersion</name>
<state>8.22.1.15696</state>
<state>8.40.2.22864</state>
</option>
<option>
<name>GeneralEnableMisra</name>
@ -112,11 +112,11 @@
</option>
<option>
<name>RTConfigPath2</name>
<state>$TOOLKIT_DIR$\INC\c\DLib_Config_Normal.h</state>
<state>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</state>
</option>
<option>
<name>GBECoreSlave</name>
<version>26</version>
<version>27</version>
<state>38</state>
</option>
<option>
@ -133,7 +133,7 @@
</option>
<option>
<name>CoreVariant</name>
<version>26</version>
<version>27</version>
<state>38</state>
</option>
<option>
@ -156,7 +156,7 @@
</option>
<option>
<name>GFPUCoreSlave2</name>
<version>26</version>
<version>27</version>
<state>38</state>
</option>
<option>
@ -204,13 +204,18 @@
<name>TrustZone</name>
<state>0</state>
</option>
<option>
<name>TrustZoneModes</name>
<version>0</version>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>ICCARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>34</version>
<version>35</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -297,11 +302,11 @@
</option>
<option>
<name>IExtraOptionsCheck</name>
<state>0</state>
<state>1</state>
</option>
<option>
<name>IExtraOptions</name>
<state></state>
<state>--enum_is_int</state>
</option>
<option>
<name>CCLangConformance</name>
@ -464,6 +469,10 @@
<name>IccRTTI2</name>
<state>0</state>
</option>
<option>
<name>OICompilerExtraOption</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
@ -646,7 +655,7 @@
</option>
<option>
<name>OOCOutputFile</name>
<state></state>
<state>RTOSDemo.srec</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@ -684,7 +693,7 @@
<name>ILINK</name>
<archiveVersion>0</archiveVersion>
<data>
<version>20</version>
<version>23</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -997,6 +1006,30 @@
<name>IlinkLocaleSelect</name>
<state>1</state>
</option>
<option>
<name>IlinkTrustzoneImportLibraryOut</name>
<state>RTOSDemo_import_lib.o</state>
</option>
<option>
<name>OILinkExtraOption</name>
<state>1</state>
</option>
<option>
<name>IlinkRawBinaryFile2</name>
<state></state>
</option>
<option>
<name>IlinkRawBinarySymbol2</name>
<state></state>
</option>
<option>
<name>IlinkRawBinarySegment2</name>
<state></state>
</option>
<option>
<name>IlinkRawBinaryAlign2</name>
<state></state>
</option>
</data>
</settings>
<settings>

@ -10,7 +10,7 @@
<TargetName>FreeRTOS_Demo</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060528::V5.06 update 5 (build 528)::ARMCC</pCCUsed>
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
<uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>

@ -56,11 +56,12 @@
*
* "uIP" task - This is the task that handles the uIP stack. All TCP/IP
* processing is performed in this task.
*
* Use the following command to execute in QEMU from the IAR IDE:
* qemu-system-arm -machine lm3s6965evb -s -S -kernel [pat_to]\RTOSDemo.out
* and set IAR connect GDB server to "localhost,1234" in project debug options.
*/
/*************************************************************************
* Please ensure to read http://www.freertos.org/portlm3sx965.html
* which provides information on configuring and running this demo for the
@ -89,12 +90,14 @@ and the TCP/IP stack together cannot be accommodated with the 32K size limit. */
#include "hw_memmap.h"
#include "hw_types.h"
#include "hw_sysctl.h"
#include "hw_uart.h"
#include "sysctl.h"
#include "gpio.h"
#include "grlib.h"
#include "rit128x96x4.h"
#include "osram128x64x4.h"
#include "formike128x128x16.h"
#include "uart.h"
/* Demo app includes. */
#include "death.h"
@ -185,6 +188,7 @@ extern void vSetupHighFrequencyTimer( void );
void vApplicationStackOverflowHook( TaskHandle_t *pxTask, signed char *pcTaskName );
void vApplicationTickHook( void );
static void prvPrintString( const char * pcString );
/*-----------------------------------------------------------*/
@ -277,6 +281,11 @@ void prvSetupHardware( void )
GPIOPadConfigSet( GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3 ), GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD );
vParTestInitialise();
/* Initialise the UART - QEMU usage does not seem to require this
initialisation. */
SysCtlPeripheralEnable( SYSCTL_PERIPH_UART0 );
UARTEnable( UART0_BASE );
}
/*-----------------------------------------------------------*/
@ -343,8 +352,6 @@ portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
xMessage.pcMessage = "ERROR IN EVNT GRP";
}
configASSERT( strcmp( ( const char * ) xMessage.pcMessage, "PASS" ) == 0 );
/* Send the message to the OLED gatekeeper for display. */
xHigherPriorityTaskWoken = pdFALSE;
xQueueSendFromISR( xOLEDQueue, &xMessage, &xHigherPriorityTaskWoken );
@ -359,6 +366,16 @@ portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
}
/*-----------------------------------------------------------*/
static void prvPrintString( const char * pcString )
{
while( *pcString != 0x00 )
{
UARTCharPut( UART0_BASE, *pcString );
pcString++;
}
}
/*-----------------------------------------------------------*/
void vOLEDTask( void *pvParameters )
{
xOLEDMessage xMessage;
@ -431,6 +448,7 @@ void ( *vOLEDClear )( void ) = NULL;
high priority time test. */
sprintf( cMessage, "%s [%uns]", xMessage.pcMessage, ulMaxJitter * mainNS_PER_CLOCK );
vOLEDStringDraw( cMessage, 0, ulY, mainFULL_SCALE );
prvPrintString( cMessage );
}
}
/*-----------------------------------------------------------*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save