NuttX

Screenshot Software:
NuttX
Szczegóły programowe:
Wersja: 7.9 Aktualizowane
Filmu: 10 May 15
Wywoływacz: Gregory Nutt
Licencja: Wolny
Popularność: 115

Rating: 4.0/5 (Total Votes: 1)

NuttX jest open source, deterministyczne i wolne w czasie rzeczywistym Wbudowany system operacyjny (RTOS), zaprojektowany od offsetu być używane w środowiskach głęboko osadzone, zasoby ograniczone. Ma niewielkie rozmiary, które są używane w środowiskach mikro-kontrolera, i & rsquo; s pełni skalowalne z malutkim (8-bit) do umiarkowanego wbudowane (32-bit) systemów.
Ma również na celu być w pełni zgodne z normami, aby być czas, w pełni realne, a być całkowicie otwarte. NuttX ma bogaty zestaw funkcji systemu operacyjnego, budowę modułową, jest wysoce skalowalny i konfigurowalny, a także zgodny ze standardami. Jest on rozprowadzany z nieograniczający licencji BSD. Często jest nazwany przez swoich twórców jako "Tiny Linux." Funkcje w glanceKey funkcje obejmują podstawowy zarządzania zadaniami, interfejs gniazd BSD, podzielników pamięci (pamięci współdzielonej, standardowy przydział pamięci sterty, chroniony build z MPU, płaski wbudowany budować, dla procesu stosy, granulat i dynamicznie wielkości podzielnika), konfiguracje pamięci, przenoszenie guide, w pełni preemptible, tickless pracy, system rejestrowania stronicowania na żądanie.
Ponadto, projekt pochodzi z rozszerzeniami do zarządzania pierwokupu, Per-nici, wbudowany w pomiarach obciążenia procesora, kompleksowej dokumentacji, opcjonalnych zadań, które zawierają adres, środowisk, takich jak ANSI i POSIX-kontroli zadań, takich jak zegary, pthreads, środowiska zmienne, sygnały, nazwanych kolejek komunikatów, timery, systemów plików i licząc semafory.
Wśród innych funkcji można wymienić round-robin harmonogramów, FIFO, wsparcie dla pierwszeństwa dziedziczenia, wsparcie dla architektury SoC, wsparcie dla architektur rady, wsparcie dla nowych architektur procesorów, liczniki strażniczych, VxWorks-jak zarządzanie zadaniami, I / O przekierowania i przekazywane & ldquo; kontrolowanie terminali & rdquo;. Obsługiwane platformsNuttX obsługuje szeroką gamę platform sprzętowych, wśród których można wymienić liczne procesory ARM, w tym ARM Cortex-M3, ARM926EJS, ARM7TDMI, ARM Cortex-M4, ARM Cortex-M0, ARM920T i ARM Cortex-A5, a także Atmel AVR 8-bit, Freescale M68HCS12, Atmel AVR AVR32 platformy.
Dodatkowo, jak również wspiera różne platformy Intela, jak Microchip PIC32MX (), MIPS i 80 & 80c52 czasów; 86, platform ZILOG, w tym Zilog Z80, Zilog Z16F, Zilog Z8Encore! i Zilog eZ80 Acclaim !, i Renesas / Hitachi i Renesas M16C SuperH / 26 platform

