Trong hệ thống AT IBM nguyên thủy, một chip Motorola 146818 được sử dụng như đồng hồ thời gian thực (RTC: real-time clock) và chip RAM CMOS. Chip đặc biệt này co một đồng hồ kỹ thuật số đơn giản sử dụng 14 byte của RAM và 50 byte thêm trong phần RAM còn lại để lưu bất kỳ cái gì bạn muốn. Các nhà thiết kế IBM AT sử dụng phần thêm 50 byte này để lưu trữ cấu hình hệ thống.
Hệ thống PC hiện đại không sử dụng chip Motorola; thay vào đó, họ kết hợp các chức năng của chip này vào trong chipset bo mạch chủ (South Bridge) hay chip Super I/O. hoặc họ sử dụng một pin đặc biệt và module NVRAM từ những công ty như Dallas Semicondutor hay Benchmarq.
Bảng 1 thể hiện dạng thức chuẩn của thông tin được lưu trữ trong module CMOS RAM tiêu chuẩn 64 byte. Thông tin này kiểm soát cấu hình hệ thống và được đọc và ghi bởi chương trình thiết lập hệ thống.
Bảng 1 Các địa chỉ CMOS RAM Addresses
Offset (hex) | Offset (dec) | Chiều dài trường | Chức năng |
00h | 0 | 1 byte | Giây hiện hành trong BCD (00-59). |
01h | 1 | 1 byte | Báo động trên giây trong BCD. |
02h | 2 | 1 byte | Phút hiện hành trong BCD (00-59). |
03h | 3 |
1 byte |
Báo động trên phút trong BCD. |
04h | 4 | 1 byte | Giờ hiện hành trong BCD (00-23). |
05h | 5 | 1 byte | Báo động trên giờ trong BCD. |
06h | 6 | 1 byte | Ngày hiện hành của tuần trong BCD (00-06). |
07h | 7 | 1 byte | Ngày hiện hành của tháng trong BCD (00-31). |
08h | 8 | 1 byte | Tháng hiện hành trong BCD (00-12). |
09h | 9 | 1 byte | Năm hiện hành trong BCD (00-99). |
OAh | 10 | 1 byte | Thanh ghi trạng thái A. |
OBh | 11 | 1 byte | Thanh ghi trạng thái B. |
OCh | 12 | 1 byte | Thanh ghi trạng thái c. |
ODh | 13 | 1 byte | Thanh ghi trạng thái D. |
OEh | 14 | 1 byte | Chuẩn đoán trạng thái. |
0Fh | 15 | 1 byte | Mã tắt máy. |
lOh | 16 | 1 byte | Kiểu đĩa Floppy. |
11 h | 17 | 1 byte | Lựa chọn cài đặt BIOS nâng cao. |
12h | 18 | 1 byte | Đĩa cứng 0/1 kiều (0-15). |
13h | 19 | 1 byte |
Tỉ lệ gõ lặp tư động bàn phím và độ trễ. |
14h | 20 | 1 byte | Thiết bị cài đặt. |
15h | 21 | 1 byte | Bộ nhớ chính trong hệ số 1K, LSB. |
16h | 22 | 1 byte | Bộ nhớ chính trong hệ số 1K, MSB. |
17h | 23 | 1 byte | Bộ nhớ mở rộng trong IK, LSB |
I8h | 24 | 1 byte | Bộ nhở mở rộng trong 1K, MSB. |
19h | 25 | 1 byte | Đĩa cứng 0 kiều mở rộng (0-255). |
lAh | 26 | 1 byte | Đĩa cứng 1 kiều mở rộng (0-255). |
1 Bh | 27 | 9 byte | Đĩa cứng 0 kiểu thông tin được xác định bởi người dùng. |
24h | 36 | 9 byte | Đĩa cứng 1 kiều thông tin được xác định bởi người dùng |
2Dh | 45 | 1 byte | Lựa chọn cài đặt BIOS nâng cao. |
2Eh | 46 | 1 byte |
Kiểm tra CMOS MSB |
2Fh | 47 | 1 byte | Kiểm tra CMOS LSB |
30h | 48 | 1 byte | POST báo cáo bộ nhớ mở rộng LSB. |
31h | 49 | 1 byte | POST báo cáo bộ nhớ mớ rộng MSB |
32h | 50 | 1 byte | Ngày thẻ ký trong BCD (00-99). |
33 h | 51 | 1 byte | Cờ thông tin POST. |
34h | 52 | 2 byte | Lựa chọn cài đặt BIOS nâng cao. |
36h | 54 | 1 byte | Lựa chọn cài đặt BIOS chipset cụ thể. |
37h | 55 | 7 byte | Mật khấu mở nguồn (thường được mã hóa). |
3Eh | 62 | 1 byte | Kiểm tra CMOS mở rộng MSB. |
Chú ý rằng nhiều hệ thống mới hơn được mở rộng CMOS RAM lên 2KB, 4KB hay nhiều hơn. Phần thêm này được sử dụng để lưu trừ thông tin PnP chi tiết cấu hình của các card tiếp hợp và các tùy chọn khác trong hệ thống. Theo nghĩa thông thường, không tiêu chuẩn tương thích 100% tồn tại cho thông tin CMOS được lưu trữ trong tất cả các hệ thống như thế nào. Bạn nên tham khảo nhà sản xuất BIOS đế có thểm thông tin nếu muốn chi tiết đầy đủ về cách CMOS được lưu trữ bởi vì cấu hình CMOS và chương trình thiết lập thường là một phần của BIOS. Đây là một ví dụ khác về mối quan hệ gần gũi như thế nào giữa BIOS và phần cứng bo mạch chủ.
Các chương trình và các tiện ích sao lưu có sẵn trong khu vực công cộng cho thông tin CMOS RAM, hữu dụng cho lưu trữ và sau đó phục hồi một cấu hình. Không may mắn. những chương trình này là BIOS cụ thể và chức năng chỉ có trên một BIOS cho tất cả những gì mà chúng được thiết kế. Như thế. tôi không thường phụ thuộc vào các chương trình này bởi vì chúng quá riêng biệt cho bo mạch chủ và BIOS và sẽ không vận hành liền mạch trong tất cả hệ thống của tôi.
Bảng 2 thể hiện những giá trị có thể được chứa bởi BIOS hệ thống trong một byte CMOS riêng biệt gọi là byte tình trạng chuẩn đoán (diagnostic status byte). Bằng cách kiểm tra định vị này với một chương trình chuẩn đoán, bạn có thể quyết định liệu hệ thống của bạn có các mã hư cho biết một vấn đề đã xảy ra.
Bảng 2 Các mã byte tình trạng chuẩn đoán CMOS RAM số bit
Số bit | |||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Hex | Function |
/ | ■ | ■ | ■ | ■ | ■ | ■ | ■ | 80 | Thời gian thực chip mất nguồn. |
■ | / | ■ | ■ | ■ | ■ | ■ | ■ | 40 | Kiểm tra CMOS RAM bị lỗi. |
■ | ■ | / | ■ | ■ | ■ | ■ | ■ | 20 |
Thông tin can hình khảng hợp lệ được tìm thấy tợi POST. |
■ | ■ | ■ | / | ■ | ■ | ■ | ■ | 10 | Kích cỡ bộ nhớ so sánh bị lỗi tại POST. |
■ | ■ | ■ | ■ | / | ■ | ■ | ■ | 08 | Sửa ổ đĩa hay adapter khi khởi lại thất bại. |
■ | ■ | ■ | ■ | ■ | / | ■ | ■ |
04 |
Thời gian thực (RTC) dược tìm thấy không hợp lệ. |
■ | ■ | ■ | ■ | ■ | ■ | / | ■ | 02 | Adapter không phù hợp cầu hình. |
■ | ■ | ■ | ■ | ■ | ■ | ■ | / | 01 | Quá thời gian dọc 1 ID adapter. |
Nếu byte tình trạng chuẩn đoán là bất kỳ giá trị nào ngoài 0 bạn thường thấy lỗi cấu hình CMOS trong sự khởi động. Những loại lỗi này có thể xóa bằng cách chạy lại chương trình thiết lập.