আমি এর উত্তর দিতে পারি।
sudo chown root.gpio /dev/mem
এই মালিক এবং গোষ্ঠীর পরিবর্তন /dev/mem
করতে root
এবং gpio
যথাক্রমে।
sudo chmod g+rw /dev/mem
তারপরে গ্রুপটি পড়ার জন্য এই /dev/mem
বিষয়টিতে অ্যাক্সেস দেয় ।
/dev/mem
বস্তু মূলত সিস্টেমে সমগ্র মেমরির স্থান। এর অর্থ এখন গ্রুপ gpio
এবং এর মধ্যে থাকা সবাই মেমরির জায়গাতে পড়তে এবং লিখতে পারে।
এখন, মেমরি স্পেসে সিপিইউ রেজিস্টার সহ অনেকগুলি জিনিস রয়েছে। আপনি যখন জিপিআইও পিনগুলি টগল করেন, আপনি এই নিবন্ধগুলির মধ্যে একটিতে কিছুটা পরিবর্তন করছেন। কিকারটি হ'ল, আপনার অবশ্যই নিশ্চিত হওয়া উচিত যে আপনি এটি সঠিকভাবে করেছেন বা খারাপ সিস্টেমে আপনার সিস্টেমে ঘটতে পারে।
পুরো মেমরির স্থানটি সুরক্ষিত করতে, জিপিআইও বিটগুলির সাথে আমাদের কাজ করতে হবে এমন মেমরির অংশগুলি ম্যাপ করা শক্তিগুলি /dev/gpiomem
। এটি কার্যকরভাবে মুখোশ / মেমরির বাকী অংশগুলি অ্যাক্সেস থেকে রক্ষা করে এবং কেবলমাত্র জিপিআইও বিটগুলি অ্যাক্সেস করতে দেয়। এটি জিপিআইও মেমরির ঠিকানাগুলিতে অ্যাক্সেসের অনুমতি দেয় এবং মেমরির অন্য কোনও অংশকে মঞ্জুরি দেয় না যেমন মেমরির অন্য কোনও প্রোগ্রাম দ্বারা বর্তমানে ব্যবহৃত হচ্ছে।
বাস্তবে, এটি জিপিআইও স্টাফগুলিতে অ্যাক্সেসের অনুমতি দেওয়ার জন্য সুরক্ষা এবং সিস্টেম উভয়ই স্থিতিশীলতা সুরক্ষা উভয় ক্ষেত্রে একটি গর্ত প্রবাহিত করে, পাশাপাশি বাকী স্মৃতিতে, তবে কেবল জিপিআইও গ্রুপের ব্যবহারকারীদের, যা পাই এর সদস্য।
ভবিষ্যতে, ড্রাইভার যেমন bcm2835
লাইব্রেরিরwiringPi
আরও আপডেট হবে (কিছু আপডেট ইতিমধ্যে ঘটছে) এবং সেই সরঞ্জামগুলির উপরে নির্মিত অ্যাপগুলি আরও আপডেট হবে এবং ভবিষ্যতে, আশা করি মূলত এই সমস্ত জিপিআইও ঝামেলা হবে উধাও হয়ে যায়।
ততক্ষণে আপনার দুটি পছন্দ রয়েছে, পড়া / লেখার /dev/mem
জন্য গোষ্ঠীটি খুলুন gpio
বা মূল হিসাবে চালিত করুন, যার সমস্তটিতে সম্পূর্ণ পঠন লিখন রয়েছে/dev/mem
।
আশা করি তা উপলব্ধি করে।
এখনও এখনও বেশ কয়েকটি সমস্যা রয়েছে যেখানে আপনার এখনও চালানো দরকার root
। উদাহরণস্বরূপ, node-red-contrib-dht-sensor
মডিউলটি ব্যবহার করে node-dht-sensor
যা বিসিএম 2835 এর উপর নির্ভর করে। এটি সেগ-ফল্টস /dev/gpiomem
হিসাবে ব্যবহার করছে কারণ এতে কিছু বাগ রয়েছে এখনও node-dht-sensor
বা ততক্ষণে /dev/gpiomem
বা তারা যেভাবে একসাথে কাজ করছে। আমি জানি না কোনটি, তবে শেষ পর্যন্ত এটি কার্যকর হয়ে যাবে। যখন বিসিএম 2835 'নন-রুট' হিসাবে চালিত হয় এবং /dev/gpiomem
উপস্থিত থাকে, এটি /dev/gpiomem
পরিবর্তে ব্যবহার করার চেষ্টা করে /dev/mem
, তাই /dev/mem
গোষ্ঠীটিতে খোলার ফলে gpio
কোনও লাভ হয় না। হতাশাজনক।