Làm cách nào tôi có thể cố ý phá / hỏng một khu vực trên thẻ SD?


142

Tôi cần kiểm tra khả năng phục hồi của một số mã đọc / ghi đối với một số phần cứng nhúng. Làm thế nào tôi có thể hy sinh một vài thẻ SD và phá vỡ một số lĩnh vực đã biết cho một nghiên cứu có kiểm soát?

Điều duy nhất tôi có thể nghĩ đến là ghi đè lên một lĩnh vực duy nhất vài triệu lần. Tôi tự hỏi nếu một kịch bản badblocks Linux có thể được tạo để chạy thử nghiệm phá hủy của nó trên một khu vực duy nhất liên tục trong vài giờ.


20
Bạn có thể thay đổi trình điều khiển SD cấp thấp để giả vờ có một khối xấu, hoặc đó là vấn đề?

3
@MarkYisri, tôi không nghĩ tài xế rất dễ tiếp cận. Bất cứ trình điều khiển nào chúng tôi đang sử dụng đều cực kỳ thô sơ để tối đa hóa việc cấp phát bộ nhớ cho phần còn lại của phần sụn. Ngoài ra, nếu có thể, điều đó có thể vượt quá khả năng của tôi.
Gabe Krause

3
Bạn có thể xây dựng một trình giả lập thẻ SD? Không phải là dự án đơn giản nhất, nhớ bạn.
user20574

11
Đưa ra mục tiêu, bạn có thể mua một số thẻ SD cũ với ít tiền và bạn có thể dễ dàng bị lỗi hoặc đặt thông báo "tìm kiếm ..." để tìm kiếm cụ thể các thẻ bị lỗi. Hoặc tìm kiếm eBay cho các thẻ bị lỗi. Sau đó, bạn kiểm tra thẻ và bạn sẽ biết vị trí của các khu vực bị lỗi.
FarO

28
Hỏi bất kỳ nhiếp ảnh gia chuyên nghiệp. Chắc chắn họ sẽ có một đống thẻ SD sơ sài.
J ...

Câu trả lời:


168

Một cách tiếp cận khác thể hữu ích.

Nếu mã của bạn chạy trong Linux thì có lẽ bạn có thể kiểm tra nó với một thiết bị logic "bị lỗi". dmsetupcó thể tạo các thiết bị trả về lỗi I / O. Chỉ cần xây dựng thiết bị của bạn bằng cách sử dụng errorvà / hoặc flakeymục tiêu. Từ man 8 dmsetup:

error
Lỗi bất kỳ I / O nào đi đến khu vực này. Hữu ích để thử nghiệm hoặc để tạo ra các thiết bị có lỗ hổng trong đó.

flakey
Tạo một ánh xạ tương tự như linearmục tiêu nhưng thể hiện hành vi không đáng tin cậy theo định kỳ. Hữu ích cho việc mô phỏng các thiết bị hỏng khi thử nghiệm.

Lưu ý: flakeymục đích sử dụng được ghi lại ở đây . Ví dụ cơ bản ở đây .

Theo như tôi biết, một lỗi I / O sẽ được báo cáo ngay lập tức, do đó, điều này khác với hành vi của thẻ SD thực sự nơi bạn có thể mong đợi sự chậm trễ, bị đình trệ, v.v ... Tuy nhiên, tôi nghĩ cách tiếp cận này có thể hữu ích trong một số trường hợp, ít nhất là để thực hiện nhanh kiểm tra sơ bộ hoặc như vậy.


34
Tôi đánh giá cao suy nghĩ vượt trội đó! Chúng tôi đang giao tiếp ở cấp độ khối với SD thông qua chip Atmel 80 MHz và không có hệ điều hành thực sự.
Gabe Krause

1
@GabeKrause Trong trường hợp nào tính hữu ích của câu trả lời này phụ thuộc vào mức độ tương tự API của thiết bị khối Linux với API của trình điều khiển thiết bị nhúng của bạn.
Qsigma

1
dmsetuplệnh để thiết lập một errorthiết bị luôn trả về lỗi đọc: stackoverflow.com/questions/1870696/ Khăn
Peter Cordes

1
Tôi đồng ý rằng điều này nghe có vẻ là một giải pháp tốt hơn. Đầu tiên bạn có thể sao chép trên bất kỳ phần cứng nào. Và bạn cũng có thể mô phỏng các chế độ lỗi khác nhau. Ví dụ, tôi có ổ flash USB 16 GB hoạt động tốt. Sau một thời gian mặc dù một khu vực cụ thể trên đó bắt đầu trả lại dữ liệu sai. Không có lỗi FS của bất kỳ loại nào. Bạn đọc tập tin nhưng nội dung thì khác. Một số lĩnh vực rõ ràng là không ổn định. Nhưng làm thế nào một số thiết bị cụ thể sẽ hoạt động không thể được biết trước.
akostadinov

