Tôi không phải là người mới khởi động và hệ thống SW, nhưng tôi không biết nguồn gốc của lý do tại sao chương trình chung bắt đầu tại 0x8000
. Tôi đã biết địa chỉ 0x8000
đã được sử dụng làm địa chỉ bắt đầu trong chương trình C/C++ bình thường.Tại sao chương trình chung thường bắt đầu ở mức 0x8000?
Kích thước tối thiểu của bộ nạp khởi động cho chương trình chung có lên đến 0x8000
không? Hoặc là kích thước khối tối thiểu của ROM nên được phân bổ cho bộ nạp khởi động 32KB? Hoặc là có một lý do khác?
Tôi muốn biết điều này, về mặt lịch sử hoặc hợp lý và từ quan điểm địa chỉ ảo.
Tôi đánh giá cao tất cả, thời gian và trợ giúp của bạn về vấn đề này. Để đặt câu hỏi rõ ràng hơn, câu hỏi liên quan đến địa chỉ ảo không phải với vật lý.
Tôi về cơ bản đồng ý với ý kiến của R từ quan điểm địa chỉ bộ nhớ vật lý.
Không nói một hệ thống cụ thể, ví dụ linux (ngay cả trong android), RTOS chung (hạt nhân, và những người khác, đặc biệt là phần liên kết ARM), tất cả đều sử dụng địa chỉ 0x8000 làm chương trình địa chỉ bắt đầu chung. được đặt tên như crt_begin.o, crt.o, v.v. tại 0x0 với bộ tải tồn tại trong khu vực này.
Vì vậy, tôi đoán kích thước tối thiểu của bộ nạp khởi động cho chương trình chung là 32KB xem xét kích thước khối nếu nó được đặt tại BootROM trong thời gian khởi động (khởi động nguội).
Ummm, Nhưng tôi không chắc chắn ...
Bạn đang nói về hệ thống nào? –
Tôi không có bất kỳ nguồn đáng tin cậy nào cho điều này, nhưng tôi có thể đưa ra một dự đoán đủ điều kiện. Trong lịch sử nhiều bộ vi xử lý, đặc biệt 8 bit, đã có tính năng gọi là [zero page] (http://en.wikipedia.org/wiki/Zero_page) có nghĩa là các ô nhớ tại địa chỉ 0x00 - 0xFF có hỗ trợ hướng dẫn tới thực thi nhanh hơn. Tôi tin rằng điều này đã được Motorola giới thiệu trở lại trong ngày, vì họ đã đăng ký bộ nhớ I/O đăng ký trên các MCU cũ như 6800. -> – Lundin
Vì vậy, bạn sẽ muốn khu vực đầu tiên của bộ nhớ này được chiếm bởi các tế bào RAM hoặc đăng ký đặc biệt . Sau đó, ý nghĩa là phần không gian địa chỉ xuất hiện sau trang không có cùng tính chất: RAM và/hoặc thanh ghi. Điều này sẽ mất rất nhiều kb, có thể lên đến 0x6000 hoặc một số như vậy. Sau đó, tôi cho rằng thuận tiện khi đặt ROM (bộ nhớ chương trình) tại địa chỉ đồng đều và 0x8000 thuận tiện. Tôi khá chắc chắn rằng câu trả lời cho câu hỏi này có thể được tìm thấy trong các thiết kế bộ xử lý Motorola đầu tiên. – Lundin