Co nowego w tym wydaniu:.

  • Funkcje: Dodatkowe nowe funkcje i rozszerzonej funkcjonalności:
  • Rdzeń OS:
  • Watchdog Timer Przeznaczenie: (1) Jeśli zabraknie nam wcześniej przydzielonych czasów strażniczych, logika będzie teraz przeznaczyć dodatkowe zegary z hałdy. Rezerwa wstępnie przydzielone timerów strażniczych jest utrzymywany tak, że nie zawsze będzie liczniki obsługi przerwań dostępne. (2) Dodano wsparcie dla statycznie przydzielonego Watchdog Timer
  • Adres Środowisko Wsparcie: (2) Nowe systemowe API zintegrowane wszystkich kontekście specyficznych dla platformy przełączania logiki (up_block_task (), up_unblock_task (), _exit (), i inne),
  • .
  • Kernel budować poparcie: (1) MPU oparty & quot; kernel build & quot; przemianowany na chronionym budowy (CONFIG_BUILD_PROTECTED); dodano wsparcie dla nowego MMU oparte & quot; kernel build & quot; (CONFIG_BUILD_KERNEL), (2) Biblioteka wywołanie systemowe mogą być budowane z CONFIG_NUTTX_KERNEL. Nowy wybór *:. CONFIG_LIB_SYSCALL
  • Uruchomienie systemu: Dodaj opcji konfiguracyjnych, aby uruchomić system z programu w systemie plików (w porównaniu do adresu w pamięci)
  • .
  • Uruchomienie Parametr Podania: Kiedyś dwa sposoby przekazywania parametrów do nowych zadań, w zależności od konfiguracji: albo (1) argv [], który został stworzony jako tablica z każdej struny strdup'ed. Lub (2) argv [] tablica i smyczki powstały na stosie przed uruchomieniem nowego zadania. Obecnie, istnieje tylko jeden sposób, sposób (2). Droga (1) może być nieco bardziej zwarta, ale to nie jest warte nosić złożoności dwóch różnych sposobów robi to samo.
  • Inicjalizacja Wyżywienie: Dodaj zdolność do wykonywania wstępnej inicjalizacji płyty na osobnym wątku roboczego. Jest to konieczne, ponieważ istnieje wiele przypadków, w których logika nie może wykonywać inicjalizacji na rozruchu / wątku IDLE. To dlatego, że blokowanie lub oczekiwania nie jest dozwolone na IDLE wątku.
  • Zarządzanie pamięcią:
  • Granulat Allocator: (1) Dodaj nową funkcję rezerwowania regiony un-allocatable w stercie granulatu. (2) Dodaj interfejsy do obsługi un-inicjalizacji alokatora granulki.
  • Strona Allocator: Dodaj prosty alokatora strony fizycznej w oparciu o istniejący NuttX granulatu podzielnika. Nie jestem pewien, czy jest wystarczająco przydzielania granulat długie użytkowanie deterministyczny zakresie, ale robi się dostać w miejsce przydzielania strony do testowania bardzo szybko.
  • Usuń CONFIG_MM_MULTIHEAP: Nie multiheap praca nie jest już obsługiwana
  • .
  • sbrk ():. Sbrk () jest obecnie obsługiwane w kompilacji jądra, aby umożliwić dynamiczne wielkości, mnóstwo na procesie,
  • dla procesu Mnóstwo: Przestrzeń na początku przestrzeni danych procesowych jest teraz zarezerwowany dla struktur zarządzania sterty użytkownika. W trybie kompilacji jądra, struktury te sterty są dzielone między jądra i użyć kodu w celu przyporządkowania danych konkretnego użytkownika.
  • Użytkownik Heap Zarządzanie: Gdy uprzywilejowane wyjścia gwintu, musimy użyć jądra do swobodnego przydzielania pamięci; kiedy nieuprzywilejowanej wyjścia gwintu, nie musimy nic robić ... pamięci sterty zostaną oczyszczone, gdy środowisko adres jest rozebrany.
  • Inter-Process Wsparcie Dzielone pamięci: (1) Dodaj realizacji i dokumentacji shmget (), shmctl (), shmat (), a shmdt (). (2) Dodaj Układ wzywa do wspierania bramę połączenia użytkownika do wspólnych interfejsów pamięci. (3) Dodaj definicji interfejsu danej platformy, niezbędnych do wspierania funkcji pamięci dzielonej.
  • Wirtualne Allocator Strona: Dodaj wsparcie dla wirtualnych Strona podzielnika dla każdego procesu. Jest to nowy członek task_group_s struktury. Podzielnik musi być inicjowane, gdy użytkownik jest nowy proces rozpoczął i zdeinicjować pamięć, gdy grupa proces jest ostatecznie zniszczony. Jest on używany przez shmat () i shmdt (), aby wybrać adres wirtualny, na którym się zmapować udostępniony pamięci fizycznej.
  • Blokuj systemów plików / Sterowniki / MTD:
  • SMART FS: SMART SMART FS i FS PROCFS nowości od Kena Pettit
  • .
  • MTD. Warstwa MTD pojawia przodu odczytu / zapisu jest teraz bufor funkcjonalne
  • formaty binarne:
  • Per-Process Heap:. Dodaj logikę zainicjować sterty dla procesu użytkownika, gdy użytkownik jest każdy proces rozpoczął
  • Grafika:
  • NxTerm: Zmień wszystkie wystąpienia NxConsole do NxTerm
  • .
  • Sieci:
  • PHY Przerwania: (1) Standaryzacja interfejsu mocowania PHY przerwania. (2) Dodaj wsparcie dla ioctl, które można wykorzystać do powiadomienia aplikacji, kiedy jest zmiana stanu sieci sygnalizowane przez przerwania PHY.
  • Ulepszona Wysłać Logic: W przeszłości, pierwszy pakiet wysłać do nowego peer zawiedzie; nie będzie wpis w tablicy ARP na każdym i tak żądanie ARP może zastąpić ten pierwszy pakiet. Teraz jako opcja, jeśli CONFIG_NET_ARP_SEND = y, wszystko wysłać logika (1) sprawdzić, czy adres MAC peer ma w tablicy ARP, a jeśli nie, (2) wysyłanie żądań ARP okresowo, aby uzyskać odwzorowanie i (3) poczekać Odpowiedź ARP. Następnie (4), gdy odpowiedź ARP otrzymała następnie rzeczywista logika wyślij zostanie wszczęte. W ten sposób może być opóźnienie w pierwszym pakiecie wysłanym do nowej każdym, ale pakiet nie może być utracone
  • Symulacja Host:
  • SPI FLASH kierowcy:. Emulowany kierowca po SPI FLASH sim cel z Kenem Pettit
  • Intel x86:
  • Default Host: domyślny host jest teraz x86_64 oraz opcja -m32 zostanie automatycznie wybrany do symulacji buduje
  • .
  • Intel 8051 Rodzina:
  • 8051 Usunięto: Usunięto wszystkie poparcie dla rodziny architektury z drzewa źródłowego NuttX 8051. Zastąpiony Kod wraz z patchem usuwania można teraz znaleźć w misc / przestarzałe /. Ten kod został usunięty, ponieważ (1), choć niektóre funkcje wykazano, że nie jestem świadomy wszelkich naprawdę udanych portów NuttX do jakiegokolwiek 8051, oraz (2) 8051, z jego sprzętu stosie, wymusza ograniczenia i komplikacje w innych architekturach i sprawiają, wzrost i rozwój NuttX bardziej skomplikowane.
  • ZILOG ZNeo Boards:
  • configs / 16Z: Wsparcie dla tej płyty została usunięta z drzewa źródłowego NuttX (ale nadal można znaleźć w katalogu / przestarzałe misc). Port ten nie jest gotowy do użycia, ale może powrócić do drzewa NuttX w pewnym momencie w przyszłości.
  • Atmel SAM3 / 4 Boards:
  • SAM4E-EK:. Dodaj (1), w pełni funkcjonalny sterownik oparty na ILI9341 LCD oraz (2) w pełni funkcjonalną konfigurację NxWM
  • ARMv7-:
  • Środowiska Adres: Dodaj wsparcie dla środowisk adresowych aplikacji korzystających z Cortex-A MMU. Wdrożenia standardowych interfejsów specyficzne dla platformy wsparcia środowiska adres NuttX.
  • Operacje na pamięci podręcznej: Wdrożenie znormalizowanych, operacje cache danej platformy. Są to tak zwane z ładowaczem ELF w celu wypłukania D-cache i unieważnienie I-cache po modułu ELF został załadowany do pamięci. Dzięki tej zmianie, moduły ELF pracować poprawnie na SAMA5 / Cortex-platformy.
  • Kernel Budowa: (1) Dodaj implementacje wywołań systemowych bramy. (2) Dodaj CRT0 plik startowy, który można powiązać z wbudowanych programów użytkownika oddzielnie. (3) Dodaj wsparcie dla dostarczania sygnałów zastosowanie trybu jądra w budowie. (4) Dodaj logikę zainicjować sterty dla procesu użytkownika, gdy każdy proces użytkownik jest uruchomiona. (5) ARMv7-obsługa wyjątków musi działać nieco inaczej, jeśli wspieramy procesy w trybie użytkownika. To dlatego, że R13 i R14 są paged inaczej pomiędzy trybem SVC użytkownikiem a.
  • Wspólna Pomoc pamięci: (1) Dodaj logikę niezbędną do obsługi manipulowanie pamięci współdzielonej na przełączeń kontekstu. (2) Rozszerzenie wirtualne / fizyczne konwersji adresów, to adresy w pamięci współdzielonej. (3) Dodaj realizacji specyficznych wspólnej platformy wsparcia pamięci.
  • Atmel SAMA5D Sterowniki:
  • Sieć Ioctl. Wdrożenie wszystkich sieci, w tym ioctl nowego ioctl do powiadomień o zdarzeniach ustawienia PHY
  • Konwersje Adres:. W środowisku jądra budować z adresu, trzeba logiki do map użytkowników wirtualnych adresów do adresów fizycznych, i odwrotnie,
  • Atmel SAMA5D Boards:
  • SAMA5D3 Xplained, SAMA5D3-EK i SAMA5D4-EK: Konwersja istniejących interfejsów zarządu specyficzne PHY przerwań używać nowo zdefiniowanej standardowy interfejs
  • .
  • SAMA5D4-EK: Dodaj do testowania konfiguracji kompilacji konfiguracji jądra. Istnieje konfiguracje uruchomienie zarówno z karty SD lub w pamięci i system plików ROMFS.
  • SAMA5D4-EK: Dodaj dokumentacji / wsparcie dla Rev E. pokładzie
  • .
  • STMicro STM32 Sterowniki:
  • Ethernet: zmodyfikowane w celu wspierania zmiany sieciowych zmiany podpisu ioctl. Również dodać wsparcie dla nowego ioctl do powiadomień o zdarzeniach ustawienia PHY.
  • STMicro STM32 Boards:
  • STM32F4Discovery z STM32F4DIS-BB: Dodaj sieć włączona obsługa konfiguracji NSH dla zarządu STM32F4Discovery z zainstalowanym płyty bazowej STM32F4DIS-BB. Obejmuje wsparcie dla kart microSD na podstawowej płycie STM32F4DIS-BB.
  • TI TIVA Sterowniki:
  • TI CC3200: Dodaj wsparcie dla CC3200 TI. Od Jim Ewing.
  • TI TIVA Boards:
  • TI CC3200 Launchpad: Dodaj wsparcie dla TI CC3200 Launchpad. Od Jim Ewing.
  • C Library:
  • poll (). Ponownie realizowane poll () opóźnienie przy użyciu sem_timedwait ()
  • Konfiguracja / Budowanie systemu:
  • Eksport docelowa: W jądrze lub chronione buduje, (1) tylko biblioteki użytkownika powinny być eksportowane, (2) nie kopiować pliki nagłówka lub wewnętrznej budowy skryptów, czy jest to budowa jądra lub chronione, i (3) potrzeby aby zbierać pliku startowego (crt0 użytkownika C) nie głowicy obiekt jądra dla jądra i chronione buduje.
  • Program CFLAGS: Dodaj logikę, która pozwoli nam zbudować biblioteki użytkownika z różnymi flagami, niż kodu jądra. Jest to konieczne, ponieważ musimy -fno-wspólny opcję przy budowie kodu, aby zapobiec delokalizacji ELF SHN_COMMON.
  • Aplikacje:
  • NSH: Rozszerzenie logikę inicjowania sieci NSH. Istnieje teraz możliwość, że będzie stworzenie monitora wątek sieci, która będzie monitorować stan łącza. Gdy związek idzie w dół, kod będzie próbował wdziękiem umieścić sterownik Ethernet w stanie w dół; Gdy związek wraca, kod będzie próbował doprowadzić do sieci z powrotem.
  • ELF. Przykład: Test ELF / przykład został rozszerzony tak, poszczególne programy badawcze ELF może połączyć przeciwko biblioteki wywołanie systemowe (jeśli jest dostępny) lub w stosunku do biblioteki C, aby wyeliminować lub zminimalizować potrzebę tabelach symboli
  • NxTerm: Zmień wszystkie wystąpienia NxConsole do NxTerm
  • .
  • MTDRWB Przykład:. Dodaj przykład przetestować MTD R / W buforowanie
  • OS Przykład testowy: Dodaj banalny test sem_timedwait ()
  • .
  • Konfiguracja aplikacji / Budowanie systemu:
  • Importuj docelowa: (1) Dodaj logikę, która pozwoli aplikacji budynek z pakietu eksportu NuttX (w porównaniu z drzewa nuttx / source). (2) Dodaj do eksportu pliku .config pakiet. (3) Tworzenie apps / import. Tworzenie aplikacji / import / Make.defs, że robi takie rzeczy jak zdefiniować CFLAGS; ELF build wymaga -fno-common w flagami. Skopiuj pewnej logiki bazy z nuttx / Narzędzia / Config.mk do aplikacji / Import / Make.defs. (4) Dodaj apps / import / scripts / skrypt linkera GNU gcc-elf.ld dla importu ELF buduje.
  • Wszystkie Makefile: (1) Dodaj cel zainstalowania wszystkich plików Makefile. Do budowy importu, Makefile najwyższego poziomu teraz robi dwie przełęcze: (1) buduje libapp.a, a następnie (2) instaluje programów w apps / bin. (2) Dodaj instalację programu dla CONFIG_BUILD_KERNEL we wszystkich Makefile, które budują main (). (3) W przypadku kompilacji jądra, plik obiekt zawierający main () nie może iść do biblioteki z powodu kolizji nazw. Plik obiektu muszą być traktowane jako szczególny przypadek, w każdym pliku Makefile.
  • Wszystkie wbudowane programy: Z kompilacji jądra (CONFIG_BUILD_KERNEL), punkt wejścia do wszystkich zadań jest main (), a nie jakiś xyz_main ()
  • .
  • NSH: Kilka poleceń musi być wyłączony w kompilacji jądra, ponieważ zależą one od interfejsów, które nie są dostępne poza jądrem. Dd, df, losetup, mkfatfs, mkdr i ps
  • Aplikacje / narzędzia /: (1) Dodaj mkimport.sh eksplodować się NuttX import i zainstalować pakiet w apps / importu. (2) Dodaj mkromfsimg.sh skrypt do tworzenia obrazu systemu plików BOOT ROMFS.
  • ELF i NxFLAT Przykłady:. Nie buduj przypadków testowych, które używają task_create (), jeśli istnieje otoczenie adres
  • Narzędzia:
  • refresh.sh:. Dodaj narzędzie do konfiguracji łatwiej, gdy orzeźwiające chcesz zrobić wiele z nich
  • mksyscall.c: Budowanie wywołań systemowych, które nie muszą pliki
  • .
  • mkexport.sh:. Dodaj .config plik wyeksportować pakiet
  • Aplikacje / narzędzia: Patrz wyżej nowych apps / narzędzia skryptów
  • .
  • Starania w toku. Oto cechy, które są częściowo realizowane, ale obecne w tej wersji. Oni nie mogą być wkrótce zakończone.
  • Procesy: Większość prac w tej wersji koncentruje się na realizacji procesów użytkownika w stylu Unix NuttX. Jest więcej do zrobienia, jednak. Pełna mapa drogowa i stan jest dostępne pod adresem: http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
  • XMEGA: Istnieją pewne fragmenty w miejscu do portu XMEGA. Że port nie jest naprawdę zaczęła się jednak.
  • Galileo: Podobnie, są fragmenty w miejscu do portu Intel Galileo. Port nie rozpoczęło się na dobre albo.
  • Poprawki błędów. Tylko najbardziej krytycznych poprawek znajduje się tutaj (patrz ChangeLog pełną listę poprawek i dodatkowych, bardziej szczegółowych informacji na naprawienie):
  • Rdzeń OS:
  • Kernel budować poprawki: (1) IDLE konfiguracji TCB musi wskazywać, że wątek jest IDLE uprzywilejowane, wątek jądra. (2) Nie należy budować task_create () lub task_spawn (), interfejsy, jeśli istnieje otoczenie adres. (3) posix_spawn () wątku proxy jądra powinny być wątek jądra, a nie zadaniem użytkownika.
  • Kilka interfejsy Pthread: Dodaj do const klasę pamięci parametrów phthread. Od Freddie Chopin.
  • SCHED / zegara: Usunąć ślady g_tickbias; trzeba natomiast zastosować nastawienie czasu do g_basetime w celu zapewnienia prawidłowego czasu systemowego.
  • System Calls: (1) Kilka literówek stałe; poprawiona integracja exevc (), połączenia execvl (), posix_spawn (), system i posix_spawnp (). (2) Jeśli są skonfigurowane do korzystania stosu jądra, podczas gdy w obsłudze wywołanie systemowe, to musimy wrócić do stosu użytkownika do dostarczania sygnału.
  • Blokuj systemów plików / Sterowniki / MTD:
  • PROCFS: Fix jakieś pęknięcie procf wprowadzony przez reorganizację niektórych nie reorganizable struktur danych. Ken Pettit.
  • AT45: W at45db_bwrite (), bufor nie jest zwiększana podczas pisania więcej niż 1 strona. Sourceforge bug # 34.
  • formaty binarne:
  • relokacji ELF: Niektóre rodzaje relokacji nie masz nazwie symbolu związanego z nimi. Projekt nie uwzględnia tej sprawie.
  • ELF Ładowarka:. Krytyczne bugfix .. BSS nie jest wyczyszczone,
  • Zarządzanie pamięcią:
  • Granulat Allocator: Granulat inicjalizacji podzielnik używa złego alokatora do uchylenia pamięć jądra
  • .
  • uprzywilejowane grupy: Dodaj znacznik do struktury grupy: Jeżeli grupa jest tworzona przez wątek jądra, to wszystkie zasoby w grupie musi być uprzywilejowany
  • .
  • Cryptogrphic Pomoc:
  • krypto / cryptodev.c: Path segmenty odwrócone w to ścieżkę do pliku. Zauważył Brennan Ashton.
  • Wspólne Sterowniki:
  • Wspólne CAN górna połowa: W can_txdone, kelnerzy na semaforze powinien być poinformowany, niezależnie od wartości zwracanej can_xmit. Najpierw zwraca -EIO jeśli nie ma nowe pakiety, a drugie informacje kelnerĂłw około ostatniej przenoszonego pakietu. Daniel Lazlo Sitzer.
  • ARM:
  • System Calls: Fix literówkę w wywołaniu systemowym podczas pobierania parametrów ze stosu: regs [REG_PC] +4 jest adres, nie regs [REG_PC + 4],
  • .
  • STMicro STM32 Sterowniki:
  • STM32 F401 UART: Prawidłowa obsługa USART6 na ten chip. Od Freddie Chopin.
  • STM32 FLASH ustala: użyć size_t zamiast uint16_t, aby interfejs bardziej ogólne. Od Freddie Chopin.
  • STM32 UART. Fix do UART7 i UART8 na STM32 zegar umożliwić od Aton
  • CAN: Na koniec obsługi przerwań, przerwania były wyłączone, jeśli wszystkie pakiety zostały przeniesione, gdy obsługi przerwań została wywołana. Jest to problematyczne, ponieważ wymaga obsługi przerwań can_txdone (), w górnej części, które mogą kolejkować nowe pakiety do przesłania. Blok całkowicie usunięte, ponieważ can_txdone () wywołuje can_xmit (), która wyłącza przerwania, jeśli nie ma żadnych nowych pakietów do wysłania. Daniel Lazlo Sitzer.
  • CAN. CAN dodatkowe sugerowane korekty STM32 Max Holtzberg
  • STMicro ST32 Boards:
  • configs / mikroe-stm32f4: Fix kilka kompilacji błędów i drobne poprawki do źródła konfiguracji mikroe-stm32f4. Ken Pettit.
  • ARM9 / ARMv7-:
  • System Calls: Fix ARM7 / 9 i Cortex-A wywołań systemowych: Dla wątków w trybie SVC, instrukcje SVC clobbers R14. Należy wziąć to pod uwagę w zespole na rolkach.
  • Ustawienia Zadanie: Wszystkie zadania, a nawet zadania trybu użytkownika, należy uruchomić w trybie administratora, aż ominąć trampolinie rozruchu
  • .
  • ARMv7-: Modyfikacja up_fullcontextrestore () dla CONFIG_BUILD_KERNEL. To zmieniło się w jądrze CPSR jednocześnie. Że padnie jeśli nowy tryb użytkownika CPSR jest podczas wykonywania w przestrzeni jądra. Naprawiono dodając wywołanie systemowe SYS_context_restore. Istnieje alternatywa, prostsze modyfikacja up_fullcontextrestore (), które mogły zostać wykonane: To mogło być możliwe użycie SPSR zamiast Sprężarka, a następnie zrobić wyjątek od up_fullcontextrestore powrót (). To byłoby bardziej efektywne, ale nigdy nie próbowałem.
  • Atmel SAM3 / 4 Boards:
  • SAM3X / Arduino powodu: literówka w sam3x_periphclks.h Fix; dodać definicje SCLK do board.h pliku nagłówka. Od Fabien Comte.
  • SAM3 RTT: Tylko rodzina SAM4 ma RTTDIS bit w rejestrze MR. SourceForge błąd nr 33 z Fabien Comte.
  • C Library:
  • sscanf (): NuttX libc próbował odgadnąć, ile znaków analizować, wydobyte je w buforze, a następnie pobiegł strtol () w tym buforze. To przypuszczenie było często błędne. Lepszym rozwiązaniem byłoby zadzwonić strtol () bezpośrednio na danych wejściowych, przy użyciu wartości zwracanej endptr określić, ile znaków, aby przejść po parsowania. Od Kosma Moczek.
  • Biblioteka Matematyka:. Poprawione atan2 wdrożeń z Denis Arnst
  • zmiennoprzecinkowe wyjściowa: Zmiana lib_dtoa (), aby naprawić błąd precyzji od końcowe zera. Od Bob Doiron.
  • Aplikacje:
  • polecenie Fix NSH. PS: Jeśli nie ma argumentów, to może wydrukować śmieci na liście argumentów,
  • Konfiguracja / Budowanie systemu:
  • Null Przykład: Chcesz to config.h zamówienie to wiedzieć, czy to jest czy nie jest budowa jądra. Ten problem nie występuje w kilku innych plików, które mogą potrzebować, aby zdefiniować main ().