76

Anh chàng này đã hack vi điều khiển bên trong thẻ SD được sử dụng để đánh dấu các khối xấu: https://www.bunniestudios.com/blog/?p=3554

Bạn có thể làm như vậy và tùy ý đánh dấu các khối là bị lỗi.

Hôm nay tại Đại hội máy tính Chaos (30C3), xobs và tôi đã tiết lộ một phát hiện rằng một số thẻ SD có chứa lỗ hổng cho phép thực thi mã tùy ý - trên chính thẻ nhớ. Về mặt tối, việc thực thi mã trên thẻ nhớ cho phép một lớp tấn công MITM (người trung gian), trong đó thẻ dường như đang hành xử theo một cách, nhưng thực tế nó lại làm một việc khác. Về mặt ánh sáng, nó cũng cho phép những người đam mê phần cứng có thể truy cập vào một nguồn vi điều khiển rất rẻ và phổ biến.

.

Các thuật toán này quá phức tạp và quá đặc thù cho thiết bị để chạy ở cấp độ ứng dụng hoặc hệ điều hành, và do đó, hóa ra mọi đĩa bộ nhớ flash đều có một bộ vi điều khiển mạnh mẽ hợp lý để chạy một bộ thuật toán trừu tượng hóa đĩa tùy chỉnh. Ngay cả thẻ nhớ nhỏ gọn không chứa một, mà ít nhất hai chip - bộ điều khiển và ít nhất một chip flash (thẻ mật độ cao sẽ xếp chồng nhiều đèn flash).

.

Bộ vi điều khiển nhúng thường là CPU ARM 8051 hoặc ARM được sửa đổi nhiều. Trong các triển khai hiện đại, bộ vi điều khiển sẽ đạt mức hiệu suất 100 MHz và cũng có một số bộ tăng tốc phần cứng đang hoạt động. Thật đáng ngạc nhiên, chi phí cho việc thêm các bộ điều khiển này vào thiết bị có thể ở mức $ 0,15- $ 0,30, đặc biệt đối với các công ty có thể kết hợp cả bộ nhớ flash và bộ điều khiển trong cùng một đơn vị kinh doanh. Có thể rẻ hơn khi thêm các bộ vi điều khiển này so với việc kiểm tra và mô tả kỹ lưỡng từng chip bộ nhớ flash, điều này giải thích tại sao các thiết bị flash được quản lý có thể rẻ hơn mỗi bit so với chip flash thô, mặc dù có cả vi điều khiển.

.

Điểm mấu chốt là cơ chế tải và cập nhật firmware hầu như là bắt buộc, đặc biệt là đối với các bộ điều khiển của bên thứ ba. Người dùng cuối hiếm khi tiếp xúc với quy trình này, vì tất cả đều xảy ra trong nhà máy, nhưng điều này không làm cho cơ chế trở nên ít thực tế hơn. Trong những lần khám phá thị trường điện tử ở Trung Quốc, tôi đã thấy những người giữ cửa hàng đốt phần sụn trên các thẻ mà Mở rộng dung lượng của thẻ - nói cách khác, họ tải một phần sụn báo cáo dung lượng của thẻ lớn hơn nhiều so với lưu trữ thực tế có sẵn. Thực tế là điều này có thể xảy ra tại điểm bán có nghĩa là rất có thể, cơ chế cập nhật không được bảo mật.

Trong cuộc nói chuyện của chúng tôi tại 30C3, chúng tôi báo cáo những phát hiện của chúng tôi khám phá một thương hiệu vi điều khiển cụ thể, cụ thể là, Appotech và các sản phẩm AX211 và AX215 của nó. Chúng tôi phát hiện ra một chuỗi gõ gõ đơn giản, được truyền qua các lệnh dành riêng cho nhà sản xuất (cụ thể là CMD63, theo sau là 'A', 'P', 'P', 'O') thả bộ điều khiển vào chế độ tải phần sụn. Tại thời điểm này, thẻ sẽ chấp nhận 512 byte tiếp theo và chạy dưới dạng mã.


10
Trong tất cả các câu trả lời, câu trả lời này có lẽ là gần nhất với những gì OP thực sự yêu cầu.
Cort Ammon

11
Đó là một bài đọc tuyệt vời!
Gabe Krause

@Twisty sao chép một số phần có liên quan.
FarO

