PROGMEM ব্যবহারের প্রভাবগুলি কী কী?


12

প্রচুর পরিমাণে পাঠ্য ভেরিয়েবলের সাথে, আমি এগুলি PROGMEM ব্যবহার করে ফ্ল্যাশ মেমরির মধ্যে সঞ্চয় করা প্রয়োজনীয় বলে মনে করেছি । আরডুইনোতে ফ্ল্যাশ (PROGMEM ব্যবহার করে) বনাম SRAM বনাম EEPROM- এ বড় আকারের ভেরিয়েবলগুলি সংরক্ষণ করার ইতিবাচক এবং নেতিবাচক পরিণতিগুলি কী কী?

উত্তর:


10

এটিএটিমেগা 328 এ ফ্ল্যাশ, ইপ্রোম এবং এসআরএএম এর দ্রুত তুলনা করা হচ্ছে, বর্তমান অনেক আরডুইনো বোর্ডের মাইক্রোকন্ট্রোলার (ডিউ, লিওনার্দো, পুরানো আরডুইনোস এবং কিছু অন্যান্য সামঞ্জস্যপূর্ণ বোর্ড বাদে)।

  • ফ্ল্যাশ: 10,000 লিখুন / চক্র মুছুন। অ্যাক্সেস দ্রুত, তবে এসআরএএম এর চেয়ে ধীর। এর মাধ্যমে কোড অ্যাক্সেস করে PROGMEM
  • ইপ্রোম: ১০,০০,০০০ চক্র লিখুন / মুছুন। অ্যাক্সেসটি স্যালুওউউ, মিলিসেকেন্ডে। তুলনামূলকভাবে জটিল অ্যাক্সেস পদ্ধতি।
  • এসআরএএম: সীমাহীন লিখন / মুছে চক্র। অ্যাক্সেস খুব দ্রুত, 2 ঘড়ি চক্র। কোড দ্বারা সরাসরি অ্যাক্সেস।

সুতরাং, PROGMEM ব্যবহারের মূল অনুমানমূলক নেতিবাচক পরিণতি হ'ল 10,000 লেখার চক্র সীমা। EEPROM ব্যবহারের মূল নেতিবাচক পরিণতি হ'ল ডেটা পড়ার / লেখার / অনুলিপি কোডের জটিলতা । এসআরএএম, এটি ক্ষমতার খুব সীমাবদ্ধ


আপনি EEPROM অ্যাক্সেস সম্পর্কে তথ্য কোথায় পাচ্ছেন? একটি বিট থেকে খুঁজছি সম্পর্কে , দেখে মনে হচ্ছে EEPROM চিপের মত সার্চ ~ 5 ঘড়ি চক্র মত কিছু নিতে। লেখা ধীর, তবে পড়ছে না।
কনার ওল্ফ

ওপি প্রচুর জিনিস সঞ্চয় করতে চায় ।
অনিন্দো ঘোষ

হ্যাঁ, তবে এটি কি একবার লিখুন, অনেকগুলি পড়ুন, বা বিপরীত? "পাঠ্য ভেরিয়েবল" সম্ভবত এমন কিছু যা সংকলনের সময় নির্দিষ্ট করা হয়, ডিভাইসে পোড়ানো হয় এবং এর পরে কখনই পরিবর্তিত হয় না (যেমন মেনু পাঠ্য বা স্বম্যাট)।
কনার ওল্ফ

আমি পড়তে দোকান হিসাবে "কম্পাইল / আপলোড সময়ে দোকান" প্রশ্ন করেন। যদি কোনও চলক রান সময় / পড়তে লিখতে ব্যবহৃত হয়, অবশ্যই এটি FLASH এ সংরক্ষণ করা উচিত নয়। প্রথমে পুরো পৃষ্ঠাটি মুছে ফেলা ব্যতিরেকে FLASH সংশোধন করা যায় না এমন কি অতিরিক্ত বাধা নেই?
microtherion

... পাঠ্য ভেরিয়েবলগুলি স্ট্রিং ধ্রুবক নয়।
অনিন্দো ঘোষ

2

প্রাথমিক নিদর্শনটি হ'ল আপনি প্রোগ্রামে সঞ্চিত তথ্য পরিবর্তন করতে পারবেন না। স্ট্রিংটি একবারে 1 বাইটে অনুলিপি করা দরকার হওয়ায় আপনি (খুব ছোট) পারফরম্যান্স হিটও নেবেন।

ফ্ল্যাশ পরিধান করা আপনার প্রোগ্রামে পরিবর্তন আনার জন্য (প্রাথমিক) উদ্বেগ নয় কারণ আপনাকে যেভাবেই ফ্ল্যাশ পুনরায় প্রোগ্রাম করতে হবে।

আইডিই 1.x প্রবর্তনের সাথে এফ () ম্যাক্রো অন্তর্ভুক্ত ছিল। এটি প্রোগ্রামে স্ট্রিংগুলি রাখা সহজ করে তোলে।

উদাহরণস্বরূপ ব্যবহারের পরিবর্তে: সিরিয়াল.প্রিন্ট ("হ্যালো ওয়ার্ল্ড!");

আপনি এখন ব্যবহার করতে পারেন:

সিরিয়াল.প্রিন্ট (এফ ("হ্যালো ওয়ার্ল্ড!"));

দ্রষ্টব্য, যে F () কোনও ফাংশন নয়, এটি কেবলমাত্র একটি ম্যাক্রো তাই এর ব্যবহার কিছুটা সীমিত।


1

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

EEPROM সম্পর্কিত - অবিরাম স্টাফের জন্য এটি সংরক্ষণ করার চেষ্টা করুন। আইআইআরসি এসআরএএম / প্রকল্পের মাধ্যমে EEPROM থেকে ডেটা আনতে ধীর। সাধারণত আমি (এবং অন্যরা) EEPROM থেকে ডেটা অনুলিপি করে এসআরএমে (এমনকি সরকারী উদাহরণও এটি ব্যবহার করে) ব্যবহার করার আগে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.