سؤال

أنا جديد إلى حد ما برمجة برنامج تشغيل جهاز Linux، ولكن لأغراض تصحيح الأخطاء، أود أن أكتب دفق البيانات مباشرة إلى ملف. أو ربما يجب أن أكون سؤالا بشكل مختلف:

لدي نظام على رقاقة، حيث توفر وحدة واحدة دفق البيانات. يجب أن يتم البدء في الوحدة النمطية مع عنوان الكتابة. بدلا من كتابة البيانات في الذاكرة، أود إعادة توجيه دفق البيانات إلى هذا العنوان إلى ملف. ويمكن أيضا أن يتم ذلك عبر مستخدمي المستخدمين، لأن الكتابة إلى ملف في Kernelspace غير مستحسن.

هل يمكن لشخص ما رسم تقريبا كيفية القيام بذلك؟

شكرا، ستيفان

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

المحلول

من سؤالك، أفترض أن هذه وحدة تحكم الأجهزة مباشرة في المخزن المؤقت للذاكرة. ستحتاج دائما إلى المخزن المؤقت ذاكرة وسيطة في الطريق إلى الملف، ولكن هناك عدة طرق لإدارة هذا في برنامج تشغيل جهازك.

تتمثل Simplest Case في تطبيق برنامج تشغيل جهاز الحرف، والذي يقوم بإرجاع البيانات للمستخدمين عبر عملية قراءة. يمكن أن يكون تطبيق المستثمرين الخاص بك الذي يكتب إلى الملف بسيطة cat. وبعد سوف تكتب الوحدة النمطية الخاصة بك في مخزن مؤقت للذاكرة مخصصة بواسطة برنامج التشغيل الخاص بك، و read سوف تقوم الطريقة بنسخ البيانات من هذا المخزن المؤقت إلى المخزن المؤقت للمستخدمين. هذا مغطى به DMA-Mapping.txt في وثائق النواة وفي Linux Device Drivers. (LDD).

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

إذا كان لدى برنامج التشغيل الخاص بك أكثر أنواع الاتصالات لتنفيذه، فقد ترغب في استخدامه Netlink..

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