2
Tôi xuống hố thỏ vào thế giới kiến ​​trúc thẻ SD tôi đi.
Tejas Kale

38

Điều này thường không hoạt động vì hầu hết các thẻ SD gần đây (hoặc eMMC) sử dụng mức độ hao mòn tĩnh và động, nghĩa là bộ điều khiển thông minh diễn giải hướng dẫn ghi của bạn và ánh xạ nó tới một trong những lĩnh vực flash ít được sử dụng nhất.

Điều duy nhất bạn có thể làm là cố gắng liên hệ với các nhà cung cấp của bạn và yêu cầu bảng dữ liệu của họ; có thể có một số cách (cụ thể của nhà cung cấp) để truy xuất trạng thái của thuật toán cân bằng hao mòn của chúng. Điều này có khả năng cho phép bạn truy vấn trạng thái / cách sử dụng của đèn flash bên dưới. Hoặc bạn có thể không may mắn và điều này có thể không tồn tại.

Nếu mục tiêu của bạn thực sự là phá hủy flash, tất cả những gì bạn có thể làm là chạy các chu kỳ đọc và ghi lớn và liên tục kiểm tra xem dữ liệu bạn đang đọc có còn phù hợp không. Ví dụ: tạo hai tệp lớn, lưu trữ tổng kiểm tra của họ và đọc / ghi chúng để xác minh tổng kiểm tra của họ. Đèn flash càng lớn, quá trình này sẽ càng lâu.


2
Điều này vẫn không hoạt động nếu thẻ SD chứa đầy dữ liệu, do đó nó không thể ánh xạ lại nhiều? Tôi không nghĩ rằng họ có rất nhiều lĩnh vực ẩn phụ tùng.
Ruslan

2
@Ruslan Thiết bị không cần biết nếu một khu vực chứa đầy bất cứ thứ gì. Nó chỉ cần biết nội dung của các lĩnh vực sẽ cung cấp theo yêu cầu và các lĩnh vực để viết theo yêu cầu. Và sau đó, có thể có một số lớp trừu tượng tại chỗ khiến nó sử dụng bộ nhớ vật lý khác để biểu diễn các lĩnh vực đó theo một số thuật toán không được tiết lộ ... - Và "đầy đủ" chỉ có nghĩa là "ngưỡng cho các khối có thể lấp đầy hiện tại", tất nhiên.
Alexander Kosubek

6
@Ruslan: Ngay cả khi toàn bộ thiết bị có dữ liệu trên đó, việc cân bằng hao mòn vẫn có thể có hiệu quả: ví dụ: nếu khu vực A đã được viết một lần và khu vực B đã được viết 1.000 lần, thì khi một lần viết khác xuất hiện khu vực B thẻ có thể trao đổi dữ liệu cho hai khu vực, do đó, khu vực A chứa dữ liệu của khu vực B (và có thể sẽ bị ghi đè nhiều lần hơn - nhưng không sao vì nó mới) và khu vực B sẽ chứa dữ liệu của khu vực A (sẽ Hy vọng không thay đổi nhiều). Rõ ràng thiết bị cũng cần lưu trữ ánh xạ của khu vực nào được lưu trữ ở đâu.
psmears

2
@GabeKrause vâng, đó là bản chất của con thú. Ở cấp độ thấp nhất, bạn có chip nand hoặc flash (ngày nay mọi thứ đều sử dụng nand) và có một bộ điều khiển thông minh ở phía trước chip nand chấm dứt bus (ví dụ: usb cho thẻ nhớ usb hoặc mmc cho thẻ sd ) và con chip này chịu trách nhiệm cho việc lập bản đồ / cân bằng hao mòn, v.v., nó trừu tượng hóa đèn flash ra khỏi bạn. Nếu bạn sẽ sử dụng nand trên Linux nhúng thì đây là những gì ubifs sẽ làm cho bạn.
amo-ej1

2
Thẻ SD có một vi điều khiển thực hiện "Lớp dịch Flash" - các yêu cầu khối được vi điều khiển này dịch thành các lệnh NAND thô. Một số thẻ SD có các lệnh ẩn để thay đổi / cập nhật chương trình cơ sở MCU và thậm chí có một số nỗ lực kỹ thuật đảo ngược được thực hiện trên nó. Hầu hết các thiết bị lưu trữ flash không phải là NAND thô (có thể xuất hiện trong một số trường hợp như nhiều bộ định tuyến gia đình) có thể bị "cung cấp quá mức" - có nghĩa là thẻ SD 1GB của bạn có thể có khoảng trống NAND 1024 MB + 128 MB trên đó, để che lấp mức độ hao mòn khi đầy và cũng không có khu vực cho các trang flash xấu.
LawrenceC

