Thuyết trình lưu chữ dữ liệu.doc

38 632 0
Thuyết trình lưu chữ dữ liệu.doc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Thuyết trình lưu chữ dữ liệu

Trang 1

Lưu Thị Bảo Ngân T072923 Nguyễn Thị Lan Phương T073773 I/ Lưu trữ dữ liệu:

Lưu trữ trên hệ thống nhúng được thực hiện bằng cách sử dụng ROM cho việc lưu trữ của đọc-mã và NVRAM cho việc lưu trữ cho các đọc-ghi dữ liệu Tuy

nhiên, đã được thay thế bởi công nghệ flash, cung cấp nonvol mật độ cao atile lưu trữ Những lợi thế kết hợp với chi phí thấp của đèn flash có cách sử dụng tăng lên đáng kể trong các hệ thống nhúng Chương này bàn về các hệ thống lưu trữ chủ yếu trên các thiết bị đèn flash và hệ thống tập tin khác nhau có sẵn trên Linux có nghĩa là cho các hệ thống nhúng Chương này được chia thành bốn phần

+ Flash nhúng bản đồ cho Linux

+Sự hiểu biết MTD (Memory Công nghệ điều khiển) có nghĩa là hệ thống con chủ yếu cho các thiết bị đèn flash

+ Sự hiểu biết hệ thống tập tin liên kết với các hệ thống nhúng Ở đó chuyên hệ thống tập tin trên bộ nhớ flash và trên bo mạch cho nhúng hệ thống

+Chỉnh cho không gian lưu trữ thêm: kỹ thuật để siết chặt thêm các chương trình lên đèn flash của bạn

1.1 Flash Bản đồ

Trên một hệ thống Linux nhúng, đèn flash thường được sử dụng cho: + Lưu trữ các bộ tải khởi động

+ Lưu trữ hình ảnh hệ điều hành

+ Lưu trữ các ứng dụng và ứng dụng thư viện hình ảnh

Trang 2

+ Lưu trữ các đọc-ghi tập tin (có dữ liệu cấu hình)

Trong 4 phần , phần thứ 3 đầu tiên là chỉ đọc cho hầu hết các hệ thống thực thi thời gian (ngoại trừ ở lần nâng cấp) Đó là nếu bạn sử dụng một bộ tải khởi động bạn nên có ít nhất hai phân vùng: một có bộ tải khởi động và các cái khác đang nắm giữ hệ thống tập tin gốc Các bộ phận của đèn flash có thể được mô tả như bản đồ flash Tại đầu của dự án của bạn, bạn đến với một bản đồ flash Một bản đồ flash như các bản sửa lỗi bộ nhớ trên bản đồ làm thế nào bạn có kế hoạch phân vùng đèn flash để lưu giữ các dữ liệu trên và làm thế nào bạn có kế hoạch để truy cập vào dữ liệu Sau đây là những vấn đề thiết kế khác nhau sẽ đến khi bạn cố gắng đóng băng trên một bản đồ flash

Làm thế nào bạn muốn phân vùng đèn flash? Bạn có thể có hệ điều hành, appli - Cation, và đọc-ghi ảnh trong một phân vùng duy nhất nhưng điều đó làm tăng nguy cơ làm hư hỏng các dữ liệu của toàn bộ hệ thống bởi vì toàn bộ các phân vùng được đọc -ghi Mặt khác bạn có thể đọc dữ liệu chỉ trong một phân vùng riêng biệt và đọc-ghi trong một phân vùng riêng để việc đọc dữ liệu được an toàn từ bất kỳ nhiễm; nhưng sau đó bạn sẽ cần sửa chữa một kích thước trên mỗi phân vùng và đảm bảo rằng kích thước phân vùng sẽ không được vượt quá tại bất kỳ điểm nào trong tương lai

