Compare commits

...

16 Commits

Author SHA1 Message Date
Masayuki Ishikawa
4401e5b280 mm: Fix heap corruption in protected build
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2020-04-23 17:49:14 -06:00
Brennan Ashton
ca367a259b CI: Add logic for determining which branches of OS App and Testing repos should be used 2020-04-23 17:04:29 -06:00
Xiang Xiao
ac880be495 build.yaml: Change arm-11 to arm-12
since arm-12 finish more quickly than arm-11

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2020-04-23 17:04:29 -06:00
Xiang Xiao
60ec2b408c build.yml: Remove the tail space
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2020-04-23 17:04:29 -06:00
Brennan Ashton
a1f1c53856 Add retry to pull docker image
Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
2020-04-23 17:04:29 -06:00
liuhaitao
0b8fe43a69 CI: refine checkpatch commits in check.yml
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
2020-04-23 17:04:29 -06:00
Ouss4
cb16dfbc30 Update release notes in preparation for the 9.0.0 release. 2020-04-19 20:02:46 -06:00
Gregory Nutt
4817a71d40 TODO: Remove simulator SMP bug
My understanding is the Xiao Xiang has corrected this problem so it should no longer be carried as a bug
2020-04-19 20:02:46 -06:00
Ouss4
8d3f953a31 tools/: Update version generation tools to account for the patch number. 2020-04-19 20:02:46 -06:00
Xiang Xiao
666d1d612f Fix typo in boards/arm/cxd56xx/drivers/camera/Make.defs
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2020-04-19 20:02:46 -06:00
Nathan Hartman
db52820e7c kinetis: Fix typos
arch/arm/include/kinetis/kinetis_pmc.h:

    * Fix several typos in comments.
    * Rewrap some comment lines.
    * Fix define KINETIS_PMC_VERSION_UKN: Put -1 in
      parenthesis for safety.
    * Fix nxstyle complaint regarding long line.
2020-04-18 09:09:56 -06:00
YAMAMOTO Takashi
8b4cfbbd85 doc: Update a few wiki references
It's my best guess because the old wiki URLs don't work anymore.
2020-04-18 09:09:40 -06:00
YAMAMOTO Takashi
028e03c99c doc: Fix semaphore related function names 2020-04-18 09:09:12 -06:00
liuhaitao
e4d5363935 Fix sixlowpan_framer.c build warnings under macos
sixlowpan/sixlowpan_framer.c:104:20: warning: unused function 'sixlowpan_saddrnull'
      [-Wunused-function]
static inline bool sixlowpan_saddrnull(FAR const uint8_t *saddr)
                   ^
sixlowpan/sixlowpan_framer.c:124:20: warning: unused function 'sixlowpan_eaddrnull'
      [-Wunused-function]
static inline bool sixlowpan_eaddrnull(FAR const uint8_t *eaddr)
                   ^
