অপ্রত্যাশিত শক্তি ব্যর্থতার বিরুদ্ধে আমি কীভাবে এসডি কার্ডকে সুরক্ষা দেব?


18

আমি এমন একটি ডিভাইসে কাজ করছি যা কোনও এসডি কার্ডে ডেটা সঞ্চয় করতে মাইক্রোচিপ এমডিডিএফএস লাইব্রেরি ব্যবহার করে। লগার প্রতি মিনিটে সর্বাধিক 1 এন্ট্রি (56bytes) হারে ডেটা লগ করবে। সমস্যাটি হ'ল ডিভাইসটি যে কোনও সময় শক্তি হারাতে পারে, সম্ভবত লেখার অনুক্রমের মাঝখানে। আমি ভাবছি যে আমার ডেটা দুর্নীতির বিরুদ্ধে রক্ষা করার সবচেয়ে ভাল উপায়। আমি খুঁজে পেয়েছি যে বিদ্যুৎটি নষ্ট হয়ে যাওয়ার পরে যদি ফাইলটি খোলা থাকে তবে শেষ ফাইল-বন্ধের পরে ফাইলটিতে লেখা সমস্ত ডেটা নষ্ট হয়ে যায়। আমি জানি না লেখার ক্রমের মাঝখানে শক্তিটি হারাতে থাকলে এটি একই হয় কিনা I

যেহেতু লেখার পদ্ধতিটি খুব ঘন ঘন ঘটে না তাই আমি ফাইলটি খুলতে, ডেটা লিখতে এবং তারপরে ফাইলটি বন্ধ করে দিতে পারি, প্রতিটি সময় ডেটা লগইন হয়। এই পদ্ধতির সময়ের সাথে সাথে এসডি কার্ডের ক্ষতি হবে?

আরেকটি পদ্ধতির ফাইলটি উন্মুক্ত রাখা হতে পারে তবে প্রতি 10 বা 50 লেখার পরে আমি ফাইলটি বন্ধ করে আবার খুলতে পারি।

আমি মেমরিতে ডেটা বাফার করতে পারতাম, তারপরে কোনও কেবিটি বা আরও কিছু সময় পরে মাঝে মাঝে ডেটা ফ্লাশ করতে পারি।

আমার সর্বশেষ ধারণাটি ছিল, আমার সার্কিটে, আমি একটি বড় ক্যাপাসিটার যুক্ত করতে পারতাম যা ফাইলটি দ্রুত বন্ধ করার পরে বিদ্যুৎ সংযোগ বিচ্ছিন্ন হওয়ার পরে আমার পিক / এসডি কার্ডে দীর্ঘকাল শক্তি সরবরাহ করবে। এই পদ্ধতির সাথে সমস্যাটি হ'ল ফাইলটি বন্ধ করতে এবং / বা ডেটা সংরক্ষণ করতে যে সময় লাগে এটি অত্যন্ত অসঙ্গত। আমার বোধগম্যতা থেকে, এই সময়টি ফাইলটিতে থাকা কোনও ফ্ল্যাশ পৃষ্ঠায় বর্তমান স্থানের উপর নির্ভর করে।

যাইহোক, আপনি বলছি কি পরামর্শ?


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

উত্তর:


16

আপনি যখন কোনও ফাইলে ডেটা লেখেন তখন কয়েকটি জিনিস ঘটতে পারে। আমি ডেটা সুরক্ষিত হওয়ার জন্য যে ক্রমটি ঘটতে হবে তা বর্ণনা করতে যাচ্ছি, প্রয়োজনীয়ভাবে গ্রন্থাগার কল নয়।

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

আপনার লেখার সময় হ্রাস করা হচ্ছে

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

  • আপনার ডেটা এন্ট্রিগুলির আকারটি এমন করুন যাতে কোনও সেক্টরে পূর্ণসংখ্যার এন্ট্রি মাপসই হয়। আমি আপনার এন্ট্রিগুলি 64 বাইটে ছড়িয়ে দেব। যদিও এটি কম দক্ষ, এটি আপনাকে দুটি সেক্টর পঠন-পরিবর্তন-লেখার প্রয়োজন থেকে বিরত রাখবে।

  • FSwrit ফাংশনের একটি বৈকল্পিক তৈরি করুন যা আপনাকে পুরো সেক্টর লিখতে দেয়। আপনি যদি এসআরএমে পুরো সেক্টরটি রাখেন তবে আপনার চক্রটি "পড়ুন-পরিবর্তন করুন" থেকে "পরিবর্তিত লেখায়" চলে যায়

