মাইক্রোকন্ট্রোলার প্রোগ্রাম ফ্ল্যাশ মেমরি ব্যবহারকারীর কনফিগারেশন সংরক্ষণের জন্য ব্যবহার করা যেতে পারে?


9

অনেক মাইক্রোকন্ট্রোলার, যেমন পিআইসি 18 এফ এর ফ্ল্যাশ প্রোগ্রাম মেমরি থাকে: "ফ্ল্যাশ প্রোগ্রামের মেমরিটি স্বাভাবিক অপারেশনের সময় পাঠযোগ্য এবং লিখিত হয়"। এর অর্থ কি আমি প্রোগ্রাম মেমোরিতে কিছু ব্যবহারকারীর কনফিগারেশন সঞ্চয় করতে পারি?

উত্তর:


12

হ্যা, তুমি পারো. আমি অনেকবার এটি করেছি।

তবে পৃথক EEPROM ব্যবহারের সাথে সম্পর্কিত কিছু ত্রুটি রয়েছে:

  1. প্রোগ্রাম ফ্ল্যাশ মেমরিতে আজীবন লেখার সংখ্যা ডেটা EEPROM এর তুলনায় উল্লেখযোগ্যভাবে কম।

  2. প্রসেসর মুছে ফেলার সময় এবং দুপুরের খাবার খেতে বের হবে।

  3. প্রোগ্রাম ফ্ল্যাশ ব্লকগুলি মুছে ফেলা হয়। আপনি কেবল একটি একক বাইট আপডেট করতে পারবেন না। আমি এটি মোকাবেলায় সাধারণত একটি ব্লক ক্যাচিং স্কিম ব্যবহার করি।


নিখুঁত, আপনি একরকম জানেন যে আমার প্রশ্নটি সত্যই "কেন EEPROM এর প্রয়োজন যখন আপনি প্রোগ্রাম এবং ব্যবহারকারী উভয় ডেটার জন্য প্রোগ্রাম মেমরি ব্যবহার করতে পারেন" :)
ছাত্র 1

অলিন, ফার্মওয়্যারের নতুন সংস্করণ পিআইসিতে জ্বললে সমস্ত ফ্ল্যাশ কি মুছে যায়? ফার্মওয়্যার ডাউনলোডের সময় ফ্ল্যাশ-এ থাকা ব্যবহারকারী কনফিগারেশন (বা ক্যালিব্রেশন ডেটা) রোধ করার জন্য কি কোনও ভাল উপায় আছে? এটি ফার্মওয়্যার উন্নয়নের সময় সুবিধার্থে convenience আমি ধারণা করব যে ব্যবহারকারীর কনফিগারেশনটি খুব শেষ ব্লক বা ফ্ল্যাশে সংরক্ষণ করা হবে।
নিক আলেক্সেভ

6
@ নিক: এটি আপনি যে পিক প্রোগ্রামারটি ব্যবহার করছেন এটি নির্ভর করে। আমার সমস্ত সহ অনেকেই প্রচুর পরিমাণে মুছে ফেলেন, তাই ক্রমাঙ্কণের ডেটা মুছে ফেলা হবে। আমি কয়েকটি অনুষ্ঠানে একটি বিশেষ প্রোগ্রামিং অ্যাপ লিখেছি যা ক্রমাঙ্কণের ডেটা পড়ে, প্রচুর পরিমাণে মুছে ফেলেছিল, তারপরে স্বাভাবিক প্রোগ্রামিং প্রক্রিয়ার অংশ হিসাবে ক্যালিগ্রেশন ডেটা আবার লিখেছিল। কিছু মাইক্রোচিপ প্রোগ্রামার প্রোগ্রাম মেমরির কেবলমাত্র কিছু অংশ আপডেট করতে সক্ষম হতে পারে। মনে রাখবেন আপনি যদি কোড সুরক্ষা চালু করেন তবে প্রোগ্রামারকে অবশ্যই একটি বাল্ক মুছতে হবে।
অলিন ল্যাথ্রপ