32

Bạn có thể tăng bóng bán dẫn bằng cách tăng nhiệt độ hoạt động. Sử dụng chu trình xóa ghi trên chip được làm nóng (70-120 ° C); nó sẽ mặc nhanh hơn


18
Nhiệt độ lưu trữ quá cao cũng gây hại, do đó, có thể thực tế hơn khi "nấu" chip ở 120C ° (hoặc thậm chí nhiều hơn) trong một thời gian, sau đó kiểm tra lỗi.
Dmitry Grigoryev

2
Cũng có thể quá áp đối với việc cung cấp cho thẻ cũng có thể, và cũng cần thử nghiệm tương tự.
Chris H

Mất điện áp cũng có thể gây ra các loại khiếm khuyết khác nhau, như khóa điều khiển.
user20574

18

Lời nói đầu: Tùy chọn này yêu cầu sửa đổi phần cứng và lập trình bổ sung, nhưng nó sẽ cho phép các bài đọc được kiểm soát rất có thể trong suốt đối với máy chủ.

Thẻ SD có nhiều tùy chọn I / O, nhưng nó có thể được kiểm soát qua SPI. Nếu bạn lấy thẻ SD và sửa đổi nó để bạn có thể gắn các chân vào vi điều khiển (chẳng hạn như Arduino), bạn có thể có Arduino bắt chước thẻ SD và trong suốt với thiết bị đọc thẻ SD. Mã của bạn trên vi điều khiển có thể cố tình trả lại dữ liệu xấu khi cần. Ngoài ra, bạn có thể đặt thẻ SD vào vi điều khiển để các lần đọc có thể chuyển qua vi điều khiển sang thẻ SD để cho phép thử nghiệm hàng gigabyte.


3
Hầu hết các thiết bị tốc độ cao (bao gồm cả đầu đọc thẻ PC) sẽ từ chối hoạt động với thẻ không hỗ trợ SD bốn bit.
Dmitry Grigoryev

1
OP cho biết đây là một hệ thống nhúng sẽ sử dụng thẻ giúp hỗ trợ SPI nhiều hơn cho thẻ sd
Eric Johnson

3
Một biến thể của điều này, nhưng công việc khó khăn hơn, sẽ là tìm một thẻ SD mà bạn có thể khởi động lại phần sụn .
Peter Taylor

2
Điều này là siêu thú vị! Hệ thống nhúng của chúng tôi đang chạy I / O thông qua SPI. Tôi không chắc mình có băng thông để sửa đổi phần cứng của chúng tôi để thực hiện bổ sung như thế này không, nhưng tôi nghĩ đó là suy nghĩ tuyệt vời.
Gabe Krause

2
Được giáo dục về mức độ hao mòn năng động khiến tôi tin rằng chiến lược tạo ra thẻ SD "xấu" với các thành phần xấu đã biết là khó khăn hơn nhiều (hoặc không thể) so với tôi đã đặt ra khi đặt câu hỏi. Mặc dù hiện tại vượt quá khả năng của tôi, đây dường như là cách tiếp cận có thể kiểm soát và hứa hẹn nhất về mặt kỹ thuật, tiếp theo có thể là @Olafm. Tùy chỉnh phần cứng trung gian để chặn và "hỏng" dữ liệu tại bất kỳ vị trí khu vực được xác định trước nào trong khi truyền dữ liệu có vẻ như là một cách tiếp cận tốt.
Gabe Krause

15

Tôi sẽ đến ebay / AliExpress và mua thẻ SD rẻ nhất tôi có thể tìm thấy từ Trung Quốc, một thứ "quá tốt là đúng". Chúng thường đi kèm với các khu vực bị lỗi hoặc trong phần mềm được thiết lập lớn hơn nhiều so với thực tế. Dù bằng cách nào, bạn nên kết thúc với thẻ SD bị lỗi để sử dụng để thử nghiệm.


Cách tiếp cận thú vị, nhưng bạn sẽ viết như thế nào vào các khu vực xấu để kiểm tra tác động của các khối xấu đối với mã được lưu trữ?
fixer1234

@ fixer1234, tôi có một trong những thẻ SD này cho biết nó có dung lượng 32 GB nhưng thực tế chỉ có 128 MB. Tôi đặt nó vào máy ảnh của mình và có thể chụp ảnh vượt quá 128 MB nhưng chỉ những bức ảnh đầu tiên có thể được đọc lại. Phần còn lại đã được liệt kê nhưng đã được đọc lại như bị hỏng. Đoán đó là cách họ muốn bạn nhận thấy các vấn đề với thẻ trước khi quá muộn để phàn nàn ...
GuzZzt

