יום שבת, 18 במאי 2013

BeagleBone Development Environment


במאמר הראשון בנושא הצגתי את הסביבת הפיתוח שמגיעה עם הלוח, Cloud 9 זו סביבה באמת מעניינת עם רעיון לא רע בכלל, אבל הסביבות הותיקות הרבה יותר מתוחכמות ממנה, כנראה שצריך לתת לה עוד זמן, נחזור למקורות ונבנה את הסביבה ע"ג Eclipse ובעזרת קוד ב C / C++ נשחק עם הלוח, בדומה למאמר הקודם גם פה נתעסק עם הקבצים בספריית Sys שבעזרתם נשלוט על הרכיבים בלוח.

שימו לב - סביבת ה Host הוקמה ע"ג Fedora 14.

הקמת ה Host

לפני שנתחיל עם ה Eclipse חשוב מאוד להתקין את ה ToolChain של Arm בשביל שנוכל לבנות תוכניות שתואמות את הארכיטקטורה של הלוח, באתר של Angstrom אפשר להוריד את ה ToolChain שמתאים ל Distribution, או ניתן להוריד מ  CodeSourcery את ה ToolChain הכללי מכאן , אבל זה לא ממולץ ועלול לגרום לתקלות בגלל הפער בין ה  ToolCahin שעל הלוח מול ה ToolChain שב Host, מומלץ להשתמש ב ToolChain שזהה למה שמותקן על הלוח, נפתח את הקובץ:

#: tar -xvf /home/fedora/download/angstrom-gnueabi-arm.tar


נפרוס את הקובץ לאיזה תיקייה שנרצה, לאחר מכן נוסיף את התיקיית Bin בתיקייה שיצרנו להגדרות ה PATH של המערכת:

#:export PATH=/opt/angstrom/arm/bin/:$PATH

נפתח פרויקט חדש ב Eclipse , צריך לשנות את הגדרות ה Compiler ל Compiler שמגיע עם ה ToolChain, זה לא נגמר רק עם ה Compiler  חשוב לשנות גם את ה Linker וה Assembler , נלחץ על Properties->C/C++ Build->Settings ונשנה מ gcc הקלאסי ל arm-angstrom-linux-gnueabi-gcc כפי שניתן לראות בדוגמה:





Remote Control

על מנת שנוכל לעבוד מרחוק יש להוריד Plugin עבור ה Eclipse שנקרא Remote System Explorer , יש ללחוץ על Install New Software בתפריט ה About ולבחור את הרכיבים כפי שמופיע בדוגמה:



לאחר ההתקנה יש להפעיל את ה Eclipse מחדש, ללחוץ על בתפריט Window ->Show View -> Other וללחוץ על תיקיית  Remote Settings ולבחור ב Remote Systems.



נוספת תגית Remote Systems בסביבה של Eclipse צריך להוסיף חיבור חדש על מנת שנוכל לדבר עם הלוח בעזרת SSH כפי שניתן לראות ברצף התמונות הבאות:







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




Remote Debugging

ניתן לבצע Remote Debugging בעזרת GDB שמגיע עם ה ToolChain שבלוח ועם זה שהורדנו למחשב ה Host, העבודה עם הכלי מתחלקת ל 2 חלקים, החלק הראשון נקרא gdbserver שאותו מפעילים על התוכנה שנמצאת בלוח בעזרת חיבור ה SSH כפי שניתן לראות בדוגמה:

#: gdbserver 192.168.1.7:12345 simpleApp

החלק השני הוא להגדיר את ה gdb על ה Host ב Eclipse, יש ללחוץ על תגית Run->Debug Configuration ולייצר קונפיגורציה חדשה עבור Remote Application.



לאחר מכן יש ללחוץ על תגית Debugger ולשנות ל Debugger שהגיע עם ה ToolChain:



אפשר להתחיל לעשות Debug על הלוח:


קוד

זהו הסביבה מוכנה לעבודה, הקוד הראשון שנכתוב מאוד פשוט, ע"ג ה Beaglebone יש 4 Leds מובנים ואיתם נשחק, בגדול אנחנו הולכים לפתוח קובץ לכתוב לתוכו ערך ולסגור אותו בעזרת שפת C כפי שניתן לראות בדוגמה הבאה:


#include <stdio.h>
#include <stdlib.h>


int main(void) {

FILE *handler = NULL;

//location of the led2 file in sys folder
char *ledFlocation = "/sys/class/leds/beaglebone::usr2/brightness";

//just a flag for toggle
int i = 0;

while(1)
{
//if we get the handler
if((handler = fopen(ledFlocation,"r+")) != NULL)
{
if(i == 0)
{
//light on
fwrite("1",sizeof(char),1,handler);
i=1;
}
else
{
//lights off
fwrite("0",sizeof(char),1,handler);
i = 0;
}

}
//close the file - very imported
fclose(handler);
sleep(1);
}
return 0;
}


סיכום:

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

בהצלחה...

אין תגובות:

הוסף רשומת תגובה