Skip to content
Snippets Groups Projects
NuttxPortingGuide.html 64.1 KiB
Newer Older
patacongo's avatar
patacongo committed
<html>

<head>
patacongo's avatar
patacongo committed
<title>NuttX Porting Manual</title>
patacongo's avatar
patacongo committed
<meta name="author" content="Gregory Nutt">
</head>

patacongo's avatar
patacongo committed
<body background="backgd.gif">
patacongo's avatar
patacongo committed
<hr><hr>
patacongo's avatar
patacongo committed
<center><h1><i>Under Construction</i></h1></center>
patacongo's avatar
patacongo committed
<hr><hr>
patacongo's avatar
patacongo committed
<center>
patacongo's avatar
patacongo committed
  <h1><big><b>
    <p>NuttX Operating System</br>
    Porting Guide</p>
  </b></big></h1>
patacongo's avatar
patacongo committed
  <p><small>by</small></p>
  <p>Gregory Nutt</p>
  <p><small>Last Update: November 5, 2008</small></p>
patacongo's avatar
patacongo committed
</center>

<center><h1>Table of Contents</h1></center>
patacongo's avatar
patacongo committed
<li><a href="#Introduction">1.0 Introduction</a></li>
<li><a href="#DirectoryStructure">2.0 Directory Structure</a></li>
patacongo's avatar
patacongo committed
<ul>
patacongo's avatar
patacongo committed
  <li><a href="#DirStructDocumentation">2.1 Documentation</a></li>
  <l1><a href="#DirStructArch">2.2 arch/</a></li>
patacongo's avatar
patacongo committed
  <ul>
    <li><a href="#archdirectorystructure">2.2.1 Subdirectory Structure</a></li>
    <li><a href="#summaryofarchfiles">2.2.2 Summary of Files</a></li>
patacongo's avatar
patacongo committed
    <li><a href="#supportedarchitectures">2.2.3 Supported Architectures</a></li>
  </ul>
patacongo's avatar
patacongo committed
  <li><a href="#DirStructConfigs">2.3 configs/</a></li>
  <ul>
    <li><a href="#configsdirectorystructure">2.3.1 Subdirectory Structure</a></li>
    <li><a href="#summaryofconfigfiles">2.3.2 Summary of Files</a></li>
patacongo's avatar
patacongo committed
    <ul>
      <li><a href="#boardlogic">2.3.2.1 Board Specific Logic</a></li>
patacongo's avatar
patacongo committed
      <li><a href="#boardconfigsubdirs">2.3.2.2 Board Specific Configuration Sub-Directories</a></li>
patacongo's avatar
patacongo committed
    </ul>
    <li><a href="#supportedboards">2.3.3 Supported Boards</a></li>
  </ul>
patacongo's avatar
patacongo committed
  <li><a href="#DirStructDrivers">2.4 drivers/</a></li>
  <li><a href="#DirStructExamples">2.5 examples/</a></li>
  <li><a href="#DirStructFs">2.6 fs/</a></li>
  <li><a href="#DirStructInclude">2.7 include/</a></li>
  <li><a href="#DirStructLib">2.8 lib/</a></li>
  <li><a href="#DirStructMm">2.9 mm/</a></li>
patacongo's avatar
patacongo committed
  <li><a href="#DirStructNet">2.10 net</a></li>
  <li><a href="#DirStructNetUtils">2.11 netutils</a></li>
  <li><a href="#DirStructSched">2.12 sched/</a></li>
  <li><a href="#DirStructTools">2.13 tools/</a></li>
  <li><a href="#topmakefile">2.14 Makefile</a></li>
patacongo's avatar
patacongo committed
</ul>
patacongo's avatar
patacongo committed
<li><a href="#configandbuild">3.0 Configuring and Building</a></li>
patacongo's avatar
patacongo committed
<ul>
  <li><a href="#configuringnuttx">3.1 Configuring NuttX</a></li>
  <li><a href="#buildingnuttx">3.2 Building NuttX</a></li>