11

Ngày xửa ngày xưa, nhiều năm trước, tôi được trả tiền để lấy một bộ ảnh và video tốt nghiệp từ thẻ SD cho một người mẹ khá quẫn trí. Sau khi kiểm tra chặt chẽ, thẻ đã bị hư hỏng về mặt vật lý với vết nứt có thể nhìn thấy ở vỏ ngoài và có một số thành phần xấu, đáng chú ý nhất là một số lĩnh vực quan trọng ban đầu, khiến ngay cả các chương trình phục hồi đáng tin cậy nhất vào thời điểm đó hoàn toàn không đọc được thẻ . Ngoài ra, các công cụ dữ liệu pháp y trở lại sau đó chi phí rất nhiều.

Cuối cùng tôi đã có được một thẻ SD thương hiệu / kích thước giống hệt nhau và viết kết xuất dữ liệu thô tùy chỉnh của riêng tôi và tiện ích khôi phục để sao chép dữ liệu từ thẻ xấu sang thẻ tốt. Mỗi khi tiện ích gặp phải một khu vực xấu, nó sẽ thử lại một số lần trước khi viết tất cả các số 0 cho khu vực đó và thay vì từ bỏ và dừng lại, bỏ qua thất bại và chuyển sang khu vực tiếp theo. Các nỗ lực thử lại đã được thực hiện vì tôi cũng nhận thấy rằng một số lĩnh vực vẫn có tỷ lệ thành công đọc khoảng 40%. Khi dữ liệu đã có trên thẻ SD mới, các công cụ khôi phục đã thất bại trước khi hoạt động hoàn hảo với việc mất / hỏng dữ liệu tối thiểu. Nhìn chung, khoảng 98% tất cả các tệp đã được phục hồi. Một số mục đã bị xóa trước đó cũng được khôi phục vì không có gì thực sự bị xóa - chỉ được đánh dấu như vậy và từ từ ghi đè. Khởi đầu là một bài tập phục hồi dữ liệu hơi nhàm chán đã trở thành một trong những dự án phát triển phần mềm cá nhân đáng nhớ và thú vị hơn của tôi. Trong trường hợp bạn đang tự hỏi, người mẹ đã vui mừng.

Ở mức độ nào, câu chuyện này cho thấy rằng có thể làm hỏng vật lý thẻ SD sao cho dữ liệu vẫn có thể truy cập được nhưng có các khu vực chỉ hoạt động hầu như không có gì và bất cứ điều gì cố gắng đọc từ nó đều gặp khó khăn. Nhựa thẻ SD có xu hướng khá mỏng manh, do đó, uốn cong hoặc cắt thành một số loại rẻ tiền có thể là một mẹo nhỏ. Số dặm của bạn có thể thay đổi.

Bạn cũng có thể hỏi xung quanh tại một số địa điểm phục hồi dữ liệu trong khu vực của bạn. Vì họ chuyên phục hồi dữ liệu từ các thiết bị hỏng hóc hoặc hỏng hóc khác nhau, họ nên có một số đầu vào / mẹo hữu ích và thậm chí có thể có sẵn một số thẻ SD được bán sẵn (ví dụ cho mục đích đào tạo) mà bạn có thể nhận được từ chúng.


2
Bạn đã phát hành tiện ích đó trực tuyến? Đó sẽ là tuyệt vời để thêm vào kho vũ khí của tôi.
Ploni

1
Tại thời điểm này, nó có thể thậm chí sẽ không hoạt động đúng với sự tiến bộ của công nghệ (thậm chí có thể không được biên dịch) và các cuộc gọi hệ thống cấp thấp mà tôi đã sử dụng. Ngoài ra còn có một số công cụ nhân bản ổ đĩa / thiết bị pháp y hiện đại, mã nguồn mở mà tôi muốn sử dụng trước hơn là cố gắng kéo phần mềm cũ của tôi ra khỏi băng phiến.
CubicleSoft

Tôi hy vọng bạn có thể chỉ cần đưa ra một số tham số ddđể khiến nó hoạt động theo cách tương tự như hiện nay. Tôi không chắc chắn mặc dù.
wizzwizz4

@ wizzwizz4, nhìn vào ddresTHER.
hildred

"Ngoài ra, các công cụ dữ liệu pháp y trở lại sau đó tốn rất nhiều tiền." Tôi khá chắc chắn họ vẫn làm.
jpmc26

5

