كيف تتواصل البرامج الثابتة مع الأجهزة الإلكترونية لأداء عملياتها؟

StackOverflow https://stackoverflow.com/questions/1761334

  •  21-09-2019
  •  | 
  •  

سؤال

تأتي جميع الأجهزة الإلكترونية تقريبًا مزودة ببرامج ثابتة.أعلم أنه تم تخزينه في ROM (ذاكرة القراءة فقط) لذا يصبح غير متطاير (لا يلزم وجود مصدر طاقة لمنع مسح المحتويات مثل ذاكرة الوصول العشوائي)

ما أريد أن أعرفه هو "كيف تتواصل شركة Firmwares للأجهزة الإلكترونية لأداء عملياتها؟" دعنا نقول أن هناك بكرة صغيرة ..بضغطة زر كيف يتحرك؟هل يمكن لأحد أن يشرح ما هو موجود في الخلف، لتحقيق ذلك..أعتقد أن الأمر قد يتطلب شرحًا موجزًا ​​قليلاً لتفكيكه.

وما هي اللغة الأكثر شيوعًا المستخدمة لترميز البرامج الثابتة؟

هل كانت مفيدة؟

المحلول

تحتوي الأجهزة الحديثة مثل التي تصفها على برنامج مخزن في ذاكرة القراءة فقط (ROM) وكمبيوتر صغير متعدد الأغراض (CPU) ينفذ هذا البرنامج.

تقرأ وحدة المعالجة المركزية المعلومات من ذاكرة القراءة فقط (ROM) عن طريق إعداد العناوين على ناقل العناوين الخاص بها ثم تطلب من ذاكرة القراءة فقط (ROM) إخبارها بالقيمة المخزنة في ذلك الموقع.هناك شيء مثل نبضة القراءة التي يتم رفعها (على سطر منفصل) لإخبار ذاكرة القراءة فقط (ROM) بجعل القيمة قابلة للوصول على خطوط ناقل البيانات.إنها القراءة باختصار.

لجعل الأجهزة تفعل شيئًا ما، تقوم وحدة المعالجة المركزية بشكل أساسي بتنفيذ نوع من عمليات الكتابة.إنها تضع قيمة ، وهي مجرد مجموعة من البتات إذا كنت ترغب في النظر إليها بهذه الطريقة ، على ناقل العنوان لتحديد جهاز معين وربما يعمل على هذا الجهاز ، ثم يرفع خط إشارة آخر يقول "اكتب!" يستجيب الجهاز الذي يتعرف على عنوانه على ناقل العنوان لتلك الإشارة من خلال قبول البيانات من ناقل البيانات ثم إجراء أي وظيفته.عادة، سيتم توصيل إحدى بتات ناقل البيانات داخل جهاز الإخراج إلى مرحلة إخراج الطاقة، أي.ترانزستور أقوى من تلك المستخدمة فقط للحساب، وسيقوم هذا الترانزستور بتوصيل بعض الأجهزة الكهربائية بتيار كافٍ لجعلها تتحرك/تتوهج/أيًا كان.

يتم ترميز الأجهزة الصغيرة والرخيصة بلغة التجميع لتوفير تكاليف ذاكرة القراءة فقط (ROM)؛بكميات صناعية، حتى الكميات الصغيرة من الذاكرة يمكن أن تؤثر على السعر.لغة التجميع خاصة بوحدة المعالجة المركزية؛تحظى بعض الرقائق التي تسمى "8051" و"6502" و"Atmel (شيء أو غيره)" بشعبية كبيرة.قد تكون البرامج الثابتة الخاصة بالأجهزة الأكبر حجمًا ذات المتطلبات الأكثر تعقيدًا مكتوبة بلغة C أو لهجة تشبه لغة C، مما يجعل البرمجة أسهل قليلاً من المجمّع.حتى أن الشركات الكبيرة تقوم بتشغيل كود C++.جمعت، بطبيعة الحال.

نصائح أخرى

توجد في معظم الأنظمة عناوين ذاكرة خاصة تُستخدم للإدخال/الإخراج.تؤدي القراءة والكتابة على هذه العناوين إلى تنفيذ بعض الوظائف بدلاً من مجرد نقل البيانات.في أنظمة x86 توجد أيضًا تعليمات خاصة للإدخال والإخراج في الداخل والخارج لذلك.

أبسط حالة تسمى الإدخال/الإخراج المتوازي العام (GPIO)، حيث يمكنك قراءة البيانات أو كتابتها مباشرة من/إلى الأطراف الكهربائية الخارجية الموجودة على الجهاز.هناك العديد من عناوين الذاكرة، تسمى السجلات، حيث يمكنك قراءة البيانات من المنفذ (الجهد بالقرب من 0 = 0، بالقرب من جهد الإمداد = 1)، حيث يمكنك كتابة البيانات إلى المنفذ، وحيث يمكنك تحديد ما إذا كان طرفًا معينًا أم لا الإدخال (البت المقابل عادة هو 0) أو الإخراج (البت هو 1).كل متحكم لديه GPIO.

لذا، في المثال الخاص بك، يمكن توصيل الزر بدبوس تم ضبطه على الإدخال، وهو ما يمكن أن يستشعره البرنامج.عادةً ما يتم ذلك كل 10 مللي ثانية ولا يتفاعل إلا إذا كانت له قيمة ثابتة لعدة قراءات، وهذا ما يسمى الارتداد.ثم سيكتب 1 إلى بعض المخرجات، والتي عبر بعض الترانزستورات للتضخيم يمكن أن تقود المحرك.إذا شعرت أنك قمت بتحرير المفتاح، فيمكنها إيقاف تشغيل المحرك مرة أخرى عن طريق كتابة 0.وهكذا، سيتم تشغيل هذا البرنامج حتى تقوم بإيقاف تشغيل الجهاز.

هناك الكثير من أجهزة الإدخال/الإخراج الأخرى لأغراض أخرى مع مئات السجلات للتحكم فيها.إذا كنت تريد رؤية المزيد، يمكنك الاطلاع على ورقة البيانات الخاصة ببعض وحدات التحكم الدقيقة.على سبيل المثال، هنا ورقة بيانات ATtiny4/5/9/10, ، وحدة تحكم صغيرة جدًا من عائلة Atmel AVR.

تتم كتابة معظم البرامج الثابتة اليوم بلغة C، باستثناء الأجهزة الأصغر حجمًا والقليل من التعليمات البرمجية الخاصة للتعامل مع عمليات إعادة التعيين والمقاطعات، والتي تتم كتابتها بلغة التجميع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top