NuttX

צילום מסך תוכנה:
NuttX
פרטי תוכנה:
גרסה: 7.9 מעודכן
טען תאריך: 10 May 15
מפתחים: Gregory Nutt
רשיון: ללא תשלום
פופולריות: 115

Rating: 4.0/5 (Total Votes: 1)

NuttX הוא קוד פתוח, מערכת דטרמיניסטית וחופשית בזמן אמת הפעלה מוטבעת (RTOS), שנועד מהקיזוז להיות שמיש בסביבות מוטבעות עמוק, משאב מוגבל. יש לו טביעת רגל קטנה שהיא שמיש בסביבות מיקרו-בקר, וזה & rsquo; זה להרחבה באופן מלא מ( 8 סיביות) זעיר להתמתן במערכות משובצות (32-bit).
היא גם שואפת להיות תואמת באופן מלא לסטנדרטים, להיות בזמן אמת באופן מלא, ולהיות פתוחים לגמרי. יש NuttX סט מערכת הפעלה תכונה עשיר, עיצוב מודולרי, זה ניתן להרחבה להגדרה, כמו גם סטנדרטים תואם. זה מופץ עם רישיון BSD שאינו מגביל. הוא כינה לעתים קרובות על ידי המפתחים שלה כ" לינוקס זעירה. "תכונות בתכונות glanceKey כוללים ניהול ליבת משימה, ממשק שקע BSD, מקצי זיכרון (זיכרון משותף, הקצאת זיכרון ערימה סטנדרטית, לבנות מוגן עם MPU, לבנות מוטבעים שטוח, לכל תהליך ערימות, allocator גרגיר ודינמי בגודל), תצורות זיכרון, מדריך porting, פעולת preemptible מלאה, tickless, רישום מערכת החלפה ועל-פי דרישה.
בנוסף, הפרויקט מגיע עם סיומות לנהל צעד מקדים, לכל חוט, מובנה במעבד מדידות עומס, תיעוד מקיף, משימות אופציונליות המכילות סביבות כתובת, בקרות משימה כמו ANSI וכמו-POSIX, שעונים, pthreads, סביבה משתנים, אותות, תורי הודעה בשם, השעונים, מערכת קבצים וסמפורים ספירה.
בין תכונות אחרות, אנחנו יכולים לדבר על תזמון סיבובים, FIFO, תמיכה בירושת עדיפות, תמיכה בארכיטקטורת SoC, תמיכה בארכיטקטורות לוח, תמיכה בארכיטקטורות מעבד חדשות, טיימרים כלב שמירה, ניהול משימות, אני / ניתוב מחדש O כמו VxWorks-ו מועבר & ldquo; שליטה מסופים & rdquo;. נתמך platformsNuttX תומך במגוון רחב של פלטפורמות חומרה, ביניהם אפשר להזכיר מעבדי ARM רבים, כולל ARM Cortex-M3, ARM926EJS, ARM7TDMI, ARM Cortex-M4, ARM Cortex-M0, ARM920T וARM Cortex-A5, כמו גם AVR 8 סיביות Atmel, פריסקייל M68HCS12, פלטפורמות AVR32 Atmel AVR.
בנוסף, הוא גם תומך פלטפורמות אינטל שונות, כגון השבבים PIC32MX (MIPS), 80c52 ו -80 ופעמים; 86, פלטפורמות Zilog, כולל Zilog Z80, Zilog Z16F, Zilog Z8Encore! וZilog eZ80 תשואות !, וM16C / 26 פלטפורמות Renesas / Hitachi SuperH וRenesas

מה חדש בהודעה זו :.

  • מאפיינים: תכונות חדשות נוספות ופונקציונליות מורחבים:
  • מערכת הפעלה ליבה:
  • הקצאת כלב השמירה טיימר: (1) אם אנחנו נגמרים של פעמים כלב שמירה מוקצה מראש, ההיגיון כעת להקצות טיימרים נוספים מהערימה. מילואים של טיימרים כלב שמירה מוקצה מראש נשמר כך שתמיד יהיו זמינים עבור מפעילי טיימרים פסיקה. (2) הוספת תמיכה לכלב שמירה שהוקצה באופן סטטי טיימר
  • כתובת סביבת תמיכה: (2) APIs OS החדש משולב בכל הקשר הפלטפורמה ספציפית מיתוג היגיון (up_block_task (), up_unblock_task (), _exit (), ואחרים)
  • .
  • ליבה לבנות תמיכה: (1) MPU מבוסס על & quot; לבנות & quot ליבה; שם למבנה מוגן (CONFIG_BUILD_PROTECTED); הוסיף תמיכה מבוססת MMU & quot חדש; לבנות & quot ליבה; (CONFIG_BUILD_KERNEL), (2) קריאת מערכת הספרייה יכולה עכשיו להיות בנויה עם CONFIG_NUTTX_KERNEL. ניו בחירה *:. CONFIG_LIB_SYSCALL
  • הפעלת מערכת: להוסיף אפשרויות תצורה כדי להפעיל את מערכת מתוכנית על מערכת קבצים (לעומת כתובת בזיכרון)
  • .
    פטירה
  • Startup פרמטר: בעבר היו שתי דרכים להעברת פרמטרים למשימות חדשות, בהתאם לתצורה: או (1) argv [] כפי שנוצר כמערך עם כל מחרוזת strdup'ed. או (2) argv [] מערך ומחרוזות נוצרו על הערימה לפני המשימה החדשה שנפתחו. עכשיו, יש רק דרך אחת, דרך (2). דרך (1) עשויה להיות מעט יותר קומפקטית, אבל זה לא שווה לבצע את המורכבות של שתי דרכים לעשות את אותו הדבר שונים.
  • אתחול דירקטוריון: הוסף יכולת לבצע אתחול לוח ראשוני על חוט עובד נפרד. זה נחוץ, כי יש מקרים רבים שבם היגיון אתחול לא יכול לבצע על סטארט-אפ / חוט IDLE. זאת משום שהחסימה או ההמתנה אינה מותרת על חוט IDLE.
  • ניהול זיכרון:
  • גרגיר Allocator: (1) להוסיף פונקציה חדשה להזמין אזורים בלתי allocatable בערימת הגרגר. (2) הוסף ממשקים לתמוך.
  • allocator גרגיר אתחול האו"ם
  • Allocator עמוד: הוסף allocator דף פיזי פשוט המבוסס על allocator גרגיר NuttX הקיים. אני לא בטוח אם allocator גרגיר מספיק דטרמיניסטי לשימוש לטווח ארוך, אבל הוא מקבל את allocator דף במקום לבדיקה מהר מאוד.
  • הסרת CONFIG_MM_MULTIHEAP: פעולה ללא multiheap אינה נתמכת עוד
  • .
  • sbrk ():. Sbrk () החברה נתמכת במבנה הליבה להתיר ערימות דינמית בגודל, לכל תהליך

  • ערימות
  • ל- תהליך: החלל בתחילת חלל נתוני תהליך כעת שמורות למבני ניהול ערימת משתמש. במצב לבנות הליבה, מבני ערימה אלה משותפים בין קוד הליבה ושימוש כדי להקצות נתונים ספציפיים למשתמש.
  • ניהול ערימת משתמש: כאשר יציאות חוט חסויות, אנחנו צריכים להשתמש בallocator הליבה לזיכרון חופשי; כאשר יציאות חוט נטולות הרשאות, אנחנו לא צריכים לעשות שום דבר ... זיכרון ערימה יהיה לנקות כאשר סביבת הכתובת נהרסה.
  • תמיכה בזיכרון משותף בין תהליכים: (1) להוסיף יישום ותיעוד לshmget (), shmctl (), shmat (), וshmdt (). (2) להוסיף מערכת מערכת קורא לתמוך בשיחת משתמש שער לממשקי זיכרון המשותף. (3) להוסיף הגדרות ממשק פלטפורמה ספציפית הדרושות כדי לתמוך בתכונת הזיכרון המשותפת.
  • Allocator דף הווירטואלי: הוספת תמיכה בallocator דף וירטואלי לכל תהליך. זה הוא חבר חדש של מבנה task_group_s. Allocator יש לאתחל כאשר הוא התחיל תהליך משתמש חדש ולבטל את האתחול כאשר קבוצת התהליך לבסוף נהרס. הוא משמש ידי shmat () וshmdt () כדי לבחור את הכתובת הווירטואלית שעל למפות את הזיכרון הפיזי המשותף.
  • מערכות קבצים / נהגים בלוק / MTD:
  • FS SMART: FS SMART וSMART FS procfs עדכונים מקן פטיט
  • .
  • MTD:. שכבת MTD קריאה קדימה / חיץ כתיבה מופיעה כעת פונקציונלי
  • בינארי פורמטים:
  • ל- תהליך ערימה:. להוסיף היגיון כדי לאתחל את ערימת משתמש לתהליך כאשר הוא התחיל כל תהליך משתמש
  • גרפיקה:
  • NxTerm: שנה את כל המופעים של NxConsole לNxTerm
  • .
  • ברשת:
  • PHY פסיקות: (1) סטנדרטיזציה ממשק קובץ מצורף פסיקת PHY. (2) הוספת תמיכה בIOCTL שניתן להשתמש בי להודיע ​​יישום כאשר יש שינוי במצב הרשת אותת על ידי פסיקת PHY.
  • לוגיקה שלח משופרת: בעבר, המנות הראשונות לשלוח לעמיתי רשת חדשים ייכשלו; לא יהיה שום ערך בטבלת ARP לעמיתים וכן בקשת ARP יכולה להחליף כי מנות הראשונות. עכשיו כאופציה אם CONFIG_NET_ARP_SEND = y, כל לשלוח היגיון יהיה (1) לבדוק אם כתובת ה- MAC של העמיתים היא בטבלת ARP, ואם לא, (2) לשלוח בקשות ARP מעת לעת כדי לקבל את המיפוי ו- (3) לחכות ל תגובת ARP. לאחר מכן (4) כאשר תגובת ARP מתקבלת אז ההיגיון לשלוח בפועל להיות יזם. כך ייתכן שיש עיכוב במנות הראשונות שנשלחו לעמיתים חדשים, אבל המנות לא צריכים ללכת לאיבוד
  • סימולציה מארחת:
  • מנהל SPI FLASH:. חיקוי נהג SPI FLASH ליעד ה- SIM מקן פטיט
  • x86 של אינטל:
  • מארח ברירת מחדל: מארח ברירת המחדל הוא עכשיו x86_64 והאפשרות -m32 תיבחר באופן אוטומטי לסימולציה בונה
  • .
  • אינטל 8051 משפחה:
  • 8051 הוסר: הוסר כל התמיכה בארכיטקטורת משפחת 8051 מעץ מקור NuttX. כעת ניתן למצוא את הקוד המיושן יחד עם התיקון להסרת בשונה / מיושן /. קוד זו הוסר כי (1) למרות שחלקם פונקציונלי הודגם, אני לא מודע לכל יציאות ממש מוצלחות של NuttX לכל 8051, ו- (2) 8051, עם ערימת החומרה שלה, מאלץ את המגבלות וסיבוכים לארכיטקטורות האחרות ולהפוך את הצמיחה והתפתחות של NuttX מורכב יותר.
  • לוחות ZNeo ZILOG:
  • configs / 16z: תמיכה בלוח זה הוסרה מעץ מקור NuttX (אך עדיין ניתן למצוא בספרייה שונות המיושנת /). יציאה זו אינה מוכנה לשימוש, אך עשוי לחזור לעץ NuttX בשלב מסוים בעתיד.
  • Atmel SAM3 / 4 לוחות:
  • SAM4E-EK:. להוסיף (1) נהג מלוא תפקודי מבוסס ILI9341 LCD ו- (2) תצורת NxWM מלוא תפקודית
  • ARMv7-:

  • סביבות כתובת
  • : הוספת תמיכה בסביבות כתובת יישום באמצעות Cortex-MMU. ליישם ממשקי פלטפורמה ספציפית סטנדרטיים של תמיכת סביבת כתובת NuttX.
  • תפעול מטמון: יישום פעולות מטמון סטנדרטי, פלטפורמה ספציפית. אלה נקראים ממטעין ELF כדי לשטוף D-מטמון ולפסול I-זיכרון מטמון לאחר מודול ELF נטען לזיכרון. עם שינוי זה, מודולים ELF לעבוד בצורה נכונה על SAMA5 / Cortex-פלטפורמה.

  • בנייה
  • ליבה: (1) להוסיף יישומים של קריאת מערכת שער. (2) הוסף קובץ הזנק CRT0 שיכול להיות מקושר עם תוכניות משתמש נבנו בנפרד. (3) הוספת תמיכה למסירה של אותות שימוש במצב במבנה הליבה. (4) הוסף היגיון כדי לאתחל את ערימת משתמש לתהליך כאשר הוא התחיל כל תהליך משתמש. (5) ARMv7-טיפול בחריגים צריך לעבוד קצת אחר אם אנחנו תומכים בתהליכי מצב משתמש. סיבה לכך הוא R13 R14 והם מעומד שונים בין המשתמש ומצב SVC.

  • תמיכה בזיכרון
  • משותף: (1) הוסף היגיון דרוש כדי לטפל במיפוי מחדש של זיכרון משותף על מתגי הקשר. (2) להאריך המרות כתובת וירטואליות / פיזיות לכוללים כתובות בזיכרון משותף. (3) הוסף יישום תמיכה בזיכרון משותף פלטפורמה ספציפית.
  • נהגים Atmel SAMA5D:
  • רשת Ioctls:. ליישם את כל ioctls הרשת, כולל IOCTL החדש להודעות על אירועי ההתקנה PHY
  • המרות כתובת:. בליבת לבנות עם סביבת כתובת, צריך היגיון למפות כתובות וירטואליות משתמש כתובות פיזיות, ולהיפך
  • לוחות SAMA5D Atmel:
  • SAMA5D3 Xplained, SAMA5D3-EK, וSAMA5D4-EK: המרת הקיימת ממשקי פסיקת PHY הספציפי הלוח כדי להשתמש בממשק סטנדרטי חדש שהוגדר
  • .
  • SAMA5D4-EK: הוסף תצורה לבדיקת התצורה לבנות ליבה. יש תצורות אתחול או מכרטיס SD או ובזכרון מערכת קבצי ROMFS.
  • SAMA5D4-EK: הוסף תיעוד / תמיכה בלוח Rev א
  • .
  • נהגים STMicro STM32:
  • Ethernet: השתנה לתמוך בשינוי לשינויי חתימת IOCTL רשת. גם להוסיף תמיכה לIOCTL החדש להודעות על אירועי ההתקנה PHY.
  • לוחות STM32 STMicro:
  • STM32F4Discovery עם STM32F4DIS-BB: הוסף רשת אפשר תצורת NSH ללוח STM32F4Discovery עם לוח בסיס STM32F4DIS-BB המותקן. כולל תמיכה בחריץ לכרטיס microSD על לוח בסיס STM32F4DIS-BB.
  • נהגים TI טיבה:

  • CC3200
  • TI: הוספת תמיכה בCC3200 TI. מג'ים יואינג.
  • לוחות טיבה TI:
  • TI CC3200 Launchpad: הוספת תמיכה בTI CC3200 Launchpad. מג'ים יואינג.
  • ספריית C:
  • סקר ():. סקר מחדש מיושם () עיכוב באמצעות sem_timedwait ()
  • תצורה / בניית מערכת:
  • יצוא יעד: בליבה או מוגן בונה, (1) צריכים להיות מיוצאות רק הספריות למשתמש, (2) לא להעתיק קבצי כותרת פנימיים או לבנות תסריטים אם זה גרעין או לבנות מוגן, ו- (3) לצרכי לארוז את קובץ הפעלת C המשתמש (crt0), לא אובייקט ראש הליבה לליבה ומוגנת בונה.
  • תכנית CFLAGS: הוסף היגיון שיאפשר לנו לבנות ספריות משתמש עם CFLAGS שונה מקוד הקרנל. זה נחוץ, כי אנחנו צריכים את אפשרות -fno-נפוצה בעת בניית קוד ELF כדי למנוע relocations SHN_COMMON.
  • יישומים:
  • NSH: הארך את היגיון אתחול רשת NSH. יש עכשיו אפשרות שתיצור חוט צג רשת שיהיה לפקח על המצב של הקישור. כאשר הקישור יורד, הקוד ינסה בחן לשים נהג Ethernet במורד מדינה; כאשר הקישור חוזר, הקוד ינסה להחזיר את הרשת.
  • ELF דוגמא:. מבחן ELF / הדוגמא הורחבה כך תוכניות בדיקת ELF בודדות יכולות לקשר נגד ספריית SYSCALL (אם הוא זמין) או נגד ספריית C לחסל או לצמצם את הצורך בשולחנות סמל
  • NxTerm: שנה את כל המופעים של NxConsole לNxTerm
  • .
  • MTDRWB דוגמא:. להוסיף דוגמא לבדוק MTD R / W חציצה
  • מערכת ההפעלה מבחן לדוגמא: להוסיף בדיקה של מה בכך של sem_timedwait ()
  • .
  • תצורת יישום / לבנות מערכת:
  • יבוא יעד: (1) הוסף היגיון שיאפשר בניית יישומים נגד חבילת יצוא NuttX (לעומת nuttx עץ המקור /). (2) הוסף קובץ .config לייצא חבילה. (3) יצירת יישומים / יבוא. צור יישומים / יבוא / Make.defs שעושה דברים כמו להגדיר CFLAGS; לבנות ELF דורש -fno-נפוץ בCFLAGS. העתק קצת היגיון בסיס מnuttx / כלים / Config.mk לאפליקציות / יבוא / Make.defs. (4) הוסף את יישומים / יבוא / תסריטים / תסריט מקשר GCC גנו-elf.ld ליבוא ELF בונה.
  • כל Makefiles: (1) להוסיף יעד להתקין לכל makefiles. להצטברות היבוא, Makefile ברמה העליונה עכשיו עושה שני מעברים: (1) בונה libapp.a, אז (2) מתקין את התוכניות לאפליקציות / bin. (2) הוסף התקנת תכנית לCONFIG_BUILD_KERNEL בכל Makefiles כי לבנות עיקרי (). (3) למבנה גרעין, הקובץ המכיל האובייקט ראשי () לא יכול ללכת לספרייה בגלל שם של התנגשויות. קובץ האובייקט חייב להיות מטופלים כמקרה מיוחד בכל Makefile.
  • כל נבנה ב- התוכניות: עם הצטברות ליבה (CONFIG_BUILD_KERNEL), נקודת כניסה לכל המשימות היא עיקרי (), לא איזה xyz_main ()
  • .
  • NSH: מספר פקודות יש להשבית לבנות הליבה כי הם תלויים בממשקים שאינם זמינים מחוץ לליבה:. Dd, DF, losetup, mkfatfs, mkdr, וps
  • יישומים / כלים /: (1) הוסף mkimport.sh להתפוצץ חבילת יבוא NuttX ולהתקין ביישומים / יבוא. (2) הוסף תסריט mkromfsimg.sh כדי ליצור תמונת מערכת קבצים ROMFS אתחול.
  • ELF ודוגמאות NxFLAT:. אין לבנות מקרי מבחן המשתמשים task_create () אם יש בסביבת כתובת
  • כלים:
  • refresh.sh:. הוסף כלי לעשות תצורות מרעננים יותר קלים כאשר אתה רוצה לעשות הרבה מהם
  • mksyscall.c: לבנות syscalls שלא צריך קבצי כותרת
  • .
  • mkexport.sh:. הוסף קובץ .config לייצא חבילה
  • יישומים / כלים: ראו לעיל עבור יישומים / כלים סקריפטים חדשים
  • .
  • מאמצים בהתקדמות. להלן תכונות שמיושמות באופן חלקי אבל הווה בהודעה זו. הם אינם צפויים להסתיים בקרוב.
  • תהליכים: חלק גדול מהעבודה בהודעה זו מתמקד במימוש תהליכי משתמשים בסגנון יוניקס בNuttX. יש עוד מה לעשות, עם זאת. מפת הדרכים והמצב מלאים זמינים בכתובת: http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
  • XMega: יש כמה שברים במקום לנמל XMega. היציאה שלא ממש התחילה, עם זאת.
  • גלילאו: באופן דומה, יש שברים במקום לנמל אינטל גלילאו. היציאה לא התחילה ברצינות גם.
  • תיקוני באגים. רק תיקוני באגים הקריטיים ביותר מופיעים כאן (ראה ChangeLog לרשימה של תיקוני באגים מלאים ומידע נוסף, מפורט יותר תיקון באג):
  • מערכת הפעלה ליבה:
  • ליבה לבנות תיקונים: (1) התקנת TCB IDLE צריכה להצביע על כך שחוט IDLE הוא חוט חסוי, ליבה. (2) אין לבנות task_create () או task_spawn () ממשקים אם יש סביבת כתובת. (3) posix_spawn () חוט פרוקסי ליבה צריך להיות חוט ליבה, לא משימת משתמש.
  • ממשקי pthread כמה: הוסף const ברמת אחסון לphthread פרמטרים. מפרדי שופן.
  • sched / שעון: הסר שרידי g_tickbias; צריך, במקום, להחיל הטיה זמן g_basetime על מנת לספק את זמן המערכת הנכון.
  • מערכת שיחות: (1) מספר שגיאות הקלדה קבועה; שילוב מתוקן של exevc (), שיחות ומערכת execvl (), posix_spawn (), posix_spawnp (). (2) אם אנחנו מוגדרים לשימוש במחסנית ליבה ואילו בטיפול SYSCALL, אז אנחנו צריכים לחזור לערימת המשתמש לספק אות.
  • מערכות קבצים / נהגים בלוק / MTD:
  • procfs: לתקן כמה שבירת procf הוצגה על ידי ארגון מחדש של כמה מבני נתונים שאינם reorganizable. מקן פטיט.
  • AT45: בat45db_bwrite (), החיץ לא עלה בעת כתיבה יותר מעמוד 1. באג # SourceForge 34.
  • בינארי פורמטים:
  • relocations ELF: אין לי סוגים מסוימים רילוקיישן סמל בשם הקשורים בם. העיצוב לא לקח בחשבון מקרה ש.
  • ELF Loader:. תיקון באג קריטי .. BSS לא מנוקים
  • ניהול זיכרון:
  • גרגיר Allocator: אתחול allocator גרגיר משתמש allocator השגוי לביטול זיכרון ליבה
  • .
  • קבוצות Privileged: הוסף דגל למבנה קבוצה: אם הקבוצה נוצר על ידי חוט ליבה, אז כל המשאבים בקבוצה חייבים להיות מיוחסים
  • .
  • תמיכת Cryptogrphic:
  • הצפנה / cryptodev.c: מקטעי נתיב הפוכים בכוללים נתיב קובץ. צוין על ידי רנן אשטון.
  • נהגים נפוץ:
  • האם עליון חצי נפוץ: בcan_txdone, יש ליידע מלצרים על סמפור ללא קשר לערך ההחזרה של can_xmit. ראשית הוא חוזר -EIO אם אין מנות חדשות, ושנייה המידע של המלצרים הוא על המנות הועברו האחרונות. מדניאל אזלו Sitzer.
  • ARM:
  • מערכת שיחות: תקן טעות דפוס בקריאת מערכת בעת תחזור פרמטר מהערימה: לעצמם תקנות +4 היא [REG_PC] הכתובת, לא לעצמם תקנות [REG_PC + 4]
  • .
  • נהגים STMicro STM32:
  • STM32 F401 UART: תמיכה נכונה לUSART6 על שבב זה. מפרדי שופן.
  • STM32 FLASH מתקן: להשתמש size_t במקום uint16_t, להפוך את הממשק כללי יותר. מפרדי שופן.
  • STM32 UART:. תקן עבור UART7 וUART8 על שעון STM32 לאפשר מאטון
  • האם: בסופו של מטפל הפסיקה, הפסיקות היו להיות נכה, אם כל המנות הועברו כאשר מטפל הפסיקה הופעל. זו היא בעייתית, משום שמטפל הפסיקה קורא can_txdone () של המחצית העליונה אשר יכול Enqueue מנות חדשות לשלוח. הסיר את החסימה לגמרי, כי can_txdone () קורא can_xmit () שמשביתה פסיקות אם אין מנות חדשות לשלוח. מדניאל אזלו Sitzer.
  • האם:. תיקון STM32 CAN נוסף שהוצע על ידי מקס הולצברג
  • לוחות ST32 STMicro:
  • configs / mikroe-stm32f4: תקן כמה לקמפל באגים ותיקונים קלים למקור תצורת mikroe-stm32f4. מקן פטיט.
  • ARM9 / ARMv7-:
  • מערכת שיחות: תקן SYSCALLs ARM7 / 9 ו- Cortex-A: לאשכולות במצב SVC, הוראות SVC clobbers R14. זה חייב להילקח בחשבון בהרכבה מוטבעת.
  • הגדרת משימה: כל המשימות, אפילו משימות מצב משתמש, חייבת להתחיל במצב מפקח עד שהם מקבלים עבר טרמפולינה סטארט-אפ
  • .
  • ARMv7-: שינוי up_fullcontextrestore () לCONFIG_BUILD_KERNEL. זה השתנה CPSR בעוד בליבת. שיתרסק אם CPSR החדש הוא מצב משתמש בעת ביצוע בשטח ליבה. קבוע על ידי הוספת קריאת מערכת SYS_context_restore. יש אלטרנטיבה, שינוי פשוט לup_fullcontextrestore () שאפשר היה לעשות: זה היה יכול להיות אפשרי להשתמש SPSR במקום CPRSR ולאחר מכן לעשות תמורה יוצא מן הכלל מup_fullcontextrestore (). זה יהיה יעיל יותר, אבל אף פעם לא ניסיתי את זה.
  • Atmel SAM3 / 4 לוחות:
  • SAM3X / Arduino Due: תקן שגיאת הקלדה בsam3x_periphclks.h; להוסיף הגדרות SCLK לboard.h קובץ כותרת. מפביאן קומט.
  • SAM3 RTT: יש רק משפחת SAM4 RTTDIS קצת במרשם MR. באג # SourceForge 33 מפביאן קומט.
  • ספריית C:
  • sscanf (): NuttX libc ניסה לנחש כמה דמויות לנתח, חולץ אותם למאגר, ואז רץ strtol () בחיץ ש. הניחוש שהיה לעתים קרובות שגוי. גישה טובה יותר תהיה לקרוא strtol () ישירות על נתוני הקלט, באמצעות ערך החזרת endptr כדי לקבוע כמה דמויות לדלג לאחר הניתוח. מKosma Moczek.
  • ספריית מתמטיקה:. תיקון ATAN2 יישומים מדניס Arnst
  • פלט של נקודה צפו: שינוי לlib_dtoa () כדי לתקן את שגיאת דיוק מאפסים נגררים. מבוב Doiron.
  • יישומים:
  • פקודת PS NSH תקן:. אם אין ויכוחים, זה יכול להדפיס אשפה לרשימת ויכוח
  • תצורה / בניית מערכת:
  • ריק דוגמא: צריך לכלול כדי שזה config.h יודע אם זה הוא או היא לא לבנות ליבה. בעיה זו עדיין קיימת בכמה קבצים אחרים שייתכן שיצטרכו להגדיר עיקרי ().

מה חדש בגרסה 7.8:

  • תכונות

    : תכונות נוספות חדשות ופונקציונליות מורחבים:

  • מערכת הפעלה ליבה:
  • הקצאת כלב השמירה טיימר: (1) אם אנחנו נגמרים של פעמים כלב שמירה מוקצה מראש, ההיגיון כעת להקצות טיימרים נוספים מהערימה. מילואים של טיימרים כלב שמירה מוקצה מראש נשמר כך שתמיד יהיו זמינים עבור מפעילי טיימרים פסיקה. (2) הוספת תמיכה לכלב שמירה שהוקצה באופן סטטי טיימר
  • כתובת סביבת תמיכה: (2) APIs OS החדש משולב בכל הקשר הפלטפורמה ספציפית מיתוג היגיון (up_block_task (), up_unblock_task (), _exit (), ואחרים)
  • .
  • ליבה לבנות תמיכה: (1) MPU מבוסס על & quot; לבנות & quot ליבה; שם למבנה מוגן (CONFIG_BUILD_PROTECTED); הוסיף תמיכה מבוססת MMU & quot חדש; לבנות & quot ליבה; (CONFIG_BUILD_KERNEL), (2) קריאת מערכת הספרייה יכולה עכשיו להיות בנויה עם CONFIG_NUTTX_KERNEL. ניו בחירה *:. CONFIG_LIB_SYSCALL
  • הפעלת מערכת: להוסיף אפשרויות תצורה כדי להפעיל את מערכת מתוכנית על מערכת קבצים (לעומת כתובת בזיכרון)
  • .
    פטירה
  • Startup פרמטר: בעבר היו שתי דרכים להעברת פרמטרים למשימות חדשות, בהתאם לתצורה: או (1) argv [] כפי שנוצר כמערך עם כל מחרוזת strdup'ed. או (2) argv [] מערך ומחרוזות נוצרו על הערימה לפני המשימה החדשה שנפתחו. עכשיו, יש רק דרך אחת, דרך (2). דרך (1) עשויה להיות מעט יותר קומפקטית, אבל זה לא שווה לבצע את המורכבות של שתי דרכים לעשות את אותו הדבר שונים.
  • אתחול דירקטוריון: הוסף יכולת לבצע אתחול לוח ראשוני על חוט עובד נפרד. זה נחוץ, כי יש מקרים רבים שבם היגיון אתחול לא יכול לבצע על סטארט-אפ / חוט IDLE. זאת משום שהחסימה או ההמתנה אינה מותרת על חוט IDLE.
  • ניהול זיכרון:
  • גרגיר Allocator: (1) להוסיף פונקציה חדשה להזמין אזורים בלתי allocatable בערימת הגרגר. (2) הוסף ממשקים לתמוך.
  • allocator גרגיר אתחול האו"ם
  • Allocator עמוד: הוסף allocator דף פיזי פשוט המבוסס על allocator גרגיר NuttX הקיים. אני לא בטוח אם allocator גרגיר מספיק דטרמיניסטי לשימוש לטווח ארוך, אבל הוא מקבל את allocator דף במקום לבדיקה מהר מאוד.
  • הסרת CONFIG_MM_MULTIHEAP: פעולה ללא multiheap אינה נתמכת עוד
  • .
  • sbrk ():. Sbrk () החברה נתמכת במבנה הליבה להתיר ערימות דינמית בגודל, לכל תהליך

  • ערימות
  • ל- תהליך: החלל בתחילת חלל נתוני תהליך כעת שמורות למבני ניהול ערימת משתמש. במצב לבנות הליבה, מבני ערימה אלה משותפים בין קוד הליבה ושימוש כדי להקצות נתונים ספציפיים למשתמש.
  • ניהול ערימת משתמש: כאשר יציאות חוט חסויות, אנחנו צריכים להשתמש בallocator הליבה לזיכרון חופשי; כאשר יציאות חוט נטולות הרשאות, אנחנו לא צריכים לעשות שום דבר ... זיכרון ערימה יהיה לנקות כאשר סביבת הכתובת נהרסה.
  • תמיכה בזיכרון משותף בין תהליכים: (1) להוסיף יישום ותיעוד לshmget (), shmctl (), shmat (), וshmdt (). (2) להוסיף מערכת מערכת קורא לתמוך בשיחת משתמש שער לממשקי זיכרון המשותף. (3) להוסיף הגדרות ממשק פלטפורמה ספציפית הדרושות כדי לתמוך בתכונת הזיכרון המשותפת.
  • Allocator דף הווירטואלי: הוספת תמיכה בallocator דף וירטואלי לכל תהליך. זה הוא חבר חדש של מבנה task_group_s. Allocator יש לאתחל כאשר הוא התחיל תהליך משתמש חדש ולבטל את האתחול כאשר קבוצת התהליך לבסוף נהרס. הוא משמש ידי shmat () וshmdt () כדי לבחור את הכתובת הווירטואלית שעל למפות את הזיכרון הפיזי המשותף.
  • מערכות קבצים / נהגים בלוק / MTD:
  • FS SMART: FS SMART וSMART FS procfs עדכונים מקן פטיט
  • .
  • MTD:. שכבת MTD קריאה קדימה / חיץ כתיבה מופיעה כעת פונקציונלי
  • בינארי פורמטים:
  • ל- תהליך ערימה:. להוסיף היגיון כדי לאתחל את ערימת משתמש לתהליך כאשר הוא התחיל כל תהליך משתמש
  • גרפיקה:
  • NxTerm: שנה את כל המופעים של NxConsole לNxTerm
  • .
  • ברשת:
  • PHY פסיקות: (1) סטנדרטיזציה ממשק קובץ מצורף פסיקת PHY. (2) הוספת תמיכה בIOCTL שניתן להשתמש בי להודיע ​​יישום כאשר יש שינוי במצב הרשת אותת על ידי פסיקת PHY.
  • לוגיקה שלח משופרת: בעבר, המנות הראשונות לשלוח לעמיתי רשת חדשים ייכשלו; לא יהיה שום ערך בטבלת ARP לעמיתים וכן בקשת ARP יכולה להחליף כי מנות הראשונות. עכשיו כאופציה אם CONFIG_NET_ARP_SEND = y, כל לשלוח היגיון יהיה (1) לבדוק אם כתובת ה- MAC של העמיתים היא בטבלת ARP, ואם לא, (2) לשלוח בקשות ARP מעת לעת כדי לקבל את המיפוי ו- (3) לחכות ל תגובת ARP. לאחר מכן (4) כאשר תגובת ARP מתקבלת אז ההיגיון לשלוח בפועל להיות יזם. כך ייתכן שיש עיכוב במנות הראשונות שנשלחו לעמיתים חדשים, אבל המנות לא צריכים ללכת לאיבוד
  • סימולציה מארחת:
  • מנהל SPI FLASH:. חיקוי נהג SPI FLASH ליעד ה- SIM מקן פטיט
  • x86 של אינטל:
  • מארח ברירת מחדל: מארח ברירת המחדל הוא עכשיו x86_64 והאפשרות -m32 תיבחר באופן אוטומטי לסימולציה בונה
  • .
  • אינטל 8051 משפחה:
  • 8051 הוסר: הוסר כל התמיכה בארכיטקטורת משפחת 8051 מעץ מקור NuttX. כעת ניתן למצוא את הקוד המיושן יחד עם התיקון להסרת בשונה / מיושן /. קוד זו הוסר כי (1) למרות שחלקם פונקציונלי הודגם, אני לא מודע לכל יציאות ממש מוצלחות של NuttX לכל 8051, ו- (2) 8051, עם ערימת החומרה שלה, מאלץ את המגבלות וסיבוכים לארכיטקטורות האחרות ולהפוך את הצמיחה והתפתחות של NuttX מורכב יותר.
  • לוחות ZNeo ZILOG:
  • configs / 16z: תמיכה בלוח זה הוסרה מעץ מקור NuttX (אך עדיין ניתן למצוא בספרייה שונות המיושנת /). יציאה זו אינה מוכנה לשימוש, אך עשוי לחזור לעץ NuttX בשלב מסוים בעתיד.
  • Atmel SAM3 / 4 לוחות:
  • SAM4E-EK:. להוסיף (1) נהג מלוא תפקודי מבוסס ILI9341 LCD ו- (2) תצורת NxWM מלוא תפקודית
  • ARMv7-:

  • סביבות כתובת
  • : הוספת תמיכה בסביבות כתובת יישום באמצעות Cortex-MMU. ליישם ממשקי פלטפורמה ספציפית סטנדרטיים של תמיכת סביבת כתובת NuttX.
  • תפעול מטמון: יישום פעולות מטמון סטנדרטי, פלטפורמה ספציפית. אלה נקראים ממטעין ELF כדי לשטוף D-מטמון ולפסול I-זיכרון מטמון לאחר מודול ELF נטען לזיכרון. עם שינוי זה, מודולים ELF לעבוד בצורה נכונה על SAMA5 / Cortex-פלטפורמה.

  • בנייה
  • ליבה: (1) להוסיף יישומים של קריאת מערכת שער. (2) הוסף קובץ הזנק CRT0 שיכול להיות מקושר עם תוכניות משתמש נבנו בנפרד. (3) הוספת תמיכה למסירה של אותות שימוש במצב במבנה הליבה. (4) הוסף היגיון כדי לאתחל את ערימת משתמש לתהליך כאשר הוא התחיל כל תהליך משתמש. (5) ARMv7-טיפול בחריגים צריך לעבוד קצת אחר אם אנחנו תומכים בתהליכי מצב משתמש. סיבה לכך הוא R13 R14 והם מעומד שונים בין המשתמש ומצב SVC.

  • תמיכה בזיכרון
  • משותף: (1) הוסף היגיון דרוש כדי לטפל במיפוי מחדש של זיכרון משותף על מתגי הקשר. (2) להאריך המרות כתובת וירטואליות / פיזיות לכוללים כתובות בזיכרון משותף. (3) הוסף יישום תמיכה בזיכרון משותף פלטפורמה ספציפית.
  • נהגים Atmel SAMA5D:
  • רשת Ioctls:. ליישם את כל ioctls הרשת, כולל IOCTL החדש להודעות על אירועי ההתקנה PHY
  • המרות כתובת:. בליבת לבנות עם סביבת כתובת, צריך היגיון למפות כתובות וירטואליות משתמש כתובות פיזיות, ולהיפך
  • לוחות SAMA5D Atmel:
  • SAMA5D3 Xplained, SAMA5D3-EK, וSAMA5D4-EK: המרת הקיימת ממשקי פסיקת PHY הספציפי הלוח כדי להשתמש בממשק סטנדרטי חדש שהוגדר
  • .
  • SAMA5D4-EK: הוסף תצורה לבדיקת התצורה לבנות ליבה. יש תצורות אתחול או מכרטיס SD או ובזכרון מערכת קבצי ROMFS.
  • SAMA5D4-EK: הוסף תיעוד / תמיכה בלוח Rev א
  • .
  • נהגים STMicro STM32:
  • Ethernet: השתנה לתמוך בשינוי לשינויי חתימת IOCTL רשת. גם להוסיף תמיכה לIOCTL החדש להודעות על אירועי ההתקנה PHY.
  • לוחות STM32 STMicro:
  • STM32F4Discovery עם STM32F4DIS-BB: הוסף רשת אפשר תצורת NSH ללוח STM32F4Discovery עם לוח בסיס STM32F4DIS-BB המותקן. כולל תמיכה בחריץ לכרטיס microSD על לוח בסיס STM32F4DIS-BB.
  • נהגים TI טיבה:

  • CC3200
  • TI: הוספת תמיכה בCC3200 TI. מג'ים יואינג.
  • לוחות טיבה TI:
  • TI CC3200 Launchpad: הוספת תמיכה בTI CC3200 Launchpad. מג'ים יואינג.
  • ספריית C:
  • סקר ():. סקר מחדש מיושם () עיכוב באמצעות sem_timedwait ()
  • תצורה / בניית מערכת:
  • יצוא יעד: בליבה או מוגן בונה, (1) צריכים להיות מיוצאות רק הספריות למשתמש, (2) לא להעתיק קבצי כותרת פנימיים או לבנות תסריטים אם זה גרעין או לבנות מוגן, ו- (3) לצרכי לארוז את קובץ הפעלת C המשתמש (crt0), לא אובייקט ראש הליבה לליבה ומוגנת בונה.
  • תכנית CFLAGS: הוסף היגיון שיאפשר לנו לבנות ספריות משתמש עם CFLAGS שונה מקוד הקרנל. זה נחוץ, כי אנחנו צריכים את אפשרות -fno-נפוצה בעת בניית קוד ELF כדי למנוע relocations SHN_COMMON.
  • יישומים:
  • NSH: הארך את היגיון אתחול רשת NSH. יש עכשיו אפשרות שתיצור חוט צג רשת שיהיה לפקח על המצב של הקישור. כאשר הקישור יורד, הקוד ינסה בחן לשים נהג Ethernet במורד מדינה; כאשר הקישור חוזר, הקוד ינסה להחזיר את הרשת.
  • ELF דוגמא:. מבחן ELF / הדוגמא הורחבה כך תוכניות בדיקת ELF בודדות יכולות לקשר נגד ספריית SYSCALL (אם הוא זמין) או נגד ספריית C לחסל או לצמצם את הצורך בשולחנות סמל
  • NxTerm: שנה את כל המופעים של NxConsole לNxTerm
  • .
  • MTDRWB דוגמא:. להוסיף דוגמא לבדוק MTD R / W חציצה
  • מערכת ההפעלה מבחן לדוגמא: להוסיף בדיקה של מה בכך של sem_timedwait ()
  • .
  • כלים:









































  • כלים:




  • כלים:
























































































  • כלים:


























  • תיקוני באגים:






































































































תוכנה דומה

BirdOS
BirdOS

17 Feb 15

uLan Driver
uLan Driver

11 May 15

תגובות ל NuttX

תגובות לא נמצא
להוסיף הערה
הפעל את התמונות!