- Làm thế nào bạn muốn truy cập các phân vùng nguyên hoặc bạn muốn sử dụng một hệ thống tập tin? Nguyên phân vùng có thể có ích cho bộ nạp khởi động vì sẽ không đòi hỏi bạn phải có một hệ thống tập tin, bạn có thể đánh dấu một khu vực đèn flash cho giữ dữ liệu cấu hình khởi động và phần còn lại của ngành để giữ khởi động mã Tuy nhiên, đối với phân vùng Linux đang nắm giữ dữ liệu, nó là an toàn hơn để đi qua hệ thống tập tin Những gì hệ thống tập tin bạn chọn cho các dữ liệu cũng đóng một vai trò quan trọng trong tờ bản đồ flash

- Làm thế nào bạn muốn nâng cấp nào? Nâng cấp trên một hệ thống nhúng có thể được thực hiện trên hệ thống đang chạy hoặc từ khởi động Trong trường hợp nâng cấp của bạn liên quan đến việc thay đổi chỉ đọc dữ liệu chỉ tốt hơn để phân vùng flash thành chỉ đọc và đọc-ghi phân vùng để bạn sẽ không phải làm bất cứ sao lưu và phục hồi của đọc-ghi dữ liệu.

1,2 MTD- ( Memory technology devices )

MTD là viết tắt của Công nghệ và thiết bị bộ nhớ, là hệ thống con được sử dụng để xử lý các thiết bị lưu trữ trên tàu Chính xác những gì là công việc của MTD và khi nào và làm thế nào để bạn bao gồm các thiết bị đèn flash theo một

Trang 3

MTD hệ thống con? Làm thế nào để đặt hệ thống tập tin trên một thiết bị MTD? Sau đây là phần trả lời cho những câu hỏi này

1.2.1 Các Mẫu MTD

Mặc dù các thiết bị đèn flash là thiết bị lưu trữ như đĩa cứng, có một số cơ bản khác biệt giữa chúng

+ Thông thường các ổ đĩa cứng có một khu vực kinh tế mà chia một kích thước trang là 4.096 byte Giá trị tiêu chuẩn là 512 byte Các mô hình hệ thống tập tin Linux, đặc biệt là bộ nhớ cache bộ đệm (cache bộ nhớ giữa một hệ thống tập tin và thiết bị khối lớp), là dựa trên giả định này Flash chip trên Mặt khác có kích cỡ khu vực kinh tế lớn; kích thước chuẩn là 64 K

+ Flash lĩnh vực bình thường có thể xoá hoàn toàn trước khi viết thư này để cho họ; cách viết và xóa các hoạt động có thể được độc lập tùy thuộc vào phần mềm sử dụng đèn flash

+Flash chip có một đời giới hạn được quy định tại các điều khoản của số, của khu vực kinh tế một lần là bị xóa Vì vậy, nếu một lĩnh vực cụ thể là nhận bằng văn bản rất thường xuyên của tuổi thọ được rút ngắn Để ngăn chặn này, viết cho một đèn flash

cần phải được phân phối cho tất cả các lĩnh vực Điều này được gọi mặc và san lấp mặt bằng không được hỗ trợ bởi các thiết bị khối

+Bình thường các hệ thống tập tin không thể được sử dụng trên một đèn flash vì những đi thông qua bộ nhớ cache bộ đệm Bình thường đĩa IO chậm; để tăng tốc độ nó lên một bộ nhớ cache trong bộ nhớ được gọi là cửa hàng đệm cache của IO dữ liệu vào đĩa Trừ khi dữ liệu này được flushed trở lại đĩa, hệ thống tập tin là trong một không phù hợp nói Tuy nhiên, các hệ thống nhúng có thể được cung off mà không tắt máy phù hợp và vẫn còn có dữ liệu phù hợp; như vậy thường tập tin hệ thống và thiết bị chặn mô hình không đi tốt với nhúng hệ thống.

