2013-05-01 40 views
7

Gần đây tôi bắt đầu nghiên cứu về Hệ thống nhúng và Embedded Linux. Tôi biết rằng trong một hệ thống nhúng, hệ điều hành được lưu trữ trên Flash hoặc ROM. Khi nó được bật, bộ nạp khởi động tải hệ điều hành vào bộ nhớ chính, và với một Raspberry Pi, rằng "flash hoặc ROM" là một thẻ SD.Trình tải khởi động của Raspberry Pi hoạt động như thế nào?

Vì vậy, tôi đã tìm kiếm Raspberry Pi vì tôi muốn bắt đầu thực hành với một, và tôi đã nhầm lẫn về khái niệm "khởi động" một Raspberry Pi. Câu hỏi của tôi là bộ nạp khởi động nào sử dụng Raspberry Pi và nó hoạt động như thế nào? (Cụ thể, những quy trình nào xảy ra trước hạt nhân? head.o? ? (Bắt đầu hạt nhân))

+0

Được trả lời ở đây: http: //raspberrypi.stackexchange.com/a/10490/34554 – opyate

+0

Tôi đang bỏ phiếu để đóng câu hỏi này là chủ đề không chính thức vì nó thuộc về http://raspberrypi.stackexchange.com và nó trùng lặp với (http://raspberrypi.stackexchange.com/questions/10489/how-does-raspberry-pi-boot) –

Trả lời

13

Quá trình này đã được mô tả cho đến chết, bạn sẽ không gặp vấn đề gì khi tìm kiếm trên mạng.

Raspberry pi chứa GPU và bộ xử lý ARM, hai bộ xử lý riêng biệt. GPU đi lên đầu tiên, tôi giả sử được điều khiển bởi một chip rom hoặc phần cứng đọc thẻ sd tìm kiếm tệp bootcode.bin đầu tiên. Bộ tải khởi động GPU này không có giấy tờ cho đến khi chúng tôi quan tâm, nó sẽ đưa chip lên một điểm và sau đó tải chương trình GPU khác. Chương trình gpu kết thúc việc đưa chip lên (ddr init) và cuối cùng nạp kernel.img là ứng dụng ARM (không phải bootloader của cánh tay nhưng ứng dụng như trong linux), nó nạp trực tiếp vào ram và thực hiện những gì mà một bootloader bình thường sẽ làm chuẩn bị cánh tay để khởi động Linux (thường là hầu như không có gì) và sau đó khởi động cánh tay.

Trình tải khởi động truyền thống là khi bạn chỉ có một bộ xử lý và đó là bộ xử lý cũng sẽ chạy ứng dụng/hệ điều hành. những cái tên như redboot và uboot, nhưng chúng đã trở nên quá phức tạp, hệ điều hành. phải mất rất ít để khởi động Linux, đặt một vài ATAG trong ram và thiết lập một vài thanh ghi và đó là nó (sau khi tất nhiên bạn đã đưa lên hệ thống/ram, vv mà không mất quá nhiều mã, nhưng là delecate/khó khăn mã cho ddr ví dụ), các linux mới hơn có nhiều thứ hơn một chút để thiết lập nhưng không quá nhiều.

Việc khởi động lại mâm xôi pi là thanh lịch trong sự đơn giản cũng như tính năng lưu trữ không bay hơi di động (thẻ sd), giúp bạn quay trở lại những ngày trước khi khởi động, nơi bạn sẽ tắt các roms và xóa chúng , nó có một số cơn đau, nhưng có những cách xung quanh đó. bây giờ có khả năng bộ nạp khởi động phức tạp (uboot, etc) của bên thứ ba có sẵn. Có đèn flash có thể tháo rời nghĩa là bạn không cần bộ nạp khởi động đã được giải mã, bạn không phải lo lắng về việc phá hủy hệ thống bằng ứng dụng bị hỏng, bạn có thể khôi phục bằng cách đơn giản xóa flash và thay đổi nó. Bootloader đã lớn lên từ tránh loại bỏ các phương tiện truyền thông để tránh phải dập tắt một đèn flash và resolder sau khi lập trình hoặc sử dụng một ổ cắm trên một bảng mệnh để có một phần hàn xuống.

Các hạt nhân.img như bây giờ là (tại một thời điểm nó đã được tải 0x00000000) tải đến 0x8000. Và đó là tất cả những gì bạn cần biết, đó là một hình ảnh kernal bình thường bạn sẽ sử dụng với bộ nạp khởi động. Sau đó, bạn có thể viết bất kỳ kim loại trần hoặc chương trình/ứng dụng nào khác mà bạn muốn miễn là bạn liên kết nó với địa chỉ 0x8000 làm điểm bắt đầu của điểm nhị phân và điểm bắt đầu. Nếu bạn muốn sử dụng ngoại lệ, bạn cần phải viết bảng ngoại lệ bằng cách nào đó (Có nhiều cách khác nhau để thực hiện việc này). Một thay thế cho điều này là có một thiết lập chế độ di sản bạn có thể sử dụng một tập tin tùy chọn config.txt để cấu hình và sẽ tải kernel.img đến 0x0000 như những ngày đầu của rpi. Cá nhân tôi đi với 0x8000 mặc định hiện tại, những người kim loại trần khác đi theo con đường khác ...

Tôi có bộ tải khởi động xmodem rất đơn giản và bộ cài đặt chốt jtag để bạn có thể sử dụng jtag (cả hai trường hợp để tránh có để nhảy thẻ sd hàng trăm đến hàng nghìn lần khi bạn phát triển ứng dụng của mình). Có những người khác, một số phức tạp hơn, có lẽ ngay cả một trong đó có usb lên đến điểm mạng hoạt động.

Các vấn đề liên quan