যতটা সম্ভব আপনার পিআইসি এবং এসডি পাওয়ার চালিয়ে যান

  • বড় ক্যাপাসিটারগুলি ভাল। 470uF আপনাকে লেখার চক্র শেষ করার জন্য পর্যাপ্ত পাওয়ারের চেয়ে বেশি শক্তি দেওয়া উচিত।

  • আপনার শক্তির উত্সটি আপনার ব্যাক-আপ ক্যাপাসিটরের থেকে বিদ্যুৎ স্যুট করবে না তা নিশ্চিত করুন! প্রয়োজনে একটি ডায়োড যুক্ত করুন।

আপনি কখন ক্ষমতার বাইরে চলে যান তা জানুন

  • একটি বড় পাওয়ার সাপ্লাই ক্যাপ আপনাকে এসডি কার্ডের সাহায্যে জিনিসপত্র জড়ানোর জন্য 10 মিমি বা আরও বেশি দেয় তবে আপনার ভাগ্য টিপবেন না। আপনার পাওয়ার উত্সটি এখনও ভাল কিনা তা দেখতে আপনার মাইক্রোকন্ট্রোলারে একটি পিন ব্যবহার করুন এবং যদি আপনার উত্সটি মারা যায় তবে কোনও লেখা শুরু করবেন না।

তথ্যের জন্য ধন্যবাদ। খুব উপকারী. আমি এটি দিয়ে কী করতে পারি তা দেখতে পাচ্ছি ...
PICyourBrain

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

এছাড়াও, আপনি যদি ফাইলটিতে সমস্ত শূন্য লিখেন। আপনার প্রকৃত ডেটার সমাপ্তি কোথায় তা আপনি কীভাবে ট্র্যাক করবেন? আপনি কি কেবল শুরুতে সমস্ত ডেটা পড়েন এবং শূন্যগুলির স্ট্রিংটি খুঁজে পান?
পিকইউরব্রেইন

1
আপনি যদি FAT16 ব্যবহার করেন তবে আমি বিশ্বাস করি আপনি 2GB এর মধ্যে সীমাবদ্ধ। আমি বিশ্বাস করি যে এসডি / এমএমসি কার্ডের একটি "মুছে ফেলুন" ফাংশন রয়েছে যা এমডিডিএফএস লাইব্রেরিতে প্রয়োগ করা হবে বলে মনে হয় না। আমি আমার এসডি কার্ড প্রকল্পের জন্য একটি মালিকানাধীন কোড লাইব্রেরি ব্যবহার করেছি, তাই আমি কোনও কোড উদাহরণ ভাগ করতে পারি না। শেষ তথ্যটি সন্ধান করার জন্য, আপনাকে সমস্ত তথ্য 0 রেকর্ডে না পাওয়া পর্যন্ত আপনাকে পড়তে হবে read যদি আপনার ডেটা রেকর্ডটি সব 0 এর হতে পারে তবে আমি কিছু অ-শূন্য তথ্য বা কিছু প্রকারের ডিলিমিটার যুক্ত করার পরামর্শ দেব।
ডাব্লু

6

এসডি কার্ডগুলি (বা এমএমসি, কমপ্যাক্টফ্ল্যাশ, ইত্যাদি) নিয়ে এখনও উল্লেখ করা হয়নি এমন একটি বিষয় হ'ল যখন কোনও এসডি কার্ড হোস্টের কাছে 512-বাইট সেক্টরের সাধারণ সংগ্রহ হিসাবে উপস্থিত হতে পারে যা পড়তে এবং যথেচ্ছ ক্রমে লিখিত হতে পারে, সাধারণত ফ্ল্যাশ ডিভাইসগুলি 528-বাইট পৃষ্ঠাগুলি গ্রুপগুলিতে সঞ্চয় করুন যা প্রতিটি বড় না হলেও 32 কেবি হয় এবং সমর্থিত কেবলমাত্র অপারেশনগুলি হয় অন্যথায় ফাঁকা পৃষ্ঠাতে লিখতে হয়, বা একটি সম্পূর্ণ গোষ্ঠী মুছে ফেলা হয়। এই সীমাবদ্ধতা মোকাবেলা করতে, একটি এসডি কার্ডের নিয়ামক একটি টেবিল রাখবেন যা কোনও যৌক্তিক খাতকে কোনও শারীরিক পৃষ্ঠায় ম্যাপ করতে দেয়। যখন কোনও সেক্টর লেখার জন্য অনুরোধ করা হবে, নিয়ামকটি চিপের কোথাও একটি ফাঁকা পৃষ্ঠা খুঁজে পাবেন এবং সেক্টরের প্রশ্নের সাথে নতুন ঠিকানা সহ ম্যাপিংটি আপডেট করবেন। যদি ফাঁকা পৃষ্ঠাগুলি দুষ্প্রাপ্য সরবরাহে হয় বা অন্য সময়ে হয়,

