NuttX

Tela Software:
NuttX
Detalhes de Software:
Versão: 7.9 Atualizado
Data de upload: 10 May 15
Revelador: Gregory Nutt
Licença: Livre
Popularidade: 53

Rating: 4.0/5 (Total Votes: 1)

NuttX é uma fonte aberta, em tempo real sistema operacional embutido determinista e livre (RTOS), concebido a partir do deslocamento para ser usado em ambientes de recursos limitados, profundamente enraizadas. Ele tem uma pequena pegada que é utilizável em ambientes de micro-controlador, e & rsquo; s totalmente escalável de pequena (de 8 bits) para moderar sistemas embarcados (32-bit).
Ele também tem o objetivo de ser totalmente compatível com as normas, para ser plenamente tempo real, e para ser totalmente aberto. NuttX tem um conjunto de recursos OS rico, um projeto modular, é altamente escalável e configurável, bem como compatível com as normas. Ele é distribuído com uma licença BSD não restritiva. Ele é frequentemente apelidado por seus desenvolvedores como "minúsculo Linux." Características à glanceKey recursos incluem gerenciamento de núcleo tarefa, BSD interface socket, alocadores de memória (memória compartilhada, a alocação de memória heap padrão, compilação protegido com MPU, construção incorporado plana, por processo montes, alocador de grânulos e tamanho dinamicamente), configurações de memória, guia de portabilidade,, operação tickless totalmente preemptivo, paginação e sistema de registro on-demand.
Além disso, o projeto vem com extensões para gerenciar de preferência, por thread, construído em medições de carga de CPU, uma documentação completa, tarefas opcionais que contêm ambientes de endereço, controle de tarefas ANSI-like e POSIX-like, relógios, pthreads, ambiente variáveis, sinais, filas de mensagens nomeados, temporizadores, sistemas de arquivos e contando semáforos.
Entre outras características, podemos citar round-robin scheduling, FIFO, o apoio a herança de prioridade, o suporte para a arquitetura SoC, suporte para arquiteturas de tabuleiro, suporte para novas arquiteturas de processador, timers de monitoração, VxWorks-como gerenciamento de tarefas, eu O redirecionamento / e transmitidos & ldquo; controlar terminais & rdquo;. Compatível platformsNuttX suporta uma ampla variedade de plataformas de hardware, entre os quais podemos citar inúmeros processadores ARM, incluindo ARM Cortex-M3, ARM926EJS, ARM7TDMI, ARM Cortex-M4, ARM Cortex-M0, ARM920T e ARM Cortex-A5, bem como o Atmel 8 bits AVR, Freescale M68HCS12, plataformas AVR32 Atmel AVR.
Além disso, ele também suporta várias plataformas Intel, como o microchip PIC32MX (MIPS), 80c52 e 80 & épocas; 86, plataformas Zilog, incluindo Zilog Z80, Zilog Z16F, Zilog Z8Encore! e Zilog eZ80 Acclaim !, e os M16C / 26 plataformas Renesas / Hitachi SuperH Renesas e