2 warnings generated.

Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
2020-04-17 19:45:59 -03:00
liuhaitao
a5540fdfb6 Fix sixlowpan_utils.c nxstyle complaints
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
2020-04-17 19:45:59 -03:00
liuhaitao
c269a6e7ad Fix sixlowpan build break with -Werror option under macos
sixlowpan/sixlowpan_utils.c:535:20: error: unused function 'sixlowpan_issaddrbased' [-Werror,-Wunused-function]
static inline bool sixlowpan_issaddrbased(const net_ipv6addr_t ipaddr,
                   ^
sixlowpan/sixlowpan_utils.c:543:20: error: unused function 'sixlowpan_iseaddrbased' [-Werror,-Wunused-function]
static inline bool sixlowpan_iseaddrbased(const net_ipv6addr_t ipaddr,
                   ^
2 errors generated.
make[1]: *** [sixlowpan_utils.o] Error 1

Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
2020-04-17 19:45:59 -03:00
19 changed files with 578 additions and 285 deletions

View File

@@ -14,101 +14,201 @@ name: Build
on:
pull_request:
push:
branches:
- master
- 'releases/*'
tags:
jobs:
Fetch-Source:
runs-on: ubuntu-latest
steps:
- name: Determine Target Branches
id: gittargets
shell: bash
run: |
TESTING_REF="master" # Always use master for testing
OS_REF=""
APPS_REF=""
REF=$GITHUB_REF
# If a base ref is set this is a PR and we will want to use
# the base ref instead of the ref that triggered the event
if [ ${GITHUB_BASE_REF} ]; then
REF=refs/heads/$GITHUB_BASE_REF
fi
echo "Working with ref: $REF"
# We modify for all tags and release branches
if [[ $REF =~ refs/heads/releases/*|refs/tags/* ]]; then
if [[ $REF =~ refs/heads/* ]]
then
REF_NAME=${REF##refs/heads/}
echo "Working with a branch: $REF_NAME"
else
REF_NAME=${REF##refs/tags/}
echo "Working with a tag: $REF_NAME"
fi
# Determine the repo and leave that unset to use the normal checkout behavior
# of using the merge commit instead of HEAD
case $GITHUB_REPOSITORY in
"apache/incubator-nuttx")
# OS
echo "Triggered by change in OS"
APPS_REF=$REF_NAME
;;
"apache/incubator-nuttx-apps" )
# APPS
OS_REF=$REF_NAME
echo "Triggered by change in APPS"
;;
*)
echo "Trigger by change on $GITHUB_REPOSITORY. This is unexpected."
;;
esac
fi
echo ::set-output name=os_ref::$OS_REF
echo ::set-output name=apps_ref::$APPS_REF
echo ::set-output name=testing_ref::$TESTING_REF
- name: Checkout nuttx repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx
ref: ${{ steps.gittargets.outputs.os_ref }}
path: sources/nuttx
fetch-depth: 1
- name: Checkout apps repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx-apps
ref: ${{ steps.gittargets.outputs.apps_ref }}
path: sources/apps
fetch-depth: 1
- name: Checkout testing repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx-testing
ref: ${{ steps.gittargets.outputs.testing_ref }}
path: sources/testing
fetch-depth: 1
- name: Create Source Bundle
run: tar -czf sources.tar.gz sources
- name: Archive Source Bundle
uses: actions/upload-artifact@v1
with:
name: source-bundle
path: sources.tar.gz
- name: Cache Source
id: cache-source
uses: actions/cache@v1
with:
path: sources
key: build-sources-${{ github.run_id }}
Linux:
runs-on: ubuntu-18.04
needs: Fetch-Source
runs-on: ubuntu-latest
env:
DOCKER_BUILDKIT: 1
strategy:
matrix:
boards: [arm-01, arm-02, arm-03, arm-04, arm-05, arm-06, arm-07, arm-08, arm-09, arm-10, arm-11, arm-12, arm-13, mips-riscv-x86-xtensa, sim]
boards: [arm-01, arm-02, arm-03, arm-04, arm-05, arm-06, arm-07, arm-08, arm-09, arm-10, arm-11, arm-12, arm-13, mips-riscv-x86-xtensa, sim]
steps:
- name: Checkout nuttx repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx
path: nuttx
fetch-depth: 0
- name: Fetch Cached Source
id: cache-source
uses: actions/cache@v1
with:
path: sources-cache
key: build-sources-${{ github.run_id }}
- name: Prevent Updating Source Cache
if: steps.cache-source.outputs.cache-hit == 'true'
run: mv sources-cache sources
- name: Download Source Artifact
if: steps.cache-source.outputs.cache-hit != 'true'
uses: actions/download-artifact@v1
with:
name: source-bundle
path: ./
- name: Extract Source Artifact
if: steps.cache-source.outputs.cache-hit != 'true'
run: tar -xf sources.tar.gz
- name: Fetch nuttx tags
run: |
cd nuttx
git fetch --tags
- name: Checkout apps repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx-apps
path: apps
fetch-depth: 0
- name: Checkout testing repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx-testing
path: testing
- name: Docker Login
uses: azure/docker-login@v1
with:
login-server: docker.pkg.github.com
username: ${GITHUB_ACTOR}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Run builds
uses: ./testing/.github/actions/ci-container
env:
BLOBDIR: /tools/blobs
with:
run: |
cd testing
./cibuild.sh -x -G testlist/${{matrix.boards}}.dat
- name: Docker Login
uses: azure/docker-login@v1
with:
login-server: docker.pkg.github.com
username: ${GITHUB_ACTOR}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker Pull
uses: nick-invision/retry@v1
with:
timeout_minutes: 10
max_attempts: 3
retry_wait_seconds: 10
command: docker pull docker.pkg.github.com/apache/incubator-nuttx-testing/nuttx-ci-linux
- name: Run builds
uses: ./sources/testing/.github/actions/ci-container
env:
BLOBDIR: /tools/blobs
with:
run: |
git -C sources/nuttx fetch --tags
cd sources/testing
./cibuild.sh -x -G testlist/${{matrix.boards}}.dat
macOS:
runs-on: macos-10.15
needs: Fetch-Source
strategy:
matrix:
boards: [arm-11, mips-riscv-x86-xtensa, sim]
boards: [arm-12, mips-riscv-x86-xtensa, sim]
steps:
- name: Checkout nuttx repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx
path: nuttx
fetch-depth: 0
- name: Fetch Cached Source
id: cache-source
uses: actions/cache@v1
with:
path: sources-cache
key: build-sources-${{ github.run_id }}
- name: Prevent Updating Source Cache
if: steps.cache-source.outputs.cache-hit == 'true'
run: mv sources-cache sources
- name: Download Source Artifact
if: steps.cache-source.outputs.cache-hit != 'true'
uses: actions/download-artifact@v1
with:
name: source-bundle
path: ./
- name: Extract Source Artifact
if: steps.cache-source.outputs.cache-hit != 'true'
run: tar -xf sources.tar.gz
- name: Fetch nuttx tags
run: |
cd nuttx
git fetch --tags
- name: Restore Tools Cache
id: cache-tools
uses: actions/cache@v1
env:
cache-name: ${{ runner.os }}-cache-tools
with:
path: prebuilt
key: ${{ runner.os }}-tools-${{ hashFiles('./sources/testing/cibuild.sh') }}
- name: Checkout apps repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx-apps
path: apps
fetch-depth: 0
- name: Checkout testing repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx-testing
path: testing
- name: Restore cache
id: cache-tools
uses: actions/cache@v1
env:
cache-name: ${{ runner.os }}-cache-tools
with:
path: prebuilt
key: ${{ runner.os }}-tools-${{ hashFiles('./testing/cibuild.sh') }}
- name: Run builds
run: |
cd testing
./cibuild.sh -i -x -G testlist/${{matrix.boards}}.dat
- name: Run Builds
run: |
git -C sources/nuttx fetch --tags
cd sources/testing
./cibuild.sh -i -x -G testlist/${{matrix.boards}}.dat

View File

@@ -30,8 +30,7 @@ jobs:
- name: Check Pull Request
run: |
cd nuttx
ranges=`git log -1 --merges --pretty=format:%P | awk -F" " '{ print $1 ".." $2 }'`
git log --oneline $ranges
commits=`git log --reverse --format=format:%H $ranges`
commits=`git log -1 --merges --pretty=format:%P | awk -F" " '{ print $1 ".." $2 }'`
git log --oneline $commits
echo "../nuttx/tools/checkpatch.sh -g $commits"
../nuttx/tools/checkpatch.sh -g $commits

View File

@@ -104,7 +104,7 @@
<tr align="center" bgcolor="#e4e4e4">
<td>
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
<p>Last Updated: November 21, 2019</p>
<p>Last Updated: April 16, 2020</p>
</td>
</tr>
</table>
@@ -120,7 +120,7 @@
<p>
<b>Goals</b>.
NuttX is a real timed embedded operating system (RTOS).
NuttX is a real time embedded operating system (RTOS).
Its goals are:
<p>
<center><table width="90%">
@@ -1450,11 +1450,13 @@
<h2>Released Versions</h2>
<p>
In addition to the ever-changing GIT repository, there are frozen released versions of NuttX available.
The current release is NuttX 8.2.
NuttX 8.2 is the 133<sup>rd</sup> release of NuttX.
It was released on November 16, 2019, and is available for download from the
<a href="https://bitbucket.org/nuttx/nuttx/downloads/">Bitbucket.org</a> website.
Note that the release consists of two tarballs: <code>nuttx-8.2.tar.gz</code> and <code>apps-8.2.tar.gz</code>.
The current release is NuttX 9.0.
NuttX 9.0 is the 134<sup>rd</sup> release of NuttX.
It was released on April 30, 2020, and is available for download from the
<a href="https://nuttx.apache.org/">nuttx.apache.org</a> website.
Note that the release consists of two tarballs:
<code>apache-nuttx-9.0.x-incubating.tar.gz</code> and
<code>apache-nuttx-apps-9.0.x-incubating.tar.gz</code>.
Both may be needed (see the top-level <code>nuttx/README.txt</code> file for build information).
</p>
@@ -1463,17 +1465,23 @@
<ul>
<li><b>nuttx</b>.
<ul><p>
Release notes for NuttX 8.2 are available <a href="https://bitbucket.org/nuttx/nuttx/downloads/">here</a>.
Release notes for all released versions on NuttX are available in the <a href="https://bitbucket.org/nuttx/nuttx/src/master/ReleaseNotes" target="_blank">Bitbucket GIT</a>.
The ChangeLog for all releases of NuttX is available in the ChangeLog file that can viewed in the <a href="https://bitbucket.org/nuttx/nuttx/src/master/ChangeLog" target="_blank">Bitbucket GIT</a>.
Release notes for all released versions on NuttX are available in <a href="https://github.com/apache/incubator-nuttx/blob/master/ReleaseNotes" target="_blank">GitHub</a>.
The ReleaseNotes for the current release is at the bottom of that file.
The ChangeLog for all releases of NuttX is available in the ChangeLog file
that can viewed in <a href="https://github.com/apache/incubator-nuttx/blob/master/ChangeLog" target="_blank">GitHub</a>.
The ChangeLog for the current release is at the bottom of that file.
</p>
</li></ul>
<li><b>apps</b>.
<ul><p>
Release notes for NuttX 8.2 are available <a href="https://bitbucket.org/nuttx/apps/downloads/">here</a>.
Release notes for all released versions on NuttX are available in the <a href="https://bitbucket.org/nuttx/nuttx/src/master/ReleaseNotes" target="_blank">Bitbucket GIT</a>
The ChangeLog for the all releases of <code>apps/</code> is available in the ChangeLog file that can viewed in the <a href="https://bitbucket.org/nuttx/apps/src/master/ChangeLog.txt" target="_blank">Bitbucket GIT</a>.
Release notes for all released versions on NuttX are available in <a
href="https://github.com/apache/incubator-nuttx/blob/master/ReleaseNotes"
target="_blank">GitHub</a>
The ReleaseNotes for the current release is at the bottom of that file.
The ChangeLog for all releases of <code>apps/</code> is available in the
ChangeLog file that can viewed in the <a
href="https://github.com/apache/incubator-nuttx/blob/master/ChangeLog"
target="_blank">GitHub</a>.
The ChangeLog for the current release is at the bottom of that file.
</p>
</li></ul>
@@ -1524,7 +1532,7 @@
<li><a href="#armcortexm0">ARM Cortex-M0/M0+</a> (13)</li>
<li><a href="#armcortexm3">ARM Cortex-M3</a> (39)</li>
<li><a href="#armcortexm4">ARM Cortex-M4</a> (59)</li>
<li><a href="#armcortexm7">ARM Cortex-M7</a> (14)</li>
<li><a href="#armcortexm7">ARM Cortex-M7</a> (15)</li>
</ul>
<li>Atmel AVR
<ul>
@@ -1575,6 +1583,8 @@
<ul>
<li><a href="#nr5mxx"> NEXT RISC-V NR5Mxx</a> (1)</li>
<li><a href="#gwgap8">GreenWaves GAP8 (1)</a></li>
<li><a href="#k210">Kendryte K210 (1)</a></li>
<li><a href="#artya7">Litex (1)</a></li>
</ul>
</li>
<li>Xtensa LX6:
@@ -1585,7 +1595,7 @@
<li>ZiLOG
<ul>
<li><a href="#zilogz16f">ZiLOG ZNEO Z16F</a> (2)</li>
<li><a href="#zilogez80acclaim">ZiLOG eZ80 Acclaim!</a> (1)</li>
<li><a href="#zilogez80acclaim">ZiLOG eZ80 Acclaim!</a> (4)</li>
<li><a href="#zilogz8encore">ZiLOG Z8Encore!</a> (2)</li>
<li><a href="#zilogz180">ZiLOG Z180</a> (1)</li>
<li><a href="#zilogz80">ZiLOG Z80</a> (2)</li>
@@ -2477,6 +2487,11 @@
While not ready for prodcution use, the Beaglebone Black port is functional and will be the basis for a more extensive development.
Additional work in progress to extend this port and more capable is anticipated in NuttX-7.29.
</li>
<li>
<b>NuttX-9.0</b>
CAN support was added.
Clock Configuration was added.
</li>
<li>
<b>NuttX-7.31</b>.
An LCD driver was added in NuttX-7.31.
@@ -2932,6 +2947,9 @@ nsh>
Current development efforts are focused on porting the NuttX window system (NX)
to work with the Evaluation Kits OLED display.
</p>
<p>
NuttX-9.0 added protected build support to the LM3S6965-ek.
</p>
<p><small>
<b>NOTE</b>: As it is configured now, you MUST have a network connected.
Otherwise, the NSH prompt will not come up because the Ethernet
@@ -3338,6 +3356,10 @@ nsh>
<b>NuttX-8.2</b>
Added PWM and TIM drivers for the G0. From Daniel Pereira Volpato.
</li>
<li>
<b>NuttX-9.0</b>
Added I2C support for F0, L0 and G0.
</li>
</p>
</td>
</tr>
@@ -5814,6 +5836,10 @@ Mem: 29232 5920 23312 23312
These unverfied drivers include: SPI, I2C, DMA, USB.
Also refer to the NuttX board <a href="https://bitbucket.org/nuttx/nuttx/src/master/boards/arm/samd5e5/metro-m4/README.txt" target="_blank">README</a> file for further information about the current state of the port.
</p>
<p>
Nuttx-9.0 added basic support for Microchip SAME54 Xplained Pro board.
An ethernet driver was also added to the SAME5x familly.
</p>
</td>
</tr>
@@ -5907,6 +5933,12 @@ Mem: 29232 5920 23312 23312
From Eduard Niesner contributed a PWM driver.
Added UID access from Valmantas Paliksa.
USB High speed driver was added for STM32F7 series by Ramtin Amin.
</p>
</li>
<li>
<p><b>NuttX-9.0</b>.
Added serial DMA support.
</p>
</li>
</ul>
</td>
@@ -6034,6 +6066,11 @@ Mem: 29232 5920 23312 23312
Added support for SDMMC and FLASH progmem. From David Sidrane.
</p>
</li>
<li>
<p><b>NuttX-9.0</b>.
Added QSPI support for the STM32H7.
</p>
</li>
</p>
</td>
</tr>
@@ -6112,6 +6149,9 @@ Mem: 29232 5920 23312 23312
<p><b>NuttX-8.2</b>.
An LCD drivers was added in NuttX-8.2 by Fabio Balzano.
</p>
<p><b>NuttX-9.0</b>.
Added USB Device support.
</p>
</li>
</ul>
</td>
@@ -6429,6 +6469,25 @@ Mem: 29232 5920 23312 23312
This is a great, stable starting point for anyone interested in fleshing out the x86 port!
Refer to the NuttX <a href="https://bitbucket.org/nuttx/nuttx/src/master/boards/x86/qemu/qemu-i486/README.txt" target="_blank">README</a> file for further information.
</p>
<p>
<b>QEMU/Intel64</b>
An x86_64 flat address port was ported in NuttX-9.0.
It consists of the following feautres:
<ul>
<li> - Runs in x86_64 long mode.</li>
<li> - Configurable SSE/AVX support.</li>
<li>- IRQs are managed by LAPIC(X2APIC) and IOAPIC.</li>
<li>- Used TSC_DEADLINE or APIC timer for systick.</li>
<li>- Pages are now maps the kernel at 4GB~, but changeable.</li>
</ul>
</p>
<p>
This kernel with ostest have been tested with
<ul>
<li>Qemu/KVM on a Xeon 2630v4 machine.</li>
<li>Bochs with broadwell_ult emulation.</li>
</ul>
</p>
</ul>
</td>
</tr>
@@ -6662,6 +6721,10 @@ Mem: 29232 5920 23312 23312
<b>NuttX-7.31</b>.
Abdelatif Guettouche contributed DMA support.
</p>
<p>
<b>NuttX-9.0</b>.
Cache operations were implemented.
</p>
</ul>
</p>
Refer to the NuttX board <a href="https://bitbucket.org/nuttx/nuttx/src/master/boards/mips/pic32mz/pic32mz-starterkit/README.txt" target="_blank">README</a> file for further information.
@@ -6779,6 +6842,9 @@ BFD_ASSERT (*plt_offset != (bfd_vma) -1);
<ul>
<li><b>NuttX-8.2</b></li>
Basic support for the RX65N family was released by Anjana with support for two boards: The RSK RX65N-2MB and the GR-Rose.
<li><b>NuttX-9.0</b>
RTC driver for the RX65N was added.
</li>
</ul>
</td>
</tr>
@@ -6805,6 +6871,15 @@ BFD_ASSERT (*plt_offset != (bfd_vma) -1);
The GAP8 features a RI5CY core called Fabric Controller(FC), and a cluster of 8 RI5CY cores that runs at a bit slower speed.
The GAP8 is an implementation of the opensource PULP platform, a Parallel-Ultra-Low-Power design.
</p>
<p>
<li><a href="#k210">Sipeed Maix bit</a></li>
Initial support for the Sipeed Maix bit board was added in Nuttx-9.0.
</p>
<p>
<a name="artya7"><b>Litex ARTY_A7</b></a>.
Support for the Digilent ARTY_A7 board along with CPU VexRiscV SOC were added
in NuttX-9.0.
</p>
</td>
</tr>
@@ -6876,12 +6951,13 @@ BFD_ASSERT (*plt_offset != (bfd_vma) -1);
<td>
<p>
<b>Zilog eZ80Acclaim! Microcontroller</b>.
There are three eZ80Acclaim! ports:
There are four eZ80Acclaim! ports:
</p>
<ul>
<li>The ZiLOG ez80f0910200kitg development kit.
<li>The ZiLOG ez80f0910200zcog-d development kit.
<li>The MakerLisp CPU board.
<li>The Z20x DIY computing system.
</ul>
<p>
All three boards are based on the eZ80F091 part and all use the Zilog ZDS-II
@@ -6912,6 +6988,14 @@ BFD_ASSERT (*plt_offset != (bfd_vma) -1);
A USB keyboard adapter provides for standard keyboard input.
Data storage and interchange is accomplished by a SPI-based micro-SD card.
</p>
<p>
<b>NuttX-9.0:</b>
Support for the Z20X board was added. The port includes:
- Initial support to have a functional nsh.
- Support for SPI and W25 FLASH.
- A bootloader capable of writing code to the W25 FLASH and load it to the
SRAM to be executed.
</p>
</ul>
</td>
</tr>

View File

@@ -2223,7 +2223,7 @@ priority of the calling task is returned.
<b>NOTE:</b>
Behavior of features related to <i>task group</i>s depend of NuttX configuration settings.
See the discussion of &quot;Parent and Child Tasks,&quot; below.
See also the <a href="http://www.nuttx.org/doku.php?id=wiki:nxinternal:nxtasking">NuttX Threading Wiki</a> page and the <a href="http://www.nuttx.org/doku.php?id=wiki:nxinternal:tasksnthreads">Tasks vs. Threads FAQ</a> for additional information on tasks and threads in NuttX.
See also the <a href="https://cwiki.apache.org/confluence/display/NUTTX/NuttX+Tasking">NuttX Tasking</a> page and the <a href="https://cwiki.apache.org/confluence/display/NUTTX/Tasks+vs.+Threads+FAQ">Tasks vs. Threads FAQ</a> for additional information on tasks and threads in NuttX.
</small></blockquote>
<p>
A <i>task group</i> terminates when the last thread within the group exits.
@@ -3920,7 +3920,7 @@ interface of the same name.
<pre>
#include &lt;semaphore.h&gt;
#include &lt;time.h&gt;
int sem_wait(sem_t *sem, const struct timespec *abstime);
int sem_timedwait(sem_t *sem, const struct timespec *abstime);
</pre>
<p>
@@ -3948,7 +3948,7 @@ interface of the same name.
<li>0 (<code>OK</code>), or -1 (<code>ERROR</code>) is unsuccessful
</ul>
<p>
If <code>sem_wait</code> returns -1 (<code>ERROR</code>) then the cause of the failure
If <code>sem_timedwait</code> returns -1 (<code>ERROR</code>) then the cause of the failure
will be indicated by the thread-specific <a href="#ErrnoAccess"><code>errno</code></a>.
The following lists the possible values for <a href="#ErrnoAccess"><code>errno</code></a>:
<p>
@@ -4006,7 +4006,7 @@ returns without blocking.
<ul>
<li>0 (<code>OK</code>) or -1 (<code>ERROR</code>) if unsuccessful
</ul>
If <code>sem_wait</code> returns -1 (<code>ERROR</code>) then the cause of the failure
If <code>sem_trywait</code> returns -1 (<code>ERROR</code>) then the cause of the failure
will be indicated by the thread-specific <a href="#ErrnoAccess"><code>errno</code></a>.
The following lists the possible values for <a href="#ErrnoAccess"><code>errno</code></a>:
<p>
@@ -4165,7 +4165,7 @@ Otherwise, an -1 (<code>ERROR</code>) will be returned and the <code>errno</code
<b>Returned Value:</b>
</p>
<p>
If successful, the <code>sem_getprotocol()</code> function will return zero (<code>OK</code>).
If successful, the <code>sem_setprotocol()</code> function will return zero (<code>OK</code>).
Otherwise, an -1 (<code>ERROR</code>) will be returned and the <code>errno</code> value will be set to indicate the nature of the error.
</p>
<p>
@@ -4936,7 +4936,7 @@ interface of the same name.
<blockquote><small>
<b>NOTE:</b>
Behavior of features related to <i>task group</i>s depend of NuttX configuration settings.
See the <a href="http://www.nuttx.org/doku.php?id=wiki:nxinternal:nxtasking">NuttX Threading Wiki</a> page and the <a href="http://www.nuttx.org/doku.php?id=wiki:nxinternal:tasksnthreads">Tasks vs. Threads FAQ</a> for additional information on tasks and threads in NuttX.
See also the <a href="https://cwiki.apache.org/confluence/display/NUTTX/NuttX+Tasking">NuttX Tasking</a> page and the <a href="https://cwiki.apache.org/confluence/display/NUTTX/Tasks+vs.+Threads+FAQ">Tasks vs. Threads FAQ</a> for additional information on tasks and threads in NuttX.
</small></blockquote>
<p>
<b>Signaling Multi-threaded Task Groups</b>.
@@ -5750,7 +5750,7 @@ be sent.
<blockquote><small>
<b>NOTE:</b>
Behavior of features related to <i>task group</i>s depend of NuttX configuration settings.
See the <a href="http://www.nuttx.org/doku.php?id=wiki:nxinternal:nxtasking">NuttX Threading Wiki</a> page and the <a href="http://www.nuttx.org/doku.php?id=wiki:nxinternal:tasksnthreads">Tasks vs. Threads FAQ</a> for additional information on tasks and threads in NuttX.
See also the <a href="https://cwiki.apache.org/confluence/display/NUTTX/NuttX+Tasking">NuttX Tasking</a> page and the <a href="https://cwiki.apache.org/confluence/display/NUTTX/Tasks+vs.+Threads+FAQ">Tasks vs. Threads FAQ</a> for additional information on tasks and threads in NuttX.
</small></blockquote>
<p>
The following pthread interfaces are supported in some form by NuttX:

View File

@@ -26618,3 +26618,151 @@ information):
fixes the violation of the portable POSIX OS interface, but also
permits use of ROM disks in PROTECTED and KERNEL modes. From
Gregory Nutt.
NuttX-9.0.0 Release Notes
-------------------------
This is the first release of NuttX as Apache NuttX (Incubating) and represents our first major milestone as a Podling of the Apache Software Foundation's Incubator. This release is the culmination of nearly 6 months of hard work and includes several new architectures and drivers, and numerous improvements and bug fixes to the core RTOS, drivers, and networking subsystems.
* Major Changes to Core OS
* Bugfixes
- nxsem_wait_uninterruptible() now returns if the task is canceled.
- Fix a bug in pthread_condwait() that was improperly re-initializing the mutex.
- In sched_setpriority(), fix functions called inside a DEBUGASSERT that were eliminated when assertions are disable
* Compatibility Concerns
- The configuration option CONFIG_CAN_PASS_STRUCT is now removed. Previously, it was used (at the cost of breaking standards support) to support older versions of the SDCC compiler that couldn't pass structs/unions as functions' parameters. A newer version of the compiler has resolved the issue.
* Major Changes to Build System
- Add a post-build function that allows extending the build with CPU/board-specific logic.
- Add build tools to simplify ZDS-II tool usage.
- mkexport.sh: Deal with ARCHSCRIPT containing multiple files.
- Various nxstyle improvements.
* Architectural Support
* New architecture support
- Add support for RISCV-64
- Add support for x86_64 (tested on QEMU)
- Add support for ELF64
- Add a port to the NUCLEO-F429ZI board
- Add support for the STM32H747I-DISCO board
- Add Z20X board support and bootloader to upload code from the W25 flash to SRAM
- Add initial support for Litex with softcore CPU VexRiscV SoC
- Add support for the Digilent ARTY_A7 board to test the Litex port
- Added initial support for Sipeed Maix Bit board with Kendryte K210 processor
- New architectural support: ez80f92
- Flat address x86_64 port of Nuttx
- Support to run NuttX on ESP32 QEMU
- Initial support for Sipeed Maix Bit board with Kendryte K210 processor
- Add initial support for Kendryte K210 processor in SMP mode
- NXP S32K11x (Cortex-M0+) and S32K14x (Cortext-M4F): Add support for NXP automotive boards.
- XMC 4700 (Cortex-M4F)
* Architectures with significant improvements
- ESP32 loadable modules support
- i.MX RT: FLEXIO clock config logic.
- Fix the clock configuration for the i.MX RT family
- i.MX RT: Add ability to run from OCRAM
- SAMA5D27 peripheral support - USB Host working
- z20x: Add W25 bootloader
- i.MX RT: Add USB Device support
- STM32, STM32F7, STM32H7 add SPI DMATHRESHOLD
- Improve the simulator timer
- 64-bit modules on macOS simulator
- z20x: Add XTP2046 SPI support; add timer support
- RX65N RTC Driver added
- NXP Freedom K28F Board SD-Card support
- STM32H7: support SDRAM via FMC peripheral
- LM3S6965-ek: Add PROTECTED build support
- STM32H7: Added IWDG and WWDG, power management (sleep/stop/standby), WKUP pin configuration
- SAMV71: Add read UID implementation and move flash functions to RAM
- i.MX RT: Fix interrupts storm (serial & I2C)
- Various fixes and cosmetic changes to the CxD56xx architecture
- Fix SiFive FE310 related code (comments, improve serial irq handling, initial int status)
- Implement QSPI for STM32H7
- Improvements for the nRF52 port: I2C, SPI, GPIO support
- Updates for LPC17xx/40xx serial
- Adds basic support for Microchip SAM E54 Xplained Pro board
- Adds an Ethernet driver for the SAME5x family (based on the SAMA5 GMAC driver)
- Add CDC ECM Ethernet over USB 2.0 High Speed (tested on SAMA5D36-Xplained board)
- Simulator: Reimplement simulator uart on top of serial driver framework
- NXP S32K1XX peripheral clock fixes
- Fix syscall stack alignment on armv7-m
- Fix flash_erase(page) when page >= 256 for STM32L4 family
- Add partial support for the NETLINK poll() operation.
- Add serial DMA support for STM32F7
- Add AM335x Clock Configuration
- Add I2C support for AM335x
- Add configuration to fine tune LPI2C Timeout for iMXRT
- Add CAN support to AM335x
- Add I2C support to STM32F0/L0/G0
- Kinetis LPC SDCard improvements
- Replace the busy polling with work_queue in the ethernet driver of simulator
- Fix Xtensa's SMP support to follow same logic from other SMP archs
- PIC32MZ: SPI transfers can be configured to use DMA.
- PIC32MZ: Implement cache operations.
* Driver Support
* New drivers
- New driver for the ADS7828 I2C analog to digital converter
- driver/ioexpander: New driver for PCA9538 I2C I/O expander
- New driver type for battery monitor ICs.
- Driver for the BQ769x0 battery monitor IC.
- Add Support for Quectel EC20 4G LTE Module USB CDC/ACM
- Add QSPI-based Winbond NOR FLASH driver
* Drivers with significant improvements
- Update all the drivers to check return value of nxsem_wait_uninterruptible().
- MCP9844 shutdown mode support
- fcntl: add O_CLOEXEC flag, add O_CLOEXEC/FD_CLOEXEC support
- CDC-ECM Ethernet over USB 2.0 HS
- smartfs improvements: Handling of duplicate sectors, support fsck to check and repair the smartfs file system, and recover SPI Flash from initial error state.
- Various fixes for USBDEV driver: Remove unnecessary reset logic, fix descriptor type mismatch when dual speed is enabled, fix invalid/unsupported command processing, and fix string ID calculation.
- Handle size zero in umm_malloc.c and umm_realloc.c, which causes a system freeze in kernel mode.
- Fixed compilation issue with poll fds notification.
- Report POLLHUP and POLLERR in 'revents' regardless the requested 'events' set.
* Networking
- Telnet: Fix/Refine CTRL+C to work on telnet
- TCP: Fix of faulty TCP sequence increments
- netdb: Fix netdb to query IPv4 and IPv6 addresses regardless the server address type
- Netlink sockets may be set to non-blocking
- Improve TUN and SLIP, refine Control+C Handling in Telnet
- Sockets: Add socket MSG_DONTWAIT support
- Network Loopback Driver: Add a configuration option to control packet size
- Network IOCTLs: Add FIONBIO network IOCTL support
- NFS: Support IPv4 and TCP
- Sockets: Add IP and TCP socket options needed by iperf3
- Netlink: Add support for asynchronous Netlink responses
- TCP: Monitor TCP_POLL/TCP_NEWDATA/TCP_BACKLOG per the request like UDP counterpart
- TCP: Minor design improvement to TCP delayed ACKs
- DNS IPv4/IPv6 Dual Host Support: When IPv4/IPv6 Dual Stack is enabled, queries both types of addresses regardless of whether the DNS server is accessed via IPv4 or IPv6. As a result, getaddrinfo() may return a mixed (IPv4/IPv6) address list.
* Applications
* Improvements
- Extend netutils and netinit to work with only Netlink sockets enabled
- Add getprime program to check multi-thread performance
- Improve zmodem send performance
- Add simple HTS221, LSM303 and LSM6DSL examples
- Improve to gs2200m wiki performance
- Improve telnet server and enable it to listen on both IPv4 and IPv6
- Improve ntpclient logic
- Improve wapi to save configuration to file system
- Improve wapi to skip associate if ssid is invalid
- Improve cmd_nfsmount to use IPv4 and IPv6
- Improve ostest for SMP and non-SMP configurations
- Improve UDP to avoid using standard symbols
- Improve dhcpd to include configurable timeout and retry count
* Bugfixes
- Correct format when printing ARP tablet entries
- Ensure /bin/ping and ping work at the same time
- Correct backward conditional logic in dhcpd_leaseexpired()
- Fix several problems on ftpd
- Fix dhcpd issue reported on Issue #17
- Fix sendmail example to run on a local SMTP server
- Fix buffer overflow on netlib
- Fix compile errors in loopback mode of the tcpblaster
- Fix stack corruption in ELF task test
- Fix errors in NoBlockRecv and BlockRecv tests of usrsocktest
- Fix ipforward IP Header issue for IPv4
- Fix wrongly swapped parity options of CU program
- Fix slcd to avoid using priv->fd before initializing it
- Fix (tcp, udp)blaster to build on macOS
- Correct the buffer type of base64 program

67
TODO
View File

@@ -1,4 +1,4 @@
NuttX TODO List (Last updated January 3, 2019)
NuttX TODO List (Last updated April 18, 2020)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This file summarizes known NuttX bugs, limitations, inconsistencies with
@@ -27,7 +27,7 @@ nuttx/:
(12) File system/Generic drivers (fs/, drivers/)
(10) Graphics Subsystem (graphics/)
(1) Build system / Toolchains
(3) Linux/Cygwin simulation (arch/sim)
(2) Linux/Cygwin simulation (arch/sim)
(5) ARM (arch/arm/)
apps/ and other Add-Ons:
@@ -2556,69 +2556,6 @@ o Linux/Cygwin simulation (arch/sim)
Status: Open
Priority: Low
Title: SMP SIMULATION ISSUES
Description: The configuration has basic support SMP testing. The simulation
supports the emulation of multiple CPUs by creating multiple
pthreads, each run a copy of the simulation in the same process
address space.
At present, the SMP simulation is not fully functional: It does
operate on the simulated CPU threads for a few context switches
then fails during a setjmp() operation. I suspect that this is
not an issue with the NuttX SMP logic but more likely some chaos
in the pthread controls. I have seen similar such strange behavior
other times that I have tried to use setjmp/longmp from a signal
handler! Like when I tried to implement simulated interrupts
using signals.
Apparently, if longjmp is invoked from the context of a signal
handler, the result is undefined:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1318.htm
You can enable SMP for ostest configuration by enabling:
-# CONFIG_EXPERIMENTAL is not set
+CONFIG_EXPERIMENTAL=y
+CONFIG_SPINLOCK=y
+CONFIG_SMP=y
+CONFIG_SMP_NCPUS=2
+CONFIG_SMP_IDLETHREAD_STACKSIZE=2048
You also must enable near-realtime-performance otherwise even long
timeouts will expire before a CPU thread even has a chance to
execute.
-# CONFIG_SIM_WALLTIME is not set
+CONFIG_SIM_WALLTIME=y
And you can enable some additional debug output with:
-# CONFIG_DEBUG_SCHED is not set
+CONFIG_DEBUG_SCHED=y
-# CONFIG_SCHED_INSTRUMENTATION is not set
+CONFIG_SCHED_INSTRUMENTATION=y
The NSH configuration can also be forced to run SMP, but
suffers from the same quirky behavior. I can be made
reliable if you modify arch/sim/src/up_idle.c so that
the IDLE loop only runs for CPU0. Otherwise, often
simuart_post() will be called from CPU1 and it will try
to restart NSH on CPU0 and, again, the same quirkiness
occurs.
But for example, this command:
nsh> sleep 1 &
will execute the sleep command on CPU1 which has worked
every time that I have tried it (which is not too many
times).
Status: Open
Priority: Low, SMP is important, but SMP on the simulator is not
o ARM (arch/arm/)
^^^^^^^^^^^^^^^

View File

@@ -83,8 +83,8 @@
* a way to label the versions we are using
*/
#define KINETIS_PMC_VERSION_UKN -1 /* What was in nuttx prior to 2/22/2017 */
#define KINETIS_PMC_VERSION_01 1 /* Verified Document Number: K60P144M150SF3RM Rev. 3, November 2014 */
#define KINETIS_PMC_VERSION_UKN (-1) /* What was in nuttx prior to 2/22/2017 */
#define KINETIS_PMC_VERSION_01 1 /* Verified to Document Number: K60P144M150SF3RM Rev. 3, November 2014 */
#define KINETIS_PMC_VERSION_04 4 /* Verified to Document Numbers:
* K20P64M72SF1RM Rev. 1.1, Dec 2012
* K64P144M120SF5RM Rev. 2, January 2014
@@ -136,13 +136,13 @@
/* PMC Register Configuration */
# define KINETIS_PMC_HAS_REGSC 1 /* SoC has REGSC Register */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# define KINETIS_PMC_HAS_REGSC_ACKISO 1 /* SoC has REGSC[ACKISO] */
# undef KINETIS_PMC_HAS_REGSC_VLPRS /* SoC has REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC has REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC has REGSC[REGFPM] */
# define KINETIS_PMC_HAS_REGSC_BGEN 1 /* SoC has REGSC[BGEN] */
# undef KINETIS_PMC_HAS_REGSC_TRAMPO /* SoC has REGSC[TRAMPO] */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# define KINETIS_PMC_HAS_REGSC_ACKISO 1 /* SoC has REGSC[ACKISO] */
# undef KINETIS_PMC_HAS_REGSC_VLPRS /* SoC does not have REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC does not have REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC does not have REGSC[REGFPM] */
# define KINETIS_PMC_HAS_REGSC_BGEN 1 /* SoC has REGSC[BGEN] */
# undef KINETIS_PMC_HAS_REGSC_TRAMPO /* SoC does not have REGSC[TRAMPO] */
# undef KINETIS_PMC_HAS_HVDSC1 /* SoC does not have HVDSC1 Register */
# undef KINETIS_PMC_HAS_SRAMCTL /* SoC does not have SRAMCTL Register */
@@ -160,20 +160,20 @@
#elif defined(CONFIG_ARCH_CHIP_MK28FN2M0VMI15) || defined(CONFIG_ARCH_CHIP_MK28FN2M0CAU15R)
/* Verified to Document Number: Verified to Document Number: K28P210M150SF5RM Rev. 4, August 2017 */
/* Verified to Document Number: K28P210M150SF5RM Rev. 4, August 2017 */
# define KINETIS_PMC_VERSION KINETIS_PMC_VERSION_05
/* PMC Register Configuration */
# define KINETIS_PMC_HAS_REGSC 1 /* SoC has REGSC Register */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# define KINETIS_PMC_HAS_REGSC_ACKISO 1 /* SoC has REGSC[ACKISO] */
# undef KINETIS_PMC_HAS_REGSC_VLPRS /* SoC has REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC has REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC has REGSC[REGFPM] */
# define KINETIS_PMC_HAS_REGSC_BGEN 1 /* SoC has REGSC[BGEN] */
# undef KINETIS_PMC_HAS_REGSC_TRAMPO /* SoC has REGSC[TRAMPO] */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# define KINETIS_PMC_HAS_REGSC_ACKISO 1 /* SoC has REGSC[ACKISO] */
# undef KINETIS_PMC_HAS_REGSC_VLPRS /* SoC does not have REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC does not have REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC does not have REGSC[REGFPM] */
# define KINETIS_PMC_HAS_REGSC_BGEN 1 /* SoC has REGSC[BGEN] */
# undef KINETIS_PMC_HAS_REGSC_TRAMPO /* SoC does not have REGSC[TRAMPO] */
# define KINETIS_PMC_HAS_HVDSC1 1 /* SoC has HVDSC1 Register */
# define KINETIS_PMC_HAS_SRAMCTL 1 /* SoC has SRAMCTL Register */
@@ -268,13 +268,13 @@
/* PMC Register Configuration */
# define KINETIS_PMC_HAS_REGSC 1 /* SoC has REGSC Register */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# define KINETIS_PMC_HAS_REGSC_ACKISO 1 /* SoC has REGSC[ACKISO] */
# undef KINETIS_PMC_HAS_REGSC_VLPRS /* SoC has REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC has REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC has REGSC[REGFPM] */
# undef KINETIS_PMC_HAS_REGSC_BGEN /* SoC has REGSC[BGEN] */
# undef KINETIS_PMC_HAS_REGSC_TRAMPO /* SoC has REGSC[TRAMPO] */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# define KINETIS_PMC_HAS_REGSC_ACKISO 1 /* SoC has REGSC[ACKISO] */
# undef KINETIS_PMC_HAS_REGSC_VLPRS /* SoC does not have REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC does not have REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC does not have REGSC[REGFPM] */
# undef KINETIS_PMC_HAS_REGSC_BGEN /* SoC does not have REGSC[BGEN] */
# undef KINETIS_PMC_HAS_REGSC_TRAMPO /* SoC does not have REGSC[TRAMPO] */
# undef KINETIS_PMC_HAS_HVDSC1 /* SoC does not have HVDSC1 Register */
# undef KINETIS_PMC_HAS_SRAMCTL /* SoC does not have SRAMCTL Register */
@@ -291,13 +291,13 @@
/* PMC Register Configuration */
# define KINETIS_PMC_HAS_REGSC 1 /* SoC has REGSC Register */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# define KINETIS_PMC_HAS_REGSC_ACKISO 1 /* SoC has REGSC[ACKISO] */
# undef KINETIS_PMC_HAS_REGSC_VLPRS /* SoC has REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC has REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC has REGSC[REGFPM] */
# define KINETIS_PMC_HAS_REGSC_BGEN 1 /* SoC has REGSC[BGEN] */
# undef KINETIS_PMC_HAS_REGSC_TRAMPO /* SoC has REGSC[TRAMPO] */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# define KINETIS_PMC_HAS_REGSC_ACKISO 1 /* SoC has REGSC[ACKISO] */
# undef KINETIS_PMC_HAS_REGSC_VLPRS /* SoC does not have REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC does not have REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC does not have REGSC[REGFPM] */
# define KINETIS_PMC_HAS_REGSC_BGEN 1 /* SoC has REGSC[BGEN] */
# undef KINETIS_PMC_HAS_REGSC_TRAMPO /* SoC does not have REGSC[TRAMPO] */
# undef KINETIS_PMC_HAS_HVDSC1 /* SoC does not have HVDSC1 Register */
# undef KINETIS_PMC_HAS_SRAMCTL /* SoC does not have SRAMCTL Register */
@@ -317,20 +317,20 @@
#elif defined(CONFIG_ARCH_CHIP_MK66FN2M0VMD18) || defined(CONFIG_ARCH_CHIP_MK66FX1M0VMD18) || \
defined(CONFIG_ARCH_CHIP_MK66FN2M0VLQ18) || defined(CONFIG_ARCH_CHIP_MK66FX1M0VLQ18)
/* Verified to Document Number: Document Number: K66P144M180SF5RMV2 Rev. 2, May 2015 */
/* Verified to Document Number: K66P144M180SF5RMV2 Rev. 2, May 2015 */
# define KINETIS_PMC_VERSION KINETIS_PMC_VERSION_04
/* PMC Register Configuration */
# define KINETIS_PMC_HAS_REGSC 1 /* SoC has REGSC Register */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# define KINETIS_PMC_HAS_REGSC_ACKISO 1 /* SoC has REGSC[ACKISO] */
# undef KINETIS_PMC_HAS_REGSC_VLPRS /* SoC has REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC has REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC has REGSC[REGFPM] */
# define KINETIS_PMC_HAS_REGSC_BGEN 1 /* SoC has REGSC[BGEN] */
# undef KINETIS_PMC_HAS_REGSC_TRAMPO /* SoC has REGSC[TRAMPO] */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# define KINETIS_PMC_HAS_REGSC_ACKISO 1 /* SoC has REGSC[ACKISO] */
# undef KINETIS_PMC_HAS_REGSC_VLPRS /* SoC does not have REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC does not have REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC does not have REGSC[REGFPM] */
# define KINETIS_PMC_HAS_REGSC_BGEN 1 /* SoC has REGSC[BGEN] */
# undef KINETIS_PMC_HAS_REGSC_TRAMPO /* SoC does not have REGSC[TRAMPO] */
# undef KINETIS_PMC_HAS_HVDSC1 /* SoC does not have HVDSC1 Register */
# undef KINETIS_PMC_HAS_SRAMCTL /* SoC does not have SRAMCTL Register */
@@ -339,20 +339,22 @@
# error "Unsupported Kinetis chip"
#endif
/* Use the catch all configuration for the PMC based on the implementations in nuttx prior 2/3/2017 */
/* Use the catch all configuration for the PMC based on the implementations in
* NuttX prior to 2/3/2017
*/
#if KINETIS_PMC_VERSION == KINETIS_PMC_VERSION_UKN
/* PMC Register Configuration */
# define KINETIS_PMC_HAS_REGSC 1 /* SoC has REGSC Register */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# undef KINETIS_PMC_HAS_REGSC_ACKISO /* SoC has REGSC[ACKISO] */
# define KINETIS_PMC_HAS_REGSC_VLPRS 1 /* SoC has REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC has REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC has REGSC[REGFPM] */
# undef KINETIS_PMC_HAS_REGSC_BGEN /* SoC has REGSC[BGEN] */
# define KINETIS_PMC_HAS_REGSC_TRAMPO 1 /* SoC has REGSC[TRAMPO] */
# define KINETIS_PMC_HAS_REGSC_REGONS 1 /* SoC has REGSC[REGONS] */
# undef KINETIS_PMC_HAS_REGSC_ACKISO /* SoC does not have REGSC[ACKISO] */
# define KINETIS_PMC_HAS_REGSC_VLPRS 1 /* SoC has REGSC[VLPRS] */
# undef KINETIS_PMC_HAS_REGSC_VLPO /* SoC does not have REGSC[VLPO] */
# undef KINETIS_PMC_HAS_REGSC_REGFPM /* SoC does not have REGSC[REGFPM] */
# undef KINETIS_PMC_HAS_REGSC_BGEN /* SoC does not have REGSC[BGEN] */
# define KINETIS_PMC_HAS_REGSC_TRAMPO 1 /* SoC has REGSC[TRAMPO] */
# undef KINETIS_PMC_HAS_HVDSC1 /* SoC does not have HVDSC1 Register */
# undef KINETIS_PMC_HAS_SRAMCTL /* SoC does not have SRAMCTL Register */

View File

@@ -18,7 +18,7 @@
#
############################################################################
ifeq ($(VIDEO_ISX012),y)
ifeq ($(CONFIG_VIDEO_ISX012),y)
CSRCS += isx012.c
endif

View File

@@ -211,12 +211,10 @@ struct mm_freenode_s
FAR struct mm_freenode_s *blink;
};
#if defined(CONFIG_BUILD_FLAT) || defined(__KERNEL__)
struct mm_delaynode_s
{
struct mm_delaynode_s *flink;
};
#endif
/* What is the size of the freenode? */
@@ -258,11 +256,9 @@ struct mm_heap_s
struct mm_freenode_s mm_nodelist[MM_NNODES];
#if defined(CONFIG_BUILD_FLAT) || defined(__KERNEL__)
/* Free delay list, for some situation can't do free immdiately */
struct mm_delaynode_s *mm_delaylist;
#endif
};
/****************************************************************************

View File

@@ -175,11 +175,9 @@ void mm_initialize(FAR struct mm_heap_s *heap, FAR void *heapstart,
heap->mm_nregions = 0;
#endif
#if defined(CONFIG_BUILD_FLAT) || defined(__KERNEL__)
/* Initialize mm_delaylist */
heap->mm_delaylist = NULL;
#endif
/* Initialize the node array */

View File

@@ -53,6 +53,7 @@
#ifdef CONFIG_NET_6LOWPAN
#ifdef CONFIG_WIRELESS_IEEE802154
/****************************************************************************
* Public Functions
****************************************************************************/
@@ -150,7 +151,6 @@ static inline bool sixlowpan_eaddrnull(FAR const uint8_t *eaddr)
*
****************************************************************************/
#ifdef CONFIG_WIRELESS_IEEE802154
int sixlowpan_meta_data(FAR struct radio_driver_s *radio,
FAR const struct ieee802_txmetadata_s *pktmeta,
FAR struct ieee802154_frame_meta_s *meta)

View File

@@ -113,17 +113,18 @@
* sixlowpan_eaddrfromip() handle short and extended addresses,
* respectively.
*
* 128 112 96 80 64 48 32 16
* ---- ---- ---- ---- ---- ---- ---- ----
* fe80 0000 0000 0000 0000 00ff fe00 xx00 1-byte short address IEEE 48-bit MAC
* xxxx 0000 0000 0000 0000 00ff fe00 xxxx 2-byte short address IEEE 48-bit MAC
* xxxx 0000 0000 0000 xxxx xxxx xxxx xxxx 8-byte extended address IEEE EUI-64
* 128 112 96 80 64 48 32 16
* ---- ---- ---- ---- ---- ---- ---- ----
* fe80 0000 0000 0000 0000 00ff fe00 xx00 1-byte short address 48-bit MAC
* xxxx 0000 0000 0000 0000 00ff fe00 xxxx 2-byte short address 48-bit MAC
* xxxx 0000 0000 0000 xxxx xxxx xxxx xxxx 8-byte extended address EUI-64
*
****************************************************************************/
#ifndef CONFIG_NET_STARPOINT
#ifdef HAVE_BYTEADDR
static void sixlowpan_baddrfromip(const net_ipv6addr_t ipaddr, FAR uint8_t *baddr)
static void sixlowpan_baddrfromip(const net_ipv6addr_t ipaddr,
FAR uint8_t *baddr)
{
/* Big-endian uint16_t to byte order */
@@ -132,7 +133,8 @@ static void sixlowpan_baddrfromip(const net_ipv6addr_t ipaddr, FAR uint8_t *badd
#endif
#ifdef HAVE_SADDR
static void sixlowpan_saddrfromip(const net_ipv6addr_t ipaddr, FAR uint8_t *saddr)
static void sixlowpan_saddrfromip(const net_ipv6addr_t ipaddr,
FAR uint8_t *saddr)
{
/* Big-endian uint16_t to byte order */
@@ -142,7 +144,8 @@ static void sixlowpan_saddrfromip(const net_ipv6addr_t ipaddr, FAR uint8_t *sadd
#endif
#ifdef HAVE_EADDR
static void sixlowpan_eaddrfromip(const net_ipv6addr_t ipaddr, FAR uint8_t *eaddr)
static void sixlowpan_eaddrfromip(const net_ipv6addr_t ipaddr,
FAR uint8_t *eaddr)
{
FAR uint8_t *eptr = eaddr;
int i;
@@ -169,10 +172,10 @@ static void sixlowpan_eaddrfromip(const net_ipv6addr_t ipaddr, FAR uint8_t *eadd
*
* Description:
* sixlowpan_nexthopaddr(): If the destination is on-link, extract the
* IEEE 802.15.14 destination address from the destination IP address. If the
* destination is not reachable directly, use the routing table (if available)
* or fall back to the default router IP address and use the router IP address
* to derive the IEEE 802.15.4 MAC address.
* IEEE 802.15.14 destination address from the destination IP address.
* If the destination is not reachable directly, use the routing table
* (if available) or fall back to the default router IP address and use
* the router IP address to derive the IEEE 802.15.4 MAC address.
*
****************************************************************************/
@@ -230,13 +233,13 @@ int sixlowpan_nexthopaddr(FAR struct radio_driver_s *radio,
* handles a tagged address union which may either a short or and
* extended destination address.
*
* 128 112 96 80 64 48 32 16
* ---- ---- ---- ---- ---- ---- ---- ----
* ffxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Multicast address (RFC 3513)
* ff02 0000 0000 0000 0000 0000 0000 0001 All nodes multicast group
* xxxx 0000 0000 0000 0000 00ff fe00 xx00 1-byte short address IEEE 48-bit MAC
* xxxx 0000 0000 0000 0000 00ff fe00 xxxx 2-byte short address IEEE 48-bit MAC
* xxxx 0000 0000 0000 xxxx xxxx xxxx xxxx 8-byte extended address IEEE EUI-64
* 128 112 96 80 64 48 32 16
* ---- ---- ---- ---- ---- ---- ---- ----
* ffxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Multicast address (RFC 3513)
* ff02 0000 0000 0000 0000 0000 0000 0001 All nodes multicast group
* xxxx 0000 0000 0000 0000 00ff fe00 xx00 1-byte short address 48-bit MAC
* xxxx 0000 0000 0000 0000 00ff fe00 xxxx 2-byte short address 48-bit MAC
* xxxx 0000 0000 0000 xxxx xxxx xxxx xxxx 8-byte extended address EUI-64
*
* In the case there the IEEE 802.15.4 node functions as an endpoint in a
* start topology, the destination address will, instead, be the address
@@ -310,8 +313,9 @@ int sixlowpan_destaddrfromip(FAR struct radio_driver_s *radio,
/* Otherwise, the destination MAC address is encoded in the IP address */
/* If the address is link-local, or matches the prefix of the local address,
* the interface identifier can be extracted from the lower bits of the address.
/* If the address is link-local, or matches the prefix of the local
* address, the interface identifier can be extracted from the lower
* bits of the address.
*/
if (!sixlowpan_islinklocal(ipaddr) &&
@@ -414,11 +418,11 @@ int sixlowpan_destaddrfromip(FAR struct radio_driver_s *radio,
* address from an IEEE802.15.4 short address (saddr), extended address
* (eaddr), or other variable length radio addresses.
*
* 128 112 96 80 64 48 32 16
* ---- ---- ---- ---- ---- ---- ---- ----
* fe80 0000 0000 0000 0000 00ff fe00 xx00 1-byte short address IEEE 48-bit MAC
* fe80 0000 0000 0000 0000 00ff fe00 xxxx 2-byte short address IEEE 48-bit MAC
* fe80 0000 0000 0000 xxxx xxxx xxxx xxxx 8-byte extended address IEEE EUI-64
* 128 112 96 80 64 48 32 16
* ---- ---- ---- ---- ---- ---- ---- ----
* fe80 0000 0000 0000 0000 00ff fe00 xx00 1-byte short address 48-bit MAC
* fe80 0000 0000 0000 0000 00ff fe00 xxxx 2-byte short address 48-bit MAC
* fe80 0000 0000 0000 xxxx xxxx xxxx xxxx 8-byte extended address EUI-64
*
****************************************************************************/
@@ -514,11 +518,11 @@ void sixlowpan_ipfromaddr(FAR const struct netdev_varaddr_s *addr,
* IEEE802.15.4 MAC addresses. sixlowpan_destaddrfromip() is intended to
* handle a tagged address or any size.
*
* 128 112 96 80 64 48 32 16
* ---- ---- ---- ---- ---- ---- ---- ----
* fe80 0000 0000 0000 0000 00ff fe00 xx00 1-byte short address IEEE 48-bit MAC
* fe80 0000 0000 0000 0000 00ff fe00 xxxx 2-byte short address IEEE 48-bit MAC
* fe80 0000 0000 0000 xxxx xxxx xxxx xxxx 8-byte extended address IEEE EUI-64
* 128 112 96 80 64 48 32 16
* ---- ---- ---- ---- ---- ---- ---- ----
* fe80 0000 0000 0000 0000 00ff fe00 xx00 1-byte short address 48-bit MAC
* fe80 0000 0000 0000 0000 00ff fe00 xxxx 2-byte short address 48-bit MAC
* fe80 0000 0000 0000 xxxx xxxx xxxx xxxx 8-byte extended address EUI-64
*
****************************************************************************/
@@ -532,6 +536,7 @@ static inline bool sixlowpan_isbytebased(const net_ipv6addr_t ipaddr,
}
#endif
#ifdef HAVE_SADDR
static inline bool sixlowpan_issaddrbased(const net_ipv6addr_t ipaddr,
FAR const uint8_t *saddr)
{
@@ -539,7 +544,9 @@ static inline bool sixlowpan_issaddrbased(const net_ipv6addr_t ipaddr,
ipaddr[6] == HTONS(0xfe00) &&
ipaddr[7] == *(uint16_t *)saddr);
}
#endif
#ifdef HAVE_EADDR
static inline bool sixlowpan_iseaddrbased(const net_ipv6addr_t ipaddr,
FAR const uint8_t *eaddr)
{
@@ -554,6 +561,7 @@ static inline bool sixlowpan_iseaddrbased(const net_ipv6addr_t ipaddr,
ipaddr[6] == *(uint16_t *)(eaddr + 4) &&
ipaddr[7] == *(uint16_t *)(eaddr + 6));
}
#endif
bool sixlowpan_ismacbased(const net_ipv6addr_t ipaddr,
FAR const struct netdev_varaddr_s *addr)
@@ -649,7 +657,9 @@ int sixlowpan_src_panid(FAR struct radio_driver_s *radio,
return ret;
}
/* MAC802154 gives us PAN ID in Little Endinan Order, but we need it in Network Order */
/* MAC802154 gives us PAN ID in Little Endinan Order, but we need
* it in Network Order.
*/
panid[0] = arg.u.getreq.attrval.mac.panid[1];
panid[1] = arg.u.getreq.attrval.mac.panid[0];

View File

@@ -50,7 +50,7 @@ ifneq ($(GIT_DIR),y)
# In case the version file does not exist
CONFIG_VERSION_STRING ?= "0.0"
CONFIG_VERSION_STRING ?= "0.0.0"
CONFIG_VERSION_BUILD ?= "0"
VERSION_ARG = -v $(CONFIG_VERSION_STRING) -b $(CONFIG_VERSION_BUILD)

View File

@@ -44,9 +44,10 @@ include $(TOPDIR)\tools\Config.mk
# In case .version file does not exist
CONFIG_VERSION_STRING ?= "0.0"
CONFIG_VERSION_STRING ?= "0.0.0"
CONFIG_VERSION_MAJOR ?= 0
CONFIG_VERSION_MINOR ?= 0
CONFIG_VERSION_PATCH ?= 0
CONFIG_VERSION_BUILD ?= "0"
# Control build verbosity
@@ -255,6 +256,7 @@ $(TOPDIR)\.version:
$(Q) echo CONFIG_VERSION_STRING="0" > .version
$(Q) echo CONFIG_VERSION_MAJOR=0 >> .version
$(Q) echo CONFIG_VERSION_MINOR=0 >> .version
$(Q) echo CONFIG_VERSION_PATCH=0 >> .version
$(Q) echo CONFIG_VERSION_BUILD="0" >> .version
include\nuttx\version.h: $(TOPDIR)\.version tools\mkversion$(HOSTEXEEXT)

View File

@@ -207,11 +207,11 @@ mkconfigvars.sh
$ tools/mkconfigvars.sh -h
tools/mkconfigvars.sh is a tool for generation of configuration variable documentation
USAGE: tools/mkconfigvars.sh [-d|h] [-v <major.minor>]
USAGE: tools/mkconfigvars.sh [-d|h] [-v <major.minor.patch>]
Where:
-v <major.minor>
The NuttX version number expressed as a major and minor number separated
-v <major.minor.patch>
The NuttX version number expressed as a major, minor and patch number separated
by a period
-d
Enable script debug
@@ -1129,11 +1129,11 @@ zipme.sh
Any VCS files or directories are excluded from the final tarballs.
$ ./tools/zipme.sh -h
USAGE="USAGE: ./tools/zipme.sh [-d|h|v|s] [-b <build]> [-e <exclude>] [-k <key-id>] <major.minor>"
USAGE="USAGE: ./tools/zipme.sh [-d|h|v|s] [-b <build]> [-e <exclude>] [-k <key-id>] <major.minor.patch>"
Examples:
./tools/zipme.sh -s 9.0
Create version 9.0 tarballs and sign them.
./tools/zipme.sh -s -k XXXXXX 9.0
./tools/zipme.sh -s 9.0.0
Create version 9.0.0 tarballs and sign them.
./tools/zipme.sh -s -k XXXXXX 9.0.0
Same as above but use the key-id XXXXXX to sign the tarballs
./tools/zipme.sh -e "*.swp tmp" 9.0
Create the tarballs but exclude any *.swp file and the "tmp" directory.
./tools/zipme.sh -e "*.swp tmp" 9.0.0
Create the tarballs but exclude any .swp file and the "tmp" directory.

View File

@@ -32,7 +32,7 @@
# POSSIBILITY OF SUCH DAMAGE.
#
USAGE="USAGE: $0 [-d|h] [-v <major.minor>]"
USAGE="USAGE: $0 [-d|h] [-v <major.minor.patch>]"
ADVICE="Try '$0 -h' for more information"
unset VERSION
@@ -52,8 +52,8 @@ while [ ! -z "$1" ]; do
echo $USAGE
echo ""
echo "Where:"
echo " -v <major.minor>"
echo " The NuttX version number expressed as a major and minor number separated"
echo " -v <major.minor.patch>"
echo " The NuttX version number expressed as a major, minor and patch number separated"
echo " by a period"
echo " -d"
echo " Enable script debug"

View File

@@ -88,7 +88,7 @@ int main(int argc, char **argv, char **envp)
exit(2);
}
stream= fopen(filepath, "r");
stream = fopen(filepath, "r");
if (!stream)
{
fprintf(stderr, "open %s failed: %s\n", filepath, strerror(errno));
@@ -99,7 +99,9 @@ int main(int argc, char **argv, char **envp)
printf("#ifndef __INCLUDE_NUTTX_VERSION_H\n");
printf("#define __INCLUDE_NUTTX_VERSION_H\n\n");
generate_definitions(stream);
printf("\n#define CONFIG_VERSION ((CONFIG_VERSION_MAJOR << 8) | (CONFIG_VERSION_MINOR))\n\n");
printf("\n#define CONFIG_VERSION ((CONFIG_VERSION_MAJOR << 16) |\\\n"
" (CONFIG_VERSION_MINOR << 8) |\\\n"
" (CONFIG_VERSION_PATCH))\n\n");
printf("#endif /* __INCLUDE_NUTTX_VERSION_H */\n");
fclose(stream);

View File

@@ -36,7 +36,7 @@ WD=`pwd`
# Get command line parameters
USAGE="USAGE: $0 [-d|-h] [-b <build>] [-v <major.minor>] <outfile-path>"
USAGE="USAGE: $0 [-d|-h] [-b <build>] [-v <major.minor.patch>] <outfile-path>"
ADVICE="Try '$0 -h' for more information"
unset VERSION
@@ -69,9 +69,9 @@ while [ ! -z "$1" ]; do
echo " Enable script debug"
echo " -h"
echo " show this help message and exit"
echo " -v <major.minor>"
echo " The NuttX version number expressed as a major and minor number separated"
echo " by a period"
echo " -v <major.minor.patch>"
echo " The NuttX version number expressed as a major, minor and patch"
echo " number seperated by a period"
echo " <outfile-path>"
echo " The full path to the version file to be created"
exit 0
@@ -87,6 +87,12 @@ OUTFILE=$1
if [ -z ${VERSION} ] ; then
VERSION=`git tag --sort=taggerdate | tail -1 | cut -d'-' -f2`
# Earlier tags used the format "major.minor", append a "0" for a patch.
if [[ ${VERSION} =~ ^([0-9]+[\.][0-9]+)$ ]] ; then
VERSION=${VERSION}.0
fi
fi
# Make sure we know what is going on
@@ -102,19 +108,27 @@ if [ -z ${OUTFILE} ] ; then
echo "Missing path to the output file"
echo $USAGE
echo $ADVICE
exit 1
exit 2
fi
# Get the major and minor version numbers
# Get the major, minor and patch version numbers
MAJOR=`echo ${VERSION} | cut -d'.' -f1`
if [ "X${MAJOR}" = "X${VERSION}" ]; then
echo "Missing minor version number"
echo $USAGE
echo $ADVICE
exit 2
exit 3
fi
MINOR=`echo ${VERSION} | cut -d'.' -f2`
if [ "X${MAJOR}.${MINOR}" = "X${VERSION}" ]; then
echo "Missing patch version number"
echo $USAGE
echo $ADVICE
exit 4
fi
PATCH=`echo ${VERSION} | cut -d'.' -f3`
# Get GIT information (if not provided on the command line)
@@ -122,7 +136,7 @@ if [ -z "${BUILD}" ]; then
BUILD=`git log --oneline -1 | cut -d' ' -f1 2>/dev/null`
if [ -z "${BUILD}" ]; then
echo "GIT version information is not available"
exit 3
exit 5
fi
if [ -n "`git diff-index --name-only HEAD | head -1`" ]; then
BUILD=${BUILD}-dirty
@@ -137,4 +151,5 @@ echo "" >>${OUTFILE}
echo "CONFIG_VERSION_STRING=\"${VERSION}\"" >>${OUTFILE}
echo "CONFIG_VERSION_MAJOR=${MAJOR}" >>${OUTFILE}
echo "CONFIG_VERSION_MINOR=${MINOR}" >>${OUTFILE}
echo "CONFIG_VERSION_PATCH=${PATCH}" >>${OUTFILE}
echo "CONFIG_VERSION_BUILD=\"${BUILD}\"" >>${OUTFILE}

View File

@@ -50,7 +50,7 @@ EXCLPAT="
"
# Get command line parameters
USAGE="USAGE: $0 [-d|h|v|s] [-b <build]> [-e <exclude>] [-k <key-id>] <major.minor>"
USAGE="USAGE: $0 [-d|h|v|s] [-b <build]> [-e <exclude>] [-k <key-id>] <major.minor.patch>"
ADVICE="Try '$0 -h' for more information"
unset VERSION
@@ -104,8 +104,8 @@ while [ ! -z "$1" ]; do
echo " PGP sign the final tarballs and create digests."
echo " -k"
echo " PGP key ID. If not provided the default ID will be used."
echo " <major.minor>"
echo " The NuttX version number expressed as a major and minor number separated"
echo " <major.minor.patch>"
echo " The NuttX version number expressed as a major, minor and patch number separated"
echo " by a period"
exit 0
;;