Lưu ý
Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.
- Bản gốc:
- Người dịch:
Google Translate (machine translation)
- Phiên bản gốc:
8541d8f725c6
Cảnh báo
Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.
Khung SPI NOR¶
Cách đề xuất bổ sung flash mới¶
Hầu hết các đèn flash SPI NOR đều tuân thủ JEDEC JESD216 Tiêu chuẩn Thông số có thể phát hiện được của Flash nối tiếp (SFDP). SFDP mô tả khả năng chức năng và tính năng của các thiết bị flash nối tiếp trong một bộ tiêu chuẩn của các bảng tham số chỉ đọc nội bộ.
Trình điều khiển SPI NOR truy vấn các bảng SFDP để xác định các thông số và cài đặt của flash. Nếu đèn flash xác định các bảng SFDP có thể bạn sẽ không cần mục flash nào cả, thay vào đó dựa vào trình điều khiển flash chung để thăm dò flash chỉ dựa trên trên dữ liệu SFDP của nó. Tất cả những gì người ta phải làm là chỉ định “jedec,spi-nor” tương thích trong cây thiết bị.
Tuy nhiên, có những trường hợp bạn cần xác định đèn flash rõ ràng nhập cảnh. Điều này thường xảy ra khi đèn flash có cài đặt hoặc hỗ trợ không nằm trong các bảng SFDP (ví dụ: Bảo vệ khối) hoặc khi đèn flash chứa dữ liệu SFDP bị sai lệch. Nếu sau này, người ta cần triển khai các móc ZZ0000ZZ để sửa đổi SFDP các thông số có giá trị đúng.
Yêu cầu kiểm tra tối thiểu¶
Thực hiện tất cả các bài kiểm tra từ bên dưới và dán chúng vào phần nhận xét của cam kết phần, sau điểm đánh dấu ZZ0000ZZ.
Chỉ định bộ điều khiển mà bạn đã sử dụng để kiểm tra đèn flash và chỉ định tần suất sử dụng đèn flash, ví dụ:
- Đèn flash này được gắn trên bảng X và đã được thử nghiệm ở Y
tần số bằng bộ điều khiển SPI Z (tương thích).
Kết xuất các mục nhập sysfs và in tổng kiểm tra md5/sha1/sha256 SFDP:
- root@1:~# cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
sst26vf064b root@1:~# cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id bạn trai2643 root@1:~# cat /sys/bus/spi/devices/spi0.0/spi-nor/nhà sản xuất sst root@1:~# xxd -p /sys/bus/spi/devices/spi0.0/spi-nor/sfdp 53464450060102ff00060110300000ff81000106000100ffbf0001180002 0001ffffffffffffffffffffffffffffffffffd20f1ffffffff0344eb086b 083b80bbfeffffffffff00ffffff440b0c200dd80fd810d820914824806f 1d81ed0f773830b030b0f7ffffff29c25cfff030c080ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0004fff37f0000f57f0000f9ff 7d00f57f0000f37f0000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffbf2643ffb95ffdff30f260f332ff0a122346ff0f19320f1919ffffff ffffffff00669938ff05013506040232b03072428de89888a585c09faf5a ffff06ec060c0003080bffffffffff07ffff0202ff060300fdfd040700fc 0300fefe0202070e root@1:~# sha256sum /sys/bus/spi/devices/spi0.0/spi-nor/sfdp 428f34d0461876f189ac97f93e68a05fa6428c6650b3b7baf736a921e5898ed1 /sys/bus/spi/devices/spi0.0/spi-nor/sfdp
- Vui lòng kết xuất các bảng SFDP bằng ZZ0000ZZ. Nó cho phép chúng tôi làm
hoạt động ngược lại và chuyển đổi hexdump thành nhị phân với ZZ0001ZZ. Việc kết xuất dữ liệu SFDP bằng ZZ0002ZZ được chấp nhận, nhưng ít được mong muốn hơn.
Kết xuất dữ liệu gỡ lỗi:
- root@1:~# cat /sys/kernel/debug/spi-nor/spi0.0/capabilities
- Hỗ trợ chế độ đọc bằng đèn flash
- 1S-1S-1S
mã lệnh 0x03 chu kỳ chế độ 0 chu kỳ giả 0
- 1S-1S-1S (đọc nhanh)
mã lệnh 0x0b chu kỳ chế độ 0 chu kỳ giả 8
- 1S-1S-2S
mã lệnh 0x3b chu kỳ chế độ 0 chu kỳ giả 8
- 1S-2S-2S
mã lệnh 0xbb chu kỳ chế độ 4 chu kỳ giả 0
- 1S-1S-4S
mã lệnh 0x6b chu kỳ chế độ 0 chu kỳ giả 8
- 1S-4S-4S
mã lệnh 0xeb chu kỳ chế độ 2 chu kỳ giả 4
- 4S-4S-4S
mã lệnh 0x0b chu kỳ chế độ 2 chu kỳ giả 4
- Các chế độ chương trình trang được hỗ trợ bằng đèn flash
- 1S-1S-1S
mã lệnh 0x02
- root@1:~# cat /sys/kernel/debug/spi-nor/spi0.0/params
tên sst26vf064b id bạn trai 26 43 bạn trai 26 43 kích thước 8,00 MiB viết cỡ 1 kích thước trang 256 địa chỉ nbyte 3 cờ HAS_LOCK ZZ0000ZZ SOFT_RESET | SWP_IS_VOLATILE
- các mã lệnh
- đọc 0xeb
chu kỳ giả 6
xóa 0x20 chương trình 0x02 Phần mở rộng 8D không có
- giao thức
đọc 1S-4S-4S viết 1S-1S-1S đăng ký 1S-1S-1S
- lệnh xóa
20 (4,00 KiB) [0] d8 (8,00 KiB) [1] d8 (32,0 KiB) [2] d8 (64,0 KiB) [3] c7 (8,00 MiB)
- bản đồ ngành
vùng (ở dạng hex) cờ ZZ0000ZZ ----------+--------------+---------- 00000000-00007fff ZZ0001ZZ 00008000-0000ffff ZZ0002ZZ 00010000-007effff ZZ0003ZZ 007f0000-007f7fff ZZ0004ZZ 007f8000-007fffff ZZ0005ZZ
Sử dụng ZZ0000ZZ và xác minh rằng các thao tác xóa, đọc và phân trang của chương trình hoạt động tốt:
- root@1:~# dd if=/dev/urandom of=./spi_test bs=1M count=2
bản ghi 2+0 trong 2+0 hồ sơ hết Đã sao chép 2097152 byte (2,1 MB, 2,0 MiB), 0,848566 giây, 2,5 MB/s
- root@1:~# mtd_debug xóa /dev/mtd0 0 2097152
Đã xóa 2097152 byte khỏi địa chỉ 0x00000000 trong flash
- root@1:~# mtd_debug đọc /dev/mtd0 0 2097152 spi_read
Đã sao chép 2097152 byte từ địa chỉ 0x00000000 trong flash sang spi_read
- root@1:~# hexdump spi_read
0000000 ffff ffff ffff ffff ffff ffff ffff ffff * 0200000
- root@1:~# sha256sum spi_read
4bda3a28f4ffe603c0ec1258c0034d65a1a0d35ab7bd523a834608adabf03cc5 spi_read
- root@1:~# mtd_debug viết /dev/mtd0 0 2097152 spi_test
Đã sao chép 2097152 byte từ spi_test sang địa chỉ 0x00000000 trong flash
- root@1:~# mtd_debug đọc /dev/mtd0 0 2097152 spi_read
Đã sao chép 2097152 byte từ địa chỉ 0x00000000 trong flash sang spi_read
- root@1:~# sha256sum spi*
c444216a6ba2a4a66cccd60a0dd062bce4b865dd52b200ef5e21838c4b899ac8 spi_read c444216a6ba2a4a66cccd60a0dd062bce4b865dd52b200ef5e21838c4b899ac8 spi_test
- Nếu đèn flash bị xóa theo mặc định và lần xóa trước đó bị bỏ qua,
chúng tôi sẽ không bắt được nó, do đó hãy kiểm tra lại việc xóa:
- root@1:~# mtd_debug xóa /dev/mtd0 0 2097152
Đã xóa 2097152 byte khỏi địa chỉ 0x00000000 trong flash
- root@1:~# mtd_debug đọc /dev/mtd0 0 2097152 spi_read
Đã sao chép 2097152 byte từ địa chỉ 0x00000000 trong flash sang spi_read
- root@1:~# sha256sum spi*
4bda3a28f4ffe603c0ec1258c0034d65a1a0d35ab7bd523a834608adabf03cc5 spi_read c444216a6ba2a4a66cccd60a0dd062bce4b865dd52b200ef5e21838c4b899ac8 spi_test
Kết xuất một số dữ liệu liên quan khác:
- root@1:~# mtd_debug thông tin/dev/mtd0
mtd.type = MTD_NORFLASH mtd.flags = MTD_CAP_NORFLASH mtd.size = 8388608 (8M) mtd.erasesize = 4096 (4K) mtd.writesize = 1 mtd.oobsize = 0 vùng = 0