নন-হার্ভার্ড প্রসেসরগুলিতে (আমি এমএসপি ৪৩০ নিয়ে ভাবছি) আপনি কোডটি র‍্যামে অনুলিপি করতে পারবেন এবং র‌্যামে ঝাঁপিয়ে পড়তে পারবেন এবং ফ্ল্যাশ রাইটিং / ইরিজ সংঘটিত হওয়ার সময় চালাতে পারবেন। আমি এটি কোনও বুটলোডারের জন্য ব্যবহার করেছি, একই সাথে একটি রেডিও থেকে নতুন ডেটা লিখতে এবং গ্রহণ করতে।
markrages

@ মার্ক: হ্যাঁ, এটি পিআইসি 32 তেও কাজ করে, যেখানে র‌্যাম থেকে কার্যকর করাও সম্ভব। আসলে, এটি দ্রুত।
অলিন ল্যাথ্রপ

6

অনেকগুলি পিক 18 এর আকার 1K অবধি EEPROM মেমরি রয়েছে। দুর্ভাগ্যক্রমে PIC18F46J50 আপনি উল্লেখ করেন না। যদি EEPROM উপলভ্য থাকে তবে আপনার ডেটার জন্য এটি যথেষ্ট পরিমাণে বড় হলে এটি আরও ভাল পছন্দ, কারণ EEPROM এ সর্বনিম্ন 1,000,000 মুছা / লেখার চক্র রয়েছে এবং ফ্ল্যাশটি কেবল 10,000 টি।

পিআইসি 18, অন্যান্য মাইক্রোকন্ট্রোলারগুলির মতো, হার্ভার্ড আর্কিটেকচার নামে পরিচিত যা ব্যবহার করে, অর্থাত্ প্রোগ্রাম এবং ডেটার জন্য শারীরিকভাবে পৃথক ঠিকানাযোগ্য অঞ্চল রয়েছে (যেমন আপনার কাছে একটি প্রোগ্রামের ঠিকানা 4 এবং একটি ডেটা ঠিকানা 4 থাকতে পারে এবং সেগুলি এক নয়)। সুতরাং আপনি সি বা অ্যাসেম্বলি ভাষাতে সাধারণ পদ্ধতি ব্যবহার করে ফ্ল্যাশ মেমরিটি পড়তে বা লিখতে পারবেন না।

পরিবর্তে, পিক 18 পরিবারে, আপনি টিবিএলপিটিআর নামে একটি 22-বিট রেজিস্ট্রারে একটি সূচনা ঠিকানা সেট আপ করেছেন। ফ্ল্যাশ থেকে বাইটগুলি পড়তে, আপনি একটি টিবিএলআরডি নির্দেশ ব্যবহার করেন। পাঠ্যের পরে ঠিকানাটি স্বয়ংক্রিয়ভাবে বৃদ্ধি বা হ্রাস করার একটি বিকল্প রয়েছে যা আপনাকে ম্যানুয়ালি করতে হবে না।

ফ্ল্যাশ মেমোরিতে লিখতে, আপনাকে প্রথমে লেখা হবে এমন ফ্ল্যাশ মেমরির এক বা একাধিক 64-বাইট ব্লক মুছতে হবে। টিবিএলপিটিআরে আবার সূচনা ঠিকানা স্থাপনের পরে এবং মুছা অপারেশন শুরু করার জন্য অন্য কয়েকটি রেজিস্টারে মানগুলি অন্তর্ভুক্ত করার পরে, বাধাগুলি অক্ষম করা হয় এবং তারপরে আপনাকে অবশ্যই 0x55 লিখে একটি রেজিস্টারে 0xAA লিখতে হবে; এটি মুছে ফেলা কমান্ডটি আনলক করে এবং ঘটনাক্রমে স্মৃতি মোছা থেকে ভুল কোড রোধ করার জন্য এটি প্রয়োজন। অবশেষে মুছে ফেলতে কমান্ডটি কার্যকর করা হয় এবং তারপরে পুনরায় সক্রিয়করণ বাধা দেয়।

ফ্ল্যাশ মেমরিতে লেখা মুছে ফেলার অনুরূপ, ব্লকের আকারটি আরও ছোট except লিখনটি টিবিএলডাব্লিউটি নির্দেশ ব্যবহার করে কার্যকর করা হয়, যা টিবিএলআরডি নির্দেশের মতো স্বয়ংক্রিয় বৃদ্ধি / হ্রাসও দেয় allows

কনফিগারেশন ডেটা সাশ্রয় করার পাশাপাশি, ফ্ল্যাশ মেমরিতে লেখার মাধ্যমে "ফার্মওয়্যার ওভার দ্য এয়ার" নামে পরিচিত যা ব্যবহার করে ফিল্ডে তাদের ফার্মওয়্যার আপডেট করা যায়। আপনার কাছে ফার্মওয়্যারের একটি নির্দিষ্ট ব্লক থাকা দরকার, সাধারণত প্রোগ্রাম মেমরির শুরুতে, এটি একটি ব্লুটুথ মডিউল, ওয়াই-ফাই, সেলুলার মডিউল, এমনকি একটি তারযুক্ত সংযোগ থেকে আপডেট গ্রহণ করতে পারে এবং একটি নির্দিষ্ট পয়েন্টের উপরে ফ্ল্যাশ আপডেট করতে পারে প্রোগ্রামটি (যেমন একটি "বেড়া") নতুন কোড সহ। আপডেটটি সম্পূর্ণ হওয়ার পরে, একটি রিসেট শুরু করা হয়, এবং নতুন কোডটি ব্যবহার করা হয়।

পিআইসি পরিবারের পাশাপাশি আরও অনেক মাইক্রোকন্ট্রোলারের কাছে তাদের ফ্ল্যাশ মেমরি আপডেট করার ক্ষমতা রয়েছে; কাজটি সম্পাদনের জন্য বেশিরভাগ কনফিগারেশন রেজিস্টার, একটি ঠিকানা পয়েন্টার এবং বিশেষ নির্দেশাবলীর সংমিশ্রণ ব্যবহার করুন।


সেই "ফার্মওয়্যার ওভার এয়ার" পদ্ধতিটি খুব আকর্ষণীয় দেখায়। এটি কি সিস্টেম প্রোগ্রামিং (আইএসপি) এর প্রয়োজনীয়তা সরিয়ে দেয়?
ছাত্র 1

@ ছাত্র 1 এটি কোনও আইএসপি ইন্টারফেসের মাধ্যমে চিপের প্রাথমিক প্রোগ্রামিংয়ের প্রয়োজনীয়তা সরিয়ে দেয় না, কারণ পরে আপনাকে আপডেটগুলি পরিচালনা করতে সক্ষম হতে আপনাকে চিপটিতে কিছু ফার্মওয়্যার লাগাতে হবে। আরডুইনো বোর্ডগুলিতে ব্যবহৃত এটিমেগা মাইক্রোকন্ট্রোলারদের ইতিমধ্যে বুটলোডার নামে এই ধরণের ফার্মওয়্যার রয়েছে, যার কারণে আপনাকে আরডুইনোতে স্কেচ ডাউনলোড করতে কোনও আইএসপি ইন্টারফেস ব্যবহার করার দরকার নেই। তবে আপনি যদি নিজেই বুটলোডার আপডেট করতে চান তবে এর জন্য একটি আইএসপি ইন্টারফেস দরকার। এই বুটলোডারটি কেবলমাত্র ইউএসবি-র মাধ্যমে আপডেটগুলি পরিচালনা করে, সুতরাং এটি সত্যই "এয়ারের উপরে ফার্মওয়্যার" নয়।
tcrosley
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.