আমি এর উত্তর দিতে পারি।
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কোনও লাভ হয় না। হতাশাজনক।