في السابق ، نظرت إلى بطاقات SanDisk microSD لاستخدامها في التطبيقات كثيفة الكتابة مثل DVRs. ثم درست نتائج اختبارات السرعة وفكرت في نوع NAND Flash المستخدم في البطاقة. لا تنشر SanDisk أوصافًا تفصيلية للأجزاء الداخلية للبطاقات ، لذلك لم يكن لدي خيار سوى إجراء هندسة عكسية للبطاقة بنفسي.
الدعم الفني الذي فشل
على أمل البحث عن المعلومات ، أرسلت بريدًا إلكترونيًا إلى دعم SanDisk يسأل عن نوع NAND Flash الذي يستخدمونه في خط التحمل العالي ، بالإضافة إلى مقاييس التحمل مثل عدد دورات P / E (البرنامج / المسح) ، والعامة عدد التيرابايت المكتوبة (TBW). لسوء الحظ ، لم يتمكن فريق دعم SanDisk من تقديم إجابات مرضية لأسئلتي ، حيث أنهم لا يقدمون معلومات غير محددة في المواصفات المنشورة. قيل لي أن جميع بطاقاتهم تستخدم MLC Flash ، وهذا صحيح إذا اتصلت بـ TLC Flash 3-bit "MLC" (كما تفعل Samsung).
عزيزي جيسون ،
شكرًا لك على اتصالك بدعم عملاء SanDisk العالمي. نحن نقدر لك كونك عضوًا في عائلة SanDisk الخاصة بنا.
أتفهم أنك تريد معرفة المزيد عن بطاقة مراقبة الفيديو عالية التحمل من SanDisk. دعنا نعلمك أن جميع بطاقات الذاكرة لدينا تستخدم تقنية فلاش الخلايا متعددة المستويات . ومع ذلك ، لا يتم نشر أو توثيق عدد دورات قراءة / كتابة ذاكرة الفلاش. يتم نشر سرعات القراءة والكتابة فقط ، وهي 100 ميجابايت / ثانية و 40 ميجابايت / ثانية. يمكن للبطاقة التي تبلغ سعتها 64 جيجابايت تسجيل فيديو عالي الدقة بالكامل لمدة تصل إلى 10000 ساعة. يمكن العثور على التفاصيل هنا.
بطاقة SANDISK عالية التحمل لمراقبة الفيديو بطاقة microSD
، ...
سأمنحهم ميدالية بعبارة "حاولت".
تشريح بطاقة SD
قد تبدو بطاقة microSD وكأنها جهاز متجانسة. ومع ذلك ، تتكون هذه البطاقات من العديد من الرقائق المختلفة ، يلعب كل منها دورًا مختلفًا. ستحتوي أبسط بطاقة SD على وحدة تحكم تتحكم في رقائق NAND Flash وتتواصل مع المضيف (الكمبيوتر الشخصي ، والكاميرا ، وما إلى ذلك) ، وكذلك مع NAND Flash نفسه (الذي يتكون من بلورة فلاش واحدة أو أكثر). تحتوي مدونة Bunnie Studios على مقال ممتاز حول إنشاء بطاقات SD ، بما في ذلك وصف المنتجات المقلدة وتصنيعها. غالبًا ما يتم العثور على
رسم تخطيطي لبطاقات SD النموذجية لبطاقات
MicroSD (ولكن ليس دائمًا) مواقع الاختبار المستخدمة لبرمجة واختبار NAND Flash في الإنتاج. يمكن استخدامها لاستعادة البيانات، أو إعادة استخدام بطاقات microSD بوحدة تحكم معيبة أو برنامج ثابت. إنها تسمح لك بتحويل البطاقة إلى NAND Flash بسيط - يمكنك أن تقرأ عن هذا في مدونة Gao Louis. لاحظ أنه لا يوجد معيار لمواقع الاختبار هذه (حتى داخل مصنع واحد) ، ومع ذلك ، فإن بعض الشركات المصنعة ، ولا سيما SanDisk ، لديها أنماط تسهل الهندسة العكسية.
جهاز التحكم الرابض ، وسادات الاختبار الكامنة
تندرج بطاقات MicroSD ضمن فئة أجهزة الفلاش "المتجانسة" لأنها تجمع بين وحدة تحكم و NAND Flash في حزمة واحدة غير قابلة للفصل. يقوم العديد من المصنّعين بإحضار ناقل بيانات الفلاش إلى مواقع اختبار مخفية (وبدون توثيق تقريبًا). بمساعدتهم ، تقوم الشركات المصنعة الأخرى لبطاقات الذاكرة ومحركات أقراص USB المحمولة بصنع محركات أقراص رخيصة الثمن من الأجزاء التالفة. يمكن ببساطة إيقاف تشغيل وحدة التحكم ، ويمكن استخدام الفلاش مثل الشريحة العادية.
في حالة بطاقات SanDisk ، فإن معلومات pinout الخاصة بألواح الاختبار الخاصة بهم نادرة للغاية. لكل جيل اختلافاته الخاصة ، لكن التصميم لم يتغير إلى حد كبير. يمكن أن تكون الاختلافات قاتلة ، حيث يتم أحيانًا تبديل دبابيس الطاقة والأرض (وإذا كانت القطبية غير صحيحة ، فستموت الشريحة على الفور!).
تحتوي بطاقتي (بالإضافة إلى العديد من بطاقات الشركة من خط باهظ الثمن - وليس Ultra) على منصات اختبار مغطاة بالورنيش ، ولكن مع نوع من الإيبوكسي المصنوع باستخدام طباعة الشاشة برقم تسلسلي مقطوع بالليزر. قمت بتسخينه ، وكشطته ، وتمكنت من إزالة هذا الطلاء الهش للغاية من منصات الاختبار. أثناء القيام بذلك ، قمت أيضًا بإزالة الرقم التسلسلي - ربما يكون هذا بمثابة ختم الضمان.
وسادات اختبار
مخطط الإيبوكسي
بعد إزالة آثار طلاء الإيبوكسي ، صادفت تخطيطًا مألوفًا لمنصات الاختبار ، والتي تمت إضافة عدد قليل منها أدناه.
إنشاء وحدة واجهة
مفهوم وحدة الواجهة بسيط جدًا. لكل من منصات الاختبار ، نسحب سلكًا يؤدي إلى لوحة أكبر لسهولة الوصول ، ونقوم بتوصيل ناقل SD العادي بموصل SD حتى تقوم وحدة التحكم بعملها أثناء العبث بناقل NAND Flash. بالنظر إلى صغر حجم مواقع الاختبار وعددها الكبير ، قد تكون النتيجة قذرة بعض الشيء.
وحدة واجهة وحدة
واجهة وحدة ، صورة مكبرة
لقد بدأت بلصق البطاقة بشريط على الوجهين على لوح التجارب. ثم قمت بتدوين جميع الوسادات ولحمت مكثف سيراميك صغير 1 فائق التوهج على وسادات Vcc و GND للبطاقة. باستخدام سلك مطلي بالمينا 40 AWG (0.1 مم) ، قمت بتوصيل كل لوحة اختبار بالدبوس المقابل على لوح التجارب. إلى جانب المواقع الإضافية ، وصل هذا إلى 28 سلكًا صغيرًا!
بالنسبة لموصل SD ، استخدمت كبلًا مع جهاز لخدمة هواتف Android من HTC " XTC 2 Clip"لقد عملت مثل "بطاقة SD مرنة بعيدة" ووجهت الإشارات من خلال كابل مرن صغير. لقد قمت بلف الكبل بشريط نحاسي لحمايته من الضوضاء والتضخيم ، ولحمت الشريط بالوسادات الخارجية للوح لتدعيم الهيكل. ثم قمت بتغليف نهاية الكابل ، وقمت بتوصيل الأسلاك المطلية بالمينا بمسامير البطاقة ، ثم قمت بإدخال مصباح LED بمقاوم في سلك الطاقة حتى أتمكن من رؤية وقت تشغيل البطاقة.
تحليل الحافلات
بعد نشر جميع مواقع الاختبار لجهات الاتصال التجريبية ، يمكنني البدء في فهم مسؤولية جهات الاتصال هذه فيما يتعلق بالوصول إلى NAND Flash الموجود داخل البطاقة.
بشكل عام ، كان تخطيط الدبوس هو نفسه مثل معظم بطاقات SanDisk microSD.
لتحليل الإشارات من جميع الأطراف ، استخدمت محلل منطقي DSLogic Plus... كان دبوس نقل البيانات معروفًا بالفعل ، وقد تم بالفعل إنجاز العمل الشاق (ناقل البيانات ، والتحكم ، والعناوين ، والأوامر ، والحماية ضد الكتابة ، والحالة مشغول / حر). ومع ذلك ، لم يكن دور كل جهة من جهات الاتصال واضحًا على الفور - فقد تضمن pinout الذي وجدته الحد الأدنى من عدد الحافلات التي سمحت بالعمل مع NAND Flash - باستثناء ناقل التحكم ، الذي يضع وحدة التحكم في وضع إعادة التعيين ويفصلها عن التحكم في ناقل البيانات (سيكون هذا مهمًا لاحقًا) ...
من خلال الاستماع إلى ناقل البيانات بأقصى سرعة متاحة لـ DSLogic (واستخدام المخزن المؤقت المتاح بسعة 32 ميجابايت) ، تمكنت من تجميع قائمة واضحة بالأوامر المرسلة إلى NAND Flash من وحدة التحكم في وقت التهيئة.
أساسيات الاستماع بالحافلة و NAND I / O (كتابة الأوامر والعناوين وقراءة البيانات)
لقد بحثت على وجه التحديد عن أمرين: إعادة تعيين (0xFF) ومعرف القراءة (0x90). عند البحث عن تسلسل الأوامر ، من المهم معرفة متى وكيف تتغير البيانات وناقلات التحكم. سأحاول شرح كل شيء خطوة بخطوة. إذا كنت مهتمًا ، فإنني أوصي بدليل Micron ، الذي يصف أساسيات NAND Flash ويقدم المزيد من المعلومات حول مبادئ تشغيله.
SanDisk High Endurance 128GB RESET Command Tracking مع محلل المنطق. يشير الخط المنقط إلى ظهور أوامر الكتابة وإعادة التعيين.
SanDisk High Endurance 128GB RESET Command Tracking مع محلل المنطق. يشير الخط المنقط إلى ظهور أوامر القراءة / الكتابة.
عند إرسال الأمر RESET إلى NAND Flash ، يتم سحب ناقل / CE (Chip Select ، Active Low) أولاً. ثم يتم سحب ناقل CLE (تمكين مزلاج الأوامر) ؛ يتم تعيين ناقل البيانات على قيمته المجدولة 0xFF (بالثنائي) ؛ ثم ينتقل ناقل / WE (تمكين الكتابة ، منخفض نشط) من الجهد العالي إلى الجهد المنخفض ، ثم يعود إلى المستوى العالي (يتم نقل البيانات من ناقل البيانات إلى الشريحة عندما ينتقل ناقل / WE من الجهد المنخفض إلى العالي ، ما يسمى حافة الإشارة ") ؛ يتم سحب الحافلة CLE إلى أسفل ، وتعود إلى وضعها الطبيعي. تقوم شريحة الفلاش بعد ذلك بسحب ناقل R / B (حالة الاستعداد / الانشغال) لأسفل للإشارة إلى أنه مشغول بإعادة التعيين ، وعند الانتهاء ، تسحب الحافلة إلى المستوى الأعلى.
يعمل أمر معرف القراءة بطريقة مماثلة ، باستثناء أنه بعد كتابة الأمر 0x90 (1001 0000) إلى ناقل البيانات ، فإنه يسحب ناقل ALE (تمكين مزلاج العنوان) ، وليس CLE ، ويكتب 0x00 (جميع الأصفار الثنائية) ، مما يؤدي إلى / نحن إلى الدولة الدنيا. تنقل الرقاقة معرف NAND Flash ID المكتوب إليها إلى سجل القراءة الداخلي ، وتتم قراءة البيانات من الجهاز على كل حافة من الحافلة / RE (تمكين القراءة ، منخفض نشط) ؛ بالنسبة لمعظم الأجهزة ، يكون هذا من 4 إلى 8 بايت من البيانات.
معرف فلاش NAND
يحتوي كل جهاز NAND Flash على معرّف فريد خاص به (في الغالب) يربطه بمصنع معين وبيانات وظيفية أخرى خاصة بالشركة المصنعة. بمعنى آخر ، فقط معرف الشركة المصنعة الذي تم تعيينه بواسطة جمعية تكنولوجيا JEDEC محدد جيدًا .
يشير البايت الأول إلى الشركة المصنعة للرقاقة ، والباقي (من 2 إلى 6) يحدد خصائص الجهاز - وكلها تحددها الشركة المصنعة نفسها. يتردد معظم مصنعي NAND في نشر مواصفات الجهاز ، ويتم التحكم بشدة في SanDisk (وبالتالي Toshiba / Kioxia) من خلال هذه البيانات ، باستثناء أوراق بيانات Toshiba القديمة التي تم تسريبها عبر الإنترنت. نظرًا لأن هذه الشركات تشترك في القدرة التصنيعية ، يمكن إجراء تخمين مدروس بأن هياكل البيانات في البيانات المحددة من قبل الشركة المصنعة يمكن أن تتطابق مع بعضها البعض.
أما بالنسبة لبطاقة SanDisk عالية التحمل بسعة 128 جيجا ، فهي تستخدم معرف NAND Flash من 0x45 48 9A B3 7E 72 0D 0E. يمكن مقارنة بعض هذه الأرقام بمواصفات Toshiba :
بايت (ست عشري) | |
---|---|
45
|
: SanDisk
|
48
|
I/O : 1.8 volts ( )
: 128 ( ) |
9A
|
NAND: TLC (Triple-Level Cell / 3 )
/CE: 4 ( 4 32 ) |
B3
|
: 12 (768 )
: 16 384 / 16 |
7E
|
/CE: 8 (2 )
|
72
|
:
: BiCS3 3D NAND |
0D
|
( )
|
0E
|
( )
|
على الرغم من أنه لا يمكن تحديد جميع قيم البايت بشكل لا لبس فيه ، فقد تمكنت من تحديد أن بطاقات SanDisk High Endurance تستخدم BiCS3 3D TLC NAND Flash - على الأقل هذا هو 3D NAND ، والذي يتجاوز بشكل كبير NAND المسطحة التقليدية من حيث الموثوقية. لسوء الحظ ، لا يمكن لهذه المعلومات وحدها معرفة ما إذا كانت وحدة التحكم تستفيد من آلية التخزين المؤقت SLC في عمليات الكتابة.
يتم تحديد هندسة عملية تصنيع الشريحة بناءً على أول أربع بايتات من معرف الفلاش ومقارنتها بخط ملف تكوين الأدوات من Silicon Motion لوحدة التحكم SM3271 USB Flash ووحدة التحكم SM2258XTSSD بدون ذاكرة DRAM. توفر هذه الأدوات وحدات SKU مزعومة من رقائق SDTNAIAMA-256G و SDUNBIEMM-32G على التوالي ، ولكن يبدو لي أن هذا لا يتوافق مع تكوين ذاكرة الفلاش في هذه البطاقة.
تحكم خارجي
كنت أرغب في التأكد من أنني أحصل على المعرف الصحيح من NAND Flash ، لذلك قمت بتوصيل لوحة تصحيح أخطاء Texas Instruments MSP430FR2433 وكتبت أبسط كود يرسل أوامر إعادة الضبط ومعرف القراءة الضرورية ، ويحاول استخراج بيانات إضافية بالتوازي من المعلمات المخفية لصفحة معلمات JEDEC.
كانت العقبة الأولى التي واجهتها في طريقي هي أن MSP430 يعيد ضبط نفسه في كل مرة حاولت فيها إرسال أمر RESET ، مما يشير إلى أن مصدر الطاقة المحدود للوحة MSP430 لا يمكنه التعامل مع هذا التيار. يمكن أن يحدث هذا عند " خلاف الحافلة"عندما يتشاجر جهازان مع بعضهما البعض ، في محاولة لتطبيق جهد عالٍ ومنخفض في وقت واحد على ناقل رقمي معين. لم أكن متأكدًا من فهمي لما كان يحدث ، حيث لا توجد معلومات مجانية حول كيفية إيقاف تشغيل وحدة التحكم في البطاقة المدمجة. كان (وبسبب هذا "أطلق" ناقل NAND وسمح لجهاز آخر بالتحكم فيه.)
اكتشفت أن لوحة اختبار A1 (انظر الرسم البياني) هي ناقل إعادة تعيين وحدة التحكم ، وإذا حافظت على جهدها في الموضع السفلي ، تتحرر وحدة التحكم تمامًا من التحكم في ناقل NAND Flash. بعد ذلك ، أصبح الرمز الخاص بي من وحدة التحكم الدقيقة قادرًا على قراءة معرف الفلاش بشكل صحيح ودون عوائق.
قراءة معرف الفلاش من البطاقة
صفحة إعدادات JEDEC ... أو على الأقل ما فعلته SanDisk بها!
تحتوي صفحة معلمات JEDEC ، إذا كانت متوفرة ، على خصائص تفصيلية لشريحة Flash - أكثر تفصيلاً بكثير من معرف NAND Flash ID - علاوة على ذلك ، أكثر توحيدًا. ومع ذلك ، اتضح أن SanDisk اختارت تجاهل المعيار واستخدام المعيار الخاص بها! عادة تبدأ الصفحة بسلسلة ASCII "JEDEC" ، لكنني وجدت سلسلة مكررة "SNDK" ( اسم الشركة في البورصة ) وبيانات أخرى لا تتطابق مع أي شيء من مواصفات JEDEC! حسنا ، تستحق المحاولة.
جمعت البيانات باستخدام نفس مخطط Arduino الذي عرضته سابقًا ، وتلقيت 1536 بايت من البيانات. لقد كتبت برنامجًا صغيرًا على Ideone لتحويل أول 512 بايت إلى تفريغ HEX أنيق:
Offset 00:01:02:03:04:05:06:07:08:09:0A:0B:0C:0D:0E:0F 0123456789ABCDEF
------ --+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- ----------------
0x0000 53 4E 44 4B 53 4E 44 4B 53 4E 44 4B 53 4E 44 4B SNDKSNDKSNDKSNDK
0x0010 53 4E 44 4B 53 4E 44 4B 53 4E 44 4B 53 4E 44 4B SNDKSNDKSNDKSNDK
0x0020 08 08 00 08 06 20 00 02 01 48 9A B3 00 05 08 41 ..... ...H.....A
0x0030 48 63 6A 08 08 00 08 06 20 00 02 01 48 9A B3 00 Hcj..... ...H...
0x0040 05 08 41 48 63 6A 08 08 00 08 06 20 00 02 01 48 ..AHcj..... ...H
0x0050 9A B3 00 05 08 41 48 63 6A 08 08 00 08 06 20 00 .....AHcj..... .
0x0060 02 01 48 9A B3 00 05 08 41 48 63 6A 08 08 00 08 ..H.....AHcj....
0x0070 06 20 00 02 01 48 9A B3 00 05 08 41 48 63 6A 08 . ...H.....AHcj.
0x0080 08 00 08 06 20 00 02 01 48 9A B3 00 05 08 41 48 .... ...H.....AH
0x0090 63 6A 08 08 00 08 06 20 00 02 01 48 9A B3 00 05 cj..... ...H....
0x00A0 08 41 48 63 6A 08 08 00 08 06 20 00 02 01 48 9A .AHcj..... ...H.
0x00B0 B3 00 05 08 41 48 63 6A 08 08 00 08 06 20 00 02 ....AHcj..... ..
0x00C0 01 48 9A B3 00 05 08 41 48 63 6A 08 08 00 08 06 .H.....AHcj.....
0x00D0 20 00 02 01 48 9A B3 00 05 08 41 48 63 6A 08 08 ...H.....AHcj..
0x00E0 00 08 06 20 00 02 01 48 9A B3 00 05 08 41 48 63 ... ...H.....AHc
0x00F0 6A 08 08 00 08 06 20 00 02 01 48 9A B3 00 05 08 j..... ...H.....
0x0100 41 48 63 6A 08 08 00 08 06 20 00 02 01 48 9A B3 AHcj..... ...H..
0x0110 00 05 08 41 48 63 6A 08 08 00 08 06 20 00 02 01 ...AHcj..... ...
0x0120 48 9A B3 00 05 08 41 48 63 6A 08 08 00 08 06 20 H.....AHcj.....
0x0130 00 02 01 48 9A B3 00 05 08 41 48 63 6A 08 08 00 ...H.....AHcj...
0x0140 08 06 20 00 02 01 48 9A B3 00 05 08 41 48 63 6A .. ...H.....AHcj
0x0150 08 08 00 08 06 20 00 02 01 48 9A B3 00 05 08 41 ..... ...H.....A
0x0160 48 63 6A 08 08 00 08 06 20 00 02 01 48 9A B3 00 Hcj..... ...H...
0x0170 05 08 41 48 63 6A 08 08 00 08 06 20 00 02 01 48 ..AHcj..... ...H
0x0180 9A B3 00 05 08 41 48 63 6A 08 08 00 08 06 20 00 .....AHcj..... .
0x0190 02 01 48 9A B3 00 05 08 41 48 63 6A 08 08 00 08 ..H.....AHcj....
0x01A0 06 20 00 02 01 48 9A B3 00 05 08 41 48 63 6A 08 . ...H.....AHcj.
0x01B0 08 00 08 06 20 00 02 01 48 9A B3 00 05 08 41 48 .... ...H.....AH
0x01C0 63 6A 08 08 00 08 06 20 00 02 01 48 9A B3 00 05 cj..... ...H....
0x01D0 08 41 48 63 6A 08 08 00 08 06 20 00 02 01 48 9A .AHcj..... ...H.
0x01E0 B3 00 05 08 41 48 63 6A 08 08 00 08 06 20 00 02 ....AHcj..... ..
0x01F0 01 48 9A B3 00 05 08 41 48 63 6A 08 08 00 08 06 .H.....AHcj.....
أظهر التحليل الإضافي باستخدام محلل DSLogic أن وحدة التحكم تحتاج إلى صفحة معلمة 4128 bp (4Kb + 32 bp) مليئة بنفس البيانات المكررة كما هو موضح أعلاه.
مشاكل إعادة التعيين
عند فحص البيانات من محلل المنطق ، وجدت أن وحدة التحكم ترسل أمر معرف القراءة مرتين ، ولكن في المرة الأولى دون إعادة ضبط الفلاش (والذي عادة ما يلزم القيام به فورًا بعد تطبيق الطاقة على الشريحة!). تبين أن البيانات التي أرجعها الرقاقة غريبة إلى حد ما.
بايت (ست عشري) | وصف |
---|---|
98
|
الشركة المصنعة: توشيبا
|
00
|
جهد الإدخال / الإخراج: غير معروف (لا توجد بيانات)
سعة الجهاز: غير معروف (لا توجد بيانات) |
90
|
نوع NAND: SLC (خلية أحادية المستوى / 1 بت لكل خلية)
رقائق فلاش / CE: 1 |
93
|
حجم الكتلة: 4 ميجا بايت باستثناء المساحة الاحتياطية
حجم الصفحة : 16384 بايت / 16 كيلو بايت باستثناء المساحة الاحتياطية |
76
|
مصفوفة / CE: 2
|
72
|
نوع الواجهة:
هندسة عملية غير متزامنة : 70 نانومتر مسطح |
لقد أربكني هذا في البداية ، لأنني كنت أحاول الحصول على الهوية من خلال تحليل المنطق فقط. ولكن بعد التحدث مع شخص لديه خبرة كبيرة في استعادة البيانات من NAND Flash ، علمت أن هذا هو المعيار للأجهزة من SanDisk. فهي فضفاضة للغاية بشأن الأوامر الخاصة وهياكل البيانات. إذا كنت تعتقد أن البايت الرابع ، فإن حجم الكتلة هو 4 ميجابايت ، وهو ما يبدو معقولاً لشريحة فلاش حديثة. بقية المعلومات ليست منطقية بالنسبة لي ، باستثناء أن البايت الأول يقول أن الشركة المصنعة للرقاقة هي Toshiba.
خاتمة
لقد ذهبت بعيدًا في محاولتي للحصول على إجابة على السؤال البسيط حول نوع الرقائق التي استخدمتها SanDisk في بطاقتها طويلة الأجل. يبدو أنه بإمكانهم التحدث بفخر عن استخدام تقنية 3D NAND لزيادة الموثوقية والتشغيل طويل الأمد - لكن لا!
الملفات
للمهتمين ، أنشر البيانات التي اعترضتها من البطاقة بعد تشغيلها. أقوم أيضًا بنشر رسم تقريبي لـ Arduino ، مما يتيح لك قراءة معرف NAND وصفحة المعلمة يدويًا: