Phần mở rộng BIOS (ROM tùy chọn) hoạt động như thế nào?


4

Làm thế nào để phần mở rộng BIOS (ROM tùy chọn) hoạt động? Tôi hiểu rằng một thiết bị được cài đặt có thể có BIOS riêng có thêm tính năng cho hệ thống nhưng tôi không chắc chắn về cách chúng được thiết lập.

Tôi tiếp tục đọc phạm vi địa chỉ sau 0x0C0000 đến 0x0F0000 được sử dụng nhưng tôi không hiểu mục đích này được sử dụng để làm gì. Như thể các ROM được lưu trữ tại các địa chỉ này nhưng tôi không thấy nó hoạt động như thế nào. Điều gì xảy ra nếu bạn cài đặt 2 thiết bị mà cả hai dự kiến ​​sẽ ở 0x0C0000?

Sau đó, BIOS nhảy tới ROM tùy chọn và bắt đầu chạy từ đó, câu hỏi tiếp theo của tôi là khi ROM ghi vào Bảng Vector ngắt và móc một ngắt để trỏ đến chính nó, địa chỉ này dẫn đến địa chỉ nào?

Ví dụ trên thẻ VGA, địa chỉ nào sẽ nối INT 10h đến?

Hoặc là toàn bộ ROM tùy chọn được ánh xạ vào một khu vực từ 0x0C0000 đến 0x0F0000 và IVT sẽ trỏ đến một nơi nào đó trong phạm vi này?

Tôi biết điều này liên quan đến các công nghệ cũ không còn được sử dụng nữa (ví dụ: sử dụng các ngắt) nhưng tôi quan tâm đến cách chúng hoạt động.

Nếu bất cứ ai có thể giúp trả lời các câu hỏi trên hoặc chỉ đưa ra một cái nhìn tổng quan ngắn gọn, nó sẽ được đánh giá rất cao,

Cảm ơn


Bạn đang đọc cái này ở đâu? Cách duy nhất để thêm các tính năng vào BIOS là áp dụng một phần sụn khác.
Ramhound

@Ramhound chỉ cần google Tùy chọn ROM hoặc phần mở rộng BIOS
RJSmith92

Tôi đã làm. Tôi muốn biết chính xác những gì bạn đọc.
Ramhound

Câu trả lời:


6

Trong những ngày IBM PC, với bus ISA, mỗi thiết bị chỉ cần sử dụng một địa chỉ khác nhau. Thông thường, họ có bộ nhảy phần cứng hoặc công tắc nhúng mà bạn có thể định cấu hình để thay đổi địa chỉ để tránh xung đột. Với sự ra đời của bus PCI, các địa chỉ phần cứng được cấu hình tự động bởi bios hệ thống để gán cho mỗi thiết bị một địa chỉ duy nhất.

Nếu oprom móc một ngắt, nó sẽ trỏ đến một địa chỉ trong địa chỉ được gán mà oprom sống. Trong trường hợp VGA bios, thông thường nằm trong khối 0xC0000. Sử dụng trình gỡ lỗi msdos, bạn có thể kiểm tra bảng vectơ ngắt để xem điểm vào và bắt đầu tháo rời các hướng dẫn ở đó để xem những gì chúng đã làm.


Cảm ơn. Vì vậy, với các thẻ ISA, bạn sẽ đặt thủ công một địa chỉ trong khoảng từ 0x0C0000 đến 0x0F0000 để chúng không xung đột. Với thẻ PCI là PnP, BIOS sẽ tự động gán phạm vi địa chỉ cho BIOS thiết bị trong khoảng từ 0x0C0000 đến 0x0F0000? Vì vậy, một thiết bị sẽ có từ 2 dải địa chỉ trở lên, nó sẽ ánh xạ ROM ROM của nó thành một phạm vi từ 0x0C0000 đến 0x0F0000 cho các ngắt và nó cũng sẽ có các địa chỉ được gán cho MMIO có thể được truy cập thông qua trình điều khiển?
RJSmith92

1
@ RJSmith92, vâng, thông thường, các thiết bị chỉ yêu cầu địa chỉ trong phạm vi 0xC0000 đến 0xF0000 cũ cho các oprom bios và sử dụng các địa chỉ trong phạm vi 3-4 GB cho MMIO.
psusi

1
@ RJSmith92, khá nhiều, phải. VGA bios hook int 10h, cung cấp api cho đầu ra văn bản cơ bản và bộ điều khiển đĩa hook int 13h, cung cấp giao diện đọc / ghi đĩa cơ bản. Bạn có thể google cho danh sách ngắt của Ralph Brown để biết các chi tiết ghê rợn.
psusi

1
@ RJSmith92, vâng, nếu bạn sử dụng trình điều khiển vga cơ sở thì nó vẫn được bật, nhưng nó chỉ được sử dụng để cài đặt độ phân giải, không vẽ lên màn hình.
psusi

1
@ RJSmith92, như tôi đã nói, nó chỉ được sử dụng để chuyển đổi chế độ, vì vậy thời gian còn lại nó có thể bị vô hiệu hóa. Nó cũng có thể được sao chép vào ram và chạy từ đó. Hãy nghĩ về nó, hầu hết các bios trở lại trong ngày đều có các tùy chọn để theo dõi bios và video bios trong ram. Sau khi sao chép nó vào ram, nó sẽ bị vô hiệu hóa.
psusi
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.