Các phương pháp truyền thống để truy cập flash được sử dụng để được thông qua FTL( Flash Translation Layer) Lớp này mô phỏng một thiết bị chặn hành vi trên một đèn flash để có được hệ thống tập tin thường xuyên làm việc trên các thiết bị đèn flash, thay vì việc thay đổi các trình điều khiển ở cấp thấp hoặc giới thiệu một lớp dịch, thay đổi các ứng dụng sử dụng các thiết bị bộ nhớ là họ đang có.Các hệ thống phụ MTD được chia hành hai phần: driver và các ứng dụng

Các thiết bị có thể cho phép các thiết bị bộ nhớ được truy cập trực tiếp sử dụng các tiêu chuẩn mở / đọc / ghi / ioctl cuộc gọi Nhưng trong trường hợp bạn muốn gắn kết một hệ thống tập tin thường xuyên về bộ nhớ điện thoại sử dụng phương pháp truyền thống, bạn vẫn có thể mount nó bằng cách sử dụng khối điều khiển Hai thiết bị mà hiện nay được hỗ trợ bởi MTD: chip flash và đĩa

Trang 4

flash

1.2.2 Flash Chips

Flash các thiết bị đi theo hai hương vị: flash NAND và NOR Mặc dù cả hai người trong số họ đến cùng một khoảng thời gian (NOR được giới thiệu bởi Intel và NAND bởi

Toshiba vào cuối những năm 1980), NOR nhanh chóng bắt kịp với thế giới nhúng

vì nó dễ dàng sử dụng Tuy nhiên khi các hệ thống nhúng đã tiến hóa để có lưu trữ lớn (như các máy nghe nhạc và máy ảnh kỹ thuật số), flash NAND đã trở thành phổ biến cho các ứng dụng lưu trữ dữ liệu Lớp MTD cũng phát triển ban đầu xung quanh đèn flash NOR, nhưng sự hỗ trợ cho NAND đã được bổ sung sau Chip NOR đi theo hai hương vị: cũ không CFI chip và CFI mới hơn tuân thủ CFI thường gặp là viết tắt của Flash diện và là một chuẩn công nghiệp đảm bảo khả năng tương thích giữa các chip flash đến từ các nhà bán cùng Flash chip như bất kỳ thiết bị bộ nhớ khác là luôn ở trong một giai đoạn tiến hóa với chip mới thay thế những cái cũ rất nhanh chóng; này sẽ bao gồm viết lại các trình điều khiển đèn flash Thường thì những thay đổi này sẽ được cấu

hình thay đổi như xóa timeouts, khối các kích cỡ Các tiêu chuẩn CFI được giới thiệu cho phép các nhà cung cấp đèn flash cho phép dữ liệu cấu hình được đọc từ các thiết bị đèn flash Vì vậy, hệ thống phần mềm có thể tra hỏi các thiết bị đèn flash và cấu hình lại chính nó MTD hỗ trợ CFI tập lệnh của Intel và AMD 1.2.3 Flash Disk

Ổ Flash được giới thiệu cho các ứng dụng lưu trữ hàng loạt Như tên gọi của họ cho thấy, ổ đĩa flash có nghĩa là ổ đĩa cục bộ trên một hệ thống dựa trên công nghệ flash Đĩa Flash nữa đi theo hai hương vị: ATA-based và tuyến tính 1.

2 Table 4.1 NOR versus NAND Flash

Các dữ liệu có thể được truy cập tại ngẫu nhiên như SRAM Cái hoạt động từ ngày flash có thể các bit trên một đèn flash 1 Xoá bỏ về các chip NOR xảy ra

Các chip NAND chia lưu trữ thành các khối, được chia thành trang một lần nữa Mỗi trang được chia vào dữ liệu thường xuyên và out-of-band dữ liệu The out-of-dữ liệu ban nhạc được sử dụng để lưu trữ các siêu dữ liệu như ECC (Error-Correction Code) và dữ liệu xấu chặn thông tin

Trang 5

Truy cập dữ liệu

trong