O que é novo nesta versão:.

  • Características: novos recursos adicionais e funcionalidade estendida:
  • Core SO:
  • Watchdog Timer Alocação: (1) Se ficarmos sem horários pré-alocada de vigilância, a lógica vai agora alocar temporizadores adicionais a partir do heap. Uma reserva de temporizadores watchdog pré-alocada é mantido de modo a que sempre haverá timers disponíveis para manipuladores de interrupção. (2) Adicionado suporte para watchdog alocada estaticamente temporizador
  • Endereço Ambiente Apoio: (2) Novas APIs do sistema operacional integrado em todo o contexto específico da plataforma de comutação lógica (up_block_task (), up_unblock_task (), _exit (), e outros)
  • .
  • construir o apoio Kernel: (1) O MPU baseado & quot; construção do kernel & quot; renomeado para uma compilação protegido (CONFIG_BUILD_PROTECTED); adicionado suporte para a um novo MMU baseada em & quot; construção do kernel & quot; (CONFIG_BUILD_KERNEL), (2) O sistema de chamada de biblioteca pode agora ser construído com CONFIG_NUTTX_KERNEL. Nova seleção *:. CONFIG_LIB_SYSCALL
  • Inicialização do Sistema: Adicionar opções de configuração para iniciar o sistema a partir de um programa em um sistema de arquivos (versus um endereço na memória)
  • .
  • Startup Parâmetro Passe: Costumava haver duas maneiras de passar parâmetros para novas tarefas, dependendo da configuração: Qualquer um (1) argv [] como criado como uma matriz com cada corda strdup'ed. Ou (2) argv [] matriz e cordas foram criados na pilha antes de a nova tarefa foi iniciado. Agora, só há um caminho, caminho (2). Maneira (1) pode ser um pouco mais compacta, mas isto não vale a pena realizar a complexidade de duas maneiras diferentes de fazer a mesma coisa.
  • Inicialização Board: Adicionar capacidade para executar inicialização bordo inicial em um segmento de trabalho separado. Isto é necessário porque há muitos casos onde a lógica de inicialização não pode executar no start-up / thread IDLE. Isso ocorre porque o bloqueio ou de espera não é permitido no segmento IDLE.
  • Gerenciamento de memória:
  • Granule Allocator: (1) Adicionar uma nova função para reservar regiões un-allocatable na pilha de grânulos. (2) Adicionar interfaces para apoiar um alocador de grânulo-inicializar un.
  • Allocator página: Adicionar um simples alocador de página física com base no alocador de grânulos NuttX existente. Não estou certo se o alocador de grânulos é suficientemente determinista para uso de longo alcance, mas torna-se obter um alocador de página no lugar para testar muito rapidamente.
  • Remover CONFIG_MM_MULTIHEAP: operação não-multiheap não é mais suportado
  • .
  • sbrk ():. Sbrk () agora é suportado na construção do kernel para permitir o porte de forma dinâmica, montes por processo
  • por processo Heaps: Space no início do espaço de dados do processo é agora reservada para as estruturas de gestão heap usuário. No modo de construção do kernel, essas estruturas heap são compartilhadas entre o código do kernel e uso, a fim de alocar dados específicos do usuário.
  • Usuário Heap Management: Quando um privilegiadas segmento sai, nós temos que usar o alocador de memória livre; quando um segmento sai sem privilégios, não temos que fazer nada ... memória heap será limpo quando o ambiente de endereço é demolido.
  • Inter-Process suportam memória compartilhada: (1) Adicionar implementação e documentação para shmget (), shmctl (), shmat (), e shmdt (). (2) Adicionar sistema de chamadas de sistema para apoiar o portão chamada usuário para as interfaces de memória compartilhada. (3) Adicionar definições de interface específicos da plataforma necessários para apoiar a função de memória partilhada.
  • Virtual Allocator Página: Adicionar suporte para uma página alocador virtual por processo. Este é um novo membro da estrutura task_group_s. O alocador deve ser inicializado quando um novo usuário processo é iniciado e uninitialize quando o grupo processo é finalmente destruído. Ele é usado por shmat () e shmdt () para pegar o endereço virtual para o qual mapear a memória física compartilhada.
  • Sistemas de Arquivos / Drivers Bloco / MTD:
  • FS inteligente: FS SMART e do SMART FS PROCFS atualização de Ken Pettit
  • .
  • MTD:. A camada MTD Leia-ahead / Write tampão aparece agora é funcional
  • binários Formatos:
  • Per-Process Heap:. Adicionar lógica para inicializar a pilha do usuário por processo quando cada usuário processo é iniciado
  • Gráficos:
  • NxTerm: Alterar todas as ocorrências de NxConsole para NxTerm
  • .
  • Rede:
  • PHY Interrupções: (1) Padronizar uma interface de ligação de interrupção PHY. (2) Adicionar suporte para um ioctl que pode ser utilizado para notificar uma aplicação quando existe uma mudança no estado da rede assinalado por uma interrupção PHY.
  • Melhorado Enviar Logic: No passado, o primeiro pacote de enviar para um novo peer seria um fracasso; não haveria entrada na tabela ARP para o peer e assim uma solicitação ARP poderia substituir esse primeiro pacote. Agora, como uma opção se CONFIG_NET_ARP_SEND = y, tudo vai enviar lógica (1) verifique se o ponto endereço MAC está na tabela ARP e, se não, (2) enviar requisições ARP periodicamente para obter o mapeamento e (3) esperar que o resposta ARP. Em seguida, (4) quando a resposta ARP for recebido, então a lógica de envio real será iniciada. Assim, pode haver um atraso com o primeiro pacote enviado para um novo par, mas o pacote não deve ser perdida
  • Simulação Anfitrião:
  • A SPI FLASH motorista:. Emulada motorista SPI FLASH para o alvo sim de Ken Pettit
  • Intel x86:
  • Padrão Anfitrião: A máquina padrão é agora x86_64 ea opção -m32 será automaticamente selecionado para a simulação constrói
  • .
  • Intel 8051 Família:
  • 8051 Removido: Removido todo o suporte para a arquitetura da família 8051 da árvore de origem NuttX. O código obsoleto, juntamente com o patch de remoção pode agora ser encontrada em misc / / Obsoleted. Este código foi removido porque (1), embora algumas funcionalidades foi demonstrado, não tenho conhecimento de quaisquer portos realmente bem-sucedidos de NuttX para qualquer 8051, e (2) a 8051, com a sua pilha de hardware, obriga limitações e complicações para as outras arquiteturas e tornar o crescimento e desenvolvimento de NuttX mais complexo.
  • ZiLOG ZNeo Boards:
  • configs / 16Z: Suporte para esta placa foi removida da árvore fonte NuttX (mas ainda pode ser encontrado no diretório / Obsoleted Misc). Esta porta não está pronto para uso, mas pode retornar à árvore NuttX em algum momento no futuro.
  • Atmel SAM3 / 4 Boards:
  • SAM4E-EK:. Adicionar (1) um driver de LCD totalmente funcional baseada ILI9341 e (2) uma configuração NxWM totalmente funcional
  • ARMv7-A:
  • Ambientes de endereço: Adicionar suporte para ambientes de endereço aplicativo usando o Cortex-A MMU. Implementar interfaces específicas da plataforma padronizados de apoio ambiente NuttX endereço.
  • Operações de cache: Implementar, operações de cache específicos da plataforma padronizados. Estes são chamados de o carregador ELF, a fim de liberar D-cache e invalidar I-cache após um módulo ELF foi carregado na memória. Com esta mudança, os módulos ELF trabalhar corretamente no SAMA5 / Cortex-A plataforma.
  • Kernel Envergadura: (1) Adicionar implementações do portão chamada de sistema. (2) Adicionar CRT0 arquivo start-up que podem ser ligados a programas de usuário construídas separadamente. (3) Adicionar suporte para a entrega de sinais de uso de modo na construção do kernel. (4) Adicionar lógica para inicializar a pilha do usuário por processo quando cada usuário processo é iniciado. (5) ARMv7-A manipulação de exceção precisa trabalhar um pouco diferente se nós apoiar os processos de modo de usuário. Isso ocorre porque R13 e R14 são paginado de forma diferente entre o usuário eo modo de SVC.
  • Suporte de Memória Compartilhada: (1) Adicionar lógica necessária para lidar com remapeamento de memória compartilhada em trocas de contexto. (2) Estender conversões de endereço virtual / físico para incluir endereços na memória compartilhada. (3) Adicionar implementação de suporte de memória compartilhada específico para cada plataforma.
  • Atmel SAMA5D Drivers:
  • Rede IOCTLS:. Implementar todos os ioctls de rede, incluindo o novo ioctl para notificações de eventos de configuração PHY
  • As conversões de endereço:. No núcleo construir com o ambiente de endereço, precisa lógica para mapear endereços virtuais de usuário para endereços físicos, e vice-versa
  • Atmel SAMA5D Boards:
  • SAMA5D3 Xplained, SAMA5D3-EK, e SAMA5D4-EK: Converter as interfaces de interrupção PHY específica placa existente para usar interface padrão recém-definido
  • .
  • SAMA5D4-EK: Adicionar uma configuração para testar a configuração de compilação do kernel. Há configurações para arrancar quer a partir de um cartão SD ou a partir e na memória do sistema de arquivos ROMFS.
  • SAMA5D4-EK: Adicionar documentação / suporte para Rev E. bordo
  • .
  • STMicro STM32 Drivers:
  • Ethernet: Modificado para apoiar a mudança para as mudanças de rede de assinatura ioctl. Também adicionar suporte para o novo ioctl para notificações de eventos de configuração PHY.
  • STMicro STM32 Placas:
  • STM32F4DISCOVERY com STM32F4DIS-BB: Adicionar uma rede habilitada configuração NSH para o conselho STM32F4DISCOVERY com a placa de base STM32F4DIS-BB instalado. Inclui suporte para o slot para cartão microSD na placa de base STM32F4DIS-BB.
  • TI Tiva Drivers:
  • TI CC3200: Adicionar suporte para o CC3200 TI. De Jim Ewing.
  • TI Tiva Boards:
  • TI CC3200 Launchpad: Adicionar suporte para a TI CC3200 Launchpad. De Jim Ewing.
  • C Library:
  • poll ():. Re-implementado poll () atraso usando sem_timedwait ()
  • Configuração / Build System:
  • Exportar alvo: No kernel ou protegidos constrói, (1) apenas as bibliotecas de usuário deve ser exportado, (2) não copiar arquivos de cabeçalho internos ou criar scripts se esta é uma compilação do kernel ou protegidos, e (3) necessidades a agrupar-se o arquivo de inicialização do usuário C (crt0), não a cabeça objeto de kernel para o kernel e protegido constrói.
  • Programa CFLAGS: Adicionar lógica que nos permitirá construir bibliotecas de usuário com CFLAGS diferentes do código do kernel. Isso é necessário porque nós precisamos a opção -fno-comum na construção de código ELF para evitar deslocalizações SHN_COMMON.
  • aplicativos:
  • NSH: Estender a lógica de inicialização de rede NSH. Existe agora uma opção que irá criar um thread do monitor de rede que irá monitorar o estado do link. Quando o link cair, o código tentará graciosamente colocar o controlador Ethernet em um estado para baixo; Quando a ligação de volta, o código vai tentar levar a rede de volta.
  • ELF Exemplo:. O teste ELF / example foi estendido para os programas individuais de teste ELF pode vincular com a biblioteca SYSCALL (se estiver disponível) ou com a biblioteca C para eliminar ou minimizar a necessidade de tabelas de símbolos
  • NxTerm: Alterar todas as ocorrências de NxConsole para NxTerm
  • .
  • MTDRWB. Exemplo: Adicionar um exemplo para testar MTD R / W buffer
  • OS Teste Exemplo: Adicionar um teste trivial de sem_timedwait ()
  • .
  • Configuração de Aplicativos / Build System:
  • Import-alvo: (1) Adicionar lógica que permitirá a criação de aplicativos contra um pacote de exportação NuttX (comparada a nuttx / árvore de origem). (2) Adicionar ficheiro.config para exportar pacote. (3) Criar apps / importação. Criar apps / importação / Make.defs que faz coisas como definir CFLAGS; Construção ELF requer -fno-comum em CFLAGS. Copie alguma lógica base nuttx / ferramentas / Config.mk para apps / importação / Make.defs. (4) Adicionar apps / importação / scripts / roteiro GCC vinculador gnu-elf.ld para compilações de importação ELF.
  • Todos os Makefiles: (1) Adicionar uma meta de instalar em todos os makefiles. Para a criação de importação, o de nível superior Makefile agora faz duas passagens: (1) constrói libapp.a, em seguida, (2) instala os programas em apps / bin. (2) Adicionar a instalação do programa para CONFIG_BUILD_KERNEL em todas as Makefiles que constroem um main (). (3) Para construção do kernel, o arquivo objeto que contém main () não pode ir para a biblioteca por causa de conflitos de nome. O arquivo objeto deve ser tratado como um caso especial em cada Makefile.
  • Todos os nos espaços construídos, Programas: Com a criação do kernel (CONFIG_BUILD_KERNEL), ponto de entrada para todas as tarefas é main (), e não algum xyz_main ()
  • .
  • NSH: Vários comandos deve ser desativado na construção do kernel porque dependem de interfaces que não estão disponíveis fora do kernel:. Dd, df, losetup, mkfatfs, mkdr, e ps
  • aplicativos / ferramentas /: (1) Adicionar mkimport.sh para explodir um pacote de importação NuttX e instalar em apps / importação. (2) Adicionar roteiro mkromfsimg.sh para criar uma imagem de inicialização ROMFS sistema de arquivos.
  • ELF e NxFLAT Exemplos:. Não construa casos de teste que usam task_create () se houver um ambiente de endereço
  • Ferramentas:
  • refresh.sh:. Adicionar uma ferramenta para fazer configurações refrescantes mais fácil quando você quer fazer um monte deles
  • mksyscall.c: Construir syscalls que não precisam de arquivos de cabeçalho
  • .
  • mkexport.sh:. Adicionar ficheiro.config para exportar pacote
  • aplicativos / ferramentas: Veja acima os novos aplicativos / ferramentas os scripts
  • .
  • Os esforços em andamento. A seguir, são características que são parcialmente implementadas mas presentes nesta versão. Eles não são susceptíveis de ser concluída em breve.
  • Processos: Grande parte do trabalho nesta versão está focada na realização de processos de usuário Unix-estilo em NuttX. Não há mais a ser feito, no entanto. O roteiro completo e estado está disponível em: http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
  • XMEGA: Há alguns fragmentos no local para uma porta XMEGA. Essa porta não começou realmente, no entanto.
  • Galileo: Da mesma forma, há fragmentos no local para uma porta Intel Galileo. A porta não foi iniciada a sério qualquer um.
  • Bugfixes. Apenas as correções de bugs mais críticos estão listadas aqui (veja o ChangeLog para a lista completa de correções de bugs e para obter informações bugfix adicional, mais detalhada):
  • Core SO:
  • construir correções Kernel: (1) a configuração IDLE TCB deve indicar que o segmento IDLE é um privilegiado, linha kernel. (2) Não se construir task_create () ou task_spawn () interfaces de se existe um endereço ambiente. (3) posix_spawn () rosca de proxy do kernel deve ser uma lista de discussão do kernel, não é uma tarefa do usuário.
  • Várias interfaces pthread: Adicionar classe de armazenamento const para phthread parâmetros. A partir de Freddie Chopin.
  • sched / relógio: Remover vestígios de g_tickbias; precisam, em vez disso, para aplicar viés tempo para g_basetime, a fim de fornecer a hora correta do sistema.
  • Sistema de Chamadas: (1) Corrigido diversos erros; integração corrigido de exevc (), chamadas execvl (), posix_spawn (), e do sistema posix_spawnp (). (2) Se nós são configurados para usar uma pilha de kernel enquanto no manuseio SYSCALL, então temos de voltar para a pilha do usuário para fornecer um sinal.
  • Sistemas de Arquivos / Drivers Bloco / MTD:
  • procfs: Corrigir alguns quebra procf introduzido pela reorganização de algumas estruturas de dados não-reorganizable. De Ken Pettit.
  • AT45: Em at45db_bwrite (), o buffer não é aumentado quando se escreve mais de uma página. Sourceforge bug # 34.
  • binários Formatos:
  • deslocalizações ELF: Alguns tipos de deslocalização não tem um símbolo com o nome associado a eles. O projeto não conta para esse caso.
  • ELF carregadeira:. Bugfix Critical .. BSS não estava sendo apuradas
  • Gerenciamento de memória:
  • Granule Allocator: inicialização alocador Granule usa alocador errada para deixar de lado a memória do kernel
  • .
  • grupos privilegiados: Adicionar um sinalizador para estrutura de grupo: Se o grupo é criado por um thread do kernel, em seguida, todos os recursos do grupo deve ser privilegiada
  • .
  • Suporte Cryptogrphic:
  • cripto / cryptodev.c: segmentos de caminho revertidas em incluir caminho do arquivo. Notável por Brennan Ashton.
  • Drivers comuns:
  • Common PODE superior a metade: Em can_txdone, garçons sobre o semáforo deve ser informada, independentemente do valor de retorno de can_xmit. Primeiro ele retorna -EIO se não houver novos pacotes, e segundo as informações dos garçons é sobre o último pacote transferido. A partir de Lazlo Daniel Sitzer.
  • ARM:
  • Sistema de Chamadas: Corrigir um erro de digitação na chamada de sistema quando buscar parâmetro da pilha: registros [REG_PC] 4 é o endereço, não registros [REG_PC + 4]
  • .
  • STMicro STM32 Drivers:
  • STM32 F401 UART: suporte correto para USART6 neste chip. A partir de Freddie Chopin.
  • STM32 FLASH corrige: usar size_t em vez de uint16_t, fazer interface mais genérica. A partir de Freddie Chopin.
  • STM32 UART:. Correção para UART7 e UART8 no relógio STM32 permitir de Aton
  • CAN: No final do manipulador de interrupção, as interrupções foram sendo desativado, se todos os pacotes foram transferidos quando o manipulador de interrupção foi invocado. Isto é problemático, porque o manipulador de interrupção chama can_txdone () da metade superior, que pode enfileirar novos pacotes a enviar. Removido o bloco completamente, porque can_txdone () chama can_xmit () que desativa as interrupções se não houver novos pacotes para enviar. A partir de Lazlo Daniel Sitzer.
  • CAN:. Adicionais correção STM32 CAN sugerida por Max Holtzberg
  • STMicro ST32 Boards:
  • configs / MIKROE-stm32f4: Corrigir alguns bugs e compilar pequenas correções para a fonte de configuração MIKROE-stm32f4. De Ken Pettit.
  • ARM9 / ARMv7-A:
  • Sistema de Chamadas: Corrigir ARM7 / 9 e Cortex-A syscalls: Para threads no modo SVC, as instruções SVC clobbers R14. Isso deve ser levado em conta na montagem em linha.
  • Configuração de tarefas: Todas as tarefas, mesmo as tarefas do modo de usuário, deve iniciar no modo de supervisor até que passar o trampolim de start-up
  • .
  • ARMv7-A: Modificar up_fullcontextrestore () para CONFIG_BUILD_KERNEL. Ele mudou CPSR enquanto em kernel. Que irá falhar se o novo CPSR é o modo de usuário durante a execução no espaço do kernel. Fixadas por adição de uma chamada de sistema SYS_context_restore. Há uma alternativa, modificação simples de up_fullcontextrestore () que poderia ter sido feito: Poderia ter sido possível utilizar o SPSR vez do comp e, em seguida, fazer um retorno exceção de up_fullcontextrestore (). Isso seria mais eficiente, mas eu nunca tentei.
  • Atmel SAM3 / 4 Boards:
  • SAM3X / Arduino Devido: Corrigir erro de digitação no sam3x_periphclks.h; adicionar definições de SCLK para board.h arquivo de cabeçalho. De Fabien Comte.
  • SAM3 RTT: Só família SAM4 tem RTTDIS bit no registo MR. SourceForge bug # 33 de Fabien Comte.
  • C Library:
  • sscanf (): NuttX libc tentou adivinhar quantos caracteres para analisar, extraiu-los em um buffer, em seguida, correu strtol () nesse buffer. Essa suposição foi muitas vezes errado. Uma abordagem melhor seria chamar strtol () diretamente com os dados introduzidos, utilizando o valor de retorno endptr para determinar quantos caracteres para pular após a análise. De Kosma Moczek.
  • Biblioteca Matemática:. Corrigido atan2 implementações de Denis Arnst
  • Saída de ponto flutuante: Mudar para lib_dtoa () para corrigir erro de precisão de zeros à direita. De Bob Doiron.
  • aplicativos:
  • comando Fix NSH PS:. Se não houver argumentos, poderia imprimir lixo para lista de argumentos
  • Configuração / Build System:
  • Null Exemplo: Necessidade de incluir config.h encomendá-lo saber se esta é ou não é uma compilação kernel. Este problema ainda existe em vários outros arquivos que podem precisa definir main ().

