سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 - نسخة قابلة للطباعة +- الفريق العربي للهندسة العكسية (https://www.at4re.net/f) +-- قسم : منتديات الهندسة العكسية - Reverse Engineering Forums (https://www.at4re.net/f/forum-4.html) +--- قسم : إكتشاف آفاق جديدة بعلم الهندسة العكسية - Discover New Prospects in RCE (https://www.at4re.net/f/forum-44.html) +--- الموضوع : سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 (/thread-794.html) الصفحات:
1
2
|
سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 - hsn93 - 19-05-2019 السلام عليكم. المقدمة: قبل ان ابدا بالدرس. هناك قفزة كبيرة من المصطلحات الى المايكروكونترولر لكن المنتدى مهتم بالهندسة العكسية ولو بدات بتفاصيل الكترونيات فستكون السلسلة خارج محتوى الصرح. لذلك قد نرجع للاكترونيات في دروس قادمة في المستقبل حين نرى اهميتها او يتم طلبها بشكل خاص (اذا كانت لي المقدرة والعلم). لذلك احب ان ابدأ بالدخول للمايكروكنترولر وبالطبع اشهر لوح اليوم هو الاردوينو .. باعتقادي ان الدرس موجه لمبرمجين اجهزة الكمبيوتر (الافضل انهم جربوا اردوينو) لذلك ان كنت تبحث عن دروس اردوينو ابحث عنها في الانترنت فهي متوفرة بكثرة .. ففي هذا الدرس سنحاول ان لا نجعل الدرس "لاردوينو" بل القليل من "فهم عمل الاردوينو". شخصيا ارى ان الاردوينو منصة جميلة للبدأ ولكنها كالعادة تخلق غمامة تجعل مستخدمها لا يعلم ماهية \ قدرات \ كيفية .. المايكروكونترولر . ملاحظة: تذكر ان اغلب المايكروكونترولر في الاجهزة الحديثة يستخدم معمارية ARM .. الاردوينو < اقصد uno R3 > يستخدم معمارية AVR .. ولكن من المفيد الخوض في احدهما سيعلمك الاساسيات عن الاخر ايضا. بالنسبة لي لست محترفا في الاثنان هناك الكثير من المحترفين للavr في منتدى avr freaks المتطلبات: - لوح اردوينو اونو atmega328 سعره 5 دولار انصحك باقتناءه للتجربة. او اشتره من متجر اردوينو لدعمهم. - حمل برنامج اردوينو بالنسبة ليي حملته من windows app store ---------------------------------------------------------------- لندخل في صلب الموضوع: طبعا بعد تنزيل برنامج الاردوينو واستخدام لوح اردوينو معه اول درس في الانترنت او من file > examples هو برنامج blink ملاحظة: blink هو ومض الليد في لوح الاردوينو وهو برنامج يعادل hello world مما لابد منه ، الخوض في القليل من التفاصيل: لوح اردوينو UNO R3 طبعا، لاني لم اخض في تفاصيل الكترونية سنرى اللوح من الخارج فقط من دون تفاصيل، (قد نخوض في ذلك مستقبلا..) 1- atmega328 هو المعالج الذي نضع برنامجنا فيه ومتصل بالموصلات connectors على جانب اللوح 2- كرستالة بسرعة 16 ميغا هيرتز (تعطي المعالج ومضات او معدل ساعة clock rate) 3- معالج اخر يحتوي على خاصية usb ليتواصل مع الكمبيوتر . الهدف منه ان يكون جسر بين الكمبيوتر والمعالج الاول مثل تحميل البرامج على المعالج. 4- زر اعادة reset الهدف منه اعادة تشغيل المعالج atmega328 5- موصلات icsp connector .. للبرمجة in circuit serial programming (قد نتحدث عنها لاحقا). 6- كرستالة للمعالج الثاني atmega16u2 7- دائرة كهربائية للباور لتزويد اللوح بالطاقة. طبعا هناك led عند موصل رقم 13 وستستخدمه في برنامجك الاول blink ... لغة الاردوينو ؟ ماهي: سترى واجهة اردوينو وهي في الحقيقة مبنية على مشروع اسمه processing الواجهة غريبة نوعا ما، تستخدم الc++ ولكن هناك غلاف wrapping .. مثلا لو ترون: - void setup - void loop في الحقيقة هما بداخل main function وندائهم كالتالي << اضغط على الرابط لترى
ماهو الdelay: ايضا، لو ترى هناك delay من المفترض ان نسميها delay_ms ليكون الامر اوضح في النهاية هي مثل
وهي فعليا ابقاء المعالج مشغولا لفترة معينة بما اننا نعرف معدل السرعة وسرعة عملية تنفيذ امر معين .. مثل n < 1437 و n++ .. اذا كنت مهتم لكيفية ذلك (بصراحة لست خبيرا لعلمي المحدود في الاسمبلي وسرعة كل امر تنفيذي للاسف) تستطيع ان تحمل avrlibc وترى مجلد avr-libc-2.0.0\include\util حيث يحتوي على delay_basic.h و delay.h.in حسنا، اعتقد اني عقدت الموضوع بالنسبة لثاني درس ولكن وكما ارى الهدف هو فهم الاشياء وليس التطبيق فقط. ولست ارى الخوض مرة اخرى في شيء مشروح كثيرا مفيدا لي ولكم. ما يبقى شرحه من الصورة الاولى هو pinMode و digitalWrite .. سنبقيه لدرس اخر.. كيف يتم التحميل: في الحقيقة لاعلم لي بكل التفاصيل ولكن الجواب قبل التحميل هناك ادوات toolchain مستخدم وهي محولات برمجية في المسار: \hardware\tools\avr\bin وتستطيع ان ترى كيف يتم بناء الملف عبر file -> preferences طبعا هي محولات يمكن ندائها لتحويل اللغة لملف hex والذي هو بمثابة ملف تنفيذي .. انظر لهذا الموضوع 1- http://nuft.github.io/avr/2015/08/02/avr-hex-programming.html 2- https://rajeshkovvuri.wordpress.com/2011/10/28/anatomy-of-avr-hex-file/ ثم يتم تحميلها عن طريق برنامج اخر اسمه avrdude وهو مشروع مفتوح المصدر شرح مبسط باللغة الاجنبية تحميل برنامج الى الatmega328 هذا ستراه حينما تفعل الخاصية verbose في الاردوينو تحميل البرنامج من الatmega328 الى الكمبيوتر
من هنا نرى -v verbose لترى اكثر مخرجات من البرنامج -p تحدد الpart او اسم القطعة -P البورت او المخرج في حالتي COM3 -c البروقرامر حاليا هو نفسها القطعة الموجودة بجانب الusb وتتواصل مع برنامج صغير bootloader في الاردوينو -U لاخذ الملف من الاردوينو من flash area r: read hex.hex اسم الفايل ممكن اي اسم ^ اقرا الشرح لavrdude المبسط في الاعلى -F امر تخطي اذا لم يتوافق الdevice signature بالنسبة لavrdude كان مختلف عندي فاضطررت لاستخدامه والنتيجة ملف هكس كان بداخل الكونترولر (لا تسالني عن debugging it ليس اختصاصي للاسف ) جربت الاتي لاعلم بصحة المخرج: ملاحظة جانبية: ذكرت سابقا ان هناك كونترولر اخر بجانب مدخل الusb وهو يعمل كمحمل للبرنامج.. لن يعمل هذا البرنامج بدون بوت لودر في الكونترولر الهدف atmega328 - target microcontroller وفي الحقيقة من لحظة اقلاع المايكروكونترولر فهو يدخل على البوتلودر ثم يرى اذا كان هناك جهاز كبيوتر يريد ان يتواصل معه كبوتلودر ليبقى داخل البوتلودر وينتظر الاوامر والى فانه يسلم زمام الامر للبرنامج الموجود في منطقة اخرى من الفلاش اذا وجد.. ملاحظة اخرى: الموضوع متقدم نوعا ما لكني اردت جذب انتباه المهتمين للهندسة العكسية فقط.. اتمنى تعليقاتكم في خياري في وضع هذا الموضوع من الدرس الثاني.. ام اني يجب ان ارجع للاساسيات (اصلا ليس لي علم بتطبيق الهندسة العكسية كـsoftware debugging الا القليل) الخاتمة: اتمنى ان تسامحني عزيزي القارئ على تشتت المووضوع اتمنى ان يكون مفيد (سيكون ان جربت بنفسك). RE: سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 - a7mad elsh3rawy - 19-05-2019 هل الاردوينو بيتم برمجته مره واحده فقط (مثل اسطوانه ال cd ) ولا ممكن اشيل البرمجه القديمه و اثبت عليه برمجه جديده ؟ RE: سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 - hsn93 - 19-05-2019 (19-05-2019, 04:36 AM)a7mad elsh3rawy كتب : هل الاردوينو بيتم برمجته مره واحده فقط (مثل اسطوانه ال cd ) ولا ممكن اشيل البرمجه القديمه و اثبت عليه برمجه جديده ؟ اهلا، يمكنك برمجته مراات عديدة جدا .. ولكن ليس بعدد غير منتهي قد تصل ل 10,000 مرة من التعديلات في الكود. اقرا عن eeprom RE: سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 - a7mad elsh3rawy - 19-05-2019 تمام هتابع معاك ممكن تقولى اشترى ايه بالظبط يعني انا مش محتاج اشترى حاجه غير الاردوينوا ولا هحتاج اشترى معاه حجات تانيه توصيلات مثلا ؟! ولو الاردوينوا انواع او موديلات ممكن تقولى على اسم الموديل اللى اشتريه شكرا RE: سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 - hsn93 - 19-05-2019 (19-05-2019, 04:12 PM)a7mad elsh3rawy كتب : تمام هتابع معاك يعتمد على الهدف اذا كنت تريد تعلم الاردوينو فانا انصحك بدخول سلسلة دروس مرتبة افضل من مواضيعي المشتتة .. مثل هذه: http://www.coursat.org/subject-arduino بالنسبة للمقتنيات: انصحك بعدة اونو مثل هذه اذا مهتم بالاتصال بالانترنت او الشبكة فـ esp مشهور جرب هذه المجموعة: - esp32 - node-mcu - esp8266 RE: سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 - Gu-sung18 - 21-05-2019 بارك الله بك دروس جميله، ما رأيك ان تتطرق الى طرق تنقيح الانظمة الموجودة على الـ microcontroller اقصد Hardware-Based Software Debugging، شرح بروتوكولات مثل JTAG و UART و I2C و SPI ، خصوصاً JTAG لان هذه البروتوكولات تلعب دور مهم واساسي في تنقيح الانظمة المضمنة والروبوتات والروترات واجهزة انترنت الاشياء واجهزة الكونسول مثل xbox و Playstation كذلك الحصول على الـFirmwares في حال لم توفر الشركة الـFirmwares للتحميل من النت (الروبوتات وما شابهها) او كان مشفر فيمكنك عمل Dump للذاكرة إقتباس :قبل ان ابدا بالدرس. هناك قفزة كبيرة من المصطلحات الى المايكروكونترولر لكن المنتدى مهتم بالهندسة العكسية ولو بدات بتفاصيل الكترونيات فستكون السلسلة خارج محتوى الصرح.اذا كانت تلك الدروس من الاساسيات ونقصها يؤدي الى مشكلة معرفية فمن المستحسن نشرها فاولا واخيراً هذا القسم هو نواة لقسم جديد وعلى الاغلب سيكون نواة لقسم الهندسة العكسية للهاردوير اذا توفرت له الدروس اللازمة كاساس RE: سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 - hsn93 - 21-05-2019 (21-05-2019, 02:48 AM)Gu-sung18 كتب : بارك الله بك دروس جميله، ما رأيك ان تتطرق الى طرق تنقيح الانظمة الموجودة على الـ microcontroller اقصد Hardware-Based Software Debugging، شرح بروتوكولات مثل JTAG و UART و I2C و SPI ، خصوصاً JTAG لان هذه البروتوكولات تلعب دور مهم واساسي في تنقيح الانظمة المضمنة والروبوتات والروترات واجهزة انترنت الاشياء واجهزة الكونسول مثل xbox و Playstation كذلك الحصول على الـFirmwares في حال لم توفر الشركة الـFirmwares للتحميل من النت (الروبوتات وما شابهها) او كان مشفر فيمكنك عمل Dump للذاكرة شكرا جزيلا. هذا ما كنت اريد الدخول فيه، كل درس ساكتبه ساراعي اضافة الدروس الاساسية اذا حسست انها لازمة.. كنت ساشرح UART , I2C , SPI (ليست لدي خبرة في الjtag) ولكن اعتقد ان اهم الثلاثة المذكورين في الdebugging هو uart . jtag قد ابدا في تعلمها لاحقا واكتب درس \ تجربتي .. تعديل : هذا ماحاولته هنا في التعامل مع بوتلودر الاردوينو وسحب الذاكرة منه لملف هكس ثم اوبج دمب .. الا اني لست بصاحب خبرة في الامر انظر للكوماند OBJ-DUMP اعلاه في الواقع اول مرة استخدمه هو حين كتبت الدرس نسال الله التوفيق. RE: سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 - pharaon - 21-05-2019 سؤال طيب..الاوردينيو انا بستخدمه علشان ابرمج به شيبات اجهزة تانية ولا مجرد انى ابرمجه هو واخليه ينفذ البرنامج..وايه اوجه الاستفادة من اولاردينيو لما ابرمجه RE: سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 - Gu-sung18 - 21-05-2019 (21-05-2019, 06:41 PM)pharaon كتب : سؤال طيب..الاوردينيو انا بستخدمه علشان ابرمج به شيبات اجهزة تانية ولا مجرد انى ابرمجه هو واخليه ينفذ البرنامج..وايه اوجه الاستفادة من اولاردينيو لما ابرمجه يمكنك صنع اجهزة من خلاله سواء اجهزة بسيطة او معقدة مثل الروبوتات، الـArduino يعتبر العقل لهذه الاجهزة. (21-05-2019, 06:41 PM)pharaon كتب : وايه اوجه الاستفادة من اولاردينيو لما ابرمجه الـArduino تستفاد منه انك تتمكن من صنع اجهزة تنفذ الاوامر التي انت برمجتها، نحن ابتعدنا عن عالم الحواسيب هنا لعالم الالكترونيات (وربما الالكترونيات+الميكانيك في حال اردت صنع روبوت) يوجد الكثير من المشاريع التي يمكنك الاطلاع عليها، مثلاً هذ المشروع المبني على اردوينو والذي يراقب الباب اذا فتح هذا الباب يرسل لك رساله على الماسنجر تبع الفيسبوك.
بالمناسبة ارجوا الالتزام بالكتابة باللغة العربية الفصحى والابتعاد عن العامية. RE: سلسلة الالكترونيات - مقدمة المايكروكونترولر - 2 - night - 21-05-2019 بالمناسبة , هذا موقع مفيد جدا للقطع والأجزاء الممكن إضافتها إلى مشروع أردوينو http://shieldlist.org/ مثال : قطعة التعامل مع الـ GPS http://shieldlist.org/sparkfun/gps |