điều khoản của các khối +Viết thường lệ: Viết là quá trình chuyển đổi một từ 1 đến 0 trên flash Khi một chút là làm 0, nó không thể được bằng văn bản vào cho đến khi khối là xoá hoàn toàn, trong đó tập hợp tất cả các bit trong một khối để 1.

Các NAND đèn flash như đèn flash NOR có ba hoạt động cơ bản: đọc, xóa,

và viết Tuy nhiên, không giống như NOR mà có thể truy cập dữ liệu ngẫu nhiên, NAND những lần đọc và viết

được thực hiện trong điều khoản của các trang trong khi xóa bỏ xảy ra trong điều khoản của các khối

Bảng Giao

Diện Đây là các kết nối như thiết bị SRAM bình thường địa chỉ và xử lý dữ liệu xe buýt.

Có nhiều cách của kết nối với đèn flash NAND CPU khác nhau trên khắp các nhà cung cấp NAND truy cập được thực hiện bởi kết nối dữ liệu tiếp từ NOR vì nó được kết nối trực tiếp đến địa chỉ / dữ liệu bus

Nếu mã là trong flash NAND nó cần đến được sao chép vào bộ nhớ cho thực hiện.

Performanc Flash NOR được đặc trưng bằng cách xóa chậm, chậm viết, và nhanh chóng đọc.

Flash NAND được đặc trưng bởi nhanh xóa, nhanh chóng viết, và đọc nhanh.

Bad blocks Chip flash NOR không dự kiến sẽ có xấu khối bởi vì họ có được thiết kế để giữ hệ thống dữ liệu.

Những nhấp nháy được thiết kế một về cơ bản là một thiết bị lưu trữ giá thấp hơn, do đó, mong rằng họ có khối xấu Thông thường các chip flash đến với xấu đánh dấu trong lĩnh vực này Cũng NAND flash bị nhiều lĩnh vực các vấn đề của bit flipping nơi một chút lộn khi nhận được bằng văn bản đến; này được phát hiện bởi lỗi thuật toán điều chỉnh được gọi là ECC EDC,

Trang 6

được thực hiện hoặc trong phần cứng hay phần mềm.

Usage Đây là những cơ bản được sử dụng cho Mã thực hiện Khởi

Đây là những chủ yếu được sử dụng như lưu trữ thiết bị cho

3. ATA dựa trên đĩa flash sử dụng giao diện đĩa tiêu chuẩn cho giao diện trên bo mạch chủ, để họ xuất hiện như là IDE đĩa trên hệ thống Một bộ điều khiển ngồi trên các silic giống như đèn flash, nhưng không thực hiện FTL để bản đồ flash đến lĩnh vực Ngoài ra, nó thực hiện các giao thức để đĩa

flash xuất hiện như một đĩa bình thường vào hệ thống Đây là phương pháp lấy bằng CompactFlash thiết kế Ưu điểm chính của việc sử dụng cách tiếp cận này được phần mềm tương thích nhưng bất lợi là nó đã được đắt hơn bởi vì các giải pháp toàn diện đã được thực hiện trong phần cứng Linux xử lý các thiết bị này như thường xuyên thiết bị IDE và trình điều khiển cho các thiết bị này có thể được tìm thấy trong drivers / ide thư mục

Các đĩa flash tuyến tính là cơ chế đó là làm việc của các M2000 hệ thống Đây là những NAND dựa trên các thiết bị có khả năng khởi động (nó có một ROM khởi động được chấp nhận như là một phần mở rộng BIOS), một bộ điều khiển mỏng mà sử dụng các thuật toán sửa lỗi, và phần mềm nào các trueFFFS FTL thi đua Vì thế những thiết bị này có thể được sử dụng để trực tiếp khởi động hệ thống và có thể được sử dụng để chạy các hệ thống tập tin thường xuyên trên một thiết bị blocklike Những cái này ít tốn kém khi so sánh với các nhấp nháy nhỏ gọn nhưng tại cùng một thời gian cho tất cả các tính năng cần thiết như là một thiết bị chặn Bởi vì người truy cập