Câu trả lời này là một bản mở rộng về nhận xét của @Ruslan

  1. Đổ đầy thẻ SD của bạn lên tới khoảng 99,9%
  2. Tiếp tục viết lại nội dung của 0,1% còn lại (Viết A -delete-write B-xóa - Viết A ...)
  3. Kiểm tra (định kỳ) xem bạn đã làm hỏng thẻ chưa

Có thể thay thế:

Không chắc chắn liệu điều này có hiệu quả cho mục đích của bạn hay không, nhưng có lẽ nó thực sự sẽ đủ làm hỏng vật lý thẻ của bạn, có thể nhanh hơn rất nhiều.


6
Làm đầy thẻ đến 99% sẽ không giúp ích gì vì toàn bộ mục đích của việc mài mòn là để ngăn chặn chính xác loại thiệt hại sớm này. Vật lý làm hỏng thẻ gần như chắc chắn sẽ dẫn đến một thẻ không khởi tạo được nữa.
Dmitry Grigoryev

2
@DmitryGrigoryev Làm thế nào để mặc san lấp sẽ giúp ích nhiều (cản trở, trong trường hợp này) trừ khi thẻ có nhiều bộ nhớ hơn dung lượng chính thức của nó?
ispiro

12
@ispiro Ví dụ: lần tới khi một khu vực có số lượng ghi cao bị ghi đè, nội dung của nó có thể được hoán đổi với một khu vực có số lượng ghi thấp.
Dmitry Grigoryev

1
@DmitryGrigoryev Nếu tôi diễn giải câu trả lời này một cách chính xác thì nên có thẻ SD không đeo lvling: Electronics.stackexchange.com/a/27626/16104
Dennis Jaheruddin

1
@DennisJaheruddin Vâng, thẻ cũ không làm điều đó. với các thẻ này, đủ để tạo / xóa một tập tin trống cho đến khi khu vực trong bảng phân bổ bị hao mòn.
Dmitry Grigoryev

3

Bạn có thể thử giới thiệu một nguồn cung cấp điện không ổn định hoặc tín hiệu điện áp cao hơn.

Một lỗi phổ biến đối với một họ thiết bị mà tôi biết có mối tương quan chặt chẽ giữa hỏng thẻ SD và tiếp xúc pin không liên tục.


3

Một số thẻ SD cũ, dung lượng thấp (16MB-ish) sử dụng chip flash trong các gói kiểu TSOP / TSSOP. Một hội thảo có khả năng làm lại SMT (nếu bạn đang làm công việc nhúng, bạn có thể có kênh kỹ năng đó, nếu không hãy kiểm tra các công ty nhỏ đang sửa chữa điện thoại / máy tính xách tay cấp độ) có thể tách rời và gắn lại con chip đó, để có thể đọc và ghi nó thô (bao gồm mã ECC) với một lập trình viên thiết bị.

Tuy nhiên, hãy lưu ý rằng bạn sẽ chủ yếu kiểm tra:

  • Làm thế nào thiết bị của bạn sẽ xử lý quang sai thời gian / trục trặc có thể được giới thiệu bằng cách sửa lỗi nội bộ

và trong trường hợp xấu nhất

  • làm thế nào thiết bị của bạn xử lý một thẻ SD bị lỗi cuối cùng.

