גדי הרמן, מימוש של מפתח קלט/פלט מבוסס USB
Transcription
גדי הרמן, מימוש של מפתח קלט/פלט מבוסס USB
20 מימוש של מפתח קלט/פלט מבוסס USB גדי הרמן אורט רוגוזין מגדל העמקgherman@walla.co.il , המידע מפורסם גם באתר "פרויקטים באלקטרוניקה מבוססי "Visual Basicבכתובתhttp://galium.co.il/vbe : תקציר מפתח ה USB-מחליף בהדרגה את רוב מפתחי המחשב הסטנדרטיים המוכרים לנו ,כמו למשל מפתח המדפסת LPTוהמפתח הטורי .COMמפתח ה USB-מאפשר לחבר למחשב מגוון רחב של התקנים החל ,כאמור ,ממדפסת( ,מפתח המדפסת שימש ,כידוע ,כמפתח קלט/פלט תקני לשם חיבור התקנים שונים לצורך הוראת מקצועות האלקטרוניקה השונים) ,מקלדת ,עכבר ,סורק ,מצלמה ועד ל ֶה ְחסֵן נייד ( )Disk On Keyהפועל בקצבים גבוהים של העברת מידע. במסמך זה מופיעים ההסברים והקוד המאפשרים את הפנייה למפתח USBשאליו מחוברים התקני קלט/פלט כמו לחצנים, נורות מנועים ומממירים שונים .הפנייה למפתח היא דרך שפה עלית ,בשפות Cו .Visual Basic-שימוש במפתח ה USB-בא להחליף את מפתח ה LPT-בעת תרגול בהפעלת התקנים חיצונים של השפות העליות הנזכרות בתכניות הלימודים במגמת "הנדסת אלקטרוניקה ומחשבים" ובמגמת "מערכות בקרה ואנרגיה" בתיכון ובמכללה. עקרונות במהלך פיתוח הקוד הנזכר הובאו בחשבון העקרונות האלה: .1הקוד כתוב כך שהוא מתאים לרמת הידע הנדרשת בתכנית הלימודים במקצוע "מבוא למחשבים" הנלמד בכיתה י"א במגמת "הנדסת אלקטרוניקה ומחשבים". .2תחביר הוראות הקלט והפלט להתקנים החיצונים ומהם, דומה לתחביר של פקודות INו OUT-תקניות. .3התקן ה USB-המחובר למחשב מזוהה על ידי מערכת ההפעלה כהתקן תקני כך שלא נדרשת התקנה של דרייבר (מנהל התקן) ייחודי. .4מימוש התקן הקלט פלט מבוסס על מיקרו-בקר ממשפחת המיקרו-בקרים C51כך שיתאים לביצוע ניסויים בתקשורת מחשבים במקצוע "תקשורת מחשבים" הנלמד בכיתה י"ד. .5פישוט המורכבות שבמימוש מפתח USBעד רמת פשטות הדומה לזו של עבודה מול מפתח LPTאו .COM .6לא יידרש ידע במיקרו-בקרים כדי ליישם ממשק זה. מהו מפתח ?USB ממשק Universal Serial Busאו בקיצור ,USBהוא מפתח טורי, תקני ,מהיר ואמין ,המאפשר חיבור מגוון רחב של התקנים .מפתח ה USB-מחליף את המפתחים הטוריים ( )Serial Portsוהמקביליים ( )Parallel Portsשהיו מצויים במחשב .אחד החסרונות של המפתחים האלה היה מספר ההתקנים המוגבל שאפשר לחבר אליהם .ממשק ה USB-מאפשר חיבור של מספר רב של התקנים למחשב ,עד 128התקנים .ניהול משאבי המחשב הוא אוטומטי ,דבר המאפשר למשתמש לחבר התקנים נוספים ללא צורך בהגדרה מקדימה שלהם לפני או אחרי חיבורם למחשב .הממשק תומך בהעברת נתונים בקצבים החל מ ,1.5Mbps-במצב עבודה ,Low speedועד 480Mbps במצב עבודה .High speedממשק USBמאפשר לנתק חיבור וניתוק של התקנים ללא צורך באתחול המחשב .חיבור ההתקן נעשה, בדרך כלל ,באמצעות כבל USBהמורכב מ 4-גידים :שניים מהם משמשים להעברת נתונים ושני האחרים משמשים להספקת מתח של 5Vבזרם של עד ( 500mAבכבלי USBבעלי חמישה גידים ,הגיד החמישי משמש לסיכוך). הגדרת הדרישות לפיתוח התקן USB .1לשם מימוש התקן חומרה צריכים להשתמש במיקרו-בקר ממשפחת 8051שמותקו בו .USB Engine .2הרכיב מחובר למחשב באמצעות כבל USBופועל במאפייני האותות (מהירות ורמות מתחים) של תקן .USBהמיקרו- בקר מסוגל לשלוח ולקבל חבילות מידע מן המחשב ומהתקן החומרה. תהליך ההתחברות של התקן USB עם חיבור התקן ה USB-למחשב ,מתבצע הליך זיהוי אוטומטי מהנעשה במגמות הטכנולוגיות הנקרא Enumerationשבו מוחלף מידע בין ההתקן למחשב. המחשב "שואל" את ההתקן סדרה של שאלות ,לדוגמה :מי אתה? מי היצרן שלך? מהו גודל חבילת המידע שאתה משדר וקולט? מהי צריכת ההספק שלך? מהו נוהל העברת הנתונים שאתה "רוצה" לעבוד בו? וכדומה. התקן ה USB-מחובר ,באמצעות כבל מתאים ,אל מחבר מתאים במחשב ומשם לבקר .USBבקר זה מותקן כחלק מן החומרה המותקנת בלוח האם במחשב .הבקר מופעל באמצעות דרייבר (מנהל התקן) ייעודי כחלק ממערכת ההפעלה של המחשב ( .)Windowsמערכת ההפעלה ,באמצעות בקר ה ,USB-אחראית 21 לזיהוי ההתקן המחובר .חשוב להדגיש שלמתכנת בשפה עלית אין כל שליטה בתהליך הזה. לאחר שמערכת ההפעלה מסיימת לזהות את ההתקן מספקת מערכת ההפעלה שירותי קישור ליישום הכתוב בשפה עלית (בהנחה שמדובר בהתקן שמערכת ההפעלה מסוגלת לתת לו שירותים) .לדוגמה התקני ),HID (Human interface device ואם לא כן יש להתקין דרייבר ייעודי (מנהל התקן) להפעלת ההתקן המחובר. באיור 1מתואר תרשים המסביר את רכיבי התוכנה והחומרה המאפשרים את פעולתו של התקן USBהמחובר למחשב. איור :1המרכיבים (חומרה ותכנה) המאפשרים התקשרות בין התקן USBלמחשב איור :2תרשים מלבנים של הרכיב AT89C5131A-M 22 מימוש של מעגל החומרה הרכיב המרכזי שבאמצעות נמשש את מעגל החומרה הוא של רכיב ממשפחת 8051המיוצר על ידי חברת Atmelבשם .AT89C5131A-Mברכיב זה מותקנים ,בין השאר ,המערכות: USB Engineהתומך בתקן USB1.1ו ,USB2.0-זיכרון תוכנה של 32KbyteFlash EEPROMהניתן לצריבה באמצעות מפתח ה- USBו 34-הדקי קלט/פלט (.)I/O Pins באיור 2אפשר לראות את תרשים המלבנים של הרכיב AT89C5131שמורכב ממיקרו-בקר בסיסי ממשפחת ,C51 מוקף במלבן שחור ,ומימינו מותקנות מערכות נוספות המצויות במיקרו-בקר. באיור 3אפשר לראות את מיפוי ההדקים של הרכיב. באיור 5יש סרטוט מפורט של מעגל החומרה הנדרש לשם מימוש ממשק USBכהתקן קלט/פלט. איור :5סרטוט חשמלי מפורט של מעגל החומרה למימוש ממשק USB איור :3מיפוי ההדקים של הרכיב AT89C5131A-Mבתושבת PLCC52 באיור 4מתוארים מספרי ההדקים של התושבת. איור :4מספרי ההדקים של תושבת PLCC52 מלבד רכיב AT89C5131A-Mמותקנים במעגל גביש לתדר של 24MHzהמחובר להדקים 12ו 13-של המיקרו-בקר ,מתג ISP המחובר להדק ( PSENהדק 28במיקרו-בקר) .המתג הזה מאפשר מעבר בין שני מצבי עבודה :האחד שבו ממשק ה USB-משמש להטענת תוכניות לזיכרון ה ,Flash-והאחר מצב "ריצה" ,רגיל, שבו המיקרו-בקר מריץ את התוכנה הצרובה ב .Flash-הסבר נוסף על אופן הטענת תכנית לזיכרון המיקרו-בקר מצוי בהמשך בסעיף "כתיבת התוכנה למיקרו-בקר". כמו כן מופיע באיור 5מעגל Resetהמחובר להדק 43של המיקרו- בקר .באיור 5מופיע גם מחבר USBמדגם USB Type-Bהמחובר להדקים 22עד 24בבקר ה.USB- באיור 6אפשר לראות את מיפוי ההדקים של מחבר USB מדגם .B אפשר לבנות את מעגל החומרה על לוח חיבורים סטנדרטי ,במצב זה יש להקפיד על החיבור בין מחבר ה USB-לבין המיקרו-בקר. חלק זה של המעגל פועל בתדרים גבוהים מאוד ועל כן יש להקפיד שאורך המוליך המחבר בין השניים יהיה קצר ביותר ויש להקפיד על צורתו של המוליך. יש כרטיסים מסחריים שבהם מותקן הרכיב הנדון ,הכוללים את מעגל החומרה הנדרש ,ומיוצרים על ידי יצרנים שונים בארץ ובחו"ל .באיור 7אפשר לראות דוגמה למעגל מודפס שכזה שאפשר לרכוש אותו באתר של יצרן המיקרו-בקר, ובאיור 8יש דוגמה למעגל מודפס המיוצר על ידי יצרן בארץ. מהנעשה במגמות הטכנולוגיות 23 איור :6מיפוי הרגלים של מחבר USBמדגם B איור :7דוגמה למעגל מודפס איור :8דוגמה למעגל מודפס המיוצר על ידי יצרן בארץ. כתיבת התוכנה למיקרו-בקר קובץ זה הקרוי בשם AT89c5131_USB_Program.hexמצורף למסמך זה ומצוי בתיקייה .AT89c5131_USB_Programכמו כן אפשר להוריד את הקובץ מן האינטרנט בכתובתhttp:// : galium.co.il/vbe/download/download_package.rar כמתואר באיור 1העוסק במרכיבים הדרושים לשם יצירת תקשורת בין התקן USBלמחשב ,נדרשת תכנית ייעודית שבה יופיעו כל ההגדרות הנדרשות ,נוהלי התקשורת ,התשובות למערכת ההפעלה (כשזו תבצע את הליך ה)Enumeration- והחשוב ביותר :קליטת נתונים שהמחשב משדר ושליחת נתונים אלו למפתחי הפלט ( ,)Portsקליטת הנתונים המתקבלים במפתחי הקלט והעברתם למחשב. באיור 9מצוי קטע מקוד של תכנית לשידור וקליטה של נתונים מן המחשב למיקרו-בקר וחזרה .בשלב ראשון בודקת התכנית באמצעות שימוש בפונקציה Is_new_data_readאם המחשב משדר נתונים למיקרו-בקר .כשהמחשב משדר נתונים קורא המיקרו-בקר את הנתונים וכותב אותם לתוך המערך data_receivedובהמשך שולח אותם ,לפי הסדר ,למפתחים .P0 - P3בשלב השני שולח המיקרו-בקר למחשב את הנתונים שקלט מפתחים מהמפתחים ,P0 - P3באמצעות שימוש במערך . data_to_send קוד התכנית עבר הידור באמצעות מהדר הממיר את הקוד הכתוב בשפת ( Cלמיקרו-בקרים ממשפחת )C51לקובץ מספרים הקסה דצימליים ,Hex File ,הניתן לצריבה בזיכרון ה Flash-של הבקר. צריבת התוכנה בזיכרון הבקר נשתמש בתוכנה ייעודית ששמה (Flexible In-system Programmer) Flipשמספק לנו יצרן הרכיב לשם צריבת הקובץ AT89c5131_USB_Program.hexבזיכרון ה Flash-של המיקרו-בקר. את התוכנה הזאת אפשר להוריד מאתר היצרן בכתובת: http :// www . atmel . com / dyn / products / tools _ card . .asp?tool_id=3886 באיור 10אפשר לראות את המסך העבודה של התוכנה לאחר התקנתה במחשב. לשם צריבת התכנית AT89c5131_USB_Program.hexבבקר יש לבצע את השלבים האלה: .1ניתוק כבל ה USB-המחבר בין הבקר למחשב. .2חיבור מתח הפעלה למיקרו-בקר. .3העברת מתג ISPהמחובר להדק PSENשל המיקרו-בקר (איור ,)5למצב צריבת התכנית בבקר ולחיצה על לחצן .RESET 24 איור :9קטע מקוד התכנית לשידור וקליטה של איור :11מנהל ההתקנים מזהה את הבקר כהתקן HID נתונים מהמחשב למיקרו-בקר וחזרה .4חיבור כבל USBבין הבקר למחשב. .5אם זו הפעם הראשונה שבה מחובר מיקרו-בקר מדגם AT89c5131למחשב – יודיע המחשב שהוא מזהה חומרה חדשה .יש להתקין את הדרייבר הדרוש הממוקם בתיקייה: C:\Program Files\Atmel\Flip 3.3.2\usbתוך שימוש באשף ההתקנה שהמחשב פותח ברגע שהוא מזהה חומרה חדשה. אם אין זו הפעם הראשונה שבה מחובר מיקרו-בקר מדגם זה למחשב ,אפשר לדלג על השלב הזה. .6הפעלת תוכנת ה FLIP-ובחירה בתפריט Selectלאחר הקשה על Deviceברכיב .AT89C5131 .7פתיחת התקשורת בין המיקרו-בקר למחשב על ידי לחיצה על Openבחלון שייפתח לאחר לחיצה על SettingsàComm .unicationàUSB .8יש לוודא כי תיבת הסימון BLBJאינה מסומנת. .9בחירת הקובץ AT89c5131_USB_Program.hexהמיועד לצריבה בבקר על ידי לחיצה על ...FileàLoad HEX file .10ולבסוף לחיצה על Runלביצוע הצריבה. .11לאחר מכן יש לנתק את כבל ה USB-המחבר בין הבקר למחשב. .12העברת המתג ,ISPהמחובר להדק PSENשל המיקרו-בקר, למצב ריצה רגיל ולחיצה על לחצן .RESET .13חיבור חוזר של כבל ה USB-המחבר בין הבקר למחשב. חשוב לציין שההליך הזה הוא חד פעמי .לאחר צריבה ראשונה של הבקר כהתקן קלט/פלט HIDישמש הרכיב למטרה זו עד שנצרוב עליו משהו אחר. הליך הזיהוי של ההתקן במערכת ההפעלה איור :10מסך העבודה של התוכנה Flipהמשמשת לצריבת תכניות בבקר לאחר ביצוע הליך הצריבה ,ייעשו העברת המיקרו למצב ריצה ,ביצוע Resetוחיבור כבל ה USB-המחבר בין הבקר למחשב .המחשב יזהה חומרה חדשה ,אך הפעם הוא לא ידרוש התקנה של דרייבר מתאים .זאת מאחר שתכנתנו את הבקר כך שיזוהה על ידי מערכת ההפעלה כהתקן סטנדרטי מסוג .HID מהנעשה במגמות הטכנולוגיות 25 באיור 11אפשר לראות את חלון "מנהל ההתקנים" (Device )Managerשל מערכת ההפעלה שבו מוצג Properties USB – Human Interface Deviceמאפיינים של התקן חדש .ההתקן הזה הוא מסוג "."AT89C5131 – USB HID Generic כתיבת קוד בשפת קלט/פלט למפתח C למימוש מעיון באיור 12עולה שכדי לכתוב תכנית בשפה עלית להפעלת התקן חומרה דרך ממשק ,USBיש לבצע פנייה ,באמצעות קוד מתאים ,למערכת ההפעלה שתפנה להתקן החומרה דרך ממשק ה .USB-כדי להקל על התקשורת בין היישום בשפת Cלבין מערכת ההפעלה ,נשתמש בקובץ הספרייה (dll file) AtUsbHid. .dllקובץ זה מסופק על ידי יצרן הרכיב לשם מטרה זו. בשלב הבא בכתיבת הקוד ניצור קובץ כותרת בשם AtUsbHid. ,hקובץ זה משמש כמתאם בין הקוד הנכתב לשם ביצוע פעולות מול מפתח ה USB-לבין הפעלתו בפועל על ידי קוד תוכנה הכתוב בקובץ הספרייה .AtUsbHid.dllבדרך זו אפשר להציג לתלמיד קוד קצר ופשוט הדומה במבנה שלו לקובץ המוכר לו מן העבודה מול התקני קלט/פלט מבוססי .LPT קובץ הכותרת AtUsbHid.hמורכב מ: .1קוד יצרן VIDוקוד המוצר PIDהמאפשר לנו לזהות את התקן החומרה הנתון מבין כלל התקני ה USB-המחוברים למחשב. .2שני מערכים בני 32בתים מטיפוס בית ()unsigned char המכונים In_Buuferו .Out_Buufer-מערכים אלו משמשים איור :12האופן שבו משתלב קובץ הספרייה AtUsbHid.dll ביישום קוד בשפה עלית איור :14האופן שבו משתלב קובץ הספרייה MCHID.dllביישום קוד בשפה עלית איור :13דוגמה לקוד תכנית בשפת Cהפונה להתקן USB המשמש כמפתח קלט/פלט 26 .3 .4 .5 .6 .7 לקליטה ולשידור של הנתונים (חבילות המידע) בין המחשב להתקן. הכרזה על מספר רב של פונקציות המצויות בקובץ הספרייה .AtUsbHid.dll פונקציה ששמה initializationUSBהמאתחלת את התקשורת מול ההתקן. פונקציה ששמה closeUSBהסוגרת את התקשורת מול ההתקן. פונקציה ששמה ,outUSBהזהה במבנה שלה לפונקציה .Outp הפונקציה מקבלת שני נתונים ,הראשון הוא מספר המפתח בבקר שאליו כותבים ,והשני הנתון ששולחים למפתח. פונקציה ששמה ,inUSBהזהה במבנה שלה לפונקציה ,Inp הפונקציה מקבלת נתון אחד המייצג את מספר המפתח בבקר ממנו קוראים .הפונקציה מחזירה נתון ,בגודל בית ,שהוא הנתון שנקלט במפתח. דוגמת הקוד שמופיעה באיור 13כתובה בשפת ,Cזהו קוד תקני המתאים למהדר .Microsoft Visual C++ 2008 Express Edition דוגמת הקוד מראה פנייה למפתח P1ו P2-של הבקר כדי לגרום ל 10-הבהובים בכל אחד מן המפתחים וקריאה של נתונים מהמפתחים P0ו P3-כדי להציגם 10 ,פעמים ,על צג המחשב. את סביבת העבודה Microsoft Visual C++ 2008 Express Editionאפשר להוריד חינם מן האתר: http://www.microsoft.com/express אפשר להוריד את קובץ הדוגמה מן האינטרנט בכתובת: http://galium.co.il/vbe/download/download_package.rar השלב האחרון בכתיבת התכנית הוא הקוד שמוצג באיור .13 איור :15דוגמה לקוד תכנית בשפת Cהפונה להתקן USBהמשמש כמפתח קלט/פלט מהנעשה במגמות הטכנולוגיות 27 .5פונקציה שמה ,outUSBהזהה במבנה שלה לפונקציה .Outp הפונקציה מקבלת שני נתונים ,הראשון הוא מספר המפתח בבקר שאליו כותבים ,והשני הנתון ששולחים למפתח. איור :16עיצוב טופס הממשק של תוכנה המממשת ממשק קלט/פלט מבוסס USB Visual Basic כתיבת הקוד בשפת למימוש קלט/פלט למפתח מעיון באיור 14עולה שכדי לכתוב תכנית בשפה עלית להפעלת להתקן חומרה דרך ממשק ,USBיש לבצע פנייה ,באמצעות קוד מתאים ,למערכת ההפעלה ,שתפנה להתקן החומרה דרך ממשק ה .USB-כדי להקל על התקשורת בין היישום בשפת Visual Basicלבין מערכת ההפעלה ,נשתמש בקובץ הספרייה ( dll file) MCHID.dllקובץ זה נכתב על ידי חברת microchip לשם למטרה זו. בשלב הבא בכתיבת הקוד ניצור קובץ כותרת בשם mcHIDInterface.vbהמשמש כמתאם בין הקוד הנכתב לשם ביצוע פעולות מול מפתח ה USB-לבין הפעלתו בפועל על ידי קוד תוכנה הכתוב בקובץ הספרייה .MCHID.dllבדרך זו אפשר להציג לתלמיד קוד קצר ופשוט הדומה במבנה שלו לקובץ המוכר לו מן העבודה מול התקני קלט/פלט מבוססי .LPT קובץ הכותרת mcHIDInterface.vbמורכב מ: .6פונקציה ששמה ,inUSBהזהה במבנה שלה לפונקציה ,Inp הפונקציה מקבלת נתון אחד המייצג את מספר המפתח בבקר שממנו קוראים .הפונקציה מחזירה נתון ,בגודל בית, שהוא הנתון שנקלט במפתח. השלב האחרון בכתיבת התכנית הוא הקוד שמוצג באיור .15 דוגמת הקוד מראה כיצד פונים למפתח P1ו P2-של הבקר וכן כיצד קוראים נתונים מן המפתח P0ו P3-כדי להציג את המידע על צג המחשב. מצורף להסבר זה דוגמת קוד שנכתב בשפת Visual Basic המתאים למהדר החדש של חברת מיקרוסופט Microsoft Visual .Basic 2008 Express Edition את סביבת העבודה Microsoft Visual Basic 2008 Express Editionאפשר להוריד חינם מן האתרhttp://www.microsoft. : com/express אפשר להוריד את קובץ הדוגמה מן האינטרנט בכתובת: http://galium.co.il/vbe/download/download_package.rar סיכום לסיכומו של מסמך זה והנלווים אליו ובנימה קצת אישית. פיתוח המצורף היה לי אתגר לא קטן .התמודדתי עם נושא שלא הכרתי קודם לכן ,למדתי אותו לעומק ,הבנתי את המורכבות של פיתוח תוכנה המאפשרת פנייה משפה עילית למפתח USBויצרתי תוכנה המאפשרת לתלמיד פנייה פשוטה למפתח USBכתחליף לפנייה למפתח LPTשעתיד להיעלם בשנים הקרובות. שאלות והערות אשמח לקבל בדוא"ל gherman@walla.co.il .1קוד היצרן VIDוקוד המוצר PIDהמאפשר לנו לזהות את התקן החומרה שלנו מבין כלל התקני ה USB-המחוברים למחשב. .2שני מערכים בגודל 32בתים מטיפוס בית ( )Byteהקרויים בשמות BufferInו .BufferOut-מערכים אלו משמשים לקליטה ושידור של הנתונים (חבילות המידע) בין המחשב להתקן. רשימת מקורות בן-דוד ,ג' ( . )2005תכן התקני ,USB2.0הוצאת המחבר. Himpe, V. (2006). Visual Basic for Electronics Engineering .3הכרזה על מספר רב של פונקציות המצויות בקובץ הספרייה .MCHID.dll Applications. Elektor. .4פונקציה ששמה initializationUSBהמאתחלת את התקשורת מול ההתקן. Axelson, J. (2006). USB Complete: The Developer’s Hyde, J. (1999). USB Design by Example. Intel. Guide. Lakeview Research.