những thiết bị đèn flash tương tự như một thiết bị truy cập vào bộ nhớ, Linux thực hiện các trình điều khiển cho các mô hình theo MTD 1,3 MTD Kiến trúc

Một thiết bị flash-based:

Trang 7

+Linux hỗ trợ các trình điều khiển đèn flash của tôi, nếu không làm cách nào để cổng driver?

+ Nếu trình điều khiển Linux hỗ trợ đèn flash của tôi, làm cách nào để làm cho nó phát hiện các flash trên

- Các MTD kiến trúc này được chia thành các thành phần sau:

-MTD Điểm: này cung cấp giao diện giữa các trình điều khiển đèn flash thấp cấp và các ứng dụng Nó thực hiện chế độ ký tự và thiết bị cấm Thấp cấp trình điều khiển đèn flash: phần này nói về NOR và NAND dựa trên Chip flash chỉ BSP cho flash: Một đèn flash có thể được duy nhất một kết nối trên máy bay Ví dụ, một đèn flash NOR có thể được kết nối trực tiếp trên xe buýt vi xử lý hoặc có thể được kết nối với một PCI bus bên ngoài Việc truy cập vào flash cũng có thể được duy nhất tùy thuộc vào loại vi xử lý Lớp BSP làm cho đèn flash trình điều khiển làm việc với bất kỳ hội đồng / bộ xử lý Người sử dụng có để cung cấp các chi tiết cách flash là ánh xạ ở trên diễn đàn, chúng tôi chỉ đến đoạn này của mã như đèn flash lập bản đồ, trình điều khiển

- MTD ứng dụng: Đây có thể là hạt nhân submodules như JFFS2 hoặc - NFTL, hoặc sử dụng các ứng dụng không gian như quản lý nâng cấp - Con số 4,2 cho thấy cách các thành phần tương tác với nhau và

phần còn lại của hạt nhân.

1.3.1 mtd_info Cấu trúc dữ liệu

mtd_infois trái tim của phần mềm MTD Nó được định nghĩa trong tập tin này bao gồm :

Linux / mtd / trình điều khiển phần mềm mtd.h.The ngày phát hiện một đèn flash cụ thể lấp đầy lên cấu trúc này với các con trỏ đến tất cả các công việc cần thiết (như xóa, đọc, viết, vv) được sử dụng bởi lõi MTD và các ứng dụng

MTD Danh sách các cơ cấu mtd_info cho tất cả các thiết bị nhất là giữ trong một bảng gọi là mtd_table []

1.3.2 Giao diện giữa MTD Core và Low-Level Flash Drivers

Như đã đề cập ở trên, các trình điều khiển cấp thấp flash xuất khẩu các chức năng sau đây

Trang 8

- Read_ecc () / write_ecc () - Read_oob () / write_oob ()

Nếu bạn có một CFI-bật đèn flash NOR hoặc IO một thiết bị tiêu chuẩn ánh xạ 8 bit chip NAND Nếu không, bạn cần phải thực hiện điều khiển MTD Một số thói quen có thể yêu cầu phần cứng hỗ trợ, vì thế bạn cần kiểm tra bảng đèn flash dữ liệu của bạn để thực hiện các chức năng

Mục dưới đây cho các mô tả về công việc khác hơn là đọc (), viết (), và xóa () thói quen

+ khóa () và mở khóa (): Đây là được sử dụng để thực hiện flash khóa; một phần flash được có thể viết hay xóa bảo vệ để ngăn chặn tình cờ ghi đè của hình ảnh Ví dụ, bạn có thể khóa tất cả các phân vùng trên mà bạn có chỉ đọc hệ thống tập tin cho hầu hết các hệ thống thực thi trừ khi nâng cấp xong Đây là những xuất khẩu sang các applications người sử dụng ioctls MEMLOCK và MEMUNLOCK

+ đồng bộ (): Điều này được gọi là khi một thiết bị được đóng cửa hoặc phát hành và nó bảo đảm rằng đèn flash là trong trạng thái an toàn

