একটি কম্পিউটারে আপনি একটি নির্দিষ্ট 'মেমরি ঠিকানায়' লিখুন। এই ঠিকানাটি একটি হার্ডওয়্যার অ্যাড্রেস হিসাবে সিস্টেমের দ্বারা স্বীকৃত এবং উপযুক্ত হার্ডওয়্যার উপযুক্ত মান গ্রহণ করে বা প্রেরণ করে।
বেশিরভাগ হার্ডওয়্যার সিস্টেমে অনেকগুলি বিভিন্ন রেজিস্টার থাকে যা সেট বা পড়তে পারে। কারও কারও কাছে কিছু থাকতে পারে, কারও কাছে অনেকের থাকতে পারে। এই নিবন্ধগুলি অবিচ্ছিন্ন পরিসরে বিভক্ত করা হবে। একটি বেস পয়েন্টার রেঞ্জের প্রথমটিকে নির্দেশ করে এবং আপনি লিখুন, উদাহরণস্বরূপ, বেস_পয়েন্টার +1 সহ দ্বিতীয় পোর্ট। আপনার দরকার নেই, আপনি কোনও পয়েন্টারে সরাসরি লিখতে পারেন, তবে একটি অফসেট ব্যবহার করা জিনিসগুলি কাজ করা সহজ করে তোলে।
রাস্পবেরি পাই 0x20000000 ঠিকানায় বিপুল পরিমাণ হার্ডওয়্যার নিবন্ধগুলি স্বীকৃতি দেয়। বিসিএম 2708_PERI_BASE + 0x101000 থেকে ঘড়ির সিস্টেমগুলি নিয়ন্ত্রণ করে এমন একটি রেজিস্টার রেজিস্ট্রেশন করা হয়। I2S ঘড়ি নিয়ন্ত্রণ করে এমন রেজিস্টারগুলি বিসিএম 2708_PERI_BASE + 0x101000 + 0x26 এবং 0x27 ব্যবহার করে লিখিত সেই ব্লকের 38 তম এবং 39 তম নিবন্ধ
আপনি কেবল ঘড়ির মান পরিবর্তন করতে পারবেন না, আপনাকে ঘড়িটি অক্ষম করতে হবে, মানগুলি পরিবর্তন করতে হবে এবং এটি পুনরায় চালু করতে হবে।
এই উত্তরটি যদি খুব মৌলিক হয় তবে আমার ক্ষমা চাই। এক্ষেত্রে আপনার প্রশ্নটি সত্যই শক্তিশালী, সৌভাগ্য। আপনি এই লিঙ্ক সহায়ক হতে পারে
আপডেট: এমএমএপ ব্যবহার করুন এবং মেমরিতে সরাসরি লিখবেন না কেন?
যখন কোনও প্রোগ্রাম মেমরিের ঠিকানাগুলি চালিত করে তখন মনে করে যে এটি প্রকৃত ঠিকানা নয়, মেমরি পরিচালক দ্বারা সেগুলিকে আসল ঠিকানায় ম্যাপ করা হয়। এটি একটি প্রোগ্রামকে অন্যটিকে প্রভাবিত করতে সক্ষম হতে বাধা দেয়। দুটি প্রক্রিয়া পুরোপুরি আনন্দের সাথে তাদের নিজের ঠিকানায় 1234 পড়তে এবং লিখতে পারে এবং মেমরি পরিচালকটি দুটি অবস্থান সম্পূর্ণ আলাদা রাখবে।
হার্ডওয়্যার পোর্টগুলি তবে সম্পূর্ণ শারীরিক ঠিকানায় রয়েছে। তবে আপনি তাদের সরাসরি লিখতে পারবেন না কারণ মেমরি পরিচালক আপনার ঠিকানাটি নেবে এবং এটি আপনার ব্যক্তিগত স্মৃতি অঞ্চলে ম্যাপ করবে।
লিনাক্সে / ডেভ / মেম একটি ' ক্যারেক্টার ডিভাইস ফাইল যা কম্পিউটারের মূল স্মৃতির একটি চিত্র '
আপনি যদি এটি কোনও ফাইলের মতো খোলেন তবে আপনি এটি ফাইলের মতো পড়তে এবং লিখতে পারেন। সরবরাহকৃত নমুনায় میم_ফডি হ'ল একটি ফাইল হ্যান্ডেল যা খোলার / দেব / মেম্বের ফলে ঘটে
জীবনকে আরও সহজ করে তুলতে পারে এমন আরেকটি সিস্টেম হ'ল মেমোরিতে একটি ফাইল ম্যাপ করার ক্ষমতা এবং মেমরির মতো এটিতে লেখা। সুতরাং আপনার যদি এমন কোনও ফাইল থাকে যা আপনি বিভিন্ন নির্দিষ্ট বিটগুলি পড়তে বা লিখতে চান তবে ফাইল পয়েন্টারটিকে পিছনের দিকে এবং সামনে সরানোর পরিবর্তে আপনি এটিকে মেমরির কোনও অবস্থানে ম্যাপ করতে পারেন এবং তারপরে সরাসরি এটি লিখতে পারেন যেন এটি মেমরি।
সুতরাং এই নমুনায় কোডটি শারীরিক মেমরির জন্য একটি হ্যান্ডেল তৈরি করছে, এটি ডিস্কে থাকা কোনও ফাইল হিসাবে এবং তারপরে সিস্টেমটিকে এটি স্মৃতি হিসাবে মনে করে চিকিত্সা করতে বলছে। ভার্চুয়াল মেমরি ম্যানেজারকে গোল করে পেতে এবং কোনও আসল শারীরিক ঠিকানায় লিখতে গেলে কিছুটা বিশৃঙ্খল, তবে প্রয়োজনীয়। 0x20000000 মানটি মনে হয় এটি একটি লাল রঙের হারিং ring কোডটি এই ঠিকানাটিকে একটি ইঙ্গিত হিসাবে প্রস্তাব দিচ্ছে, সিস্টেমটি এখানে মানচিত্র / দেব / মেমের দরকার নেই, যদিও এটি সম্ভবত রয়েছে। সাধারণত মান নালটি পাস হয়ে যায় এবং সিস্টেমটি ফাইল হ্যান্ডেলটিকে যে ঠিকানায় ভাল বলে মনে করে ম্যাপ করে।
এখন শারীরিক স্মৃতি প্রক্রিয়াকরণগুলিতে ভার্চুয়াল মেমরির সাথে ম্যাপ করা হয় এবং আপনি যেখানে আশা করেন সেখানে পড়ে এবং লেখায়।
তথ্যসূত্র:
http://www.kernel.org/doc/man-pages/online/pages/man2/mmap.2.html
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=44&t=8496&p=104359
https://superuser.com/questions/71389/what-is-dev-mem