summaryrefslogtreecommitdiff
path: root/nuttx/Documentation/NuttxPortingGuide.html
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-05-06 21:10:00 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-05-06 21:10:00 +0000
commitbbbdceb9d13441f4b96257718ed090b8998759f7 (patch)
tree6bb4e7cbc0c05dc47f8d7de2848b67b189bd5279 /nuttx/Documentation/NuttxPortingGuide.html
parent4c3a7673e9a391302a0e2417d8846bfdf7d9171f (diff)
downloadpx4-nuttx-bbbdceb9d13441f4b96257718ed090b8998759f7.tar.gz
px4-nuttx-bbbdceb9d13441f4b96257718ed090b8998759f7.tar.bz2
px4-nuttx-bbbdceb9d13441f4b96257718ed090b8998759f7.zip
More timer changes from Uros
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3572 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/Documentation/NuttxPortingGuide.html')
-rw-r--r--nuttx/Documentation/NuttxPortingGuide.html87
1 files changed, 86 insertions, 1 deletions
diff --git a/nuttx/Documentation/NuttxPortingGuide.html b/nuttx/Documentation/NuttxPortingGuide.html
index 4f9b0694f..c7a56927f 100644
--- a/nuttx/Documentation/NuttxPortingGuide.html
+++ b/nuttx/Documentation/NuttxPortingGuide.html
@@ -91,7 +91,8 @@
<a href="#updisableirq">4.1.16 <code>up_disable_irq()</code></a><br>
<a href="#upenableirq">4.1.17 <code>up_enable_irq()</code></a><br>
<a href="#upprioritizeirq">4.1.18 <code>up_prioritize_irq()</code></a></br>
- <a href="#upputc">4.1.19 <code>up_putc()</code></a>
+ <a href="#upputc">4.1.19 <code>up_putc()</code></a></br>
+ <a href="#systemtime">4.1.20 System Time and Clock</a>
</ul>
<a href="#exports">4.2 APIs Exported by NuttX to Architecture-Specific Logic</a>
<ul>
@@ -1642,6 +1643,90 @@ The system can be re-made subsequently by just typing <code>make</code>.
Output one character on the console
</p>
+<h3><a name="systemtime">4.1.20 System Time and Clock</a></h3>
+
+<h4>4.1.20.1 UTC Time Representation</h4>
+<p>
+ To enable UTC time representation use option:
+</p>
+<ul><pre>
+CONFIG_SYSTEM_UTC=y
+</pre></ul>
+<p>
+ which adds the following variables:
+</p>
+<ul>
+ <li><code>g_system_utc</code> (seconds, 4 bytes)</li>
+ <li><code>g_tickcount</code> (timer ticks, 1-2 bytes typically)</li>
+</ul>
+<p>
+ and replaces:
+</p>
+<ul>
+ <li><code>g_system_timer</code>(4 bytes)</li>
+ <li><code>g_basetime</code>(8 bytes)</li>
+ <li><code>g_tickbias</code>(4 bytes)</li>
+</ul>
+<p>
+ Otherwise internal time is computed from 32-bit running tick timer
+ <code>g_systemtimer</code> the start date <code>g_basetime</code> and time offset the <code>g_tickbias</code>.
+</p>
+
+<h4>4.1.20.2 Hardware</h4>
+<p>
+ To enable hardware module use option:
+<p>
+<ul><pre>
+CONFIG_RTC=y
+</pre></ul>
+<p>
+ which requires the following three base functions to read time:
+</p>
+<ul>
+ <li><code>up_rtcinitialize()</code></li>
+ <li><code>up_rtc_gettime()</code>. UTC time in seconds.</li>
+ <li><code>up_rtc_getclock()</code>. Replacement for <code>g_system_tick</code></li>
+</ul>
+<p>
+ This module depends on <code>CONFIG_SYSTEM_UTC=y</code>.
+</p>
+
+<h4>4.1.20.3 System Tick and Time</h4>
+<p>
+ The system tick is represented by, when <code>CONFIG_SYSTEM_UTC=n</code>:
+</p>
+<ul>
+ <li><code>g_system_timer</code></li>
+</ul>
+<p>
+ or, when <code>CONFIG_SYSTEM_UTC=y</code>
+</p>
+<ul>
+ <li><code>g_tickcount</code></li>
+ <li><code>g_system_utc</code></li>
+</ul>
+<p>
+ Running at rate of system base timer, used for time-slicing, and so forth.
+</p>
+<p>
+ If hardware RTC is present (<code>CONFIG_RTC</code>) and enabled, then after successful
+ initiliazation variables are overriden by calls to <code>up_rtc_getclock()</code> which is
+ running continously even in power-down modes.
+</p>
+<p>
+ In the case of <code>CONFIG_RTC</code> is set the <code>g_tickcount</code> and <code>g_system_utc</code> keep
+ counting at rate of a system timer, which however, is disabled in power-down
+ mode. By comparing this time and RTC (actual time) one may determine the
+ actual system active time. To retrieve that variable use:
+</p>
+<ul><pre>
+ <li><code>clock_gettime(CLOCK_ACTIVETIME, tp)</code>
+</pre></ul>
+<p>
+ If the <code>CLOCK_ACTIVETIME</code> time is never set it will serve as power-up time
+ minus all deep sleeps.
+</p>
+
<h2><a name="exports">4.2 APIs Exported by NuttX to Architecture-Specific Logic</a></h2>
<p>
These are standard interfaces that are exported by the OS