NuttXは、オープンソース、深く埋め込まれ、リソースに制約のある環境で使用できるようにオフセットから設計、決定論と自由リアルタイム組み込みオペレーティングシステム(RTOS)、です。これは、マイクロコントローラ環境で使用できる小さなフットプリントを持っており、それ’組み込み(32ビット)システムを緩和するために、小型から(8ビット)完全にスケーラブルです。
また、標準に完全に準拠するために、完全にリアルタイムであること、そして完全にオープンであることを目指しています。 NuttXは豊富な機能OSセット、モジュラーデザインを持って、それは非常にスケーラブルかつ構成だけでなく、標準規格に準拠しています。これは、非限定のBSDライセンスで配布されています。 glanceKey機能で「小さなLinuxの。 "特長は、コアタスク管理、BSDソケットインタフェース、メモリアロケータ(プロセスごとの共有メモリ、標準のヒープメモリ割り当て、CPUとのビルドを保護し、フラットな組み込みビルドが含まれるように、それは多くの場合、その開発者がダビングされましたヒープ、顆粒アロケータと動的にサイズ)、メモリ構成、ポーティングガイド、完全にプリエンプティブ、ティックレス動作、オンデマンドページングおよびシステムロギング。
また、プロジェクトは、プリエンプション、スレッドごとの、内蔵のCPU負荷測定、包括的なドキュメント、アドレス環境、ANSI様およびPOSIXのようなタスクコントロールを含む任意のタスク、時計、pthreadの、環境を管理するための拡張機能が付属しています変数、シグナル、指定されたメッセージキュー、タイマー、ファイルシステムおよび計数セマフォ。
他の機能の中で、我々は言及することができ、ラウンドロビンスケジューリング、FIFO、優先度継承、SoCのアーキテクチャのサポート、ボード·アーキテクチャーをサポート、新しいプロセッサアーキテクチャーをサポート、ウォッチドッグタイマ、VxWorksのようなタスク管理、I / Oリダイレクションをサポートし、送信“端子を制御する” platformsNuttXサポートは、我々は、ARMのCortex-M3、ARM926EJS、ARM7TDMI、ARMのCortex-M4、ARMのCortex-M0、ARM920TとARMを含む多数のARMプロセッサを、言及することができ、その中のハードウェア·プラットフォームを幅広くサポートのCortex-A5と同様に、アトメルの8ビットAVR、フリースケールM68HCS12、AVR32 AtmelのAVRプラットフォーム。
86、ザイログZ80、ザイログZ16F、ザイログZ8Encore含むザイログプラットフォーム、;さらに、それはまた、このようなマイクロチップPIC32MX(MIPS)、80c52と80倍のような種々のIntelプラットフォームをサポートしています!とザイログeZ80アクレイム!,およびルネサス/日立のSuperHおよびルネサスM16C / 26プラットフォーム
このリリースの新機能:
この特長:追加の新機能と拡張機能:
コアOS:
ウォッチドッグタイマの割り当て:私たちは、事前に割り当てられたウォッチドッグ時間が不足した場合は(1)、論理は今ヒープから追加のタイマーを割り当てます。常に割り込みハンドラで使用可能なタイマーがありますように、事前に割り当てられたウォッチドッグタイマの引当金が維持されます。 (2)静的に割り当てられたウォッチドッグタイマのサポートが追加されました
環境のサポートに対応しています(2)新OSのAPIは、すべてのプラットフォーム固有のコンテキストスイッチングロジック(up_block_task()、up_unblock_task()、_exit()、など)に統合されています。
カーネル構築のサポート:(1)MPUベース"カーネルのビルド"保護されたビルド(CONFIG_BUILD_PROTECTED)に改名。のサポートが追加された新しいMMUベース"カーネルのビルド" (CONFIG_BUILD_KERNEL)は、(2)システムコールライブラリは、現在CONFIG_NUTTX_KERNELで構築することができます。新しい選択*:CONFIG_LIB_SYSCALL。
システムの起動:(メモリのアドレスに対して)ファイルシステム上のプログラムからシステムを起動するための設定オプションを追加します。
スタートアップパラメータの受渡し:構成に応じて、新しいタスクにパラメータを渡すには、2つの方法がありました:どちらかが(1)のargv [] strdup'ed各文字列を配列として作成しました。新しいタスクが開始される前に、または(2)のargv []配列や文字列は、スタック上に作成されました。今、唯一の方法、方法(2)があります。 (1)の方法は、わずかによりコンパクトであるかもしれないが、これは同じことをやって、2つの方法の複雑さを運ぶ価値はありません。
ボードの初期化:個別のワーカースレッドで最初のボードの初期化を実行する機能を追加します。初期化ロジックは、起動/ IDLEスレッド上で実行することはできません多くの場合があるので、これが必要になります。ブロックまたは待機中のアイドルスレッドに許可されていないためです。
メモリ管理:
顆粒アロケータ:(1)顆粒ヒープ内の未割り当て可能領域を確保するための新しい機能を追加します。 (2)未初期化顆粒アロケータをサポートするためのインタフェースを追加します。
ページアロケータ:既存NuttX顆粒アロケータに基づく単純な物理ページアロケータを追加します。顆粒アロケータは長距離での使用のために十分に決定論的であるかどうかは定かでないですが、それは非常に迅速にテストするための場所でページアロケータを取得します。
CONFIG_MM_MULTIHEAPを削除:非multiheap操作はサポートされなくなりました。
sbrkの():sbrkの()は、現在動的にサイズ、プロセスごとのヒープを可能にするために、カーネルのビルドでサポートされています。
プロセスごとのヒープ:プロセスデータ·スペースの先頭のスペースは現在、ユーザーのヒープ管理構造のために予約されています。カーネル構築モードでは、これらのヒープ構造は、ユーザー固有のデータを割り当てるためにカーネルと使用のコードの間で共有されています。
ユーザーヒープ管理:特権スレッドが終了するが、我々はメモリを解放するために、カーネルアロケータを使用する必要があります。権限のないスレッドが終了するが、我々は何もする必要はありませんときにアドレス環境が切断されたときに...ヒープメモリがクリーンアップされます。
プロセス間共有メモリのサポート:(1)(たshmgetの実装とドキュメントの追加)、shmctl()、にshmat()、およびにshmdt()。 (2)追加のシステムは、システムの共有メモリ·インタフェースへのユーザのコールゲートをサポートするために呼び出します。 (3)共有メモリ機能をサポートするために必要なプラットフォーム固有のインタフェース定義を追加します。
仮想ページの割り当て:プロセスごとの仮想ページアロケータのサポートを追加します。これはtask_group_s構造の新しいメンバーです。新しいユーザプロセスが開始されるとアロケータは初期化されなければならず、未初期化プロセスのグループが最終的に破壊された場合。これは、共有物理メモリをマップするために上に仮想アドレスを選択するにshmat()とにshmdt()によって使用されます。
ファイルシステム/ブロック·ドライバ/ MTD:
SMART FS:SMART FSとケンペティットからSMART FSのprocfs更新。
MTD:MTD先読み/書き込みバッファ層が表示されますが正しく機能するようになり。
バイナリフォーマット:
プロセスごとのヒープ:各ユーザプロセスが開始されたときにプロセスごとのユーザーのヒープを初期化するためのロジックを追加します。
グラフィックス:
NxTerm:NxTermにNxConsoleのすべての出現箇所を変更します。
ネットワーク:
PHYは割り込み:(1)PHY割り込みアタッチメントインタフェースを標準化。 (2)PHY割り込みによって合図ネットワークの状態に変化があったときにアプリケーションに通知するために使用することができるIOCTLのサポートを追加。
改善された送信ロジック:過去には、最初のパケットが失敗する新しいネットワークピアに送信。そこにピアのARPテーブルにエントリしないであろうと、そのARP要求は、最初のパケットを交換することができます。ピアMACアドレスがARPテーブルにあると、そうでない場合、(2)のマッピングを取得するために定期的にARP要求を送信し、(3)のために待っていれば今CONFIG_NET_ARP_SEND = yの場合、オプションとして、すべてのロジックを送信(1)をチェックしますARP応答。 ARP応答を受信したときに(4)実際の送信ロジックが開始されます。したがって、そこに新しいピアに送信された最初のパケットで遅延することができるが、パケットが失われてはなりません
シミュレーションをホスト:
SPIフラッシュドライバ:ケン·ペティットからSIMターゲットのSPIフラッシュドライバをエミュレート。
インテルのx86:
デフォルトのホストは、デフォルトのホストは現在、x86_64版であり、シミュレーションのビルドのために-m32オプションが自動的に選択されます。
インテル8051ファミリ:
8051削除された:NuttXソースツリーからの8051ファミリのアーキテクチャのためのすべてのサポートを削除しました。除去パッチと共に廃止コードは今のmisc /廃止/で見ることができます。 (1)一部の機能は、そのハードウェアスタックで、私は8051にNuttXのいずれか本当に成功したポートを認識していないですし、(2)8051、実証されているが、他のアーキテクチャに制限し、合併症を強制するため、このコードは削除されましたとNuttXの成長と発展をより複雑にします。
ザイログZNeoボード:
コンフィグ/ 16Z:このボードのサポートがNuttXソースツリーから削除されました(それでも雑貨/廃止ディレクトリにあります)。このポートは、使用する準備ができていませんが、将来のある時点でNuttXツリーに戻ることができます。
アトメルSAM3 / 4ボード:
SAM4E-EK:(1)完全に機能するILI9341ベースのLCDドライバと(2)完全に機能NxWMの設定を追加します。
のARMv7-A:
住所環境:のCortex-MMUを使用して、アプリケーションのアドレス環境のサポートを追加します。 NuttXアドレス環境のサポートの標準化されたプラットフォーム固有のインターフェースを実装します。
キャッシュ操作:標準化、プラットフォーム固有のキャッシュ動作を実装します。これらは、Dキャッシュをフラッシュし、ELFモジュールがメモリにロードされた後、Iキャッシュを無効化するために、ELFローダから呼び出されます。この変更により、ELFモジュールはSAMA5 /のCortex-プラットフォーム上で正しく動作します。
カーネルの構築:(1)システムコールゲートの実装を追加します。 (2)別途作成されたユーザプログラムにリンクすることができますにcrt0起動ファイルを追加します。 (3)カーネルのビルドに使用するモード信号を送達するためのサポートを追加します。 (4)各ユーザプロセスが開始されたときにプロセスごとのユーザーのヒープを初期化するためのロジックを追加します。 (5)のARMv7-例外処理は、我々はユーザーモードプロセスをサポートしている場合、少し異なる動作する必要があります。 R13及びR14は、ユーザとSVCモードと異なるページングされるからです。
共有メモリのサポート:(1)コンテキストスイッチの共有メモリの再マッピング処理するために必要なロジックを追加します。 (2)共有メモリ内のアドレスが含まれるように、仮想/物理アドレス変換を拡張します。 (3)プラットフォーム固有の共有メモリサポートの実装を追加します。
アトメルSAMA5Dドライバー:
ネットワークのioctl:セットアップPHYイベント通知への新しいioctlを含め、すべてのネットワークのioctlを実装します。
アドレス変換:カーネルでは、物理アドレス、およびその逆に、ユーザーの仮想アドレスをマップするためのロジックを必要とする、アドレス環境でビルド。
アトメルSAMA5Dボード:
SAMA5D3 Xplained、SAMA5D3-EK、およびSAMA5D4-EK:新しく定義された標準インタフェースを使用するには、既存のボード固有のPHY割り込みインターフェイスに変換します。
SAMA5D4-EK:カーネルのビルド構成をテストするための設定を追加します。 ROMFSファイルシステムのSDカードからやからと、メモリー内のいずれかで起動するように構成があります。
SAMA5D4-EK:改訂E.ボードのマニュアル/サポートを追加します。
STMicro社STM32ドライバー:
イーサネット:ネットワークのioctl署名の変更への変更をサポートするように変更。また、セットアップPHYイベント通知に新規のioctlのサポートを追加します。
STMicro社STM32ボード:
STM32F4DIS-BBとSTM32F4Discovery:STM32F4DIS-BBのベースボードがインストールされたSTM32F4Discoveryボード用NSHの設定を有効にしてネットワークを追加します。 STM32F4DIS-BBのベースボード上にmicroSDカードスロットをサポートしています。
TI TIVAドライバー:
TIのCC3200:TIのCC3200のサポートを追加します。ジム·ユーイングから。
TI TIVAボード:
TI CC3200ランチパッド:TI CC3200ランチパッドのサポートを追加します。ジム·ユーイングから。
Cライブラリ:
世論調査():sem_timedwaitを使用して再実装ポーリング()ディレイ()。
/ビルドシステム構成:
エクスポート対象:ビルドカーネル内または保護され、(1)のみをユーザライブラリをエクスポートする必要がある、(2)内部ヘッダファイルをコピーしていないか、これはカーネルや保護の構築であり、(3)までバンドルする必要がある場合、スクリプトを構築しますユーザCのスタートアップファイル(にcrt0)ではなく、カーネルのカーネル頭部オブジェクトと保護を構築します。
プログラムCFLAGS:カーネルのコードとは異なるCFLAGSを持つユーザライブラリを構築するために私達を可能にするロジックを追加します。 SHN_COMMONの再配置を防止するために、ELFコードを構築するとき、我々は-fno-commonのオプションを必要とするので、これが必要になります。
アプリケーション:
NSH:NSHネットワークの初期化ロジックを拡張します。リンクの状態を監視するネットワーク監視スレッドが作成されますオプションが用意されました。リンクがダウンすると、コードが正常にダウン状態のイーサネットドライバを入れしようとします。リンクが戻ってきたときに、コードがバックアップネットワークを持ってしようとします。
ELF例:ELFテスト/例は、個々のELFテストプログラムは、シンボルテーブルの必要性を排除または最小化するために(それが利用可能な場合)SYSCALLライブラリに対してリンクまたはCライブラリとすることができるように拡張されました。
NxTerm:NxTermにNxConsoleのすべての出現箇所を変更します。
MTDRWB例:MTD R / Wバッファリングをテストする例を追加します。
OS試験例:sem_timedwaitの些細なテストを(追加)。
アプリケーション設定/システムを構築します。
インポート対象:(1)(nuttx /ソースツリー対)NuttXエクスポートパッケージに対するアプリケーション構築を可能にするロジックを追加します。 (2)パッケージをエクスポートするための.configファイルを追加します。 (3)アプリ/インポートを作成します。作成アプリ/インポート/ CFLAGSを定義するようなことを行いMake.defs。 ELFビルドはCFLAGSに-fno-commonを必要とします。 nuttx /ツール/ Config.mkからアプリ/インポート/ Make.defsにいくつかの基本ロジックをコピーします。 ELFインポートがビルドに(4)アプリ/インポート/スクリプト/ GNU-elf.ld GCCのリンカスクリプトを追加します。
すべてのMakefile:(1)すべてのメイクファイルにinstallターゲットを追加します。輸入ビルドのために、トップレベルのMakefileは今二つのパスを行います。(1)(2)アプリ/ビンにプログラムをインストールし、その後、libapp.aを構築します。 (2)メイン()を構築し、すべてのMakefileにCONFIG_BUILD_KERNELためのプログラムのインストールを追加します。 (3)カーネルの構築のために、主を含むオブジェクトファイルは()ため、名前の競合のライブラリに行くことができません。オブジェクトファイルは、すべてのMakefileの特殊なケースとして処理しなければなりません。
カーネルの構築(CONFIG_BUILD_KERNEL)では、すべてのタスクのエントリポイントは、メインである()、ではないいくつかのxyz_main():すべてのプログラム内蔵。
DD、DF、losetupを、mkfatfs、mkdr、およびPS:NSH:彼らは、カーネルの外で利用できないインターフェイスに依存しているため、いくつかのコマンドは、カーネルのビルドで無効にする必要があります。
アプリ/ツール/:(1)NuttXインポートパッケージを爆発やアプリ/インポートにインストールするmkimport.shを追加します。 (2)ブートROMFSのファイルシステムイメージを作成するためにmkromfsimg.shスクリプトを追加します。
ELFとNxFLAT例:アドレス環境がある場合)(task_createを使用するテスト·ケースを構築しないでください。
ツール:
refresh.sh:あなたはそれらの多くをしたいときにさわやかな構成を容易にするツールを追加します。
mksyscall.c:ヘッダファイルを必要としないシステムコールを作成します。
mkexport.sh:パッケージをエクスポートするの.configファイルを追加します。
アプリ/ツール:新しいアプリ/ツール·スクリプトについては上記を参照してください。
進行中の取り組み。次の部分的に実装するが、このリリースに存在している特徴です。彼らはすぐに完了されない可能性があります。
プロセス:このリリースでの作業の多くは、NuttXでUnixスタイルのユーザー·プロセスの実現に焦点を当てています。行われることがよりしかし、あります。 http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes:フルロードマップと状況はで入手できます。
XMEGA:XMEGAのポートの代わりに、いくつかの断片があります。そのポートは本当にしかし、開始されていません。
ガリレオ:同様に、インテルガリレオポートの代わりにフラグメントがあります。ポートがいずれか本格的に開始されていません。
バグ修正。唯一の最も重要なバグ修正が(バグ修正の完全なリストについては、追加のより詳細なバグ修正については、変更履歴を参照してください)ここにリストされています:
コアOS:
カーネルは、修正プログラムを構築します。(1)IDLE TCBの設定がアイドルスレッドが特権、カーネルスレッドであることを示す必要があります。アドレス環境がある場合(2)(task_createをビルド)またはtask_spawn()インターフェイスしないでください。 (3)posix_spawn()カーネルプロキシスレッドがカーネルスレッドではなく、ユーザー·タスクにする必要があります。
いくつかのpthreadインタフェース:パラメータをphthreadへのconst記憶域クラスを追加します。フレディショパンから。
SCHED /クロック:g_tickbiasの痕跡を削除します。正確なシステム時間を提供するためにg_basetimeに時間バイアスを印加するために、代わりに、必要とします。
システムコール:(1)いくつかのタイプミスが修正しました。 exevc()、execvl()、posix_spawn()、およびposix_spawnp()システムコールの統合を修正しました。我々はSYSCALLの取り扱いながら、カーネルスタックを使用するように設定されている場合(2)、我々は、信号を提供するために、ユーザ·スタックに切り替える必要があります。
ファイルシステム/ブロック·ドライバ/ MTD:
のprocfs:いくつかの非reorganizableデータ構造を再編成することで導入されたいくつかのprocfの破損を修正しました。ケン·ペティットから。
AT45は:1以上のページを書き込む際at45db_bwrite()では、バッファが増加されていません。 Sourceforgeのバグ#34。
バイナリフォーマット:
ELFの再配置:いくつかの再配置型には、それらに関連するという名前のシンボルを持っていません。デザインは、そのような場合を考慮していませんでした。
ELFローダ:クリティカルバグ修正.. BSSはクリアされていませんでした。
メモリ管理:
顆粒アロケータ:顆粒アロケータの初期化がカーネルメモリを別に設定に間違ったアロケータを使用しています。
特権グループ:グループ構造にフラグを追加します。グループはカーネルスレッドで作成されている場合は、そのグループ内のすべてのリソースは、特権を持たなければなりません。
Cryptogrphicサポート:
暗号/ cryptodev.c:に反転パスセグメントは、ファイルのパスが含まれています。ブレナンアシュトンによって指摘しました。
コモンドライバ:
共通CAN上半分は:can_txdoneでは、セマフォのウエイターはcan_xmitの戻り値に関係なく、通知する必要があります。新しいパケットが存在しない場合は、最初に、-EIOを返し、二ウェイターの情報は、最後に転送されたパケットについてです。ダニエル·ラズロSitzerから。
ARM:
システムコール:スタックからパラメータを取得する際にシステムコールでタイプミスを修正:REGS [REG_PC] +4は、アドレスではなく、REGS [REG_PC + 4]です。
STMicro社STM32ドライバー:
STM32 F401 UART:このチップ上USART6の正しいサポート。フレディショパンから。
STM32 FLASHが修正されています。インターフェイスは、より一般的にする、uint16_tの代わりにsize_t型を使用します。フレディショパンから。
STM32 UART:アトンから有効STM32クロックにUART7とUART8の修正。
割り込みハンドラが呼び出されたときに、すべてのパケットが転送された場合は、割り込みハンドラの終了時に、割り込みは、無効にされていました:することができます。割り込みハンドラを送信するために新しいパケットをキューに入れることができます上半分のcan_txdone()を呼び出すため、これは問題です。 can_txdoneは()()送信する新しいパケットが存在しない場合は、割り込みを無効にするcan_xmitを呼び出すので、ブロックを完全に除去。ダニエル·ラズロSitzerから。
CAN:マックスHoltzbergによって提案されたその他のSTM32のCAN補正。
STMicro社ST32ボード:
コンフィグ/ mikroe-stm32f4:数はmikroe-stm32f4の設定ソースにバグとマイナーな修正をコンパイル修正。ケン·ペティットから。
ARM9 /のARMv7-A:
システムコール:ARM7 / 9およびCortex-Aシステムコールを修正:SVCモードのスレッドの場合、SVC命令がR14を上書きしてしまいます。これは、インラインアセンブリでアカウントを取らなければなりません。
タスクの設定:彼らはスタートアップトランポリンを乗り越えるまで、すべてのタスクでも、ユーザ·モード·タスクは、スーパバイザ·モードで開始する必要があります。
のARMv7-A:CONFIG_BUILD_KERNEL用)(up_fullcontextrestoreを変更します。これはカーネルにある間にCPSRを変更しました。カーネル空間で実行中に、新しいCPSRがユーザモードである場合、それがクラッシュします。 SYS_context_restoreシステムコールを追加することで修正されました。行われている可能性がup_fullcontextrestore()に代わる、簡単な変更があります:それは、代わりにCPRSRのSPSRを使用することが可能となって、その後up_fullcontextrestoreから例外からの復帰を行うている可能性があります()。それは、より効率的であるが、私はそれを試したことがありません。
アトメルSAM3 / 4ボード:
SAM3X / Arduinoのため:sam3x_periphclks.hのタイポ修正。ヘッダファイルをboard.hするSCLKの定義を追加します。ファビアン·コントから。
SAM3 RTT:のみSAM4ファミリーはMRレジスタにRTTDISビットを持っています。ファビアンコントからSourceForgeのバグ#33。
Cライブラリ:
のsscanf():NuttX libcのは、その後、バッファにそれらを抽出し、解析するためにどのように多くの文字を推測しようとしたそのバッファに()strtolは走りました。その推測は、多くの場合、間違っていました。より良いアプローチは、構文解析後にスキップする文字数を決定するために、endptrを戻り値を使用して、入力データに直接)(strtolはをコールすることであろう。コスマMoczekから。
数学ライブラリ:デニスArnstからATAN2の実装を修正しました。
浮動小数点出力:lib_dtoaに変更()は後続ゼロから精度誤差を修正します。ボブDoiron氏から。
アプリケーション:
NSH PSコマンドを修正しました:引数がない場合は、引数リストのためのゴミを印刷することができます。
/ビルドシステム構成:
nullの例:これは、カーネルのビルドでないかどうかを知りたconfig.hそれ順序を含める必要があります。この問題はまだ)(メイン定義する必要があるかもしれないいくつかの他のファイルに存在します。
このバージョン7.8の新機能:
この特長:追加の新機能と拡張機能:
コアOS:
ウォッチドッグタイマの割り当て:私たちは、事前に割り当てられたウォッチドッグ時間が不足した場合は(1)、論理は今ヒープから追加のタイマーを割り当てます。常に割り込みハンドラで使用可能なタイマーがありますように、事前に割り当てられたウォッチドッグタイマの引当金が維持されます。 (2)静的に割り当てられたウォッチドッグタイマのサポートが追加されました
環境のサポートに対応しています(2)新OSのAPIは、すべてのプラットフォーム固有のコンテキストスイッチングロジック(up_block_task()、up_unblock_task()、_exit()、など)に統合されています。
カーネル構築のサポート:(1)MPUベース"カーネルのビルド"保護されたビルド(CONFIG_BUILD_PROTECTED)に改名。のサポートが追加された新しいMMUベース"カーネルのビルド" (CONFIG_BUILD_KERNEL)は、(2)システムコールライブラリは、現在CONFIG_NUTTX_KERNELで構築することができます。新しい選択*:CONFIG_LIB_SYSCALL。
システムの起動:(メモリのアドレスに対して)ファイルシステム上のプログラムからシステムを起動するための設定オプションを追加します。
スタートアップパラメータの受渡し:構成に応じて、新しいタスクにパラメータを渡すには、2つの方法がありました:どちらかが(1)のargv [] strdup'ed各文字列を配列として作成しました。新しいタスクが開始される前に、または(2)のargv []配列や文字列は、スタック上に作成されました。今、唯一の方法、方法(2)があります。 (1)の方法は、わずかによりコンパクトであるかもしれないが、これは同じことをやって、2つの方法の複雑さを運ぶ価値はありません。
ボードの初期化:個別のワーカースレッドで最初のボードの初期化を実行する機能を追加します。初期化ロジックは、起動/ IDLEスレッド上で実行することはできません多くの場合があるので、これが必要になります。ブロックまたは待機中のアイドルスレッドに許可されていないためです。
メモリ管理:
顆粒アロケータ:(1)顆粒ヒープ内の未割り当て可能領域を確保するための新しい機能を追加します。 (2)未初期化顆粒アロケータをサポートするためのインタフェースを追加します。
ページアロケータ:既存NuttX顆粒アロケータに基づく単純な物理ページアロケータを追加します。顆粒アロケータは長距離での使用のために十分に決定論的であるかどうかは定かでないですが、それは非常に迅速にテストするための場所でページアロケータを取得します。
CONFIG_MM_MULTIHEAPを削除:非multiheap操作はサポートされなくなりました。
sbrkの():sbrkの()は、現在動的にサイズ、プロセスごとのヒープを可能にするために、カーネルのビルドでサポートされています。
プロセスごとのヒープ:プロセスデータ·スペースの先頭のスペースは現在、ユーザーのヒープ管理構造のために予約されています。カーネル構築モードでは、これらのヒープ構造は、ユーザー固有のデータを割り当てるためにカーネルと使用のコードの間で共有されています。
ユーザーヒープ管理:特権スレッドが終了するが、我々はメモリを解放するために、カーネルアロケータを使用する必要があります。権限のないスレッドが終了するが、我々は何もする必要はありませんときにアドレス環境が切断されたときに...ヒープメモリがクリーンアップされます。
プロセス間共有メモリのサポート:(1)(たshmgetの実装とドキュメントの追加)、shmctl()、にshmat()、およびにshmdt()。 (2)追加のシステムは、システムの共有メモリ·インタフェースへのユーザのコールゲートをサポートするために呼び出します。 (3)共有メモリ機能をサポートするために必要なプラットフォーム固有のインタフェース定義を追加します。
仮想ページの割り当て:プロセスごとの仮想ページアロケータのサポートを追加します。これはtask_group_s構造の新しいメンバーです。新しいユーザプロセスが開始されるとアロケータは初期化されなければならず、未初期化プロセスのグループが最終的に破壊された場合。これは、共有物理メモリをマップするために上に仮想アドレスを選択するにshmat()とにshmdt()によって使用されます。
ファイルシステム/ブロック·ドライバ/ MTD:
SMART FS:SMART FSとケンペティットからSMART FSのprocfs更新。
MTD:MTD先読み/書き込みバッファ層が表示されますが正しく機能するようになり。
バイナリフォーマット:
プロセスごとのヒープ:各ユーザプロセスが開始されたときにプロセスごとのユーザーのヒープを初期化するためのロジックを追加します。
グラフィックス:
NxTerm:NxTermにNxConsoleのすべての出現箇所を変更します。
ネットワーク:
PHYは割り込み:(1)PHY割り込みアタッチメントインタフェースを標準化。 (2)PHY割り込みによって合図ネットワークの状態に変化があったときにアプリケーションに通知するために使用することができるIOCTLのサポートを追加。
改善された送信ロジック:過去には、最初のパケットが失敗する新しいネットワークピアに送信。そこにピアのARPテーブルにエントリしないであろうと、そのARP要求は、最初のパケットを交換することができます。ピアMACアドレスがARPテーブルにあると、そうでない場合、(2)のマッピングを取得するために定期的にARP要求を送信し、(3)のために待っていれば今CONFIG_NET_ARP_SEND = yの場合、オプションとして、すべてのロジックを送信(1)をチェックしますARP応答。 ARP応答を受信したときに(4)実際の送信ロジックが開始されます。したがって、そこに新しいピアに送信された最初のパケットで遅延することができるが、パケットが失われてはなりません
シミュレーションをホスト:
SPIフラッシュドライバ:ケン·ペティットからSIMターゲットのSPIフラッシュドライバをエミュレート。
インテルのx86:
デフォルトのホストは、デフォルトのホストは現在、x86_64版であり、シミュレーションのビルドのために-m32オプションが自動的に選択されます。
インテル8051ファミリ:
8051削除された:NuttXソースツリーからの8051ファミリのアーキテクチャのためのすべてのサポートを削除しました。除去パッチと共に廃止コードは今のmisc /廃止/で見ることができます。 (1)一部の機能は、そのハードウェアスタックで、私は8051にNuttXのいずれか本当に成功したポートを認識していないですし、(2)8051、実証されているが、他のアーキテクチャに制限し、合併症を強制するため、このコードは削除されましたとNuttXの成長と発展をより複雑にします。
ザイログZNeoボード:
コンフィグ/ 16Z:このボードのサポートがNuttXソースツリーから削除されました(それでも雑貨/廃止ディレクトリにあります)。このポートは、使用する準備ができていませんが、将来のある時点でNuttXツリーに戻ることができます。
アトメルSAM3 / 4ボード:
SAM4E-EK:(1)完全に機能するILI9341ベースのLCDドライバと(2)完全に機能NxWMの設定を追加します。
のARMv7-A:
住所環境:のCortex-MMUを使用して、アプリケーションのアドレス環境のサポートを追加します。 NuttXアドレス環境のサポートの標準化されたプラットフォーム固有のインターフェースを実装します。
キャッシュ操作:標準化、プラットフォーム固有のキャッシュ動作を実装します。これらは、Dキャッシュをフラッシュし、ELFモジュールがメモリにロードされた後、Iキャッシュを無効化するために、ELFローダから呼び出されます。この変更により、ELFモジュールはSAMA5 /のCortex-プラットフォーム上で正しく動作します。
カーネルの構築:(1)システムコールゲートの実装を追加します。 (2)別途作成されたユーザプログラムにリンクすることができますにcrt0起動ファイルを追加します。 (3)カーネルのビルドに使用するモード信号を送達するためのサポートを追加します。 (4)各ユーザプロセスが開始されたときにプロセスごとのユーザーのヒープを初期化するためのロジックを追加します。 (5)のARMv7-例外処理は、我々はユーザーモードプロセスをサポートしている場合、少し異なる動作する必要があります。 R13及びR14は、ユーザとSVCモードと異なるページングされるからです。
共有メモリのサポート:(1)コンテキストスイッチの共有メモリの再マッピング処理するために必要なロジックを追加します。 (2)共有メモリ内のアドレスが含まれるように、仮想/物理アドレス変換を拡張します。 (3)プラットフォーム固有の共有メモリサポートの実装を追加します。
アトメルSAMA5Dドライバー:
ネットワークのioctl:セットアップPHYイベント通知への新しいioctlを含め、すべてのネットワークのioctlを実装します。
アドレス変換:カーネルでは、物理アドレス、およびその逆に、ユーザーの仮想アドレスをマップするためのロジックを必要とする、アドレス環境でビルド。
アトメルSAMA5Dボード:
SAMA5D3 Xplained、SAMA5D3-EK、およびSAMA5D4-EK:新しく定義された標準インタフェースを使用するには、既存のボード固有のPHY割り込みインターフェイスに変換します。
SAMA5D4-EK:カーネルのビルド構成をテストするための設定を追加します。 ROMFSファイルシステムのSDカードからやからと、メモリー内のいずれかで起動するように構成があります。
SAMA5D4-EK:改訂E.ボードのマニュアル/サポートを追加します。
STMicro社STM32ドライバー:
イーサネット:ネットワークのioctl署名の変更への変更をサポートするように変更。また、セットアップPHYイベント通知に新規のioctlのサポートを追加します。
STMicro社STM32ボード:
STM32F4DIS-BBとSTM32F4Discovery:STM32F4DIS-BBのベースボードがインストールされたSTM32F4Discoveryボード用NSHの設定を有効にしてネットワークを追加します。 STM32F4DIS-BBのベースボード上にmicroSDカードスロットをサポートしています。
TI TIVAドライバー:
TIのCC3200:TIのCC3200のサポートを追加します。ジム·ユーイングから。
TI TIVAボード:
TI CC3200ランチパッド:TI CC3200ランチパッドのサポートを追加します。ジム·ユーイングから。
Cライブラリ:
世論調査():sem_timedwaitを使用して再実装ポーリング()ディレイ()。
/ビルドシステム構成:
エクスポート対象:ビルドカーネル内または保護され、(1)のみをユーザライブラリをエクスポートする必要がある、(2)内部ヘッダファイルをコピーしていないか、これはカーネルや保護の構築であり、(3)までバンドルする必要がある場合、スクリプトを構築しますユーザCのスタートアップファイル(にcrt0)ではなく、カーネルのカーネル頭部オブジェクトと保護を構築します。
プログラムCFLAGS:カーネルのコードとは異なるCFLAGSを持つユーザライブラリを構築するために私達を可能にするロジックを追加します。 SHN_COMMONの再配置を防止するために、ELFコードを構築するとき、我々は-fno-commonのオプションを必要とするので、これが必要になります。
アプリケーション:
NSH:NSHネットワークの初期化ロジックを拡張します。リンクの状態を監視するネットワーク監視スレッドが作成されますオプションが用意されました。リンクがダウンすると、コードが正常にダウン状態のイーサネットドライバを入れしようとします。リンクが戻ってきたときに、コードがバックアップネットワークを持ってしようとします。
ELF例:ELFテスト/例は、個々のELFテストプログラムは、シンボルテーブルの必要性を排除または最小化するために(それが利用可能な場合)SYSCALLライブラリに対してリンクまたはCライブラリとすることができるように拡張されました。
NxTerm:NxTermにNxConsoleのすべての出現箇所を変更します。
MTDRWB例:MTD R / Wバッファリングをテストする例を追加します。
OS試験例:sem_timedwaitの些細なテストを(追加)。
アプリケーション設定/システムを構築します。
インポート対象:(1)(nuttx /ソースツリー対)NuttXエクスポートパッケージに対するアプリケーション構築を可能にするロジックを追加します。 (2)パッケージをエクスポートするための.configファイルを追加します。 (3)アプリ/インポートを作成します。作成アプリ/インポート/ CFLAGSを定義するようなことを行いMake.defs。 ELFビルドはCFLAGSに-fno-commonを必要とします。 nuttx /ツール/ Config.mkからアプリ/インポート/ Make.defsにいくつかの基本ロジックをコピーします。 ELFインポートがビルドに(4)アプリ/インポート/スクリプト/ GNU-elf.ld GCCのリンカスクリプトを追加します。
すべてのMakefile:(1)すべてのメイクファイルにinstallターゲットを追加します。輸入ビルドのために、トップレベルのMakefileは今二つのパスを行います。(1)(2)アプリ/ビンにプログラムをインストールし、その後、libapp.aを構築します。 (2)メイン()を構築し、すべてのMakefileにCONFIG_BUILD_KERNELためのプログラムのインストールを追加します。 (3)カーネルの構築のために、主を含むオブジェクトファイルは()ため、名前の競合のライブラリに行くことができません。オブジェクトファイルは、すべてのMakefileの特殊なケースとして処理しなければなりません。
カーネルの構築(CONFIG_BUILD_KERNEL)では、すべてのタスクのエントリポイントは、メインである()、ではないいくつかのxyz_main():すべてのプログラム内蔵。
DD、DF、losetupを、mkfatfs、mkdr、およびPS:NSH:彼らは、カーネルの外で利用できないインターフェイスに依存しているため、いくつかのコマンドは、カーネルのビルドで無効にする必要があります。
アプリ/ツール/:(1)NuttXインポートパッケージを爆発やアプリ/インポートにインストールするmkimport.shを追加します。 (2)ブートROMFSのファイルシステムイメージを作成するためにmkromfsimg.shスクリプトを追加します。
ELFとNxFLAT例:アドレス環境がある場合)(task_createを使用するテスト·ケースを構築しないでください。
ツール:
refresh.sh:あなたはそれらの多くをしたいときにさわやかな構成を容易にするツールを追加します。
mksyscall.c:ヘッダファイルを必要としないシステムコールを作成します。
mkexport.sh:パッケージをエクスポートするの.configファイルを追加します。
アプリ/ツール:新しいアプリ/ツール·スクリプトについては上記を参照してください。
進行中の取り組み。
バグ修正:
ます。
コメントが見つかりません