NuttX

Logiciel capture d'écran:
NuttX
Détails logiciels:
Version: 7.9 Mise à jour
Date de transfert: 10 May 15
Développeur: Gregory Nutt
Licence: Gratuit
Popularité: 53

Rating: 4.0/5 (Total Votes: 1)

NuttX est une open source, système d'exploitation embarqué déterministe et libre en temps réel (RTOS), conçu à partir de l'offset pour être utilisable dans des environnements profondément ancrées ressources limitées. Il a une petite empreinte qui est utilisable dans les environnements micro-contrôleur, et il & rsquo; s entièrement évolutive de petit (8 bits) afin d'atténuer intégré (32 bits) systèmes.
Il vise également à être pleinement conforme aux normes, pour être temps entièrement vrai, et pour être totalement ouvert. NuttX a un riche ensemble fonction du système d'exploitation, une conception modulaire, il est hautement évolutive et configurable, ainsi que des normes conformes. Il est distribué avec une licence BSD non restrictive. Il est souvent surnommé par ses développeurs comme «minuscule Linux." Fonctionnalités à un caractéristiques glanceKey comprennent la gestion de base de la tâche, interface socket BSD, répartiteurs de mémoire (mémoire partagée, l'allocation de mémoire de tas standard, construction protégé avec MPU, plat accumulation intégré, par processus tas, allocateur granules et de taille dynamique), les configurations de mémoire, guide portage, entièrement préemptible, opération tickless, l'exploitation forestière et de pagination système à la demande.
En outre, le projet est livré avec des extensions pour gérer préemption, par thread, intégré dans les mesures de charge CPU, une documentation générale, les tâches facultatives qui comprennent des environnements d'adresse, les contrôles de tâches ANSI-comme et POSIX-like, horloges, pthreads, l'environnement variables, signaux, files d'attente de messages nommés, temporisateurs, systèmes de fichiers et les sémaphores de comptage.
Parmi les autres caractéristiques, on peut citer l'ordonnancement du tourniquet, FIFO, le soutien à l'héritage de priorité, le soutien à l'architecture de SoC, le soutien aux conseils des architectures, le soutien aux nouvelles architectures de processeur, horloges de surveillance, VxWorks-comme la gestion de la tâche, la redirection des E / S et transmis & ldquo; contrôler bornes & rdquo;. pris en charge platformsNuttX prend en charge une grande variété de plates-formes matérielles, parmi lesquelles nous pouvons citer de nombreux processeurs ARM, y compris ARM Cortex-M3, ARM926EJS, ARM7TDMI, ARM Cortex-M4, ARM Cortex-M0, ARM920T et ARM Cortex-A5, ainsi que l'Atmel 8 bits AVR, Freescale M68HCS12, plates-formes AVR32 Atmel AVR.
En outre, il prend également en charge diverses plates-formes Intel, tels que MicroChip PIC32MX (MIPS), 80c52 et 80 & fois; 86, plates-formes, y compris Zilog Zilog Z80, Zilog Z16F, Zilog Z8Encore! et Zilog eZ80 Acclaim !, et les Renesas / Hitachi SuperH et Renesas M16C / 26 plates-formes

