זקוק לעזרה מקהילה או... למי יש ARM פנוי?

ב־15.2.2009, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים, CppCMS; ‏11 תגובות

בימים אחרונים אני מנסה לתת ל־CppCMS עוד נישה פוטנציאלית והיא מערכות משובצות מחשב. בד"כ שפות כמו php ו־python כבדות עבור מערכות כאלה. פה בדיוק סביבת פיתוח נוחה יכולה לעזור.

בנוסף, קיימים מספר פתרונות דומים בשוק והם Wt ו־Klone. אבל, Klone לא נותן כלים ש־CppCMS נותן ו־Wt בנוי בצורה שלטעמי שגויה -- גישה של מפתח GUI ולא web.

אז, עשיתי כמה שיפוצים ב־CppCMS כך שהוא יוכל לתמוך גם בסביבות משובצות מחשב, ביניהם: ביטול רכיבים מיותרים, למשל, אם בונים CGI טהור, אז אין מרכיב s/f-cgi, ניהול threads וכד'. הוצאה מערכת cache ודחיסה עבור יישומי כאלה כי בד"כ זיכרון הוא יקר ועוד.

לאחר מספר אופטימיזציות, הצלחתי להגיע ליישום בגודל של כ־550K שזה כמעט חצי ממה ש־Wt הצליחו להגיע.

מה נותר? לבדוק את היישום על פלטפורמת ARM אמתית. כיום, כל הבדיקות נעשו בעזרת qemu-arm. לכן, אני זקוק לעזרתכם.

מה מדרש?

כל מי שיש לו גישה ל־ARM עם לינוקס מותקן עליו, אנא עִזרו:

  1. הורידו את הקובץ הבא.‏
  2. העבירו אותו לסביבת ARM שלכם ותפרסו.
  3. תנסו להריץ:

     ‎./hello.dynamic -c config.txt
    

    זהו קובץ ריצה שמקומפל דינאמית רק עם ספריות בסיסיות כמו libstdc++‎. אם הוא לא מצליח בגלל העדר ספריות תנסו:

     ‎./hello.static -c config.txt
    

    בכל מקרה, אמור להתקבל פלט של Headers של cgi ותוכן HTML עצמו.

  4. אם יש אפשרות, אנא בדקו את זמן הריצה עם time.‏
  5. אם במקרה, יש לכם שרת web בסביבה שלכם אני אשמח אם תוכלו להריץ את ה־cgi שבספריה (רק שעדכנו את השם של קובץ ריצה לזה שהצליח (סטטי או דינאמי) בהתאם.

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

תודה רבה, מראש!

תגובות

ik_5, ב־15.2.2009, 0:50

אין לי מחשב מבוסס ARM אבל כל מי שעם אופן מוקו יכול לעזור לך, רק כמה דברים חשובים:

  1. בלינוקס יש 2 סוגי API/ABI עבור ARM צריך לבדוק שאתה מסוגל לעבוד עם שניהם.
  2. בניגוד להפצות לינוקס רגילות, הפצות embedded בנויות אחרת, ולא כל מה שיעבוד לך על מכשיר אחד בהכרח יעבוד על מכשיר אחר (למרות שתאורטית כן), ולכן קח בחשבון שכל הפצת לינוקס ל embedded (ולפעמים גם אותה הפצה) לא תתפקד בצורה זהה (וזה הרבה יותר קיצוני ממחשבי שולחן ושרתים "רגילים").

זה סתם מידע שגיליתי מאנשים שמתעסקים ב embedded.

ארתיום, ב־15.2.2009, 1:06

ברור לי, בעצמי כתבתי קוד עובר arm ב־embedded אבל לא עבור Linux. לכן, חשוב לי להבין במה מדובר.

בסופו של דבר, מה שחשוב זה כיצד לקמפל את הכל. אני צמצמתי את התלויות למינימום: שני ספריות boost ו־cgicc כך שזו ממש לא בעיה לקמפל את הכל לסביבה מתאימה (רק צריך לדעת איך)

דורון, ב־15.2.2009, 10:52

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

אם זה מתאים , אתה יכול ליצור איתי קשר במייל doron AT ofek.biz .

  • דורון
צפריר כהן, ב־15.2.2009, 11:35

מהו הפלט של file על הקובץ?

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

ארתיום, ב־15.2.2009, 11:44

מהו הפלט של file על הקובץ?

‎$ file hello.*c
hello.dynamic: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.1, dynamically linked (uses shared libs), for GNU/Linux 2.4.1, stripped
hello.static: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.1, statically linked, for GNU/Linux 2.4.1, stripped

ארתיום, ב־15.2.2009, 11:45

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

אתה עשית reload לדף או לחצת תצוגה מקדימה?

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

ארתיום, ב־15.2.2009, 12:32

אגב, עוד פרמטר:

readelf -h hello.dynamic  | grep Flags
Flags:     0x2, has entry point, GNU EABI
רני, ב־18.2.2009, 3:19

היי, הרצתי את הסטטי על N810 והוא עובד. ה-time הוא

real 0.115s user 0.008s sys 0.008s

(המעבד הוא 400MHz מסכן)

הדינמי משום מה נכשל על

‎-bash: ./hello.dynamic: No such file or directory

וגם ldd עליו צועק

‎: line 115: ./hello.dynamic: No such file or directory

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

ארתיום, ב־18.2.2009, 10:03

המון תודה!!!

תגיד, האם הקובץ הראשון נתן HTML עם הטקסט hello?

לגבי השני, אתה בטוח שהקלדת את השם נכון? כי זה קצת מוזר.

בכל מקרה המון תודה!

רני, ב־19.2.2009, 23:08

בכיף. אני לא זוכר בדיוק מה הראשון הדפיס, אבל זו היתה בבירור תשובה הגיונית לבקשת http (הדרים ואחריהם קובץ html).

לגבי השני, בדקתי את זה כמה פעמים וגם השתמשתי ב-tab completion, כך שטעות מצידי פחות סבירה; בכל מקרה ldd לא אמור להגיד line 115 אלא

ldd: ./hello.dynamic: No such file or directory

וניסיתי להריץ ldd על עצמו, כך שהוא כן עובד.

ארתיום, ב־20.2.2009, 15:32

תודה רני,

גם דורון אמר על שגיאה דומה.

כנראה אני מקמפל בצורה לא נכונה.

הוסף תגובה:

 
 כתובת דוא"ל לא תוצג
 

ניתן לכתוב תגובות עם שימוש בתחביר Markdown.

חובה לאפשר JavaScript כדי להגיב.

דפים

נושאים