ফ্ল্যাশ মেমরি: মাত্র কয়েকটি বাইট লেখার আগে পুরো পৃষ্ঠাটি মুছে ফেলা দরকার?


16

একটি সহজ প্রশ্ন, আমি আশা করি! আমি কোন নির্দিষ্ট উত্তর খুঁজে পাচ্ছি না ...

আমি একটি এসএসটি 25 ভিএফ 064 সি ফ্ল্যাশ মেমরি চিপের জন্য ড্রাইভার লিখছি । এটি এসপিআই এর মাধ্যমে যোগাযোগ করে।

সমস্ত ফ্ল্যাশ মেমরির মতো (যা আমি জানি), এটি লেখার আগে এটি মুছতে হবে (সমস্ত বিট = 1) (বিট = 0)। এই চিপের জন্য, সবচেয়ে ক্ষুদ্রতম অঞ্চলটি মুছতে পারে 4kB।

এর স্মৃতি 256-বাইট পৃষ্ঠায় বিভক্ত। একটি নির্দেশের সাহায্যে আমি একটি নির্দিষ্ট পৃষ্ঠায় এক বাইট থেকে 256 বাইট পর্যন্ত যে কোনও জায়গায় লিখতে পারি। আমাকে কোনও পৃষ্ঠার সীমানায় শুরু করতে হবে না: প্রোগ্রাম করা প্রথম অবস্থানটি কোনও পৃষ্ঠার মধ্যে যে কোনও জায়গায় থাকতে পারে।

সাধারণ নিয়মটি পৃষ্ঠাটিতে লেখার আগে মুছে ফেলা হয়েছে কিনা তা নিশ্চিত করা। তবে, আমি যদি আগে থেকেই লিখিত ক্ষেত্রগুলি এড়িয়ে যাই তবে আমি কোনও পূর্বের লিখিত পৃষ্ঠায় লিখতে পারি? উদাহরণস্বরূপ, বলুন যে আমি 0-127 বাইটে ডেটা সঞ্চয় করি। আমি কি পরে 128 বাইটে একই পৃষ্ঠায় আরও 128 বাইট লিখতে পারি?

উত্তর:


13

হ্যাঁ, যে কোনও মুছে ফেলার পরে, আপনি পরবর্তী মুছে ফেলা অপারেশনের আগে ডেটা লিখতে (1 থেকে 0 বিট পরিবর্তন করে) বিভিন্ন সংখ্যক পৃথক ক্রিয়াকলাপ ব্যবহার করতে পারেন।

এমনকি আপনি পূর্বের লিখিত অবস্থানটি আবারও লিখতে পারবেন, যতক্ষণ না আপনি কেবল আরও বিট সাফ করছেন। বরাদ্দ বিটম্যাপের মতো জিনিসগুলি বজায় রাখার জন্য এটি কার্যকর হতে পারে।


দুর্দান্ত, ধন্যবাদ! এটিই আমি যা খুঁজছিলাম was
বিটস্যাক

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

1
@ ভ্যালিটি: আপনি কি এর উদাহরণ দিতে পারবেন?
ডেভ টুইট করেছেন

3
@ ডেভিটউইড এনএক্সপি এলপিসি 21 এক্সএক্সএক্স এবং এলপিসি 23 xx এমসিইউগুলির প্রতি 16 বাইট মেমরির জন্য একটি চেকসাম বাইট রয়েছে; আপনাকে অবশ্যই একবারে সমস্ত 16 বাইট লিখতে হবে কারণ সেই অপারেশনে চেকসাম লেখা রয়েছে। আপনি যদি পরে এসে একই "লাইনে" জিরো লেখার চেষ্টা করেন তবে শূন্যগুলি লিখিত হয় তবে পূর্বের দিকেও একটি নতুন চেকসাম লেখা হয়; সম্ভাবনাগুলি হ'ল এটির কিছু 1 রয়েছে যেখানে আগেরটির 0 ছিল, তাই চেকসামটি অবৈধ হয়ে যায়। আমার মনে নেই এমসিইউ আপনাকে খারাপ চেকসাম সহ একটি লাইন পড়ার অনুমতি দেয় কিনা। যাইহোক, এটি "পুরো ডিভাইসগুলিতে পরিবর্তিত হবে" এর উদাহরণ হতে পারে।
গিলারমো প্রান্ডি

1
"লিখতে আলাদা আলাদা সংখ্যক সংখ্যক ক্রিয়াকলাপ ... পরবর্তী মুছে ফেলা অপারেশন।" নোট করুন যে কিছু অংশ, বিশেষত এমসিইউগুলিতে এম্বেড করা ফ্ল্যাশ স্মৃতিগুলি, মুছে ফেলার আগে সর্বাধিক সংখ্যক লেখার বিবরণ দেয়। সম্ভবত এই সীমাটি লঙ্ঘন করা স্মৃতির অন্যান্য ক্ষেত্রগুলিকে দূষিত করার ঝুঁকিপূর্ণ হবে, সুতরাং এই জাতীয় সীমাটি সন্ধান করা গুরুত্বপূর্ণ important
আজাব

5