এর তাত্পর্যটি হ'ল কোনও নির্দিষ্ট যৌক্তিক খাতে লেখার কাজটি অনেকগুলি যৌক্তিক খাত থেকে প্রাপ্ত ডেটাগুলিকে ঘিরে। যদি সেই প্রক্রিয়াতে কিছু ভুল হয়ে যায় তবে এর ফলে কোনও স্বেচ্ছাসেবীর সেক্টরের দুর্নীতি হতে পারে - কেবল খাতটিই কার্ডটি লিখতে বলা হয়নি। একটি ভাল এসডি কার্ড নিয়ামক এমনভাবে ডেটা-শ্যাফলিং অপারেশনগুলি সম্পাদন করার জন্য ডিজাইন করা উচিত যাতে কোনও ডেটা-শাফলের সময় শক্তি হারিয়ে গেলে, অপারেশনের কোন অংশটি সম্পন্ন হয়েছিল এবং কোনটি ছিল না তা নির্ধারণ করতে সক্ষম হবে এবং ফলস্বরূপ অপারেশন সঠিকভাবে শেষ করতে সক্ষম হবেন। দুর্ভাগ্যক্রমে, আমার কোনও ধারণা নেই যে কেউ কীভাবে বলতে পারবেন যে কোনও ডিসকাউন্ট স্টোরের picked 5 টি এসডি কার্ড সে ক্ষেত্রে নেওয়া ভাল হবে কিনা।

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


এটি একটি খুব অন্তর্দৃষ্টিপূর্ণ মন্তব্য।
ফ্রেড বাসেট

5

আমি এসডি-তে ডেটা যাচাই করার প্রয়োজন হলে সঠিক যাচাই করতে কোনও ধরণের চেকসাম ব্যবহার করার পরামর্শ দেব ।


3

সম্ভবত স্পার্কফুনের এই সুপারক্যাপাসিটারটি সমস্যার সমাধান করবে।


2
এটি পিআইসির স্মৃতি ধারণ করবে তবে এটিতে 10uA সর্বাধিক বর্তমান রেটিং রয়েছে। আমি মনে করি না আপনি এতটা স্রোতে কোনও এসডি কার্ডে লিখতে পারেন।
ডাব্লু 5 ভিও

1
ধারণাটি যদিও ভাল। একটি দ্রুত অনুসন্ধান পাওয়া ইলিনয় ক্যাপাসিটর ( illinoiscapacitor.com ) 8 F থেকে supercapacitor আপ হয়েছে এবং 4 উ: এই এক, অথবা একটি ব্যাটারি, মাইক্রো নিচে একটি লিখতে এবং বন্ধ জিনিষ শেষ করার সুযোগ দিতে হবে যুক্ত করা স্রোত সমর্থন করতে সক্ষম সুন্দরভাবে যদি মূল শক্তির উত্স ব্যর্থ হয়।
ফোটন

3

যেহেতু লেখার পদ্ধতিটি খুব ঘন ঘন ঘটে না তাই আমি ফাইলটি খুলতে, ডেটা লিখতে এবং তারপরে ফাইলটি বন্ধ করে দিতে পারি, প্রতিটি সময় ডেটা লগইন হয়। এই পদ্ধতির সময়ের সাথে সাথে এসডি কার্ডের ক্ষতি হবে?

যেকোন ইঞ্জিনিয়ারিং সমস্যার মতো, আপনার এখানে ট্রেডঅফস মোকাবেলা করতে হবে।

কোনও ডেটা একেবারেই হারিয়ে যাওয়ার বিষয়টি কি সমালোচনামূলক? তারপরে আমি উপরেরটি করতাম কার্ড নষ্ট করার চেয়ে ডেটা হারিয়ে আপনার আরও ক্ষতি হয়েছে। কার্ডটি নষ্ট হয়ে যাওয়ার আগে আপনি কতবার সেই অপারেশন করতে পারবেন তা নির্ধারণ করতে আপনি এক ধরণের স্ট্রেস টেস্ট করতে চাইতে পারেন। কার্ডটি অপ্রয়োজনীয় হওয়ার আগে যদি আপনি যে সময় নিয়েছিলেন, আপনি যদি এটি শীতল হন এবং কার্ডটি পরিবর্তন করার আগে এটি গ্রহণযোগ্য সময় বলে মনে হয়, আমি সেই পথটি দিয়ে যাব।


1

আপনি যদি কেবল ডেটা সঞ্চয় করতে চান তবে কোনও ফাইল সিস্টেমের দরকার নেই। লেখার কাজটি সরাসরি এসপিআইয়ের মাধ্যমে ব্লক ঠিকানাটি নির্বাচন করে করা হবে। এটি করার মাধ্যমে আপনি লেখার সময়টি ন্যূনতম করুন এবং ডেটা দুর্নীতির ঝুঁকি।

এমনকি বিদ্যুৎ হ্রাস এবং ভাগ্যের কোনও ক্ষতি না হলেও আপনি কেবল একটি প্রবেশিকা হারাবেন (যা সম্ভবত কোনও সিস্টেমে গ্রহণযোগ্য)।

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