patacongo's avatar
patacongo committed
</ul>
patacongo's avatar
patacongo committed
<li><a href="#ArchAPIs">4.0 Architecture APIs</a></li>
patacongo's avatar
patacongo committed
<ul>
  <li><a href="#imports">4.1 APIs Exported by Architecture-Specific Logic to NuttX</a></li>
  <ul>
    <li><a href="#upinitialize">4.1.1 <code>up_initialize()</code></a></li>
    <li><a href="#upidle">4.1.2 <code>up_idle()</code></a></li>
    <li><a href="#upinitialstate">4.1.3 <code>up_initial_state()</code></a></li>
    <li><a href="#upcreatestack">4.1.4 <code>up_create_stack()</code></a></li>
    <li><a href="#upusestack">4.1.5 <code>up_use_stack()</code></a></li>
    <li><a href="#upreleasestack">4.1.6 <code>up_release_stack()</code></a></li>
    <li><a href="#upunblocktask">4.1.7 <code>up_unblock_task()</code></a></li>
    <li><a href="#upblocktask">4.1.8 <code>up_block_task()</code></a></li>
    <li><a href="#upreleasepending">4.1.9 <code>up_release_pending()</code></a></li>
    <li><a href="#upreprioritizertr">4.1.10 <code>up_reprioritize_rtr()</code></a></li>
    <li><a href="#_exit">4.1.11 <code>_exit()</code></a></li>
    <li><a href="#upassert">4.1.12 <code>up_assert()</code></a></li>
    <li><a href="#upschedulesigaction">4.1.13 <code>up_schedule_sigaction()</code></a></li>
    <li><a href="#upallocateheap">4.1.14 <code>up_allocate_heap()</code></a></li>
    <li><a href="#upinterruptcontext">4.1.15 <code>up_interrupt_context()</code></a></li>
    <li><a href="#updisableirq">4.1.16 <code>up_disable_irq()</code></a></li>
    <li><a href="#upenableirq">4.1.17 <code>up_enable_irq()</code></a></li>
    <li><a href="#upputc">4.1.18 <code>up_putc()</code></a></li>
  </ul>
  <li><a href="#exports">4.2 APIs Exported by NuttX to Architecture-Specific Logic</a></li>
  <ul>
    <li><a href="#osstart">4.2.1 <code>os_start()</code></a></li>
    <li><a href="#listmgmt">4.2.2 OS List Management APIs</a></li></li>
    <li><a href="#schedprocesstimer">4.2.3 <code>sched_process_timer()</code></a></li>
    <li><a href="#irqdispatch">4.2.4 <code>irq_dispatch()</code></a></li>
  </ul>
</ul>
patacongo's avatar
patacongo committed
<li><a href="#NxFileSystem">5.0 NuttX File System</a></li>
patacongo's avatar
patacongo committed
<li><a href="#apndxconfigs">Appendix A: NuttX Configuration Settings</a></li>
patacongo's avatar
patacongo committed
<li><a href="#apndxtrademarks">Appendix B:  Trademarks</a></li>
patacongo's avatar
patacongo committed
<hr>
<h1>1.0 <a name="Introduction">Introduction</a></h1>

<p><b>Overview</b>
patacongo's avatar
patacongo committed
  This document provides and overview of the NuttX build and configuration
patacongo's avatar
patacongo committed
  logic and provides hints for the incorporation of new processor/board architectures
patacongo's avatar
patacongo committed
  into the build.
</p>
<p>
patacongo's avatar
patacongo committed
  See also <code>arch/README.txt</code> and <code>configs/README.txt</code>.
patacongo's avatar
patacongo committed
</p>

<p><b>General Philosophy</b>.

<hr>
<h1>2.0 <a name="DirectoryStructure">Directory Structure</a></h1>

patacongo's avatar
patacongo committed
<p>
  <b>Directory Structure</b>.
  The general directly layout for NuttX is very similar to the directory structure
  of the Linux kernel -- at least at the most superficial layers.
  At the top level is the main makefile and a series of sub-directories identified
  below and discussed in the following paragraphs:
</p>
patacongo's avatar
patacongo committed
<ul><pre>
.
patacongo's avatar
patacongo committed
|-- <a href="#topmakefile">Makefile</a>
patacongo's avatar
patacongo committed
|-- <a href="#DirStructDocumentation">Documentation</a>
patacongo's avatar
patacongo committed
|   `-- <i>(documentation files)</i>/
|-- <a href="#DirStructArch">arch</a>/
|   |-- <i>&lt;arch-name&gt;</i>/
|   |   |-- include/
|   |   |   |--<i>&lt;chip-name&gt;</i>/
|   |   |   |  `-- <i>(chip-specific header files)</i>
|   |   |   |--<i>&lt;other-chips&gt;</i>/
|   |   |   `-- <i>(architecture-specific header files)</i>
|   |   `-- src/
|   |       |--<i>&lt;chip-name&gt;</i>/
|   |       |  `-- <i>(chip-specific source files)</i>
|   |       |--<i>&lt;other-chips&gt;</i>/
|   |       `-- <i>(architecture-specific source files)</i>
patacongo's avatar
patacongo committed
|   `-- <i>&lt;other-architecture directories&gt;</i>/
patacongo's avatar
patacongo committed
|-- <a href="#DirStructConfigs">configs</a>/
|   |-- <i>&lt;board-name&gt;</i>/
|   |   |-- include/
|   |   |   `-- <i>(board-specific header files)</i>
|   |   |-- src/
|   |   |   |-- Makefile
|   |   |  `-- <i>(board-specific source files)</i>
patacongo's avatar
patacongo committed
|   |   |---<i>&lt;config1-dir&gt;</i>/
|   |   |   `-- <i>(board-specific/configuration-specific files)</i>
|   |   `---<i>(other board-specific configuration sub-directories)</i>/
|   `-- <i>&lt;(other board directories)&gt;</i>/
patacongo's avatar
patacongo committed
|-- <a href="#DirStructDrivers">drivers</a>/
|   |-- Makefile
patacongo's avatar
patacongo committed
|   `-- <i>(common driver source files)</i>
|-- <a href="#DirStructExamples">examples</a>/
|   `-- <i>(example)</i>/
patacongo's avatar
patacongo committed
|       |-- Makefile
|       `-- <i>(example source files)</i>
patacongo's avatar
patacongo committed
|-- <a href="#DirStructFs">fs</a>/
patacongo's avatar
patacongo committed
|   |-- Makefile
patacongo's avatar
patacongo committed
|   `-- <i>(common file system source files)</i>
patacongo's avatar
patacongo committed
|-- <a href="#DirStructInclude">include</a>/
patacongo's avatar
patacongo committed
|   |-- <i>(standard header files)</i>
patacongo's avatar
patacongo committed
|   |-- arpa/
|   |   `-- <i>(standard header files)</i>
|   |-- net/
|   |   `-- uip/
|   |       `-- <i>(uIP specific header files)</i>
|   |-- netinet/
|   |   `-- <i>(standard header files)</i>
patacongo's avatar
patacongo committed
|   |-- nuttx/
patacongo's avatar
patacongo committed
|   |   `-- <i>(nuttx specific header files)</i>
patacongo's avatar
patacongo committed
|   `- sys/
patacongo's avatar
patacongo committed
|   |   `-- <i>(more standard header files)</i>
patacongo's avatar
patacongo committed
|-- <a href="#DirStructLib">lib</a>/
patacongo's avatar
patacongo committed
|   |-- Makefile
|   `-- <i>(lib source files)</i>
patacongo's avatar
patacongo committed
|-- <a href="#DirStructMm">mm</a>/
patacongo's avatar
patacongo committed
|   |-- Makefile
patacongo's avatar
patacongo committed
|   `-- <i>(memory management source files)</i>
|-- <a href="#DirStructNet">net</a>/
|   |-- Makefile
|   |-- uip/
|   |   `-- <i>(uip source files)</i>
|   `-- <i>(socket source files)</i>
|-- <a href="#DirStructNetUtils">netutils</a>/
|   |-- dhcp/
|   |   `-- <i>(dhcp source files)</i>
|   |-- resolv/
|   |   `-- <i>(resolv source files)</i>
|   |-- smtp/
|   |   `-- <i>(smtp source files)</i>
|   |-- telnetd/
|   |   `-- <i>(telnetd source files)</i>
|   |-- uiplib/
|   |   `-- <i>(uiplib source files)</i>
|   |-- weblclient/
|   |   `-- <i>(webclient source files)</i>
|   |-- webserver/
|   |   `-- <i>(webserver source files)</i>
|   |-- Makefile
|   `-- <i>(fs source files)</i>
patacongo's avatar
patacongo committed
|-- <a href="#DirStructSched">sched</a>/
patacongo's avatar
patacongo committed
|   |-- Makefile
|   `-- <i>(sched source files)</i>
Loading
Loading full blame...