NuttX es un código abierto, el sistema operativo embebido en tiempo real determinista y libre (RTOS), diseñado a partir de la desviación de poder utilizarse en entornos con recursos limitados profundamente arraigadas. Cuenta con una pequeña huella que se puede utilizar en entornos micro-controlador, y es y rsquo; s totalmente escalable desde pequeñas (de 8 bits) a moderada incrustado sistemas (32 bits).
También pretende ser totalmente compatible con los estándares, para ser tiempo totalmente real, y ser totalmente abierta. NuttX tiene un rico conjunto de características del sistema operativo, un diseño modular, es altamente escalable y configurable, así como compatible con las normas. Se distribuye con una licencia BSD no restrictiva. A menudo es apodado por sus desarrolladores como "Tiny Linux." Características de un glanceKey características incluyen la gestión central de tareas, interfaz de socket BSD, asignadores de memoria (memoria compartida, la asignación de memoria de pila estándar, acumulación protegido con MPU, construcción plana incrustado, por proceso montones, asignador de gránulos y dinámicamente de tamaño), configuraciones de memoria, guía de portar,, operación tickless totalmente derecho preferente de compra, registro y sistema de paginación bajo demanda.
Además, el proyecto cuenta con extensiones para gestionar de suscripción preferente, por hilo, una función de mediciones de carga de CPU, una amplia documentación, tareas opcionales que contienen entornos de dirección, controles de tareas ANSI-como y POSIX-como, relojes, pthreads, el medio ambiente variables, señales, llamados colas de mensajes, temporizadores, sistemas de archivos y los semáforos de conteo.
Entre otras características, podemos mencionar la programación de todos contra todos, FIFO, el apoyo a la herencia de prioridad, el apoyo a la arquitectura SoC, soporte para arquitecturas de mesa, el apoyo a las nuevas arquitecturas de procesador, temporizadores de vigilancia, VxWorks-al igual que la gestión de tareas, me redirección de E / S y transmite y ldquo; el control de terminales y rdquo;. Apoyado platformsNuttX soporta una amplia variedad de plataformas de hardware, entre las que podemos citar numerosos procesadores ARM, incluyendo ARM Cortex-M3, ARM926EJS, ARM7TDMI, ARM Cortex-M4, ARM Cortex-M0, ARM920T y ARM Cortex-A5, así como el Atmel AVR 8-bit, Freescale M68HCS12, plataformas AVR32 de Atmel AVR.
Además, también es compatible con varias plataformas de Intel, como MicroChip PIC32MX (MIPS), 80C52 y 80 y los tiempos; 86, Zilog plataformas, incluyendo Zilog Z80, Zilog Z16F, Zilog Z8Encore! y Zilog eZ80 Acclaim !, y los Renesas / Hitachi y Renesas SuperH M16C / 26 plataformas
¿Qué hay de nuevo en esta versión:.
- Características: nuevas características adicionales y funcionalidad extendida:
- Core OS:
- Watchdog Timer asignación: (1) Si nos quedamos sin tiempos de vigilancia preasignados, la lógica ahora destinará temporizadores adicionales del montón. Una reserva de temporizadores de vigilancia preasignados se mantiene de manera que siempre habrá temporizadores disponibles para el manejador de interrupciones. (2) Añadido soporte para guardián asignado estáticamente temporizador
- Dirección de Medio Ambiente de apoyo: (2) Nuevas APIs del sistema operativo integrado en todo el contexto específico de la plataforma de conmutación de la lógica (up_block_task (), up_unblock_task (), _exit (), y otros) .
- Kernel Construir Soporte: (1) El MPU basada & quot; kernel build & quot; renombrado a una acumulación protegida (CONFIG_BUILD_PROTECTED); añadido soporte para el nuevo MMU-basada & quot; kernel build & quot; (CONFIG_BUILD_KERNEL), (2) La biblioteca llamada al sistema ahora puede ser construido con CONFIG_NUTTX_KERNEL. Nueva selección *:. CONFIG_LIB_SYSCALL
- Puesta en marcha del sistema: Añadir opciones de configuración para iniciar el sistema desde un programa en un sistema de archivos (frente a una dirección en la memoria) .
- parámetros de arranque Pase: Solía haber dos formas de pasar parámetros a las nuevas tareas, dependiendo de la configuración: Ninguno (1) argv [] como creado como una matriz con cada cadena strdup'ed. O (2) argv [] array y cuerdas fueron creados en la pila antes de iniciar la nueva tarea. Ahora, sólo hay un camino, camino (2). Camino (1) podría ser un poco más compacto, pero esto no vale la pena llevar a la complejidad de dos maneras diferentes de hacer lo mismo.
- La inicialización Consejo: Añada capacidad de realizar la inicialización inicial de juntas en un subproceso de trabajo independiente. Esto es necesario porque hay muchos casos en los que la lógica de inicialización no se puede ejecutar en la puesta en marcha / subproceso inactivo. Esto es así porque el bloqueo o la espera no se permite en el hilo IDLE.
- Gestión de memoria:
- Granulado Allocator: (1) Añadir una nueva función para reservar regiones no-asignables en el montón de gránulos. (2) Añadir las interfaces para apoyar un-inicializar un asignador de gránulo.
- Página Allocator: Añadir una sencilla asignador página física basado en el asignador de gránulos NuttX existente. No estoy seguro de si el asignador gránulo es suficientemente determinista para el uso de largo alcance, pero se hace conseguir un asignador de página en su sitio para probar muy rápidamente.
- Eliminar CONFIG_MM_MULTIHEAP: Funcionamiento no multiheap ya no se admite .
- sbrk ():. Sbrk () ahora se admite en la construcción del kernel para permitir dinámicamente tamaño, montones por proceso
- por proceso Montones: Espacio en el comienzo del espacio de datos de proceso está reservado para las estructuras de gestión del montón de usuario. En el modo de construcción del kernel, estas estructuras de almacenamiento dinámico se comparten entre el código del kernel y el uso con el fin de asignar los datos específicos del usuario.
- Gestión del usuario Montón: Cuando un privilegiadas salidas de rosca, que tienen que utilizar el asignador kernel para liberar memoria; cuando un sin privilegios salidas de rosca, que no tienen que hacer nada ... memoria del montón será limpiado cuando el entorno electrónico está derribada.
- entre procesos de Soporte de Memoria compartida: (1) Añadir la ejecución y documentación de shmget (), shmctl (), shmat (), y shmdt (). (2) Añadir sistema de llamadas al sistema para apoyar la puerta llamada de usuario a las interfaces de memoria compartida. (3) Añadir definiciones de interfaz específicas de la plataforma necesarios para apoyar la función de memoria compartida.
- Allocator página virtual: Añadir soporte para una página asignador virtuales por proceso. Este es un nuevo miembro de la estructura task_group_s. El asignador debe inicializar cuando se inicia un nuevo proceso de usuario y Uninitialize cuando el grupo de procesos es finalmente destruido. Es utilizado por shmat () y shmdt () para elegir la dirección virtual en la que asignar la memoria física compartida.
- Sistemas de archivos / Bloque Drivers / MTD:
- FS: FS INTELIGENTES SMART y INTELIGENTE FS procfs actualizaciones de Ken Pettit .
- MTD:. Aparece la capa amortiguadora MTD lectura anticipada / escritura es ahora funcional
- Formatos binarios:
- Per-Proceso Montón:. Añadir la lógica para inicializar el usuario montón por proceso cuando se inicia cada proceso de usuario
- Gráficos:
- NxTerm: Cambiar todas las apariciones de NxConsole a NxTerm .
- Redes:
- PHY Interrupciones: (1) Estandarizar una interfaz apego interrupción PHY. (2) Añadir soporte para un ioctl que se puede utilizar para notificar a una aplicación cuando se produce un cambio en el estado de la red señalado por una alarma de PHY.
- Mejora Enviar Lógica: En el pasado, el primer paquete de enviar a una nueva red de pares fallaría; no habría ninguna entrada en la tabla ARP para los pares y así una petición ARP podría reemplazar ese primer paquete. Ahora, como una opción si CONFIG_NET_ARP_SEND = y, todos envían lógica será (1) comprobar si la dirección MAC de pares está en la tabla ARP, y si no, (2) enviar solicitudes ARP periódicamente para obtener el mapeo y (3) esperar a que el respuesta ARP. Entonces (4) cuando se recibe la respuesta ARP entonces la lógica de envío real se iniciará. Así, puede haber un retraso con el primer paquete enviado a un nuevo compañero, pero el paquete no debe ser perdido
- Host Simulación:
- SPI FLASH conductor:. Emulado controlador SPI FLASH para el objetivo SIM de Ken Pettit
- Intel x86:
- Default Host: El host predeterminado es ahora x86_64 y la opción -m32 se seleccionará automáticamente para la simulación construye .
- Intel 8051 Familia:
- 8051 Eliminado: Eliminado todo el apoyo para la arquitectura de la familia 8051 del árbol de fuentes NuttX. El código obsoleto junto con el remiendo de la eliminación ahora se puede encontrar en misc / Obsoleted /. Se eliminó el código debido a que (1), aunque algunas funciones se ha demostrado, no tengo conocimiento de ningún puerto realmente exitosos de NuttX a cualquier 8051, y (2) el 8051, con su pila de hardware, obliga a las limitaciones y complicaciones a las otras arquitecturas y hacer que el crecimiento y desarrollo de NuttX más compleja.
- ZiLOG Consejos ZNeo:
- configuraciones / 16z: El apoyo a esta junta ha sido retirado del árbol de fuentes NuttX (pero todavía se puede encontrar en el directorio misc / Obsoleted). Este puerto no está listo para el uso, pero puede volver al árbol NuttX en algún momento en el futuro.
- Atmel SAM3 / 4 Juntas:
- SAM4E-EK:. Añadir (1) un controlador LCD totalmente funcional basado en ILI9341 y (2) una configuración NxWM totalmente funcional
- ARMv7-R:
- Entornos Dirección: Añadir soporte para entornos de dirección aplicación utilizando el Cortex-A MMU. Implementar las interfaces específicas de la plataforma de apoyo estandarizados entorno dirección NuttX.
- Operaciones de caché: Implementar, operaciones de caché específicas de la plataforma estandarizados. Estos se llaman desde el cargador ELF con el fin de eliminar D-cache e invalidar I-caché después de un módulo de ELF se ha cargado en la memoria. Con este cambio, los módulos de ELF funcionan correctamente en la SAMA5 / Cortex-Una plataforma.
- Kernel Build: (1) Añadir implementaciones de puerta llamada al sistema. (2) Añadir archivo de puesta en marcha crt0 que puede vincularse con los programas de usuario construidas por separado. (3) Añadir soporte para la entrega de señales de uso en modo en la construcción del kernel. (4) Añadir la lógica para inicializar el usuario montón por proceso cuando se inicia cada proceso de usuario. (5) ARMv7-A el manejo de excepciones tiene que trabajar un poco diferente si apoyamos los procesos de modo de usuario. Esto se debe a R13 y R14 están paginados diferente entre el modo de usuario y SVC.
- Soporte Memoria compartida: (1) Añadir lógica necesaria para manejar la reasignación de la memoria compartida de cambios de contexto. (2) Extender las conversiones de direcciones virtuales / físicos para incluir direcciones en la memoria compartida. (3) Añadir implementación de soporte de memoria compartida específico de la plataforma.
- Atmel SAMA5D Drivers:
- Red IOCTLS:. Poner en práctica todos los ioctls de red, incluyendo el nuevo ioctl para notificaciones de eventos PHY configuración
- Las conversiones de direcciones:. En kernel construyen con el entorno electrónico, la necesidad lógica para asignar direcciones virtuales de los usuarios a las direcciones físicas, y viceversa
- Atmel Tableros SAMA5D:
- SAMA5D3 Xplained, SAMA5D3-EK, y SAMA5D4-EK: Convertir las interfaces de interrupción bordo PHY específica existente para usar interfaz estándar que acaba de definir .
- SAMA5D4-EK: Añadir una configuración para probar la configuración de generación núcleo. Hay configuraciones para arrancar bien desde una tarjeta SD o desde y en memoria de sistema de archivos romfs.
- SAMA5D4-EK: Añadir documentación / apoyo a Rev E. bordo .
- STMicro STM32 Drivers:
- Ethernet: Modificado para apoyar el cambio a las firmas ioctl red cambios. También añadir soporte para el nuevo ioctl para notificaciones de eventos PHY configuración.
- STMicro Juntas STM32:
- STM32F4DISCOVERY con STM32F4DIS-BB: Agregar una red habilitada configuración NSH para la junta STM32F4DISCOVERY con la placa base STM32F4DIS-BB instalado. Incluye soporte para la ranura para tarjetas microSD en la placa base STM32F4DIS-BB.
- TI Tiva Drivers:
- TI CC3200: Añadir soporte para el CC3200 TI. De Jim Ewing.
- TI Juntas Tiva:
- TI CC3200 Launchpad: Añadir soporte para la TI CC3200 Launchpad. De Jim Ewing.
- Biblioteca de C:
- poll ():. Re-implementado poll () retardo usando sem_timedwait ()
- Configuración / Build System:
- Exportar Objetivo: En el núcleo o protegida construye, (1) sólo las bibliotecas de usuario deben ser exportados, (2) no copie los archivos de cabecera internos o scripts de creación, si se trata de un kernel o build protegida, y (3) las necesidades abrigarse el archivo de inicio del usuario C (crt0), no el objeto cabeza del núcleo para el núcleo y protegido construye.
- Programa CFLAGS: Añadir la lógica que nos permita construir bibliotecas de usuario con diferentes CFLAGS que el código del kernel. Esto es necesario porque necesitamos la opción -fno común en la construcción de código de ELF para evitar deslocalizaciones SHN_COMMON.
- Aplicaciones:
- NSH: Extender la lógica de inicialización de red NSH. Ahora hay una opción que va a crear un monitor de hilo de red que supervisará el estado del enlace. Cuando el enlace se cae, el código intentará poner con gracia el controlador Ethernet en un estado hacia abajo; Cuando el enlace se vuelve, el código intentará llevar la red de copia de seguridad.
- ELF Ejemplo:. La prueba ELF / ejemplo se ha extendido por lo que los programas de prueba ELF individuales se enlazan con la biblioteca SYSCALL (si está disponible) o en contra de la biblioteca C para eliminar o reducir al mínimo la necesidad de tablas de símbolos
- NxTerm: Cambiar todas las apariciones de NxConsole a NxTerm .
- MTDRWB Ejemplo:. Añadir un ejemplo para probar MTD R / W buffering
- Ejemplo de ensayo OS: Añadir una prueba trivial de sem_timedwait () .
- Configuración de la aplicación / Build System:
- Importar objetivo: (1) Añadir la lógica que permitirá la creación de aplicaciones contra un paquete de exportación NuttX (frente a la / árbol de fuentes nuttx). (2) Añadir archivo .config para exportar paquete. (3) Crear aplicaciones / importación. Crear aplicaciones / importación / Make.defs que hace cosas como definir CFLAGS; Acumulación ELF requiere -fno-común en CFLAGS. Copie cierta lógica base nuttx / herramientas / Config.mk a aplicaciones / importación / Make.defs. (4) Añadir apps / importación / scripts / script enlazador GCC-gnu elf.ld para construye ELF importación.
- Todos los Makefiles: (1) Añadir un objetivo instale en todos los makefiles. Para la acumulación de importaciones, el Makefile de nivel superior hace ahora dos pases: (1) se basa libapp.a, entonces (2) instala los programas en apps / bin. (2) Añadir la instalación del programa para CONFIG_BUILD_KERNEL en todos los Makefiles que construyen un main (). (3) Para la construcción del kernel, el archivo de objeto que contiene main () no puede ir a la biblioteca a causa de conflictos de nombres. El archivo de objeto debe ser manejado como un caso especial en todos los Makefile.
- Todos incorporado Programas: Con construcción del kernel (CONFIG_BUILD_KERNEL), punto de entrada a todas las tareas es main (), no un xyz_main () .
- NSH: Varios comandos deben desactivarse en la construcción del kernel porque dependen de las interfaces que no están disponibles fuera del núcleo:. Dd, df, losetup, mkfatfs, mkdr y ps
- aplicaciones / herramientas /: (1) Añadir mkimport.sh a explotar un paquete de importación NuttX e instalar en apps / importación. (2) Añadir la escritura mkromfsimg.sh para crear una imagen de arranque romfs sistema de archivos.
- ELF y NxFLAT Ejemplos:. No construir casos de prueba que utilizan task_create () si hay un entorno de dirección
- Herramientas:
- refresh.sh:. Añadir una herramienta para hacer configuraciones refrescantes más fácil cuando se quiere hacer una gran cantidad de ellos
- mksyscall.c: Construir syscalls que no necesitan archivos de cabecera .
- mkexport.sh:. Añadir archivo .config para exportar el paquete
- aplicaciones / herramientas: Ver arriba para nuevas aplicaciones / herramientas guiones .
- Los esfuerzos en curso. Las siguientes son las características que se implementan parcialmente, pero presentes en esta versión. No es probable que se complete pronto.
- Procesos: Gran parte del trabajo en esta versión se centra en la realización de procesos de usuario al estilo Unix en NuttX. Hay mucho por hacer, sin embargo. La hoja de ruta completa y el estado está disponible en: http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
- XMEGA: Hay algunos fragmentos en lugar de un puerto XMEGA. Ese puerto no ha comenzado realmente, sin embargo.
- Galileo: Del mismo modo, hay fragmentos en lugar de un puerto Intel Galileo. El puerto no ha comenzado en serio tampoco.
- Corrección de errores. Sólo las correcciones más importantes se enumeran aquí (ver el ChangeLog para la lista completa de correcciones de errores y corrección de errores para obtener información adicional, más detallada):
- Core OS:
- Kernel construir soluciones: (1) instalación IDLE TCB tiene que indicar que el hilo IDLE es un privilegiado, hilo del núcleo. (2) No construir task_create () o task_spawn () las interfaces si existe un entorno electrónico. (3) posix_spawn () hilo de proxy kernel debe ser un hilo del núcleo, no es una tarea de usuario.
- Varios interfaces de pthread: Agregar clase de almacenamiento const a phthread parámetros. De Freddie Chopin.
- sched / reloj: Retire vestigios de g_tickbias; necesitan, en cambio, aplicar sesgo tiempo para g_basetime el fin de proporcionar la hora correcta del sistema.
- Sistema de llamadas: (1) Varios errores tipográficos fijos; integración corregida de exevc (), llamadas execvl (), posix_spawn (), y posix_spawnp sistema (). (2) Si se configuran para utilizar una pila del núcleo, mientras que en el manejo SYSCALL, entonces tenemos que volver a la pila de usuario para entregar una señal.
- Sistemas de archivos / Bloque Drivers / MTD:
- procfs: Fijar alguna rotura procf introducido mediante la reorganización de algunas estructuras de datos no reorganizable. De Ken Pettit.
- AT45: En at45db_bwrite (), el búfer no se incrementa cuando se escribe más de 1 página. Sourceforge el bug # 34.
- Formatos binarios:
- reubicaciones ELF: Algunos tipos de reubicación no tienen un símbolo llamado asociado con ellos. El diseño no tuvo en cuenta para ese caso.
- ELF bandeja de carga:. Corrección de errores críticos .. BSS no estaba siendo aclaró
- Gestión de memoria:
- Granulado Allocator: inicialización asignador Granulado utiliza asignador erróneo dejar de lado la memoria del núcleo .
- Grupos privilegiados: Añadir una bandera para la estructura del grupo: Si el grupo es creado por un hilo del núcleo, entonces todos los recursos del grupo deben ser privilegiados .
- Soporte Cryptogrphic:
- cripto / cryptodev.c: segmentos de trazado invertido en incluyen la ruta del archivo. Conocido por Brennan Ashton.
- Controladores comunes:
- Común PUEDE superior-media: En can_txdone, camareros en el semáforo debe ser informado sin importar el valor de retorno de can_xmit. Primero devuelve -EIO si no hay nuevos paquetes, y en segundo lugar la información de los camareros es sobre el último paquete transferido. De Daniel Lazlo Sitzer.
- ARM:
- Sistema de Llamadas: Solucionar un error tipográfico en la llamada al sistema al recuperar el parámetro de la pila: regs [REG_PC] 4 es la dirección, no regs [REG_PC + 4] .
- STMicro STM32 Drivers:
- STM32 F401 UART: el apoyo correcto para USART6 en este chip. De Freddie Chopin.
- STM32 FLASH fija: utilizar size_t lugar de uint16_t, hacer interfaz más genérico. De Freddie Chopin.
- STM32 UART:. Arreglo para UART7 y UART8 en el reloj STM32 activar desde Aton
- CAN: Al final del manejador de interrupciones, las interrupciones estaban siendo discapacitado, si todos los paquetes se han transferido cuando se invoca el manejador de interrupciones. Esto es problemático, ya que el manejador de interrupciones llama can_txdone () de la mitad superior, que puede poner en cola los nuevos paquetes para enviar. Se ha eliminado el bloque completo, porque can_txdone () llama can_xmit () que deshabilita las interrupciones si no hay nuevos paquetes para enviar. De Daniel Lazlo Sitzer.
- CAN:. Información adicional sobre la corrección STM32 CAN sugerido por Max Holtzberg
- STMicro Juntas ST32:
- configuraciones / MIKROE-stm32f4: Fijar algunos compilar errores y correcciones menores a la fuente de configuración MIKROE-stm32f4. De Ken Pettit.
- ARM9 / ARMv7-R:
- Sistema de Llamadas: Fijar ARM7 / 9 y Cortex-A syscalls: Para roscas en modo SVC, las instrucciones SVC clobbers R14. Esto debe tenerse en cuenta en el montaje en línea.
- Configuración de tareas: Todas las tareas, incluso las tareas de modo de usuario, se debe iniciar en modo supervisor hasta que lleguen más allá de la cama elástica de arranque .
- ARMv7-A: Modificar up_fullcontextrestore () para CONFIG_BUILD_KERNEL. Cambió CPSR mientras que en kernel. Eso se bloqueará si el nuevo CPSR es el modo de usuario mientras se ejecuta en el espacio del kernel. Fijo añadiendo una llamada al sistema SYS_context_restore. Hay una alternativa, la modificación más simple up_fullcontextrestore () que se podría haber hecho: Podría haber sido posible utilizar el SPSR en lugar de la Compr y luego hacer una declaración de excepción a up_fullcontextrestore (). Eso sería más eficiente, pero nunca he probado.
- Atmel SAM3 / 4 Juntas:
- SAM3X / Arduino Due: Fijar typo en sam3x_periphclks.h; añadir definiciones SCLK a board.h archivo de cabecera. De Fabien Comte.
- SAM3 RTT: Sólo familia SAM4 tiene RTTDIS bit en el registro MR. SourceForge el bug # 33 de Fabien Comte.
- Biblioteca de C:
- sscanf (): NuttX libc trató de adivinar el número de caracteres que se analice, les extrae en un buffer, luego corrió strtol () en ese búfer. Esa suposición era a menudo mal. Un enfoque mejor sería llamar strtol () directamente en los datos de entrada, utilizando el valor de retorno endptr para determinar el número de caracteres para saltar después de analizar. De Kosma Moczek.
- Biblioteca de Matemáticas:. Corregido atan2 implementaciones de Denis Arnst
- Salida de punto flotante: Cambiar para lib_dtoa () para reparar el error de precisión de ceros. De Bob Doiron.
- Aplicaciones:
- Comando Fix NSH PS:. Si no hay argumentos, podría imprimir de basura para lista de argumentos
- Configuración / Build System:
- Null Ejemplo: Necesidad de incluir la orden que config.h sé si esto es o no es una construcción del kernel. Este problema todavía existe en varios otros archivos que puedan necesitar para definir main ().
¿Qué hay de nuevo en la versión 7.8:
- Características: nuevas características adicionales y funcionalidad extendida:
- Core OS:
- Watchdog Timer asignación: (1) Si nos quedamos sin tiempos de vigilancia preasignados, la lógica ahora destinará temporizadores adicionales del montón. Una reserva de temporizadores de vigilancia preasignados se mantiene de manera que siempre habrá temporizadores disponibles para el manejador de interrupciones. (2) Añadido soporte para guardián asignado estáticamente temporizador
- Dirección de Medio Ambiente de apoyo: (2) Nuevas APIs del sistema operativo integrado en todo el contexto específico de la plataforma de conmutación de la lógica (up_block_task (), up_unblock_task (), _exit (), y otros) .
- Kernel Construir Soporte: (1) El MPU basada & quot; kernel build & quot; renombrado a una acumulación protegida (CONFIG_BUILD_PROTECTED); añadido soporte para el nuevo MMU-basada & quot; kernel build & quot; (CONFIG_BUILD_KERNEL), (2) La biblioteca llamada al sistema ahora puede ser construido con CONFIG_NUTTX_KERNEL. Nueva selección *:. CONFIG_LIB_SYSCALL
- Puesta en marcha del sistema: Añadir opciones de configuración para iniciar el sistema desde un programa en un sistema de archivos (frente a una dirección en la memoria) .
- parámetros de arranque Pase: Solía haber dos formas de pasar parámetros a las nuevas tareas, dependiendo de la configuración: Ninguno (1) argv [] como creado como una matriz con cada cadena strdup'ed. O (2) argv [] array y cuerdas fueron creados en la pila antes de iniciar la nueva tarea. Ahora, sólo hay un camino, camino (2). Camino (1) podría ser un poco más compacto, pero esto no vale la pena llevar a la complejidad de dos maneras diferentes de hacer lo mismo.
- La inicialización Consejo: Añada capacidad de realizar la inicialización inicial de juntas en un subproceso de trabajo independiente. Esto es necesario porque hay muchos casos en los que la lógica de inicialización no se puede ejecutar en la puesta en marcha / subproceso inactivo. Esto es así porque el bloqueo o la espera no se permite en el hilo IDLE.
- Gestión de memoria:
- Granulado Allocator: (1) Añadir una nueva función para reservar regiones no-asignables en el montón de gránulos. (2) Añadir las interfaces para apoyar un-inicializar un asignador de gránulo.
- Página Allocator: Añadir una sencilla asignador página física basado en el asignador de gránulos NuttX existente. No estoy seguro de si el asignador gránulo es suficientemente determinista para el uso de largo alcance, pero se hace conseguir un asignador de página en su sitio para probar muy rápidamente.
- Eliminar CONFIG_MM_MULTIHEAP: Funcionamiento no multiheap ya no se admite .
- sbrk ():. Sbrk () ahora se admite en la construcción del kernel para permitir dinámicamente tamaño, montones por proceso
- por proceso Montones: Espacio en el comienzo del espacio de datos de proceso está reservado para las estructuras de gestión del montón de usuario. En el modo de construcción del kernel, estas estructuras de almacenamiento dinámico se comparten entre el código del kernel y el uso con el fin de asignar los datos específicos del usuario.
- Gestión del usuario Montón: Cuando un privilegiadas salidas de rosca, que tienen que utilizar el asignador kernel para liberar memoria; cuando un sin privilegios salidas de rosca, que no tienen que hacer nada ... memoria del montón será limpiado cuando el entorno electrónico está derribada.
- entre procesos de Soporte de Memoria compartida: (1) Añadir la ejecución y documentación de shmget (), shmctl (), shmat (), y shmdt (). (2) Añadir sistema de llamadas al sistema para apoyar la puerta llamada de usuario a las interfaces de memoria compartida. (3) Añadir definiciones de interfaz específicas de la plataforma necesarios para apoyar la función de memoria compartida.
- Allocator página virtual: Añadir soporte para una página asignador virtuales por proceso. Este es un nuevo miembro de la estructura task_group_s. El asignador debe inicializar cuando se inicia un nuevo proceso de usuario y Uninitialize cuando el grupo de procesos es finalmente destruido. Es utilizado por shmat () y shmdt () para elegir la dirección virtual en la que asignar la memoria física compartida.
- Sistemas de archivos / Bloque Drivers / MTD:
- FS: FS INTELIGENTES SMART y INTELIGENTE FS procfs actualizaciones de Ken Pettit .
- MTD:. Aparece la capa amortiguadora MTD lectura anticipada / escritura es ahora funcional
- Formatos binarios:
- Per-Proceso Montón:. Añadir la lógica para inicializar el usuario montón por proceso cuando se inicia cada proceso de usuario
- Gráficos:
- NxTerm: Cambiar todas las apariciones de NxConsole a NxTerm .
- Redes:
- PHY Interrupciones: (1) Estandarizar una interfaz apego interrupción PHY. (2) Añadir soporte para un ioctl que se puede utilizar para notificar a una aplicación cuando se produce un cambio en el estado de la red señalado por una alarma de PHY.
- Mejora Enviar Lógica: En el pasado, el primer paquete de enviar a una nueva red de pares fallaría; no habría ninguna entrada en la tabla ARP para los pares y así una petición ARP podría reemplazar ese primer paquete. Ahora, como una opción si CONFIG_NET_ARP_SEND = y, todos envían lógica será (1) comprobar si la dirección MAC de pares está en la tabla ARP, y si no, (2) enviar solicitudes ARP periódicamente para obtener el mapeo y (3) esperar a que el respuesta ARP. Entonces (4) cuando se recibe la respuesta ARP entonces la lógica de envío real se iniciará. Así, puede haber un retraso con el primer paquete enviado a un nuevo compañero, pero el paquete no debe ser perdido
- Host Simulación:
- SPI FLASH conductor:. Emulado controlador SPI FLASH para el objetivo SIM de Ken Pettit
- Intel x86:
- Default Host: El host predeterminado es ahora x86_64 y la opción -m32 se seleccionará automáticamente para la simulación construye .
- Intel 8051 Familia:
- 8051 Eliminado: Eliminado todo el apoyo para la arquitectura de la familia 8051 del árbol de fuentes NuttX. El código obsoleto junto con el remiendo de la eliminación ahora se puede encontrar en misc / Obsoleted /. Se eliminó el código debido a que (1), aunque algunas funciones se ha demostrado, no tengo conocimiento de ningún puerto realmente exitosos de NuttX a cualquier 8051, y (2) el 8051, con su pila de hardware, obliga a las limitaciones y complicaciones a las otras arquitecturas y hacer que el crecimiento y desarrollo de NuttX más compleja.
- ZiLOG Consejos ZNeo:
- configuraciones / 16z: El apoyo a esta junta ha sido retirado del árbol de fuentes NuttX (pero todavía se puede encontrar en el directorio misc / Obsoleted). Este puerto no está listo para el uso, pero puede volver al árbol NuttX en algún momento en el futuro.
- Atmel SAM3 / 4 Juntas:
- SAM4E-EK:. Añadir (1) un controlador LCD totalmente funcional basado en ILI9341 y (2) una configuración NxWM totalmente funcional
- ARMv7-R:
- Entornos Dirección: Añadir soporte para entornos de dirección aplicación utilizando el Cortex-A MMU. Implementar las interfaces específicas de la plataforma de apoyo estandarizados entorno dirección NuttX.
- Operaciones de caché: Implementar, operaciones de caché específicas de la plataforma estandarizados. Estos se llaman desde el cargador ELF con el fin de eliminar D-cache e invalidar I-caché después de un módulo de ELF se ha cargado en la memoria. Con este cambio, los módulos de ELF funcionan correctamente en la SAMA5 / Cortex-Una plataforma.
- Kernel Build: (1) Añadir implementaciones de puerta llamada al sistema. (2) Añadir archivo de puesta en marcha crt0 que puede vincularse con los programas de usuario construidas por separado. (3) Añadir soporte para la entrega de señales de uso en modo en la construcción del kernel. (4) Añadir la lógica para inicializar el usuario montón por proceso cuando se inicia cada proceso de usuario. (5) ARMv7-A el manejo de excepciones tiene que trabajar un poco diferente si apoyamos los procesos de modo de usuario. Esto se debe a R13 y R14 están paginados diferente entre el modo de usuario y SVC.
- Soporte Memoria compartida: (1) Añadir lógica necesaria para manejar la reasignación de la memoria compartida de cambios de contexto. (2) Extender las conversiones de direcciones virtuales / físicos para incluir direcciones en la memoria compartida. (3) Añadir implementación de soporte de memoria compartida específico de la plataforma.
- Atmel SAMA5D Drivers:
- Red IOCTLS:. Poner en práctica todos los ioctls de red, incluyendo el nuevo ioctl para notificaciones de eventos PHY configuración
- Las conversiones de direcciones:. En kernel construyen con el entorno electrónico, la necesidad lógica para asignar direcciones virtuales de los usuarios a las direcciones físicas, y viceversa
- Atmel Tableros SAMA5D:
- SAMA5D3 Xplained, SAMA5D3-EK, y SAMA5D4-EK: Convertir las interfaces de interrupción bordo PHY específica existente para usar interfaz estándar que acaba de definir .
- SAMA5D4-EK: Añadir una configuración para probar la configuración de generación núcleo. Hay configuraciones para arrancar bien desde una tarjeta SD o desde y en memoria de sistema de archivos romfs.
- SAMA5D4-EK: Añadir documentación / apoyo a Rev E. bordo .
- STMicro STM32 Drivers:
- Ethernet: Modificado para apoyar el cambio a las firmas ioctl red cambios. También añadir soporte para el nuevo ioctl para notificaciones de eventos PHY configuración.
- STMicro Juntas STM32:
- STM32F4DISCOVERY con STM32F4DIS-BB: Agregar una red habilitada configuración NSH para la junta STM32F4DISCOVERY con la placa base STM32F4DIS-BB instalado. Incluye soporte para la ranura para tarjetas microSD en la placa base STM32F4DIS-BB.
- TI Tiva Drivers:
- TI CC3200: Añadir soporte para el CC3200 TI. De Jim Ewing.
- TI Juntas Tiva:
- TI CC3200 Launchpad: Añadir soporte para la TI CC3200 Launchpad. De Jim Ewing.
- Biblioteca de C:
- poll ():. Re-implementado poll () retardo usando sem_timedwait ()
- Configuración / Build System:
- Exportar Objetivo: En el núcleo o protegida construye, (1) sólo las bibliotecas de usuario deben ser exportados, (2) no copie los archivos de cabecera internos o scripts de creación, si se trata de un kernel o build protegida, y (3) las necesidades abrigarse el archivo de inicio del usuario C (crt0), no el objeto cabeza del núcleo para el núcleo y protegido construye.
- Programa CFLAGS: Añadir la lógica que nos permita construir bibliotecas de usuario con diferentes CFLAGS que el código del kernel. Esto es necesario porque necesitamos la opción -fno común en la construcción de código de ELF para evitar deslocalizaciones SHN_COMMON.
- Aplicaciones:
- NSH: Extender la lógica de inicialización de red NSH. Ahora hay una opción que va a crear un monitor de hilo de red que supervisará el estado del enlace. Cuando el enlace se cae, el código intentará poner con gracia el controlador Ethernet en un estado hacia abajo; Cuando el enlace se vuelve, el código intentará llevar la red de copia de seguridad.
- ELF Ejemplo:. La prueba ELF / ejemplo se ha extendido por lo que los programas de prueba ELF individuales se enlazan con la biblioteca SYSCALL (si está disponible) o en contra de la biblioteca C para eliminar o reducir al mínimo la necesidad de tablas de símbolos
- NxTerm: Cambiar todas las apariciones de NxConsole a NxTerm .
- MTDRWB Ejemplo:. Añadir un ejemplo para probar MTD R / W buffering
- Ejemplo de ensayo OS: Añadir una prueba trivial de sem_timedwait () .
- Corrección de errores:
Comentarios que no se encuentran