התפקיד הגדל של קוד פתוח בפיתוח DSP

מעבדי אותות דיגיטליים (DSPs) כוח אינספור מערכות מודרניות - מקבצי אודיו ומקלטי מכ"ם ועד תחנות בסיס 5G ומכשירים ביו-רפואיים שלהם דורשות כלי פיתוח מיוחדים באותה מידה: מדגמים שמטמים עבור צינורות Multiply-Accumulate (MAC), debuggers אשר מטפלים במגבלות בזמן אמת, וסימולטורים כי התנהגות מדויקת.

מאמר זה בוחן את המצב הנוכחי של כלי קוד פתוח תאימות עם פיתוח מעבד DSP.We לבחון את הצרכים הספציפיים של תכנות DSP, סקר את הכלים קוד פתוח מסוגלים ביותר זמין כיום, ודן באתגרים מתמידים כי מפתחים עומדים סוף סוף, אנו מסתכלים על מגמות מתעוררות המבטיחות להפוך את קוד פתוח DSP לפיתוח מעשי ורב עוצמה יותר מאי פעם.

הבנת ארכיטקטורות מעבדים וצרכים של ה-DSP

DSPs שונים מ CPUs למטרות כלליות בדרכים בסיסיות. הם בדרך כלל תכונה מספר יחידות MAC מקבילות, buffers מעגליים ליישום מסנן FIR יעיל, לולאות חומרה אפס-מעלה, והיררכיה מיוחדת מאוד זיכרון. כדי לנצל את מלוא התכונות האלה, שרשרת כלי פיתוח חייב להיות מסוגל:

  • יצירת קוד אשר לוחמת על פעולות על פני יחידות ביצוע במקביל ללא סכנות נתונים.
  • ניהול מחיצות זיכרון על שבב (SRAM, DMA buffers, שרטט) במפורש.
  • לספק סימולציה של מחזור-קורה עבור אימות תזמון.
  • תמיכה בזמן אמת פענוח מבלי לעצור את המעבד.

שרשראות כלי תעמולה להצטיין במשימות אלה כי הם מכוונים לסיליקון ספציפי.עם זאת, הם באים עם חסרונות משמעותיים: דמי רישיון גבוהים, מנעול-אין, מוגבלות, ולעתים קרובות קצב איטי של חדשנות. Open-source כלים, בעוד היסטורית פיגור אופטימיזציה ותמיכה בחומרה, התבגרו עד לנקודה שבה הם יכולים לשמש בסיס קיימא עבור פרויקטים רבים.

מפתח פתוח-Source כלים לפיתוח DSP

GCC ו- LLVM

אוסף ה-GCC (GCC) נשאר המאגד הקוד הפתוח הנפוץ ביותר (GCC) תומך באדריכלות DSP רבות, כולל ה-FLT:0Analog מכשירים BlackfinFLT:1, ה-FLT:2CEVA-X ו- CE-TeakLiteFLT 3, ו- Tensilicasssssssssssssssssssss Active Visioner for the NLT and NLT for the Uns.

פרויקט LLVM, עם העיצוב מודולרי שלה ורישיון הרשיבית, הפך אלטרנטיבה אטרקטיבית. בעוד LLVM של DSP החזרי אשראי הם פחות רבים מאשר GCC, תשתיות שלה עבור תיאורים של מטרות מותאם אישית מקלה להוסיף תמיכה עבור אדריכלות חדשה.FLT:0VMend לכתוב מדריך 1LT הוא משאב יקר עבור מי צריך כדי ליצור את מטרותיהם, יותר מאשר CSP / CLL (ה) יותר טוב יותר מאשר יכולות אבחון CLL.

DDB ו-OpenOCD

גנו Debugger (GDB) הוא תקן דה- Facto עבור מערכות משובצות מבועתות.כאשר בשילוב עם חומרה debug בדיקה (כגון JTAG מתאם) ושרת debug כמו OpenOCD, GDB יכול לבצע פעולות ברמה נמוכה על DSPs: הגדרת נקודות, בדיקה, צפייה בזיכרון, וצעד באמצעות קוד פתוח, כגון קוד פתוח, כגון קוד פתוח, או קוד פתוח, כגון: DSPI משותף, לעתים קרובות.

עבור פיזור בזמן אמת, רבים קובצי cookie קנייניים מציעים עקבות buffers וטריגרים מתקדמים כי עדיין אינם זמינים פתרונות קוד פתוח.עם זאת, יכולת התסריט של GDB (באמצעות Python או Tcl) מאפשר אוטומציה מתוחכמת, מה שמאפשר ליצור אסטרטגיות ניתוק מותאם אישית המחקה התנהגות בזמן אמת בתרחישים מעשיים רבים.

סימולטורים ו Emulators: QEMU ואדריכלות-Specific Options

זמינות חומרה יכולה להיות צוואר הבקבוק הגדול ביותר בפיתוח DSP בשלב מוקדם של קוד פתוח סימולטורים לספק דרך לבדוק אלגוריתמים לפני סיליקון או הערכות להגיע. QEMU, בעיקר ידוע על חיקוי ARM ו x86, גם תומך כמה מכונות DSP-centric, כגון FLT:0ARM MPS2 FPGA-based Development BoardLTFua 1 אשר יכול להתאים אישית פרוטוקול DlicaiX עבור פונקציות מיוחדות יותר.

לבנות מערכות ולילות

(הופנה מהדף פיתוח קוד פתוח (Open-source Building Systems like CMake and GNU Make), אשר משתלב בקלות עם כלי תפוצה חוצה-מרכזיים.בחזית הספרייה, ה-FLT:0CMSIS-DSPibpherFLT:1 Library (מ-Aram) מציע פונקציות DSP מותאמות ל- Armx-M ליבות הכוללות DSPLT, בעוד שלא בספריית DSP גנרית DSP, כיצד ניתן להוכיח את המטרות הפתוחות יכולות להפוך ל-F2 לתוכנות מתקדמות יותר ל-F).

אתגרים מתאימים וכיצד מפתחים Overcome Them

אדריכלות-Specific Education Set מרחיב

ספקי DSP לעתים קרובות להוסיף הוראות קנייניות כדי להבדיל את המוצרים שלהם.לדוגמה, VLIW DSP מסוימים עשויים להיות הוראה אישית עבור רב-הכפלה מורכבת ארוזה.הפיצר הקוד הפתוח חייב לדעת על ההוראות הללו ולהיות מסוגל לקבוע אותן כראוי.כאשר ה backend אינו שלם, המאגד נופל חזרה קוד גנרי שיכול להיות פקודות של גודל איטי יותר.

  • (FLT:0) פונקציות אינטרינריות של LT:1Builder - רבים קוד פתוח מתומכים במנהיגי אינטרינוטיקה יישומיים שממפה ישירות להנחיות מיוחדות.
  • (ב) [ה]הרכבות הפנימיות הקריטיות, ניתן להכניס למקורות C, לשמור על שאר היישום בקוד נייד.
  • (FLT:0)Custom LLVM reendsvesph1) - ארגונים עם משאבים מספיקים יכולים להרחיב את LLVM כדי לזהות ולפלט ההוראות המיוחדות של המטרה שלהם.

זמן אמת וגבולות ויכוח

debuggers proprietary לעתים קרובות לספק ערכות תצפית מאוגדות חומרה, מעקב הוראה, וניגודי ביצועים כי GDB לא יכול לגשת באופן מלא ללא תוספים ספציפיים ספקים. Workrounds כוללים שימוש ב- DSP של DSP, מניעת חסימה מונעת (למשל, שליחת נתונים ביצועים על UART) או יישום קידוד מבוסס תוכנה. עבור זמן ביקורתי, יכול להשתמש לוגים אמין או קוד פתוח עם לוגיקה פתוחה.

שילוב Toolchain ו- Usability

(כמו סטודיו הקוד של TI או ADI's CrossCore) מציעים חוויה חלקה: לחץ על כפתור לבנות, להוריד, ולפרק את הגדרות הקוד הפתוח דורש תצורה ידנית של Makefiles, קבצים קישור, ו-Dbug Server, עם זאת, את הופעתה של קוד פתוח:0VS עם Embeddrated Developmenteds, ו-DFlower משותף זה עתה, כדי ליצור את אותו שילוב של כל ההרחבה GCCD2D.

סיפורי הצלחה בעולם ומקרה

עיבוד אודיו על Tensilica HiFi Cores

קהילת הקוד הפתוח סביב Tensilica HiFi DSPs של קאדינס (שמשתמשים בסמארטפונים רבים ורמקולים חכמים) הפיקה את ה- GCC reend אשר נשמר באופן פעיל.ספקי אודיו בינוניים להפיץ את קודיהם שנאספו עם GCC, מה שמוכיח כי כלים קוד פתוח יכולים לספק את צפיפות הקוד ואת הביצועים הנדרשים עבור מכשירים מופעלים סוללות.

בקרת מנוע עם אנליז מכשירים Blackfin

מעבד Blackfin של Analog מכשירים, אם כי עכשיו אדריכלות מורשת, נשאר בחירה פופולרית עבור בקרה מוטורית ואוטומציה תעשייתית.ה- Blackfin GCC backend הוא אחד מגדולי קוד פתוח DSP מדרדרים, ורבים ספריות בקרת מנוע פתוח (למשל, OpenLoop, SimpleFOC) כבר נמלה את זה.

רדיו עם QEMU ו-GNU

יישומים רדיו מוגדר תוכנה (SDR) לעתים קרובות למטרה היברידיות FPGA-plus-DSP או Multi-core DSPs. פרויקט רדיו GNU, למרות שרובם מסגרת מארחת-PC, יש השראה זרימת פיתוח מונעת חיקוי.צוותים משתמשים QEMU כדי לדמות את מערכת DSP שלהם (למשל, Zynq FPGA עם קורטקס-A9 ו מותאם אישית DSP-exeation) בעוד ש-DPUDPU של זמן לא מאפשר סימולציה של זמן קצר לפני זמן תגובה של זמן תגובה יעילה של 5G לאחור (DPU) ו-DPUDPUDPUDPUDPUDPUED) ו-DPUDPUED DLCDPUDPUDPUDPUED DLCDPUED DG לאחור (זמן לא מאפשר סימולציה של זמן תגובה של סימולציה של זמן (זמן טיפולית (זמן לא מאפשר סימולציה של זמן קצר לפני זמן תגובה אחת בלבד.

תחזית לעתיד: בריחת הפער בין קוד פתוח לבין מערכות אקולוגיות מותאמות

RISC-V כ- Catalyst

העלייה של RISC-V - ארכיטקטורה פתוחה סטקטורת - היא ככל הנראה הכוח החזק ביותר המניע קוד פתוח תאימות כלי DSP. ליבות RISC-V רבות כוללות כעת הרחבות מוכווני DSP (P-Extension, V-Extension לעיבוד ו- SIMD מותאם אישית של מדריכים מבוססי DSP) מכיוון ש-ISA פתוחה, כלי שרשראות כמו GCC ו-VM יש תמיכה ראשונה מהתחלהאתר פתוח כדי להגדיר את דרישות הפיתוח של DSP.

שכבות קשיחות (HALs) ו- PlatformIO

Vendor-supplied HALs זמינים יותר ויותר תחת רישיון קוד פתוח (למשל, Apache 2.0, MIT) בשילוב עם כלי בנייה כמו Platform - אשר שותפי אוטומטי הורדות שרשרת כלי, ניהול ספריות ותמיכה לוחית - המורכבות של תצורת קוד פתוח לסביבה DSP טיפות באופן משמעותי.מספר בדיקות DSP (מחברות כמו Gowin ו Anlogic) עם תמיכה בפלטפורמת קוד פתוח יותר.

למידה על DSPs ותפקיד קוד פתוח

DSPs מודרניים הם לעתים קרובות מחויבים עם הפעלת רשתות עצביות קלות משקל עבור מילת מפתח, הכרה מחווה, או זיהוי אנומלי. תנועת ה- TinyML מסתמכת מאוד על כלי קוד פתוח: TensorFlow Lite עבור Microcontrollers, Edge, ו LLVM מבוסס המאגד כי ממפה גרפים ל-D SIMD יחידות. כי מודלים ML מתפתחים במהירות, גמישות של כלי פתוח מאפשר לחוקרים מתקדמים ללא אופטימיזציה של ספקים ללא מותאמים אישית.

המלצות מעשיות למפתחים

אם אתה מתחיל פרויקט DSP ובהתחשב בכלים בקוד פתוח, הנה צעדים פעולה כדי למקסם את תאימות ופרודוקטיביות:

  1. (FLT:0)Audit the Toolchain Support for your goal ArchitectsFLT 1 - בדוק את GCC ואת LLVM עצי מקור עבור backend. Search maillist and repositories (למשל, GitHub, SourceForge) עבור כתמים או הטבות שמוספותפות תמיכה.
  2. (FLT:0) סימולציה אפשרויות סימולציה סימולציה סימולציה 1RE - אם אין סימולטור מחזורי-קורע קיים עבור השבב שלך, לשקול שימוש QEMU עבור אימות פונקציונלי וספק הדרכה יישומית סט סימולטור (לעיתים קרובות חינם לפיתוח) עבור ניתוח תזמון. Stack שני הכלים לתפוס באגים ברמות שונות.
  3. (FLT:0) ספק ראשי התיבות של Intrinsic Headers כאשר מרשים FLT 1 - יצרני DSP רבים להפיץ קבצים ראשיים אשר מצהירים על Intrinsics עבור הוראות מיוחדות.הראשים האלה עובדים לעתים קרובות עם GCC ו- Clang. להימנע מכתיבה באסיפה ללא צורך מוחלט; אינטריקים הם פחות ופחות שגיאות.
  4. (FLT:0) שילוב מתמשך (CI)FIRLT:1) - הגדר צינור CI שנבנה עם GCC ולנהל את וקטורי הבדיקה שלך בסימולציה.זה תופס רגרסציות מוקדם והוא הרבה יותר זול מאשר להסתמך רק על מחזורי הפחתת חומרה.
  5. (FLT:0Engage with the CommunityFLT:1) - קוד פתוח דוקדק הוא לעתים קרובות משופר על ידי משתמשים שתורמים מקרים של מבחן, דוחות באגים ותיקונים.אם המטרה שלך אינה תכונה, לשקול לשכור יועץ או שותף עם אוניברסיטה להרחיב את שרשרת הכלים.החזרה על ההשקעה יכולה להיות משמעותית, כמו הכלי הופך זמין עבור כל הפרויקטים העתידיים.

מסקנה

תוכנת קוד פתוח עברה מניסוי שולי בפיתוח DSP לבחירה מעשית, חזקה יותר עבור פרויקטים בעולם האמיתי. בעוד שרשראות כלי קנייני ימשיכו להציע אופטימיזציה מעולה ותמיכה חומרה מיידית אדריכלות נישה, הפער הוא צרינג. GCC ו LLVM מכסים כעת את רוב ליבות DSP הזרם המרכזי, GDB ו- OpenOCD לספק יכולת bugging, פתוח-source מאפשר סימולטורים מוקדמים מאחורי האלגוריתם הקטן והמהירויות רק כדי להאיץ את האלגוריתם הקטן הזה.

מפתחים ומנהלי הנדסה לא צריכים עוד להניח כי כלים קוד פתוח אינם עולים בקנה אחד עם עבודת DSP. במקום זאת, הם צריכים להעריך כל אדריכלות על בסיס מקרה-במחיר, במשקל את המאמץ המשולב הקדמי נגד היתרונות לטווח ארוך של עלויות רישוי מופחתות, גישה קוד מקור מלא, וקהילה תוססת. עבור פרויקטים רבים - במיוחד אלה אודיו, בקרה מוטורית, SDR, ו- AI - הדרך הפתוחה היא פשוט בר-קיימא; היא בחירה חכמה.