NuttX

Screenshot der Software:
NuttX
Softwarebeschreibung:
Version: 7.9 Aktualisiert
Upload-Datum: 10 May 15
Entwickler: Gregory Nutt
Lizenz: Frei
Popularität: 53

Rating: 4.0/5 (Total Votes: 1)

NuttX ist ein Open Source, deterministische und kostenlose Echtzeit-Embedded-Betriebssystem (RTOS), aus dem Offset entworfen in tief eingebetteten, ressourcenbeschränkten Umgebungen einsetzbar sein. Es hat eine kleine Standfläche, die in Mikrocontroller-Umgebungen einsetzbar ist, und es & rsquo; s voll skalierbar vom kleinen (8-Bit), um eingebettete (32-Bit-Systeme) moderat.
Außerdem soll sein voll kompatibel zu Standards, voll Echtzeit zu sein und völlig offen sein. NuttX hat einen großen Funktionsumfang OS-Set, ein modulares Design, das hoch skalierbare und konfigurierbare sowie standardkonform ist. Es ist mit einem nicht einschränkenden BSD-Lizenz verteilt. Er wird häufig von seiner Entwickler als an einem glanceKey Features namens "Tiny Linux." Eigenschaften umfassen Kernaufgabenverwaltung, BSD-Socket-Schnittstelle, Speicherverteiler (Shared Memory, Standard Heap Speicherzuweisung, geschützt build mit MPU, flache Embedded Build, pro Prozess Haufen, Granulat-Zuweisung und dynamisch Größe), Speicherkonfigurationen, die Portierung Führung, komplett Preemptible, Tickless Betrieb, On-Demand-Paging und Systemprotokollierung.
Darüber hinaus kommt das Projekt mit Erweiterungen Vorkaufsrecht, pro Thread, integrierte CPU Lastmessungen, umfassende Dokumentation, optional Aufgaben, die Adresse Umgebungen, ANSI-like und POSIX-ähnliche Aufgabe Kontrollen, Uhren, pthreads enthalten, Umgebung verwalten Variablen, Signale, benannt Nachrichtenwarteschlangen, Zeitgeber, Dateisystem und Zählen von Signalanlagen.
Neben anderen Funktionen, können wir erwähnen Round-Robin-Scheduling, FIFO, Unterstützung für Prioritätsvererbung, Unterstützung für die SoC-Architektur, die Unterstützung von Board-Architekturen, die Unterstützung für neue Prozessorarchitekturen, Watchdog-Timer, VxWorks artigen Aufgabenverwaltung, I / O-Umleitung und übertragen & ldquo; Steueranschlüsse & rdquo;. Unterstützte platformsNuttX unterstützt eine Vielzahl von Hardware-Plattformen, unter denen wir zahlreiche ARM-Prozessoren, einschließlich ARM Cortex-M3, ARM926EJS, ARM7TDMI, ARM Cortex-M4, ARM Cortex-M0, ARM920T und ARM erwähnen Cortex-A5, sowie die Atmel AVR 8-bit, Freescale M68HCS12, AVR32 Atmel AVR-Plattformen.
Zusätzlich unterstützt es auch verschiedene Intel-Plattformen wie Microchip PIC32MX (MIPS), 80C52 und 80 & Zeiten; 86, Zilog-Plattformen, einschließlich Zilog Z80, Zilog Z16F, Zilog Z8Encore! und Zilog eZ80 Acclaim !, und die Renesas / Hitachi SuperH und Renesas M16C / 26-Plattformen