+đình chỉ () andresume (): Đây là những chỉ hữu dụng khi bạn bật CONFIG_PM lựa chọn xây dựng hạt nhân

+ read_ecc () và write_ecc (): Những thói quen áp dụng cho flash NAND chỉ ECC là sửa chữa sai sót mã được sử dụng để phát hiện bất kỳ bit xấu trong một trang Những thói quen hành xử như là đọc bình thường () / ghi (), ngoại trừ rằng một bộ đệm riêng biệt có chứa ECC cũng đọc hay viết cùng với các dữ liệu

+read_oob () và write_oob (): Những thói quen áp dụng cho flash NAND chỉ Mỗi flash NAND được chia thành hai 256 - hoặc 512-trang byte; mỗi của các trang này có chứa một bổ sung 8 - hoặc 16-byte phụ tùng khu vực được gọi là out -dữ liệu của ban nhạc, các cửa hàng của ECC, xấu chặn thông tin, và tập tin bất kỳ hệ thống dữ liệu phụ thuộc Các chức năng này được sử dụng để truy cập out-of - ban nhạc dữ liệu

1,4 mẫu MTD driver cho NOR Flash

Bây giờ chúng ta đi vào chi tiết của một trình điều khiển đèn flash NOR cho Linux Các tập tin mtd.c có chứa mã cho một đèn flash NOR, đơn giản, dựa trên các giả định sau đây

+Các thiết bị đèn flash có một khu vực duy nhất để xóa tất cả các ngành có cùng một cỡ (An xóa vùng được định nghĩa là một khu vực của một con chip có chứa thành phần của cùng kích thước.)

+ Chip flash được truy cập bằng cách sử dụng một 4-byte xe buýt chiều rộng

+ Không có khóa, mở khóa, đình chỉ, và phục hồi chức năng

Trang 9

Để đơn giản vì lợi ích của chúng tôi giả định rằng các thông tin sau đây có sẵn

đối với chúng tôi như macro hoặc chức năng

- DUMMY_FLASH_ERASE_SIZE: The flash xóa cỡ khu vực - DUMMY_FLASH_SIZE: The flash kích thước

- PROBE_FLASH (): Chức năng thăm dò rằng nếu đèn flash NOR có mặt tại địa chỉ cụ thể

-WRITE_FLASH_ONE_WORD: Chức năng / macro để viết một từ ở một xác định địa chỉ

-ERASE_FLASH_SECTOR: Chức năng để xóa một lĩnh vực nhất định -DUMMY_FLASH_ERASE_TIME: Mỗi thời gian trong lĩnh vực xóa jiffies

Trước tiên chúng ta hãy đặt tất cả các tiêu đề các tập tin, chúng tôi muốn cho các driver của đèn flash của chúng tôi.

20.#define WRITE_FLASH_ONE_WORD(map, start, addr, data) 21.#define ERASE_FLASH_SECTOR(map, start, addr)

Trang 10

file include / linux / mtd / map.h Cấu trúc này được giải thích thêm chi tiết tại mục 4.5

-bắt đầu: Đây là địa chỉ bắt đầu của chip flash NOR Đây là địa chỉ thường được sử dụng cho các lập trình flash với lệnh xóa hoặc ghi dữ liệu

- addr: Đây là địa chỉ bù đắp từ chipâ € ™ s bắt đầu, nơi dữ liệu cần phải được viết hoặc khu vực cần phải được xoá hoàn toàn

- dữ liệu: đối số này cho viết API là một 32-bit, từ đó xác định những gì

cần phải được bằng văn bản tại địa chỉ được chỉ định

Tiếp theo, chúng tôi xác định một cấu trúc chứa thông tin cá nhân để đèn flash này.

25.struct dummy_private_info_struct 26.{

27.int number_of_chips; /* Number of flash chips */ 28.int chipshift; /* Size of each flash */

29.struct flchip *chips; 30.} ;

