NuttX este un open source, sistem deterministic și gratuit de operare embedded in timp real (RTOS), proiectat de la distanta la care poate fi folosit în medii, de resurse limitate adânc înrădăcinate. Acesta are o amprentă mică, care este utilizabil în mediile micro-controler, și și rsquo; s complet scalabile la mici (8-bit) pentru a moderat sisteme (32-bit) încorporat.
De asemenea, își propune să fie pe deplin conforme cu standardele, pentru a fi pe deplin timp real și de a fi complet deschise. NuttX are un bogat set de caracteristici de operare, un design modular, este foarte scalabil și configurabil, precum și standarde conforme. Acesta este distribuit cu licență BSD non-restrictive. Acesta este adesea numit de către dezvoltatorii săi ca "Tiny Linux." Caracteristicile la o caracteristici glanceKey includ managementul de bază de activitate, BSD interfata socket, repartitoare de memorie (memorie partajata, standard de alocare de memorie heap, construi protejate cu MPU, construi plat încorporat, per proces grămezi, repartitorului granule și dinamic de dimensiuni), configurații de memorie, ghid de portare, complet prioritare, operare, tickless, la cerere paging și sistem de logare.
În plus, proiectul vine cu extensii pentru a gestiona preemțiune, pe-fir, built-in măsurătorile sarcină CPU, documentație cuprinzătoare, sarcini opționale care conțin medii adresa, controale operative ANSI-cum ar fi și POSIX-cum ar fi, ceasuri, pthreads, mediu variabile, semnale, cozi numite mesaje, cronometre, sistem de fișiere și semafoare de numărare.
Printre alte caracteristici, putem menționa programare round-robin, FIFO, suport pentru moștenire prioritate, sprijin pentru arhitectura SoC, suport pentru arhitecturi de bord, suport pentru noi arhitecturi de procesoare, temporizatoare watchdog, VxWorks-cum ar fi managementul de activitate, I / O redirecționare și transmise și ldquo; controlul terminalelor si rdquo;. suportate platformsNuttX suporta o mare varietate de platforme hardware, printre care putem menționa numeroase procesoare ARM, inclusiv ARM Cortex-M3, ARM926EJS, ARM7TDMI, ARM Cortex-M4, ARM Cortex-M0, ARM920T și ARM Cortex-A5, precum și Atmel AVR 8 biți, Freescale M68HCS12, platforme AVR32 Atmel AVR.
În plus, acesta susține, de asemenea, diverse platforme Intel, cum ar fi microcip PIC32MX (MIPS), 80c52 și 80 & ori, 86, platforme Zilog, inclusiv Z80, Zilog Z16F, Zilog Z8Encore! și Zilog eZ80 Acclaim !, și M16C / 26 platforme Renesas / Hitachi SuperH și Renesas
Ce este nou în această versiune:.
- Caracteristici: noi caracteristici suplimentare și funcționalitate extinsă:
- Core OS:
- Watchdog timer Alocare: (1) În cazul în care ne-am alerga afară de perioada pre-alocate watchdog, logica va aloca acum cronometre suplimentare din grămada. O rezervă de cronometre pre-alocate watchdog se menține astfel încât vor exista întotdeauna cronometre disponibile pentru stivuitoare întrerupere. (2) Adăugat suport pentru watchdog alocat static timer
- Adresa Mediu Suport: (2) noul sistem de operare API integrată în toate context, platforma specific de comutare logica (up_block_task (), up_unblock_task (), _exit (), și altele) .
- Kernel Build Suport: (1) MPU bazat & quot; kernel construi & quot; redenumit la acumularea protejat (CONFIG_BUILD_PROTECTED); adăugat suport pentru un nou MMU bazat pe & quot; kernel construi & quot; (CONFIG_BUILD_KERNEL), (2) Biblioteca apel sistem poate fi acum construit cu CONFIG_NUTTX_KERNEL. Selecția nou *:. CONFIG_LIB_SYSCALL
- System Startup: Adauga opțiuni de configurare pentru a porni sistemul de la un program la un sistem de fișiere (față de o adresă în memorie) .
- Startup Parametru: Nu folosit pentru a fi două moduri de a trece parametrii de noi sarcini, în funcție de configurația: Fie (1) argv [] ca creat ca un tablou cu fiecare șir strdup'ed. Sau (2) argv [] matrice și siruri de caractere au fost create pe stiva înainte ca noua sarcina a fost pornit. Acum, există doar o singură cale, cale (2). Way (1) poate fi ușor mai compact, dar acest lucru nu este în valoare transporta complexitatea două moduri diferite de a face acelasi lucru.
- inițializare Board: Adauga capacitatea de a efectua inițializarea inițială bord pe un fir lucrător separat. Acest lucru este necesar deoarece există multe cazuri în care logica de inițializare nu poate executa pe start-up / firul IDLE. Asta se datorează faptului că blochează sau de așteptare nu este permisă pe firul IDLE.
- Memory Management:
- granulei Allocator: (1) Adauga o noua functie pentru a rezerva regiuni ne-allocatable în grămadă granule. (2) Adauga interfețe pentru a susține o alocare granule-inițializarea ne.
- Pagina Allocator: Adaugă un simplu alocare pagină fizic bazat pe repartitorului granule NuttX existente. Eu nu sunt sigur dacă repartitorului granule este suficient de deterministic pentru utilizarea pe distanțe lungi, dar devine obține o alocare pagină, în loc pentru testarea foarte repede.
- Eliminare CONFIG_MM_MULTIHEAP: operațiune non-multiheap nu mai este acceptat .
- sbrk ():. Sbrk () este suportat în construi kernel pentru a permite dinamic de dimensiuni, mormane pe-proces
- Pe-proces Heaps: Space la începutul spațiului de proces de date este rezervat pentru structuri de management morman de utilizator. În modul construi kernel, aceste structuri heap sunt împărțite între codul kernel-ului și utilizarea în scopul de a aloca date specifice de utilizator.
- User Heap Management: Când un fir ieșirile privilegiate, trebuie să folosim repartitorului nucleu de memorie liber; atunci când o ieșirile fir defavorizate, nu trebuie sa faci nimic ... memorie heap va fi curățat atunci când mediul adresă este dărâmată.
- Inter-Process Support memorie partajată: (1) Adauga implementare și documentația pentru shmget (), shmctl (), shmat (), și shmdt (). (2) Adauga Sistem apeluri pentru a sprijini poarta de apel utilizator de interfețele de memorie partajată. (3) Adauga definiții interfață-platforma specifice necesare pentru a sprijini funcția de memorie partajată.
- Pagina Allocator Virtual: Adauga suport pentru o pagină de repartizare virtuală pe proces. Acesta este un nou membru al structurii task_group_s. Repartitorului trebuie inițializat atunci când este pornit un nou proces de utilizator și să anuleze, atunci când grupul de proces este în cele din urmă distrus. Acesta este utilizat de shmat () și shmdt () pentru a alege adresa virtuala pe care a harta în memoria fizică partajată.
- Sisteme de fișiere / Soferi Block / MTD:
- FS SMART: FS SMART și SMART FS suport procfs actualizări de la Ken Pettit .
- MTD:. Apare stratul MTD Read-Write înainte tampon / este acum functional
- Formate binare:
- Per-proces Heap:. Adauga logica pentru a inițializa heap per-proces utilizator atunci când este pornit fiecare proces utilizator
- Grafica:
- NxTerm: Schimbarea toate aparițiile NxConsole a NxTerm .
- Networking:
- PHY Întrerupe: (1) Standardizarea o interfață atașament PHY întrerupere. (2) Adauga sprijin pentru o ioctl care poate fi folosit pentru a notifica o cerere atunci când există o schimbare în starea rețelei semnalat printr-un întrerupere PHY.
- îmbunătățită Trimite Logic: În trecut, primul pachet trimite o nouă peer ar eșua; nu ar fi nici o intrare în tabela ARP pentru la egal la egal și așa o cerere ARP ar putea inlocui acel prim pachet. Acum ca o opțiune în cazul în care CONFIG_NET_ARP_SEND = y, toate trimite logica va (1) verificați dacă adresa MAC este egal în tabelul ARP și, dacă nu, (2) trimite cereri ARP periodic pentru a obține cartografierea și (3) Așteptați răspuns ARP. Atunci (4), atunci când răspunsul ARP este primit apoi logica reală send va fi inițiată. Astfel este posibil să existe o întârziere primul pachet trimis la o nouă egal, dar pachetul nu trebuie pierdută
- Simulare Realizator:
- SPI FLASH Pilot:. Emulated SPI FLASH driver pentru obiectivul SIM de la Ken Pettit
- Intel x86:
- Implicit gazdă: gazdă implicit este acum x86_64 și opțiunea -m32 va fi selectată automat pentru simulare se bazează .
- Intel 8051 familiale:
- 8051 Eliminat: Eliminat tot sprijinul pentru arhitectura familie 8051 din arborele sursă NuttX. Codul învechit, împreună cu patch-uri de îndepărtare poate fi acum gasite la misc / învechit /. Acest cod a fost eliminat deoarece (1), deși a putea funcționa a fost demonstrată, nu sunt la curent cu orice porturi într-adevăr de succes ale NuttX la orice 8051, și (2) 8051, cu stiva hardware, forțează limitele și complicațiile la alte arhitecturi și să facă creșterea și dezvoltarea NuttX mai complexe.
- Zilog ZNeo Boards:
- configs / 16Z: Suport pentru acest program a fost eliminat din arborele sursă NuttX (dar încă mai pot fi găsite în directorul misc / învechit). Acest port nu este gata pentru utilizare, dar poate reveni la pomul NuttX la un moment dat în viitor.
- Atmel SAM3 / 4 Boards:
- SAM4E-EK:. Adauga (1) un driver complet funcțional LCD bazate pe ILI9341 și (2) o configurație NxWM complet funcțional
- ARMv7-A:
- Adresa medii: Adauga suport pentru adrese aplicare medii utilizând Cortex-A MMU. Punerea în aplicare a interfețe-platforma specifice standardizate de sprijin mediu adresa NuttX.
- Cache operațiuni: Implementarea, operațiunile standardizate cache-platforma specifice. Acestea sunt numite de încărcătorul ELF pentru a spăla D-cache și anula I-cache după un modul ELF au fost încărcate în memorie. Cu această schimbare, module ELF funcționa corect pe SAMA5 / Cortex-o platformă.
- Kernel: (1) Adauga implementari de poarta apel de sistem. (2) Adauga CRT0 fișier start-up care poate fi legat de programele de utilizator construit separat. (3) Adauga sprijin pentru livrarea de semnale utilizare-mode în a construi kernel. (4) Adauga logica pentru a inițializa heap per-proces utilizator atunci când este pornit fiecare proces utilizator. (5) ARMv7-o manipulare excepție trebuie să lucreze un pic diferit, dacă susținem procesele modul de utilizare. Acest lucru se datorează faptului că R13 și R14 sunt paginate în mod diferit între modul SVC utilizator și.
- Shared Memory Support: (1) Adauga logica necesare pentru a gestiona remapping de memorie partajată pe switch-uri de context. (2) Extinderea virtuale / conversii adresă fizică pentru a include adrese din memoria partajată. (3) Adauga implementarea sprijinului memorie partajată-platformă specifică.
- Drivere Atmel SAMA5D:
- Rețea ioctls:. Punerea în aplicare toate ioctls rețea, inclusiv noul ioctl notificărilor evenimente configurare PHY
- Conversii Adresa:. În kernel construi cu mediul adresă, trebuie logica pentru harta user adrese virtuale la adrese fizice, și vice-versa
- Atmel SAMA5D Boards:
- SAMA5D3 Xplained, SAMA5D3-EK, și SAMA5D4-EK: Conversia interfețe bord PHY specific întrerupere existent pentru a utiliza interfata standard nou definit .
- SAMA5D4-EK: Adauga o configurație pentru testarea configurarea kernel-ului construi. Există configurații să boot-fie pe un card SD sau din și în memoria sistemului de fișiere ROMFS.
- SAMA5D4-EK: Adaugă documentatie / suport pentru Rev E. bord .
- Drivere STMicro STM32:
- Ethernet: modificat pentru a sprijini trecerea la rețeaua modificările ioctl semnătură. De asemenea, adauga suport pentru noua ioctl notificărilor evenimente configurare PHY.
- STMicro STM32 Boards:
- STM32F4Discovery cu STM32F4DIS-BB: Adaugă o rețea activat de configurare NSH pentru placa STM32F4Discovery cu placa de bază STM32F4DIS-BB instalat. Include suport pentru slotul pentru card microSD de pe placa de bază STM32F4DIS-BB.
- Drivere TI Tiva:
- TI CC3200: Adauga suport pentru CC3200 TI. De Jim Ewing.
- TI Tiva Boards:
- TI CC3200 Launchpad: Adauga suport pentru TI CC3200 Launchpad. De Jim Ewing.
- C Library:
- sondaj ():. Sondaj Re-implementat () întârziere folosind sem_timedwait ()
- Configurare / Build System:
- Export țintă: În kernel-ul sau protejate construiește, (1) numai bibliotecile utilizator ar trebui sa fie exportate, (2) nu se copia fișiere antet interne sau construi script dacă acest lucru este un nucleu sau construi protejate, și (3) nevoile la pachet cu dosarul de pornire de utilizator C (crt0), nu obiectul cap nucleu pentru kernel-ul și protejat construiește.
- Programul CFLAGS: Adauga logica care ne va permite să construim biblioteci de utilizator cu CFLAGS diferite de cod kernel. Acest lucru este necesar pentru că am nevoie de -fno-comun opțiunea atunci când construirea cod ELF pentru a preveni relocari SHN_COMMON.
- Aplicații:
- NSH: Extinderea logica de inițializare rețea NSH. Există acum o opțiune care va crea un fir monitor de rețea care va monitoriza starea de link-ul. În cazul în care link-ul scade, codul va încerca să pună grațios conducătorul auto Ethernet într-o stare în jos; În cazul în care link-ul revine, codul va încerca să aducă rețeaua spate sus.
- ELF Exemplu:. Testul ELF / exemplul a fost extins astfel încât programele individuale de testare ELF poate lega împotriva biblioteca SYSCALL (dacă este disponibil) sau împotriva biblioteca C pentru a elimina sau reduce la minimum necesitatea de tabele de simboluri
- NxTerm: Schimbarea toate aparițiile NxConsole a NxTerm .
- MTDRWB Exemplu:. Adauga un exemplu pentru a testa MTD R / W tampon
- OS test Exemplu: Adaugă un test banal de sem_timedwait () .
- Configurare aplicare / Build System:
- Import țintă: (1) Adauga logic, care va permite aplicații în construcții împotriva unui pachet de export NuttX (vs. nuttx / arborele sursă). (2) Adauga fișier .config la export pachet. (3) Crearea apps / import. Creați apps / import / Make.defs care face lucruri de genul defini CFLAGS; Construi ELF necesită -fno-comun în CFLAGS. Copiați unele logica de bază din nuttx / instrumente / Config.mk la apps / import / Make.defs. (4) Adauga apps / import / scripts / script GCC linker-gnu elf.ld pentru construiește ELF import.
- Toate Makefiles: (1) Adauga un obiectiv instalarea tuturor Makefiles. Pentru a construi import, Makefile de nivel superior face acum două treceri: (1) se bazează libapp.a, apoi (2) instalează programele în apps / bin. (2) Adauga instalarea programului pentru CONFIG_BUILD_KERNEL în toate Makefiles care construiesc un main (). (3) Pentru kernel construi, fișierul obiect care conține principal () nu pot intra în biblioteca din cauza coliziunilor nume. Fișierul obiect trebuie să fie manipulate ca un caz special în fiecare Makefile.
- Toate încorporat-Programe: Cu nucleu de constructii (CONFIG_BUILD_KERNEL), punct de intrare pentru toate sarcinile este principalul (), nu unele xyz_main () .
- NSH: mai multe comenzi trebuie să fie dezactivate în construi kernel, deoarece acestea depind de interfețe care nu sunt disponibile în afara nucleului. Dd, df, losetup, mkfatfs, mkdr, și PS
- apps / Instrumente /: (1) Adauga mkimport.sh să explodeze un pachet de import NuttX și instala în aplicații / import. (2) Adauga script mkromfsimg.sh pentru a crea o imagine BOOT ROMFS sistem de fișiere.
- ELF și NxFLAT Exemple:. Nu construi cazuri de testare care utilizează task_create () în cazul în care există un mediu adresă
- Instrumente:
- refresh.sh:. Adaugă un instrument pentru a face configurațiile răcoritoare ușor atunci când vrei să faci o mulțime de ei
- mksyscall.c: Construiți syscalls care nu au nevoie de fișiere antet .
- mkexport.sh:. Adauga fișier .config la export pachet
- apps / Instrumente: Vezi mai sus pentru noi aplicații / instrumente scripturi .
- Eforturile în curs. Următoarele sunt caracteristici care sunt parțial implementate, dar prezente în această versiune. Ele nu sunt susceptibile de a fi finalizată în curând.
- Procese: mare parte din munca în această versiune este axat pe realizarea proceselor de utilizator Unix-stil în NuttX. Există multe de făcut, cu toate acestea. Foaia de parcurs complet și statutul este disponibil la: http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
- XMEGA: Există unele fragmente în vigoare pentru un port XMEGA. Portul nu a început cu adevărat, cu toate acestea.
- Galileo: În mod similar, există fragmente în vigoare pentru un port Intel Galileo. Nu portul fost început în serios, fie.
- Remedieri de erori. Numai bugfixes mai critice sunt indicate aici (vezi ChangeLog pentru lista completa de bugfix și pentru informații suplimentare bugfix, mai detaliată):
- Core OS:
- Kernel construi stabilește: (1) de configurare IDLE TCB trebuie să indice faptul că firul IDLE este un fir privilegiat, kernel. (2) Nu construi task_create () sau task_spawn () interfețe dacă există un mediu adresă. (3) posix_spawn () fir proxy kernel ar trebui să fie un fir de kernel, nu o sarcină de utilizator.
- Mai multe interfețe pthread: Adauga Storage const a phthread parametri. De Freddie Chopin.
- sched / ceas: Eliminați vestigii ale g_tickbias; nevoie, în schimb, să se aplice timp părtinire la g_basetime pentru a oferi ora sistemului corect.
- System Apeluri: (1) Mai multe typos fix; Integrarea corectată de exevc (), apeluri execvl (), posix_spawn (), și posix_spawnp (sistem). (2) Dacă sunt configurate pentru a utiliza un teanc nucleu în timp ce în manipularea SYSCALL, atunci avem nevoie pentru a reveni la stiva utilizator pentru a oferi un semnal.
- Sisteme de fișiere / Soferi Block / MTD:
- suport procfs: Fix unele ruperea procf introdus prin reorganizarea unor structuri de date non-reorganizable. De Ken Pettit.
- At45: În at45db_bwrite (), tamponul nu este crescut atunci când scrieți mai mult de 1 pagină. Sourceforge bug # 34.
- Formate binare:
- relocari ELF: Unele tipuri de relocare nu au un simbol numit asociate cu acestea. Designul nu a cont de acest caz.
- ELF Loader:. Bugfix critic .. BSS nu era eliminat
- Memory Management:
- granulei Allocator: inițializare de repartizare Granule folosește alocator greșit la anularea memoriei kernel .
- Grupuri privilegiate: Adaugă un steag la structura grupului: Dacă grupul este creat de un fir de kernel, atunci toate resursele din grupul trebuie să fie privilegiat .
- Suport Cryptogrphic:
- cripto / cryptodev.c: segmentele Cale reluate în includ cale de fișier. Remarcat prin Brennan Ashton.
- Drivere comune:
- comun poate de sus-jumătate: In can_txdone, chelneri pe semaforului trebuie să fie informat, indiferent de valoarea de returnare a can_xmit. În primul rând se întoarce -EIO dacă nu există noi pachete, și în al doilea rând informarea chelneri este despre ultimul pachet transferat. De Daniel Lazlo Sitzer.
- ARM:
- Sistem Apeluri: Fix unei greșeli în apel de sistem atunci când preluarea parametrilor de la stiva: REGS [REG_PC] 4 este adresa, nu REGS [REG_PC + 4] .
- Drivere STMicro STM32:
- STM32 F401 UART: suport corectă pentru USART6 pe acest cip. De Freddie Chopin.
- STM32 FLASH stabilește: folosi size_t loc de uint16_t, face interfata mai generic. De Freddie Chopin.
- STM32 UART:. Fix pentru UART7 și UART8 pe ceas STM32 permite de la Aton
- CAN: La sfârșitul handler de întrerupere, întreruperile au fost dezactivate, dacă toate pachetele au fost transferate în cazul în care handler de întrerupere a fost invocat. Acest lucru este problematic, deoarece de tratare a întreruperii solicită can_txdone () din jumătatea superioară, care poate Puneți în coadă noi pachete pentru a trimite. Îndepărtat bloc cu totul, pentru că can_txdone () can_xmit apeluri (), care dezactivează întreruperile dacă nu există noi pachete pentru a trimite. De Daniel Lazlo Sitzer.
- CAN:. Corecție suplimentară STM32 CAN sugerat Max Holtzberg
- STMicro ST32 Boards:
- configs / mikroe-stm32f4: Fix câteva compila bug-uri și corecturi minore la sursa de configurare mikroe-stm32f4. De Ken Pettit.
- ARM9 / ARMv7-A:
- Sistem Apeluri: Fix ARM7 / 9 și Cortex-A SYSCALLs: Pentru fire în modul SVC, instrucțiunile SVC clobbers R14. Acest lucru trebuie să se țină seama în ansamblul inline.
- Sarcina Setup: Toate sarcinile, chiar sarcini modul de utilizare, trebuie să înceapă în modul supervizor până se desprindă de trambulina de lansare .
- ARMv7-A: Modificare up_fullcontextrestore () pentru CONFIG_BUILD_KERNEL. Schimbat CPSR în timp ce în kernel. Că se va prăbuși dacă noul CPSR este modul de utilizare în timp ce de executare în spațiu kernel. Fixed prin adăugarea unui apel sistem SYS_context_restore. Există o alternativă, modificarea simplu la up_fullcontextrestore (), care ar fi putut face: Ar fi fost posibil să se utilizeze SPSR loc de CPRSR și apoi face o întoarcere excepție de la up_fullcontextrestore (). Asta ar fi mai eficient, dar am încercat niciodată.
- Atmel SAM3 / 4 Boards:
- SAM3X / Arduino Due: Fix greșeli în sam3x_periphclks.h; adăuga definiții SCLK la board.h fișier antet. De Fabien Comte.
- SAM3 RTT: Doar familia SAM4 are RTTDIS bit în registrul MR. SourceForge bug # 33 din Fabien Comte.
- C Library:
- sscanf (): NuttX libc încercat să ghicească câte caractere pentru a analiza, le-a extras într-un tampon, apoi a fugit strtol (), pe care tampon. Asta cred fost de multe ori greșit. O abordare mai bună ar fi să cheme strtol () direct pe datele de intrare, folosind valoarea returnată endptr pentru a determina cât de multe caractere pentru a sări după parsarea. De Kosma Moczek.
- Math Library:. Rectificat atan2 implementari de Denis Arnst
- Floating Punct de ieșire: Schimbare la lib_dtoa () pentru a repara eroarea precizie de zerouri la dreapta. De Bob Doiron.
- Aplicații:
- comanda Fix NSH PS:. Dacă nu există argumente, s-ar putea imprima gunoi pentru lista argumente
- Configurare / Build System:
- Null Exemplu: necesitatea de a include pentru o config.h știu dacă acest lucru este sau nu este un build kernel. Această problemă există în continuare în multe alte dosar care ar putea avea nevoie de a defini main ().
Pase
Build
Ce este nou în versiunea 7.8:
- Caracteristici: Caracteristici noi suplimentare si functionalitate extinsa:
- Core OS:
- Watchdog timer Alocare: (1) În cazul în care ne-am alerga afară de perioada pre-alocate watchdog, logica va aloca acum cronometre suplimentare din grămada. O rezervă de cronometre pre-alocate watchdog se menține astfel încât vor exista întotdeauna cronometre disponibile pentru stivuitoare întrerupere. (2) Adăugat suport pentru watchdog alocat static timer
- Adresa Mediu Suport: (2) noul sistem de operare API integrată în toate context, platforma specific de comutare logica (up_block_task (), up_unblock_task (), _exit (), și altele) .
- Kernel Build Suport: (1) MPU bazat & quot; kernel construi & quot; redenumit la acumularea protejat (CONFIG_BUILD_PROTECTED); adăugat suport pentru un nou MMU bazat pe & quot; kernel construi & quot; (CONFIG_BUILD_KERNEL), (2) Biblioteca apel sistem poate fi acum construit cu CONFIG_NUTTX_KERNEL. Selecția nou *:. CONFIG_LIB_SYSCALL
- System Startup: Adauga opțiuni de configurare pentru a porni sistemul de la un program la un sistem de fișiere (față de o adresă în memorie) .
- Startup Parametru: Nu folosit pentru a fi două moduri de a trece parametrii de noi sarcini, în funcție de configurația: Fie (1) argv [] ca creat ca un tablou cu fiecare șir strdup'ed. Sau (2) argv [] matrice și siruri de caractere au fost create pe stiva înainte ca noua sarcina a fost pornit. Acum, există doar o singură cale, cale (2). Way (1) poate fi ușor mai compact, dar acest lucru nu este în valoare transporta complexitatea două moduri diferite de a face acelasi lucru.
- inițializare Board: Adauga capacitatea de a efectua inițializarea inițială bord pe un fir lucrător separat. Acest lucru este necesar deoarece există multe cazuri în care logica de inițializare nu poate executa pe start-up / firul IDLE. Asta se datorează faptului că blochează sau de așteptare nu este permisă pe firul IDLE.
- Memory Management:
- granulei Allocator: (1) Adauga o noua functie pentru a rezerva regiuni ne-allocatable în grămadă granule. (2) Adauga interfețe pentru a susține o alocare granule-inițializarea ne.
- Pagina Allocator: Adaugă un simplu alocare pagină fizic bazat pe repartitorului granule NuttX existente. Eu nu sunt sigur dacă repartitorului granule este suficient de deterministic pentru utilizarea pe distanțe lungi, dar devine obține o alocare pagină, în loc pentru testarea foarte repede.
- Eliminare CONFIG_MM_MULTIHEAP: operațiune non-multiheap nu mai este acceptat .
- sbrk ():. Sbrk () este suportat în construi kernel pentru a permite dinamic de dimensiuni, mormane pe-proces
- Pe-proces Heaps: Space la începutul spațiului de proces de date este rezervat pentru structuri de management morman de utilizator. În modul construi kernel, aceste structuri heap sunt împărțite între codul kernel-ului și utilizarea în scopul de a aloca date specifice de utilizator.
- User Heap Management: Când un fir ieșirile privilegiate, trebuie să folosim repartitorului nucleu de memorie liber; atunci când o ieșirile fir defavorizate, nu trebuie sa faci nimic ... memorie heap va fi curățat atunci când mediul adresă este dărâmată.
- Inter-Process Support memorie partajată: (1) Adauga implementare și documentația pentru shmget (), shmctl (), shmat (), și shmdt (). (2) Adauga Sistem apeluri pentru a sprijini poarta de apel utilizator de interfețele de memorie partajată. (3) Adauga definiții interfață-platforma specifice necesare pentru a sprijini funcția de memorie partajată.
- Pagina Allocator Virtual: Adauga suport pentru o pagină de repartizare virtuală pe proces. Acesta este un nou membru al structurii task_group_s. Repartitorului trebuie inițializat atunci când este pornit un nou proces de utilizator și să anuleze, atunci când grupul de proces este în cele din urmă distrus. Acesta este utilizat de shmat () și shmdt () pentru a alege adresa virtuala pe care a harta în memoria fizică partajată.
- Sisteme de fișiere / Soferi Block / MTD:
- FS SMART: FS SMART și SMART FS suport procfs actualizări de la Ken Pettit .
- MTD:. Apare stratul MTD Read-Write înainte tampon / este acum functional
- Formate binare:
- Per-proces Heap:. Adauga logica pentru a inițializa heap per-proces utilizator atunci când este pornit fiecare proces utilizator
- Grafica:
- NxTerm: Schimbarea toate aparițiile NxConsole a NxTerm .
- Networking:
- PHY Întrerupe: (1) Standardizarea o interfață atașament PHY întrerupere. (2) Adauga sprijin pentru o ioctl care poate fi folosit pentru a notifica o cerere atunci când există o schimbare în starea rețelei semnalat printr-un întrerupere PHY.
- îmbunătățită Trimite Logic: În trecut, primul pachet trimite o nouă peer ar eșua; nu ar fi nici o intrare în tabela ARP pentru la egal la egal și așa o cerere ARP ar putea inlocui acel prim pachet. Acum ca o opțiune în cazul în care CONFIG_NET_ARP_SEND = y, toate trimite logica va (1) verificați dacă adresa MAC este egal în tabelul ARP și, dacă nu, (2) trimite cereri ARP periodic pentru a obține cartografierea și (3) Așteptați răspuns ARP. Atunci (4), atunci când răspunsul ARP este primit apoi logica reală send va fi inițiată. Astfel este posibil să existe o întârziere primul pachet trimis la o nouă egal, dar pachetul nu trebuie pierdută
- Simulare Realizator:
- SPI FLASH Pilot:. Emulated SPI FLASH driver pentru obiectivul SIM de la Ken Pettit
- Intel x86:
- Implicit gazdă: gazdă implicit este acum x86_64 și opțiunea -m32 va fi selectată automat pentru simulare se bazează .
- Intel 8051 familiale:
- 8051 Eliminat: Eliminat tot sprijinul pentru arhitectura familie 8051 din arborele sursă NuttX. Codul învechit, împreună cu patch-uri de îndepărtare poate fi acum gasite la misc / învechit /. Acest cod a fost eliminat deoarece (1), deși a putea funcționa a fost demonstrată, nu sunt la curent cu orice porturi într-adevăr de succes ale NuttX la orice 8051, și (2) 8051, cu stiva hardware, forțează limitele și complicațiile la alte arhitecturi și să facă creșterea și dezvoltarea NuttX mai complexe.
- Zilog ZNeo Boards:
- configs / 16Z: Suport pentru acest program a fost eliminat din arborele sursă NuttX (dar încă mai pot fi găsite în directorul misc / învechit). Acest port nu este gata pentru utilizare, dar poate reveni la pomul NuttX la un moment dat în viitor.
- Atmel SAM3 / 4 Boards:
- SAM4E-EK:. Adauga (1) un driver complet funcțional LCD bazate pe ILI9341 și (2) o configurație NxWM complet funcțional
- ARMv7-A:
- Adresa medii: Adauga suport pentru adrese aplicare medii utilizând Cortex-A MMU. Punerea în aplicare a interfețe-platforma specifice standardizate de sprijin mediu adresa NuttX.
- Cache operațiuni: Implementarea, operațiunile standardizate cache-platforma specifice. Acestea sunt numite de încărcătorul ELF pentru a spăla D-cache și anula I-cache după un modul ELF au fost încărcate în memorie. Cu această schimbare, module ELF funcționa corect pe SAMA5 / Cortex-o platformă.
- Kernel: (1) Adauga implementari de poarta apel de sistem. (2) Adauga CRT0 fișier start-up care poate fi legat de programele de utilizator construit separat. (3) Adauga sprijin pentru livrarea de semnale utilizare-mode în a construi kernel. (4) Adauga logica pentru a inițializa heap per-proces utilizator atunci când este pornit fiecare proces utilizator. (5) ARMv7-o manipulare excepție trebuie să lucreze un pic diferit, dacă susținem procesele modul de utilizare. Acest lucru se datorează faptului că R13 și R14 sunt paginate în mod diferit între modul SVC utilizator și.
- Shared Memory Support: (1) Adauga logica necesare pentru a gestiona remapping de memorie partajată pe switch-uri de context. (2) Extinderea virtuale / conversii adresă fizică pentru a include adrese din memoria partajată. (3) Adauga implementarea sprijinului memorie partajată-platformă specifică.
- Drivere Atmel SAMA5D:
- Rețea ioctls:. Punerea în aplicare toate ioctls rețea, inclusiv noul ioctl notificărilor evenimente configurare PHY
- Conversii Adresa:. În kernel construi cu mediul adresă, trebuie logica pentru harta user adrese virtuale la adrese fizice, și vice-versa
- Atmel SAMA5D Boards:
- SAMA5D3 Xplained, SAMA5D3-EK, și SAMA5D4-EK: Conversia interfețe bord PHY specific întrerupere existent pentru a utiliza interfata standard nou definit .
- SAMA5D4-EK: Adauga o configurație pentru testarea configurarea kernel-ului construi. Există configurații să boot-fie pe un card SD sau din și în memoria sistemului de fișiere ROMFS.
- SAMA5D4-EK: Adaugă documentatie / suport pentru Rev E. bord .
- Drivere STMicro STM32:
- Ethernet: modificat pentru a sprijini trecerea la rețeaua modificările ioctl semnătură. De asemenea, adauga suport pentru noua ioctl notificărilor evenimente configurare PHY.
- STMicro STM32 Boards:
- STM32F4Discovery cu STM32F4DIS-BB: Adaugă o rețea activat de configurare NSH pentru placa STM32F4Discovery cu placa de bază STM32F4DIS-BB instalat. Include suport pentru slotul pentru card microSD de pe placa de bază STM32F4DIS-BB.
- Drivere TI Tiva:
- TI CC3200: Adauga suport pentru CC3200 TI. De Jim Ewing.
- TI Tiva Boards:
- TI CC3200 Launchpad: Adauga suport pentru TI CC3200 Launchpad. De Jim Ewing.
- C Library:
- sondaj ():. Sondaj Re-implementat () întârziere folosind sem_timedwait ()
- Configurare / Build System:
- Export țintă: În kernel-ul sau protejate construiește, (1) numai bibliotecile utilizator ar trebui sa fie exportate, (2) nu se copia fișiere antet interne sau construi script dacă acest lucru este un nucleu sau construi protejate, și (3) nevoile la pachet cu dosarul de pornire de utilizator C (crt0), nu obiectul cap nucleu pentru kernel-ul și protejat construiește.
- Programul CFLAGS: Adauga logica care ne va permite să construim biblioteci de utilizator cu CFLAGS diferite de cod kernel. Acest lucru este necesar pentru că am nevoie de -fno-comun opțiunea atunci când construirea cod ELF pentru a preveni relocari SHN_COMMON.
- Aplicații:
- NSH: Extinderea logica de inițializare rețea NSH. Există acum o opțiune care va crea un fir monitor de rețea care va monitoriza starea de link-ul. În cazul în care link-ul scade, codul va încerca să pună grațios conducătorul auto Ethernet într-o stare în jos; În cazul în care link-ul revine, codul va încerca să aducă rețeaua spate sus.
- ELF Exemplu:. Testul ELF / exemplul a fost extins astfel încât programele individuale de testare ELF poate lega împotriva biblioteca SYSCALL (dacă este disponibil) sau împotriva biblioteca C pentru a elimina sau reduce la minimum necesitatea de tabele de simboluri
- NxTerm: Schimbarea toate aparițiile NxConsole a NxTerm .
- MTDRWB Exemplu:. Adauga un exemplu pentru a testa MTD R / W tampon
- OS test Exemplu: Adaugă un test banal de sem_timedwait () .
- Instrumente:
- Instrumente:
- Instrumente:
- Instrumente:
- Remedieri de erori:
Pase
Build
Comentariile nu a fost găsit