Co nowego w wersji 7.8:

  • Funkcje: Dodatkowe nowych funkcji i rozszerzonej funkcjonalności:
  • Rdzeń OS:
  • Watchdog Timer Przeznaczenie: (1) Jeśli zabraknie nam wcześniej przydzielonych czasów strażniczych, logika będzie teraz przeznaczyć dodatkowe zegary z hałdy. Rezerwa wstępnie przydzielone timerów strażniczych jest utrzymywany tak, że nie zawsze będzie liczniki obsługi przerwań dostępne. (2) Dodano wsparcie dla statycznie przydzielonego Watchdog Timer
  • Adres Środowisko Wsparcie: (2) Nowe systemowe API zintegrowane wszystkich kontekście specyficznych dla platformy przełączania logiki (up_block_task (), up_unblock_task (), _exit (), i inne),
  • .
  • Kernel budować poparcie: (1) MPU oparty & quot; kernel build & quot; przemianowany na chronionym budowy (CONFIG_BUILD_PROTECTED); dodano wsparcie dla nowego MMU oparte & quot; kernel build & quot; (CONFIG_BUILD_KERNEL), (2) Biblioteka wywołanie systemowe mogą być budowane z CONFIG_NUTTX_KERNEL. Nowy wybór *:. CONFIG_LIB_SYSCALL
  • Uruchomienie systemu: Dodaj opcji konfiguracyjnych, aby uruchomić system z programu w systemie plików (w porównaniu do adresu w pamięci)
  • .
  • Uruchomienie Parametr Podania: Kiedyś dwa sposoby przekazywania parametrów do nowych zadań, w zależności od konfiguracji: albo (1) argv [], który został stworzony jako tablica z każdej struny strdup'ed. Lub (2) argv [] tablica i smyczki powstały na stosie przed uruchomieniem nowego zadania. Obecnie, istnieje tylko jeden sposób, sposób (2). Droga (1) może być nieco bardziej zwarta, ale to nie jest warte nosić złożoności dwóch różnych sposobów robi to samo.
  • Inicjalizacja Wyżywienie: Dodaj zdolność do wykonywania wstępnej inicjalizacji płyty na osobnym wątku roboczego. Jest to konieczne, ponieważ istnieje wiele przypadków, w których logika nie może wykonywać inicjalizacji na rozruchu / wątku IDLE. To dlatego, że blokowanie lub oczekiwania nie jest dozwolone na IDLE wątku.
  • Zarządzanie pamięcią:
  • Granulat Allocator: (1) Dodaj nową funkcję rezerwowania regiony un-allocatable w stercie granulatu. (2) Dodaj interfejsy do obsługi un-inicjalizacji alokatora granulki.
  • Strona Allocator: Dodaj prosty alokatora strony fizycznej w oparciu o istniejący NuttX granulatu podzielnika. Nie jestem pewien, czy jest wystarczająco przydzielania granulat długie użytkowanie deterministyczny zakresie, ale robi się dostać w miejsce przydzielania strony do testowania bardzo szybko.
  • Usuń CONFIG_MM_MULTIHEAP: Nie multiheap praca nie jest już obsługiwana
  • .
  • sbrk ():. Sbrk () jest obecnie obsługiwane w kompilacji jądra, aby umożliwić dynamiczne wielkości, mnóstwo na procesie,
  • dla procesu Mnóstwo: Przestrzeń na początku przestrzeni danych procesowych jest teraz zarezerwowany dla struktur zarządzania sterty użytkownika. W trybie kompilacji jądra, struktury te sterty są dzielone między jądra i użyć kodu w celu przyporządkowania danych konkretnego użytkownika.
  • Użytkownik Heap Zarządzanie: Gdy uprzywilejowane wyjścia gwintu, musimy użyć jądra do swobodnego przydzielania pamięci; kiedy nieuprzywilejowanej wyjścia gwintu, nie musimy nic robić ... pamięci sterty zostaną oczyszczone, gdy środowisko adres jest rozebrany.
  • Inter-Process Wsparcie Dzielone pamięci: (1) Dodaj realizacji i dokumentacji shmget (), shmctl (), shmat (), a shmdt (). (2) Dodaj Układ wzywa do wspierania bramę połączenia użytkownika do wspólnych interfejsów pamięci. (3) Dodaj definicji interfejsu danej platformy, niezbędnych do wspierania funkcji pamięci dzielonej.
  • Wirtualne Allocator Strona: Dodaj wsparcie dla wirtualnych Strona podzielnika dla każdego procesu. Jest to nowy członek task_group_s struktury. Podzielnik musi być inicjowane, gdy użytkownik jest nowy proces rozpoczął i zdeinicjować pamięć, gdy grupa proces jest ostatecznie zniszczony. Jest on używany przez shmat () i shmdt (), aby wybrać adres wirtualny, na którym się zmapować udostępniony pamięci fizycznej.
  • Blokuj systemów plików / Sterowniki / MTD:
  • SMART FS: SMART SMART FS i FS PROCFS nowości od Kena Pettit
  • .
  • MTD. Warstwa MTD pojawia przodu odczytu / zapisu jest teraz bufor funkcjonalne
  • formaty binarne:
  • Per-Process Heap:. Dodaj logikę zainicjować sterty dla procesu użytkownika, gdy użytkownik jest każdy proces rozpoczął
  • Grafika:
  • NxTerm: Zmień wszystkie wystąpienia NxConsole do NxTerm
  • .
  • Sieci:
  • PHY Przerwania: (1) Standaryzacja interfejsu mocowania PHY przerwania. (2) Dodaj wsparcie dla ioctl, które można wykorzystać do powiadomienia aplikacji, kiedy jest zmiana stanu sieci sygnalizowane przez przerwania PHY.
  • Ulepszona Wysłać Logic: W przeszłości, pierwszy pakiet wysłać do nowego peer zawiedzie; nie będzie wpis w tablicy ARP na każdym i tak żądanie ARP może zastąpić ten pierwszy pakiet. Teraz jako opcja, jeśli CONFIG_NET_ARP_SEND = y, wszystko wysłać logika (1) sprawdzić, czy adres MAC peer ma w tablicy ARP, a jeśli nie, (2) wysyłanie żądań ARP okresowo, aby uzyskać odwzorowanie i (3) poczekać Odpowiedź ARP. Następnie (4), gdy odpowiedź ARP otrzymała następnie rzeczywista logika wyślij zostanie wszczęte. W ten sposób może być opóźnienie w pierwszym pakiecie wysłanym do nowej każdym, ale pakiet nie może być utracone
  • Symulacja Host:
  • SPI FLASH kierowcy:. Emulowany kierowca po SPI FLASH sim cel z Kenem Pettit
  • Intel x86:
  • Default Host: domyślny host jest teraz x86_64 oraz opcja -m32 zostanie automatycznie wybrany do symulacji buduje
  • .
  • Intel 8051 Rodzina:
  • 8051 Usunięto: Usunięto wszystkie poparcie dla rodziny architektury z drzewa źródłowego NuttX 8051. Zastąpiony Kod wraz z patchem usuwania można teraz znaleźć w misc / przestarzałe /. Ten kod został usunięty, ponieważ (1), choć niektóre funkcje wykazano, że nie jestem świadomy wszelkich naprawdę udanych portów NuttX do jakiegokolwiek 8051, oraz (2) 8051, z jego sprzętu stosie, wymusza ograniczenia i komplikacje w innych architekturach i sprawiają, wzrost i rozwój NuttX bardziej skomplikowane.
  • ZILOG ZNeo Boards:
  • configs / 16Z: Wsparcie dla tej płyty została usunięta z drzewa źródłowego NuttX (ale nadal można znaleźć w katalogu / przestarzałe misc). Port ten nie jest gotowy do użycia, ale może powrócić do drzewa NuttX w pewnym momencie w przyszłości.
  • Atmel SAM3 / 4 Boards:
  • SAM4E-EK:. Dodaj (1), w pełni funkcjonalny sterownik oparty na ILI9341 LCD oraz (2) w pełni funkcjonalną konfigurację NxWM
  • ARMv7-:
  • Środowiska Adres: Dodaj wsparcie dla środowisk adresowych aplikacji korzystających z Cortex-A MMU. Wdrożenia standardowych interfejsów specyficzne dla platformy wsparcia środowiska adres NuttX.
  • Operacje na pamięci podręcznej: Wdrożenie znormalizowanych, operacje cache danej platformy. Są to tak zwane z ładowaczem ELF w celu wypłukania D-cache i unieważnienie I-cache po modułu ELF został załadowany do pamięci. Dzięki tej zmianie, moduły ELF pracować poprawnie na SAMA5 / Cortex-platformy.
  • Kernel Budowa: (1) Dodaj implementacje wywołań systemowych bramy. (2) Dodaj CRT0 plik startowy, który można powiązać z wbudowanych programów użytkownika oddzielnie. (3) Dodaj wsparcie dla dostarczania sygnałów zastosowanie trybu jądra w budowie. (4) Dodaj logikę zainicjować sterty dla procesu użytkownika, gdy każdy proces użytkownik jest uruchomiona. (5) ARMv7-obsługa wyjątków musi działać nieco inaczej, jeśli wspieramy procesy w trybie użytkownika. To dlatego, że R13 i R14 są paged inaczej pomiędzy trybem SVC użytkownikiem a.
  • Wspólna Pomoc pamięci: (1) Dodaj logikę niezbędną do obsługi manipulowanie pamięci współdzielonej na przełączeń kontekstu. (2) Rozszerzenie wirtualne / fizyczne konwersji adresów, to adresy w pamięci współdzielonej. (3) Dodaj realizacji specyficznych wspólnej platformy wsparcia pamięci.
  • Atmel SAMA5D Sterowniki:
  • Sieć Ioctl. Wdrożenie wszystkich sieci, w tym ioctl nowego ioctl do powiadomień o zdarzeniach ustawienia PHY
  • Konwersje Adres:. W środowisku jądra budować z adresu, trzeba logiki do map użytkowników wirtualnych adresów do adresów fizycznych, i odwrotnie,
  • Atmel SAMA5D Boards:
  • SAMA5D3 Xplained, SAMA5D3-EK i SAMA5D4-EK: Konwersja istniejących interfejsów zarządu specyficzne PHY przerwań używać nowo zdefiniowanej standardowy interfejs
  • .
  • SAMA5D4-EK: Dodaj do testowania konfiguracji kompilacji konfiguracji jądra. Istnieje konfiguracje uruchomienie zarówno z karty SD lub w pamięci i system plików ROMFS.
  • SAMA5D4-EK: Dodaj dokumentacji / wsparcie dla Rev E. pokładzie
  • .
  • STMicro STM32 Sterowniki:
  • Ethernet: zmodyfikowane w celu wspierania zmiany sieciowych zmiany podpisu ioctl. Również dodać wsparcie dla nowego ioctl do powiadomień o zdarzeniach ustawienia PHY.
  • STMicro STM32 Boards:
  • STM32F4Discovery z STM32F4DIS-BB: Dodaj sieć włączona obsługa konfiguracji NSH dla zarządu STM32F4Discovery z zainstalowanym płyty bazowej STM32F4DIS-BB. Obejmuje wsparcie dla kart microSD na podstawowej płycie STM32F4DIS-BB.
  • TI TIVA Sterowniki:
  • TI CC3200: Dodaj wsparcie dla CC3200 TI. Od Jim Ewing.
  • TI TIVA Boards:
  • TI CC3200 Launchpad: Dodaj wsparcie dla TI CC3200 Launchpad. Od Jim Ewing.
  • C Library:
  • poll (). Ponownie realizowane poll () opóźnienie przy użyciu sem_timedwait ()
  • Konfiguracja / Budowanie systemu:
  • Eksport docelowa: W jądrze lub chronione buduje, (1) tylko biblioteki użytkownika powinny być eksportowane, (2) nie kopiować pliki nagłówka lub wewnętrznej budowy skryptów, czy jest to budowa jądra lub chronione, i (3) potrzeby aby zbierać pliku startowego (crt0 użytkownika C) nie głowicy obiekt jądra dla jądra i chronione buduje.
  • Program CFLAGS: Dodaj logikę, która pozwoli nam zbudować biblioteki użytkownika z różnymi flagami, niż kodu jądra. Jest to konieczne, ponieważ musimy -fno-wspólny opcję przy budowie kodu, aby zapobiec delokalizacji ELF SHN_COMMON.
  • Aplikacje:
  • NSH: Rozszerzenie logikę inicjowania sieci NSH. Istnieje teraz możliwość, że będzie stworzenie monitora wątek sieci, która będzie monitorować stan łącza. Gdy związek idzie w dół, kod będzie próbował wdziękiem umieścić sterownik Ethernet w stanie w dół; Gdy związek wraca, kod będzie próbował doprowadzić do sieci z powrotem.
  • ELF. Przykład: Test ELF / przykład został rozszerzony tak, poszczególne programy badawcze ELF może połączyć przeciwko biblioteki wywołanie systemowe (jeśli jest dostępny) lub w stosunku do biblioteki C, aby wyeliminować lub zminimalizować potrzebę tabelach symboli
  • NxTerm: Zmień wszystkie wystąpienia NxConsole do NxTerm
  • .
  • MTDRWB Przykład:. Dodaj przykład przetestować MTD R / W buforowanie
  • OS Przykład testowy: Dodaj banalny test sem_timedwait ()
  • .
  • Narzędzia:









































  • Narzędzia:




  • Narzędzia:
























































































  • Narzędzia:


























  • Poprawki błędów:






































































































Podobne oprogramowanie

Komentarze do NuttX

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!