Ce qui est nouveau dans cette version:.

  • Caractéristiques: nouvelles fonctionnalités supplémentaires et des fonctionnalités étendues:
  • Core OS:
  • Allocation Watchdog Timer: (1) Si nous manquons de temps pré-alloué chien de garde, la logique va maintenant consacrer minuteries supplémentaires à partir du tas. Une réserve de minuteries pré-alloué vigilance est maintenue de sorte qu'il y aura toujours des minuteries disponibles pour les gestionnaires d'interruption. (2) Ajout du support pour chien de garde alloué statiquement minuterie
  • Adresse soutien à l'environnement: (2) Nouvelles API OS intégré dans tout contexte spécifique à la plateforme de commutation logique (up_block_task (), up_unblock_task (), _exit (), et d'autres)
  • .
  • Kernel consolider l'appui: (1) Le MPU base & quot; construction du noyau & quot; renommé à une accumulation protégée (CONFIG_BUILD_PROTECTED); Ajout du support pour l'une nouvelle MMU basé & quot; construction du noyau & quot; (CONFIG_BUILD_KERNEL), (2) La bibliothèque de l'appel système peut maintenant être construit avec CONFIG_NUTTX_KERNEL. Nouvelle sélection *:. CONFIG_LIB_SYSCALL
  • Démarrage du système: Ajouter des options de configuration pour démarrer le système à partir d'un programme sur un système de fichiers (par rapport à une adresse en mémoire)
  • .
    Passing
  • paramètres du démarrage: il y avait deux façons de passer des paramètres à de nouvelles tâches, en fonction de la configuration: Soit (1) argv [] comme créé comme un tableau avec chaque chaîne strdup'ed. Ou (2) argv [] tableau et cordes ont été créés sur la pile avant la nouvelle tâche a été lancé. Maintenant, il n'y a qu'un moyen, moyen (2). Way (1) peut être légèrement plus compact, mais cela ne vaut pas porter la complexité de deux façons différentes de faire la même chose.
  • Initialisation du conseil d'administration: Ajouter capacité d'effectuer conseil initialisation initiale sur un thread de travail séparé. Cela est nécessaire parce qu'il ya de nombreux cas où la logique d'initialisation ne peut pas exécuter sur le démarrage / thread inactif. Cela est parce que le blocage ou attente est interdit sur le fil IDLE.
  • Gestion de la mémoire:
  • Granule Allocator: (1) Ajouter une nouvelle fonction à réserver régions non déterminables dans le tas de granules. (2) Ajouter interfaces pour soutenir un-initialiser un allocateur de granule.
  • Page Allocator: Ajouter une page physique simple allocateur basé sur le granulé allocateur NuttX existant. Je ne suis pas certaine si l'allocateur de granules est suffisamment déterministe pour une utilisation de longue portée, mais il obtient obtenir un allocateur en place pour tester très rapidement.
  • Supprimer CONFIG_MM_MULTIHEAP: opération non-multiheap est plus supporté
  • .
  • sbrk ():. Sbrk () est désormais pris en charge dans la compilation du noyau pour permettre de taille dynamique, tas par processus

  • Heaps
  • par processus: l'espace au début de l'espace de données de processus est maintenant réservé pour des structures de gestion utilisateur de tas. Dans le mode de compilation du noyau, ces structures de tas sont partagés entre le code du noyau et l'utilisation afin de répartir les données spécifiques à l'utilisateur.
  • Gestion utilisateur Heap: Quand un privilégiés thread se termine, nous devons utiliser l'allocateur de noyau pour libérer de la mémoire; quand un thread se termine non privilégiés, nous ne doivent pas faire quelque chose ... mémoire de tas sera nettoyé lorsque l'environnement d'adresse est démoli.
  • Inter-Process Support mémoire partagée: (1) la mise en œuvre Ajouter et la documentation de shmget (), shmctl (), shmat (), et shmdt (). (2) Ajouter système d'appels système pour soutenir la porte d'appel de l'utilisateur pour les interfaces de mémoire partagée. (3) Ajouter les définitions d'interface spécifiques à la plateforme nécessaires pour soutenir la fonction de mémoire partagée.
  • Virtual allocateur de pages: Ajout du support pour une page virtuelle allocateur par processus. Ceci est un nouveau membre de la structure task_group_s. L'allocateur doit être initialisé quand un nouveau processus utilisateur est démarré et uninitialize lorsque le groupe de processus est finalement détruit. Il est utilisé par shmat () et shmdt () pour récupérer l'adresse virtuelle sur laquelle la carte à la mémoire physique partagée.
  • Systèmes de fichiers / Bloc Pilotes / MTD:
  • FS: FS SMART SMART et SMART FS PROCFS mises à jour de Ken Pettit
  • .
  • MTD:. La couche MTD Lire vert / écriture tampon apparaît est maintenant fonctionnelle
  • format des fichiers binaires:
  • Per-Process Heap:. Ajouter logique pour initialiser l'utilisateur tas par processus où chaque processus utilisateur est démarré
  • Graphique:
  • nxterm: Changer toutes les occurrences de NxConsole à nxterm
  • .
  • Réseau:
  • PHY Interruptions: (1) Normaliser une interface de fixation PHY d'interruption. (2) Ajout du support pour un ioctl qui peut être utilisé pour notifier une demande quand il ya un changement dans l'état du réseau signalé par une interruption de PHY.
  • Amélioration Envoyer Logic: Dans le passé, le premier paquet envoyer à un nouveau réseau peer serait un échec; il n'y aurait pas entrée dans la table ARP pour les pairs et ainsi une requête ARP pourrait remplacer ce premier paquet. Maintenant, comme une option si CONFIG_NET_ARP_SEND = y, tous les envoyer logique sera (1) vérifier si le peer adresse MAC est dans la table ARP et, si non, (2) envoyer des requêtes ARP périodiquement pour obtenir la cartographie et (3) d'attendre la réponse ARP. Puis (4) lorsque la réponse ARP est reçue alors la logique d'envoi réel sera lancé. Ainsi il peut y avoir un retard dans le premier paquet envoyé à une nouvelle pairs, mais le paquet ne doit pas être perdue
  • Simulation Host:
  • FLASH SPI Driver:. Émulé pilote SPI FLASH pour la cible SIM de Ken Pettit
  • Intel x86:
  • Hôte par défaut: L'hôte par défaut est maintenant x86_64 et l'option -m32 sera automatiquement sélectionné pour la simulation construit
  • .
  • Intel famille 8051:
  • 8051 Suppression: Suppression de tout le soutien de l'architecture 8051 de la famille de l'arbre source NuttX. Le code obsolète avec le patch de retrait peut maintenant être trouvé à divers / / Rendu obsolète. Ce code a été supprimé parce que (1), bien que certaines fonctionnalités a été démontré, je ne suis pas au courant de tous les ports vraiment réussis de NuttX à tout 8051, et (2) le 8051, avec sa pile de matériel, les forces limites et les complications pour les autres architectures et faire de la croissance et le développement de NuttX plus complexe.
  • ZiLOG ZNeo conseils:
  • configs / 16z: Prise en charge de ce conseil a été retiré de l'arbre source NuttX (mais peut encore être trouvé dans le répertoire divers / Rendu obsolète). Ce port est pas prêt pour utilisation, mais peut revenir à l'arbre NuttX à un certain moment dans l'avenir.
  • Atmel SAM3 / 4 conseils:
  • SAM4E-EK:. Ajouter (1) un pilote de LCD entièrement fonctionnelle basée ILI9341 et (2) une configuration de NxWM entièrement fonctionnelle
  • ARMv7-A:
  • Environnements de Adresse: Ajout du support pour les environnements d'adresses de l'application en utilisant le Cortex-A MMU. Mettre en œuvre des interfaces standardisées spécifiques à la plateforme de NuttX soutien de l'environnement d'adresse.
  • Opérations de cache: Mettre en œuvre des opérations standardisées de cache spécifiques à la plateforme. Ceux-ci sont appelés depuis le loader ELF pour rincer D-cache et d'invalider I-cache après un module de ELF a été chargé en mémoire. Avec ce changement, les modules de ELF fonctionnent correctement sur le SAMA5 / Cortex-A plate-forme.
  • Kernel construction: (1) Ajouter des implémentations de la porte de l'appel système. (2) Ajouter crt0 fichier de démarrage qui peut être liée à des programmes utilisateur construites séparément. (3) Ajout du support pour la livraison de signaux en mode utilisation dans la construction d'un noyau. (4) Ajouter logique pour initialiser l'utilisateur tas par processus où chaque processus utilisateur est démarré. (5) ARMv7-A manipulation d'exception a besoin de travailler un peu différemment si nous soutenons les processus en mode utilisateur. Ceci est parce R13 et R14 sont paged différemment entre le mode utilisateur et SVC.
  • Shared Support mémoire: (1) Ajouter logique nécessaire pour gérer remappage de la mémoire partagée sur les changements de contexte. (2) Étendre les conversions d'adresses virtuelles / physiques à inclure des adresses dans la mémoire partagée. (3) Ajouter la mise en œuvre du support de la mémoire partagée propre à la plateforme.
  • Pilotes Atmel SAMA5D:
  • Ioctls Réseau:. Mettre en œuvre toutes les ioctl d'un réseau, y compris la nouvelle ioctl pour les notifications d'événements configuration PHY
  • Conversions d'adresse:. Dans le noyau de construire avec l'environnement d'adresse, logique besoin de cartographier utilisateurs adresses virtuelles en adresses physiques, et vice versa
  • Atmel SAMA5D conseils:
  • SAMA5D3 Xplained, SAMA5D3-EK, et SAMA5D4-EK: Convertir interfaces PHY conseil spécifique d'interruption existant à utiliser interface standard nouvellement défini
  • .
  • SAMA5D4-EK: Ajouter une configuration pour tester la configuration de construction du noyau. Il ya des configurations de démarrer soit à partir d'une carte SD ou de et en mémoire système de fichiers romfs.
  • SAMA5D4-EK: Ajouter documentation / soutien à Rev E. conseil
  • .
  • Pilotes STMicro STM32:
  • Ethernet: modification de soutenir la modification des changements de signature de ioctl du réseau. Ajoutez également un soutien pour la nouvelle ioctl pour les notifications d'événements configuration PHY.
  • STMicro STM32 conseils:
  • STM32F4Discovery avec STM32F4DIS-BB: Ajouter un réseau activé configuration NSH pour le conseil STM32F4Discovery avec le conseil de base STM32F4DIS-BB installée. Inclut le support pour la fente pour carte microSD sur la carte de base STM32F4DIS-BB.
  • Pilotes TI Tiva:
  • TI CC3200: Ajout du support pour le CC3200 TI. De Jim Ewing.
  • TI Tiva conseils:
  • TI CC3200 Launchpad: Ajout du support pour la TI CC3200 Launchpad. De Jim Ewing.
  • C Library:
  • poll ():. Re-mise en œuvre poll () retard à l'aide sem_timedwait ()
  • Configuration / système de construction:
  • Exporter cible: Dans le noyau ou protégé construit, (1) que les bibliothèques utilisateur doivent être exportés, (2) ne pas copier des fichiers d'en-têtes ou de construire son exécution si cela est un noyau ou construction protégée, et (3) les besoins emmitoufler le fichier utilisateur C de démarrage (crt0), pas l'objet de la tête du noyau pour le noyau et protégé construit.
  • Programme CFLAGS: Ajouter logique qui nous permettra de construire des bibliothèques d'utilisateurs avec différents CFLAGS que le code du noyau. Cela est nécessaire parce que nous devons l'option -fno-commune lors de la construction code ELF pour éviter les délocalisations d'SHN_COMMON.
  • Applications:
  • NSH: Elargir la logique d'initialisation du réseau de NSH. Il ya maintenant une option qui permettra de créer un fil de moniteur de réseau qui permettra de surveiller l'état de la liaison. Lorsque le lien tombe en panne, le code va tenter de mettre gracieusement le pilote Ethernet dans un état bas; Lorsque le lien revient, le code va tenter de ramener le réseau en place.
  • ELF. Exemple: Le test ELF / exemple a été étendue de sorte que les programmes de test ELF individuels peuvent se lier à la bibliothèque de SYSCALL (si elle est disponible) ou à la bibliothèque C pour éliminer ou réduire la nécessité pour les tables de symboles
  • nxterm: Changer toutes les occurrences de NxConsole à nxterm
  • .
  • MTDRWB Exemple:. Ajouter un exemple pour tester MTD R / W tampon
  • OS Exemple Test: Ajouter un test trivial de sem_timedwait ()
  • .
  • Configuration de l'application / système de construction:
  • Importer cible: (1) Ajouter la logique qui permettra aux applications du bâtiment contre un paquet d'exportation NuttX (contre l'nuttx / arbre source). (2) Ajouter un fichier .config à exporter package. (3) Créer des applications / import. Créez des applications / import / Make.defs qui fait des choses comme définir CFLAGS; ELF construction nécessite -fno-common dans CFLAGS. Copiez certaine logique de base de nuttx / outils / Config.mk aux applications / import / Make.defs. (4) Ajouter des applications / import / scripts / script GCC gnu-linker elf.ld pour ELF importation construit.
  • Tous les Makefiles: (1) Ajouter une cible d'installation à tous les fichiers makefile. Pour la construction de l'importation, le Makefile de haut niveau fait maintenant deux passes: (1) construit libapp.a, puis (2) installe les programmes dans des applications / bin. (2) Ajouter l'installation du programme pour CONFIG_BUILD_KERNEL dans tous les Makefiles qui construisent une main (). (3) Pour construction du noyau, le fichier objet contenant principal () ne peut pas aller dans la bibliothèque en raison de collisions de noms. Le fichier objet doit être traitée comme un cas spécial dans chaque Makefile.
  • Tous les programmes Built-In: Avec construction du noyau (CONFIG_BUILD_KERNEL), le point à toutes les tâches d'entrée est le principal (), pas un xyz_main ()
  • .
  • NSH: Plusieurs commandes doivent être désactivés dans la compilation du noyau, car ils dépendent sur les interfaces qui ne sont pas disponibles à l'extérieur du noyau:. Dd, df, losetup, mkfatfs, mkdr, et ps
  • applications / tools /: (1) Ajouter mkimport.sh exploser un package d'importation NuttX et installer dans apps / import. (2) Ajouter le script mkromfsimg.sh pour créer une image BOOT romfs du système de fichiers.
  • ELF et les exemples NxFLAT:. Ne pas construire des scénarios de test qui utilisent task_create () si il ya un environnement d'adresse
  • Outils:
  • refresh.sh:. Ajouter un outil pour faire des configurations rafraîchissantes plus facile quand vous voulez faire beaucoup d'entre eux
  • mksyscall.c: Créer syscalls qui ne nécessitent pas les fichiers d'en-tête
  • .
  • mkexport.sh:. Ajouter un fichier .config à exporter paquet
  • applications / outils: Voir ci-dessus pour les nouvelles applications / outils scripts
  • .
  • Les efforts en cours. Ce qui suit sont des caractéristiques qui sont partiellement mises en œuvre, mais présentes dans cette version. Ils ne sont pas susceptibles d'être bientôt terminé.
  • Processus: La plupart des travaux dans ce communiqué est axé sur la réalisation des processus utilisateur Unix-style dans NuttX. Cependant, il ya encore beaucoup à faire,. La feuille de route plein et est disponible à l'adresse: http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
  • XMega: Il ya quelques fragments en place pour un port XMega. Ce port n'a pas vraiment commencé, cependant.
  • Galileo: De même, il ya des fragments en place pour un port Intel Galileo. Le port pas été commencé pour de bon non plus.
  • Correction de bugs. Seules les corrections de bugs les plus critiques sont listés ici (voir le ChangeLog pour la liste complète des corrections de bugs et des informations supplémentaires de correction de bogues, plus détaillée):
  • Core OS:
  • Kernel construire correctifs: (1) la configuration IDLE TCB doit indiquer que le thread inactif est un thread noyau privilégié. (2) Ne pas construire task_create () ou task_spawn () interfaces si il ya un environnement d'adresse. (3) posix_spawn () fil de proxy du noyau devrait être un thread noyau, pas une tâche de l'utilisateur.
  • Plusieurs interfaces pthread: Ajouter classe de stockage const phthread paramètres. De Freddie Chopin.
  • sched / horloge: Retirer vestiges de g_tickbias; besoin, à la place, d'appliquer le biais de temps de g_basetime afin de fournir l'heure système correcte.
  • Appels système: (1) Corrections de plusieurs fautes; l'intégration corrigée de exevc (), les appels execvl (), posix_spawn (), et le système de posix_spawnp (). (2) Si nous sont configurés pour utiliser une pile du noyau tandis que dans la manipulation de SYSCALL, alors nous devons revenir à la pile de l'utilisateur pour délivrer un signal.
  • Systèmes de fichiers / Bloc Pilotes / MTD:
  • procfs: Correction de quelques bris de procf introduit par la réorganisation de certaines structures de données non-reorganizable. De Ken Pettit.
  • AT45: En at45db_bwrite (), le tampon ne soit pas augmentée lors de l'écriture de plus de 1 page. Sourceforge bug # 34.
  • format des fichiers binaires:
  • délocalisations ELF: Certains types de réinstallation ne sont pas un symbole nommé associé avec eux. La conception ne tient pas compte de ce cas.
  • ELF Loader:. Bugfix critique .. BSS n'a pas été défrichées
  • Gestion de la mémoire:
  • Granule Allocator: Granules initialisation de l'allocateur utilise mal allocateur à mettre de côté la mémoire du noyau
  • .
  • Groupes privilégiés: Ajouter un drapeau à la structure du groupe: Si le groupe est créé par un thread noyau, puis toutes les ressources du groupe doivent être privilégiés
  • .
  • Support Cryptogrphic:
  • crypto / cryptodev.c: segments de chemin inverse en comprennent le chemin du fichier. Noté par Brennan Ashton.
  • Pilotes communs:
  • commune peut-moitié supérieure: Dans can_txdone, serveurs sur le sémaphore doit être informé indépendamment de la valeur de retour de can_xmit. D'abord, il retourne -EIO si il n'y a pas de nouveaux paquets, et la seconde les informations des serveurs est sur le dernier paquet transféré. De Daniel Lazlo Sitzer.
  • ARM:
  • Appels Système: Correction d'un faute de frappe dans l'appel système lors de la récupération paramètre de la pile: regs [REG_PC] 4 est l'adresse, pas regs [REG_PC + 4]
  • .
  • Pilotes STMicro STM32:
  • STM32 F401 UART: support correct pour USART6 sur cette puce. De Freddie Chopin.
  • STM32 FLASH fixe: utiliser size_t lieu de uint16_t, assurez interface plus générique. De Freddie Chopin.
  • STM32 UART:. Correctif pour UART7 et UART8 sur l'horloge STM32 permettre d'Aton
  • CAN: A la fin du gestionnaire d'interruption, les interruptions ont été désactivées, si tous les paquets ont été transférés lorsque le gestionnaire d'interruption a été invoquée. Cela pose un problème, parce que le gestionnaire d'interruption appelle can_txdone () de la partie supérieure qui peut en file d'attente de nouveaux paquets à envoyer. Enlevée le bloc tout à fait, parce can_txdone () appelle can_xmit () qui désactive les interruptions si il n'y a pas de nouveaux paquets à envoyer. De Daniel Lazlo Sitzer.
  • CAN:. STM32 correction CAN supplémentaires proposée par Max Holtzberg
  • STMicro ST32 conseils:
  • configs / MIKROE-STM32F4: Fixer quelques bugs et compiler des corrections mineures à la source de configuration MIKROE-STM32F4. De Ken Pettit.
  • ARM9 / ARMv7-A:
  • Appels Système: Fixer ARM7 / 9 et Cortex-A SYSCALLS: Pour les discussions en mode SVC, les instructions SVC clobbers R14. Ceci doit être pris en compte dans l'ensemble en ligne.
  • Configuration Groupe: Toutes les tâches, même les tâches en mode utilisateur, doit commencer en mode superviseur jusqu'à ce qu'ils obtiennent passé le trampoline de démarrage
  • .
  • ARMv7-A: Modifier up_fullcontextrestore () pour CONFIG_BUILD_KERNEL. Il a changé CPSR tout dans le noyau. Cela va se planter si le nouveau CPSR est en mode utilisateur lors de l'exécution dans l'espace noyau. Fixé par l'ajout d'un appel système SYS_context_restore. Il ya une alternative, modification simple à up_fullcontextrestore () qui aurait pu être fait: Il aurait été possible d'utiliser la SPSR au lieu du Compresseur et ensuite faire une déclaration de dérogation à up_fullcontextrestore (). Ce serait plus efficace, mais je jamais essayé.
  • Atmel SAM3 / 4 conseils:
  • SAM3X / Arduino Due: Correction de typo dans sam3x_periphclks.h; ajouter des définitions SCLK à board.h fichier d'en-tête. De Fabien Comte.
  • SAM3 RTT: Seulement famille SAM4 a RTTDIS bit dans le registre de MR. SourceForge bug # 33 de Fabien Comte.
  • C Library:
  • sscanf (): NuttX libc a essayé de deviner le nombre de caractères à analyser, les extrait dans un tampon, puis a couru strtol () sur ce tampon. Ce conjecture était souvent tort. Une meilleure approche serait d'appeler strtol () directement sur les données d'entrée, en utilisant la valeur de retour de endptr pour déterminer le nombre de caractères à sauter après l'analyse. De Kosma Moczek.
  • Bibliothèque Math:. Corrigé atan2 implémentations de Denis Arnst
  • Floating Point Sortie: Changer pour lib_dtoa () pour corriger l'erreur de précision de zéros. De Bob Doiron.
  • Applications:
  • commande Fix NSH PS:. Si il n'y a pas des arguments, il pourrait imprimer des ordures pour la liste d'argument
  • Configuration / système de construction:
  • Null Exemple: Nécessité d'inclure afin config.h sait si cela est ou non une compilation du noyau. Ce problème existe encore dans plusieurs autres fichiers qui peuvent avoir besoin de définir main ().

