שְׁאֵלָה:
לימוד פיתוח מנהלי התקנים של לינוקס עם Raspberry Pi
ivan
2013-08-12 17:02:03 UTC
view on stackexchange narkive permalink

ברצוני לכתוב מנהל התקן לינוקס עבור התקן חומרה אמיתי כלשהו. איזה ציוד היקפי של Raspberry Pi מתאים? בעיקרון אני צריך את הדברים הבאים:

  1. זה חייב להיות קטן מספיק למתחילים (כמה חודשים לכל היותר, כמה שבועות עדיף).

  2. גליון הנתונים חייב להיות זמין. בהתחלה חשבתי על מתאם USB-Ethernet, אבל נראה שיש לו גיליון נתונים מוגבל מאוד.

יש רעיונות? יכול להיות משהו כמו לגרום לקונסולה טורית לעבוד מעל GPIO?

מנהלי התקנים של לינוקס הם מודולי ליבה, וטכנית הם כלל לא צריכים להיות קשורים לחומרה, כך שהדבר הראשון שתרצו לנסות הוא כנראה ממשק למכשיר char - כלומר, משהו שמספק קובץ התקן char שיכול להיקרא ו / או לכתוב אותם (בדומה לחומר ב- proc) למטרה טריוויאלית כלשהי.
עשיתי את כל זה, השלמתי הדרכות וכתבתי מודולי ליבה למכשירי פסאודו, יחד עם קריאת ספרים בנושא פיתוח גרעינים / דרייברים. כל זה טוב, אבל עכשיו אני רוצה לעבוד עם חומרה אמיתית ..
גרג K-H כתב את זה לפני זמן מה (זה אולי מיושן מעט מבחינות מסוימות): http://www.linuxjournal.com/article/7353 אז יש מכשירי USB עם גליונות נתונים ציבוריים מסביב. יש לו שם כמה טיפים להנדסה לאחור (לא הייתי רוצה לעשות את זה עם שום דבר מסובך מדי). דברים לסיכות GPIO הייתי מניח שבדרך כלל עובד באמצעות מנהלי ההתקן הקיימים של I2C וכו ', אבל אתה יכול פשוט להתעלם מכך ולעשות משהו בעצמך.
שְׁלוֹשָׁה תשובות:
Krzysztof Adamski
2013-08-13 17:41:56 UTC
view on stackexchange narkive permalink

יכול להיות קשה ללמוד מנהלי כתיבה בעת ממשק למכשירים מסובכים ו / או אוטובוסים מסובכים. בגלל זה אני ממליץ להשתמש במכשירים פשוטים וידועים (תוך התעלמות מההטמעה הקיימת של מנהלי ההתקנים שלהם בליבה) כמו מכשירי I²C / SPI המשמשים בדרך כלל עם מיקרו-בקרים. לדוגמה, תוכל למצוא כל מכשיר ש"נתמך "על ידי קהילת Arduino (כלומר יש ספרייה / תיעוד עבורו) ולנסות להשתמש בו עם RaspberryPi.

אם זה לא מספיק או שאתה לא רוצה כדי לקנות יותר מדי חומרה, אתה יכול ליצור בעצמך. פשוט תביא איזה מיקרו-בקר (כמו atmega או משהו כזה), צור תוכנה שהוא יהפוך למכשיר כלשהו ואז נסה להתממשק אליו באמצעות מנהלי התקנים של לינוקס. בדרך זו תוכלו ליצור בקלות תוכניות שיחקו סוגים שונים של מכשירים. ומכיוון שתכתוב בעצמך את "הקושחה" שלך, זה יעזור לך לפתור בעיות באגים.

אתה זקוק לכישורי תכנות מיקרו-בקר לשם כך אך לא קשה ללמוד תכנות עם Arduino ואני מאמין שזה בכל זאת ידע שימושי עבור מתכנת נהגים.