যদি আমি ইতিমধ্যে লিখিত অঞ্চলগুলি এড়িয়ে যাই তবে আমি কি কোনও পূর্বের লিখিত পৃষ্ঠায় লিখতে পারি?

যদি বুঝি পি। 16 ড্যাটাশিটটি সঠিকভাবে, এটি বলছে: এই নির্দিষ্ট চিপের সাহায্যে আপনি অবশ্যই আগে থেকে লিখিত পৃষ্ঠায় লিখবেন না, এমনকি আপনি ইতিমধ্যে লিখিত অঞ্চলগুলি এড়িয়ে চলেন।

বিস্তারিত

SST25VF064C ফ্ল্যাশ মেমরি চিপ উপাত্তপত্র পি উপর। 16 বলেছেন "পৃষ্ঠা-প্রোগ্রামের নির্দেশাবলী মেমরিতে 256 বাইট ডেটা অবধি প্রোগ্রাম রয়েছে The নির্বাচিত পৃষ্ঠা ঠিকানাটি অবশ্যই পৃষ্ঠা-প্রোগ্রাম অপারেশন শুরুর আগে মুছে ফেলা অবস্থায় (এফএফএইচ) থাকতে হবে।"

আমি ধরে নিই যে "পৃষ্ঠা-প্রোগ্রাম অপারেশন শুরুর আগে পুরো নির্বাচিত পৃষ্ঠাটি মুছে ফেলা অবস্থায় (পৃষ্ঠার প্রতিটি বাইট এফএফএইচ) থাকা উচিত।" এসএসটি বা মাইক্রোচিপ কি এই দলিলকরনীয় অস্পষ্ট বাক্যটিকে স্পষ্ট করে কোনও নথিপত্র প্রকাশ করেছে?

আমার অভিজ্ঞতা অনুসারে, সমস্ত এমএলসি ফ্ল্যাশ চিপস এবং কিছু নতুন এসএলসি ফ্ল্যাশ চিপস ম্যান্ডেটের প্রস্তুতকারক যে একবার কোনও পৃষ্ঠা লেখার পরে সেই পৃষ্ঠাটি আবার লেখার আগে পৃষ্ঠাটি অবশ্যই মুছতে হবে , এমনকি আপনি যদি কিছু 1 বিটকে কিছু পরিবর্তন করতে চান তবে 0 বিট। (এই বলা হয় "লেখা-একবার রুল" মধ্যে YAFFS নিবন্ধ ।)

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

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

"মেমোরি ব্যবহারের স্কিমটি বিট ত্রুটির হারকে প্রভাবিত করে Par বিরক্তি ত্রুটি। " - মিশাল জেদরাক। "এম্বেড থাকা সিস্টেমে ন্যাশনাল ফ্ল্যাশ মেমরি"।

"প্রোগ্রাম-বিঘ্ন ঘটে যখন একটি পৃষ্ঠা-প্রোগ্রামিং ইভেন্ট চলাকালীন একটি" 1 "থেকে" 0 "তে অবিচ্ছিন্নভাবে প্রোগ্রাম করা হয় This এই বিট ত্রুটিটি হয় প্রোগ্রামে থাকা পৃষ্ঠায় বা ব্লকের অন্য পৃষ্ঠায় হতে পারে on পৃষ্ঠা প্রোগ্রামিংয়ের সময় ব্লকটি নিকটবর্তী মেমোরি কোষগুলিতে টানেলটির অল্প পরিমাণে কারেন্টের কারণ হতে পারে eated বারবার আংশিক পৃষ্ঠা প্রোগ্রামিংয়ের প্রচেষ্টা এই শর্তটিকে আরও বাড়িয়ে তুলবে "" - ডগলাস শেল্ডন এবং মাইকেল ফ্রেই। "ফ্ল্যাশ স্মৃতিতে ব্যাঘাতের পরীক্ষা" । পি। 8, 9।

"প্রোগ্রামিং অপারেশনের সময় কিছুটা অজ্ঞাতসারে প্রোগ্রাম করা হলে (1 থেকে 0) প্রোগ্রামের ব্যাঘাত ঘটে ... "ইয়াফস ন্যাণ্ড ফ্ল্যাশ ব্যর্থতা প্রশমন"


0

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

যদি আপনার প্রোগ্রামিং সফ্টওয়্যার, "ওআর-ইনগিং" না করে তবে আপনি নিজেই এটি করতে পারেন। একটি 256 বাইট সেগমেন্ট সাফ করুন, বাইট (গুলি) সঠিক অবস্থানে (গুলি) লিখুন, বা এফএফগুলির 256 বাইট মুখোশ দিয়ে এবং সেগমেন্টটি পছন্দসই পৃষ্ঠায় লিখুন।

যে কোনও পদ্ধতি কোনও নির্দিষ্ট চিপ নিয়ে কাজ করে কিনা তা আপনার দ্বারা সহজেই নির্ধারণ করা যায় । প্রথম 128 বাইটে লিখুন, দ্বিতীয় 128 বাইটে লিখুন, যাচাই করুন যে প্রথম 128 বাইট "মিসড" নয়!

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