mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Add Cortus port to produce V6.0.5.
This commit is contained in:
parent
6818a478c6
commit
f89b22f9d1
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#/*
|
#/*
|
||||||
# FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
# FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
#
|
#
|
||||||
# ***************************************************************************
|
# ***************************************************************************
|
||||||
# * *
|
# * *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,123 +1,123 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* If you are: *
|
* If you are: *
|
||||||
* *
|
* *
|
||||||
* + New to FreeRTOS, *
|
* + New to FreeRTOS, *
|
||||||
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
||||||
* + Looking for basic training, *
|
* + Looking for basic training, *
|
||||||
* + Wanting to improve your FreeRTOS skills and productivity *
|
* + Wanting to improve your FreeRTOS skills and productivity *
|
||||||
* *
|
* *
|
||||||
* then take a look at the FreeRTOS eBook *
|
* then take a look at the FreeRTOS eBook *
|
||||||
* *
|
* *
|
||||||
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
||||||
* http://www.FreeRTOS.org/Documentation *
|
* http://www.FreeRTOS.org/Documentation *
|
||||||
* *
|
* *
|
||||||
* A pdf reference manual is also available. Both are usually delivered *
|
* A pdf reference manual is also available. Both are usually delivered *
|
||||||
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
||||||
* and 8pm GMT (although please allow up to 24 hours in case of *
|
* and 8pm GMT (although please allow up to 24 hours in case of *
|
||||||
* exceptional circumstances). Thank you for your support! *
|
* exceptional circumstances). Thank you for your support! *
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||||
the terms of the GNU General Public License (version 2) as published by the
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
||||||
***NOTE*** The exception to the GPL is included to allow you to distribute
|
***NOTE*** The exception to the GPL is included to allow you to distribute
|
||||||
a combined work that includes FreeRTOS without being obliged to provide the
|
a combined work that includes FreeRTOS without being obliged to provide the
|
||||||
source code for proprietary components outside of the FreeRTOS kernel.
|
source code for proprietary components outside of the FreeRTOS kernel.
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
more details. You should have received a copy of the GNU General Public
|
more details. You should have received a copy of the GNU General Public
|
||||||
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
||||||
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
||||||
by writing to Richard Barry, contact details for whom are available on the
|
by writing to Richard Barry, contact details for whom are available on the
|
||||||
FreeRTOS WEB site.
|
FreeRTOS WEB site.
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||||
contact details.
|
contact details.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||||
critical systems.
|
critical systems.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||||
licensing and training services.
|
licensing and training services.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef FREERTOS_CONFIG_H
|
#ifndef FREERTOS_CONFIG_H
|
||||||
#define FREERTOS_CONFIG_H
|
#define FREERTOS_CONFIG_H
|
||||||
|
|
||||||
#include <machine/sfradr.h>
|
#include <machine/sfradr.h>
|
||||||
|
|
||||||
/*-----------------------------------------------------------
|
/*-----------------------------------------------------------
|
||||||
* Application specific definitions.
|
* Application specific definitions.
|
||||||
*
|
*
|
||||||
* These definitions should be adjusted for your particular hardware and
|
* These definitions should be adjusted for your particular hardware and
|
||||||
* application requirements.
|
* application requirements.
|
||||||
*
|
*
|
||||||
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
|
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
|
||||||
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
|
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
|
||||||
*
|
*
|
||||||
* See http://www.freertos.org/a00110.html.
|
* See http://www.freertos.org/a00110.html.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*----------------------------------------------------------*/
|
/*----------------------------------------------------------*/
|
||||||
|
|
||||||
#define configUSE_PREEMPTION 1
|
#define configUSE_PREEMPTION 1
|
||||||
#define configUSE_IDLE_HOOK 0
|
#define configUSE_IDLE_HOOK 0
|
||||||
#define configUSE_TICK_HOOK 0
|
#define configUSE_TICK_HOOK 0
|
||||||
#define configCPU_CLOCK_HZ ( ( unsigned long ) CLOCK_FREQUENCY )
|
#define configCPU_CLOCK_HZ ( ( unsigned long ) CLOCK_FREQUENCY )
|
||||||
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||||
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
||||||
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
|
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
|
||||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 32 * 1024 ) )
|
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 32 * 1024 ) )
|
||||||
#define configMAX_TASK_NAME_LEN ( 16 )
|
#define configMAX_TASK_NAME_LEN ( 16 )
|
||||||
#define configUSE_TRACE_FACILITY 0
|
#define configUSE_TRACE_FACILITY 0
|
||||||
#define configUSE_16_BIT_TICKS 0
|
#define configUSE_16_BIT_TICKS 0
|
||||||
#define configIDLE_SHOULD_YIELD 0
|
#define configIDLE_SHOULD_YIELD 0
|
||||||
#define configUSE_MALLOC_FAILED_HOOK 1
|
#define configUSE_MALLOC_FAILED_HOOK 1
|
||||||
#define configCHECK_FOR_STACK_OVERFLOW 1
|
#define configCHECK_FOR_STACK_OVERFLOW 1
|
||||||
|
|
||||||
/* Co-routine definitions. */
|
/* Co-routine definitions. */
|
||||||
#define configUSE_CO_ROUTINES 0
|
#define configUSE_CO_ROUTINES 0
|
||||||
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
|
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
|
||||||
|
|
||||||
/* Set the following definitions to 1 to include the API function, or zero
|
/* Set the following definitions to 1 to include the API function, or zero
|
||||||
to exclude the API function.
|
to exclude the API function.
|
||||||
We use --gc-sections when linking, so there is no harm is setting all of these to 1 */
|
We use --gc-sections when linking, so there is no harm is setting all of these to 1 */
|
||||||
|
|
||||||
#define INCLUDE_vTaskPrioritySet 1
|
#define INCLUDE_vTaskPrioritySet 1
|
||||||
#define INCLUDE_uxTaskPriorityGet 1
|
#define INCLUDE_uxTaskPriorityGet 1
|
||||||
#define INCLUDE_vTaskDelete 1
|
#define INCLUDE_vTaskDelete 1
|
||||||
#define INCLUDE_vTaskCleanUpResources 1
|
#define INCLUDE_vTaskCleanUpResources 1
|
||||||
#define INCLUDE_vTaskSuspend 1
|
#define INCLUDE_vTaskSuspend 1
|
||||||
#define INCLUDE_vTaskDelayUntil 1
|
#define INCLUDE_vTaskDelayUntil 1
|
||||||
#define INCLUDE_vTaskDelay 1
|
#define INCLUDE_vTaskDelay 1
|
||||||
|
|
||||||
#define BLOCKQ_1 1
|
#define BLOCKQ_1 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* A task is created to test the behaviour of the interrupt controller during
|
/* A task is created to test the behaviour of the interrupt controller during
|
||||||
context switches. This macro is just used to set a variable to true each time
|
context switches. This macro is just used to set a variable to true each time
|
||||||
the test task is switched out - the task itself needs to know when this happens
|
the test task is switched out - the task itself needs to know when this happens
|
||||||
in order to complete its tests. This macro will slow down the context switch
|
in order to complete its tests. This macro will slow down the context switch
|
||||||
and can normally be removed (just delete the whole macro, although doing so will
|
and can normally be removed (just delete the whole macro, although doing so will
|
||||||
cause the test task to indicate an error). */
|
cause the test task to indicate an error). */
|
||||||
extern void *xICTestTask;
|
extern void *xICTestTask;
|
||||||
extern volatile unsigned long ulTaskSwitchedOut;
|
extern volatile unsigned long ulTaskSwitchedOut;
|
||||||
#define traceTASK_SWITCHED_OUT() if( pxCurrentTCB == xICTestTask ) ulTaskSwitchedOut = pdTRUE
|
#define traceTASK_SWITCHED_OUT() if( pxCurrentTCB == xICTestTask ) ulTaskSwitchedOut = pdTRUE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* FREERTOS_CONFIG_H */
|
#endif /* FREERTOS_CONFIG_H */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,113 +1,113 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* If you are: *
|
* If you are: *
|
||||||
* *
|
* *
|
||||||
* + New to FreeRTOS, *
|
* + New to FreeRTOS, *
|
||||||
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
||||||
* + Looking for basic training, *
|
* + Looking for basic training, *
|
||||||
* + Wanting to improve your FreeRTOS skills and productivity *
|
* + Wanting to improve your FreeRTOS skills and productivity *
|
||||||
* *
|
* *
|
||||||
* then take a look at the FreeRTOS eBook *
|
* then take a look at the FreeRTOS eBook *
|
||||||
* *
|
* *
|
||||||
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
||||||
* http://www.FreeRTOS.org/Documentation *
|
* http://www.FreeRTOS.org/Documentation *
|
||||||
* *
|
* *
|
||||||
* A pdf reference manual is also available. Both are usually delivered *
|
* A pdf reference manual is also available. Both are usually delivered *
|
||||||
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
||||||
* and 8pm GMT (although please allow up to 24 hours in case of *
|
* and 8pm GMT (although please allow up to 24 hours in case of *
|
||||||
* exceptional circumstances). Thank you for your support! *
|
* exceptional circumstances). Thank you for your support! *
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||||
the terms of the GNU General Public License (version 2) as published by the
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
||||||
***NOTE*** The exception to the GPL is included to allow you to distribute
|
***NOTE*** The exception to the GPL is included to allow you to distribute
|
||||||
a combined work that includes FreeRTOS without being obliged to provide the
|
a combined work that includes FreeRTOS without being obliged to provide the
|
||||||
source code for proprietary components outside of the FreeRTOS kernel.
|
source code for proprietary components outside of the FreeRTOS kernel.
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
more details. You should have received a copy of the GNU General Public
|
more details. You should have received a copy of the GNU General Public
|
||||||
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
||||||
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
||||||
by writing to Richard Barry, contact details for whom are available on the
|
by writing to Richard Barry, contact details for whom are available on the
|
||||||
FreeRTOS WEB site.
|
FreeRTOS WEB site.
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||||
contact details.
|
contact details.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||||
critical systems.
|
critical systems.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||||
licensing and training services.
|
licensing and training services.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Scheduler includes. */
|
/* Scheduler includes. */
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "portable.h"
|
#include "portable.h"
|
||||||
|
|
||||||
/* Demo app includes. */
|
/* Demo app includes. */
|
||||||
#include "partest.h"
|
#include "partest.h"
|
||||||
#include "demoGpio.h"
|
#include "demoGpio.h"
|
||||||
|
|
||||||
#define partstNUM_LEDS ( 8 )
|
#define partstNUM_LEDS ( 8 )
|
||||||
#define partstALL_OUTPUTS_OFF ( ( unsigned long ) ~(0xFFFFFFFF << partstNUM_LEDS) )
|
#define partstALL_OUTPUTS_OFF ( ( unsigned long ) ~(0xFFFFFFFF << partstNUM_LEDS) )
|
||||||
|
|
||||||
static unsigned long ulLEDReg;
|
static unsigned long ulLEDReg;
|
||||||
|
|
||||||
/*-----------------------------------------------------------
|
/*-----------------------------------------------------------
|
||||||
* Simple parallel port IO routines.
|
* Simple parallel port IO routines.
|
||||||
*-----------------------------------------------------------*/
|
*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void SetLeds (unsigned int leds)
|
static void SetLeds (unsigned int leds)
|
||||||
{
|
{
|
||||||
gpio->out.leds = leds;
|
gpio->out.leds = leds;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vParTestInitialise( void )
|
void vParTestInitialise( void )
|
||||||
{
|
{
|
||||||
gpio->dir.leds = 0xff;
|
gpio->dir.leds = 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
|
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
|
||||||
{
|
{
|
||||||
/* Switch an LED on or off as requested. */
|
/* Switch an LED on or off as requested. */
|
||||||
if (uxLED < partstNUM_LEDS)
|
if (uxLED < partstNUM_LEDS)
|
||||||
{
|
{
|
||||||
if( xValue )
|
if( xValue )
|
||||||
{
|
{
|
||||||
ulLEDReg &= ~( 1 << uxLED );
|
ulLEDReg &= ~( 1 << uxLED );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ulLEDReg |= ( 1 << uxLED );
|
ulLEDReg |= ( 1 << uxLED );
|
||||||
}
|
}
|
||||||
|
|
||||||
SetLeds( ulLEDReg );
|
SetLeds( ulLEDReg );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
|
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
|
||||||
{
|
{
|
||||||
/* Toggle the state of the requested LED. */
|
/* Toggle the state of the requested LED. */
|
||||||
if (uxLED < partstNUM_LEDS)
|
if (uxLED < partstNUM_LEDS)
|
||||||
{
|
{
|
||||||
ulLEDReg ^= ( 1 << uxLED );
|
ulLEDReg ^= ( 1 << uxLED );
|
||||||
SetLeds( ulLEDReg );
|
SetLeds( ulLEDReg );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,319 +1,319 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* If you are: *
|
* If you are: *
|
||||||
* *
|
* *
|
||||||
* + New to FreeRTOS, *
|
* + New to FreeRTOS, *
|
||||||
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
||||||
* + Looking for basic training, *
|
* + Looking for basic training, *
|
||||||
* + Wanting to improve your FreeRTOS skills and productivity *
|
* + Wanting to improve your FreeRTOS skills and productivity *
|
||||||
* *
|
* *
|
||||||
* then take a look at the FreeRTOS eBook *
|
* then take a look at the FreeRTOS eBook *
|
||||||
* *
|
* *
|
||||||
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
||||||
* http://www.FreeRTOS.org/Documentation *
|
* http://www.FreeRTOS.org/Documentation *
|
||||||
* *
|
* *
|
||||||
* A pdf reference manual is also available. Both are usually delivered *
|
* A pdf reference manual is also available. Both are usually delivered *
|
||||||
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
||||||
* and 8pm GMT (although please allow up to 24 hours in case of *
|
* and 8pm GMT (although please allow up to 24 hours in case of *
|
||||||
* exceptional circumstances). Thank you for your support! *
|
* exceptional circumstances). Thank you for your support! *
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||||
the terms of the GNU General Public License (version 2) as published by the
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
||||||
***NOTE*** The exception to the GPL is included to allow you to distribute
|
***NOTE*** The exception to the GPL is included to allow you to distribute
|
||||||
a combined work that includes FreeRTOS without being obliged to provide the
|
a combined work that includes FreeRTOS without being obliged to provide the
|
||||||
source code for proprietary components outside of the FreeRTOS kernel.
|
source code for proprietary components outside of the FreeRTOS kernel.
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
more details. You should have received a copy of the GNU General Public
|
more details. You should have received a copy of the GNU General Public
|
||||||
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
||||||
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
||||||
by writing to Richard Barry, contact details for whom are available on the
|
by writing to Richard Barry, contact details for whom are available on the
|
||||||
FreeRTOS WEB site.
|
FreeRTOS WEB site.
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||||
contact details.
|
contact details.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||||
critical systems.
|
critical systems.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||||
licensing and training services.
|
licensing and training services.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Two test tasks that fill the CPU registers with known values before
|
* Two test tasks that fill the CPU registers with known values before
|
||||||
* continuously looping round checking that each register still contains its
|
* continuously looping round checking that each register still contains its
|
||||||
* expected value. Both tasks use a separate set of values, with an incorrect
|
* expected value. Both tasks use a separate set of values, with an incorrect
|
||||||
* value being found at any time being indicative of an error in the context
|
* value being found at any time being indicative of an error in the context
|
||||||
* switch mechanism. One of the tasks uses a yield instruction to increase the
|
* switch mechanism. One of the tasks uses a yield instruction to increase the
|
||||||
* test coverage. The nature of these tasks necessitates that they are written
|
* test coverage. The nature of these tasks necessitates that they are written
|
||||||
* in assembly code.
|
* in assembly code.
|
||||||
*/
|
*/
|
||||||
static void vRegTest1( void *pvParameters );
|
static void vRegTest1( void *pvParameters );
|
||||||
static void vRegTest2( void *pvParameters );
|
static void vRegTest2( void *pvParameters );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A task that tests the management of the Interrupt Controller (IC) during a
|
* A task that tests the management of the Interrupt Controller (IC) during a
|
||||||
* context switch. The state of the IC current mask level must be maintained
|
* context switch. The state of the IC current mask level must be maintained
|
||||||
* across context switches. Also, yields must be able to be performed when the
|
* across context switches. Also, yields must be able to be performed when the
|
||||||
* interrupt controller mask is not zero. This task tests both these
|
* interrupt controller mask is not zero. This task tests both these
|
||||||
* requirements.
|
* requirements.
|
||||||
*/
|
*/
|
||||||
static void prvICCheck1Task( void *pvParameters );
|
static void prvICCheck1Task( void *pvParameters );
|
||||||
|
|
||||||
/* Counters used to ensure the tasks are still running. */
|
/* Counters used to ensure the tasks are still running. */
|
||||||
static volatile unsigned long ulRegTest1Counter = 0UL, ulRegTest2Counter = 0UL, ulICTestCounter = 0UL;
|
static volatile unsigned long ulRegTest1Counter = 0UL, ulRegTest2Counter = 0UL, ulICTestCounter = 0UL;
|
||||||
|
|
||||||
/* Handle to the task that checks the interrupt controller behaviour. This is
|
/* Handle to the task that checks the interrupt controller behaviour. This is
|
||||||
used by the traceTASK_SWITCHED_OUT() macro, which is defined in
|
used by the traceTASK_SWITCHED_OUT() macro, which is defined in
|
||||||
FreeRTOSConfig.h and can be removed - it is just for the purpose of this test. */
|
FreeRTOSConfig.h and can be removed - it is just for the purpose of this test. */
|
||||||
xTaskHandle xICTestTask = NULL;
|
xTaskHandle xICTestTask = NULL;
|
||||||
|
|
||||||
/* Variable that gets set to pdTRUE by traceTASK_SWITCHED_OUT each time
|
/* Variable that gets set to pdTRUE by traceTASK_SWITCHED_OUT each time
|
||||||
is switched out. */
|
is switched out. */
|
||||||
volatile unsigned long ulTaskSwitchedOut;
|
volatile unsigned long ulTaskSwitchedOut;
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vStartRegTestTasks( void )
|
void vStartRegTestTasks( void )
|
||||||
{
|
{
|
||||||
xTaskCreate( vRegTest1, ( signed char * ) "RTest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
|
xTaskCreate( vRegTest1, ( signed char * ) "RTest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
|
||||||
xTaskCreate( vRegTest2, ( signed char * ) "RTest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
|
xTaskCreate( vRegTest2, ( signed char * ) "RTest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
|
||||||
xTaskCreate( prvICCheck1Task, ( signed char * ) "ICCheck", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xICTestTask );
|
xTaskCreate( prvICCheck1Task, ( signed char * ) "ICCheck", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xICTestTask );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void vRegTest1( void *pvParameters )
|
static void vRegTest1( void *pvParameters )
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" mov r2, #0x02 \n" /* Fill the registers with known values, r0 is always 0 and r1 is the stack pointer. */
|
" mov r2, #0x02 \n" /* Fill the registers with known values, r0 is always 0 and r1 is the stack pointer. */
|
||||||
" mov r3, #0x03 \n"
|
" mov r3, #0x03 \n"
|
||||||
" mov r4, #0x04 \n"
|
" mov r4, #0x04 \n"
|
||||||
" mov r5, #0x05 \n"
|
" mov r5, #0x05 \n"
|
||||||
" mov r6, #0x06 \n"
|
" mov r6, #0x06 \n"
|
||||||
" mov r7, #0x07 \n"
|
" mov r7, #0x07 \n"
|
||||||
" mov r8, #0x08 \n"
|
" mov r8, #0x08 \n"
|
||||||
" mov r9, #0x09 \n"
|
" mov r9, #0x09 \n"
|
||||||
" mov r10, #0x0a \n"
|
" mov r10, #0x0a \n"
|
||||||
" mov r11, #0x0b \n"
|
" mov r11, #0x0b \n"
|
||||||
" mov r12, #0x0c \n"
|
" mov r12, #0x0c \n"
|
||||||
" mov r13, #0x0d \n"
|
" mov r13, #0x0d \n"
|
||||||
" mov r14, #0x0e \n"
|
" mov r14, #0x0e \n"
|
||||||
" mov r15, #0x0f \n"
|
" mov r15, #0x0f \n"
|
||||||
" \n"
|
" \n"
|
||||||
"reg_check_loop_1: \n"
|
"reg_check_loop_1: \n"
|
||||||
" trap #31 \n"
|
" trap #31 \n"
|
||||||
" cmp r2, #0x02 \n" /* Check that each register still contains the expected value, jump to an infinite loop if an error is found. */
|
" cmp r2, #0x02 \n" /* Check that each register still contains the expected value, jump to an infinite loop if an error is found. */
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r3, #0x03 \n"
|
" cmp r3, #0x03 \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r4, #0x04 \n"
|
" cmp r4, #0x04 \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r5, #0x05 \n"
|
" cmp r5, #0x05 \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r6, #0x06 \n"
|
" cmp r6, #0x06 \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r7, #0x07 \n"
|
" cmp r7, #0x07 \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r8, #0x08 \n"
|
" cmp r8, #0x08 \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r9, #0x09 \n"
|
" cmp r9, #0x09 \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r10, #0x0a \n"
|
" cmp r10, #0x0a \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r11, #0x0b \n"
|
" cmp r11, #0x0b \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r12, #0x0c \n"
|
" cmp r12, #0x0c \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r13, #0x0d \n"
|
" cmp r13, #0x0d \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r14, #0x0e \n"
|
" cmp r14, #0x0e \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" cmp r15, #0x0f \n"
|
" cmp r15, #0x0f \n"
|
||||||
" bne.s reg_check_error_1 \n"
|
" bne.s reg_check_error_1 \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ld r2, [r0]+short(ulRegTest1Counter) \n" /* Increment the loop counter to show that this task is still running error free. */
|
" ld r2, [r0]+short(ulRegTest1Counter) \n" /* Increment the loop counter to show that this task is still running error free. */
|
||||||
" add r2, #1 \n"
|
" add r2, #1 \n"
|
||||||
" st r2, [r0]+short(ulRegTest1Counter) \n"
|
" st r2, [r0]+short(ulRegTest1Counter) \n"
|
||||||
" mov r2, #0x02 \n"
|
" mov r2, #0x02 \n"
|
||||||
" \n"
|
" \n"
|
||||||
" bra.s reg_check_loop_1 \n" /* Do it all again. */
|
" bra.s reg_check_loop_1 \n" /* Do it all again. */
|
||||||
" \n"
|
" \n"
|
||||||
"reg_check_error_1: \n"
|
"reg_check_error_1: \n"
|
||||||
"bra.s . \n"
|
"bra.s . \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void vRegTest2( void *pvParameters )
|
static void vRegTest2( void *pvParameters )
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" mov r2, #0x12 \n" /* Fill the registers with known values, r0 is always 0 and r1 is the stack pointer. */
|
" mov r2, #0x12 \n" /* Fill the registers with known values, r0 is always 0 and r1 is the stack pointer. */
|
||||||
" mov r3, #0x13 \n"
|
" mov r3, #0x13 \n"
|
||||||
" mov r4, #0x14 \n"
|
" mov r4, #0x14 \n"
|
||||||
" mov r5, #0x15 \n"
|
" mov r5, #0x15 \n"
|
||||||
" mov r6, #0x16 \n"
|
" mov r6, #0x16 \n"
|
||||||
" mov r7, #0x17 \n"
|
" mov r7, #0x17 \n"
|
||||||
" mov r8, #0x18 \n"
|
" mov r8, #0x18 \n"
|
||||||
" mov r9, #0x19 \n"
|
" mov r9, #0x19 \n"
|
||||||
" mov r10, #0x1a \n"
|
" mov r10, #0x1a \n"
|
||||||
" mov r11, #0x1b \n"
|
" mov r11, #0x1b \n"
|
||||||
" mov r12, #0x1c \n"
|
" mov r12, #0x1c \n"
|
||||||
" mov r13, #0x1d \n"
|
" mov r13, #0x1d \n"
|
||||||
" mov r14, #0x1e \n"
|
" mov r14, #0x1e \n"
|
||||||
" mov r15, #0x1f \n"
|
" mov r15, #0x1f \n"
|
||||||
" \n"
|
" \n"
|
||||||
"reg_check_loop_2: \n"
|
"reg_check_loop_2: \n"
|
||||||
" cmp r2, #0x12 \n" /* Check that each register still contains the expected value, jump to an infinite loop if an error is found. */
|
" cmp r2, #0x12 \n" /* Check that each register still contains the expected value, jump to an infinite loop if an error is found. */
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r3, #0x13 \n"
|
" cmp r3, #0x13 \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r4, #0x14 \n"
|
" cmp r4, #0x14 \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r5, #0x15 \n"
|
" cmp r5, #0x15 \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r6, #0x16 \n"
|
" cmp r6, #0x16 \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r7, #0x17 \n"
|
" cmp r7, #0x17 \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r8, #0x18 \n"
|
" cmp r8, #0x18 \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r9, #0x19 \n"
|
" cmp r9, #0x19 \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r10, #0x1a \n"
|
" cmp r10, #0x1a \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r11, #0x1b \n"
|
" cmp r11, #0x1b \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r12, #0x1c \n"
|
" cmp r12, #0x1c \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r13, #0x1d \n"
|
" cmp r13, #0x1d \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r14, #0x1e \n"
|
" cmp r14, #0x1e \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" cmp r15, #0x1f \n"
|
" cmp r15, #0x1f \n"
|
||||||
" bne.s reg_check_error_2 \n"
|
" bne.s reg_check_error_2 \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ld r2, [r0]+short(ulRegTest2Counter) \n" /* Increment the loop counter to show that this task is still running error free. */
|
" ld r2, [r0]+short(ulRegTest2Counter) \n" /* Increment the loop counter to show that this task is still running error free. */
|
||||||
" add r2, #1 \n"
|
" add r2, #1 \n"
|
||||||
" st r2, [r0]+short(ulRegTest2Counter) \n"
|
" st r2, [r0]+short(ulRegTest2Counter) \n"
|
||||||
" mov r2, #0x12 \n"
|
" mov r2, #0x12 \n"
|
||||||
" \n"
|
" \n"
|
||||||
" bra.s reg_check_loop_2 \n" /* Do it all again. */
|
" bra.s reg_check_loop_2 \n" /* Do it all again. */
|
||||||
" \n"
|
" \n"
|
||||||
"reg_check_error_2: \n"
|
"reg_check_error_2: \n"
|
||||||
"bra.s . \n"
|
"bra.s . \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void prvICCheck1Task( void *pvParameters )
|
static void prvICCheck1Task( void *pvParameters )
|
||||||
{
|
{
|
||||||
long lICCheckStatus = pdPASS;
|
long lICCheckStatus = pdPASS;
|
||||||
|
|
||||||
for( ;; )
|
for( ;; )
|
||||||
{
|
{
|
||||||
/* At this point the interrupt mask should be zero. */
|
/* At this point the interrupt mask should be zero. */
|
||||||
if( ic->cpl != 0 )
|
if( ic->cpl != 0 )
|
||||||
{
|
{
|
||||||
lICCheckStatus = pdFAIL;
|
lICCheckStatus = pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we yield here, it should still be 0 when the task next runs.
|
/* If we yield here, it should still be 0 when the task next runs.
|
||||||
ulTaskSwitchedOut is just used to check that a switch does actually
|
ulTaskSwitchedOut is just used to check that a switch does actually
|
||||||
happen. */
|
happen. */
|
||||||
ulTaskSwitchedOut = pdFALSE;
|
ulTaskSwitchedOut = pdFALSE;
|
||||||
taskYIELD();
|
taskYIELD();
|
||||||
if( ( ulTaskSwitchedOut != pdTRUE ) || ( ic->cpl != 0 ) )
|
if( ( ulTaskSwitchedOut != pdTRUE ) || ( ic->cpl != 0 ) )
|
||||||
{
|
{
|
||||||
lICCheckStatus = pdFAIL;
|
lICCheckStatus = pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the interrupt mask to portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1,
|
/* Set the interrupt mask to portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1,
|
||||||
before checking it is as expected. */
|
before checking it is as expected. */
|
||||||
taskENTER_CRITICAL();
|
taskENTER_CRITICAL();
|
||||||
if( ic->cpl != ( portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1 ) )
|
if( ic->cpl != ( portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1 ) )
|
||||||
{
|
{
|
||||||
lICCheckStatus = pdFAIL;
|
lICCheckStatus = pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we yield here, it should still be
|
/* If we yield here, it should still be
|
||||||
portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 10 when the task next runs. */
|
portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 10 when the task next runs. */
|
||||||
ulTaskSwitchedOut = pdFALSE;
|
ulTaskSwitchedOut = pdFALSE;
|
||||||
taskYIELD();
|
taskYIELD();
|
||||||
if( ( ulTaskSwitchedOut != pdTRUE ) || ( ic->cpl != ( portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1 ) ) )
|
if( ( ulTaskSwitchedOut != pdTRUE ) || ( ic->cpl != ( portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1 ) ) )
|
||||||
{
|
{
|
||||||
lICCheckStatus = pdFAIL;
|
lICCheckStatus = pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the interrupt mask to its default state. */
|
/* Return the interrupt mask to its default state. */
|
||||||
taskEXIT_CRITICAL();
|
taskEXIT_CRITICAL();
|
||||||
|
|
||||||
/* Just increment a loop counter so the check task knows if this task
|
/* Just increment a loop counter so the check task knows if this task
|
||||||
is still running or not. */
|
is still running or not. */
|
||||||
if( lICCheckStatus == pdPASS )
|
if( lICCheckStatus == pdPASS )
|
||||||
{
|
{
|
||||||
ulICTestCounter++;
|
ulICTestCounter++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
portBASE_TYPE xAreRegTestTasksStillRunning( void )
|
portBASE_TYPE xAreRegTestTasksStillRunning( void )
|
||||||
{
|
{
|
||||||
static unsigned long ulLastCounter1 = 0UL, ulLastCounter2 = 0UL, ulLastICTestCounter = 0UL;
|
static unsigned long ulLastCounter1 = 0UL, ulLastCounter2 = 0UL, ulLastICTestCounter = 0UL;
|
||||||
long lReturn;
|
long lReturn;
|
||||||
|
|
||||||
/* Check that both loop counters are still incrementing, indicating that
|
/* Check that both loop counters are still incrementing, indicating that
|
||||||
both reg test tasks are still running error free. */
|
both reg test tasks are still running error free. */
|
||||||
if( ulLastCounter1 == ulRegTest1Counter )
|
if( ulLastCounter1 == ulRegTest1Counter )
|
||||||
{
|
{
|
||||||
lReturn = pdFAIL;
|
lReturn = pdFAIL;
|
||||||
}
|
}
|
||||||
else if( ulLastCounter2 == ulRegTest2Counter )
|
else if( ulLastCounter2 == ulRegTest2Counter )
|
||||||
{
|
{
|
||||||
lReturn = pdFAIL;
|
lReturn = pdFAIL;
|
||||||
}
|
}
|
||||||
else if( ulLastICTestCounter == ulICTestCounter )
|
else if( ulLastICTestCounter == ulICTestCounter )
|
||||||
{
|
{
|
||||||
lReturn = pdFAIL;
|
lReturn = pdFAIL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
lReturn = pdPASS;
|
lReturn = pdPASS;
|
||||||
}
|
}
|
||||||
|
|
||||||
ulLastCounter1 = ulRegTest1Counter;
|
ulLastCounter1 = ulRegTest1Counter;
|
||||||
ulLastCounter2 = ulRegTest2Counter;
|
ulLastCounter2 = ulRegTest2Counter;
|
||||||
ulLastICTestCounter = ulICTestCounter;
|
ulLastICTestCounter = ulICTestCounter;
|
||||||
|
|
||||||
return lReturn;
|
return lReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,61 +1,61 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* If you are: *
|
* If you are: *
|
||||||
* *
|
* *
|
||||||
* + New to FreeRTOS, *
|
* + New to FreeRTOS, *
|
||||||
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
||||||
* + Looking for basic training, *
|
* + Looking for basic training, *
|
||||||
* + Wanting to improve your FreeRTOS skills and productivity *
|
* + Wanting to improve your FreeRTOS skills and productivity *
|
||||||
* *
|
* *
|
||||||
* then take a look at the FreeRTOS eBook *
|
* then take a look at the FreeRTOS eBook *
|
||||||
* *
|
* *
|
||||||
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
||||||
* http://www.FreeRTOS.org/Documentation *
|
* http://www.FreeRTOS.org/Documentation *
|
||||||
* *
|
* *
|
||||||
* A pdf reference manual is also available. Both are usually delivered *
|
* A pdf reference manual is also available. Both are usually delivered *
|
||||||
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
||||||
* and 8pm GMT (although please allow up to 24 hours in case of *
|
* and 8pm GMT (although please allow up to 24 hours in case of *
|
||||||
* exceptional circumstances). Thank you for your support! *
|
* exceptional circumstances). Thank you for your support! *
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||||
the terms of the GNU General Public License (version 2) as published by the
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
||||||
***NOTE*** The exception to the GPL is included to allow you to distribute
|
***NOTE*** The exception to the GPL is included to allow you to distribute
|
||||||
a combined work that includes FreeRTOS without being obliged to provide the
|
a combined work that includes FreeRTOS without being obliged to provide the
|
||||||
source code for proprietary components outside of the FreeRTOS kernel.
|
source code for proprietary components outside of the FreeRTOS kernel.
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
more details. You should have received a copy of the GNU General Public
|
more details. You should have received a copy of the GNU General Public
|
||||||
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
||||||
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
||||||
by writing to Richard Barry, contact details for whom are available on the
|
by writing to Richard Barry, contact details for whom are available on the
|
||||||
FreeRTOS WEB site.
|
FreeRTOS WEB site.
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||||
contact details.
|
contact details.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||||
critical systems.
|
critical systems.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||||
licensing and training services.
|
licensing and training services.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef REG_TEST_H
|
#ifndef REG_TEST_H
|
||||||
#define REG_TEST_H
|
#define REG_TEST_H
|
||||||
|
|
||||||
void vStartRegTestTasks( void );
|
void vStartRegTestTasks( void );
|
||||||
portBASE_TYPE xAreRegTestTasksStillRunning( void );
|
portBASE_TYPE xAreRegTestTasksStillRunning( void );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,294 +1,294 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* If you are: *
|
* If you are: *
|
||||||
* *
|
* *
|
||||||
* + New to FreeRTOS, *
|
* + New to FreeRTOS, *
|
||||||
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
||||||
* + Looking for basic training, *
|
* + Looking for basic training, *
|
||||||
* + Wanting to improve your FreeRTOS skills and productivity *
|
* + Wanting to improve your FreeRTOS skills and productivity *
|
||||||
* *
|
* *
|
||||||
* then take a look at the FreeRTOS eBook *
|
* then take a look at the FreeRTOS eBook *
|
||||||
* *
|
* *
|
||||||
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
||||||
* http://www.FreeRTOS.org/Documentation *
|
* http://www.FreeRTOS.org/Documentation *
|
||||||
* *
|
* *
|
||||||
* A pdf reference manual is also available. Both are usually delivered *
|
* A pdf reference manual is also available. Both are usually delivered *
|
||||||
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
||||||
* and 8pm GMT (although please allow up to 24 hours in case of *
|
* and 8pm GMT (although please allow up to 24 hours in case of *
|
||||||
* exceptional circumstances). Thank you for your support! *
|
* exceptional circumstances). Thank you for your support! *
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||||
the terms of the GNU General Public License (version 2) as published by the
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
||||||
***NOTE*** The exception to the GPL is included to allow you to distribute
|
***NOTE*** The exception to the GPL is included to allow you to distribute
|
||||||
a combined work that includes FreeRTOS without being obliged to provide the
|
a combined work that includes FreeRTOS without being obliged to provide the
|
||||||
source code for proprietary components outside of the FreeRTOS kernel.
|
source code for proprietary components outside of the FreeRTOS kernel.
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
more details. You should have received a copy of the GNU General Public
|
more details. You should have received a copy of the GNU General Public
|
||||||
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
||||||
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
||||||
by writing to Richard Barry, contact details for whom are available on the
|
by writing to Richard Barry, contact details for whom are available on the
|
||||||
FreeRTOS WEB site.
|
FreeRTOS WEB site.
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||||
contact details.
|
contact details.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||||
critical systems.
|
critical systems.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||||
licensing and training services.
|
licensing and training services.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates all the demo application tasks, then starts the scheduler.
|
* Creates all the demo application tasks, then starts the scheduler.
|
||||||
*
|
*
|
||||||
* Main.c also creates a task called "Check". This only executes every three
|
* Main.c also creates a task called "Check". This only executes every three
|
||||||
* seconds but has the highest priority so is guaranteed to get processor time.
|
* seconds but has the highest priority so is guaranteed to get processor time.
|
||||||
* Its main function is to check that all the other tasks are still operational.
|
* Its main function is to check that all the other tasks are still operational.
|
||||||
* Each task (other than the "flash" tasks) maintains a unique count that is
|
* Each task (other than the "flash" tasks) maintains a unique count that is
|
||||||
* incremented each time the task successfully completes its function. Should
|
* incremented each time the task successfully completes its function. Should
|
||||||
* any error occur within such a task the count is permanently halted. The
|
* any error occur within such a task the count is permanently halted. The
|
||||||
* check task inspects the count of each task to ensure it has changed since
|
* check task inspects the count of each task to ensure it has changed since
|
||||||
* the last time the check task executed. If all the count variables have
|
* the last time the check task executed. If all the count variables have
|
||||||
* changed all the tasks are still executing error free, and the check task
|
* changed all the tasks are still executing error free, and the check task
|
||||||
* toggles the on board LED. Should any task contain an error at any time
|
* toggles the on board LED. Should any task contain an error at any time
|
||||||
* the LED toggle rate will change from 3 seconds to 500ms.
|
* the LED toggle rate will change from 3 seconds to 500ms.
|
||||||
*
|
*
|
||||||
* NOTE: The demo application includes tasks that send and receive characters
|
* NOTE: The demo application includes tasks that send and receive characters
|
||||||
* over the UART. The characters sent by one task are received by another -
|
* over the UART. The characters sent by one task are received by another -
|
||||||
* with an error condition being flagged should any characters be missed or
|
* with an error condition being flagged should any characters be missed or
|
||||||
* received out of order. A loopback connector is required on the 9way D socket
|
* received out of order. A loopback connector is required on the 9way D socket
|
||||||
* for this mechanism to operation (pins 2 and 3 the socket should be connected
|
* for this mechanism to operation (pins 2 and 3 the socket should be connected
|
||||||
* together - a paper clip is normally sufficient).
|
* together - a paper clip is normally sufficient).
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Standard includes. */
|
/* Standard includes. */
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
/* Scheduler includes. */
|
/* Scheduler includes. */
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
|
|
||||||
/* Demo application includes. */
|
/* Demo application includes. */
|
||||||
#include "partest.h"
|
#include "partest.h"
|
||||||
#include "flash.h"
|
#include "flash.h"
|
||||||
#include "integer.h"
|
#include "integer.h"
|
||||||
#include "PollQ.h"
|
#include "PollQ.h"
|
||||||
#include "comtest2.h"
|
#include "comtest2.h"
|
||||||
#include "semtest.h"
|
#include "semtest.h"
|
||||||
#include "flop.h"
|
#include "flop.h"
|
||||||
#include "dynamic.h"
|
#include "dynamic.h"
|
||||||
#include "BlockQ.h"
|
#include "BlockQ.h"
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
#include "demoGpio.h"
|
#include "demoGpio.h"
|
||||||
#include "7seg.h"
|
#include "7seg.h"
|
||||||
#include "RegTest.h"
|
#include "RegTest.h"
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Constants for the ComTest tasks. */
|
/* Constants for the ComTest tasks. */
|
||||||
#define mainCOM_TEST_BAUD_RATE ( ( unsigned long ) 115200 )
|
#define mainCOM_TEST_BAUD_RATE ( ( unsigned long ) 115200 )
|
||||||
#define mainCOM_TEST_LED ( 5 )
|
#define mainCOM_TEST_LED ( 5 )
|
||||||
|
|
||||||
/* Priorities for the demo application tasks. */
|
/* Priorities for the demo application tasks. */
|
||||||
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
|
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
|
||||||
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
|
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
|
||||||
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||||
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
#define main7SEG_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
#define main7SEG_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||||
|
|
||||||
/* The rate at which the on board LED will toggle when there is/is not an
|
/* The rate at which the on board LED will toggle when there is/is not an
|
||||||
error. */
|
error. */
|
||||||
#define mainNO_ERROR_FLASH_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
|
#define mainNO_ERROR_FLASH_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
|
||||||
#define mainERROR_FLASH_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
|
#define mainERROR_FLASH_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
|
||||||
#define mainON_BOARD_LED_BIT ( ( unsigned long ) 7 )
|
#define mainON_BOARD_LED_BIT ( ( unsigned long ) 7 )
|
||||||
|
|
||||||
/* The size of the memory blocks allocated by the vMemCheckTask() task. */
|
/* The size of the memory blocks allocated by the vMemCheckTask() task. */
|
||||||
#define mainMEM_CHECK_SIZE_1 ( ( size_t ) 51 )
|
#define mainMEM_CHECK_SIZE_1 ( ( size_t ) 51 )
|
||||||
#define mainMEM_CHECK_SIZE_2 ( ( size_t ) 52 )
|
#define mainMEM_CHECK_SIZE_2 ( ( size_t ) 52 )
|
||||||
#define mainMEM_CHECK_SIZE_3 ( ( size_t ) 151 )
|
#define mainMEM_CHECK_SIZE_3 ( ( size_t ) 151 )
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks that all the demo application tasks are still executing without error
|
* Checks that all the demo application tasks are still executing without error
|
||||||
* - as described at the top of the file.
|
* - as described at the top of the file.
|
||||||
*/
|
*/
|
||||||
static long prvCheckOtherTasksAreStillRunning( void );
|
static long prvCheckOtherTasksAreStillRunning( void );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The task that executes at the highest priority and calls
|
* The task that executes at the highest priority and calls
|
||||||
* prvCheckOtherTasksAreStillRunning(). See the description at the top
|
* prvCheckOtherTasksAreStillRunning(). See the description at the top
|
||||||
* of the file.
|
* of the file.
|
||||||
*/
|
*/
|
||||||
static void vErrorChecks( void *pvParameters );
|
static void vErrorChecks( void *pvParameters );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Configure the processor for use with the Olimex demo board. This includes
|
* Configure the processor for use with the Olimex demo board. This includes
|
||||||
* setup for the I/O, system clock, and access timings.
|
* setup for the I/O, system clock, and access timings.
|
||||||
*/
|
*/
|
||||||
static void prvSetupHardware( void );
|
static void prvSetupHardware( void );
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Starts all the other tasks, then starts the scheduler.
|
* Starts all the other tasks, then starts the scheduler.
|
||||||
*/
|
*/
|
||||||
int main( void )
|
int main( void )
|
||||||
{
|
{
|
||||||
/* Setup the hardware for use with the Xilinx evaluation board. */
|
/* Setup the hardware for use with the Xilinx evaluation board. */
|
||||||
prvSetupHardware();
|
prvSetupHardware();
|
||||||
|
|
||||||
/* Start the demo/test application tasks. */
|
/* Start the demo/test application tasks. */
|
||||||
vStartIntegerMathTasks( tskIDLE_PRIORITY );
|
vStartIntegerMathTasks( tskIDLE_PRIORITY );
|
||||||
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
|
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
|
||||||
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
|
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
|
||||||
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
|
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
|
||||||
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
|
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
|
||||||
vStartDynamicPriorityTasks();
|
vStartDynamicPriorityTasks();
|
||||||
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
|
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
|
||||||
vStart7SegTasks( main7SEG_TASK_PRIORITY );
|
vStart7SegTasks( main7SEG_TASK_PRIORITY );
|
||||||
vStartRegTestTasks();
|
vStartRegTestTasks();
|
||||||
|
|
||||||
/* Start the check task - which is defined in this file. */
|
/* Start the check task - which is defined in this file. */
|
||||||
xTaskCreate( vErrorChecks, ( signed char * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
|
xTaskCreate( vErrorChecks, ( signed char * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
|
||||||
|
|
||||||
/* Now all the tasks have been started - start the scheduler. */
|
/* Now all the tasks have been started - start the scheduler. */
|
||||||
vTaskStartScheduler();
|
vTaskStartScheduler();
|
||||||
|
|
||||||
/* Should never reach here! */
|
/* Should never reach here! */
|
||||||
for( ;; );
|
for( ;; );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void vErrorChecks( void *pvParameters )
|
static void vErrorChecks( void *pvParameters )
|
||||||
{
|
{
|
||||||
portTickType xDelayPeriod = mainNO_ERROR_FLASH_PERIOD;
|
portTickType xDelayPeriod = mainNO_ERROR_FLASH_PERIOD;
|
||||||
|
|
||||||
/* Just to stop compiler warnings. */
|
/* Just to stop compiler warnings. */
|
||||||
( void ) pvParameters;
|
( void ) pvParameters;
|
||||||
|
|
||||||
/* Cycle for ever, delaying then checking all the other tasks are still
|
/* Cycle for ever, delaying then checking all the other tasks are still
|
||||||
operating without error. If an error is detected then the delay period
|
operating without error. If an error is detected then the delay period
|
||||||
is decreased from mainNO_ERROR_FLASH_PERIOD to mainERROR_FLASH_PERIOD so
|
is decreased from mainNO_ERROR_FLASH_PERIOD to mainERROR_FLASH_PERIOD so
|
||||||
the on board LED flash rate will increase. */
|
the on board LED flash rate will increase. */
|
||||||
|
|
||||||
for( ;; )
|
for( ;; )
|
||||||
{
|
{
|
||||||
/* Delay until it is time to execute again. */
|
/* Delay until it is time to execute again. */
|
||||||
vTaskDelay( xDelayPeriod );
|
vTaskDelay( xDelayPeriod );
|
||||||
|
|
||||||
/* Check all the standard demo application tasks are executing without
|
/* Check all the standard demo application tasks are executing without
|
||||||
error. */
|
error. */
|
||||||
if( prvCheckOtherTasksAreStillRunning() != pdPASS )
|
if( prvCheckOtherTasksAreStillRunning() != pdPASS )
|
||||||
{
|
{
|
||||||
/* An error has been detected in one of the tasks - flash faster. */
|
/* An error has been detected in one of the tasks - flash faster. */
|
||||||
xDelayPeriod = mainERROR_FLASH_PERIOD;
|
xDelayPeriod = mainERROR_FLASH_PERIOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The toggle rate of the LED depends on how long this task delays for.
|
/* The toggle rate of the LED depends on how long this task delays for.
|
||||||
An error reduces the delay period and so increases the toggle rate. */
|
An error reduces the delay period and so increases the toggle rate. */
|
||||||
vParTestToggleLED( mainON_BOARD_LED_BIT );
|
vParTestToggleLED( mainON_BOARD_LED_BIT );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void prvSetupHardware( void )
|
static void prvSetupHardware( void )
|
||||||
{
|
{
|
||||||
/* Initialise LED outputs. */
|
/* Initialise LED outputs. */
|
||||||
vParTestInitialise();
|
vParTestInitialise();
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static long prvCheckOtherTasksAreStillRunning( void )
|
static long prvCheckOtherTasksAreStillRunning( void )
|
||||||
{
|
{
|
||||||
long lReturn = pdPASS;
|
long lReturn = pdPASS;
|
||||||
|
|
||||||
/* Check all the demo tasks (other than the flash tasks) to ensure
|
/* Check all the demo tasks (other than the flash tasks) to ensure
|
||||||
that they are all still running, and that none of them have detected
|
that they are all still running, and that none of them have detected
|
||||||
an error. */
|
an error. */
|
||||||
|
|
||||||
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
|
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
|
||||||
{
|
{
|
||||||
lReturn = pdFAIL;
|
lReturn = pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( xAreComTestTasksStillRunning() != pdTRUE )
|
if( xAreComTestTasksStillRunning() != pdTRUE )
|
||||||
{
|
{
|
||||||
lReturn = pdFAIL;
|
lReturn = pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( xArePollingQueuesStillRunning() != pdTRUE )
|
if( xArePollingQueuesStillRunning() != pdTRUE )
|
||||||
{
|
{
|
||||||
lReturn = pdFAIL;
|
lReturn = pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
|
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
|
||||||
{
|
{
|
||||||
lReturn = pdFAIL;
|
lReturn = pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
|
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
|
||||||
{
|
{
|
||||||
lReturn = pdFAIL;
|
lReturn = pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( xAreBlockingQueuesStillRunning() != pdTRUE )
|
if( xAreBlockingQueuesStillRunning() != pdTRUE )
|
||||||
{
|
{
|
||||||
lReturn = pdFAIL;
|
lReturn = pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( xAreRegTestTasksStillRunning() != pdTRUE )
|
if( xAreRegTestTasksStillRunning() != pdTRUE )
|
||||||
{
|
{
|
||||||
lReturn = pdFAIL;
|
lReturn = pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return lReturn;
|
return lReturn;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName )
|
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName )
|
||||||
{
|
{
|
||||||
/* This function will be called if a task overflows its stack. Inspect
|
/* This function will be called if a task overflows its stack. Inspect
|
||||||
pxCurrentTCB to find the offending task if the overflow was sever enough
|
pxCurrentTCB to find the offending task if the overflow was sever enough
|
||||||
to corrupt the pcTaskName parameter. */
|
to corrupt the pcTaskName parameter. */
|
||||||
vParTestSetLED( 4, 1 );
|
vParTestSetLED( 4, 1 );
|
||||||
for( ;; );
|
for( ;; );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vApplicationMallocFailedHook( void )
|
void vApplicationMallocFailedHook( void )
|
||||||
{
|
{
|
||||||
/* This function will be called if a call to pvPortMalloc() fails to return
|
/* This function will be called if a call to pvPortMalloc() fails to return
|
||||||
the requested memory. pvPortMalloc() is called internally by the scheduler
|
the requested memory. pvPortMalloc() is called internally by the scheduler
|
||||||
whenever a task, queue or semaphore is created. */
|
whenever a task, queue or semaphore is created. */
|
||||||
vParTestSetLED( 4, 1 );
|
vParTestSetLED( 4, 1 );
|
||||||
for( ;; );
|
for( ;; );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Provide an exit function to prevent a whole load of standard library functions
|
/* Provide an exit function to prevent a whole load of standard library functions
|
||||||
being brought into the build. */
|
being brought into the build. */
|
||||||
void exit( int status )
|
void exit( int status )
|
||||||
{
|
{
|
||||||
for( ;; );
|
for( ;; );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,236 +1,236 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* If you are: *
|
* If you are: *
|
||||||
* *
|
* *
|
||||||
* + New to FreeRTOS, *
|
* + New to FreeRTOS, *
|
||||||
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
* + Wanting to learn FreeRTOS or multitasking in general quickly *
|
||||||
* + Looking for basic training, *
|
* + Looking for basic training, *
|
||||||
* + Wanting to improve your FreeRTOS skills and productivity *
|
* + Wanting to improve your FreeRTOS skills and productivity *
|
||||||
* *
|
* *
|
||||||
* then take a look at the FreeRTOS eBook *
|
* then take a look at the FreeRTOS eBook *
|
||||||
* *
|
* *
|
||||||
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
|
||||||
* http://www.FreeRTOS.org/Documentation *
|
* http://www.FreeRTOS.org/Documentation *
|
||||||
* *
|
* *
|
||||||
* A pdf reference manual is also available. Both are usually delivered *
|
* A pdf reference manual is also available. Both are usually delivered *
|
||||||
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
* to your inbox within 20 minutes to two hours when purchased between 8am *
|
||||||
* and 8pm GMT (although please allow up to 24 hours in case of *
|
* and 8pm GMT (although please allow up to 24 hours in case of *
|
||||||
* exceptional circumstances). Thank you for your support! *
|
* exceptional circumstances). Thank you for your support! *
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||||
the terms of the GNU General Public License (version 2) as published by the
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
||||||
***NOTE*** The exception to the GPL is included to allow you to distribute
|
***NOTE*** The exception to the GPL is included to allow you to distribute
|
||||||
a combined work that includes FreeRTOS without being obliged to provide the
|
a combined work that includes FreeRTOS without being obliged to provide the
|
||||||
source code for proprietary components outside of the FreeRTOS kernel.
|
source code for proprietary components outside of the FreeRTOS kernel.
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
more details. You should have received a copy of the GNU General Public
|
more details. You should have received a copy of the GNU General Public
|
||||||
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
License and the FreeRTOS license exception along with FreeRTOS; if not it
|
||||||
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
can be viewed here: http://www.freertos.org/a00114.html and also obtained
|
||||||
by writing to Richard Barry, contact details for whom are available on the
|
by writing to Richard Barry, contact details for whom are available on the
|
||||||
FreeRTOS WEB site.
|
FreeRTOS WEB site.
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, latest information, license and
|
http://www.FreeRTOS.org - Documentation, latest information, license and
|
||||||
contact details.
|
contact details.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - A version that is certified for use in safety
|
http://www.SafeRTOS.com - A version that is certified for use in safety
|
||||||
critical systems.
|
critical systems.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Commercial support, development, porting,
|
http://www.OpenRTOS.com - Commercial support, development, porting,
|
||||||
licensing and training services.
|
licensing and training services.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Basic interrupt driven serial port driver for uart1.
|
/* Basic interrupt driven serial port driver for uart1.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Standard includes. */
|
/* Standard includes. */
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
/* Kernel includes. */
|
/* Kernel includes. */
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
|
|
||||||
/* Demo application includes. */
|
/* Demo application includes. */
|
||||||
#include <machine/uart.h>
|
#include <machine/uart.h>
|
||||||
#include <machine/ic.h>
|
#include <machine/ic.h>
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#define comBLOCK_RETRY_TIME 10
|
#define comBLOCK_RETRY_TIME 10
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* The interrupt handlers are naked functions that call C handlers. The C
|
/* The interrupt handlers are naked functions that call C handlers. The C
|
||||||
handlers are marked as noinline to ensure they work correctly when the
|
handlers are marked as noinline to ensure they work correctly when the
|
||||||
optimiser is on. */
|
optimiser is on. */
|
||||||
void interrupt5_handler( void ) __attribute__((naked));
|
void interrupt5_handler( void ) __attribute__((naked));
|
||||||
static void prvTxHandler( void ) __attribute__((noinline));
|
static void prvTxHandler( void ) __attribute__((noinline));
|
||||||
void interrupt6_handler( void ) __attribute__((naked));
|
void interrupt6_handler( void ) __attribute__((naked));
|
||||||
static void prvRxHandler( void ) __attribute__((noinline));
|
static void prvRxHandler( void ) __attribute__((noinline));
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Queues used to hold received characters, and characters waiting to be
|
/* Queues used to hold received characters, and characters waiting to be
|
||||||
transmitted. */
|
transmitted. */
|
||||||
static xQueueHandle xRxedChars;
|
static xQueueHandle xRxedChars;
|
||||||
static xQueueHandle xCharsForTx;
|
static xQueueHandle xCharsForTx;
|
||||||
extern unsigned portBASE_TYPE *pxVectorTable;
|
extern unsigned portBASE_TYPE *pxVectorTable;
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
|
xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
|
||||||
{
|
{
|
||||||
/* Create the queues used to hold Rx and Tx characters. */
|
/* Create the queues used to hold Rx and Tx characters. */
|
||||||
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed char ) );
|
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed char ) );
|
||||||
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed char ) );
|
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed char ) );
|
||||||
|
|
||||||
if( ( xRxedChars ) && ( xCharsForTx ) )
|
if( ( xRxedChars ) && ( xCharsForTx ) )
|
||||||
{
|
{
|
||||||
/* Set up interrupts */
|
/* Set up interrupts */
|
||||||
/* tx interrupt will be enabled when we need to send something */
|
/* tx interrupt will be enabled when we need to send something */
|
||||||
uart1->tx_mask = 0;
|
uart1->tx_mask = 0;
|
||||||
uart1->rx_mask = 1;
|
uart1->rx_mask = 1;
|
||||||
irq[IRQ_UART1_TX].ien = 1;
|
irq[IRQ_UART1_TX].ien = 1;
|
||||||
irq[IRQ_UART1_TX].ipl = portSYSTEM_INTERRUPT_PRIORITY_LEVEL;
|
irq[IRQ_UART1_TX].ipl = portSYSTEM_INTERRUPT_PRIORITY_LEVEL;
|
||||||
irq[IRQ_UART1_RX].ien = 1;
|
irq[IRQ_UART1_RX].ien = 1;
|
||||||
irq[IRQ_UART1_RX].ipl = portSYSTEM_INTERRUPT_PRIORITY_LEVEL;
|
irq[IRQ_UART1_RX].ipl = portSYSTEM_INTERRUPT_PRIORITY_LEVEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ( xComPortHandle ) 0;
|
return ( xComPortHandle ) 0;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, portTickType xBlockTime )
|
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, portTickType xBlockTime )
|
||||||
{
|
{
|
||||||
/* The port handle is not required as this driver only supports uart1. */
|
/* The port handle is not required as this driver only supports uart1. */
|
||||||
(void) pxPort;
|
(void) pxPort;
|
||||||
|
|
||||||
/* Get the next character from the buffer. Return false if no characters
|
/* Get the next character from the buffer. Return false if no characters
|
||||||
are available, or arrive before xBlockTime expires. */
|
are available, or arrive before xBlockTime expires. */
|
||||||
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
|
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
|
||||||
{
|
{
|
||||||
return pdTRUE;
|
return pdTRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return pdFALSE;
|
return pdFALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )
|
void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
signed char *pChNext;
|
signed char *pChNext;
|
||||||
|
|
||||||
/* Send each character in the string, one at a time. */
|
/* Send each character in the string, one at a time. */
|
||||||
pChNext = ( signed char * )pcString;
|
pChNext = ( signed char * )pcString;
|
||||||
for( i = 0; i < usStringLength; i++ )
|
for( i = 0; i < usStringLength; i++ )
|
||||||
{
|
{
|
||||||
/* Block until character has been transmitted. */
|
/* Block until character has been transmitted. */
|
||||||
while( xSerialPutChar( pxPort, *pChNext, comBLOCK_RETRY_TIME ) != pdTRUE ); pChNext++;
|
while( xSerialPutChar( pxPort, *pChNext, comBLOCK_RETRY_TIME ) != pdTRUE ); pChNext++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, portTickType xBlockTime )
|
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, portTickType xBlockTime )
|
||||||
{
|
{
|
||||||
( void ) pxPort;
|
( void ) pxPort;
|
||||||
|
|
||||||
/* Place the character in the queue of characters to be transmitted. */
|
/* Place the character in the queue of characters to be transmitted. */
|
||||||
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
|
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
|
||||||
{
|
{
|
||||||
return pdFAIL;
|
return pdFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Turn on the Tx interrupt so the ISR will remove the character from the
|
/* Turn on the Tx interrupt so the ISR will remove the character from the
|
||||||
queue and send it. This does not need to be in a critical section as
|
queue and send it. This does not need to be in a critical section as
|
||||||
if the interrupt has already removed the character the next interrupt
|
if the interrupt has already removed the character the next interrupt
|
||||||
will simply turn off the Tx interrupt again. */
|
will simply turn off the Tx interrupt again. */
|
||||||
uart1->tx_mask = 1;
|
uart1->tx_mask = 1;
|
||||||
|
|
||||||
return pdPASS;
|
return pdPASS;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vSerialClose( xComPortHandle xPort )
|
void vSerialClose( xComPortHandle xPort )
|
||||||
{
|
{
|
||||||
/* Not supported as not required by the demo application. */
|
/* Not supported as not required by the demo application. */
|
||||||
( void ) xPort;
|
( void ) xPort;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* UART Tx interrupt handler. */
|
/* UART Tx interrupt handler. */
|
||||||
void interrupt5_handler( void )
|
void interrupt5_handler( void )
|
||||||
{
|
{
|
||||||
/* This is a naked function. */
|
/* This is a naked function. */
|
||||||
portSAVE_CONTEXT();
|
portSAVE_CONTEXT();
|
||||||
prvTxHandler();
|
prvTxHandler();
|
||||||
portRESTORE_CONTEXT();
|
portRESTORE_CONTEXT();
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void prvTxHandler( void )
|
static void prvTxHandler( void )
|
||||||
{
|
{
|
||||||
signed char cChar;
|
signed char cChar;
|
||||||
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
|
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
|
||||||
|
|
||||||
/* The interrupt was caused by the transmit fifo having space for at least one
|
/* The interrupt was caused by the transmit fifo having space for at least one
|
||||||
character. Are there any more characters to transmit? */
|
character. Are there any more characters to transmit? */
|
||||||
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )
|
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )
|
||||||
{
|
{
|
||||||
/* A character was retrieved from the queue so can be sent to the uart now. */
|
/* A character was retrieved from the queue so can be sent to the uart now. */
|
||||||
uart1->tx_data = cChar;
|
uart1->tx_data = cChar;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Queue empty, nothing to send so turn off the Tx interrupt. */
|
/* Queue empty, nothing to send so turn off the Tx interrupt. */
|
||||||
uart1->tx_mask = 0;
|
uart1->tx_mask = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If an event caused a task to unblock then we call "Yield from ISR" to
|
/* If an event caused a task to unblock then we call "Yield from ISR" to
|
||||||
ensure that the unblocked task is the task that executes when the interrupt
|
ensure that the unblocked task is the task that executes when the interrupt
|
||||||
completes if the unblocked task has a priority higher than the interrupted
|
completes if the unblocked task has a priority higher than the interrupted
|
||||||
task. */
|
task. */
|
||||||
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* UART Rx interrupt. */
|
/* UART Rx interrupt. */
|
||||||
void interrupt6_handler( void )
|
void interrupt6_handler( void )
|
||||||
{
|
{
|
||||||
portSAVE_CONTEXT();
|
portSAVE_CONTEXT();
|
||||||
prvRxHandler();
|
prvRxHandler();
|
||||||
portRESTORE_CONTEXT();
|
portRESTORE_CONTEXT();
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void prvRxHandler( void )
|
static void prvRxHandler( void )
|
||||||
{
|
{
|
||||||
signed char cChar;
|
signed char cChar;
|
||||||
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
|
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
|
||||||
|
|
||||||
/* The interrupt was caused by the receiver getting data. */
|
/* The interrupt was caused by the receiver getting data. */
|
||||||
cChar = uart1->rx_data;
|
cChar = uart1->rx_data;
|
||||||
|
|
||||||
xQueueSendFromISR(xRxedChars, &cChar, &xHigherPriorityTaskWoken );
|
xQueueSendFromISR(xRxedChars, &cChar, &xHigherPriorityTaskWoken );
|
||||||
|
|
||||||
/* If an event caused a task to unblock then we call "Yield from ISR" to
|
/* If an event caused a task to unblock then we call "Yield from ISR" to
|
||||||
ensure that the unblocked task is the task that executes when the interrupt
|
ensure that the unblocked task is the task that executes when the interrupt
|
||||||
completes if the unblocked task has a priority higher than the interrupted
|
completes if the unblocked task has a priority higher than the interrupted
|
||||||
task. */
|
task. */
|
||||||
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#/*
|
#/*
|
||||||
# FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
# FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
#
|
#
|
||||||
# ***************************************************************************
|
# ***************************************************************************
|
||||||
# * *
|
# * *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
|
FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue