Vietnamese (machine translation)

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:

Writing Device Drivers for Zorro Devices

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/.

Viết trình điều khiển thiết bị cho thiết bị Zorro

Tác giả:

Viết bởi Geert Uytterhoeven <geert@linux-m68k.org>

Sửa đổi lần cuối:

Ngày 5 tháng 9 năm 2003

Giới thiệu

Xe buýt Zorro là xe buýt được sử dụng trong dòng máy tính Amiga. Nhờ có AutoConfig(tm), đó là 100% Plug-and-Play.

Có hai loại xe buýt Zorro, Zorro II và Zorro III:

  • Không gian địa chỉ Zorro II là 24-bit và nằm trong 16 MB đầu tiên của

    Bản đồ địa chỉ của Amiga.

  • Zorro III là phần mở rộng 32-bit của Zorro II, tương thích ngược

    với Zorro II. Không gian địa chỉ Zorro III nằm ngoài 16 MB đầu tiên.

Thăm dò thiết bị Zorro

Thiết bị Zorro được tìm thấy bằng cách gọi ZZ0000ZZ, trả về một con trỏ tới thiết bị ZZ0001ZZ Zorro với ID Zorro được chỉ định. Vòng thăm dò đối với bảng có Zorro ID ZZ0002ZZ trông giống như:

struct zorro_dev *z = NULL;

trong khi ((z = zorro_find_device(ZORRO_PROD_xxx, z))) {
if (!zorro_request_zone(z->resource.start+MY_START, MY_SIZE,

“Lời giải thích của tôi”))

...

}

ZZ0000ZZ hoạt động như một ký tự đại diện và tìm thấy bất kỳ thiết bị Zorro nào. Nếu tài xế của bạn hỗ trợ các loại bảng khác nhau, bạn có thể sử dụng cấu trúc như

struct zorro_dev *z = NULL;

trong khi ((z = zorro_find_device(ZORRO_WILDCARD, z))) {
if (z->id != ZORRO_PROD_xxx1 && z->id != ZORRO_PROD_xxx2 && ...)

tiếp tục;

if (!zorro_request_zone(z->resource.start+MY_START, MY_SIZE,

“Lời giải thích của tôi”))

...

}

Tài nguyên Zorro

Trước khi bạn có thể truy cập vào sổ đăng ký của thiết bị Zorro, bạn phải đảm bảo rằng nó chưa được sử dụng. Việc này được thực hiện bằng cách sử dụng tính năng quản lý tài nguyên không gian bộ nhớ I/O chức năng:

request_mem_khu vực()

phát hành_mem_khu vực()

Các phím tắt để xác nhận toàn bộ không gian địa chỉ của thiết bị cũng được cung cấp

zorro_request_device

zorro_release_device

Truy cập không gian địa chỉ Zorro

Các vùng địa chỉ trong tài nguyên thiết bị Zorro là địa chỉ xe buýt Zorro các vùng. Do ánh xạ địa chỉ vật lý-bus nhận dạng trên xe buýt Zorro, chúng cũng là địa chỉ vật lý CPU.

Việc xử lý các vùng này phụ thuộc vào loại không gian Zorro:

  • Không gian địa chỉ Zorro II luôn được ánh xạ và không cần phải ánh xạ

    rõ ràng bằng cách sử dụng z_ioremap().

Chuyển đổi từ địa chỉ bus/địa chỉ Zorro II vật lý sang địa chỉ ảo kernel

và ngược lại được thực hiện bằng cách sử dụng:

virt_addr = ZTWO_VADDR(bus_addr);

bus_addr = ZTWO_PADDR(virt_addr);

  • Không gian địa chỉ Zorro III trước tiên phải được ánh xạ rõ ràng bằng cách sử dụng z_ioremap()

    trước khi nó có thể được truy cập:

virt_addr = z_ioremap(bus_addr, kích thước);

...

z_iounmap(virt_addr);

Tài liệu tham khảo

  1. linux/include/linux/zorro.h

  2. linux/include/uapi/linux/zorro.h

  3. linux/include/uapi/linux/zorro_ids.h

  4. linux/arch/m68k/include/asm/zorro.h

  5. linux/trình điều khiển/zorro

  6. /proc/bus/zorro