Nếu bạn chỉ muốn kiểm tra xem nó hoạt động như thế nào với hành vi thất thường vì bất kỳ lý do gì từ thẻ SD, có lẽ tốt nhất là chỉ đưa tiếng ồn điện vào các đường giao diện (ví dụ: bằng cách đặt một công tắc xe buýt FET ở giữa và vào những lúc ngẫu nhiên nó đến một nguồn tín hiệu vô nghĩa (mặc dù mức điện phù hợp).


Cuối cùng, thẻ SD không tạo ra "nhiễu điện", chúng chỉ trả về mã lỗi cho các hoạt động ghi.
Dmitry Grigoryev

2

Liên quan đến câu trả lời của OlafM nhưng khác: bạn có thể lập trình một bộ vi điều khiển của riêng mình để nói giao thức thẻ SD, sau đó mô phỏng bất kỳ hành vi nào bạn muốn nó có.


1

Khu vực Bản ghi khởi động chính của FAT32 có lẽ dễ bị lạm dụng nhất, vì ở mức độ logic, nó luôn cần phải ở cùng một chỗ. (Có lẽ điều này được xử lý bằng cách ánh xạ lại các thành phần xấu, nhưng tôi hơi nghi ngờ rằng điều này được thực hiện trên tất cả các phần cứng.) Vì vậy, bạn có thể chạy sfdisktrong một vòng lặp và xem liệu bạn có thể phá hỏng nó theo cách đó không.

Nhưng tôi sẽ cầu xin bạn làm bất cứ điều gì có thể để cải thiện độ tin cậy của phần cứng, thay vì cố gắng xử lý phần cứng xấu trong phần mềm. Vấn đề là thẻ SD thất bại trong tất cả các cách kỳ lạ. Chúng trở nên không thể đọc được, chúng trở nên khó đọc, cung cấp cho bạn dữ liệu xấu, chúng hết thời gian trong quá trình hoạt động, v.v. Cố gắng dự đoán tất cả các cách mà một thẻ có thể thất bại là rất khó khăn.

Đây là một trong những thất bại yêu thích của tôi, "chế độ dữ liệu lớn":

dữ liệu sd giả lớn

Thẻ SD là sản phẩm tiêu dùng hàng hóa chịu áp lực chi phí rất lớn. Các bộ phận thay đổi nhanh chóng và datasheets là khó khăn để đi. Sản phẩm giả không phải là chưa từng nghe thấy. Đối với lưu trữ giá rẻ, chúng rất khó bị đánh bại, nhưng trong khi SSD ưu tiên độ tin cậy, thì ưu tiên cho thẻ SD là tốc độ, dung lượng và chi phí (có thể không theo thứ tự đó).

Tuyến phòng thủ đầu tiên của bạn là sử dụng bộ phận eMMC có thể hàn với bảng dữ liệu thực từ nhà sản xuất có uy tín thay vì thẻ SD có thể tháo rời. Có, chúng có giá cao hơn trên mỗi GB, nhưng phần này sẽ được sản xuất trong một khoảng thời gian dài hơn và ít nhất bạn biết bạn đang nhận được gì. Hàn phần này xuống cũng tránh được một loạt các vấn đề tiềm ẩn (thẻ bị văng ra trong quá trình viết, tiếp xúc điện kém, v.v.) với một thẻ có thể tháo rời.

Nếu sản phẩm của bạn cần bộ lưu trữ di động hoặc quá muộn để thay đổi bất cứ điều gì, thì hãy xem xét chi tiêu thêm tiền cho thẻ loại "công nghiệp" hoặc coi chúng là đồ vật dùng một lần. Những gì chúng tôi làm (trong linux) là fsckthẻ khi khởi động và định dạng lại nếu có bất kỳ lỗi nào được báo cáo, vì việc định dạng lại được chấp nhận trong trường hợp sử dụng này. Sau đó, chúng tôi fsckmột lần nữa. Nếu nó vẫn báo lỗi sau khi định dạng lại, chúng tôi RMA nó và thay thế phần cứng bằng một biến thể mới hơn sử dụng eMMC.

Chúc may mắn!


Tôi đã cho bạn một ngón tay cái lên. Tôi sử dụng thẻ SD rất nhiều và một lần thất bại một vài lần trong năm. Tôi chưa bao giờ suy nghĩ nhiều nhưng theo kinh nghiệm của riêng tôi, các thẻ thất bại của tôi đã thể hiện các triệu chứng của một lỗi thất bại trước khi chúng cuối cùng trở nên vô giá trị. Tôi nghĩ rằng bạn đang có một cái gì đó ở đây :) Vì vậy, chỉ cần tạo và xóa các tập tin nên thực hiện việc thoát khỏi FAT.
jwzumwalt

1

Có lẽ đây không phải là hướng bạn muốn nhưng tôi thấy việc tháo thẻ sd trong khi radio hoặc máy tính xách tay của tôi đang đọc từ đó đảm bảo thẻ SD bị hỏng khoảng 1/5 hoặc 1/10 lần. Có vẻ như các thẻ không thực hiện tốt việc loại bỏ năng lượng trong quá trình đọc và có lẽ là viết. Sau khi đọc những bình luận của Robert Calhoun bên dưới, điều đó khiến tôi tin rằng nó có thể gây tổn hại cho FAT. Mặc dù tôi không biết tại sao chỉ đọc gây ra sự cố - không nên có bất kỳ văn bản nào đang diễn ra?


điều này có thể làm hỏng FS nhưng không chắc chắn nó sẽ thực sự tạo ra các thành phần xấu
akostadinov

Tôi có thể nói với bạn về một sự thật nó làm hỏng thẻ và yêu cầu định dạng lại. Tôi đã thực hiện điều này nhiều lần với thẻ SD một Raspberry Pie, máy tính xách tay và một số thiết bị gia đình của tôi.
jwzumwalt