31. Một lời giải thích ngắn gọn về từng lĩnh vực cấu trúc như sau

number_of_chips: Như tên cho thấy, điều này chỉ rõ có bao nhiêu chip liên tiếp có thể được tìm thấy tại địa chỉ obe pr API

PROBE_FLASH () là bắt buộc để trở về con số này vào mã điều khiển

chipshift: Đó là tổng số bit địa chỉ cho thiết bị, mà

được sử dụng để tính toán offsets địa chỉ và tổng số byte trong đó

Tiếp theo là danh sách các chức năng tĩnh cần được khai báo 32.static struct mtd_info * dummy_probe(struct map_info *);

33. static void dummy_destroy(struct mtd_info *);

34.static int dummy_flash_read(struct mtd_info *, loff_t , size_t , 35.size_t *, u_char *);

36.static int dummy_flash_erase(struct mtd_info *, 37.struct erase_info *);

Trang 11

38.static int dummy_flash_write(struct mtd_info *, loff_t , 39.size_t , size_t *, const u_char *);

40.static void dummy_flash_sync(struct mtd_info *);

41. Các mtd_chip_driver cấu trúc được sử dụng bởi những thói quen khởi dummy_flash_init () và các chức năng thoát dummy_flash_exit () Cái hầu hết các lĩnh vực quan trọng là probethat được gọi là để phát hiện nếu một flash của một đặc biệt là loại có mặt tại một địa chỉ được chỉ định ở trên diễn đàn Lớp MTD duy trì một danh sách các cấu trúc Những thói quen thăm dò được truy cập khi

do_map_probe thường trình () được gọi bằng đèn flash, lập bản đồ điều

49. Bây giờ chúng tôi xác định những thói quen thăm dò Chức năng này xác nhận nếu một đèn flash có thể được tìm thấy tại bản đồ địa chỉ-> virt, được làm đầy bởi các trình điều khiển lập bản đồ Nếu nó là có thể phát hiện một đèn flash, sau đó nó phân bổ cơ cấu mtd và dummy_private_info cấu trúc Cơ cấu mtd là đầy khác nhau driver thói quen như đọc, viết, xóa, vv Cái cơ cấu dummy_private_info là đầy đèn flash thông tin cụ thể Tại chức năng thăm dò là những hàng đợi chờ và mutex này Đây là được sử dụng để ngăn chặn đồng thời truy cập vào flash, mà là một yêu cầu cho hầu hết các thiết bị đèn flash Do đó bất cứ khi nào một hoạt động như đọc hoặc viết cần phải được thực hiện, Điều này được thực hiện bằng cách sử dụng lĩnh vực nhà nước, được thiết lập để FL_READY lúc khởi tạo Nếu đèn flash là đang được sử dụng, sau đó tiến trình cần chặn trên hàng đợi chờ cho đến khi nó được đánh thức Các mutex (spinlock) được dùng để ngăn ngừa những vấn đề chủng tộc trên SMP sự mua trước máy hoặc trong trường hợp được kích hoạt

Tiếp theo, chúng tôi đi đến thói quen đọc Những thói quen đọc đăng ký với MTD lõi là dummy_flash_read (), được gọi là để đọc lennumber của byte từ đèn flash bù đắp từ Bởi vì các chip span có thể viết nhiều,

các dummy_flash_read_one_chip chức năng () được gọi là nội bộ để đọc dữ liệu từ một con chip duy nhất Bây giờ chúng ta đi đến thói quen viết

Thường đăng ký với MTD lõi là dummy_flash_write () Bởi vì viết có thể bắt đầu từ removed địa chỉ, chức năng bảo đảm rằng nó bộ đệm dữ liệu

Trang 12

trong trường hợp như vậy và trong lần lượt gọi

dummy_flash_write_oneword chức năng () để viết 32-bit dữ liệu đến 32-bit địa chỉ liên kết.

50. Các chức năng xoá đăng ký để lõi MTD là dummy_flash_erase ()

