diff options
-rw-r--r-- | docs/ch.txt | 9 | ||||
-rw-r--r-- | docs/img/states.svg | 474 | ||||
-rw-r--r-- | readme.txt | 12 |
3 files changed, 486 insertions, 9 deletions
diff --git a/docs/ch.txt b/docs/ch.txt index 257d3d89e..bc6bdc98e 100644 --- a/docs/ch.txt +++ b/docs/ch.txt @@ -59,8 +59,8 @@ * @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 VT, \a Thd, \a Sem, \a Evt,
- * \a Msg, \a IQ, \a OQ, \a HQ,\a FDD, \a HDD.
+ * The possible groups are: \a Sys, \a Sch, \a VT, \a Thd, \a Sem, \a Mtx,
+ * \a Evt, \a Msg, \a IQ, \a OQ, \a HQ,\a FDD, \a HDD, \a Dbg.
* The suffix is not present for normal APIs but can be one of
* the following: "I" for APIs meant to be invoked from an interrupt handler
* or within the system mutex zone but not from user code, "S" for APIs only
@@ -79,6 +79,10 @@ * 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 states Threads States Diagram
+ * The image shows how threads can change their state in ChibiOS/RT.<br>
+ * @image html states.png
+ *
* @section warea Thread Working Area
* Each thread has its own stack, a Thread structure and a registers dump
* structure. All the structures are allocated into a "Thread working area",
@@ -87,7 +91,6 @@ * have as many threads you want as long you have enough available RAM
* memory. The threads do not use any memory outside the allocated working
* area.<br>
-
* @image html workspace.png
* <br>
* Note that the registers dump is only present when the Thread is not
diff --git a/docs/img/states.svg b/docs/img/states.svg new file mode 100644 index 000000000..a7a0b0bd2 --- /dev/null +++ b/docs/img/states.svg @@ -0,0 +1,474 @@ +<?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="350" + height="500" + id="svg2160" + sodipodi:version="0.32" + inkscape:version="0.45.1" + version="1.0" + sodipodi:docbase="C:\Progetti\ChibiOS-RT\docs\img" + sodipodi:docname="states.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="C:\Progetti\ChibiOS-RT\docs\img\states.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2162"> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mstart" + style="overflow:visible"> + <path + id="path10108" + 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> + <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" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2" + inkscape:cx="198.03694" + inkscape:cy="300.90085" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + width="350px" + height="500px" + 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="870" + inkscape:window-x="139" + inkscape:window-y="66" /> + <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"> + <flowRoot + xml:space="preserve" + id="flowRoot3188" + transform="translate(-3.1464844,-407.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> <flowRoot + xml:space="preserve" + id="flowRoot3208" + transform="translate(-99.457031,-40.853054)" + style="fill:url(#linearGradient3230);fill-opacity:1"><flowRegion + id="flowRegion3210" + style="fill:url(#linearGradient3230);fill-opacity:1"><rect + id="rect3212" + width="139.31241" + height="50.822121" + x="99.850525" + y="299.55157" + style="fill:url(#linearGradient3230);fill-opacity:1" /></flowRegion><flowPara + id="flowPara3214" + style="fill:url(#linearGradient3230);fill-opacity:1">Thread Structure</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,-51.570166 C 109.31485,-51.570166 109.31485,-51.570166 109.31485,-51.570166" + id="path3491" /> + <flowRoot + xml:space="preserve" + id="flowRoot2216" + transform="translate(31.53125,-269.98977)" + style="font-size:12px"><flowRegion + id="flowRegion2218"><rect + id="rect2220" + width="82.01046" + height="17.563538" + x="2.9895365" + y="332.43646" + style="font-size:12px" /></flowRegion><flowPara + id="flowPara2222" + style="font-size:12px">chThdCreate()</flowPara></flowRoot> <g + id="g5159" + transform="translate(-4.4339553e-6,-30.000001)" + style="font-size:12px"> + <path + transform="matrix(4.1122708,0,0,2.4522717,-286.36579,142.69295)" + d="M 96 49.875 A 8.125 13.625 0 1 1 79.75,49.875 A 8.125 13.625 0 1 1 96 49.875 z" + sodipodi:ry="13.625" + sodipodi:rx="8.125" + sodipodi:cy="49.875" + sodipodi:cx="87.875" + id="path2230" + style="font-size:3.77881908px;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + sodipodi:type="arc" /> + <flowRoot + transform="translate(-1.9335937,102.06296)" + id="flowRoot5151" + xml:space="preserve" + style="font-size:12px"><flowRegion + id="flowRegion5153"><rect + y="156.5" + x="53" + height="13" + width="53" + id="rect5155" + style="font-size:12px" /></flowRegion><flowPara + id="flowPara5157">Running</flowPara></flowRoot> </g> + <g + id="g5166" + transform="translate(174.99999,-30.000001)" + style="font-size:12px"> + <path + transform="matrix(4.1122708,0,0,2.4522717,-286.36579,142.69295)" + d="M 96 49.875 A 8.125 13.625 0 1 1 79.75,49.875 A 8.125 13.625 0 1 1 96 49.875 z" + sodipodi:ry="13.625" + sodipodi:rx="8.125" + sodipodi:cy="49.875" + sodipodi:cx="87.875" + id="path5168" + style="font-size:3.77881908px;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + sodipodi:type="arc" /> + <flowRoot + transform="translate(6.0566406,100.94773)" + id="flowRoot5170" + xml:space="preserve" + style="font-size:12px"><flowRegion + id="flowRegion5172"><rect + y="156.5" + x="53" + height="13" + width="53" + id="rect5174" + style="font-size:12px" /></flowRegion><flowPara + id="flowPara5176">Ready</flowPara></flowRoot> <use + x="0" + y="0" + xlink:href="#path5168" + id="use5178" + width="500" + height="500" + style="font-size:12px" /> + <use + x="0" + y="0" + xlink:href="#flowRoot5170" + id="use5180" + width="500" + height="500" + style="font-size:12px" /> + </g> + <flowRoot + xml:space="preserve" + id="flowRoot5198" + transform="translate(183.06641,-102.93704)"><flowRegion + id="flowRegion5200"><rect + id="rect5202" + width="53" + height="13" + x="53" + y="156.5" /></flowRegion><flowPara + id="flowPara5204">SuspendedSus</flowPara></flowRoot> <g + id="g5223" + transform="translate(175,-190)" + style="font-size:12px"> + <g + id="g5235" + style="font-size:12px"> + <path + sodipodi:type="arc" + style="font-size:3.77881908px;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path5225" + sodipodi:cx="87.875" + sodipodi:cy="49.875" + sodipodi:rx="8.125" + sodipodi:ry="13.625" + d="M 96 49.875 A 8.125 13.625 0 1 1 79.75,49.875 A 8.125 13.625 0 1 1 96 49.875 z" + transform="matrix(4.1122708,0,0,2.4522717,-286.36579,142.69295)" /> + <flowRoot + xml:space="preserve" + id="flowRoot5227" + transform="translate(-7.9003806,102.20945)" + style="font-size:12px"><flowRegion + id="flowRegion5229"><rect + id="rect5231" + width="62" + height="13.5" + x="53" + y="156.5" + style="font-size:12px" /></flowRegion><flowPara + id="flowPara5233">Suspended</flowPara></flowRoot> </g> + </g> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" + d="M 120.5,72.75 L 210.5,72.75" + id="path6213" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" + d="M 99.042893,80.5 L 219.04289,200.5" + id="path7186" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" + d="M 75,85 L 75,190" + id="path8157" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-opacity:1" + d="M 116.25,232.75 L 206.25,232.75" + id="path9128" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Mend);stroke-opacity:1" + d="M 95.957107,199.04289 L 205.95711,89.0429" + id="path10297" /> + <g + id="g11268" + transform="translate(175,155)" + style="font-size:12px"> + <path + transform="matrix(4.1122708,0,0,2.4522717,-286.36579,142.69295)" + d="M 96 49.875 A 8.125 13.625 0 1 1 79.75,49.875 A 8.125 13.625 0 1 1 96 49.875 z" + sodipodi:ry="13.625" + sodipodi:rx="8.125" + sodipodi:cy="49.875" + sodipodi:cx="87.875" + id="path11270" + style="font-size:3.77881908px;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + sodipodi:type="arc" /> + <flowRoot + transform="translate(-1.9335937,102.06296)" + id="flowRoot11272" + xml:space="preserve" + style="font-size:12px"><flowRegion + id="flowRegion11274"><rect + y="156.5" + x="53" + height="13" + width="53" + id="rect11276" + style="font-size:12px" /></flowRegion><flowPara + id="flowPara11278">Sleeping</flowPara></flowRoot> </g> + <text + xml:space="preserve" + style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="144.6875" + y="303.31641" + id="text12251"><tspan + sodipodi:role="line" + id="tspan12253" + x="144.6875" + y="303.31641">chSchGoSleepS()</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" + d="M 100,265 L 220,380" + id="path12255" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" + d="M 209.5,390.94191 L 89.5,275.94191" + id="path13226" /> + <text + xml:space="preserve" + style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="98" + y="350.82422" + id="text14197"><tspan + sodipodi:role="line" + id="tspan14199" + x="98" + y="350.82422">chSchWakeupS()</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" + d="M 250,380 L 250,280" + id="path14201" /> + <text + xml:space="preserve" + style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="253" + y="325.82422" + id="text15172"><tspan + sodipodi:role="line" + id="tspan15174" + x="253" + y="325.82422">chSchWakeupS()</tspan><tspan + sodipodi:role="line" + x="253" + y="335.82422" + id="tspan15176">chSchReadyI()</tspan></text> + <text + xml:space="preserve" + style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="124.6875" + y="243.31641" + id="text15180"><tspan + sodipodi:role="line" + id="tspan15182" + x="124.6875" + y="243.31641">chSchRescheduleS()</tspan><tspan + sodipodi:role="line" + x="124.6875" + y="253.31641" + id="tspan15184">chSchDoRescheduleI()</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" + d="M 250,115 L 250,195" + id="path17124" /> + <text + xml:space="preserve" + style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="258" + y="145.82422" + id="text18099"><tspan + sodipodi:role="line" + id="tspan18101" + x="258" + y="145.82422">chSchWakeupS()</tspan><tspan + sodipodi:role="line" + x="258" + y="155.82422" + id="tspan18103">chSchReadyI()</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);marker-end:none;stroke-opacity:1" + d="M 105.95711,209.04289 L 215.95711,99.042893" + id="path18105" /> + <text + xml:space="preserve" + style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="134.6875" + y="93.316406" + id="text20045"><tspan + sodipodi:role="line" + id="tspan20047" + x="134.6875" + y="93.316406">chSchGoSleepS()</tspan></text> + <text + xml:space="preserve" + style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="118" + y="205.82422" + id="text20049"><tspan + sodipodi:role="line" + id="tspan20051" + x="118" + y="205.82422">chSchWakeupS()</tspan></text> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path20055" + sodipodi:cx="87.875" + sodipodi:cy="49.875" + sodipodi:rx="8.125" + sodipodi:ry="13.625" + d="M 96 49.875 A 8.125 13.625 0 1 1 79.75,49.875 A 8.125 13.625 0 1 1 96 49.875 z" + transform="matrix(4.1122708,0,0,2.4522717,-286.36579,297.69295)" /> + <flowRoot + xml:space="preserve" + id="flowRoot20057" + transform="translate(6.0566362,255.94773)"><flowRegion + id="flowRegion20059"><rect + id="rect20061" + width="53" + height="13" + x="53" + y="156.5" /></flowRegion><flowPara + id="flowPara20063">Ready</flowPara></flowRoot> <use + height="500" + width="500" + id="use20065" + xlink:href="#path5168" + y="0" + x="0" + transform="translate(-4.4339552e-6,155)" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="57.498047" + y="423.58984" + id="text20088"><tspan + sodipodi:role="line" + id="tspan20090" + x="57.498047" + y="423.58984">Exited</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" + d="M 75,275 C 75,380 75,380 75,380" + id="path20102" /> + <text + xml:space="preserve" + style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="6.203125" + y="320.82422" + id="text21073"><tspan + sodipodi:role="line" + id="tspan21075" + x="6.203125" + y="320.82422">chSchGoSleepS()</tspan><tspan + sodipodi:role="line" + x="6.203125" + y="330.82422" + id="tspan21077">chThdExit()</tspan></text> + </g> +</svg> diff --git a/readme.txt b/readme.txt index 760a0dd5e..0fede6af8 100644 --- a/readme.txt +++ b/readme.txt @@ -26,8 +26,6 @@ *****************************************************************************
Current ports under ./demos:
-Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
- MinGW version.
ARM7-LPC214x-GCC - ChibiOS/RT port for ARM7 LPC2148, the demo targets
the Olimex LPC-P2148 board. This port can be easily
modified for any processor into the LPC2000 family or
@@ -39,11 +37,12 @@ ARM7-AT91SAM7X-GCC - Port for Atmel AT91SAM7X256. The demo program targets ARMCM3-ST32F103-GCC - ARM Cortex-M3 port, work in progress, not complete
yet. The demo will target the Olimex STM32-P103
board.
-AVR-AVRmega128-GCC - Port on AVRmega128, experimental. A special thanks to
- Vladimir for the work done on the AVR port. The demo
- program targets the Olimex AVR-MT-128 mini terminal
- board.
+AVR-AVRmega128-GCC - Port on AVRmega128. A special thanks to Vladimir for
+ the work done on the AVR port. The demo program
+ targets the Olimex AVR-MT-128 mini terminal board.
AVR-AT90CANx-GCC - Port on AVR AT90CAN128, not tested on hardware yet.
+Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
+ MinGW version.
*****************************************************************************
*** Plans ***
@@ -75,6 +74,7 @@ AVR-AT90CANx-GCC - Port on AVR AT90CAN128, not tested on hardware yet. LPC21xx demos. This saves significant program space.
- Started work on ARM Cortex-M3 architecture. The target chip is the ST32F103
on a Olimex STM32-P103 board.
+- Added a threads state diagram to the documentation.
- Various fixes to the doxigen documentation.
*** 0.6.0 ***
|