কিভাবে libusb কার্নেল স্টাফ অ্যাক্সেস করতে পারে?


10

আমি যা বুঝতে পারি তা থেকে:

  • সাধারণভাবে বলতে গেলে, কোনও ড্রাইভার কার্নেল স্পেসে চলে এবং ব্যবহারকারীর স্থান থেকে কল করা যায়।
  • কেবল কার্নেল স্পেসের কোডই ইউএসবিকে নিম্ন স্তরের জিনিসগুলিতে কল করতে পারে / ioctl
  • libusb এটি একটি গ্রন্থাগার, সুতরাং এটি সংকলন এবং ব্যবহারকারীর স্পেসে চলবে

তাহলে কীভাবে libusbনিম্ন স্তরের ইউএসবি অর্জন করবে?

উত্তর:


10

Libusb হ'ল USB ডিভাইসগুলির সাথে একইভাবে ইন্টারেক্ট করার জন্য একটি লাইব্রেরি যেমন অভিশাপটি পাঠ্য টার্মিনালের সাথে ইন্টারেক্ট করার জন্য একটি গ্রন্থাগার, ALSA (আরও স্পষ্টভাবে এর libasound উপাদান) অডি ডিভাইসগুলির সাথে যোগাযোগের জন্য একটি লাইব্রেরি, ইত্যাদি ইত্যাদি। কার্নেলটি হার্ডওয়্যার ইন্টারঅ্যাকশন পরিচালনা করে। এটি উপলব্ধ করা ডিভাইস ফাইল যে অ্যাপ্লিকেশনের মাধ্যমে, হার্ডওয়্যার সাথে যোগাযোগ করার জন্য খুলতে পারে read, writeএবং সিস্টেম কলioctl

ioctl এটি একটি সিস্টেম কল: এটি অ্যাপ্লিকেশনগুলিকে (ব্যবহারকারী-স্তরের কোড) মঞ্জুরি দেয় যা কার্নেলের দ্বারা প্রক্রিয়াজাত হয় requests

Libusb অ্যাপ্লিকেশনগুলিকে কলব্যাক ফাংশনগুলি নিবন্ধ করার অনুমতি দেয় যা ডিভাইসটিতে কিছু বলার আছে পরে কার্যকর করা হয়। হুডের নীচে তথ্য প্রবাহের মোটামুটি ওভারভিউ এখানে দেওয়া হয়েছে:

  • বাসে বৈদ্যুতিক সিগন্যাল ইউএসবি নিয়ামকটিতে একটি ইভেন্ট ট্রিগার করে।
  • ইউএসবি নিয়ামক প্রধান প্রসেসরে একটি বাধা সংকেত উত্থাপন করে।
  • প্রসেসর অপারেটিং সিস্টেম কার্নেলের মধ্যে বিঘ্নিত হ্যান্ডলারটি কার্যকর করে।
  • কার্নেল লক্ষ্য করে যে কোনও প্রক্রিয়া বর্তমানে একটি ব্লক করা অবস্থায় রয়েছে read, writeবা ioctlডিভাইস ফাইলে সিস্টেম কল রয়েছে এবং সিস্টেম কলটি ফিরে আসার কারণ ঘটায়।
  • ব্যবহারকারীর জমি প্রক্রিয়াতে, সিস্টেম কল রিটার্ন করলে লাইব্রেরি কোডটি কার্যকর করা হয়।
  • গ্রন্থাগার কোড অ্যাপ্লিকেশন প্রোগ্রামার দ্বারা নিবন্ধিত কলব্যাক ফাংশন সম্পাদন করে।

সুতরাং ইউএসবি ডিভাইসের জন্য ডিভাইস ড্রাইভার লেখার দরকার নেই? (গতি অপ্টিমাইজেশনের জন্য না হলে)
থমাস

@ থমাস আপনি যদি ট্রান্সপোর্ট-ইন্ডিপেন্ডেন্ট: কীবোর্ড, স্টোরেজ, ইথারনেট ইত্যাদি কাঠামোয় প্লাগ করতে চান তবে আপনার কার্নেল ড্রাইভারটি লিখতে হবে অন্যথায়, আমি মনে করি আপনি যদি কেবলমাত্র একটি ইউজারল্যান্ড প্রোগ্রামের বিলম্বিতা বেশি হন তবে আপনার কেবল ড্রাইভার দরকার।
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

যদি কোনও ডিভাইস কম্পিউটার দ্বারা স্বীকৃত না হয় (এর জন্য কোনও ড্রাইভার নেই), তবে কি libusbএটি অ্যাক্সেস করতে সক্ষম হবে?
টমাস

@ থমাস আমি জানি না যে লিবাসব ইউএসবি প্রোটোকলের সমস্ত দিকই মোকাবেলা করতে পারে, তবে নীতিগতভাবে, হ্যাঁ। কোনও ইউজারল্যান্ড প্রোগ্রাম কোনও আরএস 232 সিরিয়াল ডিভাইসের মাধ্যমে যোগাযোগ করতে পারে /dev/ttyS*। ইউএসবি একই নীতি, কেবল দ্রুত এবং আরও জটিল।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

3

লিনাক্স দুটি রিং রিং 0 ব্যবহার করে যার নাম কার্নেল-স্তর, রিং 3 কে ব্যবহারকারী-স্তর বলা হয়। ব্যবহারকারীর থেকে কার্নেলের সাথে সংযোগটি (যেমন আগেই বলা হয়েছিল) সিস্কেলের মাধ্যমে সম্পন্ন হয়েছিল। তাদের মধ্যে গ্রন্থাগারগুলি রয়েছে যেমন ব্যবহারকারীর দেশ থেকে দেখা যায়। সুতরাং স্থায়িত্ব, সুরক্ষা, সিঙ্ক্রোনাইজেশন, সেভ স্পেসিং ইত্যাদির কারণে কার্নেলের সর্বাধিক নিম্ন স্তরের অ্যাক্সেস গ্রন্থাগারগুলিতে প্রয়োগ করা হয়। কার্নেল-ড্রাইভারটি ইউজারল্যান্ডকে বিভিন্ন ইন্টারফেস সরবরাহ করে: (ioctl, sysfs, সকেটস, অক্ষর এবং ব্লক ডিভাইস এবং তাই) ব্যবহারকারী স্পেস ইন্টারফেস । সুতরাং আপনি যদি চান, আপনি নিজেরাই লাইব্রেরি বাদ দিয়ে কার্নেল ড্রাইভারের অ্যাক্সেস বাস্তবায়ন করতে পারেন বা স্থায়ী লিঙ্কযুক্ত লাইব্রেরি সহ আপনার বাইনারি সংকলন করতে পারেন।

একটি ভাল সূচনা পয়েন্ট হ'ল লিবাসব উত্সগুলি পড়া, তারা ভাল নথিভুক্ত।


0

এটি সিস্কল (2) এবং কার্নেল দ্বারা প্রস্তুত ডিভাইস ফাইলগুলি ব্যবহার করে ( /dev/bus/usb/*)


সুতরাং সবকিছু এমনভাবে কাজ করে যে যেমন কার্নেল অজানা ডিভাইসের জন্য একটি বিশেষ ড্রাইভার তৈরি করেছে যা পড়ে এবং লেখাকে গ্রহণ করে? বাধা ইত্যাদি সম্পর্কে কীভাবে আমাদের অবহিত করা হয়?
টমাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.