Ce qui est nouveau dans la version 7.8:

  • Caractéristiques: nouvelles fonctionnalités et des fonctionnalités étendues:
  • Core OS:
  • Allocation Watchdog Timer: (1) Si nous manquons de temps pré-alloué chien de garde, la logique va maintenant consacrer minuteries supplémentaires à partir du tas. Une réserve de minuteries pré-alloué vigilance est maintenue de sorte qu'il y aura toujours des minuteries disponibles pour les gestionnaires d'interruption. (2) Ajout du support pour chien de garde alloué statiquement minuterie
  • Adresse soutien à l'environnement: (2) Nouvelles API OS intégré dans tout contexte spécifique à la plateforme de commutation logique (up_block_task (), up_unblock_task (), _exit (), et d'autres)
  • .
  • Kernel consolider l'appui: (1) Le MPU base & quot; construction du noyau & quot; renommé à une accumulation protégée (CONFIG_BUILD_PROTECTED); Ajout du support pour l'une nouvelle MMU basé & quot; construction du noyau & quot; (CONFIG_BUILD_KERNEL), (2) La bibliothèque de l'appel système peut maintenant être construit avec CONFIG_NUTTX_KERNEL. Nouvelle sélection *:. CONFIG_LIB_SYSCALL
  • Démarrage du système: Ajouter des options de configuration pour démarrer le système à partir d'un programme sur un système de fichiers (par rapport à une adresse en mémoire)
  • .
    Passing
  • paramètres du démarrage: il y avait deux façons de passer des paramètres à de nouvelles tâches, en fonction de la configuration: Soit (1) argv [] comme créé comme un tableau avec chaque chaîne strdup'ed. Ou (2) argv [] tableau et cordes ont été créés sur la pile avant la nouvelle tâche a été lancé. Maintenant, il n'y a qu'un moyen, moyen (2). Way (1) peut être légèrement plus compact, mais cela ne vaut pas porter la complexité de deux façons différentes de faire la même chose.
  • Initialisation du conseil d'administration: Ajouter capacité d'effectuer conseil initialisation initiale sur un thread de travail séparé. Cela est nécessaire parce qu'il ya de nombreux cas où la logique d'initialisation ne peut pas exécuter sur le démarrage / thread inactif. Cela est parce que le blocage ou attente est interdit sur le fil IDLE.
  • Gestion de la mémoire:
  • Granule Allocator: (1) Ajouter une nouvelle fonction à réserver régions non déterminables dans le tas de granules. (2) Ajouter interfaces pour soutenir un-initialiser un allocateur de granule.
  • Page Allocator: Ajouter une page physique simple allocateur basé sur le granulé allocateur NuttX existant. Je ne suis pas certaine si l'allocateur de granules est suffisamment déterministe pour une utilisation de longue portée, mais il obtient obtenir un allocateur en place pour tester très rapidement.
  • Supprimer CONFIG_MM_MULTIHEAP: opération non-multiheap est plus supporté
  • .
  • sbrk ():. Sbrk () est désormais pris en charge dans la compilation du noyau pour permettre de taille dynamique, tas par processus

  • Heaps
  • par processus: l'espace au début de l'espace de données de processus est maintenant réservé pour des structures de gestion utilisateur de tas. Dans le mode de compilation du noyau, ces structures de tas sont partagés entre le code du noyau et l'utilisation afin de répartir les données spécifiques à l'utilisateur.
  • Gestion utilisateur Heap: Quand un privilégiés thread se termine, nous devons utiliser l'allocateur de noyau pour libérer de la mémoire; quand un thread se termine non privilégiés, nous ne doivent pas faire quelque chose ... mémoire de tas sera nettoyé lorsque l'environnement d'adresse est démoli.
  • Inter-Process Support mémoire partagée: (1) la mise en œuvre Ajouter et la documentation de shmget (), shmctl (), shmat (), et shmdt (). (2) Ajouter système d'appels système pour soutenir la porte d'appel de l'utilisateur pour les interfaces de mémoire partagée. (3) Ajouter les définitions d'interface spécifiques à la plateforme nécessaires pour soutenir la fonction de mémoire partagée.
  • Virtual allocateur de pages: Ajout du support pour une page virtuelle allocateur par processus. Ceci est un nouveau membre de la structure task_group_s. L'allocateur doit être initialisé quand un nouveau processus utilisateur est démarré et uninitialize lorsque le groupe de processus est finalement détruit. Il est utilisé par shmat () et shmdt () pour récupérer l'adresse virtuelle sur laquelle la carte à la mémoire physique partagée.
  • Systèmes de fichiers / Bloc Pilotes / MTD:
  • FS: FS SMART SMART et SMART FS PROCFS mises à jour de Ken Pettit
  • .
  • MTD:. La couche MTD Lire vert / écriture tampon apparaît est maintenant fonctionnelle
  • format des fichiers binaires:
  • Per-Process Heap:. Ajouter logique pour initialiser l'utilisateur tas par processus où chaque processus utilisateur est démarré
  • Graphique:
  • nxterm: Changer toutes les occurrences de NxConsole à nxterm
  • .
  • Réseau:
  • PHY Interruptions: (1) Normaliser une interface de fixation PHY d'interruption. (2) Ajout du support pour un ioctl qui peut être utilisé pour notifier une demande quand il ya un changement dans l'état du réseau signalé par une interruption de PHY.
  • Amélioration Envoyer Logic: Dans le passé, le premier paquet envoyer à un nouveau réseau peer serait un échec; il n'y aurait pas entrée dans la table ARP pour les pairs et ainsi une requête ARP pourrait remplacer ce premier paquet. Maintenant, comme une option si CONFIG_NET_ARP_SEND = y, tous les envoyer logique sera (1) vérifier si le peer adresse MAC est dans la table ARP et, si non, (2) envoyer des requêtes ARP périodiquement pour obtenir la cartographie et (3) d'attendre la réponse ARP. Puis (4) lorsque la réponse ARP est reçue alors la logique d'envoi réel sera lancé. Ainsi il peut y avoir un retard dans le premier paquet envoyé à une nouvelle pairs, mais le paquet ne doit pas être perdue
  • Simulation Host:
  • FLASH SPI Driver:. Émulé pilote SPI FLASH pour la cible SIM de Ken Pettit
  • Intel x86:
  • Hôte par défaut: L'hôte par défaut est maintenant x86_64 et l'option -m32 sera automatiquement sélectionné pour la simulation construit
  • .
  • Intel famille 8051:
  • 8051 Suppression: Suppression de tout le soutien de l'architecture 8051 de la famille de l'arbre source NuttX. Le code obsolète avec le patch de retrait peut maintenant être trouvé à divers / / Rendu obsolète. Ce code a été supprimé parce que (1), bien que certaines fonctionnalités a été démontré, je ne suis pas au courant de tous les ports vraiment réussis de NuttX à tout 8051, et (2) le 8051, avec sa pile de matériel, les forces limites et les complications pour les autres architectures et faire de la croissance et le développement de NuttX plus complexe.
  • ZiLOG ZNeo conseils:
  • configs / 16z: Prise en charge de ce conseil a été retiré de l'arbre source NuttX (mais peut encore être trouvé dans le répertoire divers / Rendu obsolète). Ce port est pas prêt pour utilisation, mais peut revenir à l'arbre NuttX à un certain moment dans l'avenir.
  • Atmel SAM3 / 4 conseils:
  • SAM4E-EK:. Ajouter (1) un pilote de LCD entièrement fonctionnelle basée ILI9341 et (2) une configuration de NxWM entièrement fonctionnelle
  • ARMv7-A:
  • Environnements de Adresse: Ajout du support pour les environnements d'adresses de l'application en utilisant le Cortex-A MMU. Mettre en œuvre des interfaces standardisées spécifiques à la plateforme de NuttX soutien de l'environnement d'adresse.
  • Opérations de cache: Mettre en œuvre des opérations standardisées de cache spécifiques à la plateforme. Ceux-ci sont appelés depuis le loader ELF pour rincer D-cache et d'invalider I-cache après un module de ELF a été chargé en mémoire. Avec ce changement, les modules de ELF fonctionnent correctement sur le SAMA5 / Cortex-A plate-forme.
  • Kernel construction: (1) Ajouter des implémentations de la porte de l'appel système. (2) Ajouter crt0 fichier de démarrage qui peut être liée à des programmes utilisateur construites séparément. (3) Ajout du support pour la livraison de signaux en mode utilisation dans la construction d'un noyau. (4) Ajouter logique pour initialiser l'utilisateur tas par processus où chaque processus utilisateur est démarré. (5) ARMv7-A manipulation d'exception a besoin de travailler un peu différemment si nous soutenons les processus en mode utilisateur. Ceci est parce R13 et R14 sont paged différemment entre le mode utilisateur et SVC.
  • Shared Support mémoire: (1) Ajouter logique nécessaire pour gérer remappage de la mémoire partagée sur les changements de contexte. (2) Étendre les conversions d'adresses virtuelles / physiques à inclure des adresses dans la mémoire partagée. (3) Ajouter la mise en œuvre du support de la mémoire partagée propre à la plateforme.
  • Pilotes Atmel SAMA5D:
  • Ioctls Réseau:. Mettre en œuvre toutes les ioctl d'un réseau, y compris la nouvelle ioctl pour les notifications d'événements configuration PHY
  • Conversions d'adresse:. Dans le noyau de construire avec l'environnement d'adresse, logique besoin de cartographier utilisateurs adresses virtuelles en adresses physiques, et vice versa
  • Atmel SAMA5D conseils:
  • SAMA5D3 Xplained, SAMA5D3-EK, et SAMA5D4-EK: Convertir interfaces PHY conseil spécifique d'interruption existant à utiliser interface standard nouvellement défini
  • .
  • SAMA5D4-EK: Ajouter une configuration pour tester la configuration de construction du noyau. Il ya des configurations de démarrer soit à partir d'une carte SD ou de et en mémoire système de fichiers romfs.
  • SAMA5D4-EK: Ajouter documentation / soutien à Rev E. conseil
  • .
  • Pilotes STMicro STM32:
  • Ethernet: modification de soutenir la modification des changements de signature de ioctl du réseau. Ajoutez également un soutien pour la nouvelle ioctl pour les notifications d'événements configuration PHY.
  • STMicro STM32 conseils:
  • STM32F4Discovery avec STM32F4DIS-BB: Ajouter un réseau activé configuration NSH pour le conseil STM32F4Discovery avec le conseil de base STM32F4DIS-BB installée. Inclut le support pour la fente pour carte microSD sur la carte de base STM32F4DIS-BB.
  • Pilotes TI Tiva:
  • TI CC3200: Ajout du support pour le CC3200 TI. De Jim Ewing.
  • TI Tiva conseils:
  • TI CC3200 Launchpad: Ajout du support pour la TI CC3200 Launchpad. De Jim Ewing.
  • C Library:
  • poll ():. Re-mise en œuvre poll () retard à l'aide sem_timedwait ()
  • Configuration / système de construction:
  • Exporter cible: Dans le noyau ou protégé construit, (1) que les bibliothèques utilisateur doivent être exportés, (2) ne pas copier des fichiers d'en-têtes ou de construire son exécution si cela est un noyau ou construction protégée, et (3) les besoins emmitoufler le fichier utilisateur C de démarrage (crt0), pas l'objet de la tête du noyau pour le noyau et protégé construit.
  • Programme CFLAGS: Ajouter logique qui nous permettra de construire des bibliothèques d'utilisateurs avec différents CFLAGS que le code du noyau. Cela est nécessaire parce que nous devons l'option -fno-commune lors de la construction code ELF pour éviter les délocalisations d'SHN_COMMON.
  • Applications:
  • NSH: Elargir la logique d'initialisation du réseau de NSH. Il ya maintenant une option qui permettra de créer un fil de moniteur de réseau qui permettra de surveiller l'état de la liaison. Lorsque le lien tombe en panne, le code va tenter de mettre gracieusement le pilote Ethernet dans un état bas; Lorsque le lien revient, le code va tenter de ramener le réseau en place.
  • ELF. Exemple: Le test ELF / exemple a été étendue de sorte que les programmes de test ELF individuels peuvent se lier à la bibliothèque de SYSCALL (si elle est disponible) ou à la bibliothèque C pour éliminer ou réduire la nécessité pour les tables de symboles
  • nxterm: Changer toutes les occurrences de NxConsole à nxterm
  • .
  • MTDRWB Exemple:. Ajouter un exemple pour tester MTD R / W tampon
  • OS Exemple Test: Ajouter un test trivial de sem_timedwait ()
  • .













































  • Outils:
























































































  • Outils:


























  • Correction de bugs:






































































































Logiciel similaire

Commentaires à NuttX

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!