Was ist neu in dieser Pressemitteilung:.

  • Features: Weitere neue Features und erweiterte Funktionen:
  • Core Betriebssystem:
  • Watchdog Timer Allocation: (1) Wenn wir von HVE-Watchdog-Zeiten ausgeführt, die Logik wird nun zusätzliche Timer aus dem Heap. Eine Reserve von HVE-Watchdog-Timer aufrechterhalten wird, so dass es immer Timer für Interrupt-Handler zur Verfügung stehen. (2) Zusätzliche Unterstützung für statisch zugewiesenen Watchdog-Timer
  • Address Environment Support: (2) New OS APIs integriert in alle plattformspezifischen Kontext Schaltlogik (up_block_task (), up_unblock_task (), _exit (), und andere)
  • .
  • Kernel Build-Support: (1) Die MPU basierend & quot; Kernel Build & quot; zu einem geschützten build (CONFIG_BUILD_PROTECTED) umbenannt; Unterstützung für die neue MMU-basierte & quot; Kernel Build & quot; (CONFIG_BUILD_KERNEL), (2) Der Systemaufruf Bibliothek können jetzt mit CONFIG_NUTTX_KERNEL gebaut werden. Neue Auswahl *:. CONFIG_LIB_SYSCALL
  • Systemstart: Fügen Sie Konfigurationsoptionen, um das System von einem Programm auf einem Dateisystem (im Gegensatz zu einer Adresse im Speicher) starten
  • .
  • der Startparameter Pässe: Früher gab es zwei Möglichkeiten, Parameter, neue Aufgaben zu übergeben, abhängig von der Konfiguration werden: Entweder (1) argv [] wie geschaffen als ein Array mit jeder Saite strdup'ed. Oder (2) argv [] Array und Zeichenfolgen wurden auf dem Stapel erstellt werden, bevor die neue Aufgabe gestartet wurde. Nun, es gibt nur einen Weg, Weg (2). Way (1) könnte etwas kompakter, aber das ist es nicht wert zu tragen der Komplexität der zwei verschiedene Arten das gleiche tun.
  • Brett Initialisierung: In Fähigkeit zur Ausgangsplatte Initialisierung auf einem separaten Arbeitsthread auszuführen. Dies ist notwendig, weil es viele Fälle, in denen Initialisierungslogik kann auf der Start- / IDLE Thread ausgeführt. Das liegt daran, Sperrung oder Warte nicht auf der Leerlauf-Thread zulässig.
  • Memory Management:
  • Granule Allocator: (1) Fügen Sie eine neue Funktion, um un-allocatable Regionen in der Körnerhaufen zu reservieren. (2) Schnittstellen In den un-Initialisierung eines Granulat-Zuweisung.
  • Unterstützung
  • Seite Allocator: Fügen Sie eine einfache physikalische Seite Allocator auf der Grundlage der bestehenden NuttX Granulat-Zuweisung. Ich bin nicht sicher, wenn das Granulat allocator ausreichend deter für die lange Strecke zu verwenden, aber es wird einen Seite Allocator in Ort für sehr schnell testen.
  • Entfernen CONFIG_MM_MULTIHEAP: Non-multiheap Betrieb wird nicht mehr unterstützt
  • .
  • sbrk ():. Sbrk () ist jetzt in der Kernel-Version unterstützt die dynamische Größe, pro Prozess Haufen erlauben
  • Per-Prozess Heaps: Space zu Beginn des Prozessdatenraum ist nun für Anwender Haufen Managementstrukturen vorbehalten. In der Kernel-Build-Modus sind diese Haufen Strukturen zwischen dem Kernel und Code, um benutzerspezifische Daten zuzuweisen geteilt.
  • Benutzer Heap Management: Wenn eine privilegierte Thread beendet, haben wir, um den Kernel Allocator, um Speicher frei zu verwenden; Wenn ein nicht berechtigter Thread beendet, haben wir nicht, etwas zu tun ... Heap-Speicher wird aufgeräumt werden, wenn die Adresse Umfeld wird abgerissen.
  • Inter-Process Shared Memory Support: (1) Durchführung und Dokumentation hinzufügen shmget (), shmctl (), shmat () und shmdt (). (2) In-System-System ruft den Benutzer Call-Gate auf die Shared-Memory-Schnittstellen unterstützen. (3) In plattformspezifische Schnittstellendefinitionen erforderlich, um die Shared-Memory-Funktion unterstützen.
  • Virtuelle Seite Allocator: Hinzufügen von Unterstützung für eine pro-Prozess virtuellen Seite Allocator. Dies ist ein neues Mitglied der task_group_s Struktur. Die Zuordnungsvorrichtung initialisiert, wenn eine neue Benutzer-Prozess gestartet wird, und wenn der Prozess uninitialize Gruppe wird schließlich zerstört. Es wird von shmat () und shmdt () verwendet, um die virtuelle Adresse, auf die auf den freigegebenen physischen Speicher Karte holen.
  • Dateisysteme / Blocktreiber / MTD:
  • SMART FS: FS SMART und SMART FS procfs Updates von Ken Pettit
  • .
  • MTD:. Die MTD Read-Ahead / Write-Pufferschicht wird nun Funktions
  • Binary Formate:
  • Per-Prozess Heap:. In Logik, um die pro-Prozess Benutzer Haufen zu initialisieren, wenn jeder Benutzer Prozess gestartet
  • Grafik:
  • NxTerm: Ändern Sie alle Vorkommen von NxConsole zu NxTerm
  • .
  • Networking:
  • PHY Interrupts: (1) Standardisieren Sie eine PHY-Interrupt Anbringungsschnittstelle. (2) Hinzufügen von Unterstützung für ein ioctl, die verwendet werden können, um eine Anwendung zu benachrichtigen, wenn es zu einer Änderung in der Netzwerk-Status durch eine PHY-Interrupt signalisiert.
  • Verbesserte Send Logic: In der Vergangenheit war das erste Paket an einen neuen Netzwerk-Peer fehlschlagen würde; gäbe es keinen Eintrag in der ARP-Tabelle für die Peer-und so könnte eine ARP-Anfrage, dass die erste Paket ersetzen. Jetzt als Option, wenn CONFIG_NET_ARP_SEND = y, all Nachricht Logik (1) prüfen, ob der Peer-MAC-Adresse ist in der ARP-Tabelle, und wenn nicht, (2) senden ARP-Anforderungen in regelmäßigen Abständen, um die Zuordnung zu erhalten und (3) warten, bis die ARP-Antwort. Dann (4), wenn die ARP-Antwort wird dann empfangen die tatsächliche Sendelogik eingeleitet. So kann es zu einer Verzögerung, die mit dem ersten Paket zu einem neuen Peer gesendet werden, aber das Paket nicht verloren gehen
  • Host Simulation:
  • SPI-Flash-Treiber:. Emulierte SPI-Flash-Treiber für die SIM-Ziel von Ken Pettit
  • Intel x86:
  • Standard-Host: Der Standard-Host ist jetzt x86_64 und die Option -m32 automatisch für die Simulation baut ausgewählt werden
  • .
  • Intel 8051 Familie:
  • 8051 Entfernt: Entfernt alle Unterstützung für die 8051-Familie Architektur aus dem NuttX Quellbaum. Der veraltete Code zusammen mit der Entfernung Patch kann nun bei misc / Obsoleted / gefunden werden. Dieser Code wurde entfernt, weil (1), obwohl einige Funktionen nachgewiesen ist, ich bin nicht bekannt, dass wirklich erfolgreich Häfen NuttX auf jede 8051, und (2) der 8051 mit seiner Hardware-Stapel, zwingt Einschränkungen und Komplikationen zu den anderen Architekturen und stellen Wachstum und die Entwicklung NuttX komplexer.
  • ZiLOG ZNEO Boards:
  • configs / 16z: Unterstützung für dieses Board hat von der NuttX Source-Tree entfernt (aber immer noch in der misc / Obsoleted Verzeichnis zu finden). Dieser Anschluss ist nicht bereit für den Einsatz, sondern kann auf die NuttX Baum zu einem bestimmten Zeitpunkt in der Zukunft zurückkehren.
  • Atmel SAM3 / 4 Boards:
  • SAM4E-EK:. In (1) eine voll funktionsfähige ILI9341-basierte LCD-Treiber und (2) eine voll funktionsfähige NxWM Konfiguration
  • ARMv7-A:
  • Adresse Environments: Hinzufügen von Unterstützung für Anwendungsumgebungen Adresse mit dem Cortex-A MMU. Implementieren standardisierte plattformspezifische Schnittstellen NuttX Adresse Umweltmaßnahmen.
  • Cache-Vorgänge: Implementieren standardisierte, plattformspezifische Cache-Operationen. Diese werden von der ELF-Lader, um D-Cache zu leeren und ungültig I-Cache nach einem ELF-Modul in den Speicher geladen wurde genannt. Mit dieser Änderung ELF-Module korrekt funktionieren auf der SAMA5 / Cortex-A-Plattform.
  • Kernel Körperbau: (1) Implementierungen der Systemaufruf Tor hinzufügen. (2) In CRT0 Start-up-Datei, die mit separat gebaut Anwenderprogrammen verknüpft werden können. (3) Hinzufügen von Unterstützung für die Lieferung der Einsatz Taktsignale in den Kernel zu bauen. (4) Logik hinzufügen, um die pro-Prozess Benutzer Haufen zu initialisieren, wenn jeder Benutzer wird gestartet. (5) ARMv7-A Ausnahmebehandlung muss ein wenig anders funktionieren, wenn wir unterstützt Prozesse im Benutzermodus. Dies liegt daran, R13 und R14 sind verschieden zwischen Benutzer und SVC-Modus eingelagert wird.
  • Shared Memory Support: (1) Logik notwendig, hand Neuzuordnung von Shared Memory auf Kontextwechsel hinzufügen. (2) Erweitern Sie virtuelle / physikalische Adresse Umbauten an Adressen in gemeinsam genutzten Speicher umfassen. (3) In Anwendung der plattformspezifischen Shared-Memory-Support.
  • Atmel SAMA5D Treiber:
  • Netzwerk IOCTLs:. Implementieren Sie alle Netzwerk ioctls, einschließlich der neuen ioctl einrichten PHY Ereignisbenachrichtigungen
  • Adresse Conversions:. In Kernel bauen mit Adresse Umgebung müssen Logik, um Benutzer virtuellen Adressen in physikalische Adressen abzubilden, und umgekehrt
  • Atmel SAMA5D Boards:
  • SAMA5D3 Xplained, SAMA5D3-EK und SAMA5D4-EK: Konvertieren Sie vorhandene Bord spezifischen PHY-Interrupt Schnittstellen zu neu definierten Standardschnittstelle zu verwenden
  • .
  • SAMA5D4-EK: Fügen Sie eine Konfiguration zum Testen der Kernel-Build-Konfiguration. Es gibt Konfigurationen, entweder von einer SD-Karte oder von und In-Memory-romfs Dateisystem zu starten.
  • SAMA5D4-EK: In der Dokumentation / Unterstützung für Rev E. Brett
  • .
  • STMicro STM32 Treiber:
  • Ethernet: Geändert, um die Änderung zu den Netzwerk ioctl Unterschrift Änderungen unterstützen. Fügen Sie auch Unterstützung für neue ioctl einrichten PHY Ereignisbenachrichtigungen.
  • STMicro STM32 Boards:
  • STM32F4DISCOVERY mit STM32F4DIS-BB: Fügen Sie eine Netzwerk aktiviert NSH-Konfiguration für den STM32F4DISCOVERY Board mit dem STM32F4DIS-BB Basisplatine installiert. Fügt Unterstützung für den microSD-Kartensteckplatz auf der STM32F4DIS-BB-Trägerplatte.
  • TI Tiva Treiber:
  • TI CC3200: Hinzufügen von Unterstützung für die TI CC3200. Von Jim Ewing.
  • TI Tiva Boards:
  • TI CC3200 Launchpad: Hinzufügen von Unterstützung für die TI CC3200 Launchpad. Von Jim Ewing.
  • C Library:
  • poll ():. Neu implementiert poll () Verzögerung mit sem_timedwait ()
  • Configuration / Build System:
  • Export Ziel: In den Kernel oder geschützte baut, (1) nur die Benutzerbibliotheken exportiert werden sollen, (2) keine internen Header-Dateien kopieren oder Build-Skripte, wenn dies ein Kernel oder geschützt zu bauen, und (3) Anforderungen zu bündeln den Benutzer C-Startup-Datei (crt0), nicht die Kernel-Kopf-Objekt für den Kernel und geschützt baut.
  • Programm CFLAGS: Fügen Sie Logik, die uns erlauben wird, Benutzerbibliotheken mit verschiedenen CFLAGS als Kernel-Code zu erstellen. Dies ist notwendig, weil wir die gemeinsame -fno-Option beim Bau ELF-Code, um SHN_COMMON Verlagerungen zu verhindern.
  • Anwendungen:
  • NSH: Erweitern der NSH-Netzwerk-Initialisierung Logik. Es gibt jetzt eine Option, die eine Netzwerkmonitor-Thread, den Zustand der Verbindung zu überwachen schaffen wird. Wenn die Verbindung ausfällt, wird der Code versucht, anmutig legte den Ethernet-Treiber in einem DOWN-Zustand; Wenn der Link kommt zurück, wird der Code versucht, das Netzwerk wieder zu bringen.
  • ELF. Beispiel: Der ELF-Test / Beispiel wurde erweitert, so dass die einzelnen ELF Testprogramme können gegen die SYSCALL Bibliothek zu erstellen (sofern verfügbar) oder gegen den C-Bibliothek, zu beseitigen oder zu minimieren die Notwendigkeit für Symboltabellen
  • NxTerm: Ändern Sie alle Vorkommen von NxConsole zu NxTerm
  • .
  • MTDRWB. Beispiel: In einem Beispiel MTD R / W-Puffer testen
  • OS Testbeispiel: Hinzufügen einer trivialen Test sem_timedwait ()
  • .
  • Application Configuration / Build System:
  • Import Target: (1) In Logik, die die Erstellung von Anwendungen gegen eine NuttX Exportpaket (gegen den nuttx / Quellbaum) ermöglichen wird. (2) In .config-Datei, um Paket zu exportieren. (3) erstellen apps / Import. Erstellen Sie apps / Import / Make.defs, dass Dinge wie definieren CFLAGS tut; ELF build erfordert in CFLAGS -fno-common. Kopieren Sie einige Basislogik von nuttx / tools / Config.mk um apps / Import / Make.defs. (4) In apps / import / scripts / gnu-elf.ld GCC Linker Skript für ELF import baut.
  • Alle Makefiles: (1) Fügen Sie eine Installationsziel für alle Makefiles. Für den Import zu bauen, funktioniert das Haupt-Makefile nun zwei Durchgängen: (1) baut libapp.a, dann (2) installiert die Programme in apps / bin. (2) In der Programminstallation für CONFIG_BUILD_KERNEL in allen Makefiles, die bauen eine main (). (3) Für die Kernel-Build, das Objekt-Datei mit main () kann nicht in die Bibliothek wegen der Namenskollisionen zu gehen. Die Objektdatei muss als Sonderfall in jedem Make gehandhabt werden.
  • Alle Built-In-Programme: Mit Kernel build (CONFIG_BUILD_KERNEL), Einstiegspunkt für alle Aufgaben ist main (), nicht irgendein xyz_main ()
  • .
  • NSH: Mehrere Befehle müssen im Kernel Build deaktiviert zu sein, weil sie auf Schnittstellen, die nicht außerhalb des Kernels verfügbar sind, hängt. Dd, df, losetup, mkfatfs, mkdr und ps
  • apps / tools /: (1) In den mkimport.sh eine NuttX Importpaket explodieren, und installieren Sie in apps / Import. (2) In mkromfsimg.sh Skript, um eine BOOT romfs Dateisystem-Image erstellen.
  • ELF und NxFLAT Beispiele:. Testfälle, die task_create (), wenn es eine Adresse Umgebung bauen Sie nicht
  • Werkzeuge:
  • refresh.sh:. Fügen Sie ein Werkzeug, um erfrischende Konfigurationen zu erleichtern, wenn Sie eine Menge von ihnen tun
  • mksyscall.c: Erstellen Sie Systemaufrufe, die nicht die Header-Dateien benötigen
  • .
  • mkexport.sh:. In .config-Datei zu exportieren Paket
  • apps / Tools: Siehe oben für neue apps / Werkzeuge Skripte
  • .
  • Die Bemühungen im Gange. Die folgenden sind Funktionen, die teilweise umgesetzt werden, aber in dieser Version vorhanden. Sie sind nicht geeignet, in Kürze abgeschlossen sein.
  • Prozesse: Ein Großteil der Arbeit in dieser Mitteilung beruht auf der Erkenntnis der Unix-Benutzerprozesse in NuttX konzentriert. Es gibt noch mehr zu tun, aber. Der vollständige Fahrplan und Status unter: http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
  • XMega: Es gibt einige Fragmente in Ort für einen XMega Port. Das Port nicht wirklich begonnen, aber.
  • Galileo: Ebenso gibt es Fragmente in Ort für einen Intel Galileo-Port. Der Hafen nicht ernsthaft entweder gestartet wurde.
  • Bugfixes. Nur die kritischen Bugfixes sind hier aufgelistet (siehe Changelog für eine vollständige Liste der Bugfixes und für weitere, detailliertere Informationen bugfix):
  • Core Betriebssystem:
  • Kernel bauen Fixes: (1) IDLE TCB-Setup benötigt, um anzuzeigen, dass der Leerlauf-Thread ist ein privilegierter, Kernel-Thread. (2) bauen Sie nicht task_create () oder task_spawn () Schnittstellen, wenn es eine Adresse Umgebung. (3) posix_spawn () Kernel Proxy-Thread sollte ein Kernel-Thread, nicht ein Benutzer Aufgabe sein.
  • Mehrere pthread Schnittstellen hinzu: const Speicherklasse, um Parameter phthread. Von Freddie Chopin.
  • sched / Uhr: Überreste g_tickbias entfernen; müssen stattdessen zu Zeit Bias gelten, um die korrekte Systemzeit bereitzustellen g_basetime.
  • Systemaufrufe: (1) Mehrere Tippfehler fixiert; korrigiert Integration exevc (), execvl (), posix_spawn () und posix_spawnp) System (Anrufe. (2) Wenn wir so konfiguriert werden, um eine Kernel-Stack verwenden, während in SYSCALL Handhabung, dann müssen wir dem Benutzer Stapel zurückschalten, um ein Signal zu liefern.
  • Dateisysteme / Blocktreiber / MTD:
  • procfs: Fix einige durch die Neuorganisation einige nicht-reorganizable Datenstrukturen eingeführt procf Bruch. Von Ken Pettit.
  • AT45: In at45db_bwrite () wird der Puffer nicht erhöht beim Schreiben von mehr als 1 Seite. Sourceforge Bug # 34.
  • Binary Formate:
  • ELF Verlagerungen: Einige Verlagerung Typen haben keinen Namen Symbol zugeordnet. Das Design nicht für diesen Fall zu berücksichtigen.
  • ELF Loader:. Kritischer Bugfix .. BSS wurde nicht gelöscht
  • Memory Management:
  • Granule Allocator: Granule allocator Initialisierung verwendet falsch Allocator auf Aufhebung Kernel-Speicher
  • .
  • privilegierten Gruppen: Fügen Sie eine Flagge, um Gruppenstruktur: Wenn die Gruppe durch ein Kernel-Thread erstellt, werden alle Ressourcen in der Gruppe muss privilegiert
  • .
  • Cryptogrphic Support:
  • crypto / cryptodev.c: Pfadsegmente in umgekehrt schließen Dateipfad. Von Brennan Ashton festgestellt.
  • Gemeinsame Treiber:
  • Gemeinsame CAN oberen Hälfte: In can_txdone, Kellner auf der Semaphore sollte unabhängig von der Rückgabewert von can_xmit informiert. Zuerst kehrt -EIO, wenn es keine neuen Pakete, und die zweite die Information der Kellner ist über die letzten übertragenen Pakets. Von Daniel Lazlo Sitzer.
  • ARM:
  • Systemaufrufe: Befestigen Sie einen Tippfehler in Systemaufruf beim Abrufen Parameter vom Stapel: regs [REG_PC] 4 ist die Adresse, nicht regs [REG_PC + 4]
  • .
  • STMicro STM32 Treiber:
  • STM32 F401 UART: Richtige Unterstützung für USART6 auf diesem Chip. Von Freddie Chopin.
  • STM32 FLASH behebt: Verwenden Sie anstelle von size_t uint16_t, stellen generische Schnittstelle. Von Freddie Chopin.
  • STM32 UART:. Fix für UART7 und UART8 auf STM32 Taktfreigabe von Aton
  • CAN: Am Ende der Unterbrechungsroutine wurden die Interrupts deaktiviert wird, wenn alle Datenpakete übertragen worden sind, wenn die Unterbrechungsroutine aufgerufen wurde. Dies ist problematisch, weil die Interrupt-Handler ruft can_txdone () der oberen Hälfte, die neuen Pakete in die Warteschlange kann zu senden. Der Block vollständig entfernt, da can_txdone () ruft can_xmit (), welche Interrupts deaktiviert, wenn es keine neuen Pakete zu senden. Von Daniel Lazlo Sitzer.
  • CAN:. Weitere STM32 CAN Korrektur durch Max Holtzberg schlug
  • STMicroelectronics ST32 Boards:
  • configs / MIKROE-STM32F4: Fix einige kompilieren Fehler und kleinere Korrekturen an den MIKROE-STM32F4 Konfigurationsquelle. Von Ken Pettit.
  • ARM9 / ARMv7-A:
  • Systemaufrufe: Fix ARM7 / 9 und Cortex-A Systemaufrufe: Für Gewinde in SVC-Modus werden die SVC Anweisungen clobbers R14. Dies ist zu berücksichtigen bei der Inline-Assembler genommen werden.
  • Task-Setup: Alle Aufgaben, auch User-Modus Aufgaben müssen im Supervisor-Modus zu starten, bis sie hinter dem Start-up-Trampolin bekommen
  • .
  • ARMv7-A: Ändern up_fullcontextrestore () für CONFIG_BUILD_KERNEL. Es verändert CPSR während im Kernel. Das wird abstürzen, wenn der neue CPSR ist User-Modus während der Ausführung in Kernel-Space. Durch Zugabe eines SYS_context_restore Systemaufruf festgelegt. Es gibt eine Alternative, einfachere Modifikation up_fullcontextrestore (), die getan haben könnte: Es ist vielleicht möglich gewesen, die SPSR anstelle der Verdichter zu verwenden und führen Sie dann eine Ausnahme Rückkehr aus up_fullcontextrestore (). Das wäre effizienter, aber ich habe es nie.
  • Atmel SAM3 / 4 Boards:
  • SAM3X / Arduino Due: Ausbesserung eines Tippfehlers in sam3x_periphclks.h; hinzufügen SCLK Definitionen Header-Datei board.h. Von Fabien Comte.
  • SAM3 RTT: Nur Familie SAM4 hat RTTDIS Bit im MR-Register. Sourceforge Bug # 33 von Fabien Comte.
  • C Library:
  • sscanf (): NuttX libc versuchte zu erraten, wie viele Zeichen zu analysieren, extrahiert sie in einen Puffer, dann lief strtol () auf diesen Puffer. Das Vermutung war oft falsch. Ein besserer Ansatz wäre es, strtol (auf der Eingangsdaten nennen), die direkt mit dem endptr Rückgabewert, um zu bestimmen, wie viele Zeichen nach dem Parsen überspringen. Von Kosma Moczek.
  • Math Library:. Atan2 Implementierungen von Denis Arnst korrigiert
  • Floating Point Leistung: Wechseln Sie in lib_dtoa (), um Genauigkeitsfehler von Nullen am beheben. Von Bob Doiron.
  • Anwendungen:
  • Fix NSH PS-Befehl:. Wenn es keine Argumente, könnte es für Müll Argumentliste drucken
  • Configuration / Build System:
  • Null Beispiel: Müssen Sie sind config.h es um, ob dies oder ist kein Kernel-Build. Dieses Problem existiert noch in einigen anderen Datei, die möglicherweise zu definieren main ().

Was ist neu in Version 7.8:

  • Features: Weitere neue Features und erweiterte Funktionen:
  • Core Betriebssystem:
  • Watchdog Timer Allocation: (1) Wenn wir von HVE-Watchdog-Zeiten ausgeführt, die Logik wird nun zusätzliche Timer aus dem Heap. Eine Reserve von HVE-Watchdog-Timer aufrechterhalten wird, so dass es immer Timer für Interrupt-Handler zur Verfügung stehen. (2) Zusätzliche Unterstützung für statisch zugewiesenen Watchdog-Timer
  • Address Environment Support: (2) New OS APIs integriert in alle plattformspezifischen Kontext Schaltlogik (up_block_task (), up_unblock_task (), _exit (), und andere)
  • .
  • Kernel Build-Support: (1) Die MPU basierend & quot; Kernel Build & quot; zu einem geschützten build (CONFIG_BUILD_PROTECTED) umbenannt; Unterstützung für die neue MMU-basierte & quot; Kernel Build & quot; (CONFIG_BUILD_KERNEL), (2) Der Systemaufruf Bibliothek können jetzt mit CONFIG_NUTTX_KERNEL gebaut werden. Neue Auswahl *:. CONFIG_LIB_SYSCALL
  • Systemstart: Fügen Sie Konfigurationsoptionen, um das System von einem Programm auf einem Dateisystem (im Gegensatz zu einer Adresse im Speicher) starten
  • .
  • der Startparameter Pässe: Früher gab es zwei Möglichkeiten, Parameter, neue Aufgaben zu übergeben, abhängig von der Konfiguration werden: Entweder (1) argv [] wie geschaffen als ein Array mit jeder Saite strdup'ed. Oder (2) argv [] Array und Zeichenfolgen wurden auf dem Stapel erstellt werden, bevor die neue Aufgabe gestartet wurde. Nun, es gibt nur einen Weg, Weg (2). Way (1) könnte etwas kompakter, aber das ist es nicht wert zu tragen der Komplexität der zwei verschiedene Arten das gleiche tun.
  • Brett Initialisierung: In Fähigkeit zur Ausgangsplatte Initialisierung auf einem separaten Arbeitsthread auszuführen. Dies ist notwendig, weil es viele Fälle, in denen Initialisierungslogik kann auf der Start- / IDLE Thread ausgeführt. Das liegt daran, Sperrung oder Warte nicht auf der Leerlauf-Thread zulässig.
  • Memory Management:
  • Granule Allocator: (1) Fügen Sie eine neue Funktion, um un-allocatable Regionen in der Körnerhaufen zu reservieren. (2) Schnittstellen In den un-Initialisierung eines Granulat-Zuweisung.
  • Unterstützung
  • Seite Allocator: Fügen Sie eine einfache physikalische Seite Allocator auf der Grundlage der bestehenden NuttX Granulat-Zuweisung. Ich bin nicht sicher, wenn das Granulat allocator ausreichend deter für die lange Strecke zu verwenden, aber es wird einen Seite Allocator in Ort für sehr schnell testen.
  • Entfernen CONFIG_MM_MULTIHEAP: Non-multiheap Betrieb wird nicht mehr unterstützt
  • .
  • sbrk ():. Sbrk () ist jetzt in der Kernel-Version unterstützt die dynamische Größe, pro Prozess Haufen erlauben
  • Per-Prozess Heaps: Space zu Beginn des Prozessdatenraum ist nun für Anwender Haufen Managementstrukturen vorbehalten. In der Kernel-Build-Modus sind diese Haufen Strukturen zwischen dem Kernel und Code, um benutzerspezifische Daten zuzuweisen geteilt.
  • Benutzer Heap Management: Wenn eine privilegierte Thread beendet, haben wir, um den Kernel Allocator, um Speicher frei zu verwenden; Wenn ein nicht berechtigter Thread beendet, haben wir nicht, etwas zu tun ... Heap-Speicher wird aufgeräumt werden, wenn die Adresse Umfeld wird abgerissen.
  • Inter-Process Shared Memory Support: (1) Durchführung und Dokumentation hinzufügen shmget (), shmctl (), shmat () und shmdt (). (2) In-System-System ruft den Benutzer Call-Gate auf die Shared-Memory-Schnittstellen unterstützen. (3) In plattformspezifische Schnittstellendefinitionen erforderlich, um die Shared-Memory-Funktion unterstützen.
  • Virtuelle Seite Allocator: Hinzufügen von Unterstützung für eine pro-Prozess virtuellen Seite Allocator. Dies ist ein neues Mitglied der task_group_s Struktur. Die Zuordnungsvorrichtung initialisiert, wenn eine neue Benutzer-Prozess gestartet wird, und wenn der Prozess uninitialize Gruppe wird schließlich zerstört. Es wird von shmat () und shmdt () verwendet, um die virtuelle Adresse, auf die auf den freigegebenen physischen Speicher Karte holen.
  • Dateisysteme / Blocktreiber / MTD:
  • SMART FS: FS SMART und SMART FS procfs Updates von Ken Pettit
  • .
  • MTD:. Die MTD Read-Ahead / Write-Pufferschicht wird nun Funktions
  • Binary Formate:
  • Per-Prozess Heap:. In Logik, um die pro-Prozess Benutzer Haufen zu initialisieren, wenn jeder Benutzer Prozess gestartet
  • Grafik:
  • NxTerm: Ändern Sie alle Vorkommen von NxConsole zu NxTerm
  • .
  • Networking:
  • PHY Interrupts: (1) Standardisieren Sie eine PHY-Interrupt Anbringungsschnittstelle. (2) Hinzufügen von Unterstützung für ein ioctl, die verwendet werden können, um eine Anwendung zu benachrichtigen, wenn es zu einer Änderung in der Netzwerk-Status durch eine PHY-Interrupt signalisiert.
  • Verbesserte Send Logic: In der Vergangenheit war das erste Paket an einen neuen Netzwerk-Peer fehlschlagen würde; gäbe es keinen Eintrag in der ARP-Tabelle für die Peer-und so könnte eine ARP-Anfrage, dass die erste Paket ersetzen. Jetzt als Option, wenn CONFIG_NET_ARP_SEND = y, all Nachricht Logik (1) prüfen, ob der Peer-MAC-Adresse ist in der ARP-Tabelle, und wenn nicht, (2) senden ARP-Anforderungen in regelmäßigen Abständen, um die Zuordnung zu erhalten und (3) warten, bis die ARP-Antwort. Dann (4), wenn die ARP-Antwort wird dann empfangen die tatsächliche Sendelogik eingeleitet. So kann es zu einer Verzögerung, die mit dem ersten Paket zu einem neuen Peer gesendet werden, aber das Paket nicht verloren gehen
  • Host Simulation:
  • SPI-Flash-Treiber:. Emulierte SPI-Flash-Treiber für die SIM-Ziel von Ken Pettit
  • Intel x86:
  • Standard-Host: Der Standard-Host ist jetzt x86_64 und die Option -m32 automatisch für die Simulation baut ausgewählt werden
  • .
  • Intel 8051 Familie:
  • 8051 Entfernt: Entfernt alle Unterstützung für die 8051-Familie Architektur aus dem NuttX Quellbaum. Der veraltete Code zusammen mit der Entfernung Patch kann nun bei misc / Obsoleted / gefunden werden. Dieser Code wurde entfernt, weil (1), obwohl einige Funktionen nachgewiesen ist, ich bin nicht bekannt, dass wirklich erfolgreich Häfen NuttX auf jede 8051, und (2) der 8051 mit seiner Hardware-Stapel, zwingt Einschränkungen und Komplikationen zu den anderen Architekturen und stellen Wachstum und die Entwicklung NuttX komplexer.
  • ZiLOG ZNEO Boards:
  • configs / 16z: Unterstützung für dieses Board hat von der NuttX Source-Tree entfernt (aber immer noch in der misc / Obsoleted Verzeichnis zu finden). Dieser Anschluss ist nicht bereit für den Einsatz, sondern kann auf die NuttX Baum zu einem bestimmten Zeitpunkt in der Zukunft zurückkehren.
  • Atmel SAM3 / 4 Boards:
  • SAM4E-EK:. In (1) eine voll funktionsfähige ILI9341-basierte LCD-Treiber und (2) eine voll funktionsfähige NxWM Konfiguration
  • ARMv7-A:
  • Adresse Environments: Hinzufügen von Unterstützung für Anwendungsumgebungen Adresse mit dem Cortex-A MMU. Implementieren standardisierte plattformspezifische Schnittstellen NuttX Adresse Umweltmaßnahmen.
  • Cache-Vorgänge: Implementieren standardisierte, plattformspezifische Cache-Operationen. Diese werden von der ELF-Lader, um D-Cache zu leeren und ungültig I-Cache nach einem ELF-Modul in den Speicher geladen wurde genannt. Mit dieser Änderung ELF-Module korrekt funktionieren auf der SAMA5 / Cortex-A-Plattform.
  • Kernel Körperbau: (1) Implementierungen der Systemaufruf Tor hinzufügen. (2) In CRT0 Start-up-Datei, die mit separat gebaut Anwenderprogrammen verknüpft werden können. (3) Hinzufügen von Unterstützung für die Lieferung der Einsatz Taktsignale in den Kernel zu bauen. (4) Logik hinzufügen, um die pro-Prozess Benutzer Haufen zu initialisieren, wenn jeder Benutzer wird gestartet. (5) ARMv7-A Ausnahmebehandlung muss ein wenig anders funktionieren, wenn wir unterstützt Prozesse im Benutzermodus. Dies liegt daran, R13 und R14 sind verschieden zwischen Benutzer und SVC-Modus eingelagert wird.
  • Shared Memory Support: (1) Logik notwendig, hand Neuzuordnung von Shared Memory auf Kontextwechsel hinzufügen. (2) Erweitern Sie virtuelle / physikalische Adresse Umbauten an Adressen in gemeinsam genutzten Speicher umfassen. (3) In Anwendung der plattformspezifischen Shared-Memory-Support.
  • Atmel SAMA5D Treiber:
  • Netzwerk IOCTLs:. Implementieren Sie alle Netzwerk ioctls, einschließlich der neuen ioctl einrichten PHY Ereignisbenachrichtigungen
  • Adresse Conversions:. In Kernel bauen mit Adresse Umgebung müssen Logik, um Benutzer virtuellen Adressen in physikalische Adressen abzubilden, und umgekehrt
  • Atmel SAMA5D Boards:
  • SAMA5D3 Xplained, SAMA5D3-EK und SAMA5D4-EK: Konvertieren Sie vorhandene Bord spezifischen PHY-Interrupt Schnittstellen zu neu definierten Standardschnittstelle zu verwenden
  • .
  • SAMA5D4-EK: Fügen Sie eine Konfiguration zum Testen der Kernel-Build-Konfiguration. Es gibt Konfigurationen, entweder von einer SD-Karte oder von und In-Memory-romfs Dateisystem zu starten.
  • SAMA5D4-EK: In der Dokumentation / Unterstützung für Rev E. Brett
  • .
  • STMicro STM32 Treiber:
  • Ethernet: Geändert, um die Änderung zu den Netzwerk ioctl Unterschrift Änderungen unterstützen. Fügen Sie auch Unterstützung für neue ioctl einrichten PHY Ereignisbenachrichtigungen.
  • STMicro STM32 Boards:
  • STM32F4DISCOVERY mit STM32F4DIS-BB: Fügen Sie eine Netzwerk aktiviert NSH-Konfiguration für den STM32F4DISCOVERY Board mit dem STM32F4DIS-BB Basisplatine installiert. Fügt Unterstützung für den microSD-Kartensteckplatz auf der STM32F4DIS-BB-Trägerplatte.
  • TI Tiva Treiber:
  • TI CC3200: Hinzufügen von Unterstützung für die TI CC3200. Von Jim Ewing.
  • TI Tiva Boards:
  • TI CC3200 Launchpad: Hinzufügen von Unterstützung für die TI CC3200 Launchpad. Von Jim Ewing.
  • C Library:
  • poll ():. Neu implementiert poll () Verzögerung mit sem_timedwait ()
  • Configuration / Build System:
  • Export Ziel: In den Kernel oder geschützte baut, (1) nur die Benutzerbibliotheken exportiert werden sollen, (2) keine internen Header-Dateien kopieren oder Build-Skripte, wenn dies ein Kernel oder geschützt zu bauen, und (3) Anforderungen zu bündeln den Benutzer C-Startup-Datei (crt0), nicht die Kernel-Kopf-Objekt für den Kernel und geschützt baut.
  • Programm CFLAGS: Fügen Sie Logik, die uns erlauben wird, Benutzerbibliotheken mit verschiedenen CFLAGS als Kernel-Code zu erstellen. Dies ist notwendig, weil wir die gemeinsame -fno-Option beim Bau ELF-Code, um SHN_COMMON Verlagerungen zu verhindern.
  • Anwendungen:
  • NSH: Erweitern der NSH-Netzwerk-Initialisierung Logik. Es gibt jetzt eine Option, die eine Netzwerkmonitor-Thread, den Zustand der Verbindung zu überwachen schaffen wird. Wenn die Verbindung ausfällt, wird der Code versucht, anmutig legte den Ethernet-Treiber in einem DOWN-Zustand; Wenn der Link kommt zurück, wird der Code versucht, das Netzwerk wieder zu bringen.
  • ELF. Beispiel: Der ELF-Test / Beispiel wurde erweitert, so dass die einzelnen ELF Testprogramme können gegen die SYSCALL Bibliothek zu erstellen (sofern verfügbar) oder gegen den C-Bibliothek, zu beseitigen oder zu minimieren die Notwendigkeit für Symboltabellen
  • NxTerm: Ändern Sie alle Vorkommen von NxConsole zu NxTerm
  • .
  • MTDRWB. Beispiel: In einem Beispiel MTD R / W-Puffer testen
  • OS Testbeispiel: Hinzufügen einer trivialen Test sem_timedwait ()
  • .
  • Werkzeuge:









































  • Werkzeuge:




  • Werkzeuge:
























































































  • Werkzeuge:


























  • Bugfixes:






































































































Ähnliche Software

PC-BSD
PC-BSD

11 Apr 16

LoseThos
LoseThos

15 Apr 15

MccM MixTheme MT
MccM MixTheme MT

15 Apr 15

Kommentare zu NuttX

Kommentare nicht gefunden
Kommentar hinzufügen
Schalten Sie auf die Bilder!