2
Yêu cầu định dạng lại! = Gây thiệt hại cho các ngành . Hệ thống tập tin, vâng. Ngành, có thể.
wizzwizz4

1

Nếu thẻ sd của bạn được định dạng FAT32, bạn có thể chỉnh sửa hex 2 chất béo và đánh dấu một khu vực là xấu với mã hex chính xác. Đây chỉ là một mẹo nếu bạn muốn kiểm tra logic một phần mềm được cho là tìm thấy một khu vực xấu tại địa điểm cụ thể này; nó cũng không gây hại cho thẻ sd của bạn, một định dạng lại sẽ đưa nó trở lại trạng thái bình thường.


1
Chào mừng bạn đến với Siêu người dùng! Đây có vẻ là một cách tiếp cận thú vị - bạn có thể giải thích cụ thể cách thực hiện chỉnh sửa hex không? Cảm ơn.
Ben N

Tôi nghĩ rằng lệnh hdparm của Linux sẽ thực hiện thủ thuật: nó sẽ cho phép bạn lưu một số khu vực mà sau này bạn có thể chỉnh sửa và sau đó ghi lại vào thẻ của bạn. bạn cần tìm tài liệu về vfat và man hdparm. Xin lỗi, tôi không ở gần máy tính windows.
Emile De Favas

Các --make-bad-sectorcờ trông đầy hứa hẹn! Tuy nhiên, tôi không thể biết nếu điều này sẽ chỉ hoạt động trong hệ thống linux ban đầu chạy lệnh này. Tôi hy vọng rằng lệnh hdparm --make-bad-sector 20000 /dev/sd#bằng cách nào đó sẽ làm cho sector 20000 trở nên xấu và bị phát hiện là xấu trên thiết bị phần cứng nhúng của tôi không chạy linux. Có suy nghĩ gì không?
Gabe Krause

0

Tôi tự hỏi nếu một kịch bản badblocks Linux có thể được tạo để chạy thử nghiệm phá hủy của nó trên một khu vực duy nhất liên tục trong vài giờ.

Trên một khu vực đơn lẻ, không, bởi vì mã cân bằng hao mòn bên trong thẻ SD sẽ ánh xạ lại các khối logic ở mọi nơi.

Nhưng bạn có thể dễ dàng chạy badblocks -wtrong một vòng lặp cho đến khi nó khiến một số khối xấu xuất hiện. Một cái gì đó như thế này sẽ hoạt động:

while badblocks -w /dev/xx; do :; done

giả sử rằng badblocks trả về 0 nếu không phát hiện thấy khối xấu nào và other 0 nếu không (trang man không nói và tôi đã không kiểm tra mã nguồn.)


-1

Thông thường với thẻ SD / uSD họ thực hiện cân bằng hao mòn nên điều này có thể khá khó khăn. Tùy thuộc vào loại (ô một lớp, đa lớp, TLC, 3D-NAND, v.v.), chu trình ghi cần thiết để phá vỡ nó đủ để làm cạn kiệt nhóm ngành có thể trong nhiều TB.

Tôi đã thực sự kiểm tra điều này với Pro Duo 4GB, 64GB và 256GB, SSD và ngón tay cái, 64 GB K --- s --- sử dụng 4 chip 16 Micron 16GB kéo dài khoảng 3,84TB trước khi nó bị lỗi với một lỗi mềm trong khu vực FAT . 256GB sử dụng kéo dài ít hơn một chút nhưng sẽ ước tính nếu không truy cập chip trực tiếp, nó có thể đã ghi 5TB trước khi cuối cùng bị hỏng MBR nhưng không rõ bộ điều khiển có làm cho nó hoạt động ổn định ở chế độ USB3 không nhưng USB2 gặp nhiều trục trặc hơn trong quá trình đọc lại và nó cũng chạy rất nóng 4GB Duo đã thất bại trong trình đọc khi sao chép dữ liệu, một lần nữa không thể chắc chắn nhưng tương đương với có thể 6 năm sử dụng và máy ảnh cũng hiển thị thông báo "Phục hồi". Ngẫu nhiên thay đổi điện áp cung cấp điện trong quá trình ghi sẽ làm cho nó thất bại rất nhanh. Thẻ nhớ 128GB của tôi bị lỗi sau khoảng 2 năm sử dụng với các triệu chứng tương tự,

Đã xóa các ghi chú không liên quan về các thí nghiệm X-quang.


1
Hiện đã có một số câu trả lời giúp tiêu diệt các hiệu trưởng cụ thể. Đề nghị của bạn về việc tiêu diệt những cái ngẫu nhiên không cung cấp thêm bất cứ điều gì.
Máté Juhász
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.