বাধা দেওয়া কি এসপিআই নিরাপদ?


17

আমি আমার ফার্মওয়্যার থেকে একটি মাইক্রোএসডি কার্ডে লিখছি , তবে এটি সর্বনিম্ন অগ্রাধিকারের কাজ, সুতরাং এটি পড়ার / লেখার মাঝখানে থাকা অবস্থায় অন্যান্য কাজগুলিতে বাধাগ্রস্ত হতে পারে।

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

এই কাজটি এখন কীভাবে আমি এসপিআই ব্যবহার করছি? লেখার জন্য পরিস্থিতি কি একই রকম নয় এবং পড়ার জন্য এটি এসপিআই ফিফোর আকারের উপর নির্ভর করে?

উত্তর:


22

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

সচেতন হওয়ার জন্য তিনটি প্রধান সতর্কতা রয়েছে:

  1. সাধারণভাবে, একবার এসপিআই বাসে লেনদেন শুরু হয়ে গেলে, লেনদেনটি সম্পূর্ণ না হওয়া পর্যন্ত বাসের তারের কোনওটিই অন্য কোনও উদ্দেশ্যে ব্যবহার করা যাবে না। সাধারণভাবে, এর অর্থ হ'ল কোনও বিঘ্ন ব্যতীত কোনও এসপিআই বাস ব্যবহার না করতে পারে কেবলমাত্র তখনই যখন বাসটি ব্যবহার করা হবে (ব্যথার কারণে কিছু সময় বাসের একচেটিয়া ব্যবহার সম্ভব হয় এবং মূল ক্ষেত্রে প্রোগ্রামটি অন্য সময়ে একচেটিয়া ব্যবহারে থাকতে পারে)। কোনও ডিভাইসে কোনও লেনদেনের মাঝখানে বাসটিকে "উপেক্ষা" করার জন্য বিশেষ পিনগুলি অন্তর্ভুক্ত করা হয় তবে এ জাতীয় বৈশিষ্ট্যগুলি সহ আমি কোনও ডিভাইস দিয়ে একটি এসপিআই লেনদেন স্থগিত করার চেষ্টা করতে চাই না, অন্য কোনও ডিভাইসের সাথে লেনদেন করার চেষ্টা করি, এবং তারপরে অন্তর্নিহিত কোডটিকে প্রথমে তার লেনদেনটি আবার শুরু করতে দিন। বিঘ্নিত একটি পৃথক এসপিআই বাস ব্যবহার করা ভাল।
  2. কোনও লেনদেন খুব বেশি সময় চলতে থাকলে কিছু ডিভাইস অদ্ভুত আচরণ করতে পারে। কিছু রিয়েল-টাইম ক্লক চিপ, উদাহরণস্বরূপ, সময় / তারিখের নিবন্ধসমূহগুলিকে ডাবল-বাফার করবেন না বরং পরিবর্তে কোনও "সময়-অগ্রিম" ইভেন্টগুলি ল্যাচ করুন যা লেনদেনের সময় ঘটে এবং লেনদেনটি সম্পূর্ণ হওয়ার পরে সেগুলি প্রয়োগ করে। যদি কোনও লেনদেন এত বেশি সময় নেয় যে দ্বিতীয় বারের আগাম ইভেন্টটি উপস্থিত হয়, তবে পরবর্তী ঘটনাটিকে অগ্রাহ্য করা হবে, যার ফলে সময়টি সেই পরিমাণে পিছলে যায়। আমি সত্যই এই জাতীয় ফ্যাশনে একটি চিপ ডিজাইনের কোনও অজুহাত দেখতে পাই না (এমনকি কেউ যদি ডাবল-বাফারিংয়ের ডেটা ব্যয় করতে না চায় তবে উল্লেখ করে যে সফ্টওয়্যারটি তার সমন্বয় নিশ্চিতকরণের জন্য "আপডেট ডিফারাল" যুক্তি যুক্ত করার চেয়ে সস্তা হবে) এবং ঘড়ির ব্যাঘাতের সম্ভাবনা হ্রাস করবে), তবে এই জাতীয় চিপ বিদ্যমান।
  3. কয়েকটি ডিভাইস রয়েছে যা একটি ঘড়ি এবং ডেটা সিগন্যাল ব্যবহার করে তবে ফ্রেমিংয়ের ইঙ্গিত দিতে একটি "বিরতি" ব্যবহার করে। এর মুখোমুখি হওয়া সবচেয়ে সাম্প্রতিক উদাহরণটি ছিল একটি কন্ট্রোলার-প্রতি-বাল্বের LED লাইট স্ট্রিং। আমি বিশেষত এ জাতীয় নকশাগুলি পছন্দ করি না (এটির পাশাপাশি কোনও হস্তক্ষেপ না করে ডেটা তারে টানা তিনটি ক্রমবর্ধমান প্রান্ত ব্যবহার করে ফ্রেমিং ইঙ্গিত করতে পারে) তবে আবার, এই জাতীয় ডিভাইসগুলির উপস্থিতি নেই।

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


3
+1 ভাল! আপনার সমস্ত মতামত / হতাশার সাথে সম্পূর্ণরূপে একমত। এটি অনেক বারও দেখেছি।
ডাঃফ্রিডপার্টস

11

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


সুতরাং আমার একমাত্র উদ্বেগটি হওয়া উচিত যে মাইক্রোএসডি কার্ডে কোনও ধরণের টাইম-আউট বিল্ট-ইন থাকে, তবে এসপিআই নিজেই নয়?
মুইস

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

1
+1, 0 Hz এর নিচে এসপিআই চালাতে সক্ষম হওয়া ডিবাগিংয়ের জন্য জানতে দরকারী। ধন্যবাদ।
অনিন্দো ঘোষ

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