reducing size
This commit is contained in:
parent
3df4ecfa1d
commit
422d4123dc
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +0,0 @@
|
|||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on $datetime for $projectname by <a href="http://www.doxygen.org/index.html"><img class="footer" src="$relpath$doxygen.png" alt="doxygen"/></a> $doxygenversion</small></address>
|
||||
</body>
|
||||
</html>
|
|
@ -1,21 +0,0 @@
|
|||
<!-- HTML footer for doxygen 1.8.8-->
|
||||
<!-- start footer part -->
|
||||
<!--BEGIN GENERATE_TREEVIEW-->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
$navpath
|
||||
<li class="footer">$generatedby
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="$relpath^doxygen.png" alt="doxygen"/></a> $doxygenversion </li>
|
||||
</ul>
|
||||
</div>
|
||||
<!--END GENERATE_TREEVIEW-->
|
||||
<!--BEGIN !GENERATE_TREEVIEW-->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
$generatedby  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="$relpath^doxygen.png" alt="doxygen"/>
|
||||
</a> $doxygenversion
|
||||
</small></address>
|
||||
<!--END !GENERATE_TREEVIEW-->
|
||||
</body>
|
||||
</html>
|
|
@ -1,55 +0,0 @@
|
|||
<!-- HTML header for doxygen 1.8.8-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen $doxygenversion"/>
|
||||
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
|
||||
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="$relpath^jquery.js"></script>
|
||||
<script type="text/javascript" src="$relpath^dynsections.js"></script>
|
||||
$treeview
|
||||
$search
|
||||
$mathjax
|
||||
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
|
||||
$extrastylesheet
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
|
||||
<!--BEGIN TITLEAREA-->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<!--BEGIN PROJECT_LOGO-->
|
||||
<td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"/></td>
|
||||
<!--END PROJECT_LOGO-->
|
||||
<!--BEGIN PROJECT_NAME-->
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">$projectname
|
||||
<!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
|
||||
</div>
|
||||
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
|
||||
</td>
|
||||
<!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME-->
|
||||
<!--BEGIN PROJECT_BRIEF-->
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectbrief">$projectbrief</div>
|
||||
</td>
|
||||
<!--END PROJECT_BRIEF-->
|
||||
<!--END !PROJECT_NAME-->
|
||||
<!--BEGIN DISABLE_INDEX-->
|
||||
<!--BEGIN SEARCHENGINE-->
|
||||
<td>$searchbox</td>
|
||||
<!--END SEARCHENGINE-->
|
||||
<!--END DISABLE_INDEX-->
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!--END TITLEAREA-->
|
||||
<!-- end header part -->
|
|
@ -1,66 +0,0 @@
|
|||
<!-- HTML header for doxygen 1.8.8-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen $doxygenversion"/>
|
||||
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
|
||||
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="$relpath^jquery.js"></script>
|
||||
<script type="text/javascript" src="$relpath^dynsections.js"></script>
|
||||
$treeview
|
||||
$search
|
||||
$mathjax
|
||||
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
|
||||
$extrastylesheet
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
|
||||
<!--BEGIN TITLEAREA-->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<!--BEGIN PROJECT_LOGO-->
|
||||
<td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"/></td>
|
||||
<!--END PROJECT_LOGO-->
|
||||
<!--BEGIN PROJECT_NAME-->
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">$projectname
|
||||
<!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
|
||||
<script type="text/javascript"><!--
|
||||
google_ad_client = "pub-3840594581853944";
|
||||
/* Documentation, bottom, 728x90, created 9/19/10 */
|
||||
google_ad_slot = "1902290615";
|
||||
google_ad_width = 728;
|
||||
google_ad_height = 90;
|
||||
//-->
|
||||
</script>
|
||||
<script type="text/javascript"
|
||||
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
|
||||
</script>
|
||||
</div>
|
||||
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
|
||||
</td>
|
||||
<!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME-->
|
||||
<!--BEGIN PROJECT_BRIEF-->
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectbrief">$projectbrief</div>
|
||||
</td>
|
||||
<!--END PROJECT_BRIEF-->
|
||||
<!--END !PROJECT_NAME-->
|
||||
<!--BEGIN DISABLE_INDEX-->
|
||||
<!--BEGIN SEARCHENGINE-->
|
||||
<td>$searchbox</td>
|
||||
<!--END SEARCHENGINE-->
|
||||
<!--END DISABLE_INDEX-->
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!--END TITLEAREA-->
|
||||
<!-- end header part -->
|
|
@ -1,194 +0,0 @@
|
|||
<doxygenlayout version="1.0">
|
||||
<!-- Generated by doxygen 1.8.8 -->
|
||||
<!-- Navigation index tabs for HTML output -->
|
||||
<navindex>
|
||||
<tab type="mainpage" visible="yes" title=""/>
|
||||
<tab type="pages" visible="yes" title="" intro=""/>
|
||||
<tab type="modules" visible="yes" title="" intro=""/>
|
||||
<tab type="namespaces" visible="yes" title="">
|
||||
<tab type="namespacelist" visible="yes" title="" intro=""/>
|
||||
<tab type="namespacemembers" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="classes" visible="yes" title="">
|
||||
<tab type="classlist" visible="yes" title="" intro=""/>
|
||||
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
|
||||
<tab type="hierarchy" visible="yes" title="" intro=""/>
|
||||
<tab type="classmembers" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="files" visible="yes" title="">
|
||||
<tab type="filelist" visible="yes" title="" intro=""/>
|
||||
<tab type="globals" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="examples" visible="yes" title="" intro=""/>
|
||||
</navindex>
|
||||
|
||||
<!-- Layout definition for a class page -->
|
||||
<class>
|
||||
<briefdescription visible="yes"/>
|
||||
<includes visible="$SHOW_INCLUDE_FILES"/>
|
||||
<inheritancegraph visible="$CLASS_GRAPH"/>
|
||||
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
|
||||
<memberdecl>
|
||||
<nestedclasses visible="yes" title=""/>
|
||||
<publictypes title=""/>
|
||||
<services title=""/>
|
||||
<interfaces title=""/>
|
||||
<publicslots title=""/>
|
||||
<signals title=""/>
|
||||
<publicmethods title=""/>
|
||||
<publicstaticmethods title=""/>
|
||||
<publicattributes title=""/>
|
||||
<publicstaticattributes title=""/>
|
||||
<protectedtypes title=""/>
|
||||
<protectedslots title=""/>
|
||||
<protectedmethods title=""/>
|
||||
<protectedstaticmethods title=""/>
|
||||
<protectedattributes title=""/>
|
||||
<protectedstaticattributes title=""/>
|
||||
<packagetypes title=""/>
|
||||
<packagemethods title=""/>
|
||||
<packagestaticmethods title=""/>
|
||||
<packageattributes title=""/>
|
||||
<packagestaticattributes title=""/>
|
||||
<properties title=""/>
|
||||
<events title=""/>
|
||||
<privatetypes title=""/>
|
||||
<privateslots title=""/>
|
||||
<privatemethods title=""/>
|
||||
<privatestaticmethods title=""/>
|
||||
<privateattributes title=""/>
|
||||
<privatestaticattributes title=""/>
|
||||
<friends title=""/>
|
||||
<related title="" subtitle=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<services title=""/>
|
||||
<interfaces title=""/>
|
||||
<constructors title=""/>
|
||||
<functions title=""/>
|
||||
<related title=""/>
|
||||
<variables title=""/>
|
||||
<properties title=""/>
|
||||
<events title=""/>
|
||||
</memberdef>
|
||||
<allmemberslink visible="yes"/>
|
||||
<usedfiles visible="$SHOW_USED_FILES"/>
|
||||
<authorsection visible="yes"/>
|
||||
</class>
|
||||
|
||||
<!-- Layout definition for a namespace page -->
|
||||
<namespace>
|
||||
<briefdescription visible="yes"/>
|
||||
<memberdecl>
|
||||
<nestednamespaces visible="yes" title=""/>
|
||||
<constantgroups visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
</memberdef>
|
||||
<authorsection visible="yes"/>
|
||||
</namespace>
|
||||
|
||||
<!-- Layout definition for a file page -->
|
||||
<file>
|
||||
<briefdescription visible="yes"/>
|
||||
<includes visible="$SHOW_INCLUDE_FILES"/>
|
||||
<includegraph visible="$INCLUDE_GRAPH"/>
|
||||
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
|
||||
<sourcelink visible="yes"/>
|
||||
<memberdecl>
|
||||
<classes visible="yes" title=""/>
|
||||
<namespaces visible="yes" title=""/>
|
||||
<constantgroups visible="yes" title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
</memberdef>
|
||||
<authorsection/>
|
||||
</file>
|
||||
|
||||
<!-- Layout definition for a group page -->
|
||||
<group>
|
||||
<briefdescription visible="yes"/>
|
||||
<groupgraph visible="$GROUP_GRAPHS"/>
|
||||
<detaileddescription title=""/>
|
||||
<memberdecl>
|
||||
<nestedgroups visible="yes" title=""/>
|
||||
<dirs visible="yes" title=""/>
|
||||
<files visible="yes" title=""/>
|
||||
<namespaces visible="yes" title=""/>
|
||||
<defines title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
<typedefs title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<functions title=""/>
|
||||
<enums title=""/>
|
||||
<enumvalues title=""/>
|
||||
<variables title=""/>
|
||||
<signals title=""/>
|
||||
<publicslots title=""/>
|
||||
<protectedslots title=""/>
|
||||
<privateslots title=""/>
|
||||
<events title=""/>
|
||||
<properties title=""/>
|
||||
<friends title=""/>
|
||||
</memberdecl>
|
||||
<memberdef>
|
||||
<pagedocs/>
|
||||
<inlineclasses title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<enumvalues title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<signals title=""/>
|
||||
<publicslots title=""/>
|
||||
<protectedslots title=""/>
|
||||
<privateslots title=""/>
|
||||
<events title=""/>
|
||||
<properties title=""/>
|
||||
<friends title=""/>
|
||||
</memberdef>
|
||||
<authorsection visible="yes"/>
|
||||
</group>
|
||||
|
||||
<!-- Layout definition for a directory page -->
|
||||
<directory>
|
||||
<briefdescription visible="yes"/>
|
||||
<directorygraph visible="yes"/>
|
||||
<memberdecl>
|
||||
<dirs visible="yes"/>
|
||||
<files visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
</directory>
|
||||
</doxygenlayout>
|
Binary file not shown.
Before Width: | Height: | Size: 16 KiB |
2417
doc/hal/Doxyfile_chm
2417
doc/hal/Doxyfile_chm
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,8 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Refresh" content="0; URL=html/index.html">
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
|
@ -1,5 +0,0 @@
|
|||
del html\*.* /Q
|
||||
doxygen Doxyfile_chm
|
||||
del html\*.md5
|
||||
del html\*.map
|
||||
pause
|
|
@ -1,5 +0,0 @@
|
|||
del html\*.* /Q
|
||||
doxygen Doxyfile_html
|
||||
del html\*.md5
|
||||
del html\*.map
|
||||
pause
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/bash
|
||||
rm html/*
|
||||
doxygen Doxyfile_html
|
||||
rm html/*.md5
|
||||
rm html/*.map
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
*** Documentation build procedure ***
|
||||
|
||||
The following software must be installed:
|
||||
- Doxygen 1.7.4 or later.
|
||||
- Graphviz 2.26.3 or later. The ./bin directory must be specified in the path
|
||||
in order to make Graphviz accessible by Doxygen.
|
||||
|
||||
Build procedure:
|
||||
- Run Doxywizard.
|
||||
- Load ./docs/Doxyfile_html or ./docs/Doxyfile_chm from Doxywizard.
|
||||
- Start.
|
|
@ -1,84 +0,0 @@
|
|||
|
||||
--- Module: ..\..\..\os\hal\src\hal.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\hal_buffers.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\hal_queues.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\hal_mmcsd.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\adc.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\can.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\dac.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\ext.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\gpt.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\i2c.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\i2s.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\icu.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\mac.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\mmc_spi.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\pal.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\pwm.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\rtc.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\sdc.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\serial.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\serial_usb.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\spi.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\st.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\uart.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\usb.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\src\wdg.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\osal\osal.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\hal_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\adc_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\can_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\dac_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\ext_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\gpt_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\i2c_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\icu_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\mac_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\pal_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\pwm_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\sdc_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\serial_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\spi_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\uart_lld.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\hal\templates\usb_lld.c (C)
|
|
@ -1,2 +0,0 @@
|
|||
#!/bin/bash
|
||||
rsync -avP -e ssh --delete --exclude=.* ./html/ gdisirio,chibios@web.sourceforge.net:/home/groups/c/ch/chibios/htdocs/docs3/hal
|
|
@ -1,38 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @mainpage Introduction
|
||||
* @author Giovanni Di Sirio (gdisirio@users.sourceforge.net).
|
||||
*
|
||||
* <h2>Features</h2>
|
||||
* - Hardware Abstraction Layer (HAL) supporting numerous high level device
|
||||
* drivers abstracting common features in modern MCUs.
|
||||
* - Driver models for: ADC, CAN, DAC, EXT, GPT, I2C, I2S, ICU, MAC, MMC, PAL,
|
||||
* PWM, RTC, SDC, Serial, UART, USB, USB-CDC, SPI, ST, WDG.
|
||||
* - Abstraction of streams.
|
||||
* - Abstraction of block devices.
|
||||
* - The drivers can be ported to virtually any MCU architecture thanks to
|
||||
* an high level API.
|
||||
* - The HAL can be used with or without an RTOS.
|
||||
* - The HAL can be adapted to any reasonable RTOS thanks to an Operating
|
||||
* System Abstraction Layer (OSAL). ChibiOS/RT and ChibiOS/NIL are supported
|
||||
* out of the box.
|
||||
* .
|
||||
*/
|
2416
doc/nil/Doxyfile_chm
2416
doc/nil/Doxyfile_chm
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,8 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Refresh" content="0; URL=html/index.html">
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
|
@ -1,5 +0,0 @@
|
|||
del html\*.* /Q
|
||||
doxygen Doxyfile_chm
|
||||
del html\*.md5
|
||||
del html\*.map
|
||||
pause
|
|
@ -1,5 +0,0 @@
|
|||
del html\*.* /Q
|
||||
doxygen Doxyfile_html
|
||||
del html\*.md5
|
||||
del html\*.map
|
||||
pause
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/bash
|
||||
rm html/*
|
||||
doxygen Doxyfile_html
|
||||
rm html/*.md5
|
||||
rm html/*.map
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
*** Documentation build procedure ***
|
||||
|
||||
The following software must be installed:
|
||||
- Doxygen 1.7.4 or later.
|
||||
- Graphviz 2.26.3 or later. The ./bin directory must be specified in the path
|
||||
in order to make Graphviz accessible by Doxygen.
|
||||
|
||||
Build procedure:
|
||||
- Run Doxywizard.
|
||||
- Load ./docs/Doxyfile_html or ./docs/Doxyfile_chm from Doxywizard.
|
||||
- Start.
|
|
@ -1,32 +0,0 @@
|
|||
|
||||
*** ChibiOS/NIL Test Suite
|
||||
***
|
||||
*** Compiled: Jul 9 2015 - 10:31:29
|
||||
*** Platform: SPC560Dxx Car Body and Convenience
|
||||
*** Test Board: EVB with SPC560Dxx Mini Module
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System Tick Counter functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (Thread Sleep functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (semaphore primitives, no state change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (semaphore primitives, with state change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (semaphores timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (suspend and resume functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.5 (events functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
|
||||
*** ChibiOS/NIL Test Suite
|
||||
***
|
||||
*** Compiled: Jul 9 2015 - 10:52:02
|
||||
*** Platform: STM32F303xC Analog & DSP
|
||||
*** Test Board: STMicroelectronics STM32F3-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System Tick Counter functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (Thread Sleep functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (semaphore primitives, no state change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (semaphore primitives, with state change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (semaphores timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (suspend and resume functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.5 (events functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
|
||||
--- Module: ..\..\..\os\common\ports\ARMCMx\compilers\GCC\crt1.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\common\ports\ARMCMx\compilers\GCC\vectors.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\nil\src\nil.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\nil\ports\ARMCMx\nilcore.c (C)
|
||||
|
||||
--- Module: ..\..\..\os\nil\ports\ARMCMx\nilcore_v7m.c (C)
|
||||
|
||||
--- Module: main.c (C)
|
|
@ -1,870 +0,0 @@
|
|||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%Creator: cairo 1.8.8 (http://cairographics.org)
|
||||
%%CreationDate: Mon Aug 30 12:09:46 2010
|
||||
%%Pages: 1
|
||||
%%BoundingBox: 0 0 196 229
|
||||
%%DocumentData: Clean7Bit
|
||||
%%LanguageLevel: 2
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
/cairo_eps_state save def
|
||||
/dict_count countdictstack def
|
||||
/op_count count 1 sub def
|
||||
userdict begin
|
||||
/q { gsave } bind def
|
||||
/Q { grestore } bind def
|
||||
/cm { 6 array astore concat } bind def
|
||||
/w { setlinewidth } bind def
|
||||
/J { setlinecap } bind def
|
||||
/j { setlinejoin } bind def
|
||||
/M { setmiterlimit } bind def
|
||||
/d { setdash } bind def
|
||||
/m { moveto } bind def
|
||||
/l { lineto } bind def
|
||||
/c { curveto } bind def
|
||||
/h { closepath } bind def
|
||||
/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
|
||||
0 exch rlineto 0 rlineto closepath } bind def
|
||||
/S { stroke } bind def
|
||||
/f { fill } bind def
|
||||
/f* { eofill } bind def
|
||||
/B { fill stroke } bind def
|
||||
/B* { eofill stroke } bind def
|
||||
/n { newpath } bind def
|
||||
/W { clip } bind def
|
||||
/W* { eoclip } bind def
|
||||
/BT { } bind def
|
||||
/ET { } bind def
|
||||
/pdfmark where { pop globaldict /?pdfmark /exec load put }
|
||||
{ globaldict begin /?pdfmark /pop load def /pdfmark
|
||||
/cleartomark load def end } ifelse
|
||||
/BDC { mark 3 1 roll /BDC pdfmark } bind def
|
||||
/EMC { mark /EMC pdfmark } bind def
|
||||
/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
|
||||
/Tj { show currentpoint cairo_store_point } bind def
|
||||
/TJ {
|
||||
{
|
||||
dup
|
||||
type /stringtype eq
|
||||
{ show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
|
||||
} forall
|
||||
currentpoint cairo_store_point
|
||||
} bind def
|
||||
/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
|
||||
cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
|
||||
/Tf { pop /cairo_font exch def /cairo_font_matrix where
|
||||
{ pop cairo_selectfont } if } bind def
|
||||
/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
|
||||
/cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
|
||||
/cairo_font where { pop cairo_selectfont } if } bind def
|
||||
/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
|
||||
cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
|
||||
/g { setgray } bind def
|
||||
/rg { setrgbcolor } bind def
|
||||
/d1 { setcachedevice } bind def
|
||||
%%EndProlog
|
||||
11 dict begin
|
||||
/FontType 42 def
|
||||
/FontName /f-0-0 def
|
||||
/PaintType 0 def
|
||||
/FontMatrix [ 1 0 0 1 0 0 ] def
|
||||
/FontBBox [ 0 0 0 0 ] def
|
||||
/Encoding 256 array def
|
||||
0 1 255 { Encoding exch /.notdef put } for
|
||||
Encoding 1 /uni0057 put
|
||||
Encoding 2 /uni006F put
|
||||
Encoding 3 /uni0072 put
|
||||
Encoding 4 /uni006B put
|
||||
Encoding 5 /uni0073 put
|
||||
Encoding 6 /uni0070 put
|
||||
Encoding 7 /uni0061 put
|
||||
Encoding 8 /uni0063 put
|
||||
Encoding 9 /uni0065 put
|
||||
Encoding 10 /uni0020 put
|
||||
Encoding 11 /uni0062 put
|
||||
Encoding 12 /uni0074 put
|
||||
Encoding 13 /uni0054 put
|
||||
Encoding 14 /uni0068 put
|
||||
Encoding 15 /uni0064 put
|
||||
Encoding 16 /uni0053 put
|
||||
Encoding 17 /uni0075 put
|
||||
Encoding 18 /uni0069 put
|
||||
Encoding 19 /uni006E put
|
||||
Encoding 20 /uni0078 put
|
||||
Encoding 21 /uni0050 put
|
||||
Encoding 22 /uni004C put
|
||||
Encoding 23 /uni006C put
|
||||
Encoding 24 /uni0067 put
|
||||
Encoding 25 /uni0028 put
|
||||
Encoding 26 /uni0029 put
|
||||
Encoding 27 /uni006D put
|
||||
Encoding 28 /uni0049 put
|
||||
Encoding 29 /uni004E put
|
||||
Encoding 30 /uni005F put
|
||||
Encoding 31 /uni0052 put
|
||||
Encoding 32 /uni0045 put
|
||||
Encoding 33 /uni0051 put
|
||||
Encoding 34 /uni0055 put
|
||||
Encoding 35 /uni0044 put
|
||||
Encoding 36 /uni0041 put
|
||||
Encoding 37 /uni0043 put
|
||||
Encoding 38 /uni004B put
|
||||
/CharStrings 39 dict dup begin
|
||||
/.notdef 0 def
|
||||
/uni0057 1 def
|
||||
/uni006F 2 def
|
||||
/uni0072 3 def
|
||||
/uni006B 4 def
|
||||
/uni0073 5 def
|
||||
/uni0070 6 def
|
||||
/uni0061 7 def
|
||||
/uni0063 8 def
|
||||
/uni0065 9 def
|
||||
/uni0020 10 def
|
||||
/uni0062 11 def
|
||||
/uni0074 12 def
|
||||
/uni0054 13 def
|
||||
/uni0068 14 def
|
||||
/uni0064 15 def
|
||||
/uni0053 16 def
|
||||
/uni0075 17 def
|
||||
/uni0069 18 def
|
||||
/uni006E 19 def
|
||||
/uni0078 20 def
|
||||
/uni0050 21 def
|
||||
/uni004C 22 def
|
||||
/uni006C 23 def
|
||||
/uni0067 24 def
|
||||
/uni0028 25 def
|
||||
/uni0029 26 def
|
||||
/uni006D 27 def
|
||||
/uni0049 28 def
|
||||
/uni004E 29 def
|
||||
/uni005F 30 def
|
||||
/uni0052 31 def
|
||||
/uni0045 32 def
|
||||
/uni0051 33 def
|
||||
/uni0055 34 def
|
||||
/uni0044 35 def
|
||||
/uni0041 36 def
|
||||
/uni0043 37 def
|
||||
/uni004B 38 def
|
||||
end readonly def
|
||||
/sfnts [
|
||||
<00010000000a008000030020636d617001a2f26900003bb40000008c63767420962ad2760000
|
||||
3c40000006306670676dcc79599a000042700000066e676c79668bebc785000000ac00003b08
|
||||
68656164ce982692000048e0000000366868656112330c9c0000491800000024686d7478ae81
|
||||
10400000493c0000009c6c6f63610004d82c000049d8000000a06d61787004e40ca800004a78
|
||||
000000207072657052fec4e900004a9800000aff000201000000050005000003000700002111
|
||||
21112521112101000400fc2003c0fc400500fb002004c0000000000100190000077605ba0018
|
||||
01db402629002611291226183900361139123618490047114912471858005711581257181098
|
||||
08980f02b10602435458403310011a192b153405340c4405440c4b155405540c5b156405640c
|
||||
6b157405740c7b150f05150c030001120800080f0208020102003f3f3f3f3f111217395d0111
|
||||
1239391b401e030405050206070808050a0b0c0c090d0e0f0f0c14131212151617181815b8ff
|
||||
3cb305001820b8ff3cb30c121120b8ff3c405a15080920000502022001001401010018050808
|
||||
1e151814151518120c09091e151214151512110c0f0f2010111410101112090c081815050f11
|
||||
100c000205150c050318100f0f0909080802020102181212111100081a17171a104109015100
|
||||
20000c015100150151004000050151b620200101011919b8018bb1a8182b4e10f45d1a194dfd
|
||||
1a18fdfd1a19fd184e456544e6003f3c103c103c3f3c103c103c103c103c1217390112393911
|
||||
12393911123939113939874d2e2b877dc4872e182b877dc4872e182b877dc4872e182b877dc4
|
||||
2b2b2b870e10c4c4870e103cc4870e10c4c4870e10c4c4870e10c4c4870e10c4c4014bb00f53
|
||||
4bb011515a58b2120a18b8fff6383859014bb025534bb02a515a58b90000ffc03859004bb00b
|
||||
534bb00e515a58b30c40054038385959313001725d2101331316173637013313121736371333
|
||||
0123012627060701019efe7bc7df241a380a0117ead24f231c2de6c3fe6ebbfecb27071714fe
|
||||
c905bafc3f9795eb2403defd1afeecf38bb403aefa46045d8c206547fba3000000020044ffe8
|
||||
0427043e000d0019016bb615180d0d065513b8ffe8b40d0d06550fb8ffe840730d0d06551918
|
||||
0d0d065512070a190c4706480856065908670669080834103a123a16351845104b124b164518
|
||||
5c055c0952105d125d1652186d056d0964106d126d1664187701150906050d5b035405540a5b
|
||||
0c6c036505650a6c0c0a171c0407111c0b0b14241b400d0d02551b400b0b025507b8ffea4011
|
||||
0f0f025507180d0d025507100b0b025507b8fff0b40b0b065507b8fff0b40d0d065507b8fff0
|
||||
b40f0f065507b8fff0b40c0c065507b8ffc04013242534300701000710072007030731df1b01
|
||||
1bb8ffc040491e2334301b011b0e24000c0e0f025500120d0d0255000c0c0c0255001c0b0b02
|
||||
55000e0b0b0655000e0d0d0655000c1010065500160c0c065500402425341f003f000200311a
|
||||
3437182b10f65d2b2b2b2b2b2b2b2b2bed10712b5df65d5d2b2b2b2b2b2b2b2b2b2bed003fed
|
||||
3fed313001715d0071435c584009530553096205620904015d59002b2b2b2b13103736333200
|
||||
1514060623220013141633323635342623220644a489c5db01167beb8bdffeedb9b28786b2b3
|
||||
8587b2021301278e76fee1fdcdeb82011e010dcccbccd1c5cbca000000010085000002c6043e
|
||||
001100c9403b2f1301100401230434044304530466047404060911080908090d1311090d0003
|
||||
08010b1c06070106000a0928900801082220130113022211250100b8ffc04010333634f00001
|
||||
00002000d000e0000400b8fff8b41010025500b8fff840110e0e025500040c0c025500060b0b
|
||||
025500b8fffcb41010065500b8fff440160f0f065500060c0c065500080d0d0655004e1247c4
|
||||
182b10f62b2b2b2b2b2b2b2b5d712b3cfde4105df472e4003f3f3fed11393911393901111239
|
||||
390010c9870e7dc43130005d72015d33113315363633321707262322060706151185a23e693f
|
||||
5b5e3e42423b5e141e0426a171483aa727473f6072fdd400000000010088000003f805ba000b
|
||||
0261401b060c0d0d0655070656065a09030f0df305f60603090c1010025506b8fff4b40c0c02
|
||||
550ab8fff4b40c0c025509b8fff4b40c0c025503b8ffe840100d0d06555503770a0212062013
|
||||
213408b8fff0b312273409b8fff0b41227341205b8fff0b312213409b8fff040841227340604
|
||||
04050406370947040525062d0a580a7703750ada03e30607a60601230626072508390638093f
|
||||
0d4f0d59045906580759097d0479059909c606d204d606e406e907f706f90815120a0a050303
|
||||
04020606070909080a0a050908082507061407070603040425050a1405050a0a090603040801
|
||||
02000405060708080b0b000a04b8010f400905040c0c0655052208b8010f402120073f070207
|
||||
100c0c0655071a900d010d0b2500022501019000013f004f000200b8fffe40310e0e02550010
|
||||
0d0d025500100c0c0255000a0b0b025500120b0b065500120c0c065500080d0d065500190c0d
|
||||
e1214766182b2b4ef42b2b2b2b2b2b2b5d713c4d10ed10ed4e1071f62b5d4dedf42bed003f3c
|
||||
103c103c3f3c3f3c11173987052e2b047d10c487052e182b0e7d10c40710083c083c0310083c
|
||||
083cb10602435458400d4b09011f0984030209180d1134002b5d7159313001435c58400a092c
|
||||
1d3909081d1d3c06b8ffdeb21d3906b8ffd4b2203906b8ffd4b121392b2b2b2b2b595d00715d
|
||||
0171002b2b435c58b90006ffc0b2213903b8ffc0b2163903b8ffdeb2103906b8ffdeb2103903
|
||||
b8ffdeb20c3903b8ffdeb10b392b2b2b2b2b2b59012b2b2b435c584012dd0401081416390908
|
||||
14143c090814143c06b8fff6b2183906b8ffecb11b392b2b2b2b2b015d59005d2b2b2b2b2b01
|
||||
5d712b33113311013301012301071188b401aae9fe6a01bfdefea17f05bafcbc01b0fe76fd64
|
||||
021f7afe5b000001003fffe803b1043e00300317407b042214223a094a094424562265227c09
|
||||
8e098424a613ab2cc2030d09171a1817304b2cd617051b025502021032010a185c085c095c0a
|
||||
5c0b5c0c5c0d6a086a096a0a6a0b6a0c6a0db426b4270f27262427242936245a0a590b642664
|
||||
28742374248024930a9c0c9228972c9530a40aa90ca327a428b326c5261628b8fff4b40d0d06
|
||||
5522b8fff4b40d0d065523b8fff4b40d0d065524b8fff4b40d0d065528b8fff4b40c0c065522
|
||||
b8fff4b40c0c065523b8fff4b40c0c065524b8fff4b40c0c06551db8ffde40121e395a082725
|
||||
0c0a041a202615040b2e1d1ab802aa4022192c0b0b02551f193f194f195f19af19cf19060f19
|
||||
1f196f19df19041f198f190219bd02550015000002aa0001ffc040140b0b0255100140010210
|
||||
01d00102000110010201b8ffc0b314163401b8ffc040100e113401012e5c1d6c1d021d1c1507
|
||||
04b8fff4b40b0b025504b8ffe6b41010065504b8ffe640130f0f0655041c2e0b1f1a011a2419
|
||||
4013183432b8ffc0402f0f0f025519180f0f025519180d0d025519160c0c0255192010100655
|
||||
19200f0f065519100c0c065519160d0d065519b8025bb207242ab8ffc0b51c39d02a012ab8ff
|
||||
e6b40c0c02552ab8ffe8b40f0f02552ab8ffe8b40c0c06552ab8ffeab60d0d06552a1a32b8ff
|
||||
c04021272a346032c032023f3280320232100101012400180d0d025500100d0d06550020b8ff
|
||||
f4b40d0d025520b8fff4b41010065520b8fff440190f0f065520240f100b0b02550f160c0c02
|
||||
550f200d0d02550fb8fffa40200f0f02550f0e0c0c06550f0c0d0d06550f22df00013f004f00
|
||||
020019313437182b4e10f45d714df42b2b2b2b2b2bed2b2b2b102b2bed724e105d712bf62b2b
|
||||
2b2b712b4dedf42b2b2b2b2b2b2b2b2bed72003fed2b2b2b3fed7112392f2b2b5d71722be410
|
||||
fd5d71722be41112391112390111121739313043794040272d1e2305142c2611101210131003
|
||||
06220d201b000928071b01052d071b011e14201b00210e231b0022230d0c08290a1b01282709
|
||||
0a062b041b001f101d1b01002b2b103c103c2b103c103c2b012b2b2b2b2a2b818181002b2b2b
|
||||
2b2b2b2b2b2b5d71015d72715d1337161633323635342726272e023534363736363332161617
|
||||
072626232206151417161716171e02151406062322263fb20f897b7c78352593c6994f41382a
|
||||
91537dbd5a11b00c73697c6a16162f1b84bf975669c67dcfd9013d1c6b7265443d2318253249
|
||||
814e4779281f2b487b6718525c5237231c1d130a2433417c5c5a9f57ac0000020087fe690421
|
||||
043e0012001e0162408e0c102d103d104b10043f20b020021f20290c231d3215321d421d7020
|
||||
9020083a173a1b4a174a1b59085b0c5c175c1b6a086b0c69106d176b1bc020d314dd18dd1ad3
|
||||
1ee414e41ee020ff201623042b102b1535043a1046044a105a10e50beb1dfe100b110e03161c
|
||||
1c06070106161c0e0b000e1924d00a01100a400a600a800a0420400b0b025520400d0d02550a
|
||||
b8ffe6400b0f0f02550a180d0d02550ab8fffab40c0c02550ab8ffeeb40b0b06550ab8fff4b4
|
||||
0f0f06550ab8ffe840230c0c06550a74011333023312250000c001019001a001b001f001041f
|
||||
013f014f010301b8fffc401d0e0e025501100d0d025501100c0c025501100b0b0255010c0b0b
|
||||
065501b8fff6b41010065501b8fffc40160f0f0655010c0c0c065501120d0d065501191f4737
|
||||
18012b4e10f42b2b2b2b2b2b2b2b2b5d71723c4d10fdf4e410fd2b2b2b2b2b2b2b2b5d71ed00
|
||||
3f3fed3f3fed113912393130005d015d71720071131133153636333216161514020623222627
|
||||
1103141633323635342623220687a43a926888d06a75df7b5a8f2e11a67678aba77473b1fe69
|
||||
05bd8a51518cff98a3fefb8b4c3afdfb03a4cdc4cbd5cbcad7000002004affe8041c043e0028
|
||||
0037022d402c090d092a190d1a2a290d2a2a390d3615371b3a2a492a5d0d5d2a6a0d692a6030
|
||||
8a0d86299a169b1aa90d1528b8ffe8b40b0b065527b8ffe840190b0b0655a619aa28b619bb28
|
||||
c419cf28d215dd28084416011eb8fff440110c0c065512120c0c0655050c0c0c065535b8ffe0
|
||||
40550c0c06551f171f182b2c2a343904392c4904482c5608592b6608692b760c870cc90cf90d
|
||||
f92b1137340e0104102f243417322114185f296f2902291c2f0e3f0e8f0e9f0eff0e059f0eaf
|
||||
0eef0e030e0c0f0f02550eb8ffeab4101002550eb8fff44015101006550e0c0d0d06550e060f
|
||||
0f06550e0e1c0317b802aab61895141c1c0700b8fff4401a0c0c06550045270a321c030b2961
|
||||
106100060d0d025500252124b8ffecb41010025524b8ffec400b0d0d025524040c0c025524b8
|
||||
ffe4b40b0b025524b8fff4b40b0b065524b8ffdc400b1010065524060f0f065524b8fffcb40c
|
||||
0c065524b8025b400e27400026102620263026af260539b8ffc0b40e0e025526b8ffd6b60e0e
|
||||
0255263139b8ffc0400d1e23343039c03902a039013917b8fff4404110100655172518222f24
|
||||
bf06cf06021f063f0602060e0f0f0255060c0d0d025506180c0c0255060c0b0b0255060c0b0b
|
||||
0655060e0d0d065506100c0c065506313810f62b2b2b2b2b2b2b5d71edf4ed2b105d712bf62b
|
||||
2b5dedf42b2b2b2b2b2b2b2b3cfd2be5e5003fed3fe42b3fedfde41112392f2b2b2b2b2b5d71
|
||||
ed711112391112393901111217393130005d2b2b2b2b01715d2b2b0071250606232226353436
|
||||
363736373637363534272623220607273e02333216161716151514161723260306070e021514
|
||||
16333236373635033c64b96aafbc477348356bda67013345887f791db0186ed08988aa501009
|
||||
1722bc1c1762c46f5c326d6968a2261d835546ab854e814e140e0d1a24250a6e2d3d59711871
|
||||
8b4b40614a2e78f0fb853d3801dd281c10284d2f48605b4f3d77000000010050ffe803ed043e
|
||||
001a015ab1020243545840340e7f0f010f0b01400050007000030004121c0b07181c040b010e
|
||||
1507080e0e0255070c0d0d0255070c0c0c025507100b0b0255072f2b2b2b2bcdd4c6003fed3f
|
||||
ed10c45d3210c45d3231301b4047090c011f1c4313431753135317601360179b029b039a0da4
|
||||
10a41a0c080d190a6a0269036a05750c700d800da60cb509b60ab50c0c160c860ce302030e22
|
||||
5f0f6f0f7f0f030f01b802aa4079300040005000600070009000a000e000f00009000f0f0b00
|
||||
0004121c0b07181c040b1c0f010f240e080d0d06550e221b000100240b2b1f01010001010140
|
||||
0b0b065501401010065501480c0c0655011a0d0d065501491c1524cf07011f073f0702070e0b
|
||||
0b0655070a1010065507120c0c065507311b34c4182b10f62b2b2b5d71ed10f62b2b2b2b5d72
|
||||
4b53234b515a58b90001ffc03859ed72f42bed72003fed3fed12392f11392f105de4105de431
|
||||
30005d71015d7159011706062322001134123633321617072626232206151416333236033cb1
|
||||
1defaedafef772e989addc1faf197f5a88aaa4846a8e018517b7cf011d010aac010281afa11b
|
||||
6b6cc3d3d6c282000002004bffe8041e043e0015001d015340171f001c150255035d055d0955
|
||||
0b65036b056f09650b0815b8ffe4b40d0d065511b8ffe440520d0d06551d1c0d0d06552712d9
|
||||
05fa14f61a0431123a19311c41124d1a411c51125c19521c61126d1a611c78067815f602f618
|
||||
100016010f0d171750166016701603161c0f9010a010021010041b1c0a0700ba02aa0001ffc0
|
||||
b41010025501b8ffc04010101006551001010195131c040b17400db8ffdcb40d0d02550db8ff
|
||||
eeb40d0d06550db8ffeab40c0c06550db8ffc04009272a34b00d010d1a1fb8ffc0b32526341f
|
||||
b8ffc040411e2334301f011f163310240740242a341f073f074f070307200b0b025507180c0c
|
||||
0255071c0d0d0255070e0b0b0655071c0c0c065507160d0d065507191e3437182b4e10f42b2b
|
||||
2b2b2b2b5d2b4dfde44e10712b2bf6712b2b2b2b4ded003fedfd5d2b2be43fed12392f5d3cfd
|
||||
713c011112393912393130015d005d2b2b2b0171720117060623220011100033320011140721
|
||||
16163332360121262726232206035eba2ceeb9e9feef0114dcd5010e01fce80ab285638cfdda
|
||||
02510c3856897ca9015617a3b4011f0103010c0128fedefef91020afba680195864368a60000
|
||||
00020086ffe8041f05ba0010001d0180409b01050c0f240535054505053f1fb01f021f1f221c
|
||||
331c421c701f901f063a133c163c1a4c164c1a5d085d0d580f5d165e1a6a086c0d680f6e166e
|
||||
1ac01fd90cda17da19e213ec17ec19e31de01fff1f1920052f0f2f1430053f0f40054c0f5005
|
||||
6605da1df504fa100c10150e040602001b1c0607010a151c0e0b1824d00b01100b400b600b80
|
||||
0b041f400d0d02550b0c0f0f02550b180d0d02550bb8fff6b40c0c02550bb8fff0b40b0b0655
|
||||
0bb8fff4b40f0f06550bb8ffe0b40c0c06550bb8fff4402f0d0d06550b7401113300040c0c02
|
||||
5500040d0d0655003303250202c001019001a001b001f001041f013f014f010301b8fffeb410
|
||||
10025501b8fffc401d0e0e0255010c0d0d025501100c0c025501120b0b0255010c0b0b065501
|
||||
b8fff8b41010065501b8fffc40160f0f065501180c0c065501140d0d065501191e4737182b4e
|
||||
10f42b2b2b2b2b2b2b2b2b2b5d71723c4d10fdf42b2be410fd2b2b2b2b2b2b2b2b5d71ed003f
|
||||
ed3f3fed3f11391112393130005d015d7172007121231133113633321e021510002322270314
|
||||
1716333236353426232206012da7b472b162af7140fef2bdbc6b0234559176aca57576ac05ba
|
||||
fdf58f4f8fca73feeffed69d0196bf558bcdcbd0c6cd000000010024fff2022a0599001700d8
|
||||
b9000affc0b323263409b8ffc0404123263480190100010c0d0a0103001610092b0f0a06161c
|
||||
030b0f10220022010d12250c01ff070845094560077007800790070400072007a007b007c007
|
||||
d0070607b8ffeeb41010025507b8fff4b40f0f025507b8fff2b40e0e025507b8fff8b40d0d02
|
||||
5507b8fff8b40c0c025507b8fffab41010065507b8fff0400b0f0f065507060c0c065507b8ff
|
||||
e8b40d0d065507ba026a00180136b166182b10f62b2b2b2b2b2b2b2b2b5d71f4e410ed3cfd3c
|
||||
10e4f43c003fed3f3cfd3c1139123911333310c93130015d2b2b251706232226263511233533
|
||||
11371133152311141616333202101a4c3c626c2c8484b3b5b5132b281ea19f103e65a202638c
|
||||
01076cfe8d8cfd934d2c1a0000010030000004ba05ba00070089400d05021e04030200080706
|
||||
050409b80273b320040104b80101b7062001022f030103b80101b5010120000100b8ffe8400b
|
||||
1010025500080f0f025500b8fff2b40c0c025500b8ffe2b40d0d025500b8fffcb40c0c065500
|
||||
b8fffeb40d0d065500b80273b308b699182b10f62b2b2b2b2b2b5d3c10f45d3c10fde45de610
|
||||
3c103c003f3f3cfd3c313021112135211521110213fe1d048afe1b050dadadfaf30000000001
|
||||
0087000003e805ba00140161b90016ffc0b315173403b8ffe0400e0d0d0655250435034503ba
|
||||
0d0403b8ffe0403a1719341708110c1114030501000f1c0507140b0a0c250940333634ff0901
|
||||
c0090116400b0b025516401010025509281010025509140e0e025509b8ffec40110d0d025509
|
||||
040c0c0255091a0b0b025509b8fff6400b0b0b065509141010065509b8fff8400b0d0d065509
|
||||
0a0f0f065509b8fff6b60c0c0655094e16b8ffc04017343634b016f016027016a016b016ff16
|
||||
04160214250100b8ffc04010333634f0000100002000d000e0000400b8fffab41010025500b8
|
||||
fffa40170e0e025500040c0c025500080b0b025500040b0b065500b8fffa40160f0f06550002
|
||||
0c0c065500020d0d0655004e154750182b10f62b2b2b2b2b2b2b2b5d712b3cfd3c105d712bf4
|
||||
2b2b2b2b2b2b2b2b2b2b2b2b5d712bed003f3c3fed3f1139113901123931304379400e060e07
|
||||
250e060c1b010d080f1b01002b012b2b81002b5d2b012b331133113633321616151123113426
|
||||
23220606151187b47ec076ae4bb4756b508d3c05bafdf2925da49cfd5f02a1877b538e7dfdbb
|
||||
00020046ffe803df05ba0011001d015540a40a02040d250d340d440d053514351c5702540a52
|
||||
14531c6702640565096314601cc01fd405d513dd19e513e514ef17eb19e51de01fff1f161f1f
|
||||
2b1a3c163c1a4b1a701f901f072e02240d2e163a02350d4b02450d4614491c570a560d670de5
|
||||
06e716fa01f40e100115030e0b100f001b1c0b0711000a151c030b1833010025110f251010d0
|
||||
11011011401160118011041f400b0b02551f400d0d025511121010025511b8fff440110f0f02
|
||||
5511060e0e025511180d0d025511b8fff2400b0b0b0655110e1010065511b8ffeeb40c0c0655
|
||||
11b8fff840420d0d065511741224bf07cf07df07ff07041f073f074f0703071e0b0b02550718
|
||||
0c0c0255071e0d0d0255070c0b0b0655070c0d0d0655071a0c0c065507191e3450182b4e10f4
|
||||
2b2b2b2b2b2b5d714dedfd2b2b2b2b2b2b2b2b2b2b5d713c10ed10fd3ce4003fed3f3c3fed3f
|
||||
3c11391112393130005d01715d00712135062322262635341236333216171133110114163332
|
||||
36353426232206033865c47fd5756ad48360962fb3fd20ac7576a5a87b78a1869e8cfba39f01
|
||||
038a5141020efa460212cccac1c6daccc4000001005cffe704eb05d300300215402763036304
|
||||
730374040425273503391c430349074c1d451f44244627530359075c1d572889130e23b8fff2
|
||||
b41010025524b8fff2b41010025525b8fff2b41010025526b8fff2b41010025527b8fff2b410
|
||||
10025523b8fff6b40d10025524b8fff6b40d10025525b8fff6b40d10025526b8fff6b40d1002
|
||||
5527b8fff640460d100255280d26240224032725360f34234425452f5a20562355256c0b6a0d
|
||||
6b0e66146518790b7a0d7a0f7d107524732586038a0b890d8a0f8d1085248325920d960f9615
|
||||
1eb10602435458402d2126121b261a09262901260000291a120432312600650002000d2d791b
|
||||
891b021b25160d2d1e27250125051605b8fff4400c0c0c0655051e2d091e1e1603003fed3fed
|
||||
2b1112395d1112391112395d1112395d01111217392fed2fed2fed2fed1b402d25240e0d0b05
|
||||
211c1d1e1b08070604030206012524220e0d0b06051e1b2d1a400c0c02558f1a011aed16002d
|
||||
01b8ffc040120c0c02551001200150016001700190010601b801b040132d1e1e1603051e2d09
|
||||
1b261a4a092600290129b8ffeab40e0e025529b8fff4400d0c0c0255291a32212612012612b8
|
||||
ffecb40e0e025512b8fff6b40d0d025512b8fff8400f0c0c02551254200001001931635b182b
|
||||
4e10f45d4de42b2b2bed10ed4e10f62b2b5d4dedf4ed003fed3fed10fd5d2be410fd5d2bf411
|
||||
1217391117391112393901121739593130005d712b2b2b2b2b2b2b2b2b2b015d7113371e0233
|
||||
3236363534262726242726263534363633321616170726262322061514171604171616151406
|
||||
06232224265cb70d5fc87d6faa53505c3bfe6c5169677ef294a3f98605ba0fada9b0a1393801
|
||||
d958807a86fb9dc7fef39901d7106e8d5742734445672317612b37a3656fc16469cc810e8b8e
|
||||
815b4f33336b283bb57675cf7374e900000000010083ffe803e004260018014fb9001affc040
|
||||
0915173402201316340fb8fff040331214342b1301240813160c0113160b06000a111c030b00
|
||||
3316251817403336341a401010025517281010025517120e0e025517b8ffec400b0d0d025517
|
||||
040c0c025517b8fff4400b0b0b065517141010065517b8fff8400b0d0d0655170c0f0f065517
|
||||
b8fff6400d0c0c0655ff1701c01701174e1ab8ffc04015343634b01af01a02701aa01ab01aff
|
||||
1a041a0c2509b8ffc04010333634f0090100092009d009e0090409b8fff8b41010025509b8ff
|
||||
f840110e0e025509040c0c0255090a0b0b065509b8fff640160f0f065509020c0c065509020d
|
||||
0d0655094e194750182b10f62b2b2b2b2b2b2b5d712bed105d712bf65d712b2b2b2b2b2b2b2b
|
||||
2b2b2b3cfde4003fed3f3f3c39390111123931304379401a04100e0d0f0d0206070806080508
|
||||
030610040c1b000d08111b00002b012b2a2a81005d012b2b2b21350623222626272635113311
|
||||
141716163332363635113311033f7cd55ea34f100bb40b116e51518e3bb49cb4486d4f357302
|
||||
92fdb38d314751538f880239fbda0000000200880000013c05ba0003000700cd405e09360b0b
|
||||
02554f099009a009b009c009df09f0090700091f09700980099f09b009c009df09e009ff090a
|
||||
1f09010001070402030906037e0100060506040a0607250500049f04a004b004c004e00406c0
|
||||
04f0040200042004d004e0040404b8fff8b41010025504b8fffa40170e0e025504040c0c0255
|
||||
040a0b0b025504140b0b065504b8ffeab41010065504b8fffeb40d0d065504b8fffc400a0c0c
|
||||
0655044e084750182b10f62b2b2b2b2b2b2b2b5d71723cfd3c003f3f3c3fed01111239391112
|
||||
39393130015d72712b133533150311331188b4b4b404ebcfcffb150426fbda00000100870000
|
||||
03e6043e0016017d40130503061302a810b810e303e713f003f6130604b8fff0403c0b0d3479
|
||||
10019810d018e018ff18042008140e1416121c05070106160d0a0d0e0c0e2418401010025518
|
||||
400b0b02550b28101002550b140e0e02550bb8ffec40110d0d02550b040c0c02550b220b0b02
|
||||
550bb8fff4400b0b0b06550b14101006550bb8fff9400b0d0d06550b0a0f0f06550bb8fff640
|
||||
120c0c06550b40333634ff0b01ff0b010b4e18b8ffc0401a343634b018f018027018a018b018
|
||||
c01804180302331516250100b8fff6b41111025500b8fffab41010025500b8fffa40170e0e02
|
||||
5500040c0c0255000a0b0b025500040b0b065500b8fffa40110f0f065500020c0c065500040d
|
||||
0d065500b8ffc04012333634f0000100002000d000e00004004e1710f65d712b2b2b2b2b2b2b
|
||||
2b2b2b3cfd3cf43c105d712bf65d712b2b2b2b2b2b2b2b2b2b2b2b2bed3c103c003f3c3f3fed
|
||||
11390112393130437940160611090a080a070a0306102611060e1b010f0a121b01002b012b2b
|
||||
2a81015d71002b5d71331133153633321616171615112311342626232206151187a275dd60a1
|
||||
50100ab42a6b4873a7042697af45704d327dfd7302866e6d4192ccfdbc0000000001000f0000
|
||||
03f10426001001dcb1020243545840150f010b060402090602060d0a000a0f180f0f02550f2f
|
||||
2b003f3f3f3f11173931301bb70f12010f22193906b8ffde405019395a0f96049608990e9a0f
|
||||
c005c006c007cb0f090f4016391a031309150d1a1035013a0b81018e0b082f1257045907590b
|
||||
580e9701980a980bb702b80cc80bca0ecc10da03d509d10ddb10e50a1212b10602435458400b
|
||||
0c0012110f180d10065506b8ffe8400e0d1006550f0600020d000a0a0206003f3c3f3c111239
|
||||
392b2b01111239391b40660606030708090901060609050403030b0f0f100e0d0d010f0f0d10
|
||||
0b010009020d0b030c100a060f020f0a10c600c60902102500091400000903020dc60d010d25
|
||||
0c03140c0c030a090903030206100d0d0c0c000a4f120112490d7e0c220a0f6106097e400ab8
|
||||
011bb74006500680060306b80243400e20037e02224f00010049117cc4182b10f65df4ed1a19
|
||||
fd5dfd1a18ed10e510f4ede65d003f3c103c103c3f3c103c103c87052e2b5d877dc4872e182b
|
||||
5d7d10c400111239390f0f8708c4870e10c408c4870e10c4c408c4070e103c3c083c59313001
|
||||
435c58b40e181d390bb8ffde400b1d390c221739032217390bb8ffdeb2213910b8ffc0400a15
|
||||
390122213909401c392b2b2b2b2b2b2b2b595d71002b5d2b2b015d5933010133171617363737
|
||||
330101230327010f0184fe99e1a32e1c2c25b3d7fe91018bddda3afee9022801fef947304233
|
||||
fbfe0cfdce014a59fe5d0002009e000004fd05ba000d001800b2402c65116b14024b104b145b
|
||||
105b14040b0c1e0f0e0e0017181e02010200081226080a0d0d025508100b0b065508b8fff440
|
||||
1b0c0c0655081a201a01201a011a180d200120000100201010025500b8fff6b40f0f025500b8
|
||||
fff6b40d0d025500b8fffa400b0c0c0255000c0b0b065500b8fffab40c0c065500b8fff0400a
|
||||
0d0d0655005d193b5c182b10f62b2b2b2b2b2b2b5d3cfd3c4e10715df62b2b2b4ded003f3f3c
|
||||
fd3c12392f3cfd3c3130015d005d33112132171e021514022121111121323635342627262321
|
||||
9e0229924d6c9259eefec9fe88017bbc9e5d4c3184fe8905ba0e1265b66dbbfefdfdac03018c
|
||||
7f5c83150d000000000100960000042a05ba0005006d400c010204031e05000820040104b802
|
||||
a7400f070203200120000100201010025500b8fff6b40f0f025500b8fff6b40d0d025500b8ff
|
||||
fab40c0c025500b8fff6b40c0c065500b8fff8400a0d0d0655005d063b5c182b10f62b2b2b2b
|
||||
2b2b5d3cfd3c10e65d003f3cfd3c3f313033113311211596c202d205bafaf3ad000000010083
|
||||
0000013705ba000300e3b605360b0b025505b8ffc0b337383405b8ffc0b334353405b8ffc0b3
|
||||
30313405b8ffc0b322253405b8ffc040251517340f051f059f05df05044f05df05f005031f05
|
||||
70058005ff05040100000a0203250100b8ffc0b337383400b8ffc040153335349f0001c000f0
|
||||
000200002000d000e0000400b8fff8b41010025500b8fffa401d0e0e025500040c0c0255000a
|
||||
0b0b025500140b0b065500081010065500b8fffeb40d0d065500b8ffffb40c0c065500b8fffc
|
||||
400a0c0c0655004e044750182b10f62b2b2b2b2b2b2b2b2b5d71722b2b3cfd3c003f3f313001
|
||||
5d71722b2b2b2b2b2b3311331183b405bafa460000020042fe5103ea043e001e002a016f4060
|
||||
0b0b05142c0b25144c0b451406091d191d2c0b26142c23390b36144a0b46145607580b680bfa
|
||||
0af5150e2e232c273e233e274c27902ca02c07362136293f2c460b4621452954215429690763
|
||||
216329602c802cda27e821ee23ef271117160615b802b1b4281c130701b802aa401020003000
|
||||
600070008000c000d0000700b8027d4032051c1c0f0a45221c0c0a16153325330a251818d017
|
||||
011017401760178017042c400b0c02552c400d0d025517121010025517b8fff440110f0f0255
|
||||
17060e0e025517160d0d025517b8ffea400b0b0b065517121010065517b8ffeeb40c0c065517
|
||||
b8fffc404a0d0d065517740f012500221f24bf0fcf0fdf0fff0f041f0f3f0f4f0f030f200b0b
|
||||
02550f1a0c0c02550f220d0d02550f1c0b0b06550f0c0d0d06550f1a0c0c06550f192b2c7421
|
||||
3450182b2b4ef42b2b2b2b2b2b5d714dedf4ed10fd2b2b2b2b2b2b2b2b2b2b5d713c10fde4f6
|
||||
3c003fede43fedfd5de43fede43f3c3130015d71005d71171716171633323637362706232202
|
||||
3534123633321735331114060623222613141633323635342623220666af0b3243747d88180e
|
||||
0176b0dbf06ed18dbc7aa665dba0beea99a67d7ca8ad7a78a8581a512532645a37b08b013cdd
|
||||
9801018c9880fc6af8cf78ab032ad1c0bfccc3c6c3000001007cfe51026005d30010003d400a
|
||||
270f0100101207081010b80133b3009f0e08b801334011079f0e5e0003100320030303ac119d
|
||||
8c182b10f65dfdf6ed10f6ed003f3c3f3c3130015d0126021134373637330607060706151001
|
||||
01df95ce4d5abc8179273d232b012bfe51bc01f8010eeedafdfbd0598a96bbbdfe1ffe200001
|
||||
007cfe51026005d300100065400c2802281002090a1001001209b80133b30a9f0301b80133b4
|
||||
009f035e0eb8fff0b4101002550eb8fff8b40f0f02550eb8ffe4b40d0d02550eb8ffec400f0a
|
||||
0a02550f0e1f0e020eac129d8c182b10f65d2b2b2b2bfdf6ed10f6ed003f3c3f3c3130015d13
|
||||
23001134272627262733161716151002fd81012b2b223d277a81bc5a4dcffe5101e001e1bcb9
|
||||
968a5ad2fbfddaeefef2fe0800000001008700000626043e002301c7b9000dfff4b40d0d0655
|
||||
08b8fff4b40d0d065509b8ffd8404d0b0d342504e404e409e117e52005d505f6200217082023
|
||||
09181b20090303231e1c06151c0b0b06070106231a19100ad025019025a025022517171a0e25
|
||||
90110111041010025511180f0f025511b8ffec400b0e0e025511140c0c025511b8ffe840170b
|
||||
0b025511020b0b0655110c1010065511060f0f065511b8fffab40c0c065511b8fff8b40d0d06
|
||||
5511b8015d400c1825901b011b180f0f02551bb8ffec400b0e0e02551b140c0c02551bb8ffee
|
||||
40110b0b02551b040b0b06551b0a101006551bb8fffe400b0d0d06551b0c0f0f06551bb8fffc
|
||||
b40c0c06551bb8015d4016000233232501d000019000a000021f003f004f000300b8fffe401d
|
||||
0e0e025500100d0d025500100c0c0255000c0b0b025500160b0b065500b8fffcb41010065500
|
||||
b8fff440140f0f0655000a0c0c0655000e0d0d065500192425b80178b3214750182b2b4ef42b
|
||||
2b2b2b2b2b2b2b2b5d71723c4dfde410f42b2b2b2b2b2b2b2b2b5dedf42b2b2b2b2b2b2b2b2b
|
||||
2b5dfd4e456544e67172003f3c3c3c3f3f3c4d10ed10ed11173901111239123931304379400e
|
||||
0c141326140c111b01120d151b01002b012b2b81015d005d2b2b2b3311331536363332161736
|
||||
3332161511231134262623220615112311342623220606151187a132a66a76971f7eca9eaab3
|
||||
235c3e7094b458644c813a0426954e5f6258baafb6fd27029d6c5f3a95a4fd9702b27878509a
|
||||
91fdd900000100bf0000018105ba000300ccb5010200080205b8ffc0b3383d3405b8ffc0b333
|
||||
343405b8ffc0b32d303405b8ffc0b328293405b8ffc0b323253405b8ffc0b31d1e3405b8ffc0
|
||||
b3181a3405b8ffc0402a0d103420059005af050303200100008f00a000b000042f0040005000
|
||||
df00f000051220008f0090000305b8ffc0400b0d0d025500181010025500b8ffecb40f0f0255
|
||||
00b8ffeeb40d0d025500b8fff640100c0c025500200b0b065500a204d659182b10f62b2b2b2b
|
||||
2b2b5d435c58b2800001015d5971723cfd5d2b2b2b2b2b2b2b2b3c003f3f313033113311bfc2
|
||||
05bafa460001009c0000051f05ba0009017db1120bb8ffc0400a13153408180c16025503b8ff
|
||||
e840210c1602550802030320070814070708020703030809040202090708040320060605b8ff
|
||||
ecb40f0f025505b8fff2400b0d0d025505120c0c025505b8fff7401a0b0b0655055d200b0120
|
||||
0b500b600b700b800b050b0809200100b8ffc0400d13153420000100201010025500b8fff6b4
|
||||
0f0f025500b8fff6b40d0d025500b8fffa400b0c0c025500040b0b065500b8fff7b40c0c0655
|
||||
00b8fff8400a0d0d0655005d0a3b59182b10f62b2b2b2b2b2b2b5d2b3cfd3c105d71f42b2b2b
|
||||
2b3c10fd3c003f3c3f3c1239390111393987042e2b877dc4b10602435458b90003ffe0b70c11
|
||||
3408200c1134002b2b5931302b2b012b435c58b40840463903b8ffc0b646390840323903b8ff
|
||||
c0b632390722193902b8ffdeb619390722323902b8ffdeb632390722233902b8ffde400b2339
|
||||
070e1439070e133902b8fff4b61339070e1d3902b8fff4b61d39070e153902b8fff8b115392b
|
||||
2b2b2b2b2b2b012b2b2b2b2b2b002b2b2b2b59331133011133112301119cc70302bac7fcfe05
|
||||
bafb81047ffa460480fb800000000001ffe1fe69048afeeb0003001a400c013f00021a050019
|
||||
044341182b4e10e410e6002f4ded3130033521151f04a9fe69828200000200a1000005ad05ba
|
||||
0018002201fc4021120b0e0112361c5a1f66086d1f0409100d0d065508100d0d065507100d0d
|
||||
065524b8ffc0b40c0c02550db8fff4b40c0c02550cb8fff4b40c0c02550bb8fff4b40c0c0255
|
||||
12b8ffe2b3121a3412b8fff0b322273411b8ffe2b31d273410b8ffe2b31d27340fb8ffe2b31d
|
||||
273412b8ffd8b31d263411b8ffe2b3121a3410b8ffe2b3121a340fb8ffe24049121a34250e4a
|
||||
1c4a20530b5c1c6d1c7209780e790f850a880f970da90fb80fe80ee70f100e0c0c20110f1411
|
||||
110f110f0c09121b02211a160a061211100d0c0518090916171a191e17b8ffc040190b0b0655
|
||||
17170021221e0201020018180f0f0e081e260e9c06b8ffe8b40f0f025506b8fff6b40d0d0255
|
||||
06b8ffe040220c0c025506060d0d0655065d2024702480240324221820012000010020101002
|
||||
5500b8fff6b40f0f025500b8fff6b40d0d025500b8fffa400b0c0c025500060b0b065500b8ff
|
||||
f7b40c0c065500b8fff8400a0d0d0655005d233ba8182b4e10f42b2b2b2b2b2b2b5d3c4dfd3c
|
||||
105df62b2b2b2b19e418ed003f3c103c103c3f3cfd3c12392f2bfd3c103c392f121739011117
|
||||
39870e2e2b057d10c43130015d2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b5d435c58400a0840
|
||||
0f390f103a11123a2b2b2b590171435c58b9000effde401a193911221939122219390e401c39
|
||||
1022143910221f39102215392b2b2b2b2b2b2b5933112132161615140607161716171323032e
|
||||
02272623231111213236363534262321a1028ac4cc7acad34d28554cfff4c2556e572d214be1
|
||||
01a185964e97a3fe3005ba4fc8799cd61d25244e75fe710131848c380b07fd75033337794768
|
||||
8600000100a2000004e805ba000b0095401506051e080807070003041e0201020a091e0b0008
|
||||
07b8ffc0401d1012340754034a200a200d020a1a0d0409200120000100201010025500b8fff6
|
||||
b40f0f025500b8fff6b40d0d025500b8fffab40c0c025500b8fffab40c0c065500b8fff0400a
|
||||
0d0d0655005d0c3b5b182b4e10f42b2b2b2b2b2b5d3c4dfd3c4e10f65d4df4e42b003f3cfd3c
|
||||
3f3cfd3c12392f3c10fd3c3130331121152111211521112115a20424fc9e032bfcd5038405ba
|
||||
adfe3facfe0dad0000020058ff8e05ee05d400150028016840955f269f260219183715020b1c
|
||||
041f04231b1c141f1423062a052d172b263b053c173a264c054c1749265d05552358266f057b
|
||||
037a058c038c0595009a03a400ab03d500d516e500e517e5181a1c052b002a053b05045d0592
|
||||
189626d5260425162a26341639264918491c451f45234b265608581155155a1c5a1d561f5720
|
||||
5722690566156b267b268e1c8e26db18dc26190b180115b8ffd4b21b3900b8ffd440381b3904
|
||||
1814182a053a0504020316280307282618160500062103131a0502282618160005241e1e0f03
|
||||
0208241e07091a2613180f0f025513b8ffeeb40d0d025513b8ffe8b40c0c025513b8fff0b40b
|
||||
0b065513b8fff4b40d0d065513b8fff440250c0c0655134a021a202a802a022a2126200b010b
|
||||
180b0b06550b060c0c06550b1929635c182b4e10f42b2b5d4ded4e105df64df42b2b2b2b2b2b
|
||||
ed003fed3f3fed11173912390111123912173900113310c910c95d3130012b2b5d5d0072715d
|
||||
015d717225161707262706232224023534122433320412151402251617361134022623220011
|
||||
1000333237262704f58772399e9da3c5c7febcafb00145c9cb0146ab6efde6a86dab79e991d9
|
||||
fee2011bdc685c5b659d5d2b87397b5bc0015cdad90164bac1fea5dab5fedf8d2f5d9c0139b2
|
||||
010a93fed7fed9fee2fece273b19000100a1ffe7052205ba001400d9400a260f58045808c908
|
||||
0416b8ffc0401613153434043b0846044a08760fa605e80f070c000211b802bbb40609142602
|
||||
b8ffecb40f0f025502b8fff2400b0d0d025502100c0c025502b8ffe0401c0b0b0655025d2016
|
||||
01201650160260167016801603160d26200a010ab8ffc0400a1315340a20101002550ab8fff6
|
||||
b40f0f02550ab8fff6b40d0d02550ab8fffa400b0c0c02550a040b0b06550ab8fff7b40c0c06
|
||||
550ab8fff8400a0d0d06550a5d153b59182b4e10f42b2b2b2b2b2b2b2b5ded4d105d5d71f62b
|
||||
2b2b2b4ded003fed3f3c3130015d2b005d013311140204232224023511331114161633323611
|
||||
0460c264fefbd4cefefa70c247ad7dd6b605bafcb1ddfefca38e010de9034ffcb2bfb562c201
|
||||
14000002009e0000055a05ba000f001d00e5402f201f0143081c1d1e02010211101e0f000817
|
||||
262009011f400d0d0255092010100255090a0f0f025509180d0d025509b8fff440150c0c0655
|
||||
091a1f1d10200120000100201010025500b8fff6b40f0f025500b8fff6b40d0d025500b8fffa
|
||||
b40c0c025500b8fff7b40c0c065500b8fff8400a0d0d0655005d1e3b5c182b10f62b2b2b2b2b
|
||||
2b5d3cfd3c10f62b2b2b2b2b5ded003f3cfd3c3f3cfd3c313043794036031b07080608050804
|
||||
08040619181a1802060b0a0c0a0d0a030615161416131603061b03172101120e17210118081c
|
||||
2101160a1121002b2b012b2b2a2a2a2a81015d3311213217161716121514020e022325213236
|
||||
373636353426272623219e01f9ab5a7e5974734e7a91cd85feb1013991a531454d976c4eadfe
|
||||
cc05ba151d4c62fecfc4a7fefea96132ad363145e9a6e6f72a1e0002fffd0000055905ba0007
|
||||
000e0167b6010e0f10025502b8fff2b40f10025502b8fff8b40d0d065502b8fff440590c0c06
|
||||
55090c0c0c0655050c0c0c06552f10301067086809601088039010c905c606c010f0100b0805
|
||||
590156025010680bb010f30cf30df30e09040c040d040e030b0a090504040c0d0e080607070c
|
||||
09050408060c07010000b8fff8400f0c0c02550020070c1407070c020303b8fff840150c0c02
|
||||
550320040c1404040c091e0505081e060306b80270400900080ce94002010202ba010b000101
|
||||
0b40120c2000650703525004cf04df040390040104b80101400b500cc007df0c03900c010cb8
|
||||
010140100f07cf07027f0780070207930fd6d7182b10f45d7119f45d71f45d7118ed10ed1a19
|
||||
10eded00183f3c1aed3fe43c10ed3c10ed87052e2b2b7d10c4872e182b2b7d10c40111123939
|
||||
1139398710c4c40ec4c4870510c4c40ec4c43130014bb00b534bb01e515a58b4040f030807ba
|
||||
fff00000fff838383838590172715d2b2b2b2b2b2b2301330123032103132103262706070302
|
||||
33d10258ddabfd9ba1d901f19946221c3305bafa4601bcfe44025a0196b9778d8b0000000001
|
||||
0066ffe7057605d3001d00d3b563026a1d0201b8ffe8b40b0b065500b8ffe8405f0b0b065520
|
||||
00320d63007000741d8000841d90009a05ab03a50db903b40dc70dd000e41df31d110e121d11
|
||||
1d1d032a0628112a1c201f470d56145715561968056b1d7b128b129a03990e9a1ca801a402a8
|
||||
11d50e130014001a1014101a0402b8ffdeb2283901b8ffc0402d2839100f0001041b131e0c03
|
||||
1b1e040910260f4a0026200101011a1f1726200801080c0b0b065508191e635c182b4e10f42b
|
||||
5d4ded4e10f65d4dedf4ed003fed3fed1117393130012b2b5d5d71005d2b2b01720117060423
|
||||
2224023534122433320417072626232206021514121633323604b4c23dfec3e5edfed79baf01
|
||||
43c2dc012c3bbf33c293a9e35c6de686a3e2020231effbc1016ed2e50155b1e0cb2da092a2fe
|
||||
ef91bbfee98abc000000000100960000055205ba000b01fe401e0322373908093a270a350636
|
||||
0a470a57038603d70307760ad903d90a0306b8fff440180d0d025528058c048a05aa04ea0805
|
||||
0a04013504d6040209b8ffe04009122134032012213403b8ffdeb30c391209b8ffe0b3122134
|
||||
08b8ffe0b312213404b8ffe0b31d213404b8ffc0b312163408b8ffde403d1939080925253d08
|
||||
0919193d060607090a09080a0503040420050a1405050a090808200706140707060a0a000502
|
||||
040102070b0800080a03020b010004b8023a400f300501a005b005c005e00504054a08b8023a
|
||||
400b30070120078007b0070307b80286400c0b2020000100201010025500b8fff6b40f0f0255
|
||||
00b8fff6b40d0d025500b8fffab40c0c025500b8fffab40c0c065500b8fff2400a0d0d065500
|
||||
5d0c3ba8182b10f42b2b2b2b2b2b5dedfd5d71edf45d71ed103c103c3c3c003f3c3c3c3f3c3c
|
||||
3c12392f87052e2b0e7d10c487052e182b047d10c40708103c083c014bb018534bb01b515a58
|
||||
b90004ffd83859b10602435458b90004fff0b30c113403b8fff040170c113406100e11340810
|
||||
0e103409100e11340a100d1034002b2b2b2b2b2b593130012b2b2b2b2b2b2b435c5840110922
|
||||
1939082c1939042c193904221b3905b8ffdeb616390422163906b8ffde400b12390822143904
|
||||
40143908b8ffdeb52539044015392b2b2b2b2b2b2b2b2b2b2b59002b2b2b0171725d2b00715d
|
||||
2b2b33113311012101012101071196c202d80107fd990282ff00fdf6f005bafd2902d7fdaefc
|
||||
9802e6eafe040000000000020003000000000014000100000000003400040020000000040004
|
||||
00010000f026ffff0000f000ffff100000010000000000060058000000000027000000010002
|
||||
0003000400050006000700080009000a000b000c000d000e000f001000110012001300140015
|
||||
0016001700180019001a001b001c001d001e001f002000210022002300240025002605ba0019
|
||||
05ba001a05a70019042600180000ffe70000ffe80000ffe7fe69ffe805ba0019fe69ffe802ea
|
||||
000000b8000000b80000000000a800ad016900ad00bf00c201f0001800af00b900b400c80017
|
||||
0044009c007c009400870006005a00c80089005200520005004400940119ffb4002f00a10003
|
||||
00a100cd00170057007e00ba00160118ffe9007f008503d300870085000d002200410050006f
|
||||
008d014cff75005c00df04830037004c006e00700180ff58ff8eff92ffa400a500b903c8fffd
|
||||
000b001a0063006300cdffee05d8ffdc002d005c0095009900df019209b500400057008000b9
|
||||
039d0072009a035d0401ff67fffa00030021007700cd0004004d00cd01c0022b004c006500e7
|
||||
0118017c034305d8ffa3ffb0ffc40003001c005d0068009a00ba013501470221055cff4dffcd
|
||||
0016002d00780080009900b200b600b600b800bd00da010c05f0ffa4fff00019002c0049007f
|
||||
00b400ce01c003fefd81fe3f000000050018002900390049006f00be00c700d0012301c1026f
|
||||
050c05320540057affd4001400310055005700a700b400e601f7027e027e027f03c60446ff42
|
||||
000e0085009100bf00c200c500e1011a012f014f01560229026f029e03720008002c00310031
|
||||
006400690089009800c700de012b01b6020c02cf03a304ab04fb061dfee0ff0e00060026009b
|
||||
009d00c1010d011801200173018201d601e30243025f029b02e2039404a904d20761001c005e
|
||||
006d008d00ab00f7011201380151015b0168017c01870191019901cd01d001e802410254026b
|
||||
02ef0368037103bd044204420453047304830586058b06e8fe58fec4fed1fef7ff32ff860051
|
||||
007c008100910095009e00b400b900cf00d900d900df00e20105010b010e010e012001210155
|
||||
017b017b017e018d01a201a801a901b401d001d001e201e901f201f501fb020002000206021b
|
||||
0221022202220223027202770294029c02cf02cf02d002ec02f903170322032b0335033c0359
|
||||
036f037103870390039003b503e1041a04cf04ff053205320596059f05a805ab05c205f0060c
|
||||
0782080008ccfca3fd2afddefe00fe88fe96feb2feb4ffe100150019001a001c001f003c0051
|
||||
00610061006a0078009600a500af00d3010c0118011a012a013e014c0151015f016a01710178
|
||||
01820184019a01a501a801a901ae01bc01cd01d701ef0200020d021c02210222022e02350242
|
||||
024f024f025e026502710290029202b402d602fa0307030b030f0315032a0347035d03650374
|
||||
0379039603b003cc03dd03e203f603fc03fc03ff040a041f04220426042b0447045f0475049e
|
||||
04e704e7055c05cb05e5060a066d068606b806f10736073e07500751075d078f07b607d40860
|
||||
00b600c300b500b700000000000000000000000001e00381034503b5008e0233041902ce02ce
|
||||
002d005f0064034d023f000002a80188027d01b402240578063b023b014e00f00426029402c6
|
||||
029f02f6023b034d014b0153006a0231000000000000061404aa0000003c04c300ed04bc0265
|
||||
02ce03b50078060c017e02ef060c00b201000239000001c50330042b03cb00da03df010704a1
|
||||
00db040a011701ed02a70350010b01bd043e05580021039c00ae0371017d00b5024500000afb
|
||||
088c012b014e01aa00870054013201f803ff0003024e00b4003703e30083006b02d800ed0077
|
||||
0088009701640467008e0033017c00e700a6029e0329056e062a061501c90269048a021301b4
|
||||
000204a9000002390124010305140084015d039a06ef02d9007500cf040a00de03ac04bc02cf
|
||||
02ae034d04f005520168006d007d00860071ff810079055804d2016700030156002504e00094
|
||||
007c033204210094007f0072005c002f00b6001800ba00b80041034d00720018001f004c016a
|
||||
01550099009a009a009800b200040078006900140057006e00ce00b4065402b80067050e0165
|
||||
00e7000004cbfe52005affa60099ff67006eff92002dffd40087ff7c00b800a800e5008f00a8
|
||||
0185fe7b0070001e00d900de014c054602cf0546ff2d028a02d90253029600b7000000000000
|
||||
00000000000000000125011800ea00ea00ae0000003e05bb008a04d70053003fff8cffd50015
|
||||
0028002200990062004a00e4006d00ee00e5004803c00033fe4e02b1ff460370007905df0051
|
||||
ffa7ff1f010a0068ff6c004f00bc00a507050061072b4043555441403f3e3d3c3b3a39383735
|
||||
34333231302f2e2d2c2b2a292827262524232221201f1e1d1c1b1a191817161514131211100f
|
||||
0e0d0c0b0a090807060504030201002c4523466020b02660b004262348482d2c452346236120
|
||||
b02661b004262348482d2c45234660b0206120b04660b004262348482d2c4523462361b02060
|
||||
20b02661b02061b004262348482d2c45234660b0406120b06660b004262348482d2c45234623
|
||||
61b0406020b02661b04061b004262348482d2c0110203c003c2d2c20452320b0cd442320b801
|
||||
5a51582320b08d44235920b0ed51582320b04d44235920b09051582320b00d44235921212d2c
|
||||
20204518684420b001602045b04676688a4560442d2c01b10b0a432343650a2d2c00b10a0b43
|
||||
23430b2d2c00b0172370b101173e01b0172370b10217453ab10200080d2d2c45b01a234445b0
|
||||
1923442d2c2045b00325456164b050515845441b2121592d2cb00143632362b0002342b00f2b
|
||||
2d2c2045b0004360442d2c01b00643b00743650a2d2c2069b04061b0008b20b12cc08a8cb810
|
||||
0062602b0c642364615c58b00361592d2c45b0112bb0172344b0177ae4182d2c45b0112bb017
|
||||
23442d2cb01243588745b0112bb0172344b0177ae41b038a45186920b01723448a8a8720b0a0
|
||||
5158b0112bb0172344b0177ae41b21b0177ae45959182d2c2d2cb0022546608a46b040618c48
|
||||
2d2c4b53205c58b002855958b00185592d2c20b0032545b019234445b01a23444565234520b0
|
||||
0325606a20b009234223688a6a606120b01a8ab000527921b21a1a40b9ffe0001a45208a5458
|
||||
2321b03f1b235961441cb114008a5279b31940201945208a54582321b03f1b235961442d2cb1
|
||||
10114323430b2d2cb10e0f4323430b2d2cb10c0d4323430b2d2cb10c0d432343650b2d2cb10e
|
||||
0f432343650b2d2cb11011432343650b2d2c4b525845441b2121592d2c0120b003252349b040
|
||||
60b0206320b000525823b002253823b002256538008a63381b212121212159012d2c4bb06451
|
||||
584569b00943608a103a1b212121592d2c01b005251023208af500b0016023edec2d2c01b005
|
||||
251023208af500b0016123edec2d2c01b0062510f500edec2d2c20b001600110203c003c2d2c
|
||||
20b001610110203c003c2d2cb02b2bb02a2a2d2c00b00743b006430b2d2c3eb02a2a2d2c352d
|
||||
2c76b8022323701020b802234520b0005058b00161593a2f182d2c21210c6423648bb8400062
|
||||
2d2c21b08051580c6423648bb82000621bb200402f2b59b002602d2c21b0c051580c6423648b
|
||||
b81555621bb200802f2b59b002602d2c0c6423648bb84000626023212d2cb4000100000015b0
|
||||
0826b00826b00826b008260f10161345683ab001162d2cb4000100000015b00826b00826b008
|
||||
26b008260f1016134568653ab001162d2c4b53234b515a5820458a60441b2121592d2c4b5458
|
||||
20458a60441b2121592d2c4b53234b515a58381b2121592d2c4b5458381b2121592d2cb01343
|
||||
58031b02592d2cb0134358021b03592d2c4b54b012435c5a58381b2121592d2cb012435c580c
|
||||
b00425b00425060c6423646164b807085158b00425b00425012046b01060482046b010604859
|
||||
0a21211b2121592d2cb012435c580cb00425b00425060c6423646164b807085158b00425b004
|
||||
25012046b8fff060482046b8fff06048590a21211b2121592d2c4b53234b515a58b03a2b1b21
|
||||
21592d2c4b53234b515a58b03b2b1b2121592d2c4b53234b515ab012435c5a58381b2121592d
|
||||
2c0c8a034b54b00426024b545a8a8a0ab012435c5a58381b2121592d2c4b5258b00425b00425
|
||||
49b00425b00425496120b0005458212043b0005558b00325b00325b8ffc038b8ffc038591bb0
|
||||
4054582043b0005458b00225b8ffc038591b2043b0005458b00325b00325b8ffc038b8ffc038
|
||||
1bb00325b8ffc03859595959212121212d2c462346608a8a462320468a608a61b8ff80622320
|
||||
10238ab902c202c28a70456020b0005058b00161b8ffba8b1bb0468c59b0106068013a2d2cb1
|
||||
020042b123018851b1400188535a58b910000020885458b202010243604259b12401885158b9
|
||||
20000040885458b2020202436042b12401885458b2022002436042004b014b5258b202080243
|
||||
6042591bb940000080885458b202040243604259b94000008063b80100885458b20208024360
|
||||
4259b94000010063b80200885458b202100243604259b94000020063b80400885458b2024002
|
||||
43604259595959592d2cb0024354584b53234b515a58381b2121591b21212121592d00000001
|
||||
000000030000ea930bd45f0f3cf5081b080000000000a2e3272a00000000b9d5b4f6faaffd67
|
||||
1000080c00000009000100010000000000010000073efe4e00431000faaffe26100000010000
|
||||
000000000000000000000000002706000100078d00190473004402aa0085040000880400003f
|
||||
047300870473004a040000500473004b02390000047300860239002404e30030047300870473
|
||||
00460556005c0473008301c70088047300870400000f0556009e0473009601c7008304730042
|
||||
02aa007c02aa007c06aa0087023900bf05c7009c0473ffe105c700a1055600a20639005805c7
|
||||
00a105c7009e0556fffd05c7006605560096000000000000002c0000026c0000043000000538
|
||||
000007d000000b7800000d3c00001010000011c4000013840000138400001564000016880000
|
||||
1738000018dc00001a9000001d3c00001edc00001fd000002198000023bc000024c400002550
|
||||
0000264c0000283c000028bc0000296400002b9400002c7800002e2400002e58000030c40000
|
||||
31880000337c000034a0000035e800003794000038d000003b080001000000270100003f0076
|
||||
000700020010002f00560000040d0aff00030002b1540f4122031700ef031700ff0317000300
|
||||
1f0317002f0317004f0317005f0317008f0317009f03170006000f0317005f0317006f031700
|
||||
7f031700bf031700f00317000600400317b2923340b80317b28b3340b80317b36a6c3240b803
|
||||
17b2613340b80317b35c5d3240b80317b357593240b80317b34d513240b80317b344493240b8
|
||||
0317b23a3340b80317b331343240b80317b32e423240b80317b3272c3240b80317b312253280
|
||||
b80317b30a0d32c04116031600d00316000200700316000102c4000f0101001f00a0031500b0
|
||||
031500020306000f0101001f00400312b32426329fbf03040001030203010064001fffc00301
|
||||
b20d1132410a02ff02ef0012001f02ee02ed0064001fffc002edb30e11329f414a02e200af02
|
||||
e200bf02e2000302e202e202e102e1007f02e00001001002e0003f02e0009f02e000bf02e000
|
||||
cf02e000ef02e0000602e002e002df02df02de02de000f02dd002f02dd003f02dd005f02dd00
|
||||
9f02dd00bf02dd00ef02dd000702dd02dd001002dc0001000002dc0001001002dc003f02dc00
|
||||
0202dc02dc001002db000102db02db000f02da000102da02daffc002d3b2373932b9ffc002d3
|
||||
b22b2f32b9ffc002d3b21f2532b9ffc002d3b2171b32b9ffc002d3b2121632b802d2b2f9291f
|
||||
b802e3b3202b1fa0413002d400b002d40002000002d4001002d4002002d4005002d4006002d4
|
||||
007002d40006006002d6007002d6008002d6009002d600a002d600b002d60006000002d60010
|
||||
02d6002002ca002002cc002002d6003002d6004002d6005002d6000802d0b2202b1fb802cfb2
|
||||
26421f411602ce02c70017001f02cd02c80017001f02cc02c60017001f02cb02c50017001f02
|
||||
c902c5001e001f02ca02c6b21e1f00410b02c6000002c7001002c6001002c7002f02c5000502
|
||||
c1b324121fff411102bf0001001f02bf002f02bf003f02bf004f02bf005f02bf008f02bf0006
|
||||
02bf0222b2641f12410b02bb00ca0800001f02b200e90800001f02a600a20800406a1f402643
|
||||
4932402043493240263a3d3240203a3d329f209f26024026969932402096993240268e923240
|
||||
208e92324026848c324020848c3240267a813240207a813240266c763240206c76324026646a
|
||||
324020646a3240265a5f3240205a5f3240264f543240204f5432b8029eb724271f374f6b0120
|
||||
410f0277003002770040027700500277000402770277027700f90400001f029bb22a2a1fb802
|
||||
9a402b292a1f80ba0180bc0180520180a201806501807e01808101803c01805e01802b01801c
|
||||
01801e0180400180bb0138000100800140b40180400180bb013800010080013940180180ca01
|
||||
80ad018073018026018025018024018020013740b80221b2493340b80221b2453340b80221b3
|
||||
41423240b80221b33d3e320f410f0221003f0221007f0221000300bf022100cf022100ff0221
|
||||
000300400221b320223240b80221b3191e3240b80222b32a3f3240b80221b32e3a326f414802
|
||||
c3007f02c3008f02c300df02c30004002f02c3006002c300cf02c30003000f02c3003f02c300
|
||||
5f02c300c002c300ef02c300ff02c3000600df02220001008f02220001000f0222002f022200
|
||||
3f0222005f0222007f022200ef0222000600bf022100ef02210002006f0221007f022100af02
|
||||
210003002f0221003f0221004f0221000302c302c30222022202210221401d101c102b104803
|
||||
8f1c010f1e014f1eff1e023700161600000012110811b8010db6f70df8f70d00094109028e02
|
||||
8f001d001f0290028f001d001f028fb2f91d1fb80198b226bb1f41150197001e0401001f0139
|
||||
00260125001f013800730401001f0135001c0801001f0134001c02ab001f0132b21c561fb801
|
||||
0fb2262c1fba010e001e0401b61ff91ce41fe91cb80201b61fe81cbb1fd720b80401b21fd51c
|
||||
b802abb61fd41c891fc92fb80801b21fbc26b80101b21fba20b80201b61fb91c381fadcab804
|
||||
01b21f8126b8019ab21f7e26b8019ab61f7d1c471f6b1cb80401b21f6526b8019ab21f5e73b8
|
||||
0401400f1f52265a1f481c891f441c621f4073b80801b61f3f1c5e1f3c26b8019ab21f351cb8
|
||||
0401b61f301cbb1f2b1cb80401b61f2a1c561f291cb80101b21f231eb80401b21f5537b80168
|
||||
402c07960758074f07360732072c0721071f071d071b071408120810080e080c080a08080806
|
||||
0804080208000814b8ffe0402b00000100140610000001000604000001000410000001001002
|
||||
000001000200000001000002010802004a00b013034b024b5342014bb0c063004b6220b0f653
|
||||
23b8010a515ab005234201b0124b004b5442b0382b4bb807ff52b0372b4bb007505b58b10101
|
||||
8e59b0382bb00288b801005458b801ffb101018e851bb0124358b900010111858d1bb9000101
|
||||
28858d5959001816763f183f123e113946443e113946443e113946443e113946443e11394660
|
||||
443e11394660442b2b2b2b2b2b2b2b2b2b2b182b2b2b2b2b2b2b2b2b2b2b182b1db0964b5358
|
||||
b0aa1d59b0324b5358b0ff1d594bb09353205c58b901f201f04544b901f101f045445958b903
|
||||
3e01f2455258b901f2033e4459594bb8015653205c58b9002001f14544b9002601f145445958
|
||||
b9081e0020455258b90020081e4459594bb8019a53205c58b9002501f24544b9002401f24544
|
||||
5958b909090025455258b9002509094459594bb8040153205c58b173244544b1242445445958
|
||||
b917200073455258b9007317204459594bb8040153205c58b1ca254544b1252545445958b916
|
||||
8000ca455258b900ca16804459594bb03e53205c58b11c1c4544b11e1c45445958b9011a001c
|
||||
455258b9001c011a4459594bb05653205c58b11c1c4544b12f1c45445958b90189001c455258
|
||||
b9001c01894459594bb8030153205c58b11c1c4544b11c1c45445958b90de0001c455258b900
|
||||
1c0de04459592b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
||||
2b2b2b2b2b2b2b2b2b65422b2b01b33b59635c456523456023456560234560b08b766818b080
|
||||
622020b163594565234520b003266062636820b003266165b059236544b063234420b13b5c45
|
||||
65234520b003266062636820b003266165b05c236544b03b2344b1005c455458b15c406544b2
|
||||
3b403b4523614459b347503437456523456023456560234560b089766818b080622020b13450
|
||||
4565234520b003266062636820b003266165b050236544b034234420b147374565234520b003
|
||||
266062636820b003266165b037236544b0472344b10037455458b137406544b2474047452361
|
||||
4459004b5342014b5058b108004259435c58b108004259b3020b0a124358601b215942161070
|
||||
3eb0124358b93b21187e1bba040001a8000b2b59b00c2342b00d2342b0124358b92d412d411b
|
||||
ba04000400000b2b59b00e2342b00f2342b0124358b9187e3b211bba01a80400000b2b59b010
|
||||
2342b0112342002b7475737500184569444569444569447373737374757374752b2b2b2b7475
|
||||
2b2b2b2b2b737373737373737373737373737373737373737373737373732b2b2b45b0406144
|
||||
737400004bb02a534bb03f515a58b1070745b040604459004bb03a534bb03f515a58b10b0b45
|
||||
b8ffc0604459004bb02e534bb03a515a58b1030345b040604459004bb02e534bb03c515a58b1
|
||||
090945b8ffc06044592b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b752b2b2b2b2b2b2b435c58
|
||||
b9008002bbb301401e017400735903b01e4b5402b0124b545ab012435c5a58ba009f02220001
|
||||
007359002b7473012b01732b2b2b2b2b2b2b2b737373732b002b2b2b2b2b2b00456944734569
|
||||
4473456944737475456944734569444569444569447374456944456944732b2b2b2b2b732b00
|
||||
2b732b74752b2b2b2b2b2b2b2b2b2b2b2b2b2b7374752b0000>
|
||||
] def
|
||||
FontName currentdict end definefont pop
|
||||
%%Page: 1 1
|
||||
%%BeginPageSetup
|
||||
%%PageBoundingBox: 0 0 196 229
|
||||
%%EndPageSetup
|
||||
q
|
||||
1 g
|
||||
84.574 223.767 111.258 -223.258 re f
|
||||
0 g
|
||||
0.8 w
|
||||
0 J
|
||||
0 j
|
||||
[] 0.0 d
|
||||
4 M q 1 0 0 -1 0 228.91925 cm
|
||||
84.574 5.152 111.258 223.258 re S Q
|
||||
BT
|
||||
9.6 0 0 9.6 0.084375 2.047373 Tm
|
||||
/f-0-0 1 Tf
|
||||
[<010203>-1<04050607>-1<08090a0b07>-1<0509>]TJ
|
||||
0 22.916667 Td
|
||||
[<010203>-1<04050607>-1<08090a0c>1<02>-1<06>]TJ
|
||||
ET
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.16 205.164 m 195.816 205.164 l S Q
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.602 56.379 m 195.859 56.379 l S Q
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.602 116.379 m 195.859 116.379 l S Q
|
||||
BT
|
||||
9.6 0 0 9.6 98.925002 8.414549 Tm
|
||||
/f-0-0 1 Tf
|
||||
[<0d0e>-1<03>-1<0907>-1<0f0a10>-1<0c>1<03>-1<11>-1<080c>1<11>-1<03>-1<09>]TJ
|
||||
0.68164 11.25 Td
|
||||
[<1213>-1<0c>1<080c140a100c03>-1<11080c1103>-1<09>]TJ
|
||||
0.343913 7.916667 Td
|
||||
[<0d0e>-1<03>-1<0907>-1<0f0a10>-1<0c>1<07>-1<0804>]TJ
|
||||
-11.375163 -8.809407 Td
|
||||
[<10>-1<0c>1<07>-1<08040a>1<15>-1<02>-1<1213>-1<0c>1<09>-1<03>]TJ
|
||||
ET
|
||||
0.558281 w
|
||||
[] 0.0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
76.48 227.523 m 83.652 227.523 l S Q
|
||||
81.422 1.396 m 80.305 0.279 l 84.211 1.396 l 80.305 2.513 l 81.422
|
||||
1.396 l h
|
||||
81.422 1.396 m f*
|
||||
0.279141 w
|
||||
q -1 0 0 1 0 228.91925 cm
|
||||
-81.422 -227.523 m -80.305 -228.641 l -84.211 -227.523 l -80.305
|
||||
-226.406 l -81.422 -227.523 l h
|
||||
-81.422 -227.523 m S Q
|
||||
0.558281 w
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
76.48 115.523 m 83.652 115.523 l S Q
|
||||
81.422 113.396 m 80.305 112.279 l 84.211 113.396 l 80.305 114.513 l
|
||||
81.422 113.396 l h
|
||||
81.422 113.396 m f*
|
||||
0.279141 w
|
||||
q -1 0 0 1 0 228.91925 cm
|
||||
-81.422 -115.523 m -80.305 -116.641 l -84.211 -115.523 l -80.305
|
||||
-114.406 l -81.422 -115.523 l h
|
||||
-81.422 -115.523 m S Q
|
||||
0.558281 w
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
76.332 6.035 m 83.504 6.035 l S Q
|
||||
81.27 222.884 m 80.152 221.767 l 84.063 222.884 l 80.152 224.001 l
|
||||
81.27 222.884 l h
|
||||
81.27 222.884 m f*
|
||||
0.279141 w
|
||||
q -1 0 0 1 0 228.91925 cm
|
||||
-81.27 -6.035 m -80.152 -7.152 l -84.063 -6.035 l -80.152 -4.918 l
|
||||
-81.27 -6.035 l h
|
||||
-81.27 -6.035 m S Q
|
||||
0.8 w
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.145 181.18 m 195.801 181.18 l S Q
|
||||
BT
|
||||
9.6 0 0 9.6 88.22969 31.844237 Tm
|
||||
/f-0-0 1 Tf
|
||||
[<0d0e>-1<03>-1<0907>-1<0f0a1602>-1<080717>-1<0a>1<10>-1<0c0203>-1<07>-1<18
|
||||
09>]TJ
|
||||
ET
|
||||
0.558281 w
|
||||
[] 0.0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
76.332 206.035 m 83.504 206.035 l S Q
|
||||
81.27 22.884 m 80.152 21.767 l 84.063 22.884 l 80.152 24.001 l 81.27
|
||||
22.884 l h
|
||||
81.27 22.884 m f*
|
||||
0.279141 w
|
||||
q -1 0 0 1 0 228.91925 cm
|
||||
-81.27 -206.035 m -80.152 -207.152 l -84.063 -206.035 l -80.152
|
||||
-204.918 l -81.27 -206.035 l h
|
||||
-81.27 -206.035 m S Q
|
||||
BT
|
||||
9.6 0 0 9.6 -0.310938 25.150499 Tm
|
||||
/f-0-0 1 Tf
|
||||
[<080e0d>-1<0e0f>-1<1610>-1<19>-1<1a>]TJ
|
||||
0.0843099 2.006672 Td
|
||||
[<10>-1<0c>1<07>-1<08040a>1<16>-1<121b>-1<12>-1<0c>]TJ
|
||||
ET
|
||||
0.558281 w
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
76.332 182.035 m 83.504 182.035 l S Q
|
||||
81.27 46.884 m 80.152 45.767 l 84.063 46.884 l 80.152 48.001 l 81.27
|
||||
46.884 l h
|
||||
81.27 46.884 m f*
|
||||
0.279141 w
|
||||
q -1 0 0 1 0 228.91925 cm
|
||||
-81.27 -182.035 m -80.152 -183.152 l -84.063 -182.035 l -80.152
|
||||
-180.918 l -81.27 -182.035 l h
|
||||
-81.27 -182.035 m S Q
|
||||
0.8 w
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.543 97.18 m 195.801 97.18 l S Q
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.543 77.18 m 195.801 77.18 l S Q
|
||||
BT
|
||||
9.6 0 0 9.6 102.637498 156.583295 Tm
|
||||
/f-0-0 1 Tf
|
||||
[<09140c080c140a>1<10>-1<0c0311>-1<080c>1<11>-1<03>-1<09>]TJ
|
||||
-1.601887 -1.938639 Td
|
||||
[<1c1d0d1e>-1<1f20>-1<21221c1f20>-1<23>-1<1e10>-1<0d>-1<24>-1<25>]TJ
|
||||
10.675781 0 Td
|
||||
<26>Tj
|
||||
ET
|
||||
Q
|
||||
showpage
|
||||
%%Trailer
|
||||
count op_count sub {pop} repeat
|
||||
countdictstack dict_count sub {end} repeat
|
||||
cairo_eps_state restore
|
||||
%%EOF
|
Binary file not shown.
Before Width: | Height: | Size: 20 KiB |
|
@ -1,280 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://web.resource.org/cc/"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="250"
|
||||
height="300"
|
||||
id="svg2160"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.45.1"
|
||||
version="1.0"
|
||||
sodipodi:docbase="D:\Progetti\ChibiOS-RT\docs\img"
|
||||
sodipodi:docname="workspace.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
inkscape:export-filename="D:\Progetti\ChibiOS-RT\docs\img\workspace.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs2162">
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Mend"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path3299"
|
||||
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
|
||||
</marker>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3224">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3226" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3228" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3224"
|
||||
id="linearGradient3230"
|
||||
x1="199.30756"
|
||||
y1="341.00253"
|
||||
x2="348.78439"
|
||||
y2="341.00253"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3224"
|
||||
id="linearGradient2357"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="199.30756"
|
||||
y1="341.00253"
|
||||
x2="348.78439"
|
||||
y2="341.00253" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.6725"
|
||||
inkscape:cx="125"
|
||||
inkscape:cy="128.25112"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
width="250px"
|
||||
height="300px"
|
||||
gridspacingx="5px"
|
||||
gridspacingy="5px"
|
||||
inkscape:grid-points="false"
|
||||
inkscape:grid-bbox="true"
|
||||
gridtolerance="10"
|
||||
inkscape:object-paths="true"
|
||||
objecttolerance="1"
|
||||
guidetolerance="1"
|
||||
inkscape:window-width="993"
|
||||
inkscape:window-height="871"
|
||||
inkscape:window-x="352"
|
||||
inkscape:window-y="69" />
|
||||
<metadata
|
||||
id="metadata2165">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Livello 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2196"
|
||||
width="139.07188"
|
||||
height="279.0719"
|
||||
x="110.46406"
|
||||
y="10.464057" />
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3180"
|
||||
transform="translate(1.8535156,-54.849147)"><flowRegion
|
||||
id="flowRegion3182"><rect
|
||||
id="rect3184"
|
||||
width="97.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3186">Workspace base</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3188"
|
||||
transform="translate(1.8535156,-329.84915)"><flowRegion
|
||||
id="flowRegion3190"><rect
|
||||
id="rect3192"
|
||||
width="97.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3196">Workspace top</flowPara></flowRoot> <path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1,1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 109.94816,260.4823 C 249.5177,260.4823 249.5177,260.4823 249.5177,260.4823"
|
||||
id="path3243"
|
||||
inkscape:export-filename="C:\Progetti\ChibiOS\homepage\workspace.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 110.5,74.5 C 249.57284,74.5 249.57284,74.5 249.57284,74.5"
|
||||
id="path3245" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 110.5,149.5 C 249.57284,149.5 249.57284,149.5 249.57284,149.5"
|
||||
id="path3247" />
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3249"
|
||||
transform="translate(125.4043,-62.808117)"><flowRegion
|
||||
id="flowRegion3251"><rect
|
||||
id="rect3253"
|
||||
width="107.01046"
|
||||
height="12.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3255">Thread Structure</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3257"
|
||||
transform="translate(133.58398,-197.80812)"><flowRegion
|
||||
id="flowRegion3259"><rect
|
||||
id="rect3261"
|
||||
width="102.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3263">intctx Structure</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3265"
|
||||
transform="translate(137.71094,-292.80812)"><flowRegion
|
||||
id="flowRegion3267"><rect
|
||||
id="rect3269"
|
||||
width="97.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3273">Thread Stack</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3277"
|
||||
transform="translate(1.2089844,-187.09523)"><flowRegion
|
||||
id="flowRegion3279"><rect
|
||||
id="rect3281"
|
||||
width="97.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3283">Stack Pointer</flowPara></flowRoot> <path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6978516px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
|
||||
d="M 100.34893,288.42983 C 109.31485,288.42983 109.31485,288.42983 109.31485,288.42983"
|
||||
id="path3487" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6978516px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
|
||||
d="M 100.34893,148.42983 C 109.31485,148.42983 109.31485,148.42983 109.31485,148.42983"
|
||||
id="path3489" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6978516px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
|
||||
d="M 100.16177,11.570166 C 109.12769,11.570166 109.12769,11.570166 109.12769,11.570166"
|
||||
id="path3491" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 109.93046,230.5 C 249.5,230.5 249.5,230.5 249.5,230.5"
|
||||
id="path2206"
|
||||
inkscape:export-filename="C:\Progetti\ChibiOS\homepage\workspace.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot2208"
|
||||
transform="translate(112.03516,-92.095227)"><flowRegion
|
||||
id="flowRegion2210"><rect
|
||||
id="rect2212"
|
||||
width="132.01047"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara2214">Thread Local Storage</flowPara></flowRoot> <path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6978516px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
|
||||
d="M 100.16177,261.57017 C 109.12769,261.57017 109.12769,261.57017 109.12769,261.57017"
|
||||
id="path2216" />
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot2218"
|
||||
transform="translate(1.359375,-83.728054)"><flowRegion
|
||||
id="flowRegion2220"><rect
|
||||
id="rect2222"
|
||||
width="117.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara2224">chThdLS()</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot2209"
|
||||
transform="translate(2.3710937,-107.80812)"><flowRegion
|
||||
id="flowRegion2211"><rect
|
||||
id="rect2213"
|
||||
width="97.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara2215">Stack Limit</flowPara></flowRoot> <path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6978516px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
|
||||
d="M 100.16177,231.57017 C 109.12769,231.57017 109.12769,231.57017 109.12769,231.57017"
|
||||
id="path2217" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 110.42716,125.5 C 249.5,125.5 249.5,125.5 249.5,125.5"
|
||||
id="path2221" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 110.42716,100.5 C 249.5,100.5 249.5,100.5 249.5,100.5"
|
||||
id="path2223" />
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot2225"
|
||||
transform="translate(130.04492,-248.01905)"><flowRegion
|
||||
id="flowRegion2227"><rect
|
||||
id="rect2229"
|
||||
width="102.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara2231">extctx Structure</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot2235"
|
||||
transform="translate(110.82227,-224.75538)"><flowRegion
|
||||
id="flowRegion2237"><rect
|
||||
id="rect2239"
|
||||
width="137.01047"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara2241">INT_REQUIRED_STACK</flowPara></flowRoot> </g>
|
||||
</svg>
|
Before Width: | Height: | Size: 11 KiB |
|
@ -1,2 +0,0 @@
|
|||
#!/bin/bash
|
||||
rsync -avP -e ssh --delete --exclude=.* ./html/ gdisirio,chibios@web.sourceforge.net:/home/groups/c/ch/chibios/htdocs/docs3/nil
|
|
@ -1,45 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @mainpage Introduction
|
||||
* @author Giovanni Di Sirio (gdisirio@users.sourceforge.net).
|
||||
*
|
||||
* <h2>Why Nil?</h2>
|
||||
* Of course because it is so small that it is almost nil.
|
||||
* I wrote Nil because I wanted to experiment with an idea I had
|
||||
* regarding a minimal RTOS. Basically I wanted to verify how small
|
||||
* could be an RTOS while retaining useful features.
|
||||
*
|
||||
* <h2>Features</h2>
|
||||
* - Free software, GPL3 licensed. Stable releases include a exception clause
|
||||
* to the GPL.
|
||||
* - Designed for realtime applications.
|
||||
* - Easily portable.
|
||||
* - Preemptive scheduling.
|
||||
* - Each thread has its own priority level.
|
||||
* - Offers tasks, time, semaphores, event flags, timeouts.
|
||||
* - Fully static.
|
||||
* - Minimal system requirements: about 700 bytes ROM with all options enabled.
|
||||
* - Almost totally written in C with little ASM code required for ports.
|
||||
* - Compatible with ChibiOS/HAL.
|
||||
* - API compatible with ChibiOS/RT of which, ChibiOS/NIL, is functionally
|
||||
* a subset.
|
||||
* .
|
||||
*/
|
2417
doc/rt/Doxyfile_chm
2417
doc/rt/Doxyfile_chm
File diff suppressed because it is too large
Load Diff
2417
doc/rt/Doxyfile_html
2417
doc/rt/Doxyfile_html
File diff suppressed because it is too large
Load Diff
|
@ -1,8 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Refresh" content="0; URL=html/index.html">
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
|
@ -1,5 +0,0 @@
|
|||
del html\*.* /Q
|
||||
doxygen Doxyfile_chm
|
||||
del html\*.md5
|
||||
del html\*.map
|
||||
pause
|
|
@ -1,5 +0,0 @@
|
|||
del html\*.* /Q
|
||||
doxygen Doxyfile_html
|
||||
del html\*.md5
|
||||
del html\*.map
|
||||
pause
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/bash
|
||||
rm html/*
|
||||
doxygen Doxyfile_html
|
||||
rm html/*.md5
|
||||
rm html/*.map
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
*** Documentation build procedure ***
|
||||
|
||||
The following software must be installed:
|
||||
- Doxygen 1.7.4 or later.
|
||||
- Graphviz 2.26.3 or later. The ./bin directory must be specified in the path
|
||||
in order to make Graphviz accessible by Doxygen.
|
||||
|
||||
Build procedure:
|
||||
- Run Doxywizard.
|
||||
- Load ./docs/Doxyfile_html or ./docs/Doxyfile_chm from Doxywizard.
|
||||
- Start.
|
|
@ -1,174 +0,0 @@
|
|||
***************************************************************************
|
||||
Options: -O2 -fomit-frame-pointer -falign-functions=16
|
||||
Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
|
||||
***************************************************************************
|
||||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 12:43:49
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv4T
|
||||
*** Core Variant: ARM7
|
||||
*** Port Info: Pure ARM mode
|
||||
*** Platform: LPC214x
|
||||
*** Test Board: Olimex LPC-P2148
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority inheritance, simple case)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, priority inheritance, complex case)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.7 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.8 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 158929 msgs/S, 317858 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 118409 msgs/S, 236818 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 118409 msgs/S, 236818 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 503568 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 89082 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 128249 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 37521 reschedules/S, 225126 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 318352 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 380408 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 313716 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 831916 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 375200 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 328 bytes
|
||||
--- Thread: 72 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,174 +0,0 @@
|
|||
***************************************************************************
|
||||
Options: -O2 -fomit-frame-pointer -falign-functions=16
|
||||
Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
|
||||
***************************************************************************
|
||||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 12:46:35
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv4T
|
||||
*** Core Variant: ARM7
|
||||
*** Port Info: Pure THUMB mode
|
||||
*** Platform: LPC214x
|
||||
*** Test Board: Olimex LPC-P2148
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority inheritance, simple case)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, priority inheritance, complex case)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.7 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.8 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 114679 msgs/S, 229358 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 93584 msgs/S, 187168 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 93584 msgs/S, 187168 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 423200 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 70327 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 109934 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 31422 reschedules/S, 188532 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 258820 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 282356 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 313622 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 394420 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 246192 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 328 bytes
|
||||
--- Thread: 72 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Nov 23 2015 - 14:08:46
|
||||
*** Compiler: CW
|
||||
*** Architecture: Power Architecture
|
||||
*** Core Variant: e200z0
|
||||
*** Port Info: VLE mode
|
||||
*** Platform: SPC560Dxx Car Body and Convenience
|
||||
*** Test Board: EVB with SPC560Dxx Mini Module
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 137795 msgs/S, 275590 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 121356 msgs/S, 242712 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 121356 msgs/S, 242712 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 431744 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 97184 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 131718 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 39290 reschedules/S, 235740 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 255000 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 377420 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 540416 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 535768 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 433696 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 640 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 4 2016 - 12:12:53
|
||||
*** Compiler: GCC 4.6.3 build on 2013-01-07
|
||||
*** Architecture: Power Architecture
|
||||
*** Core Variant: e200z0
|
||||
*** Port Info: VLE mode
|
||||
*** Platform: SPC560Dxx Car Body and Convenience
|
||||
*** Test Board: EVB with SPC560Dxx Mini Module
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 152782 msgs/S, 305564 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 128898 msgs/S, 257796 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 128898 msgs/S, 257796 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 452768 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 102403 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 145797 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 40187 reschedules/S, 241122 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 315140 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 389600 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 644036 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 637644 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 503400 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 640 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 4 2016 - 12:19:15
|
||||
*** Compiler: GCC 4.6.3 build on 2013-01-07
|
||||
*** Architecture: Power Architecture
|
||||
*** Core Variant: e200z0
|
||||
*** Port Info: VLE mode
|
||||
*** Platform: SPC560Pxx Chassis and Safety
|
||||
*** Test Board: EVB with SPC560Pxx Mini Module
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 203904 msgs/S, 407808 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 172027 msgs/S, 344054 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 172028 msgs/S, 344056 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 604248 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 136665 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 194575 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 53632 reschedules/S, 321792 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 420560 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 519944 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 857878 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 850996 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 671816 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 640 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 4 2016 - 12:24:32
|
||||
*** Compiler: GCC 4.6.3 build on 2013-01-07
|
||||
*** Architecture: Power Architecture
|
||||
*** Core Variant: e200z3
|
||||
*** Port Info: VLE mode
|
||||
*** Platform: SPC563Mxx Powertrain
|
||||
*** Test Board: EVB with SPC563Mxx Mini Module
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 268017 msgs/S, 536034 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 217039 msgs/S, 434078 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 217039 msgs/S, 434078 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 892448 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 176703 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 257645 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 74919 reschedules/S, 449514 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 602240 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 649676 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 1086362 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 950076 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 806080 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 640 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,163 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Nov 26 2015 - 10:23:43
|
||||
*** Compiler: CW
|
||||
*** Architecture: Power Architecture
|
||||
*** Core Variant: e200z4
|
||||
*** Port Info: VLE mode
|
||||
*** Platform: SPC56ECxx Gateway
|
||||
*** Test Board: EVB with SPC56ECxx Mini Module
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 329243 msgs/S, 658486 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 290181 msgs/S, 580362 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 290180 msgs/S, 580360 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 1048952 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 238257 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 332900 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 90040 reschedules/S, 540240 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 572860 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 963572 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 1182066 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 1606860 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 1245140 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 640 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
|
@ -1,163 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Nov 26 2015 - 10:12:00
|
||||
*** Compiler: GCC 4.6.3 build on 2013-01-07
|
||||
*** Architecture: Power Architecture
|
||||
*** Core Variant: e200z4
|
||||
*** Port Info: VLE mode
|
||||
*** Platform: SPC56ECxx Gateway
|
||||
*** Test Board: EVB with SPC56ECxx Mini Module
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 373370 msgs/S, 746740 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 308897 msgs/S, 617794 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 308901 msgs/S, 617802 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 1088344 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 248658 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 367648 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 94298 reschedules/S, 565788 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 680188 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 985940 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 1477618 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 1762552 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 1325572 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 640 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 4 2016 - 12:05:54
|
||||
*** Compiler: GCC 4.6.3 build on 2013-01-07
|
||||
*** Architecture: Power Architecture
|
||||
*** Core Variant: e200z4
|
||||
*** Port Info: VLE mode
|
||||
*** Platform: SPC56ELxx Chassis and Safety
|
||||
*** Test Board: EVB with SPC56ELxx Mini Module
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 380488 msgs/S, 760976 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 315402 msgs/S, 630804 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 315402 msgs/S, 630804 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 1108472 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 253926 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 375717 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 95576 reschedules/S, 573456 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 688012 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 994116 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 1472694 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 1762556 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 1325572 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 640 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 10:53:39
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv6-M
|
||||
*** Core Variant: Cortex-M0
|
||||
*** Port Info: Preemption through NMI
|
||||
*** Platform: STM32F051x8 Entry Level Medium Density devices
|
||||
*** Test Board: ST STM32F0-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 161605 msgs/S, 323210 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 128334 msgs/S, 256668 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 128334 msgs/S, 256668 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 466560 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 102121 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 146779 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 40506 reschedules/S, 243036 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 339200 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 413564 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 295818 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 872708 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 428564 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 336 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 11:01:25
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M4F
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32F303xC Analog & DSP
|
||||
*** Test Board: STMicroelectronics STM32F3-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 221513 msgs/S, 443026 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 179981 msgs/S, 359962 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 179981 msgs/S, 359962 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 639224 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 135323 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 193007 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 57092 reschedules/S, 342552 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 449948 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 619284 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 431154 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 1035852 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 597440 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 472 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 10:57:31
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M4
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32F303xC Analog & DSP
|
||||
*** Test Board: STMicroelectronics STM32F3-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 280128 msgs/S, 560256 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 216847 msgs/S, 433694 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 216847 msgs/S, 433694 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 915664 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 158227 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 243222 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 68111 reschedules/S, 408666 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 571380 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 619296 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 431168 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 1035872 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 597452 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 336 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 11:08:52
|
||||
*** Compiler: IAR
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M4F
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32F303xC Analog & DSP
|
||||
*** Test Board: STMicroelectronics STM32F3-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 212992 msgs/S, 425984 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 193007 msgs/S, 386014 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 193007 msgs/S, 386014 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 630816 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 129017 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 177319 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 57918 reschedules/S, 347508 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 373500 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 695568 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 549580 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 999876 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 702352 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 472 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 11:15:40
|
||||
*** Compiler: IAR
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M4
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32F303xC Analog & DSP
|
||||
*** Test Board: STMicroelectronics STM32F3-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 272698 msgs/S, 545396 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 239975 msgs/S, 479950 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 239975 msgs/S, 479950 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 888808 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 146923 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 212367 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 69693 reschedules/S, 418158 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 453500 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 698532 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 580638 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 993000 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 698956 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 336 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 11:19:30
|
||||
*** Compiler: RVCT
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M4F
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32F303xC Analog & DSP
|
||||
*** Test Board: STMicroelectronics STM32F3-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 201655 msgs/S, 403310 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 179978 msgs/S, 359956 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 179979 msgs/S, 359958 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 630120 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 138444 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 197237 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 57593 reschedules/S, 345558 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 413144 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 559424 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 349538 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 877936 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 590088 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 472 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 11:24:19
|
||||
*** Compiler: RVCT
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M4
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32F303xC Analog & DSP
|
||||
*** Test Board: STMicroelectronics STM32F3-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 248249 msgs/S, 496498 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 216194 msgs/S, 432388 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 216194 msgs/S, 432388 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 897104 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 158225 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 239177 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 69091 reschedules/S, 414546 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 513320 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 568268 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 344538 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 857048 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 580584 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 336 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 11:35:21
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M4F
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32F407 High Performance with DSP and FPU
|
||||
*** Test Board: STMicroelectronics STM32F4-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 606492 msgs/S, 1212984 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 506019 msgs/S, 1012038 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 506019 msgs/S, 1012038 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 1690560 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 385317 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 533328 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 162948 reschedules/S, 977688 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 1219588 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 1802808 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 1344032 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 3862052 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 2036356 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 472 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 11:31:34
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M4
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32F407 High Performance with DSP and FPU
|
||||
*** Test Board: STMicroelectronics STM32F4-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 803821 msgs/S, 1607642 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 636359 msgs/S, 1272718 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 636358 msgs/S, 1272716 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 2569784 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 459013 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 688519 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 203143 reschedules/S, 1218858 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 1619260 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 1802812 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 1344184 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 3862056 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 2036356 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 336 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 4 2016 - 11:55:52
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M7F
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32F746 Very High Performance with DSP and FPU
|
||||
*** Test Board: STMicroelectronics STM32F746G-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 923070 msgs/S, 1846140 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 833971 msgs/S, 1667942 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 833970 msgs/S, 1667940 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 3570224 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 640942 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 947361 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 299484 reschedules/S, 1796904 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 2122840 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 2517108 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 1990948 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 3043584 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 2470328 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 472 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 4 2016 - 11:31:27
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M7
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32F746 Very High Performance with DSP and FPU
|
||||
*** Test Board: STMicroelectronics STM32F746G-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 1074619 msgs/S, 2149238 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 947361 msgs/S, 1894722 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 947361 msgs/S, 1894722 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 4909064 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 717602 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 1136835 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 349378 reschedules/S, 2096268 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 2548660 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 2530008 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 2000026 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 3052996 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 2489904 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 336 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 12:05:15
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv6-M
|
||||
*** Core Variant: Cortex-M0+
|
||||
*** Port Info: Preemption through NMI
|
||||
*** Platform: STM32L053xx ultra-low-power MCU
|
||||
*** Test Board: STMicroelectronics NUCLEO-L053R8
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 113068 msgs/S, 226136 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 90648 msgs/S, 181296 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 90648 msgs/S, 181296 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 329040 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 71108 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 102232 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 28751 reschedules/S, 172506 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 240140 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 294924 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 196290 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 630528 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 314492 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 328 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 11:48:08
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv7-M
|
||||
*** Core Variant: Cortex-M3
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32L1xx Ultra Low Power Medium Density
|
||||
*** Test Board: ST STM32L-Discovery
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 135579 msgs/S, 271158 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 106657 msgs/S, 213314 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 106657 msgs/S, 213314 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 433128 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 79992 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 118507 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 34592 reschedules/S, 207552 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 262268 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 314660 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 210880 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 680780 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 313696 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 336 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 12:13:33
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M4F
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32L4xx Ultra Low Power
|
||||
*** Test Board: STMicroelectronics NUCLEO-L476RG
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 293033 msgs/S, 586066 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 246148 msgs/S, 492296 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 246148 msgs/S, 492296 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 817360 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 186911 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 257228 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 79286 reschedules/S, 475716 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 586060 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 868376 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 730616 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 1839060 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 981584 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 472 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
|
||||
*** ChibiOS/RT test suite
|
||||
***
|
||||
*** Kernel: 3.1.0
|
||||
*** Compiled: Jan 6 2016 - 12:09:20
|
||||
*** Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
|
||||
*** Architecture: ARMv7E-M
|
||||
*** Core Variant: Cortex-M4
|
||||
*** Port Info: Advanced kernel mode
|
||||
*** Platform: STM32L4xx Ultra Low Power
|
||||
*** Test Board: STMicroelectronics NUCLEO-L476RG
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.1 (System, critical zones)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.2 (System, interrupts handling)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 1.3 (System, integrity)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.1 (Threads, enqueuing test #1)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.2 (Threads, enqueuing test #2)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.3 (Threads, priority change)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 2.4 (Threads, delays)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.1 (Semaphores, enqueuing)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.2 (Semaphores, timeout)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.3 (Semaphores, atomic signal-wait)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 3.4 (Binary Semaphores, functionality)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (Mutexes, priority enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (Mutexes, priority return)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.3 (Mutexes, status)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 4.6 (CondVar, boost test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, loop)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, registration and dispatch)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.2 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 7.3 (Events, timeouts)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, queue/dequeue)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 10.3 (Dynamic APIs, registry and references)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Queues, input queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Queues, output queues)
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.1 (Benchmark, messages #1)
|
||||
--- Score : 390235 msgs/S, 780470 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.2 (Benchmark, messages #2)
|
||||
--- Score : 311278 msgs/S, 622556 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.3 (Benchmark, messages #3)
|
||||
--- Score : 311278 msgs/S, 622556 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.4 (Benchmark, context switch)
|
||||
--- Score : 1252432 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.5 (Benchmark, threads, full cycle)
|
||||
--- Score : 223459 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.6 (Benchmark, threads, create only)
|
||||
--- Score : 333327 threads/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
|
||||
--- Score : 99378 reschedules/S, 596268 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.8 (Benchmark, round robin context switching)
|
||||
--- Score : 780476 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.9 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 868380 bytes/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.10 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 730694 timers/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.11 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 1839064 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 981588 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
--- Test Case 12.13 (Benchmark, RAM footprint)
|
||||
--- System: 336 bytes
|
||||
--- Thread: 68 bytes
|
||||
--- Timer : 20 bytes
|
||||
--- Semaph: 12 bytes
|
||||
--- EventS: 4 bytes
|
||||
--- EventL: 20 bytes
|
||||
--- Mutex : 16 bytes
|
||||
--- CondV.: 8 bytes
|
||||
--- Queue : 36 bytes
|
||||
--- MailB.: 40 bytes
|
||||
--- Result: SUCCESS
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Final result: SUCCESS
|
||||
|
Binary file not shown.
|
@ -1,870 +0,0 @@
|
|||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%Creator: cairo 1.8.8 (http://cairographics.org)
|
||||
%%CreationDate: Mon Aug 30 12:09:46 2010
|
||||
%%Pages: 1
|
||||
%%BoundingBox: 0 0 196 229
|
||||
%%DocumentData: Clean7Bit
|
||||
%%LanguageLevel: 2
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
/cairo_eps_state save def
|
||||
/dict_count countdictstack def
|
||||
/op_count count 1 sub def
|
||||
userdict begin
|
||||
/q { gsave } bind def
|
||||
/Q { grestore } bind def
|
||||
/cm { 6 array astore concat } bind def
|
||||
/w { setlinewidth } bind def
|
||||
/J { setlinecap } bind def
|
||||
/j { setlinejoin } bind def
|
||||
/M { setmiterlimit } bind def
|
||||
/d { setdash } bind def
|
||||
/m { moveto } bind def
|
||||
/l { lineto } bind def
|
||||
/c { curveto } bind def
|
||||
/h { closepath } bind def
|
||||
/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
|
||||
0 exch rlineto 0 rlineto closepath } bind def
|
||||
/S { stroke } bind def
|
||||
/f { fill } bind def
|
||||
/f* { eofill } bind def
|
||||
/B { fill stroke } bind def
|
||||
/B* { eofill stroke } bind def
|
||||
/n { newpath } bind def
|
||||
/W { clip } bind def
|
||||
/W* { eoclip } bind def
|
||||
/BT { } bind def
|
||||
/ET { } bind def
|
||||
/pdfmark where { pop globaldict /?pdfmark /exec load put }
|
||||
{ globaldict begin /?pdfmark /pop load def /pdfmark
|
||||
/cleartomark load def end } ifelse
|
||||
/BDC { mark 3 1 roll /BDC pdfmark } bind def
|
||||
/EMC { mark /EMC pdfmark } bind def
|
||||
/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
|
||||
/Tj { show currentpoint cairo_store_point } bind def
|
||||
/TJ {
|
||||
{
|
||||
dup
|
||||
type /stringtype eq
|
||||
{ show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
|
||||
} forall
|
||||
currentpoint cairo_store_point
|
||||
} bind def
|
||||
/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
|
||||
cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
|
||||
/Tf { pop /cairo_font exch def /cairo_font_matrix where
|
||||
{ pop cairo_selectfont } if } bind def
|
||||
/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
|
||||
/cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
|
||||
/cairo_font where { pop cairo_selectfont } if } bind def
|
||||
/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
|
||||
cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
|
||||
/g { setgray } bind def
|
||||
/rg { setrgbcolor } bind def
|
||||
/d1 { setcachedevice } bind def
|
||||
%%EndProlog
|
||||
11 dict begin
|
||||
/FontType 42 def
|
||||
/FontName /f-0-0 def
|
||||
/PaintType 0 def
|
||||
/FontMatrix [ 1 0 0 1 0 0 ] def
|
||||
/FontBBox [ 0 0 0 0 ] def
|
||||
/Encoding 256 array def
|
||||
0 1 255 { Encoding exch /.notdef put } for
|
||||
Encoding 1 /uni0057 put
|
||||
Encoding 2 /uni006F put
|
||||
Encoding 3 /uni0072 put
|
||||
Encoding 4 /uni006B put
|
||||
Encoding 5 /uni0073 put
|
||||
Encoding 6 /uni0070 put
|
||||
Encoding 7 /uni0061 put
|
||||
Encoding 8 /uni0063 put
|
||||
Encoding 9 /uni0065 put
|
||||
Encoding 10 /uni0020 put
|
||||
Encoding 11 /uni0062 put
|
||||
Encoding 12 /uni0074 put
|
||||
Encoding 13 /uni0054 put
|
||||
Encoding 14 /uni0068 put
|
||||
Encoding 15 /uni0064 put
|
||||
Encoding 16 /uni0053 put
|
||||
Encoding 17 /uni0075 put
|
||||
Encoding 18 /uni0069 put
|
||||
Encoding 19 /uni006E put
|
||||
Encoding 20 /uni0078 put
|
||||
Encoding 21 /uni0050 put
|
||||
Encoding 22 /uni004C put
|
||||
Encoding 23 /uni006C put
|
||||
Encoding 24 /uni0067 put
|
||||
Encoding 25 /uni0028 put
|
||||
Encoding 26 /uni0029 put
|
||||
Encoding 27 /uni006D put
|
||||
Encoding 28 /uni0049 put
|
||||
Encoding 29 /uni004E put
|
||||
Encoding 30 /uni005F put
|
||||
Encoding 31 /uni0052 put
|
||||
Encoding 32 /uni0045 put
|
||||
Encoding 33 /uni0051 put
|
||||
Encoding 34 /uni0055 put
|
||||
Encoding 35 /uni0044 put
|
||||
Encoding 36 /uni0041 put
|
||||
Encoding 37 /uni0043 put
|
||||
Encoding 38 /uni004B put
|
||||
/CharStrings 39 dict dup begin
|
||||
/.notdef 0 def
|
||||
/uni0057 1 def
|
||||
/uni006F 2 def
|
||||
/uni0072 3 def
|
||||
/uni006B 4 def
|
||||
/uni0073 5 def
|
||||
/uni0070 6 def
|
||||
/uni0061 7 def
|
||||
/uni0063 8 def
|
||||
/uni0065 9 def
|
||||
/uni0020 10 def
|
||||
/uni0062 11 def
|
||||
/uni0074 12 def
|
||||
/uni0054 13 def
|
||||
/uni0068 14 def
|
||||
/uni0064 15 def
|
||||
/uni0053 16 def
|
||||
/uni0075 17 def
|
||||
/uni0069 18 def
|
||||
/uni006E 19 def
|
||||
/uni0078 20 def
|
||||
/uni0050 21 def
|
||||
/uni004C 22 def
|
||||
/uni006C 23 def
|
||||
/uni0067 24 def
|
||||
/uni0028 25 def
|
||||
/uni0029 26 def
|
||||
/uni006D 27 def
|
||||
/uni0049 28 def
|
||||
/uni004E 29 def
|
||||
/uni005F 30 def
|
||||
/uni0052 31 def
|
||||
/uni0045 32 def
|
||||
/uni0051 33 def
|
||||
/uni0055 34 def
|
||||
/uni0044 35 def
|
||||
/uni0041 36 def
|
||||
/uni0043 37 def
|
||||
/uni004B 38 def
|
||||
end readonly def
|
||||
/sfnts [
|
||||
<00010000000a008000030020636d617001a2f26900003bb40000008c63767420962ad2760000
|
||||
3c40000006306670676dcc79599a000042700000066e676c79668bebc785000000ac00003b08
|
||||
68656164ce982692000048e0000000366868656112330c9c0000491800000024686d7478ae81
|
||||
10400000493c0000009c6c6f63610004d82c000049d8000000a06d61787004e40ca800004a78
|
||||
000000207072657052fec4e900004a9800000aff000201000000050005000003000700002111
|
||||
21112521112101000400fc2003c0fc400500fb002004c0000000000100190000077605ba0018
|
||||
01db402629002611291226183900361139123618490047114912471858005711581257181098
|
||||
08980f02b10602435458403310011a192b153405340c4405440c4b155405540c5b156405640c
|
||||
6b157405740c7b150f05150c030001120800080f0208020102003f3f3f3f3f111217395d0111
|
||||
1239391b401e030405050206070808050a0b0c0c090d0e0f0f0c14131212151617181815b8ff
|
||||
3cb305001820b8ff3cb30c121120b8ff3c405a15080920000502022001001401010018050808
|
||||
1e151814151518120c09091e151214151512110c0f0f2010111410101112090c081815050f11
|
||||
100c000205150c050318100f0f0909080802020102181212111100081a17171a104109015100
|
||||
20000c015100150151004000050151b620200101011919b8018bb1a8182b4e10f45d1a194dfd
|
||||
1a18fdfd1a19fd184e456544e6003f3c103c103c3f3c103c103c103c103c1217390112393911
|
||||
12393911123939113939874d2e2b877dc4872e182b877dc4872e182b877dc4872e182b877dc4
|
||||
2b2b2b870e10c4c4870e103cc4870e10c4c4870e10c4c4870e10c4c4870e10c4c4014bb00f53
|
||||
4bb011515a58b2120a18b8fff6383859014bb025534bb02a515a58b90000ffc03859004bb00b
|
||||
534bb00e515a58b30c40054038385959313001725d2101331316173637013313121736371333
|
||||
0123012627060701019efe7bc7df241a380a0117ead24f231c2de6c3fe6ebbfecb27071714fe
|
||||
c905bafc3f9795eb2403defd1afeecf38bb403aefa46045d8c206547fba3000000020044ffe8
|
||||
0427043e000d0019016bb615180d0d065513b8ffe8b40d0d06550fb8ffe840730d0d06551918
|
||||
0d0d065512070a190c4706480856065908670669080834103a123a16351845104b124b164518
|
||||
5c055c0952105d125d1652186d056d0964106d126d1664187701150906050d5b035405540a5b
|
||||
0c6c036505650a6c0c0a171c0407111c0b0b14241b400d0d02551b400b0b025507b8ffea4011
|
||||
0f0f025507180d0d025507100b0b025507b8fff0b40b0b065507b8fff0b40d0d065507b8fff0
|
||||
b40f0f065507b8fff0b40c0c065507b8ffc04013242534300701000710072007030731df1b01
|
||||
1bb8ffc040491e2334301b011b0e24000c0e0f025500120d0d0255000c0c0c0255001c0b0b02
|
||||
55000e0b0b0655000e0d0d0655000c1010065500160c0c065500402425341f003f000200311a
|
||||
3437182b10f65d2b2b2b2b2b2b2b2b2bed10712b5df65d5d2b2b2b2b2b2b2b2b2b2bed003fed
|
||||
3fed313001715d0071435c584009530553096205620904015d59002b2b2b2b13103736333200
|
||||
1514060623220013141633323635342623220644a489c5db01167beb8bdffeedb9b28786b2b3
|
||||
8587b2021301278e76fee1fdcdeb82011e010dcccbccd1c5cbca000000010085000002c6043e
|
||||
001100c9403b2f1301100401230434044304530466047404060911080908090d1311090d0003
|
||||
08010b1c06070106000a0928900801082220130113022211250100b8ffc04010333634f00001
|
||||
00002000d000e0000400b8fff8b41010025500b8fff840110e0e025500040c0c025500060b0b
|
||||
025500b8fffcb41010065500b8fff440160f0f065500060c0c065500080d0d0655004e1247c4
|
||||
182b10f62b2b2b2b2b2b2b2b5d712b3cfde4105df472e4003f3f3fed11393911393901111239
|
||||
390010c9870e7dc43130005d72015d33113315363633321707262322060706151185a23e693f
|
||||
5b5e3e42423b5e141e0426a171483aa727473f6072fdd400000000010088000003f805ba000b
|
||||
0261401b060c0d0d0655070656065a09030f0df305f60603090c1010025506b8fff4b40c0c02
|
||||
550ab8fff4b40c0c025509b8fff4b40c0c025503b8ffe840100d0d06555503770a0212062013
|
||||
213408b8fff0b312273409b8fff0b41227341205b8fff0b312213409b8fff040841227340604
|
||||
04050406370947040525062d0a580a7703750ada03e30607a60601230626072508390638093f
|
||||
0d4f0d59045906580759097d0479059909c606d204d606e406e907f706f90815120a0a050303
|
||||
04020606070909080a0a050908082507061407070603040425050a1405050a0a090603040801
|
||||
02000405060708080b0b000a04b8010f400905040c0c0655052208b8010f402120073f070207
|
||||
100c0c0655071a900d010d0b2500022501019000013f004f000200b8fffe40310e0e02550010
|
||||
0d0d025500100c0c0255000a0b0b025500120b0b065500120c0c065500080d0d065500190c0d
|
||||
e1214766182b2b4ef42b2b2b2b2b2b2b5d713c4d10ed10ed4e1071f62b5d4dedf42bed003f3c
|
||||
103c103c3f3c3f3c11173987052e2b047d10c487052e182b0e7d10c40710083c083c0310083c
|
||||
083cb10602435458400d4b09011f0984030209180d1134002b5d7159313001435c58400a092c
|
||||
1d3909081d1d3c06b8ffdeb21d3906b8ffd4b2203906b8ffd4b121392b2b2b2b2b595d00715d
|
||||
0171002b2b435c58b90006ffc0b2213903b8ffc0b2163903b8ffdeb2103906b8ffdeb2103903
|
||||
b8ffdeb20c3903b8ffdeb10b392b2b2b2b2b2b59012b2b2b435c584012dd0401081416390908
|
||||
14143c090814143c06b8fff6b2183906b8ffecb11b392b2b2b2b2b015d59005d2b2b2b2b2b01
|
||||
5d712b33113311013301012301071188b401aae9fe6a01bfdefea17f05bafcbc01b0fe76fd64
|
||||
021f7afe5b000001003fffe803b1043e00300317407b042214223a094a094424562265227c09
|
||||
8e098424a613ab2cc2030d09171a1817304b2cd617051b025502021032010a185c085c095c0a
|
||||
5c0b5c0c5c0d6a086a096a0a6a0b6a0c6a0db426b4270f27262427242936245a0a590b642664
|
||||
28742374248024930a9c0c9228972c9530a40aa90ca327a428b326c5261628b8fff4b40d0d06
|
||||
5522b8fff4b40d0d065523b8fff4b40d0d065524b8fff4b40d0d065528b8fff4b40c0c065522
|
||||
b8fff4b40c0c065523b8fff4b40c0c065524b8fff4b40c0c06551db8ffde40121e395a082725
|
||||
0c0a041a202615040b2e1d1ab802aa4022192c0b0b02551f193f194f195f19af19cf19060f19
|
||||
1f196f19df19041f198f190219bd02550015000002aa0001ffc040140b0b0255100140010210
|
||||
01d00102000110010201b8ffc0b314163401b8ffc040100e113401012e5c1d6c1d021d1c1507
|
||||
04b8fff4b40b0b025504b8ffe6b41010065504b8ffe640130f0f0655041c2e0b1f1a011a2419
|
||||
4013183432b8ffc0402f0f0f025519180f0f025519180d0d025519160c0c0255192010100655
|
||||
19200f0f065519100c0c065519160d0d065519b8025bb207242ab8ffc0b51c39d02a012ab8ff
|
||||
e6b40c0c02552ab8ffe8b40f0f02552ab8ffe8b40c0c06552ab8ffeab60d0d06552a1a32b8ff
|
||||
c04021272a346032c032023f3280320232100101012400180d0d025500100d0d06550020b8ff
|
||||
f4b40d0d025520b8fff4b41010065520b8fff440190f0f065520240f100b0b02550f160c0c02
|
||||
550f200d0d02550fb8fffa40200f0f02550f0e0c0c06550f0c0d0d06550f22df00013f004f00
|
||||
020019313437182b4e10f45d714df42b2b2b2b2b2bed2b2b2b102b2bed724e105d712bf62b2b
|
||||
2b2b712b4dedf42b2b2b2b2b2b2b2b2bed72003fed2b2b2b3fed7112392f2b2b5d71722be410
|
||||
fd5d71722be41112391112390111121739313043794040272d1e2305142c2611101210131003
|
||||
06220d201b000928071b01052d071b011e14201b00210e231b0022230d0c08290a1b01282709
|
||||
0a062b041b001f101d1b01002b2b103c103c2b103c103c2b012b2b2b2b2a2b818181002b2b2b
|
||||
2b2b2b2b2b2b5d71015d72715d1337161633323635342726272e023534363736363332161617
|
||||
072626232206151417161716171e02151406062322263fb20f897b7c78352593c6994f41382a
|
||||
91537dbd5a11b00c73697c6a16162f1b84bf975669c67dcfd9013d1c6b7265443d2318253249
|
||||
814e4779281f2b487b6718525c5237231c1d130a2433417c5c5a9f57ac0000020087fe690421
|
||||
043e0012001e0162408e0c102d103d104b10043f20b020021f20290c231d3215321d421d7020
|
||||
9020083a173a1b4a174a1b59085b0c5c175c1b6a086b0c69106d176b1bc020d314dd18dd1ad3
|
||||
1ee414e41ee020ff201623042b102b1535043a1046044a105a10e50beb1dfe100b110e03161c
|
||||
1c06070106161c0e0b000e1924d00a01100a400a600a800a0420400b0b025520400d0d02550a
|
||||
b8ffe6400b0f0f02550a180d0d02550ab8fffab40c0c02550ab8ffeeb40b0b06550ab8fff4b4
|
||||
0f0f06550ab8ffe840230c0c06550a74011333023312250000c001019001a001b001f001041f
|
||||
013f014f010301b8fffc401d0e0e025501100d0d025501100c0c025501100b0b0255010c0b0b
|
||||
065501b8fff6b41010065501b8fffc40160f0f0655010c0c0c065501120d0d065501191f4737
|
||||
18012b4e10f42b2b2b2b2b2b2b2b2b5d71723c4d10fdf4e410fd2b2b2b2b2b2b2b2b5d71ed00
|
||||
3f3fed3f3fed113912393130005d015d71720071131133153636333216161514020623222627
|
||||
1103141633323635342623220687a43a926888d06a75df7b5a8f2e11a67678aba77473b1fe69
|
||||
05bd8a51518cff98a3fefb8b4c3afdfb03a4cdc4cbd5cbcad7000002004affe8041c043e0028
|
||||
0037022d402c090d092a190d1a2a290d2a2a390d3615371b3a2a492a5d0d5d2a6a0d692a6030
|
||||
8a0d86299a169b1aa90d1528b8ffe8b40b0b065527b8ffe840190b0b0655a619aa28b619bb28
|
||||
c419cf28d215dd28084416011eb8fff440110c0c065512120c0c0655050c0c0c065535b8ffe0
|
||||
40550c0c06551f171f182b2c2a343904392c4904482c5608592b6608692b760c870cc90cf90d
|
||||
f92b1137340e0104102f243417322114185f296f2902291c2f0e3f0e8f0e9f0eff0e059f0eaf
|
||||
0eef0e030e0c0f0f02550eb8ffeab4101002550eb8fff44015101006550e0c0d0d06550e060f
|
||||
0f06550e0e1c0317b802aab61895141c1c0700b8fff4401a0c0c06550045270a321c030b2961
|
||||
106100060d0d025500252124b8ffecb41010025524b8ffec400b0d0d025524040c0c025524b8
|
||||
ffe4b40b0b025524b8fff4b40b0b065524b8ffdc400b1010065524060f0f065524b8fffcb40c
|
||||
0c065524b8025b400e27400026102620263026af260539b8ffc0b40e0e025526b8ffd6b60e0e
|
||||
0255263139b8ffc0400d1e23343039c03902a039013917b8fff4404110100655172518222f24
|
||||
bf06cf06021f063f0602060e0f0f0255060c0d0d025506180c0c0255060c0b0b0255060c0b0b
|
||||
0655060e0d0d065506100c0c065506313810f62b2b2b2b2b2b2b5d71edf4ed2b105d712bf62b
|
||||
2b5dedf42b2b2b2b2b2b2b2b3cfd2be5e5003fed3fe42b3fedfde41112392f2b2b2b2b2b5d71
|
||||
ed711112391112393901111217393130005d2b2b2b2b01715d2b2b0071250606232226353436
|
||||
363736373637363534272623220607273e02333216161716151514161723260306070e021514
|
||||
16333236373635033c64b96aafbc477348356bda67013345887f791db0186ed08988aa501009
|
||||
1722bc1c1762c46f5c326d6968a2261d835546ab854e814e140e0d1a24250a6e2d3d59711871
|
||||
8b4b40614a2e78f0fb853d3801dd281c10284d2f48605b4f3d77000000010050ffe803ed043e
|
||||
001a015ab1020243545840340e7f0f010f0b01400050007000030004121c0b07181c040b010e
|
||||
1507080e0e0255070c0d0d0255070c0c0c025507100b0b0255072f2b2b2b2bcdd4c6003fed3f
|
||||
ed10c45d3210c45d3231301b4047090c011f1c4313431753135317601360179b029b039a0da4
|
||||
10a41a0c080d190a6a0269036a05750c700d800da60cb509b60ab50c0c160c860ce302030e22
|
||||
5f0f6f0f7f0f030f01b802aa4079300040005000600070009000a000e000f00009000f0f0b00
|
||||
0004121c0b07181c040b1c0f010f240e080d0d06550e221b000100240b2b1f01010001010140
|
||||
0b0b065501401010065501480c0c0655011a0d0d065501491c1524cf07011f073f0702070e0b
|
||||
0b0655070a1010065507120c0c065507311b34c4182b10f62b2b2b5d71ed10f62b2b2b2b5d72
|
||||
4b53234b515a58b90001ffc03859ed72f42bed72003fed3fed12392f11392f105de4105de431
|
||||
30005d71015d7159011706062322001134123633321617072626232206151416333236033cb1
|
||||
1defaedafef772e989addc1faf197f5a88aaa4846a8e018517b7cf011d010aac010281afa11b
|
||||
6b6cc3d3d6c282000002004bffe8041e043e0015001d015340171f001c150255035d055d0955
|
||||
0b65036b056f09650b0815b8ffe4b40d0d065511b8ffe440520d0d06551d1c0d0d06552712d9
|
||||
05fa14f61a0431123a19311c41124d1a411c51125c19521c61126d1a611c78067815f602f618
|
||||
100016010f0d171750166016701603161c0f9010a010021010041b1c0a0700ba02aa0001ffc0
|
||||
b41010025501b8ffc04010101006551001010195131c040b17400db8ffdcb40d0d02550db8ff
|
||||
eeb40d0d06550db8ffeab40c0c06550db8ffc04009272a34b00d010d1a1fb8ffc0b32526341f
|
||||
b8ffc040411e2334301f011f163310240740242a341f073f074f070307200b0b025507180c0c
|
||||
0255071c0d0d0255070e0b0b0655071c0c0c065507160d0d065507191e3437182b4e10f42b2b
|
||||
2b2b2b2b5d2b4dfde44e10712b2bf6712b2b2b2b4ded003fedfd5d2b2be43fed12392f5d3cfd
|
||||
713c011112393912393130015d005d2b2b2b0171720117060623220011100033320011140721
|
||||
16163332360121262726232206035eba2ceeb9e9feef0114dcd5010e01fce80ab285638cfdda
|
||||
02510c3856897ca9015617a3b4011f0103010c0128fedefef91020afba680195864368a60000
|
||||
00020086ffe8041f05ba0010001d0180409b01050c0f240535054505053f1fb01f021f1f221c
|
||||
331c421c701f901f063a133c163c1a4c164c1a5d085d0d580f5d165e1a6a086c0d680f6e166e
|
||||
1ac01fd90cda17da19e213ec17ec19e31de01fff1f1920052f0f2f1430053f0f40054c0f5005
|
||||
6605da1df504fa100c10150e040602001b1c0607010a151c0e0b1824d00b01100b400b600b80
|
||||
0b041f400d0d02550b0c0f0f02550b180d0d02550bb8fff6b40c0c02550bb8fff0b40b0b0655
|
||||
0bb8fff4b40f0f06550bb8ffe0b40c0c06550bb8fff4402f0d0d06550b7401113300040c0c02
|
||||
5500040d0d0655003303250202c001019001a001b001f001041f013f014f010301b8fffeb410
|
||||
10025501b8fffc401d0e0e0255010c0d0d025501100c0c025501120b0b0255010c0b0b065501
|
||||
b8fff8b41010065501b8fffc40160f0f065501180c0c065501140d0d065501191e4737182b4e
|
||||
10f42b2b2b2b2b2b2b2b2b2b5d71723c4d10fdf42b2be410fd2b2b2b2b2b2b2b2b5d71ed003f
|
||||
ed3f3fed3f11391112393130005d015d7172007121231133113633321e021510002322270314
|
||||
1716333236353426232206012da7b472b162af7140fef2bdbc6b0234559176aca57576ac05ba
|
||||
fdf58f4f8fca73feeffed69d0196bf558bcdcbd0c6cd000000010024fff2022a0599001700d8
|
||||
b9000affc0b323263409b8ffc0404123263480190100010c0d0a0103001610092b0f0a06161c
|
||||
030b0f10220022010d12250c01ff070845094560077007800790070400072007a007b007c007
|
||||
d0070607b8ffeeb41010025507b8fff4b40f0f025507b8fff2b40e0e025507b8fff8b40d0d02
|
||||
5507b8fff8b40c0c025507b8fffab41010065507b8fff0400b0f0f065507060c0c065507b8ff
|
||||
e8b40d0d065507ba026a00180136b166182b10f62b2b2b2b2b2b2b2b2b5d71f4e410ed3cfd3c
|
||||
10e4f43c003fed3f3cfd3c1139123911333310c93130015d2b2b251706232226263511233533
|
||||
11371133152311141616333202101a4c3c626c2c8484b3b5b5132b281ea19f103e65a202638c
|
||||
01076cfe8d8cfd934d2c1a0000010030000004ba05ba00070089400d05021e04030200080706
|
||||
050409b80273b320040104b80101b7062001022f030103b80101b5010120000100b8ffe8400b
|
||||
1010025500080f0f025500b8fff2b40c0c025500b8ffe2b40d0d025500b8fffcb40c0c065500
|
||||
b8fffeb40d0d065500b80273b308b699182b10f62b2b2b2b2b2b5d3c10f45d3c10fde45de610
|
||||
3c103c003f3f3cfd3c313021112135211521110213fe1d048afe1b050dadadfaf30000000001
|
||||
0087000003e805ba00140161b90016ffc0b315173403b8ffe0400e0d0d0655250435034503ba
|
||||
0d0403b8ffe0403a1719341708110c1114030501000f1c0507140b0a0c250940333634ff0901
|
||||
c0090116400b0b025516401010025509281010025509140e0e025509b8ffec40110d0d025509
|
||||
040c0c0255091a0b0b025509b8fff6400b0b0b065509141010065509b8fff8400b0d0d065509
|
||||
0a0f0f065509b8fff6b60c0c0655094e16b8ffc04017343634b016f016027016a016b016ff16
|
||||
04160214250100b8ffc04010333634f0000100002000d000e0000400b8fffab41010025500b8
|
||||
fffa40170e0e025500040c0c025500080b0b025500040b0b065500b8fffa40160f0f06550002
|
||||
0c0c065500020d0d0655004e154750182b10f62b2b2b2b2b2b2b2b5d712b3cfd3c105d712bf4
|
||||
2b2b2b2b2b2b2b2b2b2b2b2b5d712bed003f3c3fed3f1139113901123931304379400e060e07
|
||||
250e060c1b010d080f1b01002b012b2b81002b5d2b012b331133113633321616151123113426
|
||||
23220606151187b47ec076ae4bb4756b508d3c05bafdf2925da49cfd5f02a1877b538e7dfdbb
|
||||
00020046ffe803df05ba0011001d015540a40a02040d250d340d440d053514351c5702540a52
|
||||
14531c6702640565096314601cc01fd405d513dd19e513e514ef17eb19e51de01fff1f161f1f
|
||||
2b1a3c163c1a4b1a701f901f072e02240d2e163a02350d4b02450d4614491c570a560d670de5
|
||||
06e716fa01f40e100115030e0b100f001b1c0b0711000a151c030b1833010025110f251010d0
|
||||
11011011401160118011041f400b0b02551f400d0d025511121010025511b8fff440110f0f02
|
||||
5511060e0e025511180d0d025511b8fff2400b0b0b0655110e1010065511b8ffeeb40c0c0655
|
||||
11b8fff840420d0d065511741224bf07cf07df07ff07041f073f074f0703071e0b0b02550718
|
||||
0c0c0255071e0d0d0255070c0b0b0655070c0d0d0655071a0c0c065507191e3450182b4e10f4
|
||||
2b2b2b2b2b2b5d714dedfd2b2b2b2b2b2b2b2b2b2b5d713c10ed10fd3ce4003fed3f3c3fed3f
|
||||
3c11391112393130005d01715d00712135062322262635341236333216171133110114163332
|
||||
36353426232206033865c47fd5756ad48360962fb3fd20ac7576a5a87b78a1869e8cfba39f01
|
||||
038a5141020efa460212cccac1c6daccc4000001005cffe704eb05d300300215402763036304
|
||||
730374040425273503391c430349074c1d451f44244627530359075c1d572889130e23b8fff2
|
||||
b41010025524b8fff2b41010025525b8fff2b41010025526b8fff2b41010025527b8fff2b410
|
||||
10025523b8fff6b40d10025524b8fff6b40d10025525b8fff6b40d10025526b8fff6b40d1002
|
||||
5527b8fff640460d100255280d26240224032725360f34234425452f5a20562355256c0b6a0d
|
||||
6b0e66146518790b7a0d7a0f7d107524732586038a0b890d8a0f8d1085248325920d960f9615
|
||||
1eb10602435458402d2126121b261a09262901260000291a120432312600650002000d2d791b
|
||||
891b021b25160d2d1e27250125051605b8fff4400c0c0c0655051e2d091e1e1603003fed3fed
|
||||
2b1112395d1112391112395d1112395d01111217392fed2fed2fed2fed1b402d25240e0d0b05
|
||||
211c1d1e1b08070604030206012524220e0d0b06051e1b2d1a400c0c02558f1a011aed16002d
|
||||
01b8ffc040120c0c02551001200150016001700190010601b801b040132d1e1e1603051e2d09
|
||||
1b261a4a092600290129b8ffeab40e0e025529b8fff4400d0c0c0255291a32212612012612b8
|
||||
ffecb40e0e025512b8fff6b40d0d025512b8fff8400f0c0c02551254200001001931635b182b
|
||||
4e10f45d4de42b2b2bed10ed4e10f62b2b5d4dedf4ed003fed3fed10fd5d2be410fd5d2bf411
|
||||
1217391117391112393901121739593130005d712b2b2b2b2b2b2b2b2b2b015d7113371e0233
|
||||
3236363534262726242726263534363633321616170726262322061514171604171616151406
|
||||
06232224265cb70d5fc87d6faa53505c3bfe6c5169677ef294a3f98605ba0fada9b0a1393801
|
||||
d958807a86fb9dc7fef39901d7106e8d5742734445672317612b37a3656fc16469cc810e8b8e
|
||||
815b4f33336b283bb57675cf7374e900000000010083ffe803e004260018014fb9001affc040
|
||||
0915173402201316340fb8fff040331214342b1301240813160c0113160b06000a111c030b00
|
||||
3316251817403336341a401010025517281010025517120e0e025517b8ffec400b0d0d025517
|
||||
040c0c025517b8fff4400b0b0b065517141010065517b8fff8400b0d0d0655170c0f0f065517
|
||||
b8fff6400d0c0c0655ff1701c01701174e1ab8ffc04015343634b01af01a02701aa01ab01aff
|
||||
1a041a0c2509b8ffc04010333634f0090100092009d009e0090409b8fff8b41010025509b8ff
|
||||
f840110e0e025509040c0c0255090a0b0b065509b8fff640160f0f065509020c0c065509020d
|
||||
0d0655094e194750182b10f62b2b2b2b2b2b2b5d712bed105d712bf65d712b2b2b2b2b2b2b2b
|
||||
2b2b2b3cfde4003fed3f3f3c39390111123931304379401a04100e0d0f0d0206070806080508
|
||||
030610040c1b000d08111b00002b012b2a2a81005d012b2b2b21350623222626272635113311
|
||||
141716163332363635113311033f7cd55ea34f100bb40b116e51518e3bb49cb4486d4f357302
|
||||
92fdb38d314751538f880239fbda0000000200880000013c05ba0003000700cd405e09360b0b
|
||||
02554f099009a009b009c009df09f0090700091f09700980099f09b009c009df09e009ff090a
|
||||
1f09010001070402030906037e0100060506040a0607250500049f04a004b004c004e00406c0
|
||||
04f0040200042004d004e0040404b8fff8b41010025504b8fffa40170e0e025504040c0c0255
|
||||
040a0b0b025504140b0b065504b8ffeab41010065504b8fffeb40d0d065504b8fffc400a0c0c
|
||||
0655044e084750182b10f62b2b2b2b2b2b2b2b5d71723cfd3c003f3f3c3fed01111239391112
|
||||
39393130015d72712b133533150311331188b4b4b404ebcfcffb150426fbda00000100870000
|
||||
03e6043e0016017d40130503061302a810b810e303e713f003f6130604b8fff0403c0b0d3479
|
||||
10019810d018e018ff18042008140e1416121c05070106160d0a0d0e0c0e2418401010025518
|
||||
400b0b02550b28101002550b140e0e02550bb8ffec40110d0d02550b040c0c02550b220b0b02
|
||||
550bb8fff4400b0b0b06550b14101006550bb8fff9400b0d0d06550b0a0f0f06550bb8fff640
|
||||
120c0c06550b40333634ff0b01ff0b010b4e18b8ffc0401a343634b018f018027018a018b018
|
||||
c01804180302331516250100b8fff6b41111025500b8fffab41010025500b8fffa40170e0e02
|
||||
5500040c0c0255000a0b0b025500040b0b065500b8fffa40110f0f065500020c0c065500040d
|
||||
0d065500b8ffc04012333634f0000100002000d000e00004004e1710f65d712b2b2b2b2b2b2b
|
||||
2b2b2b3cfd3cf43c105d712bf65d712b2b2b2b2b2b2b2b2b2b2b2b2bed3c103c003f3c3f3fed
|
||||
11390112393130437940160611090a080a070a0306102611060e1b010f0a121b01002b012b2b
|
||||
2a81015d71002b5d71331133153633321616171615112311342626232206151187a275dd60a1
|
||||
50100ab42a6b4873a7042697af45704d327dfd7302866e6d4192ccfdbc0000000001000f0000
|
||||
03f10426001001dcb1020243545840150f010b060402090602060d0a000a0f180f0f02550f2f
|
||||
2b003f3f3f3f11173931301bb70f12010f22193906b8ffde405019395a0f96049608990e9a0f
|
||||
c005c006c007cb0f090f4016391a031309150d1a1035013a0b81018e0b082f1257045907590b
|
||||
580e9701980a980bb702b80cc80bca0ecc10da03d509d10ddb10e50a1212b10602435458400b
|
||||
0c0012110f180d10065506b8ffe8400e0d1006550f0600020d000a0a0206003f3c3f3c111239
|
||||
392b2b01111239391b40660606030708090901060609050403030b0f0f100e0d0d010f0f0d10
|
||||
0b010009020d0b030c100a060f020f0a10c600c60902102500091400000903020dc60d010d25
|
||||
0c03140c0c030a090903030206100d0d0c0c000a4f120112490d7e0c220a0f6106097e400ab8
|
||||
011bb74006500680060306b80243400e20037e02224f00010049117cc4182b10f65df4ed1a19
|
||||
fd5dfd1a18ed10e510f4ede65d003f3c103c103c3f3c103c103c87052e2b5d877dc4872e182b
|
||||
5d7d10c400111239390f0f8708c4870e10c408c4870e10c4c408c4070e103c3c083c59313001
|
||||
435c58b40e181d390bb8ffde400b1d390c221739032217390bb8ffdeb2213910b8ffc0400a15
|
||||
390122213909401c392b2b2b2b2b2b2b2b595d71002b5d2b2b015d5933010133171617363737
|
||||
330101230327010f0184fe99e1a32e1c2c25b3d7fe91018bddda3afee9022801fef947304233
|
||||
fbfe0cfdce014a59fe5d0002009e000004fd05ba000d001800b2402c65116b14024b104b145b
|
||||
105b14040b0c1e0f0e0e0017181e02010200081226080a0d0d025508100b0b065508b8fff440
|
||||
1b0c0c0655081a201a01201a011a180d200120000100201010025500b8fff6b40f0f025500b8
|
||||
fff6b40d0d025500b8fffa400b0c0c0255000c0b0b065500b8fffab40c0c065500b8fff0400a
|
||||
0d0d0655005d193b5c182b10f62b2b2b2b2b2b2b5d3cfd3c4e10715df62b2b2b4ded003f3f3c
|
||||
fd3c12392f3cfd3c3130015d005d33112132171e021514022121111121323635342627262321
|
||||
9e0229924d6c9259eefec9fe88017bbc9e5d4c3184fe8905ba0e1265b66dbbfefdfdac03018c
|
||||
7f5c83150d000000000100960000042a05ba0005006d400c010204031e05000820040104b802
|
||||
a7400f070203200120000100201010025500b8fff6b40f0f025500b8fff6b40d0d025500b8ff
|
||||
fab40c0c025500b8fff6b40c0c065500b8fff8400a0d0d0655005d063b5c182b10f62b2b2b2b
|
||||
2b2b5d3cfd3c10e65d003f3cfd3c3f313033113311211596c202d205bafaf3ad000000010083
|
||||
0000013705ba000300e3b605360b0b025505b8ffc0b337383405b8ffc0b334353405b8ffc0b3
|
||||
30313405b8ffc0b322253405b8ffc040251517340f051f059f05df05044f05df05f005031f05
|
||||
70058005ff05040100000a0203250100b8ffc0b337383400b8ffc040153335349f0001c000f0
|
||||
000200002000d000e0000400b8fff8b41010025500b8fffa401d0e0e025500040c0c0255000a
|
||||
0b0b025500140b0b065500081010065500b8fffeb40d0d065500b8ffffb40c0c065500b8fffc
|
||||
400a0c0c0655004e044750182b10f62b2b2b2b2b2b2b2b2b5d71722b2b3cfd3c003f3f313001
|
||||
5d71722b2b2b2b2b2b3311331183b405bafa460000020042fe5103ea043e001e002a016f4060
|
||||
0b0b05142c0b25144c0b451406091d191d2c0b26142c23390b36144a0b46145607580b680bfa
|
||||
0af5150e2e232c273e233e274c27902ca02c07362136293f2c460b4621452954215429690763
|
||||
216329602c802cda27e821ee23ef271117160615b802b1b4281c130701b802aa401020003000
|
||||
600070008000c000d0000700b8027d4032051c1c0f0a45221c0c0a16153325330a251818d017
|
||||
011017401760178017042c400b0c02552c400d0d025517121010025517b8fff440110f0f0255
|
||||
17060e0e025517160d0d025517b8ffea400b0b0b065517121010065517b8ffeeb40c0c065517
|
||||
b8fffc404a0d0d065517740f012500221f24bf0fcf0fdf0fff0f041f0f3f0f4f0f030f200b0b
|
||||
02550f1a0c0c02550f220d0d02550f1c0b0b06550f0c0d0d06550f1a0c0c06550f192b2c7421
|
||||
3450182b2b4ef42b2b2b2b2b2b5d714dedf4ed10fd2b2b2b2b2b2b2b2b2b2b5d713c10fde4f6
|
||||
3c003fede43fedfd5de43fede43f3c3130015d71005d71171716171633323637362706232202
|
||||
3534123633321735331114060623222613141633323635342623220666af0b3243747d88180e
|
||||
0176b0dbf06ed18dbc7aa665dba0beea99a67d7ca8ad7a78a8581a512532645a37b08b013cdd
|
||||
9801018c9880fc6af8cf78ab032ad1c0bfccc3c6c3000001007cfe51026005d30010003d400a
|
||||
270f0100101207081010b80133b3009f0e08b801334011079f0e5e0003100320030303ac119d
|
||||
8c182b10f65dfdf6ed10f6ed003f3c3f3c3130015d0126021134373637330607060706151001
|
||||
01df95ce4d5abc8179273d232b012bfe51bc01f8010eeedafdfbd0598a96bbbdfe1ffe200001
|
||||
007cfe51026005d300100065400c2802281002090a1001001209b80133b30a9f0301b80133b4
|
||||
009f035e0eb8fff0b4101002550eb8fff8b40f0f02550eb8ffe4b40d0d02550eb8ffec400f0a
|
||||
0a02550f0e1f0e020eac129d8c182b10f65d2b2b2b2bfdf6ed10f6ed003f3c3f3c3130015d13
|
||||
23001134272627262733161716151002fd81012b2b223d277a81bc5a4dcffe5101e001e1bcb9
|
||||
968a5ad2fbfddaeefef2fe0800000001008700000626043e002301c7b9000dfff4b40d0d0655
|
||||
08b8fff4b40d0d065509b8ffd8404d0b0d342504e404e409e117e52005d505f6200217082023
|
||||
09181b20090303231e1c06151c0b0b06070106231a19100ad025019025a025022517171a0e25
|
||||
90110111041010025511180f0f025511b8ffec400b0e0e025511140c0c025511b8ffe840170b
|
||||
0b025511020b0b0655110c1010065511060f0f065511b8fffab40c0c065511b8fff8b40d0d06
|
||||
5511b8015d400c1825901b011b180f0f02551bb8ffec400b0e0e02551b140c0c02551bb8ffee
|
||||
40110b0b02551b040b0b06551b0a101006551bb8fffe400b0d0d06551b0c0f0f06551bb8fffc
|
||||
b40c0c06551bb8015d4016000233232501d000019000a000021f003f004f000300b8fffe401d
|
||||
0e0e025500100d0d025500100c0c0255000c0b0b025500160b0b065500b8fffcb41010065500
|
||||
b8fff440140f0f0655000a0c0c0655000e0d0d065500192425b80178b3214750182b2b4ef42b
|
||||
2b2b2b2b2b2b2b2b5d71723c4dfde410f42b2b2b2b2b2b2b2b2b5dedf42b2b2b2b2b2b2b2b2b
|
||||
2b5dfd4e456544e67172003f3c3c3c3f3f3c4d10ed10ed11173901111239123931304379400e
|
||||
0c141326140c111b01120d151b01002b012b2b81015d005d2b2b2b3311331536363332161736
|
||||
3332161511231134262623220615112311342623220606151187a132a66a76971f7eca9eaab3
|
||||
235c3e7094b458644c813a0426954e5f6258baafb6fd27029d6c5f3a95a4fd9702b27878509a
|
||||
91fdd900000100bf0000018105ba000300ccb5010200080205b8ffc0b3383d3405b8ffc0b333
|
||||
343405b8ffc0b32d303405b8ffc0b328293405b8ffc0b323253405b8ffc0b31d1e3405b8ffc0
|
||||
b3181a3405b8ffc0402a0d103420059005af050303200100008f00a000b000042f0040005000
|
||||
df00f000051220008f0090000305b8ffc0400b0d0d025500181010025500b8ffecb40f0f0255
|
||||
00b8ffeeb40d0d025500b8fff640100c0c025500200b0b065500a204d659182b10f62b2b2b2b
|
||||
2b2b5d435c58b2800001015d5971723cfd5d2b2b2b2b2b2b2b2b3c003f3f313033113311bfc2
|
||||
05bafa460001009c0000051f05ba0009017db1120bb8ffc0400a13153408180c16025503b8ff
|
||||
e840210c1602550802030320070814070708020703030809040202090708040320060605b8ff
|
||||
ecb40f0f025505b8fff2400b0d0d025505120c0c025505b8fff7401a0b0b0655055d200b0120
|
||||
0b500b600b700b800b050b0809200100b8ffc0400d13153420000100201010025500b8fff6b4
|
||||
0f0f025500b8fff6b40d0d025500b8fffa400b0c0c025500040b0b065500b8fff7b40c0c0655
|
||||
00b8fff8400a0d0d0655005d0a3b59182b10f62b2b2b2b2b2b2b5d2b3cfd3c105d71f42b2b2b
|
||||
2b3c10fd3c003f3c3f3c1239390111393987042e2b877dc4b10602435458b90003ffe0b70c11
|
||||
3408200c1134002b2b5931302b2b012b435c58b40840463903b8ffc0b646390840323903b8ff
|
||||
c0b632390722193902b8ffdeb619390722323902b8ffdeb632390722233902b8ffde400b2339
|
||||
070e1439070e133902b8fff4b61339070e1d3902b8fff4b61d39070e153902b8fff8b115392b
|
||||
2b2b2b2b2b2b012b2b2b2b2b2b002b2b2b2b59331133011133112301119cc70302bac7fcfe05
|
||||
bafb81047ffa460480fb800000000001ffe1fe69048afeeb0003001a400c013f00021a050019
|
||||
044341182b4e10e410e6002f4ded3130033521151f04a9fe69828200000200a1000005ad05ba
|
||||
0018002201fc4021120b0e0112361c5a1f66086d1f0409100d0d065508100d0d065507100d0d
|
||||
065524b8ffc0b40c0c02550db8fff4b40c0c02550cb8fff4b40c0c02550bb8fff4b40c0c0255
|
||||
12b8ffe2b3121a3412b8fff0b322273411b8ffe2b31d273410b8ffe2b31d27340fb8ffe2b31d
|
||||
273412b8ffd8b31d263411b8ffe2b3121a3410b8ffe2b3121a340fb8ffe24049121a34250e4a
|
||||
1c4a20530b5c1c6d1c7209780e790f850a880f970da90fb80fe80ee70f100e0c0c20110f1411
|
||||
110f110f0c09121b02211a160a061211100d0c0518090916171a191e17b8ffc040190b0b0655
|
||||
17170021221e0201020018180f0f0e081e260e9c06b8ffe8b40f0f025506b8fff6b40d0d0255
|
||||
06b8ffe040220c0c025506060d0d0655065d2024702480240324221820012000010020101002
|
||||
5500b8fff6b40f0f025500b8fff6b40d0d025500b8fffa400b0c0c025500060b0b065500b8ff
|
||||
f7b40c0c065500b8fff8400a0d0d0655005d233ba8182b4e10f42b2b2b2b2b2b2b5d3c4dfd3c
|
||||
105df62b2b2b2b19e418ed003f3c103c103c3f3cfd3c12392f2bfd3c103c392f121739011117
|
||||
39870e2e2b057d10c43130015d2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b5d435c58400a0840
|
||||
0f390f103a11123a2b2b2b590171435c58b9000effde401a193911221939122219390e401c39
|
||||
1022143910221f39102215392b2b2b2b2b2b2b5933112132161615140607161716171323032e
|
||||
02272623231111213236363534262321a1028ac4cc7acad34d28554cfff4c2556e572d214be1
|
||||
01a185964e97a3fe3005ba4fc8799cd61d25244e75fe710131848c380b07fd75033337794768
|
||||
8600000100a2000004e805ba000b0095401506051e080807070003041e0201020a091e0b0008
|
||||
07b8ffc0401d1012340754034a200a200d020a1a0d0409200120000100201010025500b8fff6
|
||||
b40f0f025500b8fff6b40d0d025500b8fffab40c0c025500b8fffab40c0c065500b8fff0400a
|
||||
0d0d0655005d0c3b5b182b4e10f42b2b2b2b2b2b5d3c4dfd3c4e10f65d4df4e42b003f3cfd3c
|
||||
3f3cfd3c12392f3c10fd3c3130331121152111211521112115a20424fc9e032bfcd5038405ba
|
||||
adfe3facfe0dad0000020058ff8e05ee05d400150028016840955f269f260219183715020b1c
|
||||
041f04231b1c141f1423062a052d172b263b053c173a264c054c1749265d05552358266f057b
|
||||
037a058c038c0595009a03a400ab03d500d516e500e517e5181a1c052b002a053b05045d0592
|
||||
189626d5260425162a26341639264918491c451f45234b265608581155155a1c5a1d561f5720
|
||||
5722690566156b267b268e1c8e26db18dc26190b180115b8ffd4b21b3900b8ffd440381b3904
|
||||
1814182a053a0504020316280307282618160500062103131a0502282618160005241e1e0f03
|
||||
0208241e07091a2613180f0f025513b8ffeeb40d0d025513b8ffe8b40c0c025513b8fff0b40b
|
||||
0b065513b8fff4b40d0d065513b8fff440250c0c0655134a021a202a802a022a2126200b010b
|
||||
180b0b06550b060c0c06550b1929635c182b4e10f42b2b5d4ded4e105df64df42b2b2b2b2b2b
|
||||
ed003fed3f3fed11173912390111123912173900113310c910c95d3130012b2b5d5d0072715d
|
||||
015d717225161707262706232224023534122433320412151402251617361134022623220011
|
||||
1000333237262704f58772399e9da3c5c7febcafb00145c9cb0146ab6efde6a86dab79e991d9
|
||||
fee2011bdc685c5b659d5d2b87397b5bc0015cdad90164bac1fea5dab5fedf8d2f5d9c0139b2
|
||||
010a93fed7fed9fee2fece273b19000100a1ffe7052205ba001400d9400a260f58045808c908
|
||||
0416b8ffc0401613153434043b0846044a08760fa605e80f070c000211b802bbb40609142602
|
||||
b8ffecb40f0f025502b8fff2400b0d0d025502100c0c025502b8ffe0401c0b0b0655025d2016
|
||||
01201650160260167016801603160d26200a010ab8ffc0400a1315340a20101002550ab8fff6
|
||||
b40f0f02550ab8fff6b40d0d02550ab8fffa400b0c0c02550a040b0b06550ab8fff7b40c0c06
|
||||
550ab8fff8400a0d0d06550a5d153b59182b4e10f42b2b2b2b2b2b2b2b5ded4d105d5d71f62b
|
||||
2b2b2b4ded003fed3f3c3130015d2b005d013311140204232224023511331114161633323611
|
||||
0460c264fefbd4cefefa70c247ad7dd6b605bafcb1ddfefca38e010de9034ffcb2bfb562c201
|
||||
14000002009e0000055a05ba000f001d00e5402f201f0143081c1d1e02010211101e0f000817
|
||||
262009011f400d0d0255092010100255090a0f0f025509180d0d025509b8fff440150c0c0655
|
||||
091a1f1d10200120000100201010025500b8fff6b40f0f025500b8fff6b40d0d025500b8fffa
|
||||
b40c0c025500b8fff7b40c0c065500b8fff8400a0d0d0655005d1e3b5c182b10f62b2b2b2b2b
|
||||
2b5d3cfd3c10f62b2b2b2b2b5ded003f3cfd3c3f3cfd3c313043794036031b07080608050804
|
||||
08040619181a1802060b0a0c0a0d0a030615161416131603061b03172101120e17210118081c
|
||||
2101160a1121002b2b012b2b2a2a2a2a81015d3311213217161716121514020e022325213236
|
||||
373636353426272623219e01f9ab5a7e5974734e7a91cd85feb1013991a531454d976c4eadfe
|
||||
cc05ba151d4c62fecfc4a7fefea96132ad363145e9a6e6f72a1e0002fffd0000055905ba0007
|
||||
000e0167b6010e0f10025502b8fff2b40f10025502b8fff8b40d0d065502b8fff440590c0c06
|
||||
55090c0c0c0655050c0c0c06552f10301067086809601088039010c905c606c010f0100b0805
|
||||
590156025010680bb010f30cf30df30e09040c040d040e030b0a090504040c0d0e080607070c
|
||||
09050408060c07010000b8fff8400f0c0c02550020070c1407070c020303b8fff840150c0c02
|
||||
550320040c1404040c091e0505081e060306b80270400900080ce94002010202ba010b000101
|
||||
0b40120c2000650703525004cf04df040390040104b80101400b500cc007df0c03900c010cb8
|
||||
010140100f07cf07027f0780070207930fd6d7182b10f45d7119f45d71f45d7118ed10ed1a19
|
||||
10eded00183f3c1aed3fe43c10ed3c10ed87052e2b2b7d10c4872e182b2b7d10c40111123939
|
||||
1139398710c4c40ec4c4870510c4c40ec4c43130014bb00b534bb01e515a58b4040f030807ba
|
||||
fff00000fff838383838590172715d2b2b2b2b2b2b2301330123032103132103262706070302
|
||||
33d10258ddabfd9ba1d901f19946221c3305bafa4601bcfe44025a0196b9778d8b0000000001
|
||||
0066ffe7057605d3001d00d3b563026a1d0201b8ffe8b40b0b065500b8ffe8405f0b0b065520
|
||||
00320d63007000741d8000841d90009a05ab03a50db903b40dc70dd000e41df31d110e121d11
|
||||
1d1d032a0628112a1c201f470d56145715561968056b1d7b128b129a03990e9a1ca801a402a8
|
||||
11d50e130014001a1014101a0402b8ffdeb2283901b8ffc0402d2839100f0001041b131e0c03
|
||||
1b1e040910260f4a0026200101011a1f1726200801080c0b0b065508191e635c182b4e10f42b
|
||||
5d4ded4e10f65d4dedf4ed003fed3fed1117393130012b2b5d5d71005d2b2b01720117060423
|
||||
2224023534122433320417072626232206021514121633323604b4c23dfec3e5edfed79baf01
|
||||
43c2dc012c3bbf33c293a9e35c6de686a3e2020231effbc1016ed2e50155b1e0cb2da092a2fe
|
||||
ef91bbfee98abc000000000100960000055205ba000b01fe401e0322373908093a270a350636
|
||||
0a470a57038603d70307760ad903d90a0306b8fff440180d0d025528058c048a05aa04ea0805
|
||||
0a04013504d6040209b8ffe04009122134032012213403b8ffdeb30c391209b8ffe0b3122134
|
||||
08b8ffe0b312213404b8ffe0b31d213404b8ffc0b312163408b8ffde403d1939080925253d08
|
||||
0919193d060607090a09080a0503040420050a1405050a090808200706140707060a0a000502
|
||||
040102070b0800080a03020b010004b8023a400f300501a005b005c005e00504054a08b8023a
|
||||
400b30070120078007b0070307b80286400c0b2020000100201010025500b8fff6b40f0f0255
|
||||
00b8fff6b40d0d025500b8fffab40c0c025500b8fffab40c0c065500b8fff2400a0d0d065500
|
||||
5d0c3ba8182b10f42b2b2b2b2b2b5dedfd5d71edf45d71ed103c103c3c3c003f3c3c3c3f3c3c
|
||||
3c12392f87052e2b0e7d10c487052e182b047d10c40708103c083c014bb018534bb01b515a58
|
||||
b90004ffd83859b10602435458b90004fff0b30c113403b8fff040170c113406100e11340810
|
||||
0e103409100e11340a100d1034002b2b2b2b2b2b593130012b2b2b2b2b2b2b435c5840110922
|
||||
1939082c1939042c193904221b3905b8ffdeb616390422163906b8ffde400b12390822143904
|
||||
40143908b8ffdeb52539044015392b2b2b2b2b2b2b2b2b2b2b59002b2b2b0171725d2b00715d
|
||||
2b2b33113311012101012101071196c202d80107fd990282ff00fdf6f005bafd2902d7fdaefc
|
||||
9802e6eafe040000000000020003000000000014000100000000003400040020000000040004
|
||||
00010000f026ffff0000f000ffff100000010000000000060058000000000027000000010002
|
||||
0003000400050006000700080009000a000b000c000d000e000f001000110012001300140015
|
||||
0016001700180019001a001b001c001d001e001f002000210022002300240025002605ba0019
|
||||
05ba001a05a70019042600180000ffe70000ffe80000ffe7fe69ffe805ba0019fe69ffe802ea
|
||||
000000b8000000b80000000000a800ad016900ad00bf00c201f0001800af00b900b400c80017
|
||||
0044009c007c009400870006005a00c80089005200520005004400940119ffb4002f00a10003
|
||||
00a100cd00170057007e00ba00160118ffe9007f008503d300870085000d002200410050006f
|
||||
008d014cff75005c00df04830037004c006e00700180ff58ff8eff92ffa400a500b903c8fffd
|
||||
000b001a0063006300cdffee05d8ffdc002d005c0095009900df019209b500400057008000b9
|
||||
039d0072009a035d0401ff67fffa00030021007700cd0004004d00cd01c0022b004c006500e7
|
||||
0118017c034305d8ffa3ffb0ffc40003001c005d0068009a00ba013501470221055cff4dffcd
|
||||
0016002d00780080009900b200b600b600b800bd00da010c05f0ffa4fff00019002c0049007f
|
||||
00b400ce01c003fefd81fe3f000000050018002900390049006f00be00c700d0012301c1026f
|
||||
050c05320540057affd4001400310055005700a700b400e601f7027e027e027f03c60446ff42
|
||||
000e0085009100bf00c200c500e1011a012f014f01560229026f029e03720008002c00310031
|
||||
006400690089009800c700de012b01b6020c02cf03a304ab04fb061dfee0ff0e00060026009b
|
||||
009d00c1010d011801200173018201d601e30243025f029b02e2039404a904d20761001c005e
|
||||
006d008d00ab00f7011201380151015b0168017c01870191019901cd01d001e802410254026b
|
||||
02ef0368037103bd044204420453047304830586058b06e8fe58fec4fed1fef7ff32ff860051
|
||||
007c008100910095009e00b400b900cf00d900d900df00e20105010b010e010e012001210155
|
||||
017b017b017e018d01a201a801a901b401d001d001e201e901f201f501fb020002000206021b
|
||||
0221022202220223027202770294029c02cf02cf02d002ec02f903170322032b0335033c0359
|
||||
036f037103870390039003b503e1041a04cf04ff053205320596059f05a805ab05c205f0060c
|
||||
0782080008ccfca3fd2afddefe00fe88fe96feb2feb4ffe100150019001a001c001f003c0051
|
||||
00610061006a0078009600a500af00d3010c0118011a012a013e014c0151015f016a01710178
|
||||
01820184019a01a501a801a901ae01bc01cd01d701ef0200020d021c02210222022e02350242
|
||||
024f024f025e026502710290029202b402d602fa0307030b030f0315032a0347035d03650374
|
||||
0379039603b003cc03dd03e203f603fc03fc03ff040a041f04220426042b0447045f0475049e
|
||||
04e704e7055c05cb05e5060a066d068606b806f10736073e07500751075d078f07b607d40860
|
||||
00b600c300b500b700000000000000000000000001e00381034503b5008e0233041902ce02ce
|
||||
002d005f0064034d023f000002a80188027d01b402240578063b023b014e00f00426029402c6
|
||||
029f02f6023b034d014b0153006a0231000000000000061404aa0000003c04c300ed04bc0265
|
||||
02ce03b50078060c017e02ef060c00b201000239000001c50330042b03cb00da03df010704a1
|
||||
00db040a011701ed02a70350010b01bd043e05580021039c00ae0371017d00b5024500000afb
|
||||
088c012b014e01aa00870054013201f803ff0003024e00b4003703e30083006b02d800ed0077
|
||||
0088009701640467008e0033017c00e700a6029e0329056e062a061501c90269048a021301b4
|
||||
000204a9000002390124010305140084015d039a06ef02d9007500cf040a00de03ac04bc02cf
|
||||
02ae034d04f005520168006d007d00860071ff810079055804d2016700030156002504e00094
|
||||
007c033204210094007f0072005c002f00b6001800ba00b80041034d00720018001f004c016a
|
||||
01550099009a009a009800b200040078006900140057006e00ce00b4065402b80067050e0165
|
||||
00e7000004cbfe52005affa60099ff67006eff92002dffd40087ff7c00b800a800e5008f00a8
|
||||
0185fe7b0070001e00d900de014c054602cf0546ff2d028a02d90253029600b7000000000000
|
||||
00000000000000000125011800ea00ea00ae0000003e05bb008a04d70053003fff8cffd50015
|
||||
0028002200990062004a00e4006d00ee00e5004803c00033fe4e02b1ff460370007905df0051
|
||||
ffa7ff1f010a0068ff6c004f00bc00a507050061072b4043555441403f3e3d3c3b3a39383735
|
||||
34333231302f2e2d2c2b2a292827262524232221201f1e1d1c1b1a191817161514131211100f
|
||||
0e0d0c0b0a090807060504030201002c4523466020b02660b004262348482d2c452346236120
|
||||
b02661b004262348482d2c45234660b0206120b04660b004262348482d2c4523462361b02060
|
||||
20b02661b02061b004262348482d2c45234660b0406120b06660b004262348482d2c45234623
|
||||
61b0406020b02661b04061b004262348482d2c0110203c003c2d2c20452320b0cd442320b801
|
||||
5a51582320b08d44235920b0ed51582320b04d44235920b09051582320b00d44235921212d2c
|
||||
20204518684420b001602045b04676688a4560442d2c01b10b0a432343650a2d2c00b10a0b43
|
||||
23430b2d2c00b0172370b101173e01b0172370b10217453ab10200080d2d2c45b01a234445b0
|
||||
1923442d2c2045b00325456164b050515845441b2121592d2cb00143632362b0002342b00f2b
|
||||
2d2c2045b0004360442d2c01b00643b00743650a2d2c2069b04061b0008b20b12cc08a8cb810
|
||||
0062602b0c642364615c58b00361592d2c45b0112bb0172344b0177ae4182d2c45b0112bb017
|
||||
23442d2cb01243588745b0112bb0172344b0177ae41b038a45186920b01723448a8a8720b0a0
|
||||
5158b0112bb0172344b0177ae41b21b0177ae45959182d2c2d2cb0022546608a46b040618c48
|
||||
2d2c4b53205c58b002855958b00185592d2c20b0032545b019234445b01a23444565234520b0
|
||||
0325606a20b009234223688a6a606120b01a8ab000527921b21a1a40b9ffe0001a45208a5458
|
||||
2321b03f1b235961441cb114008a5279b31940201945208a54582321b03f1b235961442d2cb1
|
||||
10114323430b2d2cb10e0f4323430b2d2cb10c0d4323430b2d2cb10c0d432343650b2d2cb10e
|
||||
0f432343650b2d2cb11011432343650b2d2c4b525845441b2121592d2c0120b003252349b040
|
||||
60b0206320b000525823b002253823b002256538008a63381b212121212159012d2c4bb06451
|
||||
584569b00943608a103a1b212121592d2c01b005251023208af500b0016023edec2d2c01b005
|
||||
251023208af500b0016123edec2d2c01b0062510f500edec2d2c20b001600110203c003c2d2c
|
||||
20b001610110203c003c2d2cb02b2bb02a2a2d2c00b00743b006430b2d2c3eb02a2a2d2c352d
|
||||
2c76b8022323701020b802234520b0005058b00161593a2f182d2c21210c6423648bb8400062
|
||||
2d2c21b08051580c6423648bb82000621bb200402f2b59b002602d2c21b0c051580c6423648b
|
||||
b81555621bb200802f2b59b002602d2c0c6423648bb84000626023212d2cb4000100000015b0
|
||||
0826b00826b00826b008260f10161345683ab001162d2cb4000100000015b00826b00826b008
|
||||
26b008260f1016134568653ab001162d2c4b53234b515a5820458a60441b2121592d2c4b5458
|
||||
20458a60441b2121592d2c4b53234b515a58381b2121592d2c4b5458381b2121592d2cb01343
|
||||
58031b02592d2cb0134358021b03592d2c4b54b012435c5a58381b2121592d2cb012435c580c
|
||||
b00425b00425060c6423646164b807085158b00425b00425012046b01060482046b010604859
|
||||
0a21211b2121592d2cb012435c580cb00425b00425060c6423646164b807085158b00425b004
|
||||
25012046b8fff060482046b8fff06048590a21211b2121592d2c4b53234b515a58b03a2b1b21
|
||||
21592d2c4b53234b515a58b03b2b1b2121592d2c4b53234b515ab012435c5a58381b2121592d
|
||||
2c0c8a034b54b00426024b545a8a8a0ab012435c5a58381b2121592d2c4b5258b00425b00425
|
||||
49b00425b00425496120b0005458212043b0005558b00325b00325b8ffc038b8ffc038591bb0
|
||||
4054582043b0005458b00225b8ffc038591b2043b0005458b00325b00325b8ffc038b8ffc038
|
||||
1bb00325b8ffc03859595959212121212d2c462346608a8a462320468a608a61b8ff80622320
|
||||
10238ab902c202c28a70456020b0005058b00161b8ffba8b1bb0468c59b0106068013a2d2cb1
|
||||
020042b123018851b1400188535a58b910000020885458b202010243604259b12401885158b9
|
||||
20000040885458b2020202436042b12401885458b2022002436042004b014b5258b202080243
|
||||
6042591bb940000080885458b202040243604259b94000008063b80100885458b20208024360
|
||||
4259b94000010063b80200885458b202100243604259b94000020063b80400885458b2024002
|
||||
43604259595959592d2cb0024354584b53234b515a58381b2121591b21212121592d00000001
|
||||
000000030000ea930bd45f0f3cf5081b080000000000a2e3272a00000000b9d5b4f6faaffd67
|
||||
1000080c00000009000100010000000000010000073efe4e00431000faaffe26100000010000
|
||||
000000000000000000000000002706000100078d00190473004402aa0085040000880400003f
|
||||
047300870473004a040000500473004b02390000047300860239002404e30030047300870473
|
||||
00460556005c0473008301c70088047300870400000f0556009e0473009601c7008304730042
|
||||
02aa007c02aa007c06aa0087023900bf05c7009c0473ffe105c700a1055600a20639005805c7
|
||||
00a105c7009e0556fffd05c7006605560096000000000000002c0000026c0000043000000538
|
||||
000007d000000b7800000d3c00001010000011c4000013840000138400001564000016880000
|
||||
1738000018dc00001a9000001d3c00001edc00001fd000002198000023bc000024c400002550
|
||||
0000264c0000283c000028bc0000296400002b9400002c7800002e2400002e58000030c40000
|
||||
31880000337c000034a0000035e800003794000038d000003b080001000000270100003f0076
|
||||
000700020010002f00560000040d0aff00030002b1540f4122031700ef031700ff0317000300
|
||||
1f0317002f0317004f0317005f0317008f0317009f03170006000f0317005f0317006f031700
|
||||
7f031700bf031700f00317000600400317b2923340b80317b28b3340b80317b36a6c3240b803
|
||||
17b2613340b80317b35c5d3240b80317b357593240b80317b34d513240b80317b344493240b8
|
||||
0317b23a3340b80317b331343240b80317b32e423240b80317b3272c3240b80317b312253280
|
||||
b80317b30a0d32c04116031600d00316000200700316000102c4000f0101001f00a0031500b0
|
||||
031500020306000f0101001f00400312b32426329fbf03040001030203010064001fffc00301
|
||||
b20d1132410a02ff02ef0012001f02ee02ed0064001fffc002edb30e11329f414a02e200af02
|
||||
e200bf02e2000302e202e202e102e1007f02e00001001002e0003f02e0009f02e000bf02e000
|
||||
cf02e000ef02e0000602e002e002df02df02de02de000f02dd002f02dd003f02dd005f02dd00
|
||||
9f02dd00bf02dd00ef02dd000702dd02dd001002dc0001000002dc0001001002dc003f02dc00
|
||||
0202dc02dc001002db000102db02db000f02da000102da02daffc002d3b2373932b9ffc002d3
|
||||
b22b2f32b9ffc002d3b21f2532b9ffc002d3b2171b32b9ffc002d3b2121632b802d2b2f9291f
|
||||
b802e3b3202b1fa0413002d400b002d40002000002d4001002d4002002d4005002d4006002d4
|
||||
007002d40006006002d6007002d6008002d6009002d600a002d600b002d60006000002d60010
|
||||
02d6002002ca002002cc002002d6003002d6004002d6005002d6000802d0b2202b1fb802cfb2
|
||||
26421f411602ce02c70017001f02cd02c80017001f02cc02c60017001f02cb02c50017001f02
|
||||
c902c5001e001f02ca02c6b21e1f00410b02c6000002c7001002c6001002c7002f02c5000502
|
||||
c1b324121fff411102bf0001001f02bf002f02bf003f02bf004f02bf005f02bf008f02bf0006
|
||||
02bf0222b2641f12410b02bb00ca0800001f02b200e90800001f02a600a20800406a1f402643
|
||||
4932402043493240263a3d3240203a3d329f209f26024026969932402096993240268e923240
|
||||
208e92324026848c324020848c3240267a813240207a813240266c763240206c76324026646a
|
||||
324020646a3240265a5f3240205a5f3240264f543240204f5432b8029eb724271f374f6b0120
|
||||
410f0277003002770040027700500277000402770277027700f90400001f029bb22a2a1fb802
|
||||
9a402b292a1f80ba0180bc0180520180a201806501807e01808101803c01805e01802b01801c
|
||||
01801e0180400180bb0138000100800140b40180400180bb013800010080013940180180ca01
|
||||
80ad018073018026018025018024018020013740b80221b2493340b80221b2453340b80221b3
|
||||
41423240b80221b33d3e320f410f0221003f0221007f0221000300bf022100cf022100ff0221
|
||||
000300400221b320223240b80221b3191e3240b80222b32a3f3240b80221b32e3a326f414802
|
||||
c3007f02c3008f02c300df02c30004002f02c3006002c300cf02c30003000f02c3003f02c300
|
||||
5f02c300c002c300ef02c300ff02c3000600df02220001008f02220001000f0222002f022200
|
||||
3f0222005f0222007f022200ef0222000600bf022100ef02210002006f0221007f022100af02
|
||||
210003002f0221003f0221004f0221000302c302c30222022202210221401d101c102b104803
|
||||
8f1c010f1e014f1eff1e023700161600000012110811b8010db6f70df8f70d00094109028e02
|
||||
8f001d001f0290028f001d001f028fb2f91d1fb80198b226bb1f41150197001e0401001f0139
|
||||
00260125001f013800730401001f0135001c0801001f0134001c02ab001f0132b21c561fb801
|
||||
0fb2262c1fba010e001e0401b61ff91ce41fe91cb80201b61fe81cbb1fd720b80401b21fd51c
|
||||
b802abb61fd41c891fc92fb80801b21fbc26b80101b21fba20b80201b61fb91c381fadcab804
|
||||
01b21f8126b8019ab21f7e26b8019ab61f7d1c471f6b1cb80401b21f6526b8019ab21f5e73b8
|
||||
0401400f1f52265a1f481c891f441c621f4073b80801b61f3f1c5e1f3c26b8019ab21f351cb8
|
||||
0401b61f301cbb1f2b1cb80401b61f2a1c561f291cb80101b21f231eb80401b21f5537b80168
|
||||
402c07960758074f07360732072c0721071f071d071b071408120810080e080c080a08080806
|
||||
0804080208000814b8ffe0402b00000100140610000001000604000001000410000001001002
|
||||
000001000200000001000002010802004a00b013034b024b5342014bb0c063004b6220b0f653
|
||||
23b8010a515ab005234201b0124b004b5442b0382b4bb807ff52b0372b4bb007505b58b10101
|
||||
8e59b0382bb00288b801005458b801ffb101018e851bb0124358b900010111858d1bb9000101
|
||||
28858d5959001816763f183f123e113946443e113946443e113946443e113946443e11394660
|
||||
443e11394660442b2b2b2b2b2b2b2b2b2b2b182b2b2b2b2b2b2b2b2b2b2b182b1db0964b5358
|
||||
b0aa1d59b0324b5358b0ff1d594bb09353205c58b901f201f04544b901f101f045445958b903
|
||||
3e01f2455258b901f2033e4459594bb8015653205c58b9002001f14544b9002601f145445958
|
||||
b9081e0020455258b90020081e4459594bb8019a53205c58b9002501f24544b9002401f24544
|
||||
5958b909090025455258b9002509094459594bb8040153205c58b173244544b1242445445958
|
||||
b917200073455258b9007317204459594bb8040153205c58b1ca254544b1252545445958b916
|
||||
8000ca455258b900ca16804459594bb03e53205c58b11c1c4544b11e1c45445958b9011a001c
|
||||
455258b9001c011a4459594bb05653205c58b11c1c4544b12f1c45445958b90189001c455258
|
||||
b9001c01894459594bb8030153205c58b11c1c4544b11c1c45445958b90de0001c455258b900
|
||||
1c0de04459592b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
|
||||
2b2b2b2b2b2b2b2b2b65422b2b01b33b59635c456523456023456560234560b08b766818b080
|
||||
622020b163594565234520b003266062636820b003266165b059236544b063234420b13b5c45
|
||||
65234520b003266062636820b003266165b05c236544b03b2344b1005c455458b15c406544b2
|
||||
3b403b4523614459b347503437456523456023456560234560b089766818b080622020b13450
|
||||
4565234520b003266062636820b003266165b050236544b034234420b147374565234520b003
|
||||
266062636820b003266165b037236544b0472344b10037455458b137406544b2474047452361
|
||||
4459004b5342014b5058b108004259435c58b108004259b3020b0a124358601b215942161070
|
||||
3eb0124358b93b21187e1bba040001a8000b2b59b00c2342b00d2342b0124358b92d412d411b
|
||||
ba04000400000b2b59b00e2342b00f2342b0124358b9187e3b211bba01a80400000b2b59b010
|
||||
2342b0112342002b7475737500184569444569444569447373737374757374752b2b2b2b7475
|
||||
2b2b2b2b2b737373737373737373737373737373737373737373737373732b2b2b45b0406144
|
||||
737400004bb02a534bb03f515a58b1070745b040604459004bb03a534bb03f515a58b10b0b45
|
||||
b8ffc0604459004bb02e534bb03a515a58b1030345b040604459004bb02e534bb03c515a58b1
|
||||
090945b8ffc06044592b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b752b2b2b2b2b2b2b435c58
|
||||
b9008002bbb301401e017400735903b01e4b5402b0124b545ab012435c5a58ba009f02220001
|
||||
007359002b7473012b01732b2b2b2b2b2b2b2b737373732b002b2b2b2b2b2b00456944734569
|
||||
4473456944737475456944734569444569444569447374456944456944732b2b2b2b2b732b00
|
||||
2b732b74752b2b2b2b2b2b2b2b2b2b2b2b2b2b7374752b0000>
|
||||
] def
|
||||
FontName currentdict end definefont pop
|
||||
%%Page: 1 1
|
||||
%%BeginPageSetup
|
||||
%%PageBoundingBox: 0 0 196 229
|
||||
%%EndPageSetup
|
||||
q
|
||||
1 g
|
||||
84.574 223.767 111.258 -223.258 re f
|
||||
0 g
|
||||
0.8 w
|
||||
0 J
|
||||
0 j
|
||||
[] 0.0 d
|
||||
4 M q 1 0 0 -1 0 228.91925 cm
|
||||
84.574 5.152 111.258 223.258 re S Q
|
||||
BT
|
||||
9.6 0 0 9.6 0.084375 2.047373 Tm
|
||||
/f-0-0 1 Tf
|
||||
[<010203>-1<04050607>-1<08090a0b07>-1<0509>]TJ
|
||||
0 22.916667 Td
|
||||
[<010203>-1<04050607>-1<08090a0c>1<02>-1<06>]TJ
|
||||
ET
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.16 205.164 m 195.816 205.164 l S Q
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.602 56.379 m 195.859 56.379 l S Q
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.602 116.379 m 195.859 116.379 l S Q
|
||||
BT
|
||||
9.6 0 0 9.6 98.925002 8.414549 Tm
|
||||
/f-0-0 1 Tf
|
||||
[<0d0e>-1<03>-1<0907>-1<0f0a10>-1<0c>1<03>-1<11>-1<080c>1<11>-1<03>-1<09>]TJ
|
||||
0.68164 11.25 Td
|
||||
[<1213>-1<0c>1<080c140a100c03>-1<11080c1103>-1<09>]TJ
|
||||
0.343913 7.916667 Td
|
||||
[<0d0e>-1<03>-1<0907>-1<0f0a10>-1<0c>1<07>-1<0804>]TJ
|
||||
-11.375163 -8.809407 Td
|
||||
[<10>-1<0c>1<07>-1<08040a>1<15>-1<02>-1<1213>-1<0c>1<09>-1<03>]TJ
|
||||
ET
|
||||
0.558281 w
|
||||
[] 0.0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
76.48 227.523 m 83.652 227.523 l S Q
|
||||
81.422 1.396 m 80.305 0.279 l 84.211 1.396 l 80.305 2.513 l 81.422
|
||||
1.396 l h
|
||||
81.422 1.396 m f*
|
||||
0.279141 w
|
||||
q -1 0 0 1 0 228.91925 cm
|
||||
-81.422 -227.523 m -80.305 -228.641 l -84.211 -227.523 l -80.305
|
||||
-226.406 l -81.422 -227.523 l h
|
||||
-81.422 -227.523 m S Q
|
||||
0.558281 w
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
76.48 115.523 m 83.652 115.523 l S Q
|
||||
81.422 113.396 m 80.305 112.279 l 84.211 113.396 l 80.305 114.513 l
|
||||
81.422 113.396 l h
|
||||
81.422 113.396 m f*
|
||||
0.279141 w
|
||||
q -1 0 0 1 0 228.91925 cm
|
||||
-81.422 -115.523 m -80.305 -116.641 l -84.211 -115.523 l -80.305
|
||||
-114.406 l -81.422 -115.523 l h
|
||||
-81.422 -115.523 m S Q
|
||||
0.558281 w
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
76.332 6.035 m 83.504 6.035 l S Q
|
||||
81.27 222.884 m 80.152 221.767 l 84.063 222.884 l 80.152 224.001 l
|
||||
81.27 222.884 l h
|
||||
81.27 222.884 m f*
|
||||
0.279141 w
|
||||
q -1 0 0 1 0 228.91925 cm
|
||||
-81.27 -6.035 m -80.152 -7.152 l -84.063 -6.035 l -80.152 -4.918 l
|
||||
-81.27 -6.035 l h
|
||||
-81.27 -6.035 m S Q
|
||||
0.8 w
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.145 181.18 m 195.801 181.18 l S Q
|
||||
BT
|
||||
9.6 0 0 9.6 88.22969 31.844237 Tm
|
||||
/f-0-0 1 Tf
|
||||
[<0d0e>-1<03>-1<0907>-1<0f0a1602>-1<080717>-1<0a>1<10>-1<0c0203>-1<07>-1<18
|
||||
09>]TJ
|
||||
ET
|
||||
0.558281 w
|
||||
[] 0.0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
76.332 206.035 m 83.504 206.035 l S Q
|
||||
81.27 22.884 m 80.152 21.767 l 84.063 22.884 l 80.152 24.001 l 81.27
|
||||
22.884 l h
|
||||
81.27 22.884 m f*
|
||||
0.279141 w
|
||||
q -1 0 0 1 0 228.91925 cm
|
||||
-81.27 -206.035 m -80.152 -207.152 l -84.063 -206.035 l -80.152
|
||||
-204.918 l -81.27 -206.035 l h
|
||||
-81.27 -206.035 m S Q
|
||||
BT
|
||||
9.6 0 0 9.6 -0.310938 25.150499 Tm
|
||||
/f-0-0 1 Tf
|
||||
[<080e0d>-1<0e0f>-1<1610>-1<19>-1<1a>]TJ
|
||||
0.0843099 2.006672 Td
|
||||
[<10>-1<0c>1<07>-1<08040a>1<16>-1<121b>-1<12>-1<0c>]TJ
|
||||
ET
|
||||
0.558281 w
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
76.332 182.035 m 83.504 182.035 l S Q
|
||||
81.27 46.884 m 80.152 45.767 l 84.063 46.884 l 80.152 48.001 l 81.27
|
||||
46.884 l h
|
||||
81.27 46.884 m f*
|
||||
0.279141 w
|
||||
q -1 0 0 1 0 228.91925 cm
|
||||
-81.27 -182.035 m -80.152 -183.152 l -84.063 -182.035 l -80.152
|
||||
-180.918 l -81.27 -182.035 l h
|
||||
-81.27 -182.035 m S Q
|
||||
0.8 w
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.543 97.18 m 195.801 97.18 l S Q
|
||||
[ 0.8 0.8] 0 d
|
||||
q 1 0 0 -1 0 228.91925 cm
|
||||
84.543 77.18 m 195.801 77.18 l S Q
|
||||
BT
|
||||
9.6 0 0 9.6 102.637498 156.583295 Tm
|
||||
/f-0-0 1 Tf
|
||||
[<09140c080c140a>1<10>-1<0c0311>-1<080c>1<11>-1<03>-1<09>]TJ
|
||||
-1.601887 -1.938639 Td
|
||||
[<1c1d0d1e>-1<1f20>-1<21221c1f20>-1<23>-1<1e10>-1<0d>-1<24>-1<25>]TJ
|
||||
10.675781 0 Td
|
||||
<26>Tj
|
||||
ET
|
||||
Q
|
||||
showpage
|
||||
%%Trailer
|
||||
count op_count sub {pop} repeat
|
||||
countdictstack dict_count sub {end} repeat
|
||||
cairo_eps_state restore
|
||||
%%EOF
|
Binary file not shown.
Before Width: | Height: | Size: 20 KiB |
|
@ -1,280 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://web.resource.org/cc/"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="250"
|
||||
height="300"
|
||||
id="svg2160"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.45.1"
|
||||
version="1.0"
|
||||
sodipodi:docbase="D:\Progetti\ChibiOS-RT\docs\img"
|
||||
sodipodi:docname="workspace.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
inkscape:export-filename="D:\Progetti\ChibiOS-RT\docs\img\workspace.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs2162">
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Mend"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path3299"
|
||||
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
|
||||
</marker>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3224">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3226" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3228" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3224"
|
||||
id="linearGradient3230"
|
||||
x1="199.30756"
|
||||
y1="341.00253"
|
||||
x2="348.78439"
|
||||
y2="341.00253"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3224"
|
||||
id="linearGradient2357"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="199.30756"
|
||||
y1="341.00253"
|
||||
x2="348.78439"
|
||||
y2="341.00253" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.6725"
|
||||
inkscape:cx="125"
|
||||
inkscape:cy="128.25112"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
width="250px"
|
||||
height="300px"
|
||||
gridspacingx="5px"
|
||||
gridspacingy="5px"
|
||||
inkscape:grid-points="false"
|
||||
inkscape:grid-bbox="true"
|
||||
gridtolerance="10"
|
||||
inkscape:object-paths="true"
|
||||
objecttolerance="1"
|
||||
guidetolerance="1"
|
||||
inkscape:window-width="993"
|
||||
inkscape:window-height="871"
|
||||
inkscape:window-x="352"
|
||||
inkscape:window-y="69" />
|
||||
<metadata
|
||||
id="metadata2165">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Livello 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2196"
|
||||
width="139.07188"
|
||||
height="279.0719"
|
||||
x="110.46406"
|
||||
y="10.464057" />
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3180"
|
||||
transform="translate(1.8535156,-54.849147)"><flowRegion
|
||||
id="flowRegion3182"><rect
|
||||
id="rect3184"
|
||||
width="97.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3186">Workspace base</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3188"
|
||||
transform="translate(1.8535156,-329.84915)"><flowRegion
|
||||
id="flowRegion3190"><rect
|
||||
id="rect3192"
|
||||
width="97.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3196">Workspace top</flowPara></flowRoot> <path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1,1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 109.94816,260.4823 C 249.5177,260.4823 249.5177,260.4823 249.5177,260.4823"
|
||||
id="path3243"
|
||||
inkscape:export-filename="C:\Progetti\ChibiOS\homepage\workspace.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 110.5,74.5 C 249.57284,74.5 249.57284,74.5 249.57284,74.5"
|
||||
id="path3245" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 110.5,149.5 C 249.57284,149.5 249.57284,149.5 249.57284,149.5"
|
||||
id="path3247" />
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3249"
|
||||
transform="translate(125.4043,-62.808117)"><flowRegion
|
||||
id="flowRegion3251"><rect
|
||||
id="rect3253"
|
||||
width="107.01046"
|
||||
height="12.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3255">Thread Structure</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3257"
|
||||
transform="translate(133.58398,-197.80812)"><flowRegion
|
||||
id="flowRegion3259"><rect
|
||||
id="rect3261"
|
||||
width="102.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3263">intctx Structure</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3265"
|
||||
transform="translate(137.71094,-292.80812)"><flowRegion
|
||||
id="flowRegion3267"><rect
|
||||
id="rect3269"
|
||||
width="97.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3273">Thread Stack</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3277"
|
||||
transform="translate(1.2089844,-187.09523)"><flowRegion
|
||||
id="flowRegion3279"><rect
|
||||
id="rect3281"
|
||||
width="97.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara3283">Stack Pointer</flowPara></flowRoot> <path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6978516px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
|
||||
d="M 100.34893,288.42983 C 109.31485,288.42983 109.31485,288.42983 109.31485,288.42983"
|
||||
id="path3487" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6978516px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
|
||||
d="M 100.34893,148.42983 C 109.31485,148.42983 109.31485,148.42983 109.31485,148.42983"
|
||||
id="path3489" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6978516px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
|
||||
d="M 100.16177,11.570166 C 109.12769,11.570166 109.12769,11.570166 109.12769,11.570166"
|
||||
id="path3491" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 109.93046,230.5 C 249.5,230.5 249.5,230.5 249.5,230.5"
|
||||
id="path2206"
|
||||
inkscape:export-filename="C:\Progetti\ChibiOS\homepage\workspace.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot2208"
|
||||
transform="translate(112.03516,-92.095227)"><flowRegion
|
||||
id="flowRegion2210"><rect
|
||||
id="rect2212"
|
||||
width="132.01047"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara2214">Thread Local Storage</flowPara></flowRoot> <path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6978516px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
|
||||
d="M 100.16177,261.57017 C 109.12769,261.57017 109.12769,261.57017 109.12769,261.57017"
|
||||
id="path2216" />
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot2218"
|
||||
transform="translate(1.359375,-83.728054)"><flowRegion
|
||||
id="flowRegion2220"><rect
|
||||
id="rect2222"
|
||||
width="117.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara2224">chThdLS()</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot2209"
|
||||
transform="translate(2.3710937,-107.80812)"><flowRegion
|
||||
id="flowRegion2211"><rect
|
||||
id="rect2213"
|
||||
width="97.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara2215">Stack Limit</flowPara></flowRoot> <path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6978516px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
|
||||
d="M 100.16177,231.57017 C 109.12769,231.57017 109.12769,231.57017 109.12769,231.57017"
|
||||
id="path2217" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 110.42716,125.5 C 249.5,125.5 249.5,125.5 249.5,125.5"
|
||||
id="path2221" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 110.42716,100.5 C 249.5,100.5 249.5,100.5 249.5,100.5"
|
||||
id="path2223" />
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot2225"
|
||||
transform="translate(130.04492,-248.01905)"><flowRegion
|
||||
id="flowRegion2227"><rect
|
||||
id="rect2229"
|
||||
width="102.01046"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara2231">extctx Structure</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot2235"
|
||||
transform="translate(110.82227,-224.75538)"><flowRegion
|
||||
id="flowRegion2237"><rect
|
||||
id="rect2239"
|
||||
width="137.01047"
|
||||
height="17.563538"
|
||||
x="2.9895365"
|
||||
y="332.43646" /></flowRegion><flowPara
|
||||
id="flowPara2241">INT_REQUIRED_STACK</flowPara></flowRoot> </g>
|
||||
</svg>
|
Before Width: | Height: | Size: 11 KiB |
|
@ -1,2 +0,0 @@
|
|||
#!/bin/bash
|
||||
rsync -avP -e ssh --delete --exclude=.* ./html/ gdisirio,chibios@web.sourceforge.net:/home/groups/c/ch/chibios/htdocs/docs3/rt
|
|
@ -1,409 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @page concepts Kernel Concepts
|
||||
* @brief ChibiOS/RT Kernel Concepts
|
||||
* - @ref naming
|
||||
* - @ref api_suffixes
|
||||
* - @ref interrupt_classes
|
||||
* - @ref system_states
|
||||
* - @ref scheduling
|
||||
* - @ref thread_states
|
||||
* - @ref priority
|
||||
* - @ref warea
|
||||
* .
|
||||
* @section naming Naming Conventions
|
||||
* ChibiOS/RT APIs are all named following this convention:
|
||||
* @a ch\<group\>\<action\>\<suffix\>().
|
||||
* The possible groups are: @a Sys, @a Sch, @a Time, @a VT, @a Thd, @a Sem,
|
||||
* @a Mtx, @a Cond, @a Evt, @a Msg, @a Reg, @a SequentialStream, @a IO, @a IQ,
|
||||
* @a OQ, @a Dbg, @a Core, @a Heap, @a Pool.
|
||||
*
|
||||
* @section api_suffixes API Name Suffixes
|
||||
* The suffix can be one of the following:
|
||||
* - <b>None</b>, APIs without any suffix can be invoked only from the user
|
||||
* code in the <b>Normal</b> state unless differently specified. See
|
||||
* @ref system_states.
|
||||
* - @anchor I-Class <b>"I"</b>, I-Class APIs are invokable only from the
|
||||
* <b>I-Locked</b> or <b>S-Locked</b> states. See @ref system_states.
|
||||
* - @anchor S-Class <b>"S"</b>, S-Class APIs are invokable only from the
|
||||
* <b>S-Locked</b> state. See @ref system_states.
|
||||
* .
|
||||
* Examples: @p chThdCreateStatic(), @p chSemSignalI(), @p chIQGetTimeout().
|
||||
*
|
||||
* @section interrupt_classes Interrupt Classes
|
||||
* In ChibiOS/RT there are three logical interrupt classes:
|
||||
* - <b>Regular Interrupts</b>. Maskable interrupt sources that cannot
|
||||
* preempt (small parts of) the kernel code and are thus able to invoke
|
||||
* operating system APIs from within their handlers. The interrupt handlers
|
||||
* belonging to this class must be written following some rules. See the
|
||||
* system APIs group and the web article
|
||||
* <a href="http://chibios.sourceforge.net/dokuwiki/doku.php?id=chibios:howtos:interrupts">
|
||||
* How to write interrupt handlers</a>.
|
||||
* - <b>Fast Interrupts</b>. Maskable interrupt sources with the ability
|
||||
* to preempt the kernel code and thus have a lower latency and are less
|
||||
* subject to jitter, see the web article
|
||||
* <a href="http://chibios.sourceforge.net/dokuwiki/doku.php?id=chibios:articles:jitter">
|
||||
* Response Time and Jitter</a>.
|
||||
* Such sources are not supported on all the architectures.<br>
|
||||
* Fast interrupts are not allowed to invoke any operating system API from
|
||||
* within their handlers. Fast interrupt sources may, however, pend a lower
|
||||
* priority regular interrupt where access to the operating system is
|
||||
* possible.
|
||||
* - <b>Non Maskable Interrupts</b>. Non maskable interrupt sources are
|
||||
* totally out of the operating system control and have the lowest latency.
|
||||
* Such sources are not supported on all the architectures.
|
||||
* .
|
||||
* The mapping of the above logical classes into physical interrupts priorities
|
||||
* is, of course, port dependent. See the documentation of the various ports
|
||||
* for details.
|
||||
*
|
||||
* @section system_states System States
|
||||
* When using ChibiOS/RT the system can be in one of the following logical
|
||||
* operating states:
|
||||
* - <b>Init</b>. When the system is in this state all the maskable
|
||||
* interrupt sources are disabled. In this state it is not possible to use
|
||||
* any system API except @p chSysInit(). This state is entered after a
|
||||
* physical reset.
|
||||
* - <b>Normal</b>. All the interrupt sources are enabled and the system APIs
|
||||
* are accessible, threads are running.
|
||||
* - <b>Suspended</b>. In this state the fast interrupt sources are enabled but
|
||||
* the regular interrupt sources are not. In this state it is not possible
|
||||
* to use any system API except @p chSysDisable() or @p chSysEnable() in
|
||||
* order to change state.
|
||||
* - <b>Disabled</b>. When the system is in this state both the maskable
|
||||
* regular and fast interrupt sources are disabled. In this state it is not
|
||||
* possible to use any system API except @p chSysSuspend() or
|
||||
* @p chSysEnable() in order to change state.
|
||||
* - <b>Sleep</b>. Architecture-dependent low power mode, the idle thread
|
||||
* goes in this state and waits for interrupts, after servicing the interrupt
|
||||
* the Normal state is restored and the scheduler has a chance to reschedule.
|
||||
* - <b>S-Locked</b>. Kernel locked and regular interrupt sources disabled.
|
||||
* Fast interrupt sources are enabled. @ref S-Class and @ref I-Class APIs are
|
||||
* invokable in this state.
|
||||
* - <b>I-Locked</b>. Kernel locked and regular interrupt sources disabled.
|
||||
* @ref I-Class APIs are invokable from this state.
|
||||
* - <b>Serving Regular Interrupt</b>. No system APIs are accessible but it is
|
||||
* possible to switch to the I-Locked state using @p chSysLockFromIsr() and
|
||||
* then invoke any @ref I-Class API. Interrupt handlers can be preemptable on
|
||||
* some architectures thus is important to switch to I-Locked state before
|
||||
* invoking system APIs.
|
||||
* - <b>Serving Fast Interrupt</b>. System APIs are not accessible.
|
||||
* - <b>Serving Non-Maskable Interrupt</b>. System APIs are not accessible.
|
||||
* - <b>Halted</b>. All interrupt sources are disabled and system stopped into
|
||||
* an infinite loop. This state can be reached if the debug mode is activated
|
||||
* <b>and</b> an error is detected <b>or</b> after explicitly invoking
|
||||
* @p chSysHalt().
|
||||
* .
|
||||
* Note that the above states are just <b>Logical States</b> that may have no
|
||||
* real associated machine state on some architectures. The following diagram
|
||||
* shows the possible transitions between the states:
|
||||
*
|
||||
* @if LATEX_PDF
|
||||
* @dot
|
||||
digraph example {
|
||||
size="5, 7";
|
||||
rankdir="LR";
|
||||
node [shape=circle, fontname=Helvetica, fontsize=8, fixedsize="true", width="0.75", height="0.75"];
|
||||
edge [fontname=Helvetica, fontsize=8];
|
||||
init [label="Init", style="bold"];
|
||||
norm [label="Normal", shape=doublecircle];
|
||||
susp [label="Suspended"];
|
||||
disab [label="Disabled"];
|
||||
slock [label="S-Locked"];
|
||||
ilock [label="I-Locked"];
|
||||
slock [label="S-Locked"];
|
||||
sleep [label="Sleep"];
|
||||
sri [label="SRI"];
|
||||
init -> norm [label="chSysInit()"];
|
||||
norm -> slock [label="chSysLock()", constraint=false];
|
||||
slock -> norm [label="chSysUnlock()"];
|
||||
norm -> susp [label="chSysSuspend()"];
|
||||
susp -> disab [label="chSysDisable()"];
|
||||
norm -> disab [label="chSysDisable()"];
|
||||
susp -> norm [label="chSysEnable()"];
|
||||
disab -> norm [label="chSysEnable()"];
|
||||
disab -> susp [label="chSysSuspend()"];
|
||||
slock -> ilock [label="Context Switch", dir="both"];
|
||||
norm -> sri [label="Regular IRQ", style="dotted"];
|
||||
sri -> norm [label="Regular IRQ return", fontname=Helvetica, fontsize=8];
|
||||
sri -> ilock [label="chSysLockFromIsr()", constraint=false];
|
||||
ilock -> sri [label="chSysUnlockFromIsr()", fontsize=8];
|
||||
norm -> sleep [label="Idle Thread"];
|
||||
sleep -> sri [label="Regular IRQ", style="dotted"];
|
||||
}
|
||||
* @enddot
|
||||
* @else
|
||||
* @dot
|
||||
digraph example {
|
||||
rankdir="LR";
|
||||
node [shape=circle, fontname=Helvetica, fontsize=8, fixedsize="true", width="0.75", height="0.75"];
|
||||
edge [fontname=Helvetica, fontsize=8];
|
||||
init [label="Init", style="bold"];
|
||||
norm [label="Normal", shape=doublecircle];
|
||||
susp [label="Suspended"];
|
||||
disab [label="Disabled"];
|
||||
slock [label="S-Locked"];
|
||||
ilock [label="I-Locked"];
|
||||
slock [label="S-Locked"];
|
||||
sleep [label="Sleep"];
|
||||
sri [label="SRI"];
|
||||
init -> norm [label="chSysInit()"];
|
||||
norm -> slock [label="chSysLock()", constraint=false];
|
||||
slock -> norm [label="chSysUnlock()"];
|
||||
norm -> susp [label="chSysSuspend()"];
|
||||
susp -> disab [label="chSysDisable()"];
|
||||
norm -> disab [label="chSysDisable()"];
|
||||
susp -> norm [label="chSysEnable()"];
|
||||
disab -> norm [label="chSysEnable()"];
|
||||
disab -> susp [label="chSysSuspend()"];
|
||||
slock -> ilock [label="Context Switch", dir="both"];
|
||||
norm -> sri [label="Regular IRQ", style="dotted"];
|
||||
sri -> norm [label="Regular IRQ return", fontname=Helvetica, fontsize=8];
|
||||
sri -> ilock [label="chSysLockFromIsr()", constraint=false];
|
||||
ilock -> sri [label="chSysUnlockFromIsr()", fontsize=8];
|
||||
norm -> sleep [label="Idle Thread"];
|
||||
sleep -> sri [label="Regular IRQ", style="dotted"];
|
||||
}
|
||||
* @enddot
|
||||
* @endif
|
||||
* Note, the <b>SFI</b>, <b>Halted</b> and <b>SNMI</b> states were not shown
|
||||
* because those are reachable from most states:
|
||||
*
|
||||
* @dot
|
||||
digraph example {
|
||||
size="5, 7";
|
||||
rankdir="LR";
|
||||
node [shape=circle, fontname=Helvetica, fontsize=8, fixedsize="true", width="0.75", height="0.75"];
|
||||
edge [fontname=Helvetica, fontsize=8];
|
||||
any1 [label="Any State\nexcept *"];
|
||||
sfi [label="SFI"];
|
||||
any1 -> sfi [style="dotted", label="Fast IRQ"];
|
||||
sfi -> any1 [label="Fast IRQ return"];
|
||||
}
|
||||
* @enddot
|
||||
* @dot
|
||||
digraph example {
|
||||
size="5, 7";
|
||||
rankdir="LR";
|
||||
node [shape=circle, fontname=Helvetica, fontsize=8, fixedsize="true", width="0.75", height="0.75"];
|
||||
edge [fontname=Helvetica, fontsize=8];
|
||||
any2 [label="Any State"];
|
||||
halt [label="Halted"];
|
||||
SNMI [label="SNMI"];
|
||||
any2 -> halt [label="chSysHalt()"];
|
||||
any2 -> SNMI [label="Synchronous NMI"];
|
||||
any2 -> SNMI [label="Asynchronous NMI", style="dotted"];
|
||||
SNMI -> any2 [label="NMI return"];
|
||||
halt -> SNMI [label="Asynchronous NMI", style="dotted"];
|
||||
SNMI -> halt [label="NMI return"];
|
||||
}
|
||||
* @enddot
|
||||
* @attention * except: <b>Init</b>, <b>Halt</b>, <b>SNMI</b>, <b>Disabled</b>.
|
||||
*
|
||||
* @section scheduling Scheduling
|
||||
* The strategy is very simple the currently ready thread with the highest
|
||||
* priority is executed. If more than one thread with equal priority are
|
||||
* eligible for execution then they are executed in a round-robin way, the
|
||||
* CPU time slice constant is configurable. The ready list is a double linked
|
||||
* list of threads ordered by priority.<br><br>
|
||||
* @if LATEX_PDF
|
||||
* @dot
|
||||
digraph example {
|
||||
size="5, 7";
|
||||
rankdir="LR";
|
||||
|
||||
node [shape=square, fontname=Helvetica, fontsize=8,
|
||||
fixedsize="true", width="0.6", height="0.5"];
|
||||
edge [fontname=Helvetica, fontsize=8];
|
||||
|
||||
subgraph cluster_running {
|
||||
node [shape=square, fontname=Helvetica, fontsize=8,
|
||||
fixedsize="true", width="0.6", height="0.5"];
|
||||
currp [label="'currp'\npointer", style="bold"];
|
||||
T4 [label="Tuser(4)\nprio=100"];
|
||||
label = "Currently Running Thread";
|
||||
penwidth = 0;
|
||||
}
|
||||
|
||||
subgraph cluster_rlist {
|
||||
node [shape=square, fontname=Helvetica, fontsize=8,
|
||||
fixedsize="true", width="0.6", height="0.5"];
|
||||
rh [label="ready list\nheader\nprio=0", style="bold"];
|
||||
Ti [label="Tidle\nprio=1"];
|
||||
Tm [label="Tmain\nprio=64"];
|
||||
T1 [label="Tuser(1)\nprio=32"];
|
||||
T2 [label="Tuser(2)\nprio=32"];
|
||||
T3 [label="Tuser(3)\nprio=80"];
|
||||
label = "Threads Ready for Execution";
|
||||
penwidth = 0;
|
||||
}
|
||||
|
||||
currp -> T4
|
||||
rh -> Ti -> T1 -> T2 -> Tm -> T3 -> rh [label="p_next"];
|
||||
rh -> T3 -> Tm -> T2 -> T1 -> Ti -> rh [label="p_prev"];
|
||||
}
|
||||
* @enddot
|
||||
* @else
|
||||
* @dot
|
||||
digraph example {
|
||||
rankdir="LR";
|
||||
|
||||
node [shape=square, fontname=Helvetica, fontsize=8,
|
||||
fixedsize="true", width="0.6", height="0.5"];
|
||||
edge [fontname=Helvetica, fontsize=8];
|
||||
|
||||
subgraph cluster_running {
|
||||
node [shape=square, fontname=Helvetica, fontsize=8,
|
||||
fixedsize="true", width="0.6", height="0.5"];
|
||||
currp [label="'currp'\npointer", style="bold"];
|
||||
T4 [label="Tuser(4)\nprio=100"];
|
||||
label = "Currently Running Thread";
|
||||
penwidth = 0;
|
||||
}
|
||||
|
||||
subgraph cluster_rlist {
|
||||
node [shape=square, fontname=Helvetica, fontsize=8,
|
||||
fixedsize="true", width="0.6", height="0.5"];
|
||||
rh [label="ready list\nheader\nprio=0", style="bold"];
|
||||
Ti [label="Tidle\nprio=1"];
|
||||
Tm [label="Tmain\nprio=64"];
|
||||
T1 [label="Tuser(1)\nprio=32"];
|
||||
T2 [label="Tuser(2)\nprio=32"];
|
||||
T3 [label="Tuser(3)\nprio=80"];
|
||||
label = "Threads Ready for Execution";
|
||||
penwidth = 0;
|
||||
}
|
||||
|
||||
currp -> T4
|
||||
rh -> Ti -> T1 -> T2 -> Tm -> T3 -> rh [label="p_next"];
|
||||
rh -> T3 -> Tm -> T2 -> T1 -> Ti -> rh [label="p_prev"];
|
||||
}
|
||||
* @enddot
|
||||
* @endif
|
||||
* <br>
|
||||
* Note that the currently running thread is not in the ready list, the list
|
||||
* only contains the threads ready to be executed but still actually waiting.
|
||||
*
|
||||
* @section thread_states Thread States
|
||||
* The image shows how threads can change their state in ChibiOS/RT.<br>
|
||||
* @if LATEX_PDF
|
||||
* @dot
|
||||
digraph example {
|
||||
rankdir="LR";
|
||||
node [shape=circle, fontname=Helvetica, fontsize=8, fixedsize="true", width="0.75", height="0.75"];
|
||||
size="5, 7";
|
||||
|
||||
edge [fontname=Helvetica, fontsize=8];
|
||||
start [label="Start", style="bold"];
|
||||
|
||||
run [label="Running"];
|
||||
ready [label="Ready"];
|
||||
suspend [label="Suspended"];
|
||||
sleep [label="Sleeping"];
|
||||
stop [label="Stop", style="bold"];
|
||||
|
||||
start -> suspend [label="\n chThdCreateI()", constraint=false, dir=back];
|
||||
start -> run [label="chThdCreate()"];
|
||||
start -> ready [label="chThdCreate()"];
|
||||
run -> ready [label="Reschedule", dir="both"];
|
||||
suspend -> run [label="chThdResume()"];
|
||||
suspend -> ready [label="chThdResume()"];
|
||||
run -> sleep [label="chSchGoSleepS()"];
|
||||
sleep -> run [label="chSchWakepuS()"];
|
||||
sleep -> ready [label="chSchWakepuS()"];
|
||||
run -> stop [label="chThdExit()"];
|
||||
}
|
||||
* @enddot
|
||||
* @else
|
||||
* @dot
|
||||
digraph example {
|
||||
rankdir="LR";
|
||||
node [shape=circle, fontname=Helvetica, fontsize=8, fixedsize="true", width="0.75", height="0.75"];
|
||||
|
||||
edge [fontname=Helvetica, fontsize=8];
|
||||
start [label="Start", style="bold"];
|
||||
|
||||
run [label="Running"];
|
||||
ready [label="Ready"];
|
||||
suspend [label="Suspended"];
|
||||
sleep [label="Sleeping"];
|
||||
stop [label="Stop", style="bold"];
|
||||
|
||||
start -> suspend [label="\n chThdCreateI()", constraint=false, dir=back];
|
||||
start -> run [label="chThdCreate()"];
|
||||
start -> ready [label="chThdCreate()"];
|
||||
run -> ready [label="Reschedule", dir="both"];
|
||||
suspend -> run [label="chThdResume()"];
|
||||
suspend -> ready [label="chThdResume()"];
|
||||
run -> sleep [label="chSchGoSleepS()"];
|
||||
sleep -> run [label="chSchWakepuS()"];
|
||||
sleep -> ready [label="chSchWakepuS()"];
|
||||
run -> stop [label="chThdExit()"];
|
||||
}
|
||||
* @enddot
|
||||
* @endif
|
||||
*
|
||||
* @section priority Priority Levels
|
||||
* Priorities in ChibiOS/RT are a contiguous numerical range but the initial
|
||||
* and final values are not enforced.<br>
|
||||
* The following table describes the various priority boundaries (from lowest
|
||||
* to highest):
|
||||
* - @p IDLEPRIO, this is the lowest priority level and is reserved for the
|
||||
* idle thread, no other threads should share this priority level. This is
|
||||
* the lowest numerical value of the priorities space.
|
||||
* - @p LOWPRIO, the lowest priority level that can be assigned to an user
|
||||
* thread.
|
||||
* - @p NORMALPRIO, this is the central priority level for user threads. It is
|
||||
* advisable to assign priorities to threads as values relative to
|
||||
* @p NORMALPRIO, as example NORMALPRIO-1 or NORMALPRIO+4, this ensures the
|
||||
* portability of code should the numerical range change in future
|
||||
* implementations.
|
||||
* - @p HIGHPRIO, the highest priority level that can be assigned to an user
|
||||
* thread.
|
||||
* - @p ABSPRO, absolute maximum software priority level, it can be higher than
|
||||
* @p HIGHPRIO but the numerical values above @p HIGHPRIO up to @p ABSPRIO
|
||||
* (inclusive) are reserved. This is the highest numerical value of the
|
||||
* priorities space.
|
||||
* .
|
||||
* @section warea Thread Working Area
|
||||
* Each thread has its own stack, a Thread structure and some preemption
|
||||
* areas. All the structures are allocated into a "Thread Working Area",
|
||||
* a thread private heap, usually statically declared in your code.
|
||||
* Threads do not use any memory outside the allocated working area
|
||||
* except when accessing static shared data.<br><br>
|
||||
* @if LATEX_PDF
|
||||
* @image latex workspace.eps
|
||||
* @else
|
||||
* @image html workspace.png
|
||||
* @endif
|
||||
* <br>
|
||||
* Note that the preemption area is only present when the thread is not
|
||||
* running (switched out), the context switching is done by pushing the
|
||||
* registers on the stack of the switched-out thread and popping the registers
|
||||
* of the switched-in thread from its stack.
|
||||
* The preemption area can be divided in up to three structures:
|
||||
* - External Context.
|
||||
* - Interrupt Stack.
|
||||
* - Internal Context.
|
||||
* .
|
||||
* See the port documentation for details, the area may change on
|
||||
* the various ports and some structures may not be present (or be zero-sized).
|
||||
*/
|
|
@ -1,63 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @mainpage Introduction
|
||||
* @author Giovanni Di Sirio (gdisirio@users.sourceforge.net).
|
||||
*
|
||||
* <h2>Chibi ?</h2>
|
||||
* I didn't want a serious name for this project. It is the Japanese word for
|
||||
* small as in small child. So ChibiOS/RT
|
||||
* @htmlonly (<span class="t_nihongo_kanji" xml:lang="ja" lang="ja">ちび</span>OS/RT) @endhtmlonly
|
||||
* means small Real Time Operating System.
|
||||
* Source <a href="http://en.wikipedia.org/wiki/Chibi" target="_blank">Wikipedia</a>.
|
||||
*
|
||||
* <h2>Features</h2>
|
||||
* - Free software, GPL3 licensed. Stable releases include a exception clause
|
||||
* to the GPL.
|
||||
* - Designed for realtime applications.
|
||||
* - Easily portable.
|
||||
* - Preemptive scheduling.
|
||||
* - 128 priority levels. Multiple threads at the same priority level allowed.
|
||||
* - Round robin scheduling for threads at the same priority level.
|
||||
* - Offers threads, virtual timers, semaphores, mutexes, condvars,
|
||||
* event flags, messages, mailboxes, I/O queues.
|
||||
* - No static setup at compile time, there is no need to configure a maximum
|
||||
* number of all the above objects.
|
||||
* - PC simulator target included, the development can be done on a PC
|
||||
* under Linux or Windows.<br>
|
||||
* Timers, I/O channels and other HW resources are simulated in a guest OS
|
||||
* process and the application code does not need to be aware of it.
|
||||
* - No *need* for a memory allocator, all the kernel structures are static
|
||||
* and declaratively allocated.
|
||||
* - Optional, thread safe, Heap Allocator subsystem.
|
||||
* - Optional, thread safe, Memory Pools Allocator subsystem.
|
||||
* - Blocking and non blocking I/O channels with timeout and events generation
|
||||
* capability.
|
||||
* - Minimal system requirements: about 6KiB ROM with all options enabled and
|
||||
* speed optimizations on. The size can shrink under 2KiB by disabling the
|
||||
* the unused subsystems and optimizing for size.
|
||||
* - Almost totally written in C with little ASM code required for ports.
|
||||
* - Compatible with ChibiOS/HAL.
|
||||
* .
|
||||
* <h2>Related pages</h2>
|
||||
* - @subpage concepts
|
||||
* - @subpage testsuite
|
||||
* .
|
||||
*/
|
|
@ -1,115 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file osal.c
|
||||
* @brief OSAL module code.
|
||||
*
|
||||
* @addtogroup OSAL
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "osal.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Dequeues and wakes up one thread from the queue, if any.
|
||||
*
|
||||
* @param[in] tqp pointer to the threads queue object
|
||||
* @param[in] msg the message code
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
void osalThreadDequeueNextI(threads_queue_t *tqp, msg_t msg) {
|
||||
semaphore_t *sp = &tqp->sem;
|
||||
|
||||
if (chSemGetCounterI(&tqp->sem) < (cnt_t)0) {
|
||||
thread_t *tp = nil.threads;
|
||||
while (true) {
|
||||
/* Is this thread waiting on this semaphore?*/
|
||||
if (tp->u1.semp == sp) {
|
||||
sp->cnt++;
|
||||
|
||||
chDbgAssert(NIL_THD_IS_WTSEM(tp), "not waiting");
|
||||
|
||||
(void) chSchReadyI(tp, msg);
|
||||
return;
|
||||
}
|
||||
tp++;
|
||||
|
||||
chDbgAssert(tp < &nil.threads[NIL_CFG_NUM_THREADS],
|
||||
"pointer out of range");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Dequeues and wakes up all threads from the queue.
|
||||
*
|
||||
* @param[in] tqp pointer to the threads queue object
|
||||
* @param[in] msg the message code
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
void osalThreadDequeueAllI(threads_queue_t *tqp, msg_t msg) {
|
||||
semaphore_t *sp = &tqp->sem;
|
||||
thread_t *tp;
|
||||
cnt_t cnt;
|
||||
|
||||
cnt = sp->cnt;
|
||||
sp->cnt = (cnt_t)0;
|
||||
tp = nil.threads;
|
||||
while (cnt < (cnt_t)0) {
|
||||
|
||||
chDbgAssert(tp < &nil.threads[NIL_CFG_NUM_THREADS],
|
||||
"pointer out of range");
|
||||
|
||||
/* Is this thread waiting on this semaphore?*/
|
||||
if (tp->u1.semp == sp) {
|
||||
|
||||
chDbgAssert(NIL_THD_IS_WTSEM(tp), "not waiting");
|
||||
|
||||
cnt++;
|
||||
(void) chSchReadyI(tp, msg);
|
||||
}
|
||||
tp++;
|
||||
}
|
||||
}
|
||||
|
||||
/** @} */
|
|
@ -1,920 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file osal.h
|
||||
* @brief OSAL module header.
|
||||
*
|
||||
* @addtogroup OSAL
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _OSAL_H_
|
||||
#define _OSAL_H_
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "nil.h"
|
||||
|
||||
#if defined(__SPC5_HAL__)
|
||||
#include "platform.h"
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @name Common constants
|
||||
* @{
|
||||
*/
|
||||
#if !defined(FALSE) || defined(__DOXYGEN__)
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#if !defined(TRUE) || defined(__DOXYGEN__)
|
||||
#define TRUE (!FALSE)
|
||||
#endif
|
||||
|
||||
#define OSAL_SUCCESS FALSE
|
||||
#define OSAL_FAILED TRUE
|
||||
/** @} */
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* @name Messages
|
||||
* @{
|
||||
*/
|
||||
#define MSG_OK RDY_OK
|
||||
#define MSG_RESET RDY_RESET
|
||||
#define MSG_TIMEOUT RDY_TIMEOUT
|
||||
/** @} */
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* @name Special time constants
|
||||
* @{
|
||||
*/
|
||||
#define TIME_IMMEDIATE ((systime_t)0)
|
||||
#define TIME_INFINITE ((systime_t)-1)
|
||||
/** @} */
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @name Systick modes.
|
||||
* @{
|
||||
*/
|
||||
#define OSAL_ST_MODE_NONE 0
|
||||
#define OSAL_ST_MODE_PERIODIC 1
|
||||
#define OSAL_ST_MODE_FREERUNNING 2
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name Systick parameters.
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief Size in bits of the @p systick_t type.
|
||||
*/
|
||||
#define OSAL_ST_RESOLUTION NIL_CFG_ST_RESOLUTION
|
||||
|
||||
/**
|
||||
* @brief Required systick frequency or resolution.
|
||||
*/
|
||||
#define OSAL_ST_FREQUENCY NIL_CFG_ST_FREQUENCY
|
||||
|
||||
/**
|
||||
* @brief Systick mode required by the underlying OS.
|
||||
*/
|
||||
#if (NIL_CFG_ST_TIMEDELTA == 0) || defined(__DOXYGEN__)
|
||||
#define OSAL_ST_MODE OSAL_ST_MODE_PERIODIC
|
||||
#else
|
||||
#define OSAL_ST_MODE OSAL_ST_MODE_FREERUNNING
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if NIL_CFG_USE_EVENTS == FALSE
|
||||
#error "OSAL requires NIL_CFG_USE_EVENTS=TRUE"
|
||||
#endif
|
||||
|
||||
#if !(OSAL_ST_MODE == OSAL_ST_MODE_NONE) && \
|
||||
!(OSAL_ST_MODE == OSAL_ST_MODE_PERIODIC) && \
|
||||
!(OSAL_ST_MODE == OSAL_ST_MODE_FREERUNNING)
|
||||
#error "invalid OSAL_ST_MODE setting in osal.h"
|
||||
#endif
|
||||
|
||||
#if (OSAL_ST_RESOLUTION != 16) && (OSAL_ST_RESOLUTION != 32)
|
||||
#error "invalid OSAL_ST_RESOLUTION, must be 16 or 32"
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* @brief Type of a system status word.
|
||||
*/
|
||||
typedef uint32_t syssts_t;
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* @brief Type of a message.
|
||||
*/
|
||||
typedef int32_t msg_t;
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* @brief Type of system time counter.
|
||||
*/
|
||||
typedef uint32_t systime_t;
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* @brief Type of realtime counter.
|
||||
*/
|
||||
typedef uint32_t rtcnt_t;
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* @brief Type of a thread reference.
|
||||
*/
|
||||
typedef thread_t * thread_reference_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Type of an event flags object.
|
||||
* @note The content of this structure is not part of the API and should
|
||||
* not be relied upon. Implementers may define this structure in
|
||||
* an entirely different way.
|
||||
* @note Retrieval and clearing of the flags are not defined in this
|
||||
* API and are implementation-dependent.
|
||||
*/
|
||||
typedef struct event_source event_source_t;
|
||||
|
||||
/**
|
||||
* @brief Type of an event source callback.
|
||||
* @note This type is not part of the OSAL API and is provided
|
||||
* exclusively as an example and for convenience.
|
||||
*/
|
||||
typedef void (*eventcallback_t)(event_source_t *p);
|
||||
|
||||
/**
|
||||
* @brief Type of an event flags mask.
|
||||
*/
|
||||
typedef uint32_t eventflags_t;
|
||||
|
||||
/**
|
||||
* @brief Events source object.
|
||||
* @note The content of this structure is not part of the API and should
|
||||
* not be relied upon. Implementers may define this structure in
|
||||
* an entirely different way.
|
||||
* @note Retrieval and clearing of the flags are not defined in this
|
||||
* API and are implementation-dependent.
|
||||
*/
|
||||
struct event_source {
|
||||
volatile eventflags_t flags; /**< @brief Stored event flags. */
|
||||
eventcallback_t cb; /**< @brief Event source callback. */
|
||||
void *param; /**< @brief User defined field. */
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Type of a mutex.
|
||||
* @note If the OS does not support mutexes or there is no OS then them
|
||||
* mechanism can be simulated.
|
||||
*/
|
||||
typedef semaphore_t mutex_t;
|
||||
|
||||
/**
|
||||
* @brief Type of a thread queue.
|
||||
* @details A thread queue is a queue of sleeping threads, queued threads
|
||||
* can be dequeued one at time or all together.
|
||||
* @note In this implementation it is implemented as a single reference
|
||||
* because there are no real threads.
|
||||
*/
|
||||
typedef struct {
|
||||
semaphore_t sem;
|
||||
} threads_queue_t;
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @name Debug related macros
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief Condition assertion.
|
||||
* @details If the condition check fails then the OSAL panics with a
|
||||
* message and halts.
|
||||
* @note The condition is tested only if the @p OSAL_ENABLE_ASSERTIONS
|
||||
* switch is enabled.
|
||||
* @note The remark string is not currently used except for putting a
|
||||
* comment in the code about the assertion.
|
||||
*
|
||||
* @param[in] c the condition to be verified to be true
|
||||
* @param[in] remark a remark string
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
#define osalDbgAssert(c, remark) chDbgAssert(c, remark)
|
||||
|
||||
/**
|
||||
* @brief Function parameters check.
|
||||
* @details If the condition check fails then the OSAL panics and halts.
|
||||
* @note The condition is tested only if the @p OSAL_ENABLE_CHECKS switch
|
||||
* is enabled.
|
||||
*
|
||||
* @param[in] c the condition to be verified to be true
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
#define osalDbgCheck(c) chDbgAssert(c, "parameter check")
|
||||
|
||||
/**
|
||||
* @brief I-Class state check.
|
||||
* @note Not implemented in this simplified OSAL.
|
||||
*/
|
||||
#define osalDbgCheckClassI() /*chDbgCheckClassI()*/
|
||||
|
||||
/**
|
||||
* @brief S-Class state check.
|
||||
* @note Not implemented in this simplified OSAL.
|
||||
*/
|
||||
#define osalDbgCheckClassS() /*chDbgCheckClassS()*/
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name IRQ service routines wrappers
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief Priority level verification macro.
|
||||
*/
|
||||
#define OSAL_IRQ_IS_VALID_PRIORITY(n) CH_IRQ_IS_VALID_KERNEL_PRIORITY(n)
|
||||
|
||||
/**
|
||||
* @brief IRQ prologue code.
|
||||
* @details This macro must be inserted at the start of all IRQ handlers.
|
||||
*/
|
||||
#define OSAL_IRQ_PROLOGUE() CH_IRQ_PROLOGUE()
|
||||
|
||||
/**
|
||||
* @brief IRQ epilogue code.
|
||||
* @details This macro must be inserted at the end of all IRQ handlers.
|
||||
*/
|
||||
#define OSAL_IRQ_EPILOGUE() CH_IRQ_EPILOGUE()
|
||||
|
||||
/**
|
||||
* @brief IRQ handler function declaration.
|
||||
* @details This macro hides the details of an ISR function declaration.
|
||||
*
|
||||
* @param[in] id a vector name as defined in @p vectors.s
|
||||
*/
|
||||
#define OSAL_IRQ_HANDLER(id) CH_IRQ_HANDLER(id)
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name Time conversion utilities
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief Seconds to system ticks.
|
||||
* @details Converts from seconds to system ticks number.
|
||||
* @note The result is rounded upward to the next tick boundary.
|
||||
*
|
||||
* @param[in] sec number of seconds
|
||||
* @return The number of ticks.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
#define OSAL_S2ST(sec) S2ST(sec)
|
||||
|
||||
/**
|
||||
* @brief Milliseconds to system ticks.
|
||||
* @details Converts from milliseconds to system ticks number.
|
||||
* @note The result is rounded upward to the next tick boundary.
|
||||
*
|
||||
* @param[in] msec number of milliseconds
|
||||
* @return The number of ticks.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
#define OSAL_MS2ST(msec) MS2ST(msec)
|
||||
|
||||
/**
|
||||
* @brief Microseconds to system ticks.
|
||||
* @details Converts from microseconds to system ticks number.
|
||||
* @note The result is rounded upward to the next tick boundary.
|
||||
*
|
||||
* @param[in] usec number of microseconds
|
||||
* @return The number of ticks.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
#define OSAL_US2ST(usec) US2ST(usec)
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name Time conversion utilities for the realtime counter
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief Seconds to realtime counter.
|
||||
* @details Converts from seconds to realtime counter cycles.
|
||||
* @note The macro assumes that @p freq >= @p 1.
|
||||
*
|
||||
* @param[in] freq clock frequency, in Hz, of the realtime counter
|
||||
* @param[in] sec number of seconds
|
||||
* @return The number of cycles.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
#define OSAL_S2RTC(freq, sec) S2RTC(freq, sec)
|
||||
|
||||
/**
|
||||
* @brief Milliseconds to realtime counter.
|
||||
* @details Converts from milliseconds to realtime counter cycles.
|
||||
* @note The result is rounded upward to the next millisecond boundary.
|
||||
* @note The macro assumes that @p freq >= @p 1000.
|
||||
*
|
||||
* @param[in] freq clock frequency, in Hz, of the realtime counter
|
||||
* @param[in] msec number of milliseconds
|
||||
* @return The number of cycles.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
#define OSAL_MS2RTC(freq, msec) MS2RTC(freq, msec)
|
||||
|
||||
/**
|
||||
* @brief Microseconds to realtime counter.
|
||||
* @details Converts from microseconds to realtime counter cycles.
|
||||
* @note The result is rounded upward to the next microsecond boundary.
|
||||
* @note The macro assumes that @p freq >= @p 1000000.
|
||||
*
|
||||
* @param[in] freq clock frequency, in Hz, of the realtime counter
|
||||
* @param[in] usec number of microseconds
|
||||
* @return The number of cycles.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
#define OSAL_US2RTC(freq, usec) US2RTC(freq, usec)
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name Sleep macros using absolute time
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief Delays the invoking thread for the specified number of seconds.
|
||||
* @note The specified time is rounded up to a value allowed by the real
|
||||
* system tick clock.
|
||||
* @note The maximum specifiable value is implementation dependent.
|
||||
*
|
||||
* @param[in] sec time in seconds, must be different from zero
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
#define osalThreadSleepSeconds(sec) osalThreadSleep(OSAL_S2ST(sec))
|
||||
|
||||
/**
|
||||
* @brief Delays the invoking thread for the specified number of
|
||||
* milliseconds.
|
||||
* @note The specified time is rounded up to a value allowed by the real
|
||||
* system tick clock.
|
||||
* @note The maximum specifiable value is implementation dependent.
|
||||
*
|
||||
* @param[in] msec time in milliseconds, must be different from zero
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
#define osalThreadSleepMilliseconds(msec) osalThreadSleep(OSAL_MS2ST(msec))
|
||||
|
||||
/**
|
||||
* @brief Delays the invoking thread for the specified number of
|
||||
* microseconds.
|
||||
* @note The specified time is rounded up to a value allowed by the real
|
||||
* system tick clock.
|
||||
* @note The maximum specifiable value is implementation dependent.
|
||||
*
|
||||
* @param[in] usec time in microseconds, must be different from zero
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
#define osalThreadSleepMicroseconds(usec) osalThreadSleep(OSAL_US2ST(usec))
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void osalThreadDequeueNextI(threads_queue_t *tqp, msg_t msg);
|
||||
void osalThreadDequeueAllI(threads_queue_t *tqp, msg_t msg);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief OSAL module initialization.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
static inline void osalInit(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System halt with error message.
|
||||
*
|
||||
* @param[in] reason the halt message pointer
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
static inline void osalSysHalt(const char *reason) {
|
||||
|
||||
chSysHalt(reason);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables interrupts globally.
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
static inline void osalSysDisable(void) {
|
||||
|
||||
chSysDisable();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enables interrupts globally.
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
static inline void osalSysEnable(void) {
|
||||
|
||||
chSysEnable();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enters a critical zone from thread context.
|
||||
* @note This function cannot be used for reentrant critical zones.
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
static inline void osalSysLock(void) {
|
||||
|
||||
chSysLock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Leaves a critical zone from thread context.
|
||||
* @note This function cannot be used for reentrant critical zones.
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
static inline void osalSysUnlock(void) {
|
||||
|
||||
chSysUnlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enters a critical zone from ISR context.
|
||||
* @note This function cannot be used for reentrant critical zones.
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
static inline void osalSysLockFromISR(void) {
|
||||
|
||||
chSysLockFromISR();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Leaves a critical zone from ISR context.
|
||||
* @note This function cannot be used for reentrant critical zones.
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
static inline void osalSysUnlockFromISR(void) {
|
||||
|
||||
chSysUnlockFromISR();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the execution status and enters a critical zone.
|
||||
* @details This functions enters into a critical zone and can be called
|
||||
* from any context. Because its flexibility it is less efficient
|
||||
* than @p chSysLock() which is preferable when the calling context
|
||||
* is known.
|
||||
* @post The system is in a critical zone.
|
||||
*
|
||||
* @return The previous system status, the encoding of this
|
||||
* status word is architecture-dependent and opaque.
|
||||
*
|
||||
* @xclass
|
||||
*/
|
||||
static inline syssts_t osalSysGetStatusAndLockX(void) {
|
||||
|
||||
return chSysGetStatusAndLockX();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Restores the specified execution status and leaves a critical zone.
|
||||
* @note A call to @p chSchRescheduleS() is automatically performed
|
||||
* if exiting the critical zone and if not in ISR context.
|
||||
*
|
||||
* @param[in] sts the system status to be restored.
|
||||
*
|
||||
* @xclass
|
||||
*/
|
||||
static inline void osalSysRestoreStatusX(syssts_t sts) {
|
||||
|
||||
chSysRestoreStatusX(sts);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Polled delay.
|
||||
* @note The real delay is always few cycles in excess of the specified
|
||||
* value.
|
||||
*
|
||||
* @param[in] cycles number of cycles
|
||||
*
|
||||
* @xclass
|
||||
*/
|
||||
#if (PORT_SUPPORTS_RT == TRUE) || defined(__DOXYGEN__)
|
||||
static inline void osalSysPolledDelayX(rtcnt_t cycles) {
|
||||
|
||||
chSysPolledDelayX(cycles);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Systick callback for the underlying OS.
|
||||
* @note This callback is only defined if the OSAL requires such a
|
||||
* service from the HAL.
|
||||
*/
|
||||
#if (OSAL_ST_MODE != OSAL_ST_MODE_NONE) || defined(__DOXYGEN__)
|
||||
static inline void osalOsTimerHandlerI(void) {
|
||||
|
||||
chSysTimerHandlerI();
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Checks if a reschedule is required and performs it.
|
||||
* @note I-Class functions invoked from thread context must not reschedule
|
||||
* by themselves, an explicit reschedule using this function is
|
||||
* required in this scenario.
|
||||
* @note Not implemented in this simplified OSAL.
|
||||
*
|
||||
* @sclass
|
||||
*/
|
||||
static inline void osalOsRescheduleS(void) {
|
||||
|
||||
chSchRescheduleS();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Current system time.
|
||||
* @details Returns the number of system ticks since the @p osalInit()
|
||||
* invocation.
|
||||
* @note The counter can reach its maximum and then restart from zero.
|
||||
* @note This function can be called from any context but its atomicity
|
||||
* is not guaranteed on architectures whose word size is less than
|
||||
* @p systime_t size.
|
||||
*
|
||||
* @return The system time in ticks.
|
||||
*
|
||||
* @xclass
|
||||
*/
|
||||
static inline systime_t osalOsGetSystemTimeX(void) {
|
||||
|
||||
return chVTGetSystemTimeX();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks if the specified time is within the specified time window.
|
||||
* @note When start==end then the function returns always true because the
|
||||
* whole time range is specified.
|
||||
* @note This function can be called from any context.
|
||||
*
|
||||
* @param[in] time the time to be verified
|
||||
* @param[in] start the start of the time window (inclusive)
|
||||
* @param[in] end the end of the time window (non inclusive)
|
||||
* @retval true current time within the specified time window.
|
||||
* @retval false current time not within the specified time window.
|
||||
*
|
||||
* @xclass
|
||||
*/
|
||||
static inline bool osalOsIsTimeWithinX(systime_t time,
|
||||
systime_t start,
|
||||
systime_t end) {
|
||||
|
||||
return chVTIsTimeWithinX(time, start, end);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Suspends the invoking thread for the specified time.
|
||||
*
|
||||
* @param[in] time the delay in system ticks, the special values are
|
||||
* handled as follow:
|
||||
* - @a TIME_INFINITE is allowed but interpreted as a
|
||||
* normal time specification.
|
||||
* - @a TIME_IMMEDIATE this value is not allowed.
|
||||
* .
|
||||
*
|
||||
* @sclass
|
||||
*/
|
||||
static inline void osalThreadSleepS(systime_t time) {
|
||||
|
||||
chThdSleepS(time);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Suspends the invoking thread for the specified time.
|
||||
*
|
||||
* @param[in] time the delay in system ticks, the special values are
|
||||
* handled as follow:
|
||||
* - @a TIME_INFINITE is allowed but interpreted as a
|
||||
* normal time specification.
|
||||
* - @a TIME_IMMEDIATE this value is not allowed.
|
||||
* .
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
static inline void osalThreadSleep(systime_t time) {
|
||||
|
||||
chThdSleep(time);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sends the current thread sleeping and sets a reference variable.
|
||||
* @note This function must reschedule, it can only be called from thread
|
||||
* context.
|
||||
*
|
||||
* @param[in] trp a pointer to a thread reference object
|
||||
* @return The wake up message.
|
||||
*
|
||||
* @sclass
|
||||
*/
|
||||
static inline msg_t osalThreadSuspendS(thread_reference_t *trp) {
|
||||
|
||||
return chThdSuspendTimeoutS(trp, TIME_INFINITE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sends the current thread sleeping and sets a reference variable.
|
||||
* @note This function must reschedule, it can only be called from thread
|
||||
* context.
|
||||
*
|
||||
* @param[in] trp a pointer to a thread reference object
|
||||
* @param[in] timeout the timeout in system ticks, the special values are
|
||||
* handled as follow:
|
||||
* - @a TIME_INFINITE the thread enters an infinite sleep
|
||||
* state.
|
||||
* - @a TIME_IMMEDIATE the thread is not enqueued and
|
||||
* the function returns @p MSG_TIMEOUT as if a timeout
|
||||
* occurred.
|
||||
* .
|
||||
* @return The wake up message.
|
||||
* @retval MSG_TIMEOUT if the operation timed out.
|
||||
*
|
||||
* @sclass
|
||||
*/
|
||||
static inline msg_t osalThreadSuspendTimeoutS(thread_reference_t *trp,
|
||||
systime_t timeout) {
|
||||
|
||||
return chThdSuspendTimeoutS(trp, timeout);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Wakes up a thread waiting on a thread reference object.
|
||||
* @note This function must not reschedule because it can be called from
|
||||
* ISR context.
|
||||
*
|
||||
* @param[in] trp a pointer to a thread reference object
|
||||
* @param[in] msg the message code
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
static inline void osalThreadResumeI(thread_reference_t *trp, msg_t msg) {
|
||||
|
||||
chThdResumeI(trp, msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Wakes up a thread waiting on a thread reference object.
|
||||
* @note This function must reschedule, it can only be called from thread
|
||||
* context.
|
||||
*
|
||||
* @param[in] trp a pointer to a thread reference object
|
||||
* @param[in] msg the message code
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
static inline void osalThreadResumeS(thread_reference_t *trp, msg_t msg) {
|
||||
|
||||
chThdResumeI(trp, msg);
|
||||
chSchRescheduleS();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes a threads queue object.
|
||||
*
|
||||
* @param[out] tqp pointer to the threads queue object
|
||||
*
|
||||
* @init
|
||||
*/
|
||||
static inline void osalThreadQueueObjectInit(threads_queue_t *tqp) {
|
||||
|
||||
chSemObjectInit(&tqp->sem, (cnt_t)0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enqueues the caller thread.
|
||||
* @details The caller thread is enqueued and put to sleep until it is
|
||||
* dequeued or the specified timeouts expires.
|
||||
*
|
||||
* @param[in] tqp pointer to the threads queue object
|
||||
* @param[in] time the timeout in system ticks, the special values are
|
||||
* handled as follow:
|
||||
* - @a TIME_INFINITE the thread enters an infinite sleep
|
||||
* state.
|
||||
* - @a TIME_IMMEDIATE the thread is not enqueued and
|
||||
* the function returns @p MSG_TIMEOUT as if a timeout
|
||||
* occurred.
|
||||
* .
|
||||
* @return The message from @p osalQueueWakeupOneI() or
|
||||
* @p osalQueueWakeupAllI() functions.
|
||||
* @retval MSG_TIMEOUT if the thread has not been dequeued within the
|
||||
* specified timeout or if the function has been
|
||||
* invoked with @p TIME_IMMEDIATE as timeout
|
||||
* specification.
|
||||
*
|
||||
* @sclass
|
||||
*/
|
||||
static inline msg_t osalThreadEnqueueTimeoutS(threads_queue_t *tqp,
|
||||
systime_t time) {
|
||||
|
||||
return chSemWaitTimeoutS(&tqp->sem, time);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes an event flags object.
|
||||
*
|
||||
* @param[out] esp pointer to the event flags object
|
||||
*
|
||||
* @init
|
||||
*/
|
||||
static inline void osalEventObjectInit(event_source_t *esp) {
|
||||
|
||||
osalDbgCheck(esp != NULL);
|
||||
|
||||
esp->flags = 0;
|
||||
esp->cb = NULL;
|
||||
esp->param = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Add flags to an event source object.
|
||||
*
|
||||
* @param[in] esp pointer to the event flags object
|
||||
* @param[in] flags flags to be ORed to the flags mask
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
static inline void osalEventBroadcastFlagsI(event_source_t *esp,
|
||||
eventflags_t flags) {
|
||||
|
||||
osalDbgCheck(esp != NULL);
|
||||
|
||||
esp->flags |= flags;
|
||||
if (esp->cb != NULL) {
|
||||
esp->cb(esp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Add flags to an event source object.
|
||||
*
|
||||
* @param[in] esp pointer to the event flags object
|
||||
* @param[in] flags flags to be ORed to the flags mask
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
static inline void osalEventBroadcastFlags(event_source_t *esp,
|
||||
eventflags_t flags) {
|
||||
|
||||
osalDbgCheck(esp != NULL);
|
||||
|
||||
chSysLock();
|
||||
osalEventBroadcastFlagsI(esp, flags);
|
||||
chSchRescheduleS();
|
||||
chSysUnlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Event callback setup.
|
||||
* @note The callback is invoked from ISR context and can
|
||||
* only invoke I-Class functions. The callback is meant
|
||||
* to wakeup the task that will handle the event by
|
||||
* calling @p osalEventGetAndClearFlagsI().
|
||||
*
|
||||
* @param[in] esp pointer to the event flags object
|
||||
* @param[in] cb pointer to the callback function
|
||||
* @param[in] param parameter to be passed to the callback function
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
static inline void osalEventSetCallback(event_source_t *esp,
|
||||
eventcallback_t cb,
|
||||
void *param) {
|
||||
|
||||
osalDbgCheck(esp != NULL);
|
||||
|
||||
esp->cb = cb;
|
||||
esp->param = param;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes s @p mutex_t object.
|
||||
*
|
||||
* @param[out] mp pointer to the @p mutex_t object
|
||||
*
|
||||
* @init
|
||||
*/
|
||||
static inline void osalMutexObjectInit(mutex_t *mp) {
|
||||
|
||||
chSemObjectInit((semaphore_t *)mp, (cnt_t)1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Locks the specified mutex.
|
||||
* @post The mutex is locked and inserted in the per-thread stack of owned
|
||||
* mutexes.
|
||||
*
|
||||
* @param[in,out] mp pointer to the @p mutex_t object
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
static inline void osalMutexLock(mutex_t *mp) {
|
||||
|
||||
(void) chSemWait((semaphore_t *)mp);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Unlocks the specified mutex.
|
||||
* @note The HAL guarantees to release mutex in reverse lock order. The
|
||||
* mutex being unlocked is guaranteed to be the last locked mutex
|
||||
* by the invoking thread.
|
||||
* The implementation can rely on this behavior and eventually
|
||||
* ignore the @p mp parameter which is supplied in order to support
|
||||
* those OSes not supporting a stack of the owned mutexes.
|
||||
*
|
||||
* @param[in,out] mp pointer to the @p mutex_t object
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
static inline void osalMutexUnlock(mutex_t *mp) {
|
||||
|
||||
chSemSignal((semaphore_t *)mp);
|
||||
}
|
||||
|
||||
#endif /* _OSAL_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,5 +0,0 @@
|
|||
# OSAL files.
|
||||
OSALSRC += ${CHIBIOS}/os/hal/osal/nil/osal.c
|
||||
|
||||
# Required include directories
|
||||
OSALINC += ${CHIBIOS}/os/hal/osal/nil
|
|
@ -1,50 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup NIL NIL Kernel
|
||||
* @details The kernel is the portable part of ChibiOS/NIL, this section
|
||||
* documents the various kernel subsystems.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup NIL_CONFIG Configuration
|
||||
* @ingroup NIL
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup NIL_TYPES Kernel Types
|
||||
* @ingroup NIL
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup NIL_KERNEL API
|
||||
* @ingroup NIL
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup NIL_CORE Port Layer
|
||||
* @ingroup NIL
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup NIL_TIMER Timer Interface
|
||||
* @ingroup NIL
|
||||
*/
|
||||
|
1003
os/nil/include/nil.h
1003
os/nil/include/nil.h
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +0,0 @@
|
|||
# List of all the ChibiOS/NIL kernel files.
|
||||
KERNSRC = ${CHIBIOS}/os/nil/src/nil.c
|
||||
|
||||
# Required include directories
|
||||
KERNINC = ${CHIBIOS}/os/nil/include
|
|
@ -1,8 +0,0 @@
|
|||
# List of the ChibiOS/NIL ARMv6M generic port files.
|
||||
PORTSRC = $(CHIBIOS)/os/nil/ports/ARMCMx/nilcore.c \
|
||||
$(CHIBIOS)/os/nil/ports/ARMCMx/nilcore_v6m.c
|
||||
|
||||
PORTASM = $(CHIBIOS)/os/nil/ports/ARMCMx/compilers/GCC/nilcoreasm_v6m.s
|
||||
|
||||
PORTINC = $(CHIBIOS)/os/nil/ports/ARMCMx \
|
||||
$(CHIBIOS)/os/nil/ports/ARMCMx/compilers/GCC
|
|
@ -1,8 +0,0 @@
|
|||
# List of the ChibiOS/NIL ARMv7M generic port files.
|
||||
PORTSRC = $(CHIBIOS)/os/nil/ports/ARMCMx/nilcore.c \
|
||||
$(CHIBIOS)/os/nil/ports/ARMCMx/nilcore_v7m.c
|
||||
|
||||
PORTASM = $(CHIBIOS)/os/nil/ports/ARMCMx/compilers/GCC/nilcoreasm_v7m.s
|
||||
|
||||
PORTINC = $(CHIBIOS)/os/nil/ports/ARMCMx \
|
||||
$(CHIBIOS)/os/nil/ports/ARMCMx/compilers/GCC
|
|
@ -1,124 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file ARMCMx/compilers/GCC/nilcoreasm_v6m.s
|
||||
* @brief ARMv6-M architecture port low level code.
|
||||
*
|
||||
* @addtogroup ARMCMx_GCC_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#if !defined(FALSE) || defined(__DOXYGEN__)
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#if !defined(TRUE) || defined(__DOXYGEN__)
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
#define _FROM_ASM_
|
||||
#include "nilconf.h"
|
||||
#include "nilcore.h"
|
||||
|
||||
#if !defined(__DOXYGEN__)
|
||||
|
||||
.set CONTEXT_OFFSET, 0
|
||||
.set SCB_ICSR, 0xE000ED04
|
||||
.set ICSR_PENDSVSET, 0x10000000
|
||||
.set ICSR_NMIPENDSET, 0x80000000
|
||||
|
||||
.cpu cortex-m0
|
||||
.fpu softvfp
|
||||
|
||||
.thumb
|
||||
.text
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* Performs a context switch between two threads.
|
||||
*--------------------------------------------------------------------------*/
|
||||
.thumb_func
|
||||
.globl _port_switch
|
||||
_port_switch:
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r4, r8
|
||||
mov r5, r9
|
||||
mov r6, r10
|
||||
mov r7, r11
|
||||
push {r4, r5, r6, r7}
|
||||
|
||||
mov r3, sp
|
||||
str r3, [r1, #CONTEXT_OFFSET]
|
||||
ldr r3, [r0, #CONTEXT_OFFSET]
|
||||
mov sp, r3
|
||||
|
||||
pop {r4, r5, r6, r7}
|
||||
mov r8, r4
|
||||
mov r9, r5
|
||||
mov r10, r6
|
||||
mov r11, r7
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* Start a thread by invoking its work function.
|
||||
*
|
||||
* Threads execution starts here, the code leaves the system critical zone
|
||||
* and then jumps into the thread function passed in register R4. The
|
||||
* register R5 contains the thread parameter. The function chThdExit() is
|
||||
* called on thread function return.
|
||||
*--------------------------------------------------------------------------*/
|
||||
.thumb_func
|
||||
.globl _port_thread_start
|
||||
_port_thread_start:
|
||||
cpsie i
|
||||
mov r0, r5
|
||||
blx r4
|
||||
mov r3, #0
|
||||
bl chSysHalt
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* Post-IRQ switch code.
|
||||
*
|
||||
* Exception handlers return here for context switching.
|
||||
*--------------------------------------------------------------------------*/
|
||||
.thumb_func
|
||||
.globl _port_switch_from_isr
|
||||
_port_switch_from_isr:
|
||||
bl chSchRescheduleS
|
||||
.globl _port_exit_from_isr
|
||||
_port_exit_from_isr:
|
||||
ldr r2, .L2
|
||||
ldr r3, .L3
|
||||
str r3, [r2, #0]
|
||||
#if CORTEX_ALTERNATE_SWITCH
|
||||
cpsie i
|
||||
#endif
|
||||
.L1: b .L1
|
||||
|
||||
.align 2
|
||||
.L2: .word SCB_ICSR
|
||||
#if CORTEX_ALTERNATE_SWITCH
|
||||
.L3: .word ICSR_PENDSVSET
|
||||
#else
|
||||
.L3: .word ICSR_NMIPENDSET
|
||||
#endif
|
||||
|
||||
#endif /* !defined(__DOXYGEN__) */
|
||||
|
||||
/** @} */
|
|
@ -1,130 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file ARMCMx/compilers/GCC/nilcoreasm_v7m.s
|
||||
* @brief ARMv7-M architecture port low level code.
|
||||
*
|
||||
* @addtogroup ARMCMx_GCC_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#if !defined(FALSE) || defined(__DOXYGEN__)
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#if !defined(TRUE) || defined(__DOXYGEN__)
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
#define _FROM_ASM_
|
||||
#include "nilconf.h"
|
||||
#include "nilcore.h"
|
||||
|
||||
#if !defined(__DOXYGEN__)
|
||||
|
||||
.set CONTEXT_OFFSET, 0
|
||||
.set SCB_ICSR, 0xE000ED04
|
||||
.set ICSR_PENDSVSET, 0x10000000
|
||||
|
||||
.syntax unified
|
||||
.cpu cortex-m4
|
||||
#if CORTEX_USE_FPU
|
||||
.fpu fpv4-sp-d16
|
||||
#else
|
||||
.fpu softvfp
|
||||
#endif
|
||||
|
||||
.thumb
|
||||
.text
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* Performs a context switch between two threads.
|
||||
*--------------------------------------------------------------------------*/
|
||||
.thumb_func
|
||||
.globl _port_switch
|
||||
_port_switch:
|
||||
push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
|
||||
#if CORTEX_USE_FPU
|
||||
vpush {s16-s31}
|
||||
#endif
|
||||
|
||||
str sp, [r1, #CONTEXT_OFFSET]
|
||||
#if (CORTEX_SIMPLIFIED_PRIORITY == FALSE) && \
|
||||
((CORTEX_MODEL == 3) || (CORTEX_MODEL == 4))
|
||||
/* Workaround for ARM errata 752419, only applied if
|
||||
condition exists for it to be triggered.*/
|
||||
ldr r3, [r0, #CONTEXT_OFFSET]
|
||||
mov sp, r3
|
||||
#else
|
||||
ldr sp, [r0, #CONTEXT_OFFSET]
|
||||
#endif
|
||||
|
||||
#if CORTEX_USE_FPU
|
||||
vpop {s16-s31}
|
||||
#endif
|
||||
pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* Start a thread by invoking its work function.
|
||||
*
|
||||
* Threads execution starts here, the code leaves the system critical zone
|
||||
* and then jumps into the thread function passed in register R4. The
|
||||
* register R5 contains the thread parameter. The function chThdExit() is
|
||||
* called on thread function return.
|
||||
*--------------------------------------------------------------------------*/
|
||||
.thumb_func
|
||||
.globl _port_thread_start
|
||||
_port_thread_start:
|
||||
#if !CORTEX_SIMPLIFIED_PRIORITY
|
||||
movs r3, #0
|
||||
msr BASEPRI, r3
|
||||
#else /* CORTEX_SIMPLIFIED_PRIORITY */
|
||||
cpsie i
|
||||
#endif /* CORTEX_SIMPLIFIED_PRIORITY */
|
||||
mov r0, r5
|
||||
blx r4
|
||||
mov r3, #0
|
||||
bl chSysHalt
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* Post-IRQ switch code.
|
||||
*
|
||||
* Exception handlers return here for context switching.
|
||||
*--------------------------------------------------------------------------*/
|
||||
.thumb_func
|
||||
.globl _port_switch_from_isr
|
||||
_port_switch_from_isr:
|
||||
bl chSchRescheduleS
|
||||
.globl _port_exit_from_isr
|
||||
_port_exit_from_isr:
|
||||
#if CORTEX_SIMPLIFIED_PRIORITY
|
||||
movw r3, #:lower16:SCB_ICSR
|
||||
movt r3, #:upper16:SCB_ICSR
|
||||
mov r2, ICSR_PENDSVSET
|
||||
str r2, [r3, #0]
|
||||
cpsie i
|
||||
#else /* !CORTEX_SIMPLIFIED_PRIORITY */
|
||||
svc #0
|
||||
#endif /* !CORTEX_SIMPLIFIED_PRIORITY */
|
||||
.L1: b .L1
|
||||
|
||||
#endif /* !defined(__DOXYGEN__) */
|
||||
|
||||
/** @} */
|
|
@ -1,96 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file ARMCMx/compilers/GCC/niltypes.h
|
||||
* @brief ARM Cortex-Mx port system types.
|
||||
*
|
||||
* @addtogroup ARMCMx_GCC_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _NILTYPES_H_
|
||||
#define _NILTYPES_H_
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/**
|
||||
* @name Common constants
|
||||
*/
|
||||
/**
|
||||
* @brief Generic 'false' boolean constant.
|
||||
*/
|
||||
#if !defined(FALSE) || defined(__DOXYGEN__)
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Generic 'true' boolean constant.
|
||||
*/
|
||||
#if !defined(TRUE) || defined(__DOXYGEN__)
|
||||
#define TRUE 1
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
typedef uint32_t syssts_t; /**< System status word. */
|
||||
typedef uint32_t rtcnt_t; /**< Realtime counter. */
|
||||
typedef uint8_t tstate_t; /**< Thread state. */
|
||||
typedef int32_t msg_t; /**< Inter-thread message. */
|
||||
typedef uint32_t eventmask_t; /**< Mask of event identifiers. */
|
||||
typedef int32_t cnt_t; /**< Generic signed counter. */
|
||||
typedef uint32_t ucnt_t; /**< Generic unsigned counter. */
|
||||
|
||||
/**
|
||||
* @brief Type of system time.
|
||||
*/
|
||||
#if (NIL_CFG_ST_RESOLUTION == 32) || defined(__DOXYGEN__)
|
||||
typedef uint32_t systime_t;
|
||||
#else
|
||||
typedef uint16_t systime_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief ROM constant modifier.
|
||||
* @note It is set to use the "const" keyword in this port.
|
||||
*/
|
||||
#define ROMCONST const
|
||||
|
||||
/**
|
||||
* @brief Makes functions not inlineable.
|
||||
* @note If the compiler does not support such attribute then the
|
||||
* realtime counter precision could be degraded.
|
||||
*/
|
||||
#define NOINLINE __attribute__((noinline))
|
||||
|
||||
/**
|
||||
* @brief Optimized thread function declaration macro.
|
||||
*/
|
||||
#define PORT_THD_FUNCTION(tname, arg) \
|
||||
__attribute__((noreturn)) void tname(void *arg)
|
||||
|
||||
/**
|
||||
* @brief Packed variable specifier.
|
||||
*/
|
||||
#define PACKED_VAR __attribute__((packed))
|
||||
|
||||
#endif /* _NILTYPES_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,54 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file ARMCMx/nilcore.c
|
||||
* @brief ARM Cortex-Mx port code.
|
||||
*
|
||||
* @addtogroup ARMCMx_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "nil.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/** @} */
|
|
@ -1,204 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file ARMCMx/nilcore.h
|
||||
* @brief ARM Cortex-Mx port macros and structures.
|
||||
*
|
||||
* @addtogroup ARMCMx_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _NILCORE_H_
|
||||
#define _NILCORE_H_
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @name Architecture and Compiler
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief Macro defining a generic ARM architecture.
|
||||
*/
|
||||
#define PORT_ARCHITECTURE_ARM
|
||||
|
||||
/* The following code is not processed when the file is included from an
|
||||
asm module because those intrinsic macros are not necessarily defined
|
||||
by the assembler too.*/
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
/**
|
||||
* @brief Compiler name and version.
|
||||
*/
|
||||
#if defined(__GNUC__) || defined(__DOXYGEN__)
|
||||
#define PORT_COMPILER_NAME "GCC " __VERSION__
|
||||
|
||||
#elif defined(__ICCARM__)
|
||||
#define PORT_COMPILER_NAME "IAR"
|
||||
|
||||
#elif defined(__CC_ARM)
|
||||
#define PORT_COMPILER_NAME "RVCT"
|
||||
|
||||
#else
|
||||
#error "unsupported compiler"
|
||||
#endif
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
/** @} */
|
||||
|
||||
/* Inclusion of the Cortex-Mx implementation specific parameters.*/
|
||||
#include "cmparams.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables an alternative timer implementation.
|
||||
* @details Usually the port uses a timer interface defined in the file
|
||||
* @p nilcore_timer.h, if this option is enabled then the file
|
||||
* @p nilcore_timer_alt.h is included instead.
|
||||
*/
|
||||
#if !defined(PORT_USE_ALT_TIMER)
|
||||
#define PORT_USE_ALT_TIMER FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* The following code is not processed when the file is included from an
|
||||
asm module.*/
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
/**
|
||||
* @brief Type of a generic ARM register.
|
||||
*/
|
||||
typedef void *regarm_t;
|
||||
|
||||
/**
|
||||
* @brief Type of stack and memory alignment enforcement.
|
||||
* @note In this architecture the stack alignment is enforced to 64 bits,
|
||||
* 32 bits alignment is supported by hardware but deprecated by ARM,
|
||||
* the implementation choice is to not offer the option.
|
||||
*/
|
||||
typedef uint64_t stkalign_t;
|
||||
|
||||
/* The following declarations are there just for Doxygen documentation, the
|
||||
real declarations are inside the sub-headers being specific for the
|
||||
sub-architectures.*/
|
||||
#if defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief Interrupt saved context.
|
||||
* @details This structure represents the stack frame saved during a
|
||||
* preemption-capable interrupt handler.
|
||||
* @note It is implemented to match the Cortex-Mx exception context.
|
||||
*/
|
||||
struct port_extctx {};
|
||||
|
||||
/**
|
||||
* @brief System saved context.
|
||||
* @details This structure represents the inner stack frame during a context
|
||||
* switch.
|
||||
*/
|
||||
struct port_intctx {};
|
||||
#endif /* defined(__DOXYGEN__) */
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Total priority levels.
|
||||
*/
|
||||
#define CORTEX_PRIORITY_LEVELS (1U << CORTEX_PRIORITY_BITS)
|
||||
|
||||
/**
|
||||
* @brief Minimum priority level.
|
||||
* @details This minimum priority level is calculated from the number of
|
||||
* priority bits supported by the specific Cortex-Mx implementation.
|
||||
*/
|
||||
#define CORTEX_MINIMUM_PRIORITY (CORTEX_PRIORITY_LEVELS - 1)
|
||||
|
||||
/**
|
||||
* @brief Maximum priority level.
|
||||
* @details The maximum allowed priority level is always zero.
|
||||
*/
|
||||
#define CORTEX_MAXIMUM_PRIORITY 0U
|
||||
|
||||
/**
|
||||
* @brief Priority level to priority mask conversion macro.
|
||||
*/
|
||||
#define CORTEX_PRIO_MASK(n) \
|
||||
((n) << (8U - (unsigned)CORTEX_PRIORITY_BITS))
|
||||
|
||||
/**
|
||||
* @brief Priority level verification macro.
|
||||
*/
|
||||
#define PORT_IRQ_IS_VALID_PRIORITY(n) \
|
||||
(((n) >= 0U) && ((n) < CORTEX_PRIORITY_LEVELS))
|
||||
|
||||
/**
|
||||
* @brief Priority level verification macro.
|
||||
*/
|
||||
#define PORT_IRQ_IS_VALID_KERNEL_PRIORITY(n) \
|
||||
(((n) >= CORTEX_MAX_KERNEL_PRIORITY) && ((n) < CORTEX_PRIORITY_LEVELS))
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* Includes the sub-architecture-specific part.*/
|
||||
#if (CORTEX_MODEL == 0) || (CORTEX_MODEL == 1)
|
||||
#include "nilcore_v6m.h"
|
||||
#elif (CORTEX_MODEL == 3) || (CORTEX_MODEL == 4) || (CORTEX_MODEL == 7)
|
||||
#include "nilcore_v7m.h"
|
||||
#else
|
||||
#error "unknown Cortex-M variant"
|
||||
#endif
|
||||
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
#if NIL_CFG_ST_TIMEDELTA > 0
|
||||
#if PORT_USE_ALT_TIMER == FALSE
|
||||
#include "nilcore_timer.h"
|
||||
#else /* PORT_USE_ALT_TIMER != FALSE */
|
||||
#include "nilcore_timer_alt.h"
|
||||
#endif /* PORT_USE_ALT_TIMER != FALSE */
|
||||
#endif /* NIL_CFG_ST_TIMEDELTA > 0 */
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
#endif /* _NILCORE_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,124 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file ARMCMx/nilcore_timer.h
|
||||
* @brief System timer header file.
|
||||
*
|
||||
* @addtogroup ARMCMx_TIMER
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _NILCORE_TIMER_H_
|
||||
#define _NILCORE_TIMER_H_
|
||||
|
||||
/* This is the only header in the HAL designed to be include-able alone.*/
|
||||
#include "st.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Starts the alarm.
|
||||
* @note Makes sure that no spurious alarms are triggered after
|
||||
* this call.
|
||||
*
|
||||
* @param[in] time the time to be set for the first alarm
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void port_timer_start_alarm(systime_t time) {
|
||||
|
||||
stStartAlarm(time);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Stops the alarm interrupt.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void port_timer_stop_alarm(void) {
|
||||
|
||||
stStopAlarm();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sets the alarm time.
|
||||
*
|
||||
* @param[in] time the time to be set for the next alarm
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void port_timer_set_alarm(systime_t time) {
|
||||
|
||||
stSetAlarm(time);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the system time.
|
||||
*
|
||||
* @return The system time.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline systime_t port_timer_get_time(void) {
|
||||
|
||||
return stGetCounter();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the current alarm time.
|
||||
*
|
||||
* @return The currently set alarm time.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline systime_t port_timer_get_alarm(void) {
|
||||
|
||||
return stGetAlarm();
|
||||
}
|
||||
|
||||
#endif /* _NILCORE_TIMER_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,147 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file nilcore_v6m.c
|
||||
* @brief ARMv6-M architecture port code.
|
||||
*
|
||||
* @addtogroup ARMCMx_V6M_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "nil.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module interrupt handlers. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if (CORTEX_ALTERNATE_SWITCH == FALSE) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief NMI vector.
|
||||
* @details The NMI vector is used for exception mode re-entering after a
|
||||
* context switch.
|
||||
*/
|
||||
/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/
|
||||
void NMI_Handler(void) {
|
||||
/*lint -restore*/
|
||||
|
||||
/* The port_extctx structure is pointed by the PSP register.*/
|
||||
struct port_extctx *ctxp = (struct port_extctx *)__get_PSP();
|
||||
|
||||
/* Discarding the current exception context and positioning the stack to
|
||||
point to the real one.*/
|
||||
ctxp++;
|
||||
|
||||
/* Writing back the modified PSP value.*/
|
||||
__set_PSP((uint32_t)ctxp);
|
||||
|
||||
/* Restoring the normal interrupts status.*/
|
||||
port_unlock_from_isr();
|
||||
}
|
||||
#endif /* !CORTEX_ALTERNATE_SWITCH */
|
||||
|
||||
#if (CORTEX_ALTERNATE_SWITCH == TRUE) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief PendSV vector.
|
||||
* @details The PendSV vector is used for exception mode re-entering after a
|
||||
* context switch.
|
||||
*/
|
||||
/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/
|
||||
void PendSV_Handler(void) {
|
||||
/*lint -restore*/
|
||||
|
||||
/* The port_extctx structure is pointed by the PSP register.*/
|
||||
struct port_extctx *ctxp = (struct port_extctx *)__get_PSP();
|
||||
|
||||
/* Discarding the current exception context and positioning the stack to
|
||||
point to the real one.*/
|
||||
ctxp++;
|
||||
|
||||
/* Writing back the modified PSP value.*/
|
||||
__set_PSP((uint32_t)ctxp);
|
||||
}
|
||||
#endif /* CORTEX_ALTERNATE_SWITCH */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief IRQ epilogue code.
|
||||
*
|
||||
* @param[in] lr value of the @p LR register on ISR entry
|
||||
*/
|
||||
void _port_irq_epilogue(regarm_t lr) {
|
||||
|
||||
if (lr != (regarm_t)0xFFFFFFF1U) {
|
||||
struct port_extctx *ctxp;
|
||||
|
||||
port_lock_from_isr();
|
||||
|
||||
/* The extctx structure is pointed by the PSP register.*/
|
||||
ctxp = (struct port_extctx *)__get_PSP();
|
||||
|
||||
/* Adding an artificial exception return context, there is no need to
|
||||
populate it fully.*/
|
||||
ctxp--;
|
||||
|
||||
/* Writing back the modified PSP value.*/
|
||||
__set_PSP((uint32_t)ctxp);
|
||||
|
||||
/* Setting up a fake XPSR register value.*/
|
||||
ctxp->xpsr = (regarm_t)0x01000000;
|
||||
|
||||
/* The exit sequence is different depending on if a preemption is
|
||||
required or not.*/
|
||||
if (chSchIsRescRequiredI()) {
|
||||
/* Preemption is required we need to enforce a context switch.*/
|
||||
ctxp->pc = (regarm_t)_port_switch_from_isr;
|
||||
}
|
||||
else {
|
||||
/* Preemption not required, we just need to exit the exception
|
||||
atomically.*/
|
||||
ctxp->pc = (regarm_t)_port_exit_from_isr;
|
||||
}
|
||||
|
||||
/* Note, returning without unlocking is intentional, this is done in
|
||||
order to keep the rest of the context switch atomic.*/
|
||||
}
|
||||
}
|
||||
|
||||
/** @} */
|
|
@ -1,406 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file chcore_v6m.h
|
||||
* @brief ARMv6-M architecture port macros and structures.
|
||||
*
|
||||
* @addtogroup ARMCMx_V6M_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _CHCORE_V6M_H_
|
||||
#define _CHCORE_V6M_H_
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief This port does not support a realtime counter.
|
||||
*/
|
||||
#define PORT_SUPPORTS_RT FALSE
|
||||
|
||||
/**
|
||||
* @brief PendSV priority level.
|
||||
* @note This priority is enforced to be equal to @p 0,
|
||||
* this handler always has the highest priority that cannot preempt
|
||||
* the kernel.
|
||||
*/
|
||||
#define CORTEX_PRIORITY_PENDSV 0
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Stack size for the system idle thread.
|
||||
* @details This size depends on the idle thread implementation, usually
|
||||
* the idle thread should take no more space than those reserved
|
||||
* by @p PORT_INT_REQUIRED_STACK.
|
||||
* @note In this port it is set to 16 because the idle thread does have
|
||||
* a stack frame when compiling without optimizations. You may
|
||||
* reduce this value to zero when compiling with optimizations.
|
||||
*/
|
||||
#if !defined(PORT_IDLE_THREAD_STACK_SIZE)
|
||||
#define PORT_IDLE_THREAD_STACK_SIZE 16
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Per-thread stack overhead for interrupts servicing.
|
||||
* @details This constant is used in the calculation of the correct working
|
||||
* area size.
|
||||
* @note In this port this value is conservatively set to 32 because the
|
||||
* function @p chSchDoReschedule() can have a stack frame, especially
|
||||
* with compiler optimizations disabled. The value can be reduced
|
||||
* when compiler optimizations are enabled.
|
||||
*/
|
||||
#if !defined(PORT_INT_REQUIRED_STACK)
|
||||
#define PORT_INT_REQUIRED_STACK 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the use of the WFI instruction in the idle thread loop.
|
||||
*/
|
||||
#if !defined(CORTEX_ENABLE_WFI_IDLE)
|
||||
#define CORTEX_ENABLE_WFI_IDLE FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Alternate preemption method.
|
||||
* @details Activating this option will make the Kernel use the PendSV
|
||||
* handler for preemption instead of the NMI handler.
|
||||
*/
|
||||
#ifndef CORTEX_ALTERNATE_SWITCH
|
||||
#define CORTEX_ALTERNATE_SWITCH FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @name Architecture and Compiler
|
||||
* @{
|
||||
*/
|
||||
#if ((CORTEX_MODEL == 0) && !defined(__CORE_CM0PLUS_H_DEPENDANT)) || \
|
||||
defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief Macro defining the specific ARM architecture.
|
||||
*/
|
||||
#define PORT_ARCHITECTURE_ARM_v6M
|
||||
|
||||
/**
|
||||
* @brief Name of the implemented architecture.
|
||||
*/
|
||||
#define PORT_ARCHITECTURE_NAME "ARMv6-M"
|
||||
|
||||
/**
|
||||
* @brief Name of the architecture variant.
|
||||
*/
|
||||
#define PORT_CORE_VARIANT_NAME "Cortex-M0"
|
||||
|
||||
#elif (CORTEX_MODEL == 0) && defined(__CORE_CM0PLUS_H_DEPENDANT)
|
||||
#define PORT_ARCHITECTURE_ARM_v6M
|
||||
#define PORT_ARCHITECTURE_NAME "ARMv6-M"
|
||||
#define PORT_CORE_VARIANT_NAME "Cortex-M0+"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Port-specific information string.
|
||||
*/
|
||||
#if (CORTEX_ALTERNATE_SWITCH == FALSE) || defined(__DOXYGEN__)
|
||||
#define PORT_INFO "Preemption through NMI"
|
||||
#else
|
||||
#define PORT_INFO "Preemption through PendSV"
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @brief Maximum usable priority for normal ISRs.
|
||||
*/
|
||||
#if (CORTEX_ALTERNATE_SWITCH == TRUE) || defined(__DOXYGEN__)
|
||||
#define CORTEX_MAX_KERNEL_PRIORITY 1
|
||||
#else
|
||||
#define CORTEX_MAX_KERNEL_PRIORITY 0
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
/* The documentation of the following declarations is in chconf.h in order
|
||||
to not have duplicated structure names into the documentation.*/
|
||||
#if !defined(__DOXYGEN__)
|
||||
struct port_extctx {
|
||||
regarm_t r0;
|
||||
regarm_t r1;
|
||||
regarm_t r2;
|
||||
regarm_t r3;
|
||||
regarm_t r12;
|
||||
regarm_t lr_thd;
|
||||
regarm_t pc;
|
||||
regarm_t xpsr;
|
||||
};
|
||||
|
||||
struct port_intctx {
|
||||
regarm_t r8;
|
||||
regarm_t r9;
|
||||
regarm_t r10;
|
||||
regarm_t r11;
|
||||
regarm_t r4;
|
||||
regarm_t r5;
|
||||
regarm_t r6;
|
||||
regarm_t r7;
|
||||
regarm_t lr;
|
||||
};
|
||||
#endif /* !defined(__DOXYGEN__) */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Platform dependent thread stack setup.
|
||||
* @details This code usually setup the context switching frame represented
|
||||
* by an @p port_intctx structure.
|
||||
*/
|
||||
#define PORT_SETUP_CONTEXT(tp, wend, pf, arg) { \
|
||||
(tp)->ctxp = (struct port_intctx *)((uint8_t *)(wend) - \
|
||||
sizeof(struct port_intctx)); \
|
||||
(tp)->ctxp->r4 = (regarm_t)(pf); \
|
||||
(tp)->ctxp->r5 = (regarm_t)(arg); \
|
||||
(tp)->ctxp->lr = (regarm_t)_port_thread_start; \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Computes the thread working area global size.
|
||||
* @note There is no need to perform alignments in this macro.
|
||||
*/
|
||||
#define PORT_WA_SIZE(n) (sizeof(struct port_intctx) + \
|
||||
sizeof(struct port_extctx) + \
|
||||
((size_t)(n)) + ((size_t)(PORT_INT_REQUIRED_STACK)))
|
||||
|
||||
/**
|
||||
* @brief IRQ prologue code.
|
||||
* @details This macro must be inserted at the start of all IRQ handlers
|
||||
* enabled to invoke system APIs.
|
||||
*/
|
||||
#if defined(__GNUC__) || defined(__DOXYGEN__)
|
||||
#define PORT_IRQ_PROLOGUE() \
|
||||
regarm_t _saved_lr = (regarm_t)__builtin_return_address(0)
|
||||
#elif defined(__ICCARM__)
|
||||
#define PORT_IRQ_PROLOGUE() \
|
||||
regarm_t _saved_lr = (regarm_t)__get_LR()
|
||||
#elif defined(__CC_ARM)
|
||||
#define PORT_IRQ_PROLOGUE() \
|
||||
regarm_t _saved_lr = (regarm_t)__return_address()
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief IRQ epilogue code.
|
||||
* @details This macro must be inserted at the end of all IRQ handlers
|
||||
* enabled to invoke system APIs.
|
||||
*/
|
||||
#define PORT_IRQ_EPILOGUE() _port_irq_epilogue(_saved_lr)
|
||||
|
||||
/**
|
||||
* @brief IRQ handler function declaration.
|
||||
* @note @p id can be a function name or a vector number depending on the
|
||||
* port implementation.
|
||||
*/
|
||||
#define PORT_IRQ_HANDLER(id) void id(void)
|
||||
|
||||
/**
|
||||
* @brief Fast IRQ handler function declaration.
|
||||
* @note @p id can be a function name or a vector number depending on the
|
||||
* port implementation.
|
||||
*/
|
||||
#define PORT_FAST_IRQ_HANDLER(id) void id(void)
|
||||
|
||||
/**
|
||||
* @brief Performs a context switch between two threads.
|
||||
* @details This is the most critical code in any port, this function
|
||||
* is responsible for the context switch between 2 threads.
|
||||
* @note The implementation of this code affects <b>directly</b> the context
|
||||
* switch performance so optimize here as much as you can.
|
||||
*
|
||||
* @param[in] ntp the thread to be switched in
|
||||
* @param[in] otp the thread to be switched out
|
||||
*/
|
||||
#if (NIL_CFG_ENABLE_STACK_CHECK == FALSE) || defined(__DOXYGEN__)
|
||||
#define port_switch(ntp, otp) _port_switch(ntp, otp)
|
||||
#else
|
||||
#define port_switch(ntp, otp) { \
|
||||
struct port_intctx *r13 = (struct port_intctx *)__get_PSP(); \
|
||||
if ((stkalign_t *)(r13 - 1) < (otp)->stklim) { \
|
||||
chSysHalt("stack overflow"); \
|
||||
} \
|
||||
_port_switch(ntp, otp); \
|
||||
}
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void _port_irq_epilogue(regarm_t lr);
|
||||
void _port_switch_from_isr(void);
|
||||
void _port_exit_from_isr(void);
|
||||
void _port_switch(thread_t *ntp, thread_t *otp);
|
||||
void _port_thread_start(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Port-related initialization code.
|
||||
*/
|
||||
static inline void port_init(void) {
|
||||
|
||||
NVIC_SetPriority(PendSV_IRQn, CORTEX_PRIORITY_PENDSV);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns a word encoding the current interrupts status.
|
||||
*
|
||||
* @return The interrupts status.
|
||||
*/
|
||||
static inline syssts_t port_get_irq_status(void) {
|
||||
|
||||
return (syssts_t)__get_PRIMASK();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks the interrupt status.
|
||||
*
|
||||
* @param[in] sts the interrupt status word
|
||||
*
|
||||
* @return The interrupt status.
|
||||
* @retvel false the word specified a disabled interrupts status.
|
||||
* @retvel true the word specified an enabled interrupts status.
|
||||
*/
|
||||
static inline bool port_irq_enabled(syssts_t sts) {
|
||||
|
||||
return (sts & (syssts_t)1) == (syssts_t)0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Determines the current execution context.
|
||||
*
|
||||
* @return The execution context.
|
||||
* @retval false not running in ISR mode.
|
||||
* @retval true running in ISR mode.
|
||||
*/
|
||||
static inline bool port_is_isr_context(void) {
|
||||
|
||||
return (bool)((__get_IPSR() & 0x1FFU) != 0U);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-lock action.
|
||||
* @details In this port this function disables interrupts globally.
|
||||
*/
|
||||
static inline void port_lock(void) {
|
||||
|
||||
__disable_irq();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-unlock action.
|
||||
* @details In this port this function enables interrupts globally.
|
||||
*/
|
||||
static inline void port_unlock(void) {
|
||||
|
||||
__enable_irq();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-lock action from an interrupt handler.
|
||||
* @details In this port this function disables interrupts globally.
|
||||
* @note Same as @p port_lock() in this port.
|
||||
*/
|
||||
static inline void port_lock_from_isr(void) {
|
||||
|
||||
port_lock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-unlock action from an interrupt handler.
|
||||
* @details In this port this function enables interrupts globally.
|
||||
* @note Same as @p port_lock() in this port.
|
||||
*/
|
||||
static inline void port_unlock_from_isr(void) {
|
||||
|
||||
port_unlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables all the interrupt sources.
|
||||
*/
|
||||
static inline void port_disable(void) {
|
||||
|
||||
__disable_irq();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables the interrupt sources below kernel-level priority.
|
||||
*/
|
||||
static inline void port_suspend(void) {
|
||||
|
||||
__disable_irq();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enables all the interrupt sources.
|
||||
*/
|
||||
static inline void port_enable(void) {
|
||||
|
||||
__enable_irq();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enters an architecture-dependent IRQ-waiting mode.
|
||||
* @details The function is meant to return when an interrupt becomes pending.
|
||||
* The simplest implementation is an empty function or macro but this
|
||||
* would not take advantage of architecture-specific power saving
|
||||
* modes.
|
||||
* @note Implemented as an inlined @p WFI instruction.
|
||||
*/
|
||||
static inline void port_wait_for_interrupt(void) {
|
||||
|
||||
#if CORTEX_ENABLE_WFI_IDLE == TRUE
|
||||
__WFI();
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* _FROM_ASM_ */
|
||||
|
||||
#endif /* _CHCORE_V6M_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,165 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file nilcore_v7m.c
|
||||
* @brief ARMv7-M architecture port code.
|
||||
*
|
||||
* @addtogroup ARMCMx_V7M_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "nil.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module interrupt handlers. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if (CORTEX_SIMPLIFIED_PRIORITY == FALSE) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief SVC vector.
|
||||
* @details The SVC vector is used for exception mode re-entering after a
|
||||
* context switch.
|
||||
* @note The PendSV vector is only used in advanced kernel mode.
|
||||
*/
|
||||
/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/
|
||||
void SVC_Handler(void) {
|
||||
/*lint -restore*/
|
||||
struct port_extctx *ctxp;
|
||||
|
||||
#if CORTEX_USE_FPU == TRUE
|
||||
/* Enforcing unstacking of the FP part of the context.*/
|
||||
FPU->FPCCR &= ~FPU_FPCCR_LSPACT_Msk;
|
||||
#endif
|
||||
|
||||
/* The port_extctx structure is pointed by the PSP register.*/
|
||||
ctxp = (struct port_extctx *)__get_PSP();
|
||||
|
||||
/* Discarding the current exception context and positioning the stack to
|
||||
point to the real one.*/
|
||||
ctxp++;
|
||||
|
||||
/* Restoring real position of the original stack frame.*/
|
||||
__set_PSP((uint32_t)ctxp);
|
||||
|
||||
/* Restoring the normal interrupts status.*/
|
||||
port_unlock_from_isr();
|
||||
}
|
||||
#endif /* CORTEX_SIMPLIFIED_PRIORITY == FALSE */
|
||||
|
||||
#if (CORTEX_SIMPLIFIED_PRIORITY == TRUE) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief PendSV vector.
|
||||
* @details The PendSV vector is used for exception mode re-entering after a
|
||||
* context switch.
|
||||
* @note The PendSV vector is only used in compact kernel mode.
|
||||
*/
|
||||
/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/
|
||||
void PendSV_Handler(void) {
|
||||
/*lint -restore*/
|
||||
struct port_extctx *ctxp;
|
||||
|
||||
#if CORTEX_USE_FPU == TRUE
|
||||
/* Enforcing unstacking of the FP part of the context.*/
|
||||
FPU->FPCCR &= ~FPU_FPCCR_LSPACT_Msk;
|
||||
#endif
|
||||
|
||||
/* The port_extctx structure is pointed by the PSP register.*/
|
||||
ctxp = (struct port_extctx *)__get_PSP();
|
||||
|
||||
/* Discarding the current exception context and positioning the stack to
|
||||
point to the real one.*/
|
||||
ctxp++;
|
||||
|
||||
/* Writing back the modified PSP value.*/
|
||||
__set_PSP((uint32_t)ctxp);
|
||||
}
|
||||
#endif /* CORTEX_SIMPLIFIED_PRIORITY == TRUE */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Exception exit redirection to _port_switch_from_isr().
|
||||
*/
|
||||
void _port_irq_epilogue(void) {
|
||||
|
||||
port_lock_from_isr();
|
||||
if ((SCB->ICSR & SCB_ICSR_RETTOBASE_Msk) != 0U) {
|
||||
struct port_extctx *ctxp;
|
||||
|
||||
#if CORTEX_USE_FPU == TRUE
|
||||
/* Enforcing a lazy FPU state save by accessing the FPCSR register.*/
|
||||
(void) __get_FPSCR();
|
||||
#endif
|
||||
|
||||
/* The port_extctx structure is pointed by the PSP register.*/
|
||||
ctxp = (struct port_extctx *)__get_PSP();
|
||||
|
||||
/* Adding an artificial exception return context, there is no need to
|
||||
populate it fully.*/
|
||||
ctxp--;
|
||||
|
||||
/* Setting up a fake XPSR register value.*/
|
||||
ctxp->xpsr = (regarm_t)0x01000000;
|
||||
|
||||
/* Writing back the modified PSP value.*/
|
||||
__set_PSP((uint32_t)ctxp);
|
||||
|
||||
/* The exit sequence is different depending on if a preemption is
|
||||
required or not.*/
|
||||
if (chSchIsRescRequiredI()) {
|
||||
/* Preemption is required we need to enforce a context switch.*/
|
||||
ctxp->pc = (regarm_t)_port_switch_from_isr;
|
||||
}
|
||||
else {
|
||||
/* Preemption not required, we just need to exit the exception
|
||||
atomically.*/
|
||||
ctxp->pc = (regarm_t)_port_exit_from_isr;
|
||||
}
|
||||
|
||||
/* Note, returning without unlocking is intentional, this is done in
|
||||
order to keep the rest of the context switch atomic.*/
|
||||
return;
|
||||
}
|
||||
port_unlock_from_isr();
|
||||
}
|
||||
|
||||
/** @} */
|
|
@ -1,576 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file chcore_v7m.h
|
||||
* @brief ARMv7-M architecture port macros and structures.
|
||||
*
|
||||
* @addtogroup ARMCMx_V7M_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _NILCORE_V7M_H_
|
||||
#define _NILCORE_V7M_H_
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief This port supports a realtime counter.
|
||||
*/
|
||||
#define PORT_SUPPORTS_RT TRUE
|
||||
|
||||
/**
|
||||
* @brief Disabled value for BASEPRI register.
|
||||
*/
|
||||
#define CORTEX_BASEPRI_DISABLED 0U
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Stack size for the system idle thread.
|
||||
* @details This size depends on the idle thread implementation, usually
|
||||
* the idle thread should take no more space than those reserved
|
||||
* by @p PORT_INT_REQUIRED_STACK.
|
||||
* @note In this port it is set to 16 because the idle thread does have
|
||||
* a stack frame when compiling without optimizations. You may
|
||||
* reduce this value to zero when compiling with optimizations.
|
||||
*/
|
||||
#if !defined(PORT_IDLE_THREAD_STACK_SIZE) || defined(__DOXYGEN__)
|
||||
#define PORT_IDLE_THREAD_STACK_SIZE 16
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Per-thread stack overhead for interrupts servicing.
|
||||
* @details This constant is used in the calculation of the correct working
|
||||
* area size.
|
||||
* @note In this port this value is conservatively set to 32 because the
|
||||
* function @p chSchDoReschedule() can have a stack frame, especially
|
||||
* with compiler optimizations disabled. The value can be reduced
|
||||
* when compiler optimizations are enabled.
|
||||
*/
|
||||
#if !defined(PORT_INT_REQUIRED_STACK) || defined(__DOXYGEN__)
|
||||
#define PORT_INT_REQUIRED_STACK 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the use of the WFI instruction in the idle thread loop.
|
||||
*/
|
||||
#if !defined(CORTEX_ENABLE_WFI_IDLE)
|
||||
#define CORTEX_ENABLE_WFI_IDLE FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief FPU support in context switch.
|
||||
* @details Activating this option activates the FPU support in the kernel.
|
||||
*/
|
||||
#if !defined(CORTEX_USE_FPU)
|
||||
#define CORTEX_USE_FPU CORTEX_HAS_FPU
|
||||
#elif (CORTEX_USE_FPU == TRUE) && (CORTEX_HAS_FPU == FALSE)
|
||||
/* This setting requires an FPU presence check in case it is externally
|
||||
redefined.*/
|
||||
#error "the selected core does not have an FPU"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Simplified priority handling flag.
|
||||
* @details Activating this option makes the Kernel work in compact mode.
|
||||
* In compact mode interrupts are disabled globally instead of
|
||||
* raising the priority mask to some intermediate level.
|
||||
*/
|
||||
#if !defined(CORTEX_SIMPLIFIED_PRIORITY)
|
||||
#define CORTEX_SIMPLIFIED_PRIORITY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief SVCALL handler priority.
|
||||
* @note The default SVCALL handler priority is defaulted to
|
||||
* @p CORTEX_MAXIMUM_PRIORITY+1, this reserves the
|
||||
* @p CORTEX_MAXIMUM_PRIORITY priority level as fast interrupts
|
||||
* priority level.
|
||||
*/
|
||||
#if !defined(CORTEX_PRIORITY_SVCALL)
|
||||
#define CORTEX_PRIORITY_SVCALL (CORTEX_MAXIMUM_PRIORITY + 1U)
|
||||
#elif !PORT_IRQ_IS_VALID_PRIORITY(CORTEX_PRIORITY_SVCALL)
|
||||
/* If it is externally redefined then better perform a validity check on it.*/
|
||||
#error "invalid priority level specified for CORTEX_PRIORITY_SVCALL"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief NVIC VTOR initialization expression.
|
||||
*/
|
||||
#if !defined(CORTEX_VTOR_INIT) || defined(__DOXYGEN__)
|
||||
#define CORTEX_VTOR_INIT 0x00000000U
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief NVIC PRIGROUP initialization expression.
|
||||
* @details The default assigns all available priority bits as preemption
|
||||
* priority with no sub-priority.
|
||||
*/
|
||||
#if !defined(CORTEX_PRIGROUP_INIT) || defined(__DOXYGEN__)
|
||||
#define CORTEX_PRIGROUP_INIT (7 - CORTEX_PRIORITY_BITS)
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @name Architecture and Compiler
|
||||
* @{
|
||||
*/
|
||||
#if (CORTEX_MODEL == 3) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief Macro defining the specific ARM architecture.
|
||||
*/
|
||||
#define PORT_ARCHITECTURE_ARM_v7M
|
||||
|
||||
/**
|
||||
* @brief Name of the implemented architecture.
|
||||
*/
|
||||
#define PORT_ARCHITECTURE_NAME "ARMv7-M"
|
||||
|
||||
/**
|
||||
* @brief Name of the architecture variant.
|
||||
*/
|
||||
#define PORT_CORE_VARIANT_NAME "Cortex-M3"
|
||||
|
||||
#elif (CORTEX_MODEL == 4)
|
||||
#define PORT_ARCHITECTURE_ARM_v7ME
|
||||
#define PORT_ARCHITECTURE_NAME "ARMv7E-M"
|
||||
#if CORTEX_USE_FPU
|
||||
#define PORT_CORE_VARIANT_NAME "Cortex-M4F"
|
||||
#else
|
||||
#define PORT_CORE_VARIANT_NAME "Cortex-M4"
|
||||
#endif
|
||||
|
||||
#elif (CORTEX_MODEL == 7)
|
||||
#define PORT_ARCHITECTURE_ARM_v7ME
|
||||
#define PORT_ARCHITECTURE_NAME "ARMv7E-M"
|
||||
#if CORTEX_USE_FPU
|
||||
#define PORT_CORE_VARIANT_NAME "Cortex-M7F"
|
||||
#else
|
||||
#define PORT_CORE_VARIANT_NAME "Cortex-M7"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Port-specific information string.
|
||||
*/
|
||||
#if (CORTEX_SIMPLIFIED_PRIORITY == FALSE) || defined(__DOXYGEN__)
|
||||
#define PORT_INFO "Advanced kernel mode"
|
||||
#else
|
||||
#define PORT_INFO "Compact kernel mode"
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
#if (CORTEX_SIMPLIFIED_PRIORITY == FALSE) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief Maximum usable priority for normal ISRs.
|
||||
*/
|
||||
#define CORTEX_MAX_KERNEL_PRIORITY (CORTEX_PRIORITY_SVCALL + 1U)
|
||||
|
||||
/**
|
||||
* @brief BASEPRI level within kernel lock.
|
||||
*/
|
||||
#define CORTEX_BASEPRI_KERNEL \
|
||||
CORTEX_PRIO_MASK(CORTEX_MAX_KERNEL_PRIORITY)
|
||||
#else
|
||||
|
||||
#define CORTEX_MAX_KERNEL_PRIORITY 0U
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief PendSV priority level.
|
||||
* @note This priority is enforced to be equal to
|
||||
* @p CORTEX_MAX_KERNEL_PRIORITY, this handler always have the
|
||||
* highest priority that cannot preempt the kernel.
|
||||
*/
|
||||
#define CORTEX_PRIORITY_PENDSV CORTEX_MAX_KERNEL_PRIORITY
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* The following code is not processed when the file is included from an
|
||||
asm module.*/
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
/* The documentation of the following declarations is in chconf.h in order
|
||||
to not have duplicated structure names into the documentation.*/
|
||||
#if !defined(__DOXYGEN__)
|
||||
struct port_extctx {
|
||||
regarm_t r0;
|
||||
regarm_t r1;
|
||||
regarm_t r2;
|
||||
regarm_t r3;
|
||||
regarm_t r12;
|
||||
regarm_t lr_thd;
|
||||
regarm_t pc;
|
||||
regarm_t xpsr;
|
||||
#if CORTEX_USE_FPU
|
||||
regarm_t s0;
|
||||
regarm_t s1;
|
||||
regarm_t s2;
|
||||
regarm_t s3;
|
||||
regarm_t s4;
|
||||
regarm_t s5;
|
||||
regarm_t s6;
|
||||
regarm_t s7;
|
||||
regarm_t s8;
|
||||
regarm_t s9;
|
||||
regarm_t s10;
|
||||
regarm_t s11;
|
||||
regarm_t s12;
|
||||
regarm_t s13;
|
||||
regarm_t s14;
|
||||
regarm_t s15;
|
||||
regarm_t fpscr;
|
||||
regarm_t reserved;
|
||||
#endif /* CORTEX_USE_FPU */
|
||||
};
|
||||
|
||||
struct port_intctx {
|
||||
#if CORTEX_USE_FPU
|
||||
regarm_t s16;
|
||||
regarm_t s17;
|
||||
regarm_t s18;
|
||||
regarm_t s19;
|
||||
regarm_t s20;
|
||||
regarm_t s21;
|
||||
regarm_t s22;
|
||||
regarm_t s23;
|
||||
regarm_t s24;
|
||||
regarm_t s25;
|
||||
regarm_t s26;
|
||||
regarm_t s27;
|
||||
regarm_t s28;
|
||||
regarm_t s29;
|
||||
regarm_t s30;
|
||||
regarm_t s31;
|
||||
#endif /* CORTEX_USE_FPU */
|
||||
regarm_t r4;
|
||||
regarm_t r5;
|
||||
regarm_t r6;
|
||||
regarm_t r7;
|
||||
regarm_t r8;
|
||||
regarm_t r9;
|
||||
regarm_t r10;
|
||||
regarm_t r11;
|
||||
regarm_t lr;
|
||||
};
|
||||
#endif /* !defined(__DOXYGEN__) */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Platform dependent part of the @p chThdCreateI() API.
|
||||
* @details This code usually setup the context switching frame represented
|
||||
* by an @p port_intctx structure.
|
||||
*/
|
||||
#define PORT_SETUP_CONTEXT(tp, wend, pf, arg) { \
|
||||
(tp)->ctxp = (struct port_intctx *)((uint8_t *)(wend) - \
|
||||
sizeof(struct port_intctx)); \
|
||||
(tp)->ctxp->r4 = (regarm_t)(pf); \
|
||||
(tp)->ctxp->r5 = (regarm_t)(arg); \
|
||||
(tp)->ctxp->lr = (regarm_t)_port_thread_start; \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Computes the thread working area global size.
|
||||
* @note There is no need to perform alignments in this macro.
|
||||
*/
|
||||
#define PORT_WA_SIZE(n) (sizeof(struct port_intctx) + \
|
||||
sizeof(struct port_extctx) + \
|
||||
((size_t)(n)) + ((size_t)(PORT_INT_REQUIRED_STACK)))
|
||||
|
||||
/**
|
||||
* @brief IRQ prologue code.
|
||||
* @details This macro must be inserted at the start of all IRQ handlers
|
||||
* enabled to invoke system APIs.
|
||||
*/
|
||||
#define PORT_IRQ_PROLOGUE()
|
||||
|
||||
/**
|
||||
* @brief IRQ epilogue code.
|
||||
* @details This macro must be inserted at the end of all IRQ handlers
|
||||
* enabled to invoke system APIs.
|
||||
*/
|
||||
#define PORT_IRQ_EPILOGUE() _port_irq_epilogue()
|
||||
|
||||
/**
|
||||
* @brief IRQ handler function declaration.
|
||||
* @note @p id can be a function name or a vector number depending on the
|
||||
* port implementation.
|
||||
*/
|
||||
#define PORT_IRQ_HANDLER(id) void id(void)
|
||||
|
||||
/**
|
||||
* @brief Fast IRQ handler function declaration.
|
||||
* @note @p id can be a function name or a vector number depending on the
|
||||
* port implementation.
|
||||
*/
|
||||
#define PORT_FAST_IRQ_HANDLER(id) void id(void)
|
||||
|
||||
/**
|
||||
* @brief Performs a context switch between two threads.
|
||||
* @details This is the most critical code in any port, this function
|
||||
* is responsible for the context switch between 2 threads.
|
||||
* @note The implementation of this code affects <b>directly</b> the context
|
||||
* switch performance so optimize here as much as you can.
|
||||
*
|
||||
* @param[in] ntp the thread to be switched in
|
||||
* @param[in] otp the thread to be switched out
|
||||
*/
|
||||
#if (NIL_CFG_ENABLE_STACK_CHECK == FALSE) || defined(__DOXYGEN__)
|
||||
#define port_switch(ntp, otp) _port_switch(ntp, otp)
|
||||
#else
|
||||
#define port_switch(ntp, otp) { \
|
||||
struct port_intctx *r13 = (struct port_intctx *)__get_PSP(); \
|
||||
if ((stkalign_t *)(r13 - 1) < (otp)->stklim) { \
|
||||
chSysHalt("stack overflow"); \
|
||||
} \
|
||||
_port_switch(ntp, otp); \
|
||||
}
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void _port_irq_epilogue(void);
|
||||
void _port_switch(thread_t *ntp, thread_t *otp);
|
||||
void _port_thread_start(void);
|
||||
void _port_switch_from_isr(void);
|
||||
void _port_exit_from_isr(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Port-related initialization code.
|
||||
*/
|
||||
static inline void port_init(void) {
|
||||
|
||||
/* Initialization of the vector table and priority related settings.*/
|
||||
SCB->VTOR = CORTEX_VTOR_INIT;
|
||||
|
||||
/* Initializing priority grouping.*/
|
||||
NVIC_SetPriorityGrouping(CORTEX_PRIGROUP_INIT);
|
||||
|
||||
/* DWT cycle counter enable.*/
|
||||
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
|
||||
#if CORTEX_MODEL == 7
|
||||
DWT->LAR = 0xC5ACCE55U;
|
||||
#endif
|
||||
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
|
||||
|
||||
/* Initialization of the system vectors used by the port.*/
|
||||
#if CORTEX_SIMPLIFIED_PRIORITY == FALSE
|
||||
NVIC_SetPriority(SVCall_IRQn, CORTEX_PRIORITY_SVCALL);
|
||||
#endif
|
||||
NVIC_SetPriority(PendSV_IRQn, CORTEX_PRIORITY_PENDSV);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns a word encoding the current interrupts status.
|
||||
*
|
||||
* @return The interrupts status.
|
||||
*/
|
||||
static inline syssts_t port_get_irq_status(void) {
|
||||
syssts_t sts;
|
||||
|
||||
#if CORTEX_SIMPLIFIED_PRIORITY == FALSE
|
||||
sts = (syssts_t)__get_BASEPRI();
|
||||
#else /* CORTEX_SIMPLIFIED_PRIORITY */
|
||||
sts = (syssts_t)__get_PRIMASK();
|
||||
#endif /* CORTEX_SIMPLIFIED_PRIORITY */
|
||||
return sts;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks the interrupt status.
|
||||
*
|
||||
* @param[in] sts the interrupt status word
|
||||
*
|
||||
* @return The interrupt status.
|
||||
* @retvel false the word specified a disabled interrupts status.
|
||||
* @retvel true the word specified an enabled interrupts status.
|
||||
*/
|
||||
static inline bool port_irq_enabled(syssts_t sts) {
|
||||
|
||||
#if CORTEX_SIMPLIFIED_PRIORITY == FALSE
|
||||
return sts == (syssts_t)CORTEX_BASEPRI_DISABLED;
|
||||
#else /* CORTEX_SIMPLIFIED_PRIORITY */
|
||||
return (sts & (syssts_t)1) == (syssts_t)0;
|
||||
#endif /* CORTEX_SIMPLIFIED_PRIORITY */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Determines the current execution context.
|
||||
*
|
||||
* @return The execution context.
|
||||
* @retval false not running in ISR mode.
|
||||
* @retval true running in ISR mode.
|
||||
*/
|
||||
static inline bool port_is_isr_context(void) {
|
||||
|
||||
return (bool)((__get_IPSR() & 0x1FFU) != 0U);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-lock action.
|
||||
* @details In this port this function raises the base priority to kernel
|
||||
* level.
|
||||
*/
|
||||
static inline void port_lock(void) {
|
||||
|
||||
#if CORTEX_SIMPLIFIED_PRIORITY == FALSE
|
||||
#if defined(__CM7_REV)
|
||||
#if __CM7_REV == 0
|
||||
__disable_irq();
|
||||
#endif
|
||||
#endif
|
||||
__set_BASEPRI(CORTEX_BASEPRI_KERNEL);
|
||||
#if defined(__CM7_REV)
|
||||
#if __CM7_REV == 0
|
||||
__enable_irq();
|
||||
#endif
|
||||
#endif
|
||||
#else /* CORTEX_SIMPLIFIED_PRIORITY */
|
||||
__disable_irq();
|
||||
#endif /* CORTEX_SIMPLIFIED_PRIORITY */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-unlock action.
|
||||
* @details In this port this function lowers the base priority to user
|
||||
* level.
|
||||
*/
|
||||
static inline void port_unlock(void) {
|
||||
|
||||
#if CORTEX_SIMPLIFIED_PRIORITY == FALSE
|
||||
__set_BASEPRI(CORTEX_BASEPRI_DISABLED);
|
||||
#else /* CORTEX_SIMPLIFIED_PRIORITY */
|
||||
__enable_irq();
|
||||
#endif /* CORTEX_SIMPLIFIED_PRIORITY */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-lock action from an interrupt handler.
|
||||
* @details In this port this function raises the base priority to kernel
|
||||
* level.
|
||||
* @note Same as @p port_lock() in this port.
|
||||
*/
|
||||
static inline void port_lock_from_isr(void) {
|
||||
|
||||
port_lock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-unlock action from an interrupt handler.
|
||||
* @details In this port this function lowers the base priority to user
|
||||
* level.
|
||||
* @note Same as @p port_unlock() in this port.
|
||||
*/
|
||||
static inline void port_unlock_from_isr(void) {
|
||||
|
||||
port_unlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables all the interrupt sources.
|
||||
* @note In this port it disables all the interrupt sources by raising
|
||||
* the priority mask to level 0.
|
||||
*/
|
||||
static inline void port_disable(void) {
|
||||
|
||||
__disable_irq();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables the interrupt sources below kernel-level priority.
|
||||
* @note Interrupt sources above kernel level remains enabled.
|
||||
* @note In this port it raises/lowers the base priority to kernel level.
|
||||
*/
|
||||
static inline void port_suspend(void) {
|
||||
|
||||
#if (CORTEX_SIMPLIFIED_PRIORITY == FALSE) || defined(__DOXYGEN__)
|
||||
__set_BASEPRI(CORTEX_BASEPRI_KERNEL);
|
||||
__enable_irq();
|
||||
#else
|
||||
__disable_irq();
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enables all the interrupt sources.
|
||||
* @note In this port it lowers the base priority to user level.
|
||||
*/
|
||||
static inline void port_enable(void) {
|
||||
|
||||
#if (CORTEX_SIMPLIFIED_PRIORITY == FALSE) || defined(__DOXYGEN__)
|
||||
__set_BASEPRI(CORTEX_BASEPRI_DISABLED);
|
||||
#endif
|
||||
__enable_irq();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enters an architecture-dependent IRQ-waiting mode.
|
||||
* @details The function is meant to return when an interrupt becomes pending.
|
||||
* The simplest implementation is an empty function or macro but this
|
||||
* would not take advantage of architecture-specific power saving
|
||||
* modes.
|
||||
* @note Implemented as an inlined @p WFI instruction.
|
||||
*/
|
||||
static inline void port_wait_for_interrupt(void) {
|
||||
|
||||
#if CORTEX_ENABLE_WFI_IDLE == TRUE
|
||||
__WFI();
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the current value of the realtime counter.
|
||||
*
|
||||
* @return The realtime counter value.
|
||||
*/
|
||||
static inline rtcnt_t port_rt_get_counter_value(void) {
|
||||
|
||||
return DWT->CYCCNT;
|
||||
}
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
#endif /* _NILCORE_V7M_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,7 +0,0 @@
|
|||
# List of the ChibiOS/RT AVR port files.
|
||||
PORTSRC = ${CHIBIOS}/os/nil/ports/AVR/nilcore.c
|
||||
|
||||
PORTASM =
|
||||
|
||||
PORTINC = ${CHIBIOS}/os/nil/ports/AVR \
|
||||
${CHIBIOS}/os/nil/ports/AVR/compilers/GCC
|
|
@ -1,96 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file AVR/compilers/GCC/niltypes.h
|
||||
* @brief AVR port system types.
|
||||
*
|
||||
* @addtogroup AVR_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _NILTYPES_H_
|
||||
#define _NILTYPES_H_
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/**
|
||||
* @name Common constants
|
||||
*/
|
||||
/**
|
||||
* @brief Generic 'false' boolean constant.
|
||||
*/
|
||||
#if !defined(FALSE) || defined(__DOXYGEN__)
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Generic 'true' boolean constant.
|
||||
*/
|
||||
#if !defined(TRUE) || defined(__DOXYGEN__)
|
||||
#define TRUE (!FALSE)
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
typedef uint8_t syssts_t; /**< System status word. */
|
||||
typedef uint16_t rtcnt_t; /**< Realtime counter. */
|
||||
typedef uint8_t tstate_t; /**< Thread state. */
|
||||
typedef int16_t msg_t; /**< Inter-thread message. */
|
||||
typedef uint8_t eventmask_t; /**< Mask of event identifiers. */
|
||||
typedef int8_t cnt_t; /**< Generic signed counter. */
|
||||
typedef uint8_t ucnt_t; /**< Generic unsigned counter. */
|
||||
|
||||
/**
|
||||
* @brief Type of system time.
|
||||
*/
|
||||
#if (NIL_CFG_ST_RESOLUTION == 32) || defined(__DOXYGEN__)
|
||||
typedef uint32_t systime_t;
|
||||
#else
|
||||
typedef uint16_t systime_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief ROM constant modifier.
|
||||
* @note It is set to use the "const" keyword in this port.
|
||||
*/
|
||||
#define ROMCONST const
|
||||
|
||||
/**
|
||||
* @brief Makes functions not inlineable.
|
||||
* @note If the compiler does not support such attribute then the
|
||||
* realtime counter precision could be degraded.
|
||||
*/
|
||||
#define NOINLINE __attribute__((noinline))
|
||||
|
||||
/**
|
||||
* @brief Optimized thread function declaration macro.
|
||||
*/
|
||||
#define PORT_THD_FUNCTION(tname, arg) \
|
||||
__attribute__((noreturn)) void tname(void *arg)
|
||||
|
||||
/**
|
||||
* @brief Packed variable specifier.
|
||||
*/
|
||||
#define PACKED_VAR __attribute__((packed))
|
||||
|
||||
#endif /* _NILTYPES_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,137 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file AVR/nilcore.c
|
||||
* @brief AVR port code.
|
||||
*
|
||||
* @addtogroup AVR_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "nil.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Performs a context switch between two threads.
|
||||
* @details This is the most critical code in any port, this function
|
||||
* is responsible for the context switch between 2 threads.
|
||||
* @note The implementation of this code affects <b>directly</b> the context
|
||||
* switch performance so optimize here as much as you can.
|
||||
* @note The function is declared as a weak symbol, it is possible to
|
||||
* redefine it in your application code.
|
||||
*
|
||||
* @param[in] ntp the thread to be switched in
|
||||
* @param[in] otp the thread to be switched out
|
||||
*/
|
||||
#if !defined(__DOXYGEN__)
|
||||
__attribute__((naked, weak))
|
||||
#endif
|
||||
void _port_switch(thread_t *ntp, thread_t *otp) {
|
||||
|
||||
asm volatile ("push r2");
|
||||
asm volatile ("push r3");
|
||||
asm volatile ("push r4");
|
||||
asm volatile ("push r5");
|
||||
asm volatile ("push r6");
|
||||
asm volatile ("push r7");
|
||||
asm volatile ("push r8");
|
||||
asm volatile ("push r9");
|
||||
asm volatile ("push r10");
|
||||
asm volatile ("push r11");
|
||||
asm volatile ("push r12");
|
||||
asm volatile ("push r13");
|
||||
asm volatile ("push r14");
|
||||
asm volatile ("push r15");
|
||||
asm volatile ("push r16");
|
||||
asm volatile ("push r17");
|
||||
asm volatile ("push r28");
|
||||
asm volatile ("push r29");
|
||||
|
||||
asm volatile ("movw r30, r22");
|
||||
asm volatile ("in r0, 0x3d");
|
||||
asm volatile ("std Z+0, r0");
|
||||
asm volatile ("in r0, 0x3e");
|
||||
asm volatile ("std Z+1, r0");
|
||||
|
||||
asm volatile ("movw r30, r24");
|
||||
asm volatile ("ldd r0, Z+0");
|
||||
asm volatile ("out 0x3d, r0");
|
||||
asm volatile ("ldd r0, Z+1");
|
||||
asm volatile ("out 0x3e, r0");
|
||||
|
||||
asm volatile ("pop r29");
|
||||
asm volatile ("pop r28");
|
||||
asm volatile ("pop r17");
|
||||
asm volatile ("pop r16");
|
||||
asm volatile ("pop r15");
|
||||
asm volatile ("pop r14");
|
||||
asm volatile ("pop r13");
|
||||
asm volatile ("pop r12");
|
||||
asm volatile ("pop r11");
|
||||
asm volatile ("pop r10");
|
||||
asm volatile ("pop r9");
|
||||
asm volatile ("pop r8");
|
||||
asm volatile ("pop r7");
|
||||
asm volatile ("pop r6");
|
||||
asm volatile ("pop r5");
|
||||
asm volatile ("pop r4");
|
||||
asm volatile ("pop r3");
|
||||
asm volatile ("pop r2");
|
||||
asm volatile ("ret");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Start a thread by invoking its work function.
|
||||
* @details If the work function returns @p chThdExit() is automatically
|
||||
* invoked.
|
||||
*/
|
||||
void _port_thread_start(void) {
|
||||
|
||||
chSysUnlock();
|
||||
asm volatile ("movw r24, r4");
|
||||
asm volatile ("movw r30, r2");
|
||||
asm volatile ("icall");
|
||||
chSysHalt(0);
|
||||
}
|
||||
|
||||
/** @} */
|
|
@ -1,418 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file AVR/nilcore.h
|
||||
* @brief AVR port macros and structures.
|
||||
*
|
||||
* @addtogroup AVR_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _NILCORE_H_
|
||||
#define _NILCORE_H_
|
||||
|
||||
#include <avr/io.h>
|
||||
#include <avr/interrupt.h>
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @name Architecture and Compiler
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief Macro defining the port architecture.
|
||||
*/
|
||||
#define PORT_ARCHITECTURE_AVR
|
||||
|
||||
/**
|
||||
* @brief Name of the implemented architecture.
|
||||
*/
|
||||
#define PORT_ARCHITECTURE_NAME "AVR"
|
||||
|
||||
/**
|
||||
* @brief Name of the architecture variant.
|
||||
*/
|
||||
#define PORT_CORE_VARIANT_NAME "MegaAVR"
|
||||
|
||||
/**
|
||||
* @brief Compiler name and version.
|
||||
*/
|
||||
#if defined(__GNUC__) || defined(__DOXYGEN__)
|
||||
#define PORT_COMPILER_NAME "GCC " __VERSION__
|
||||
|
||||
#else
|
||||
#error "unsupported compiler"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Port-specific information string.
|
||||
*/
|
||||
#define PORT_INFO "16 bits code addressing"
|
||||
|
||||
/**
|
||||
* @brief This port supports a realtime counter.
|
||||
*/
|
||||
#define PORT_SUPPORTS_RT FALSE
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Stack size for the system idle thread.
|
||||
* @details This size depends on the idle thread implementation, usually
|
||||
* the idle thread should take no more space than those reserved
|
||||
* by @p PORT_INT_REQUIRED_STACK.
|
||||
* @note In this port it is set to 8.
|
||||
*/
|
||||
#if !defined(PORT_IDLE_THREAD_STACK_SIZE) || defined(__DOXYGEN__)
|
||||
#define PORT_IDLE_THREAD_STACK_SIZE 8
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Per-thread stack overhead for interrupts servicing.
|
||||
* @details This constant is used in the calculation of the correct working
|
||||
* area size.
|
||||
* @note In this port the default is 32 bytes per thread.
|
||||
*/
|
||||
#if !defined(PORT_INT_REQUIRED_STACK) || defined(__DOXYGEN__)
|
||||
#define PORT_INT_REQUIRED_STACK 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables an alternative timer implementation.
|
||||
* @details Usually the port uses a timer interface defined in the file
|
||||
* @p nilcore_timer.h, if this option is enabled then the file
|
||||
* @p nilcore_timer_alt.h is included instead.
|
||||
*/
|
||||
#if !defined(PORT_USE_ALT_TIMER)
|
||||
#define PORT_USE_ALT_TIMER FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* The following code is not processed when the file is included from an
|
||||
asm module.*/
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
/**
|
||||
* @brief Type of stack and memory alignment enforcement.
|
||||
*/
|
||||
typedef uint8_t stkalign_t;
|
||||
|
||||
/**
|
||||
* @brief System saved context.
|
||||
* @details This structure represents the inner stack frame during a context
|
||||
* switching.
|
||||
*/
|
||||
struct port_intctx {
|
||||
uint8_t _next;
|
||||
uint8_t r29;
|
||||
uint8_t r28;
|
||||
uint8_t r17;
|
||||
uint8_t r16;
|
||||
uint8_t r15;
|
||||
uint8_t r14;
|
||||
uint8_t r13;
|
||||
uint8_t r12;
|
||||
uint8_t r11;
|
||||
uint8_t r10;
|
||||
uint8_t r9;
|
||||
uint8_t r8;
|
||||
uint8_t r7;
|
||||
uint8_t r6;
|
||||
uint8_t r5;
|
||||
uint8_t r4;
|
||||
uint8_t r3;
|
||||
uint8_t r2;
|
||||
#ifdef __AVR_3_BYTE_PC__
|
||||
uint8_t pcx;
|
||||
#endif
|
||||
uint8_t pcl;
|
||||
uint8_t pch;
|
||||
};
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Platform dependent thread stack setup.
|
||||
* @details This code usually setup the context switching frame represented
|
||||
* by an @p port_intctx structure.
|
||||
*/
|
||||
#ifdef __AVR_3_BYTE_PC__
|
||||
#define PORT_SETUP_CONTEXT(tp, wend, pf, arg) { \
|
||||
(tp)->ctxp = (struct port_intctx*)(((uint8_t *)(wend)) - \
|
||||
sizeof(struct port_intctx)); \
|
||||
(tp)->ctxp->r2 = (int)pf; \
|
||||
(tp)->ctxp->r3 = (int)pf >> 8; \
|
||||
(tp)->ctxp->r4 = (int)arg; \
|
||||
(tp)->ctxp->r5 = (int)arg >> 8; \
|
||||
(tp)->ctxp->pcx = (int)0; \
|
||||
(tp)->ctxp->pcl = (int)_port_thread_start >> 8; \
|
||||
(tp)->ctxp->pch = (int)_port_thread_start; \
|
||||
}
|
||||
#else /* __AVR_3_BYTE_PC__ */
|
||||
#define PORT_SETUP_CONTEXT(tp, wend, pf, arg) { \
|
||||
(tp)->ctxp = (struct port_intctx*)(((uint8_t *)(wend)) - \
|
||||
sizeof(struct port_intctx)); \
|
||||
(tp)->ctxp->r2 = (int)pf; \
|
||||
(tp)->ctxp->r3 = (int)pf >> 8; \
|
||||
(tp)->ctxp->r4 = (int)arg; \
|
||||
(tp)->ctxp->r5 = (int)arg >> 8; \
|
||||
(tp)->ctxp->pcl = (int)_port_thread_start >> 8; \
|
||||
(tp)->ctxp->pch = (int)_port_thread_start; \
|
||||
}
|
||||
#endif /* __AVR_3_BYTE_PC__ */
|
||||
/**
|
||||
* @brief Computes the thread working area global size.
|
||||
* @note There is no need to perform alignments in this macro.
|
||||
*/
|
||||
#define PORT_WA_SIZE(n) ((sizeof(struct port_intctx) - 1) + \
|
||||
(n) + (PORT_INT_REQUIRED_STACK))
|
||||
|
||||
/**
|
||||
* @brief IRQ prologue code.
|
||||
* @details This macro must be inserted at the start of all IRQ handlers
|
||||
* enabled to invoke system APIs.
|
||||
* @note This code tricks the compiler to save all the specified registers
|
||||
* by "touching" them.
|
||||
*/
|
||||
#define PORT_IRQ_PROLOGUE() { \
|
||||
asm ("" : : : "r18", "r19", "r20", "r21", "r22", "r23", "r24", \
|
||||
"r25", "r26", "r27", "r30", "r31"); \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief IRQ epilogue code.
|
||||
* @details This macro must be inserted at the end of all IRQ handlers
|
||||
* enabled to invoke system APIs.
|
||||
*/
|
||||
#define PORT_IRQ_EPILOGUE() chSchRescheduleS()
|
||||
|
||||
/**
|
||||
* @brief IRQ handler function declaration.
|
||||
* @note @p id can be a function name or a vector number depending on the
|
||||
* port implementation.
|
||||
*/
|
||||
#define PORT_IRQ_HANDLER(id) ISR(id)
|
||||
|
||||
/**
|
||||
* @brief Fast IRQ handler function declaration.
|
||||
* @note @p id can be a function name or a vector number depending on the
|
||||
* port implementation.
|
||||
*/
|
||||
#define PORT_FAST_IRQ_HANDLER(id) ISR(id)
|
||||
|
||||
/**
|
||||
* @brief Performs a context switch between two threads.
|
||||
* @details This is the most critical code in any port, this function
|
||||
* is responsible for the context switch between 2 threads.
|
||||
* @note The implementation of this code affects <b>directly</b> the context
|
||||
* switch performance so optimize here as much as you can.
|
||||
*
|
||||
* @param[in] ntp the thread to be switched in
|
||||
* @param[in] otp the thread to be switched out
|
||||
*/
|
||||
#define port_switch(ntp, otp) _port_switch(ntp, otp)
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* The following code is not processed when the file is included from an
|
||||
asm module.*/
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void _port_irq_epilogue(void);
|
||||
void _port_switch(thread_t *ntp, thread_t *otp);
|
||||
void _port_thread_start(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* The following code is not processed when the file is included from an
|
||||
asm module.*/
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
/**
|
||||
* @brief Port-related initialization code.
|
||||
*/
|
||||
static inline void port_init(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns a word encoding the current interrupts status.
|
||||
*
|
||||
* @return The interrupts status.
|
||||
*/
|
||||
static inline syssts_t port_get_irq_status(void) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks the interrupt status.
|
||||
*
|
||||
* @param[in] sts the interrupt status word
|
||||
*
|
||||
* @return The interrupt status.
|
||||
* @retvel false the word specified a disabled interrupts status.
|
||||
* @retvel true the word specified an enabled interrupts status.
|
||||
*/
|
||||
static inline bool port_irq_enabled(syssts_t sts) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Determines the current execution context.
|
||||
*
|
||||
* @return The execution context.
|
||||
* @retval false not running in ISR mode.
|
||||
* @retval true running in ISR mode.
|
||||
*/
|
||||
static inline bool port_is_isr_context(void) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-lock action.
|
||||
*/
|
||||
static inline void port_lock(void) {
|
||||
|
||||
asm volatile ("cli" : : : "memory");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-unlock action.
|
||||
*/
|
||||
static inline void port_unlock(void) {
|
||||
|
||||
asm volatile ("sei" : : : "memory");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-lock action from an interrupt handler.
|
||||
* @note This function is empty in this port.
|
||||
*/
|
||||
static inline void port_lock_from_isr(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-unlock action from an interrupt handler.
|
||||
* @note This function is empty in this port.
|
||||
*/
|
||||
static inline void port_unlock_from_isr(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables all the interrupt sources.
|
||||
*/
|
||||
static inline void port_disable(void) {
|
||||
|
||||
asm volatile ("cli" : : : "memory");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables the interrupt sources below kernel-level priority.
|
||||
*/
|
||||
static inline void port_suspend(void) {
|
||||
|
||||
asm volatile ("cli" : : : "memory");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enables all the interrupt sources.
|
||||
*/
|
||||
static inline void port_enable(void) {
|
||||
|
||||
asm volatile ("sei" : : : "memory");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enters an architecture-dependent IRQ-waiting mode.
|
||||
* @details The function is meant to return when an interrupt becomes pending.
|
||||
* The simplest implementation is an empty function or macro but this
|
||||
* would not take advantage of architecture-specific power saving
|
||||
* modes.
|
||||
*/
|
||||
static inline void port_wait_for_interrupt(void) {
|
||||
|
||||
asm volatile ("sleep" : : : "memory");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the current value of the realtime counter.
|
||||
*
|
||||
* @return The realtime counter value.
|
||||
*/
|
||||
static inline rtcnt_t port_rt_get_counter_value(void) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module late inclusions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
#if NIL_CFG_ST_TIMEDELTA > 0
|
||||
#if !PORT_USE_ALT_TIMER
|
||||
#include "nilcore_timer.h"
|
||||
#else /* PORT_USE_ALT_TIMER */
|
||||
#include "nilcore_timer_alt.h"
|
||||
#endif /* PORT_USE_ALT_TIMER */
|
||||
#endif /* NIL_CFG_ST_TIMEDELTA > 0 */
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
#endif /* _NILCORE_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,124 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file AVR/nilcore_timer.h
|
||||
* @brief System timer header file.
|
||||
*
|
||||
* @addtogroup AVR_TIMER
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _NILCORE_TIMER_H_
|
||||
#define _NILCORE_TIMER_H_
|
||||
|
||||
/* This is the only header in the HAL designed to be include-able alone.*/
|
||||
#include "st.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Starts the alarm.
|
||||
* @note Makes sure that no spurious alarms are triggered after
|
||||
* this call.
|
||||
*
|
||||
* @param[in] time the time to be set for the first alarm
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void port_timer_start_alarm(systime_t time) {
|
||||
|
||||
stStartAlarm(time);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Stops the alarm interrupt.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void port_timer_stop_alarm(void) {
|
||||
|
||||
stStopAlarm();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sets the alarm time.
|
||||
*
|
||||
* @param[in] time the time to be set for the next alarm
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void port_timer_set_alarm(systime_t time) {
|
||||
|
||||
stSetAlarm(time);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the system time.
|
||||
*
|
||||
* @return The system time.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline systime_t port_timer_get_time(void) {
|
||||
|
||||
return stGetCounter();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the current alarm time.
|
||||
*
|
||||
* @return The currently set alarm time.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline systime_t port_timer_get_alarm(void) {
|
||||
|
||||
return stGetAlarm();
|
||||
}
|
||||
|
||||
#endif /* _NILCORE_TIMER_H_ */
|
||||
|
||||
/** @} */
|
832
os/nil/src/nil.c
832
os/nil/src/nil.c
|
@ -1,832 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file nil.c
|
||||
* @brief Nil RTOS main source file.
|
||||
*
|
||||
* @addtogroup NIL_KERNEL
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "nil.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System data structures.
|
||||
*/
|
||||
nil_system_t nil;
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module interrupt handlers. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Initializes the kernel.
|
||||
* @details Initializes the kernel structures, the current instructions flow
|
||||
* becomes the idle thread upon return. The idle thread must not
|
||||
* invoke any kernel primitive able to change state to not runnable.
|
||||
* @note This function assumes that the @p nil global variable has been
|
||||
* zeroed by the runtime environment. If this is not the case then
|
||||
* make sure to clear it before calling this function.
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
void chSysInit(void) {
|
||||
thread_t *tp;
|
||||
const thread_config_t *tcp;
|
||||
|
||||
/* Port layer initialization.*/
|
||||
port_init();
|
||||
|
||||
/* System initialization hook.*/
|
||||
NIL_CFG_SYSTEM_INIT_HOOK();
|
||||
|
||||
/* Iterates through the list of defined threads.*/
|
||||
tp = &nil.threads[0];
|
||||
tcp = nil_thd_configs;
|
||||
while (tp < &nil.threads[NIL_CFG_NUM_THREADS]) {
|
||||
#if NIL_CFG_ENABLE_STACK_CHECK
|
||||
tp->stklim = (stkalign_t *)tcp->wbase;
|
||||
#endif
|
||||
|
||||
/* Port dependent thread initialization.*/
|
||||
PORT_SETUP_CONTEXT(tp, tcp->wend, tcp->funcp, tcp->arg);
|
||||
|
||||
/* Initialization hook.*/
|
||||
NIL_CFG_THREAD_EXT_INIT_HOOK(tp);
|
||||
|
||||
tp++;
|
||||
tcp++;
|
||||
}
|
||||
|
||||
#if NIL_CFG_ENABLE_STACK_CHECK
|
||||
/* The idle thread is a special case because its stack is set up by the
|
||||
runtime environment.*/
|
||||
tp->stklim = THD_IDLE_BASE;
|
||||
#endif
|
||||
|
||||
/* Runs the highest priority thread, the current one becomes the idle
|
||||
thread.*/
|
||||
nil.current = nil.next = nil.threads;
|
||||
port_switch(nil.current, tp);
|
||||
|
||||
/* Interrupts enabled for the idle thread.*/
|
||||
chSysEnable();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Halts the system.
|
||||
* @details This function is invoked by the operating system when an
|
||||
* unrecoverable error is detected, for example because a programming
|
||||
* error in the application code that triggers an assertion while
|
||||
* in debug mode.
|
||||
* @note Can be invoked from any system state.
|
||||
*
|
||||
* @param[in] reason pointer to an error string
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
void chSysHalt(const char *reason) {
|
||||
|
||||
port_disable();
|
||||
|
||||
#if NIL_DBG_ENABLED
|
||||
nil.dbg_panic_msg = reason;
|
||||
#else
|
||||
(void)reason;
|
||||
#endif
|
||||
|
||||
NIL_CFG_SYSTEM_HALT_HOOK(reason);
|
||||
|
||||
/* Harmless infinite loop.*/
|
||||
while (true) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Time management handler.
|
||||
* @note This handler has to be invoked by a periodic ISR in order to
|
||||
* reschedule the waiting threads.
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
void chSysTimerHandlerI(void) {
|
||||
|
||||
#if NIL_CFG_ST_TIMEDELTA == 0
|
||||
thread_t *tp = &nil.threads[0];
|
||||
nil.systime++;
|
||||
do {
|
||||
/* Is the thread in a wait state with timeout?.*/
|
||||
if (tp->timeout > (systime_t)0) {
|
||||
|
||||
chDbgAssert(!NIL_THD_IS_READY(tp), "is ready");
|
||||
|
||||
/* Did the timer reach zero?*/
|
||||
if (--tp->timeout == (systime_t)0) {
|
||||
/* Timeout on semaphores requires a special handling because the
|
||||
semaphore counter must be incremented.*/
|
||||
/*lint -save -e9013 [15.7] There is no else because it is not needed.*/
|
||||
if (NIL_THD_IS_WTSEM(tp)) {
|
||||
tp->u1.semp->cnt++;
|
||||
}
|
||||
else if (NIL_THD_IS_SUSP(tp)) {
|
||||
*tp->u1.trp = NULL;
|
||||
}
|
||||
/*lint -restore*/
|
||||
(void) chSchReadyI(tp, MSG_TIMEOUT);
|
||||
}
|
||||
}
|
||||
/* Lock released in order to give a preemption chance on those
|
||||
architectures supporting IRQ preemption.*/
|
||||
chSysUnlockFromISR();
|
||||
tp++;
|
||||
chSysLockFromISR();
|
||||
} while (tp < &nil.threads[NIL_CFG_NUM_THREADS]);
|
||||
#else
|
||||
thread_t *tp = &nil.threads[0];
|
||||
systime_t next = (systime_t)0;
|
||||
|
||||
chDbgAssert(nil.nexttime == port_timer_get_alarm(), "time mismatch");
|
||||
|
||||
do {
|
||||
/* Is the thread in a wait state with timeout?.*/
|
||||
if (tp->timeout > (systime_t)0) {
|
||||
|
||||
chDbgAssert(!NIL_THD_IS_READY(tp), "is ready");
|
||||
chDbgAssert(tp->timeout >= (nil.nexttime - nil.lasttime), "skipped one");
|
||||
|
||||
tp->timeout -= nil.nexttime - nil.lasttime;
|
||||
if (tp->timeout == (systime_t)0) {
|
||||
/* Timeout on semaphores requires a special handling because the
|
||||
semaphore counter must be incremented.*/
|
||||
/*lint -save -e9013 [15.7] There is no else because it is not needed.*/
|
||||
if (NIL_THD_IS_WTSEM(tp)) {
|
||||
tp->u1.semp->cnt++;
|
||||
}
|
||||
else if (NIL_THD_IS_SUSP(tp)) {
|
||||
*tp->u1.trp = NULL;
|
||||
}
|
||||
/*lint -restore*/
|
||||
(void) chSchReadyI(tp, MSG_TIMEOUT);
|
||||
}
|
||||
else {
|
||||
if (tp->timeout <= (systime_t)(next - (systime_t)1)) {
|
||||
next = tp->timeout;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Lock released in order to give a preemption chance on those
|
||||
architectures supporting IRQ preemption.*/
|
||||
chSysUnlockFromISR();
|
||||
tp++;
|
||||
chSysLockFromISR();
|
||||
} while (tp < &nil.threads[NIL_CFG_NUM_THREADS]);
|
||||
nil.lasttime = nil.nexttime;
|
||||
if (next > (systime_t)0) {
|
||||
nil.nexttime += next;
|
||||
port_timer_set_alarm(nil.nexttime);
|
||||
}
|
||||
else {
|
||||
/* No tick event needed.*/
|
||||
port_timer_stop_alarm();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Unconditionally enters the kernel lock state.
|
||||
* @note Can be called without previous knowledge of the current lock state.
|
||||
* The final state is "s-locked".
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
void chSysUnconditionalLock(void) {
|
||||
|
||||
if (port_irq_enabled(port_get_irq_status())) {
|
||||
chSysLock();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Unconditionally leaves the kernel lock state.
|
||||
* @note Can be called without previous knowledge of the current lock state.
|
||||
* The final state is "normal".
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
void chSysUnconditionalUnlock(void) {
|
||||
|
||||
if (!port_irq_enabled(port_get_irq_status())) {
|
||||
chSysUnlock();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the execution status and enters a critical zone.
|
||||
* @details This functions enters into a critical zone and can be called
|
||||
* from any context. Because its flexibility it is less efficient
|
||||
* than @p chSysLock() which is preferable when the calling context
|
||||
* is known.
|
||||
* @post The system is in a critical zone.
|
||||
*
|
||||
* @return The previous system status, the encoding of this
|
||||
* status word is architecture-dependent and opaque.
|
||||
*
|
||||
* @xclass
|
||||
*/
|
||||
syssts_t chSysGetStatusAndLockX(void) {
|
||||
|
||||
syssts_t sts = port_get_irq_status();
|
||||
if (port_irq_enabled(sts)) {
|
||||
if (port_is_isr_context()) {
|
||||
chSysLockFromISR();
|
||||
}
|
||||
else {
|
||||
chSysLock();
|
||||
}
|
||||
}
|
||||
return sts;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Restores the specified execution status and leaves a critical zone.
|
||||
* @note A call to @p chSchRescheduleS() is automatically performed
|
||||
* if exiting the critical zone and if not in ISR context.
|
||||
*
|
||||
* @param[in] sts the system status to be restored.
|
||||
*
|
||||
* @xclass
|
||||
*/
|
||||
void chSysRestoreStatusX(syssts_t sts) {
|
||||
|
||||
if (port_irq_enabled(sts)) {
|
||||
if (port_is_isr_context()) {
|
||||
chSysUnlockFromISR();
|
||||
}
|
||||
else {
|
||||
chSchRescheduleS();
|
||||
chSysUnlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if (PORT_SUPPORTS_RT == TRUE) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief Realtime window test.
|
||||
* @details This function verifies if the current realtime counter value
|
||||
* lies within the specified range or not. The test takes care
|
||||
* of the realtime counter wrapping to zero on overflow.
|
||||
* @note When start==end then the function returns always true because the
|
||||
* whole time range is specified.
|
||||
* @note This function is only available if the port layer supports the
|
||||
* option @p PORT_SUPPORTS_RT.
|
||||
*
|
||||
* @param[in] cnt the counter value to be tested
|
||||
* @param[in] start the start of the time window (inclusive)
|
||||
* @param[in] end the end of the time window (non inclusive)
|
||||
* @retval true current time within the specified time window.
|
||||
* @retval false current time not within the specified time window.
|
||||
*
|
||||
* @xclass
|
||||
*/
|
||||
bool chSysIsCounterWithinX(rtcnt_t cnt, rtcnt_t start, rtcnt_t end) {
|
||||
|
||||
return (bool)((cnt - start) < (end - start));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Polled delay.
|
||||
* @note The real delay is always few cycles in excess of the specified
|
||||
* value.
|
||||
* @note This function is only available if the port layer supports the
|
||||
* option @p PORT_SUPPORTS_RT.
|
||||
*
|
||||
* @param[in] cycles number of cycles
|
||||
*
|
||||
* @xclass
|
||||
*/
|
||||
void chSysPolledDelayX(rtcnt_t cycles) {
|
||||
rtcnt_t start = chSysGetRealtimeCounterX();
|
||||
rtcnt_t end = start + cycles;
|
||||
|
||||
while (chSysIsCounterWithinX(chSysGetRealtimeCounterX(), start, end)) {
|
||||
}
|
||||
}
|
||||
#endif /* PORT_SUPPORTS_RT == TRUE */
|
||||
|
||||
/**
|
||||
* @brief Makes the specified thread ready for execution.
|
||||
*
|
||||
* @param[in] tp pointer to the @p thread_t object
|
||||
* @param[in] msg the wakeup message
|
||||
*
|
||||
* @return The same reference passed as parameter.
|
||||
*/
|
||||
thread_t *chSchReadyI(thread_t *tp, msg_t msg) {
|
||||
|
||||
chDbgAssert((tp >= nil.threads) &&
|
||||
(tp < &nil.threads[NIL_CFG_NUM_THREADS]),
|
||||
"pointer out of range");
|
||||
chDbgAssert(!NIL_THD_IS_READY(tp), "already ready");
|
||||
chDbgAssert(nil.next <= nil.current, "priority ordering");
|
||||
|
||||
tp->u1.msg = msg;
|
||||
tp->state = NIL_STATE_READY;
|
||||
tp->timeout = (systime_t)0;
|
||||
if (tp < nil.next) {
|
||||
nil.next = tp;
|
||||
}
|
||||
return tp;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reschedules if needed.
|
||||
*
|
||||
* @sclass
|
||||
*/
|
||||
void chSchRescheduleS(void) {
|
||||
|
||||
if (chSchIsRescRequiredI()) {
|
||||
thread_t *otp = nil.current;
|
||||
|
||||
nil.current = nil.next;
|
||||
if (otp == &nil.threads[NIL_CFG_NUM_THREADS]) {
|
||||
NIL_CFG_IDLE_LEAVE_HOOK();
|
||||
}
|
||||
port_switch(nil.next, otp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Puts the current thread to sleep into the specified state with
|
||||
* timeout specification.
|
||||
* @details The thread goes into a sleeping state, if it is not awakened
|
||||
* explicitly within the specified system time then it is forcibly
|
||||
* awakened with a @p NIL_MSG_TMO low level message.
|
||||
*
|
||||
* @param[in] newstate the new thread state or a semaphore pointer
|
||||
* @param[in] timeout the number of ticks before the operation timeouts.
|
||||
* the following special values are allowed:
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return The wakeup message.
|
||||
* @retval NIL_MSG_TMO if a timeout occurred.
|
||||
*
|
||||
* @sclass
|
||||
*/
|
||||
msg_t chSchGoSleepTimeoutS(tstate_t newstate, systime_t timeout) {
|
||||
thread_t *ntp, *otp = nil.current;
|
||||
|
||||
chDbgAssert(otp != &nil.threads[NIL_CFG_NUM_THREADS],
|
||||
"idle cannot sleep");
|
||||
|
||||
/* Storing the wait object for the current thread.*/
|
||||
otp->state = newstate;
|
||||
|
||||
#if NIL_CFG_ST_TIMEDELTA > 0
|
||||
if (timeout != TIME_INFINITE) {
|
||||
systime_t abstime;
|
||||
|
||||
/* TIMEDELTA makes sure to have enough time to reprogram the timer
|
||||
before the free-running timer counter reaches the selected timeout.*/
|
||||
if (timeout < (systime_t)NIL_CFG_ST_TIMEDELTA) {
|
||||
timeout = (systime_t)NIL_CFG_ST_TIMEDELTA;
|
||||
}
|
||||
|
||||
/* Absolute time of the timeout event.*/
|
||||
abstime = chVTGetSystemTimeX() + timeout;
|
||||
|
||||
if (nil.lasttime == nil.nexttime) {
|
||||
/* Special case, first thread asking for a timeout.*/
|
||||
port_timer_start_alarm(abstime);
|
||||
nil.nexttime = abstime;
|
||||
}
|
||||
else {
|
||||
/* Special case, there are already other threads with a timeout
|
||||
activated, evaluating the order.*/
|
||||
if (chVTIsTimeWithinX(abstime, nil.lasttime, nil.nexttime)) {
|
||||
port_timer_set_alarm(abstime);
|
||||
nil.nexttime = abstime;
|
||||
}
|
||||
}
|
||||
|
||||
/* Timeout settings.*/
|
||||
otp->timeout = abstime - nil.lasttime;
|
||||
}
|
||||
#else
|
||||
|
||||
/* Timeout settings.*/
|
||||
otp->timeout = timeout;
|
||||
#endif
|
||||
|
||||
/* Scanning the whole threads array.*/
|
||||
ntp = nil.threads;
|
||||
while (true) {
|
||||
/* Is this thread ready to execute?*/
|
||||
if (NIL_THD_IS_READY(ntp)) {
|
||||
nil.current = nil.next = ntp;
|
||||
if (ntp == &nil.threads[NIL_CFG_NUM_THREADS]) {
|
||||
NIL_CFG_IDLE_ENTER_HOOK();
|
||||
}
|
||||
port_switch(ntp, otp);
|
||||
return nil.current->u1.msg;
|
||||
}
|
||||
|
||||
/* Points to the next thread in lowering priority order.*/
|
||||
ntp++;
|
||||
chDbgAssert(ntp <= &nil.threads[NIL_CFG_NUM_THREADS],
|
||||
"pointer out of range");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sends the current thread sleeping and sets a reference variable.
|
||||
* @note This function must reschedule, it can only be called from thread
|
||||
* context.
|
||||
*
|
||||
* @param[in] trp a pointer to a thread reference object
|
||||
* @param[in] timeout the number of ticks before the operation timeouts,
|
||||
* the following special values are allowed:
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return The wake up message.
|
||||
*
|
||||
* @sclass
|
||||
*/
|
||||
msg_t chThdSuspendTimeoutS(thread_reference_t *trp, systime_t timeout) {
|
||||
|
||||
chDbgAssert(*trp == NULL, "not NULL");
|
||||
|
||||
*trp = nil.current;
|
||||
nil.current->u1.trp = trp;
|
||||
return chSchGoSleepTimeoutS(NIL_STATE_SUSP, timeout);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Wakes up a thread waiting on a thread reference object.
|
||||
* @note This function must not reschedule because it can be called from
|
||||
* ISR context.
|
||||
*
|
||||
* @param[in] trp a pointer to a thread reference object
|
||||
* @param[in] msg the message code
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
void chThdResumeI(thread_reference_t *trp, msg_t msg) {
|
||||
|
||||
if (*trp != NULL) {
|
||||
thread_reference_t tr = *trp;
|
||||
|
||||
chDbgAssert(NIL_THD_IS_SUSP(tr), "not suspended");
|
||||
|
||||
*trp = NULL;
|
||||
(void) chSchReadyI(tr, msg);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Suspends the invoking thread for the specified time.
|
||||
*
|
||||
* @param[in] timeout the delay in system ticks
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
void chThdSleep(systime_t timeout) {
|
||||
|
||||
chSysLock();
|
||||
chThdSleepS(timeout);
|
||||
chSysUnlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Suspends the invoking thread until the system time arrives to the
|
||||
* specified value.
|
||||
*
|
||||
* @param[in] abstime absolute system time
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
void chThdSleepUntil(systime_t abstime) {
|
||||
|
||||
chSysLock();
|
||||
chThdSleepUntilS(abstime);
|
||||
chSysUnlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Performs a wait operation on a semaphore with timeout specification.
|
||||
*
|
||||
* @param[in] sp pointer to a @p semaphore_t structure
|
||||
* @param[in] timeout the number of ticks before the operation timeouts,
|
||||
* the following special values are allowed:
|
||||
* - @a TIME_IMMEDIATE immediate timeout.
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return A message specifying how the invoking thread has been
|
||||
* released from the semaphore.
|
||||
* @retval NIL_MSG_OK if the thread has not stopped on the semaphore or the
|
||||
* semaphore has been signaled.
|
||||
* @retval NIL_MSG_RST if the semaphore has been reset using @p chSemReset().
|
||||
* @retval NIL_MSG_TMO if the semaphore has not been signaled or reset within
|
||||
* the specified timeout.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
msg_t chSemWaitTimeout(semaphore_t *sp, systime_t timeout) {
|
||||
msg_t msg;
|
||||
|
||||
chSysLock();
|
||||
msg = chSemWaitTimeoutS(sp, timeout);
|
||||
chSysUnlock();
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Performs a wait operation on a semaphore with timeout specification.
|
||||
*
|
||||
* @param[in] sp pointer to a @p semaphore_t structure
|
||||
* @param[in] timeout the number of ticks before the operation timeouts,
|
||||
* the following special values are allowed:
|
||||
* - @a TIME_IMMEDIATE immediate timeout.
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return A message specifying how the invoking thread has been
|
||||
* released from the semaphore.
|
||||
* @retval NIL_MSG_OK if the thread has not stopped on the semaphore or the
|
||||
* semaphore has been signaled.
|
||||
* @retval NIL_MSG_RST if the semaphore has been reset using @p chSemReset().
|
||||
* @retval NIL_MSG_TMO if the semaphore has not been signaled or reset within
|
||||
* the specified timeout.
|
||||
*
|
||||
* @sclass
|
||||
*/
|
||||
msg_t chSemWaitTimeoutS(semaphore_t *sp, systime_t timeout) {
|
||||
|
||||
/* Note, the semaphore counter is a volatile variable so accesses are
|
||||
manually optimized.*/
|
||||
cnt_t cnt = sp->cnt;
|
||||
if (cnt <= (cnt_t)0) {
|
||||
if (TIME_IMMEDIATE == timeout) {
|
||||
return MSG_TIMEOUT;
|
||||
}
|
||||
sp->cnt = cnt - (cnt_t)1;
|
||||
nil.current->u1.semp = sp;
|
||||
return chSchGoSleepTimeoutS(NIL_STATE_WTSEM, timeout);
|
||||
}
|
||||
sp->cnt = cnt - (cnt_t)1;
|
||||
return MSG_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Performs a signal operation on a semaphore.
|
||||
*
|
||||
* @param[in] sp pointer to a @p semaphore_t structure
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
void chSemSignal(semaphore_t *sp) {
|
||||
|
||||
chSysLock();
|
||||
chSemSignalI(sp);
|
||||
chSchRescheduleS();
|
||||
chSysUnlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Performs a signal operation on a semaphore.
|
||||
* @post This function does not reschedule so a call to a rescheduling
|
||||
* function must be performed before unlocking the kernel. Note that
|
||||
* interrupt handlers always reschedule on exit so an explicit
|
||||
* reschedule must not be performed in ISRs.
|
||||
*
|
||||
* @param[in] sp pointer to a @p semaphore_t structure
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
void chSemSignalI(semaphore_t *sp) {
|
||||
|
||||
if (++sp->cnt <= (cnt_t)0) {
|
||||
thread_reference_t tr = nil.threads;
|
||||
while (true) {
|
||||
/* Is this thread waiting on this semaphore?*/
|
||||
if (tr->u1.semp == sp) {
|
||||
|
||||
chDbgAssert(NIL_THD_IS_WTSEM(tr), "not waiting");
|
||||
|
||||
(void) chSchReadyI(tr, MSG_OK);
|
||||
return;
|
||||
}
|
||||
tr++;
|
||||
|
||||
chDbgAssert(tr < &nil.threads[NIL_CFG_NUM_THREADS],
|
||||
"pointer out of range");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Performs a reset operation on the semaphore.
|
||||
* @post After invoking this function all the threads waiting on the
|
||||
* semaphore, if any, are released and the semaphore counter is set
|
||||
* to the specified, non negative, value.
|
||||
*
|
||||
* @param[in] sp pointer to a @p semaphore_t structure
|
||||
* @param[in] n the new value of the semaphore counter. The value must
|
||||
* be non-negative.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
void chSemReset(semaphore_t *sp, cnt_t n) {
|
||||
|
||||
chSysLock();
|
||||
chSemResetI(sp, n);
|
||||
chSchRescheduleS();
|
||||
chSysUnlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Performs a reset operation on the semaphore.
|
||||
* @post After invoking this function all the threads waiting on the
|
||||
* semaphore, if any, are released and the semaphore counter is set
|
||||
* to the specified, non negative, value.
|
||||
* @post This function does not reschedule so a call to a rescheduling
|
||||
* function must be performed before unlocking the kernel. Note that
|
||||
* interrupt handlers always reschedule on exit so an explicit
|
||||
* reschedule must not be performed in ISRs.
|
||||
*
|
||||
* @param[in] sp pointer to a @p semaphore_t structure
|
||||
* @param[in] n the new value of the semaphore counter. The value must
|
||||
* be non-negative.
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
void chSemResetI(semaphore_t *sp, cnt_t n) {
|
||||
thread_t *tp;
|
||||
cnt_t cnt;
|
||||
|
||||
cnt = sp->cnt;
|
||||
sp->cnt = n;
|
||||
tp = nil.threads;
|
||||
while (cnt < (cnt_t)0) {
|
||||
|
||||
chDbgAssert(tp < &nil.threads[NIL_CFG_NUM_THREADS],
|
||||
"pointer out of range");
|
||||
|
||||
/* Is this thread waiting on this semaphore?*/
|
||||
if (tp->u1.semp == sp) {
|
||||
|
||||
chDbgAssert(NIL_THD_IS_WTSEM(tp), "not waiting");
|
||||
|
||||
cnt++;
|
||||
(void) chSchReadyI(tp, MSG_RESET);
|
||||
}
|
||||
tp++;
|
||||
}
|
||||
}
|
||||
|
||||
#if (NIL_CFG_USE_EVENTS == TRUE) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief Adds a set of event flags directly to the specified @p thread_t.
|
||||
*
|
||||
* @param[in] tp the thread to be signaled
|
||||
* @param[in] mask the event flags set to be ORed
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
void chEvtSignal(thread_t *tp, eventmask_t mask) {
|
||||
|
||||
chSysLock();
|
||||
chEvtSignalI(tp, mask);
|
||||
chSchRescheduleS();
|
||||
chSysUnlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Adds a set of event flags directly to the specified @p thread_t.
|
||||
* @post This function does not reschedule so a call to a rescheduling
|
||||
* function must be performed before unlocking the kernel. Note that
|
||||
* interrupt handlers always reschedule on exit so an explicit
|
||||
* reschedule must not be performed in ISRs.
|
||||
*
|
||||
* @param[in] tp the thread to be signaled
|
||||
* @param[in] mask the event flags set to be ORed
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
void chEvtSignalI(thread_t *tp, eventmask_t mask) {
|
||||
|
||||
tp->epmask |= mask;
|
||||
if (NIL_THD_IS_WTOREVT(tp) &&
|
||||
((tp->epmask & tp->u1.ewmask) != (eventmask_t)0)) {
|
||||
(void) chSchReadyI(tp, MSG_OK);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Waits for any of the specified events.
|
||||
* @details The function waits for any event among those specified in
|
||||
* @p mask to become pending then the events are cleared and
|
||||
* returned.
|
||||
*
|
||||
* @param[in] mask mask of the event flags that the function should wait
|
||||
* for, @p ALL_EVENTS enables all the events
|
||||
* @param[in] timeout the number of ticks before the operation timeouts,
|
||||
* the following special values are allowed:
|
||||
* - @a TIME_IMMEDIATE immediate timeout.
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return The mask of the served and cleared events.
|
||||
* @retval 0 if the operation has timed out.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
eventmask_t chEvtWaitAnyTimeout(eventmask_t mask, systime_t timeout) {
|
||||
eventmask_t m;
|
||||
|
||||
chSysLock();
|
||||
m = chEvtWaitAnyTimeoutS(mask, timeout);
|
||||
chSysUnlock();
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Waits for any of the specified events.
|
||||
* @details The function waits for any event among those specified in
|
||||
* @p mask to become pending then the events are cleared and
|
||||
* returned.
|
||||
*
|
||||
* @param[in] mask mask of the event flags that the function should wait
|
||||
* for, @p ALL_EVENTS enables all the events
|
||||
* @param[in] timeout the number of ticks before the operation timeouts,
|
||||
* the following special values are allowed:
|
||||
* - @a TIME_IMMEDIATE immediate timeout.
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return The mask of the served and cleared events.
|
||||
* @retval 0 if the operation has timed out.
|
||||
*
|
||||
* @sclass
|
||||
*/
|
||||
eventmask_t chEvtWaitAnyTimeoutS(eventmask_t mask, systime_t timeout) {
|
||||
thread_t *ctp = nil.current;
|
||||
eventmask_t m;
|
||||
|
||||
if ((m = (ctp->epmask & mask)) == (eventmask_t)0) {
|
||||
if (TIME_IMMEDIATE == timeout) {
|
||||
chSysUnlock();
|
||||
|
||||
return (eventmask_t)0;
|
||||
}
|
||||
ctp->u1.ewmask = mask;
|
||||
if (chSchGoSleepTimeoutS(NIL_STATE_WTOREVT, timeout) < MSG_OK) {
|
||||
chSysUnlock();
|
||||
|
||||
return (eventmask_t)0;
|
||||
}
|
||||
m = ctp->epmask & mask;
|
||||
}
|
||||
ctp->epmask &= ~m;
|
||||
|
||||
return m;
|
||||
}
|
||||
#endif /* NIL_CFG_USE_EVENTS == TRUE */
|
||||
|
||||
/** @} */
|
|
@ -1,179 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file nilconf.h
|
||||
* @brief Configuration file template.
|
||||
* @details A copy of this file must be placed in each project directory, it
|
||||
* contains the application specific kernel settings.
|
||||
*
|
||||
* @addtogroup NIL_CONFIG
|
||||
* @details Kernel related settings and hooks.
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _NILCONF_H_
|
||||
#define _NILCONF_H_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel parameters and options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
*/
|
||||
#define NIL_CFG_NUM_THREADS 1
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name System timer settings
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System time counter resolution.
|
||||
* @note Allowed values are 16 or 32 bits.
|
||||
*/
|
||||
#define NIL_CFG_ST_RESOLUTION 32
|
||||
|
||||
/**
|
||||
* @brief System tick frequency.
|
||||
* @note This value together with the @p NIL_CFG_ST_RESOLUTION
|
||||
* option defines the maximum amount of time allowed for
|
||||
* timeouts.
|
||||
*/
|
||||
#define NIL_CFG_ST_FREQUENCY 50000
|
||||
|
||||
/**
|
||||
* @brief Time delta constant for the tick-less mode.
|
||||
* @note If this value is zero then the system uses the classic
|
||||
* periodic tick. This value represents the minimum number
|
||||
* of ticks that is safe to specify in a timeout directive.
|
||||
* The value one is not valid, timeouts are rounded up to
|
||||
* this value.
|
||||
*/
|
||||
#define NIL_CFG_ST_TIMEDELTA 2
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Subsystem options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs.
|
||||
* @details If enabled then the event flags APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define NIL_CFG_USE_EVENTS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Debug options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System assertions.
|
||||
*/
|
||||
#define NIL_CFG_ENABLE_ASSERTS FALSE
|
||||
|
||||
/**
|
||||
* @brief Stack check.
|
||||
*/
|
||||
#define NIL_CFG_ENABLE_STACK_CHECK FALSE
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel hooks
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(NIL_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define NIL_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
* @details User fields added to the end of the @p thread_t structure.
|
||||
*/
|
||||
#define NIL_CFG_THREAD_EXT_FIELDS \
|
||||
/* Add threads custom fields here.*/
|
||||
|
||||
/**
|
||||
* @brief Threads initialization hook.
|
||||
*/
|
||||
#define NIL_CFG_THREAD_EXT_INIT_HOOK(tr) { \
|
||||
/* Add custom threads initialization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to activate a power saving mode.
|
||||
*/
|
||||
#define NIL_CFG_IDLE_ENTER_HOOK() { \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread leave hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to deactivate a power saving mode.
|
||||
*/
|
||||
#define NIL_CFG_IDLE_LEAVE_HOOK() { \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(NIL_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define NIL_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Port-specific settings (override port settings defaulted in nilcore.h). */
|
||||
/*===========================================================================*/
|
||||
|
||||
#endif /* _NILCONF_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,54 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/nilcore.c
|
||||
* @brief Port code.
|
||||
*
|
||||
* @addtogroup NIL_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "nil.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/** @} */
|
|
@ -1,379 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/nilcore.h
|
||||
* @brief Port macros and structures.
|
||||
*
|
||||
* @addtogroup NIL_CORE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _NILCORE_H_
|
||||
#define _NILCORE_H_
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @name Architecture and Compiler
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief Macro defining the port architecture.
|
||||
*/
|
||||
#define PORT_ARCHITECTURE_XXX
|
||||
|
||||
/**
|
||||
* @brief Name of the implemented architecture.
|
||||
*/
|
||||
#define PORT_ARCHITECTURE_NAME "XXX"
|
||||
|
||||
/**
|
||||
* @brief Name of the architecture variant.
|
||||
*/
|
||||
#define PORT_CORE_VARIANT_NAME "XXXX-Y"
|
||||
|
||||
/**
|
||||
* @brief Compiler name and version.
|
||||
*/
|
||||
#if defined(__GNUC__) || defined(__DOXYGEN__)
|
||||
#define PORT_COMPILER_NAME "GCC " __VERSION__
|
||||
|
||||
#else
|
||||
#error "unsupported compiler"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Port-specific information string.
|
||||
*/
|
||||
#define PORT_INFO "port description"
|
||||
|
||||
/**
|
||||
* @brief This port supports a realtime counter.
|
||||
*/
|
||||
#define PORT_SUPPORTS_RT FALSE
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Per-thread stack overhead for interrupts servicing.
|
||||
* @details This constant is used in the calculation of the correct working
|
||||
* area size.
|
||||
*/
|
||||
#if !defined(PORT_INT_REQUIRED_STACK) || defined(__DOXYGEN__)
|
||||
#define PORT_INT_REQUIRED_STACK 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables an alternative timer implementation.
|
||||
* @details Usually the port uses a timer interface defined in the file
|
||||
* @p nilcore_timer.h, if this option is enabled then the file
|
||||
* @p nilcore_timer_alt.h is included instead.
|
||||
*/
|
||||
#if !defined(PORT_USE_ALT_TIMER)
|
||||
#define PORT_USE_ALT_TIMER FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* The following code is not processed when the file is included from an
|
||||
asm module.*/
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
/**
|
||||
* @brief Type of stack and memory alignment enforcement.
|
||||
*/
|
||||
typedef uint64_t stkalign_t;
|
||||
|
||||
/**
|
||||
* @brief Interrupt saved context.
|
||||
* @details This structure represents the stack frame saved during a
|
||||
* preemption-capable interrupt handler.
|
||||
*/
|
||||
struct port_extctx {
|
||||
uint32_t reg1;
|
||||
uint32_t reg2;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief System saved context.
|
||||
* @details This structure represents the inner stack frame during a context
|
||||
* switch.
|
||||
*/
|
||||
struct port_intctx {
|
||||
uint32_t reg3;
|
||||
uint32_t reg4;
|
||||
};
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Platform dependent thread stack setup.
|
||||
* @details This code usually setup the context switching frame represented
|
||||
* by an @p port_intctx structure.
|
||||
*/
|
||||
#define PORT_SETUP_CONTEXT(tp, wend, pf, arg) do { \
|
||||
(void)(tp); \
|
||||
(void)(wend); \
|
||||
(void)(pf); \
|
||||
(void)(arg); \
|
||||
} while (false)
|
||||
|
||||
/**
|
||||
* @brief Computes the thread working area global size.
|
||||
* @note There is no need to perform alignments in this macro.
|
||||
*/
|
||||
#define PORT_WA_SIZE(n) (sizeof(struct port_intctx) + \
|
||||
sizeof(struct port_extctx) + \
|
||||
(size_t)(n) + \
|
||||
(size_t)(PORT_INT_REQUIRED_STACK))
|
||||
|
||||
/**
|
||||
* @brief Priority level verification macro.
|
||||
*/
|
||||
#define PORT_IRQ_IS_VALID_PRIORITY(n) false
|
||||
|
||||
/**
|
||||
* @brief Priority level verification macro.
|
||||
*/
|
||||
#define PORT_IRQ_IS_VALID_KERNEL_PRIORITY(n) false
|
||||
|
||||
/**
|
||||
* @brief IRQ prologue code.
|
||||
* @details This macro must be inserted at the start of all IRQ handlers
|
||||
* enabled to invoke system APIs.
|
||||
*/
|
||||
#define PORT_IRQ_PROLOGUE()
|
||||
|
||||
/**
|
||||
* @brief IRQ epilogue code.
|
||||
* @details This macro must be inserted at the end of all IRQ handlers
|
||||
* enabled to invoke system APIs.
|
||||
*/
|
||||
#define PORT_IRQ_EPILOGUE() _port_irq_epilogue()
|
||||
|
||||
/**
|
||||
* @brief IRQ handler function declaration.
|
||||
* @note @p id can be a function name or a vector number depending on the
|
||||
* port implementation.
|
||||
*/
|
||||
#define PORT_IRQ_HANDLER(id) void id(void)
|
||||
|
||||
/**
|
||||
* @brief Fast IRQ handler function declaration.
|
||||
* @note @p id can be a function name or a vector number depending on the
|
||||
* port implementation.
|
||||
*/
|
||||
#define PORT_FAST_IRQ_HANDLER(id) void id(void)
|
||||
|
||||
/**
|
||||
* @brief Performs a context switch between two threads.
|
||||
* @details This is the most critical code in any port, this function
|
||||
* is responsible for the context switch between 2 threads.
|
||||
* @note The implementation of this code affects <b>directly</b> the context
|
||||
* switch performance so optimize here as much as you can.
|
||||
*
|
||||
* @param[in] ntp the thread to be switched in
|
||||
* @param[in] otp the thread to be switched out
|
||||
*/
|
||||
#define port_switch(ntp, otp) do { \
|
||||
(void)ntp; \
|
||||
(void)otp; \
|
||||
/*_port_switch(ntp, otp)*/ \
|
||||
} while (false)
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* The following code is not processed when the file is included from an
|
||||
asm module.*/
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void _port_irq_epilogue(void);
|
||||
void _port_switch(thread_t *ntp, thread_t *otp);
|
||||
void _port_thread_start(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* The following code is not processed when the file is included from an
|
||||
asm module.*/
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
/**
|
||||
* @brief Port-related initialization code.
|
||||
*/
|
||||
static inline void port_init(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns a word encoding the current interrupts status.
|
||||
*
|
||||
* @return The interrupts status.
|
||||
*/
|
||||
static inline syssts_t port_get_irq_status(void) {
|
||||
|
||||
return (syssts_t)0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks the interrupt status.
|
||||
*
|
||||
* @param[in] sts the interrupt status word
|
||||
*
|
||||
* @return The interrupt status.
|
||||
* @retval false the word specified a disabled interrupts status.
|
||||
* @retval true the word specified an enabled interrupts status.
|
||||
*/
|
||||
static inline bool port_irq_enabled(syssts_t sts) {
|
||||
|
||||
(void)sts;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Determines the current execution context.
|
||||
*
|
||||
* @return The execution context.
|
||||
* @retval false not running in ISR mode.
|
||||
* @retval true running in ISR mode.
|
||||
*/
|
||||
static inline bool port_is_isr_context(void) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-lock action.
|
||||
*/
|
||||
static inline void port_lock(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-unlock action.
|
||||
*/
|
||||
static inline void port_unlock(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-lock action from an interrupt handler.
|
||||
*/
|
||||
static inline void port_lock_from_isr(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel-unlock action from an interrupt handler.
|
||||
*/
|
||||
static inline void port_unlock_from_isr(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables all the interrupt sources.
|
||||
*/
|
||||
static inline void port_disable(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables the interrupt sources below kernel-level priority.
|
||||
*/
|
||||
static inline void port_suspend(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enables all the interrupt sources.
|
||||
*/
|
||||
static inline void port_enable(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enters an architecture-dependent IRQ-waiting mode.
|
||||
* @details The function is meant to return when an interrupt becomes pending.
|
||||
* The simplest implementation is an empty function or macro but this
|
||||
* would not take advantage of architecture-specific power saving
|
||||
* modes.
|
||||
*/
|
||||
static inline void port_wait_for_interrupt(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the current value of the realtime counter.
|
||||
*
|
||||
* @return The realtime counter value.
|
||||
*/
|
||||
static inline rtcnt_t port_rt_get_counter_value(void) {
|
||||
|
||||
return (rtcnt_t)0;
|
||||
}
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module late inclusions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if !defined(_FROM_ASM_)
|
||||
|
||||
#if NIL_CFG_ST_TIMEDELTA > 0
|
||||
#if PORT_USE_ALT_TIMER == FALSE
|
||||
#include "nilcore_timer.h"
|
||||
#else
|
||||
#include "nilcore_timer_alt.h"
|
||||
#endif
|
||||
#endif /* NIL_CFG_ST_TIMEDELTA > 0 */
|
||||
|
||||
#endif /* !defined(_FROM_ASM_) */
|
||||
|
||||
#endif /* _NILCORE_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,120 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/nilcore_timer.h
|
||||
* @brief System timer header file.
|
||||
*
|
||||
* @addtogroup NIL_TIMER
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _NILCORE_TIMER_H_
|
||||
#define _NILCORE_TIMER_H_
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Starts the alarm.
|
||||
* @note Makes sure that no spurious alarms are triggered after
|
||||
* this call.
|
||||
*
|
||||
* @param[in] abstime the time to be set for the first alarm
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void port_timer_start_alarm(systime_t abstime) {
|
||||
|
||||
(void)abstime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Stops the alarm interrupt.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void port_timer_stop_alarm(void) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sets the alarm time.
|
||||
*
|
||||
* @param[in] abstime the time to be set for the next alarm
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void port_timer_set_alarm(systime_t abstime) {
|
||||
|
||||
(void)abstime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the system time.
|
||||
*
|
||||
* @return The system time.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline systime_t port_timer_get_time(void) {
|
||||
|
||||
return (systime_t)0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the current alarm time.
|
||||
*
|
||||
* @return The currently set alarm time.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline systime_t port_timer_get_alarm(void) {
|
||||
|
||||
return (systime_t)0;
|
||||
}
|
||||
|
||||
#endif /* _NILCORE_TIMER_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,96 +0,0 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/niltypes.h
|
||||
* @brief Port system types.
|
||||
*
|
||||
* @addtogroup NIL_TYPES
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _NILTYPES_H_
|
||||
#define _NILTYPES_H_
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/**
|
||||
* @name Common constants
|
||||
*/
|
||||
/**
|
||||
* @brief Generic 'false' boolean constant.
|
||||
*/
|
||||
#if !defined(FALSE) || defined(__DOXYGEN__)
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Generic 'true' boolean constant.
|
||||
*/
|
||||
#if !defined(TRUE) || defined(__DOXYGEN__)
|
||||
#define TRUE 1
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
typedef uint32_t syssts_t; /**< System status word. */
|
||||
typedef uint32_t rtcnt_t; /**< Realtime counter. */
|
||||
typedef uint8_t tstate_t; /**< Thread state. */
|
||||
typedef int32_t msg_t; /**< Inter-thread message. */
|
||||
typedef uint32_t eventmask_t; /**< Mask of event identifiers. */
|
||||
typedef int32_t cnt_t; /**< Generic signed counter. */
|
||||
typedef uint32_t ucnt_t; /**< Generic unsigned counter. */
|
||||
|
||||
/**
|
||||
* @brief Type of system time.
|
||||
*/
|
||||
#if (NIL_CFG_ST_RESOLUTION == 32) || defined(__DOXYGEN__)
|
||||
typedef uint32_t systime_t;
|
||||
#else
|
||||
typedef uint16_t systime_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief ROM constant modifier.
|
||||
* @note It is set to use the "const" keyword in this port.
|
||||
*/
|
||||
#define ROMCONST const
|
||||
|
||||
/**
|
||||
* @brief Makes functions not inlineable.
|
||||
* @note If the compiler does not support such attribute then the
|
||||
* realtime counter precision could be degraded.
|
||||
*/
|
||||
#define NOINLINE __attribute__((noinline))
|
||||
|
||||
/**
|
||||
* @brief Optimized thread function declaration macro.
|
||||
*/
|
||||
#define PORT_THD_FUNCTION(tname, arg) \
|
||||
__attribute__((noreturn)) void tname(void *arg)
|
||||
|
||||
/**
|
||||
* @brief Packed variable specifier.
|
||||
*/
|
||||
#define PACKED_VAR __attribute__((packed))
|
||||
|
||||
#endif /* _NILTYPES_H_ */
|
||||
|
||||
/** @} */
|
|
@ -1,9 +0,0 @@
|
|||
# List of all the ChibiOS/RT test files.
|
||||
TESTSRC = ${CHIBIOS}/test/lib/ch_test.c \
|
||||
${CHIBIOS}/test/nil/test_root.c \
|
||||
${CHIBIOS}/test/nil/test_sequence_001.c \
|
||||
${CHIBIOS}/test/nil/test_sequence_002.c
|
||||
|
||||
# Required include directories
|
||||
TESTINC = ${CHIBIOS}/test/lib \
|
||||
${CHIBIOS}/test/nil
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue