RaspberryPi-LOGO

מנהל ההתקן הגרפי של פלט RaspberryPi KMS HDMI

RaspberryPi-KMS-HDMI-Output-Graphics-Driver-PRODACT-IMG

קולופון

2020-2023 Raspberry Pi Ltd (לשעבר Raspberry Pi (Trading) Ltd.) תיעוד זה מורשה תחת רישיון Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0). תאריך בנייה: 2023-02-10 גירסת בנייה: githash: c65fe9c-clean

הודעת כתב ויתור משפטי

נתונים טכניים ואמינות עבור מוצרי RASPBERRY PI (כולל גליונות נתונים) כפי ששונו מעת לעת ("משאבים") מסופקים על ידי RASPBERRY PI LTD ("RPL") "כפי שהם" וכל מפורש או משתמע, לא משתמע אל, האחריות המשתמעת של סחירות והתאמה למטרה מסוימת נדחתות. במידה המקסימלית המותרת על פי החוק החל, בשום מקרה, RPL לא תהיה אחראית לכל נזק ישיר, עקיף, מקרי, מיוחד, לדוגמה או תוצאתי (כולל, אך לא מוגבל, לנזקים של מוצר, ספק רכש; , או רווחים; או הפרעה עסקית) בכל אופן שנגרם ועל פי כל תיאוריה של אחריות, בין אם במסגרת חוזה, אחריות קפדנית, או עוולה (כולל רשלנות או אחרת) הנובעת מכל דרך מהשימוש שלנו, או כתוצאה מהשימוש שלנו של נזק כזה. RPL שומרת לעצמה את הזכות לבצע כל שיפורים, שיפורים, תיקונים או כל שינוי אחר במשאבים או בכל מוצר המתואר בהם בכל עת וללא הודעה נוספת. המשאבים מיועדים למשתמשים מיומנים עם רמות מתאימות של ידע עיצובי. המשתמשים הם האחראים הבלעדיים לבחירתם ולשימוש במשאבים ולכל יישום של המוצרים המתוארים בהם. המשתמש מסכים לשפות ולחזק את RPL מפני כל התחייבויות, עלויות, נזקים או הפסדים אחרים הנובעים מהשימוש שלהם ב-RESOURCES.RPL מעניק למשתמשים הרשאה להשתמש ב-RESOURCES אך ורק בשילוב עם מוצרי Raspberry Pi. כל שימוש אחר במשאבים אסור. לא ניתן רישיון לכל RPL אחר או זכות קניין רוחני אחרת של צד שלישי. פעילויות בסיכון גבוה. מוצרי Raspberry Pi אינם מתוכננים, מיוצרים או מיועדים לשימוש בסביבות מסוכנות הדורשות ביצועים בטיחותיים בכשל, כגון בהפעלת מתקנים גרעיניים, מערכות ניווט או תקשורת של מטוסים, בקרת תעבורה אווירית, מערכות נשק או יישומים קריטיים לבטיחות (כולל תמיכת חיים) מערכות ומכשירים רפואיים אחרים), שבהם כשל במוצרים עלול להוביל ישירות למוות, לפציעה אישית או לנזק פיזי או סביבתי חמור ("פעילויות בסיכון גבוה"). RPL מסירה במפורש כל אחריות מפורשת או משתמעת להתאמה לפעילויות בסיכון גבוה ואינה מקבלת כל אחריות לשימוש או הכללה של מוצרי Raspberry Pi בפעילויות בסיכון גבוה. מוצרי Raspberry Pi מסופקים בכפוף לתנאים הסטנדרטיים של RPL. אספקת המשאבים של RPL אינה מרחיבה או משנה אחרת את התנאים הסטנדרטיים של RPL, לרבות אך לא מוגבלת לכתבי הוויתור והאחריות המובעים בהם.

היסטוריית גרסאות מסמך

RaspberryPi-KMS-HDMI-Output-Graphics-Driver-FIG-1

היקף המסמך

מסמך זה חל על מוצרי Raspberry Pi הבאים

RaspberryPi-KMS-HDMI-Output-Graphics-Driver-FIG-2

מָבוֹא

עם הצגת מנהל ההתקן הגרפי KMS (Kernel Mode Setting), Raspberry Pi Ltd מתרחקת מבקרת קושחה מדור קודם של מערכת פלט הווידאו לכיוון מערכת גרפית בקוד פתוח יותר. עם זאת, זה בא עם סט אתגרים משלו. מסמך זה נועד לסייע בכל בעיה שעלולה להתעורר בעת המעבר למערכת החדשה. נייר לבן זה מניח ש-Raspberry Pi מריץ את מערכת ההפעלה Raspberry Pi, והוא מעודכן במלואו עם הקושחה והגרעינים העדכניים ביותר.

טרמינולוגיה

DRM: Direct Rendering Manager, תת-מערכת של ליבת לינוקס המשמשת לתקשורת עם יחידות עיבוד גרפיות (GPUs). משמש בשיתוף עם FKMS ו-KMS.
DVI: קודמו ל-HDMI, אך ללא יכולות השמע. כבלים ומתאמים HDMI ל-DVI זמינים לחיבור מכשיר Raspberry Pi לצג המצויד ב-DVI.
EDID: נתוני זיהוי תצוגה מורחבים. פורמט מטא נתונים עבור התקני תצוגה כדי לתאר את היכולות שלהם למקור וידאו. מבנה הנתונים של EDID כולל שם יצרן ומספר סידורי, סוג מוצר, גודל תצוגה פיזית והתזמונים הנתמכים על ידי התצוגה, יחד עם כמה נתונים פחות שימושיים. בחלק מהצגים יכולים להיות בלוקים EDID פגומים, שעלולים לגרום לבעיות אם פגמים אלה אינם מטופלים על ידי מערכת התצוגה.
FKMS (vc4-fkms-v3d): הגדרת מצב ליבה מזויפת. בעוד שהקושחה עדיין שולטת בחומרה ברמה נמוכה (למשלample, יציאות High-Definition Multimedia Interface (HDMI), ממשק התצוגה הטורי (DSI) וכו'), ספריות לינוקס סטנדרטיות משמשות בקרנל עצמו. FKMS משמש כברירת מחדל ב-Buster, אך כעת הוא הוצא משימוש לטובת KMS ב-Bullseye.
HDMI: ממשק מולטימדיה High-Definition הוא ממשק אודיו/וידאו קנייני להעברת נתוני וידאו לא דחוסים ונתוני אודיו דיגיטליים דחוסים או לא דחוסים.
HPD: זיהוי Hotplug. חוט פיזי שנטען על ידי התקן תצוגה מחובר כדי להראות שהוא קיים.
KMS: הגדרת מצב ליבה; לִרְאוֹת https://www.kernel.org/doc/html/latest/gpu/drm-kms.html לפרטים נוספים. ב-Raspberry Pi, vc4-kms-v3d הוא דרייבר שמיישם KMS, ולעתים קרובות מכונה "מנהל התקן KMS". מחסנית גרפיקה מדור קודם: ערימת גרפיקה המיושמת במלואה בקושחת הקושחה של VideoCore שנחשפת על ידי מנהל התקן Linux framebuffer. הערימה הגרפית מדור קודם שימשה ברוב מכשירי Raspberry Pi Ltd עד לאחרונה; כעת הוא מוחלף בהדרגה ב-(F)KMS/DRM.

מערכת ה-HDMI והדרייברים הגרפיים

מכשירי Raspberry Pi משתמשים בתקן HDMI, הנפוץ מאוד במסכי LCD וטלוויזיות מודרניות, עבור פלט וידאו. ל-Raspberry Pi 3 (כולל Raspberry Pi 3B+) ולמכשירים קודמים יותר יש יציאת HDMI אחת, המסוגלת לפלט של 1920 × 1200 @60Hz באמצעות מחבר HDMI בגודל מלא. ל-Raspberry Pi 4 שתי יציאות מיקרו HDMI, והוא מסוגל להוציא 4K בשתי היציאות. בהתאם להגדרה, יציאת ה-HDMI 0 ב-Raspberry Pi 4 מסוגלת לעלות עד 4kp60, אך בעת שימוש בשני התקני פלט 4K אתה מוגבל ל-p30 בשני המכשירים. ערימת התוכנה הגרפית, ללא קשר לגרסה, אחראית לתחקור התקני HDMI מחוברים למאפיינים שלהם, ולהגדיר את מערכת ה-HDMI כראוי. ערימות מדור קודם ו-FKMS משתמשות שתיהן בקושחה במעבד הגרפי של VideoCore כדי לבדוק נוכחות ומאפיינים של HDMI. לעומת זאת, KMS משתמשת בקוד פתוח לחלוטין, מימוש בצד ARM. המשמעות היא שבסיסי הקוד של שתי המערכות שונים לחלוטין, ובנסיבות מסוימות הדבר יכול לגרום להתנהגות שונה בין שתי הגישות. התקני HDMI ו-DVI מזהים את עצמם בפני התקן המקור באמצעות פיסת מטא נתונים הנקראת בלוק EDID. זה נקרא על ידי התקן המקור מהתקן התצוגה באמצעות חיבור I2C, וזה שקוף לחלוטין למשתמש הקצה כפי שהוא נעשה על ידי הערימה הגרפית. בלוק EDID מכיל מידע רב, אך הוא משמש בעיקר כדי לציין באילו רזולוציות התצוגה תומכת, כך שניתן להגדיר את Raspberry Pi כך שיוציא רזולוציה מתאימה.

כיצד מתמודדים עם HDMI במהלך האתחול

כאשר מופעל לראשונה, Raspberry Pi עובר מספר stages, המכונה boot stages:

  1. הראשון-יםtagה, טוען אתחול מבוסס ROM מפעיל את ה- VideoCore GPU.
  2. שניותtage bootloader (זהו bootcode.bin בכרטיס SD במכשירים שלפני Raspberry Pi 4, וב-SPI EEPROM ב-Raspberry Pi 4):
    1. ב-Raspberry Pi 4, השני-stagטוען האתחול יתחיל את מערכת ה-HDMI, יחקור את התצוגה עבור מצבים אפשריים, ואז יגדיר את התצוגה כראוי. בשלב זה התצוגה משמשת לספק נתוני אבחון בסיסיים.
    2. תצוגת האבחון של טוען האתחול (07 בדצמבר 2022 ואילך) תציג את הסטטוס של כל הצגים המצורפים (אם Hotplug Detect (HPD) קיים, והאם בלוק EDID שוחזר מהתצוגה).
  3. הקושחה של VideoCore (start.elf) נטענת ומופעלת. פעולה זו תשתלט על מערכת ה-HDMI, תקרא את בלוק ה-EDID מכל הצגים המצורפים ותציג את מסך הקשת בענן בתצוגות אלו.
  4. אתחול ליבת לינוקס
    1. במהלך אתחול הליבה, KMS ישתלט על מערכת ה-HDMI מהקושחה. שוב בלוק EDID נקרא מכל הצגים המצורפים, והמידע הזה משמש להגדרת קונסולת לינוקס ושולחן העבודה.

בעיות ותסמינים אפשריים

תסמין הכשל הנפוץ ביותר שחווים בעת מעבר ל-KMS הוא אתחול תחילה טוב, כאשר מסך טוען האתחול ולאחר מכן מסך הקשת מופיעים, ואחריו לאחר מספר שניות התצוגה תהייה שחורה ואינה חוזרת להידלק. הנקודה שבה התצוגה הופכת לשחורה היא למעשה הנקודה בתהליך האתחול של הליבה שבה מנהל התקן KMS משתלט על הפעלת התצוגה מהקושחה. ה-Raspberry Pi פועל כרגע מכל הבחינות מלבד יציאת ה-HDMI, כך שאם SSH מופעל אז אתה אמור להיות מסוגל להתחבר למכשיר בנתיב זה. נורית הגישה הירוקה של כרטיס SD תהבהב בדרך כלל מדי פעם. ייתכן גם שלא תראה פלט HDMI בכלל; ללא תצוגת אתחול, וללא מסך קשת בענן. בדרך כלל ניתן לייחס זאת לתקלת חומרה.

אבחון התקלה

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

  • כבל HDMI פגום
  • נסה כבל חדש. כבלים מסוימים, במיוחד זולים מאוד, עשויים שלא להכיל את כל קווי התקשורת הנדרשים (למשל Hotplug) כדי ש-Raspberry Pi יצליח לזהות את התצוגה.
  • יציאת HDMI פגומה ב-Raspberry Pi
  • אם אתה משתמש ב-Raspberry Pi 4, נסה את יציאת ה-HDMI האחרת.
  • יציאת HDMI פגומה במסך
  • לפעמים יציאת ה-HDMI בצג או בטלוויזיה עלולה להתבלות. נסה יציאה אחרת אם למכשיר יש כזו.
  • לעתים רחוקות, התקן תצוגה עשוי לספק נתוני EDID רק כאשר הוא מופעל, או כאשר היציאה הנכונה נבחרת. כדי לבדוק, ודא שהמכשיר מופעל ושנבחרה יציאת הקלט הנכונה.
  • התקן תצוגה אינו טוען את קו זיהוי התקע החם

פלט ראשוני, ואז המסך הופך לשחור
אם התצוגה עולה אבל אז נכבית במהלך אתחול ליבת לינוקס, ישנן מספר סיבות אפשריות, ואלה קשורות בדרך כלל לבעיה בקריאת ה-EDID מהתקן התצוגה. כפי שניתן לראות מהסעיף לעיל העוסק ברצף האתחול, ה-EDID נקרא במספר נקודות שונות במהלך תהליך האתחול, וכל אחת מהקריאות הללו נעשית על ידי תוכנה אחרת. הקריאה הסופית, כאשר KMS משתלטת, מבוצעת על ידי קוד ליבת לינוקס במעלה הזרם ללא שינוי, וזה אינו מטפל בתבניות EDID פגומות כמו גם בתוכנת הקושחה הקודמת. זו הסיבה שהתצוגה יכולה להפסיק לפעול כראוי ברגע ש-KMS משתלט. ישנן מספר דרכים לאשר אם KMS לא מצליח לקרוא את ה-EDID, ושתיים מהן הן כדלקמן.
בדוק את מסך האבחון של טוען האתחול (Raspberry Pi 4 בלבד)

פֶּתֶק
אבחון של טוען האתחול דורש טוען אתחול עדכני. אתה יכול לשדרג לגרסה העדכנית ביותר באמצעות ההוראות הבאות: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader הסר את כרטיס ה-SD והפעל מחדש את ה-Raspberry Pi. הקש ESC במסך התקנת מערכת ההפעלה, ומסך האבחון אמור להופיע בהתקן התצוגה. צריכה להיות שורה בתצוגה שמתחילה בתצוגה: - למשלampעל:

  • לְהַצִיג: DISP0: HDMI HPD=1 EDID=בסדר #2 DISP1: HPD=0 EDID=none #0

פלט זה מ-Raspberry Pi 4 מראה שהמערכת זיהתה תצוגת HDMI ביציאת HDMI 0, זיהוי ה-hotplug מוצהר וה-EDID נקרא בסדר. שום דבר לא נמצא ביציאת HDMI 1.

בדוק אם מערכת KMS זיהתה EDID
כדי לבדוק זאת תצטרך להיכנס למכשיר Raspberry Pi דרך SSH ממחשב אחר. ניתן להפעיל SSH בעת יצירת תמונת כרטיס SD עם Raspberry Pi Imager, באמצעות אפשרויות ההגדרות המתקדמות. הפעלת SSH בכרטיס SD שכבר צולם היא קצת יותר מסובכת: תצטרך להשתמש במחשב אחר כדי להוסיף file בשם ssh למחיצת האתחול. החלף את כרטיס ה-SD ב-Raspberry Pi המקורי והפעל אותו. זה אמור לאפשר SSH, עם כתובת IP שהוקצתה על ידי DHCP. לאחר הכניסה, הקלד את ההודעה הבאה בהנחיית המסוף כדי להציג את התוכן של כל EDID שזוהה (ייתכן שתצטרך לשנות את HDMI-A-1 ל-HDMI-A-2 בהתאם לאיזו יציאת HDMI ב-Raspberry Pi מחובר התקן התצוגה to): cat /sys/class/drm/card?-HDMI-A-1/edid אם אין תיקיות בשם card?-HDMI-A-1 או דומה, אז סביר להניח שלא ניתן היה לקרוא EDID מהתצוגה התקן.

פֶּתֶק
במקרה שבו ה-EDID נקרא בהצלחה, יש וירטואלי שימושי file באותה תיקיה, הנקראת modes, שכאשר מוצגת מציגה את כל המצבים האפשריים שלטענת EDID שהמכשיר תומך.

הקלות

כשל בזיהוי חיבור חם אם גם הקושחה וגם ה-KMS לא מצליחים למצוא צג מחובר, זה יכול להיות כשל בזיהוי ה-hotplug - כלומר, ה-Raspberry Pi לא יודע שהתקן חובר, ולכן הוא לא בודק EDID. זה יכול להיגרם מכבל לא תקין, או התקן תצוגה שאינו מציין את התקע חם כהלכה. אתה יכול לאלץ זיהוי Hotplug על ידי שינוי שורת הפקודה של הליבה file (cmdline.txt) המאוחסן במחיצת האתחול של כרטיס SD של Raspberry Pi OS. אתה יכול לערוך את זה file במערכת אחרת, באמצעות כל עורך שאתה מעדיף. הוסף את הדברים הבאים לסוף הקובץ cmdline.txt file: video=HDMI-A-1:1280×720@60D אם אתה משתמש ביציאת HDMI השנייה, החלף את HDMI-A-1 ב-HDMI-A-2. אתה יכול גם לציין רזולוציה וקצב פריימים שונים, אך וודא שאתה בוחר כאלה שהתקן התצוגה תומך בהם.

פֶּתֶק
תיעוד על הגדרות שורת הפקודה של הליבה עבור וידאו ניתן למצוא כאן: https://www.kernel.org/doc/Documentation/fb/modedb.txt

אַזהָרָה
ערימות גרפיקה ישנות יותר תמכו בשימוש בערך config.txt כדי להגדיר את זיהוי ה-hotplug, אך בזמן הכתיבה זה לא עובד עם KMS. ייתכן שהוא נתמך במהדורות קושחה עתידיות. הערך config.txt הוא hdmi_force_hotplug, ואתה יכול לציין את יציאת ה-HDMI הספציפית שה-hotplug חל עליה באמצעות hdmi_force_hotplug:0=1 או hdmi_force_hotplug:1=1. שימו לב שהמינוח עבור KMS מתייחס ליציאות HDMI כ-1 ו-2, בעוד ש-Raspberry Pi משתמש ב-0 וב-1.

בעיות EDID
מיעוט של התקני תצוגה אינם מסוגלים להחזיר EDID אם הם כבויים, או כאשר קלט AV שגוי נבחר. זו יכולה להיות בעיה כאשר ה-Raspberry Pi והתקני התצוגה נמצאים על אותו פס חשמל, ומכשיר ה-Raspberry Pi מאתחל מהר יותר מהתצוגה. עם מכשירים כאלה, ייתכן שתצטרך לספק EDID באופן ידני. באופן חריג אף יותר, לחלק מהתקני התצוגה יש בלוקים של EDID שפורמטים גרוע ולא ניתן לנתח אותם על ידי מערכת EDID KMS. בנסיבות אלה, ייתכן שניתן יהיה לקרוא EDID ממכשיר ברזולוציה דומה ולהשתמש בה. בכל מקרה, ההוראות הבאות מפרטות כיצד לקרוא EDID מהתקן תצוגה ולהגדיר את KMS להשתמש בו, במקום ש-KMS ינסה לחקור את המכשיר ישירות.

העתקת EDID ל-a file
יצירת א file הכיל מטא-נתונים של EDID מאפס אינו אפשרי בדרך כלל, והשימוש באחד קיים הוא הרבה יותר קל. בדרך כלל ניתן להשיג EDID ממכשיר תצוגה ולאחסן אותו בכרטיס ה-SD של Raspberry Pi כך שניתן יהיה להשתמש בו על ידי KMS במקום לקבל EDID ממכשיר התצוגה. האפשרות הקלה ביותר כאן היא לוודא שמכשיר התצוגה פועל ובכניסת AV הנכונה, ושה-Raspberry Pi הפעיל את מערכת ה-HDMI בצורה נכונה. מהטרמינל, כעת תוכל להעתיק את ה-EDID ל-a file עם הפקודה הבאה: sudo cp /sys/class/drm/card?-HDMI-A-1/edid /lib/firmware/myedid.dat אם מסיבה כלשהי ה-EDID אינו קיים, אתה יכול לאתחל את המכשיר במצב לא -מצב KMS שאכן מצליח לאתחל לשולחן העבודה או למסוף, ואז להעתיק את ה-EDID שהקושחה תקרא (בתקווה) בהצלחה ל- file.

  1. אתחול למצב גרפי מדור קודם.
    1. ערוך את config.txt במחיצת האתחול, הקפד להפעיל את העורך שלך באמצעות sudo, ושנו את השורה שאומרת dtoverlay=vc4-kms-v3d ל-#dtoverlay=vc4-kms-v3d.
    2. לְאַתחֵל.
  2. שולחן העבודה או מסוף הכניסה אמורים להופיע כעת.
    1. באמצעות הטרמינל, העתק את ה-EDID מהתקן התצוגה המצורף ל-a file עם הפקודה הבאה:
  • tvservice -d myedid.dat sudo mv myedid.dat /lib/firmware/

באמצעות א file-מבוסס EDID במקום לחקור את התקן התצוגה ערוך /boot/cmdline.txt, הקפד להפעיל את העורך שלך באמצעות sudo, והוסף את הדברים הבאים לשורת הפקודה של הליבה: drm.edid_firmware=myedid.dat אתה יכול להחיל את ה-EDID על יציאת HDMI ספציפית באופן הבא: drm.edid_firmware=HDMI-A-1:myedid.dat במידת הצורך, אתחול חזרה למצב KMS על ידי ביצוע הפעולות הבאות:

  1. ערוך את config.txt במחיצת האתחול, הקפד להפעיל את העורך שלך באמצעות sudo, ושנו את השורה שאומרת #dtoverlay=vc4-kms-v3d ל-dtoverlay=vc4-kms-v3d.
  2. לְאַתחֵל.

פֶּתֶק
אם אתה משתמש ב- a file-מבוסס EDID, אבל עדיין יש לך בעיות עם hotplug, אתה יכול לאלץ זיהוי hotplug על ידי הוספת ההודעה הבאה לשורת הפקודה של הליבה: video=HDMI-A-1:D.

מסמכים / משאבים

מנהל ההתקן הגרפי של פלט RaspberryPi KMS HDMI [pdfמדריך למשתמש
KMS, מנהל התקן גרפי פלט HDMI, פלט HDMI של KMS, מנהל התקן גרפי, מנהל התקן גרפי פלט KMS, מנהל התקן

הפניות

השאר תגובה

כתובת האימייל שלך לא תפורסם. שדות חובה מסומנים *