מה דעתך ליישם תקשורת טורית בתוכנה באמצעות סיכות GPIO? לְמָשָׁל. חבר סדרתי למחשב ונסה לפחות להפיק משהו למסוף. האם זה בר קיימא?
@ivan: אני לא בטוח אם הבנתי את זה נכון. אם, לפי סדרתי, אתה מתכוון ל- UART / rs232 ולפי תוכנה, אתה מתכוון לסיבוב זה, אז זה לא אפשרי בגלל אילוצי התזמון. אם, לעומת זאת, אתה מתכוון ליישם (מחדש) התקן לינוקס סדרתי באמצעות חומרת RaspberryPi UART, זה כמובן בר ביצוע. אני מאמין שאת כל המידע הדרוש אודות חומרה זו ניתן למצוא במסמך 'BCM2835 ARM Peripherals'. אך זכרו שכדי להשתמש בו, ראשית עליכם להשבית את מנהל ההתקן הקיים בגרעין.
תודה, אבל האם אתה בטוח לגבי האפשרות של UART דופק קצת? מצאתי קישור זה: http://www.ganssle.com/articles/auart.htm כך שהוא נראה אפשרי לביצוע קצב שידור נמוך ולפחות רק יישום של חלק שליחה (וזה קל יותר).
@ivan: נראה שמאמר זה לא עוסק במערכות עם מערכות הפעלה למטרות כלליות כמו לינוקס. ב- UART יש לך מגבלות תזמון אמיתיות שקשה מאוד לעמוד בלי מערכת הפעלה בזמן אמת. עם זאת, יתכן שניתן יהיה לעשות זאת בקצב נמוך, אך זה לא ממש אמין.
נראה שאתה צודק: http://raspberrypi.stackexchange.com/questions/1987/can-raspberry-pi-reliably-bit-bang-a-9600-baud-serial-and-is-there-example-code ( עם זאת יש שם פיתרון מעניין). שוב תודה על עזרתך.
PiBorg
2013-08-13 17:23:11 UTC
view on stackexchange narkive permalink

באופן אישי הייתי מתחיל עם מכשיר פשוט מאוד, כמו נורית אחת או יותר המחוברת ישירות לסיכות GPIO.

תוכל לקנות מכשיר מוכן לחיבור או לחבר את המכשיר שלך.

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

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

היי @PiBorg. האם תוכל לספר כמה משאבים שיעזרו לי ללמוד לקודד מנהל התקן פשוט למכשיר כגון נורית נורית אחת או יותר המחוברות ישירות לסיכות GPIO?
rbaleksandar
2015-08-27 01:39:22 UTC
view on stackexchange narkive permalink

"המכשיר" הפשוט ביותר שאליו אתה יכול לכתוב מנהל התקן חומרה (אם פיתוח מנהלי התקני חומרה הוא הדבר שלך) יכול להיות פשוט כמו נורית LED (הוספתי את המרכאות כי מבחינה טכנית נורית LED היא לא מכשיר אבל זה עדיין פיסת חומרה) כפי שהציע @ PiBorg.

אפשרויות אחרות יהיו כמה התקנים / רכיבים קלים לממשק כמו פוטו-נגדים, חיישני אינפרא אדום פסיביים (קצר: PIR), חיישני טמפרטורה, מאווררי מחשב ( רצוי מאוורר בעל 4 חוטים שמאפשר לך לא רק לפקח אלא גם לשלוט בסל"ד), מטריצות LED נקודות וכן הלאה. בעיקרון מכשירים פשוטים כאלה יאפשרו לך לקבל את המינימום בחומרה (כך שתוכל לראות ולגעת במה שהשגת בפועל) ובמקביל תוכל ללמוד על הרבה נושאים המשמשים למכשירים מורכבים בהרבה המורכבות נובעת בעיקר מהפרוטוקול בו הם משתמשים.

שימו לב גם כי אינכם צריכים להקדיש את הדרך החופשית למודולי הליבה. כמובן שאם אתה רוצה לעשות את זה אף אחד לא עוצר אותך. :)

הנה דוגמה לממשק חיישן אינפרא אדום פסיבי (אני הולך לבדוק אותו בקרוב כאשר ה- PIR שלי יועבר: 3). אתה יכול לקחת את זה ולהתחיל לחפור עמוק יותר בעולם הליבה של לינוקס על מנת לראות כיצד תוכל למשל ליצור מנהל התקן ליבה, שעובד עם ה- PIR.



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...