O que é novo na versão 7.8:

  • Características: Novos recursos adicionais e funcionalidade estendida:
  • Core SO:
  • Watchdog Timer Alocação: (1) Se ficarmos sem horários pré-alocada de vigilância, a lógica vai agora alocar temporizadores adicionais a partir do heap. Uma reserva de temporizadores watchdog pré-alocada é mantido de modo a que sempre haverá timers disponíveis para manipuladores de interrupção. (2) Adicionado suporte para watchdog alocada estaticamente temporizador
  • Endereço Ambiente Apoio: (2) Novas APIs do sistema operacional integrado em todo o contexto específico da plataforma de comutação lógica (up_block_task (), up_unblock_task (), _exit (), e outros)
  • .
  • construir o apoio Kernel: (1) O MPU baseado & quot; construção do kernel & quot; renomeado para uma compilação protegido (CONFIG_BUILD_PROTECTED); adicionado suporte para a um novo MMU baseada em & quot; construção do kernel & quot; (CONFIG_BUILD_KERNEL), (2) O sistema de chamada de biblioteca pode agora ser construído com CONFIG_NUTTX_KERNEL. Nova seleção *:. CONFIG_LIB_SYSCALL
  • Inicialização do Sistema: Adicionar opções de configuração para iniciar o sistema a partir de um programa em um sistema de arquivos (versus um endereço na memória)
  • .
  • Startup Parâmetro Passe: Costumava haver duas maneiras de passar parâmetros para novas tarefas, dependendo da configuração: Qualquer um (1) argv [] como criado como uma matriz com cada corda strdup'ed. Ou (2) argv [] matriz e cordas foram criados na pilha antes de a nova tarefa foi iniciado. Agora, só há um caminho, caminho (2). Maneira (1) pode ser um pouco mais compacta, mas isto não vale a pena realizar a complexidade de duas maneiras diferentes de fazer a mesma coisa.
  • Inicialização Board: Adicionar capacidade para executar inicialização bordo inicial em um segmento de trabalho separado. Isto é necessário porque há muitos casos onde a lógica de inicialização não pode executar no start-up / thread IDLE. Isso ocorre porque o bloqueio ou de espera não é permitido no segmento IDLE.
  • Gerenciamento de memória:
  • Granule Allocator: (1) Adicionar uma nova função para reservar regiões un-allocatable na pilha de grânulos. (2) Adicionar interfaces para apoiar um alocador de grânulo-inicializar un.
  • Allocator página: Adicionar um simples alocador de página física com base no alocador de grânulos NuttX existente. Não estou certo se o alocador de grânulos é suficientemente determinista para uso de longo alcance, mas torna-se obter um alocador de página no lugar para testar muito rapidamente.
  • Remover CONFIG_MM_MULTIHEAP: operação não-multiheap não é mais suportado
  • .
  • sbrk ():. Sbrk () agora é suportado na construção do kernel para permitir o porte de forma dinâmica, montes por processo
  • por processo Heaps: Space no início do espaço de dados do processo é agora reservada para as estruturas de gestão heap usuário. No modo de construção do kernel, essas estruturas heap são compartilhadas entre o código do kernel e uso, a fim de alocar dados específicos do usuário.
  • Usuário Heap Management: Quando um privilegiadas segmento sai, nós temos que usar o alocador de memória livre; quando um segmento sai sem privilégios, não temos que fazer nada ... memória heap será limpo quando o ambiente de endereço é demolido.
  • Inter-Process suportam memória compartilhada: (1) Adicionar implementação e documentação para shmget (), shmctl (), shmat (), e shmdt (). (2) Adicionar sistema de chamadas de sistema para apoiar o portão chamada usuário para as interfaces de memória compartilhada. (3) Adicionar definições de interface específicos da plataforma necessários para apoiar a função de memória partilhada.
  • Virtual Allocator Página: Adicionar suporte para uma página alocador virtual por processo. Este é um novo membro da estrutura task_group_s. O alocador deve ser inicializado quando um novo usuário processo é iniciado e uninitialize quando o grupo processo é finalmente destruído. Ele é usado por shmat () e shmdt () para pegar o endereço virtual para o qual mapear a memória física compartilhada.
  • Sistemas de Arquivos / Drivers Bloco / MTD:
  • FS inteligente: FS SMART e do SMART FS PROCFS atualização de Ken Pettit
  • .
  • MTD:. A camada MTD Leia-ahead / Write tampão aparece agora é funcional
  • binários Formatos:
  • Per-Process Heap:. Adicionar lógica para inicializar a pilha do usuário por processo quando cada usuário processo é iniciado
  • Gráficos:
  • NxTerm: Alterar todas as ocorrências de NxConsole para NxTerm
  • .
  • Rede:
  • PHY Interrupções: (1) Padronizar uma interface de ligação de interrupção PHY. (2) Adicionar suporte para um ioctl que pode ser utilizado para notificar uma aplicação quando existe uma mudança no estado da rede assinalado por uma interrupção PHY.
  • Melhorado Enviar Logic: No passado, o primeiro pacote de enviar para um novo peer seria um fracasso; não haveria entrada na tabela ARP para o peer e assim uma solicitação ARP poderia substituir esse primeiro pacote. Agora, como uma opção se CONFIG_NET_ARP_SEND = y, tudo vai enviar lógica (1) verifique se o ponto endereço MAC está na tabela ARP e, se não, (2) enviar requisições ARP periodicamente para obter o mapeamento e (3) esperar que o resposta ARP. Em seguida, (4) quando a resposta ARP for recebido, então a lógica de envio real será iniciada. Assim, pode haver um atraso com o primeiro pacote enviado para um novo par, mas o pacote não deve ser perdida
  • Simulação Anfitrião:
  • A SPI FLASH motorista:. Emulada motorista SPI FLASH para o alvo sim de Ken Pettit
  • Intel x86:
  • Padrão Anfitrião: A máquina padrão é agora x86_64 ea opção -m32 será automaticamente selecionado para a simulação constrói
  • .
  • Intel 8051 Família:
  • 8051 Removido: Removido todo o suporte para a arquitetura da família 8051 da árvore de origem NuttX. O código obsoleto, juntamente com o patch de remoção pode agora ser encontrada em misc / / Obsoleted. Este código foi removido porque (1), embora algumas funcionalidades foi demonstrado, não tenho conhecimento de quaisquer portos realmente bem-sucedidos de NuttX para qualquer 8051, e (2) a 8051, com a sua pilha de hardware, obriga limitações e complicações para as outras arquiteturas e tornar o crescimento e desenvolvimento de NuttX mais complexo.
  • ZiLOG ZNeo Boards:
  • configs / 16Z: Suporte para esta placa foi removida da árvore fonte NuttX (mas ainda pode ser encontrado no diretório / Obsoleted Misc). Esta porta não está pronto para uso, mas pode retornar à árvore NuttX em algum momento no futuro.
  • Atmel SAM3 / 4 Boards:
  • SAM4E-EK:. Adicionar (1) um driver de LCD totalmente funcional baseada ILI9341 e (2) uma configuração NxWM totalmente funcional
  • ARMv7-A:
  • Ambientes de endereço: Adicionar suporte para ambientes de endereço aplicativo usando o Cortex-A MMU. Implementar interfaces específicas da plataforma padronizados de apoio ambiente NuttX endereço.
  • Operações de cache: Implementar, operações de cache específicos da plataforma padronizados. Estes são chamados de o carregador ELF, a fim de liberar D-cache e invalidar I-cache após um módulo ELF foi carregado na memória. Com esta mudança, os módulos ELF trabalhar corretamente no SAMA5 / Cortex-A plataforma.
  • Kernel Envergadura: (1) Adicionar implementações do portão chamada de sistema. (2) Adicionar CRT0 arquivo start-up que podem ser ligados a programas de usuário construídas separadamente. (3) Adicionar suporte para a entrega de sinais de uso de modo na construção do kernel. (4) Adicionar lógica para inicializar a pilha do usuário por processo quando cada usuário processo é iniciado. (5) ARMv7-A manipulação de exceção precisa trabalhar um pouco diferente se nós apoiar os processos de modo de usuário. Isso ocorre porque R13 e R14 são paginado de forma diferente entre o usuário eo modo de SVC.
  • Suporte de Memória Compartilhada: (1) Adicionar lógica necessária para lidar com remapeamento de memória compartilhada em trocas de contexto. (2) Estender conversões de endereço virtual / físico para incluir endereços na memória compartilhada. (3) Adicionar implementação de suporte de memória compartilhada específico para cada plataforma.
  • Atmel SAMA5D Drivers:
  • Rede IOCTLS:. Implementar todos os ioctls de rede, incluindo o novo ioctl para notificações de eventos de configuração PHY
  • As conversões de endereço:. No núcleo construir com o ambiente de endereço, precisa lógica para mapear endereços virtuais de usuário para endereços físicos, e vice-versa
  • Atmel SAMA5D Boards:
  • SAMA5D3 Xplained, SAMA5D3-EK, e SAMA5D4-EK: Converter as interfaces de interrupção PHY específica placa existente para usar interface padrão recém-definido
  • .
  • SAMA5D4-EK: Adicionar uma configuração para testar a configuração de compilação do kernel. Há configurações para arrancar quer a partir de um cartão SD ou a partir e na memória do sistema de arquivos ROMFS.
  • SAMA5D4-EK: Adicionar documentação / suporte para Rev E. bordo
  • .
  • STMicro STM32 Drivers:
  • Ethernet: Modificado para apoiar a mudança para as mudanças de rede de assinatura ioctl. Também adicionar suporte para o novo ioctl para notificações de eventos de configuração PHY.
  • STMicro STM32 Placas:
  • STM32F4DISCOVERY com STM32F4DIS-BB: Adicionar uma rede habilitada configuração NSH para o conselho STM32F4DISCOVERY com a placa de base STM32F4DIS-BB instalado. Inclui suporte para o slot para cartão microSD na placa de base STM32F4DIS-BB.
  • TI Tiva Drivers:
  • TI CC3200: Adicionar suporte para o CC3200 TI. De Jim Ewing.
  • TI Tiva Boards:
  • TI CC3200 Launchpad: Adicionar suporte para a TI CC3200 Launchpad. De Jim Ewing.
  • C Library:
  • poll ():. Re-implementado poll () atraso usando sem_timedwait ()
  • Configuração / Build System:
  • Exportar alvo: No kernel ou protegidos constrói, (1) apenas as bibliotecas de usuário deve ser exportado, (2) não copiar arquivos de cabeçalho internos ou criar scripts se esta é uma compilação do kernel ou protegidos, e (3) necessidades a agrupar-se o arquivo de inicialização do usuário C (crt0), não a cabeça objeto de kernel para o kernel e protegido constrói.
  • Programa CFLAGS: Adicionar lógica que nos permitirá construir bibliotecas de usuário com CFLAGS diferentes do código do kernel. Isso é necessário porque nós precisamos a opção -fno-comum na construção de código ELF para evitar deslocalizações SHN_COMMON.
  • aplicativos:
  • NSH: Estender a lógica de inicialização de rede NSH. Existe agora uma opção que irá criar um thread do monitor de rede que irá monitorar o estado do link. Quando o link cair, o código tentará graciosamente colocar o controlador Ethernet em um estado para baixo; Quando a ligação de volta, o código vai tentar levar a rede de volta.
  • ELF Exemplo:. O teste ELF / example foi estendido para os programas individuais de teste ELF pode vincular com a biblioteca SYSCALL (se estiver disponível) ou com a biblioteca C para eliminar ou minimizar a necessidade de tabelas de símbolos
  • NxTerm: Alterar todas as ocorrências de NxConsole para NxTerm
  • .
  • MTDRWB. Exemplo: Adicionar um exemplo para testar MTD R / W buffer
  • OS Teste Exemplo: Adicionar um teste trivial de sem_timedwait ()
  • .
















































































































    lógica.
















































  • Bugfixes:






































































































Programas semelhantes

Atomthreads
Atomthreads

20 Feb 15

Boxmax IR-S
Boxmax IR-S

14 Apr 15

LiveUSB-Graphics
LiveUSB-Graphics

20 Feb 15

Comentário para NuttX

Comentários não encontrado
Adicionar comentário
Ligue imagens!