Chức năng này cần đảm bảo rằng xoá địa chỉ được chỉ định là khu vực kinh tế

liên kết và số byte được xoá hoàn toàn là một của nhiều kích cỡ khu vực Các dummy_flash_erase_one_block chức năng () được gọi là nội bộ; này erases một trong những khu vực kinh tế tại một địa chỉ nhất định Do các khu vực xóa là tốn thời gian,

51.Listing 4.1 Dummy Probe Function

57.unsigned long size;

58.struct dummy_private_info_struct * dummy_private_info =

59.kmalloc(sizeof(struct dummy_private_info_struct), GFP_KERNEL);

Trang 13

113 static inline int dummy_flash_read_one_chip(struct map_info *map, 114 struct flchip *chip, loff_t addr, size_t len, u_char *buf)

116 DECLARE_WAITQUEUE(wait, current); 117.

118 again:

Trang 14

141 static int dummy_flash_read(struct mtd_info *mtd, loff_t from, 142 size_t len,size_t *retlen, u_char *buf)

144 struct map_info *map = mtd->priv;

145 struct dummy_private_info_struct *priv = map->fldrv_priv;

151 /* Find the chip number and offset for the first chip */ 152 chipnum = (from >> priv->chipshift);

153 ofs = from & ((1 << priv->chipshift) - 1);

Trang 15

160 /* Check whether the read spills over to the next chip */ 161 if( (len + ofs - 1) >> priv->chipshift)

162 to_read = (1 << priv->chipshift) - ofs; 163 else

164 to_read = len;

165 if( (ret = dummy_flash_read_one_chip(map, &priv->chips[chipnum], 166 ofs, to_read, buf)))

ERASE_TIME jiffies Vào cuối những xóa, lõi MTD là tín hiệu rằng việc xóa xong bằng cách thiết lập xóa nhà nước để MTD_ERASE_DONE và sau đó bất cứ xóa callbacks được đăng ký có được gọi trước khi trở về Danh mục 4,4 để thực hiện xóa thói quen

Chức năng đồng bộ được gọi khi các thiết bị đèn flash được đóng lại Chức năng này có để đảm bảo rằng không có các chip flash đang sử dụng tại thời điểm đóng cửa;

nếu sau đó chức năng làm cho quá trình kêu gọi chờ đợi cho đến khi tất cả các con chip đi vào tình trạng không sử dụng, mục 4,5 cho các chức năng đồng bộ flash dummy thực hiện

Chức năng dummy_destroyis gọi trong trường hợp điều khiển đèn flash

181 struct dummy_private_info_struct *priv = 182. ((struct map_info *)mtd->priv)->fldrv_priv; 183 kfree(priv->chips);

Trang 16

207 static inline int dummy_flash_write_oneword(struct map_info *map, 208 struct flchip *chip, loff_t addr, u32 datum)

Trang 17

236 static int dummy_flash_write(struct mtd_info *mtd, loff_t from, 237 size_t len,size_t *retlen, const u_char *buf)

239 struct map_info *map = mtd->priv;

240 struct dummy_private_info_struct *priv = map->fldrv_priv;

250 chipnum = (from >> priv->chipshift); 251 ofs = from & ((1 << priv->chipshift) - 1); 252.

253 /* First check if the first word to be written is aligned */ 254 if(ofs & 3)

256 unsigned int from_offset = ofs & (~3);

257 unsigned int orig_copy_num = ofs - from_offset; 258 unsigned int to_copy_num = (4 - orig_copy_num); 259 unsigned int i, len;

Trang 18

265 /* Overwrite with the new contents from buf[] */ 266 for(i=0; i < to_copy_num; i++)

Trang 19

323 static int dummy_flash_erase_one_block(struct map_info *map, 324 struct flchip *chip, unsigned long addr)

Ngày đăng: 25/08/2012, 11:26

Từ khóa liên quan

Trích đoạn

Tài liệu cùng người dùng

Tài liệu liên quan