Tôi đã tìm thấy các hướng dẫn Baking Pi , nhưng họ chỉ sử dụng ngôn ngữ lắp ráp . Tôi đã làm theo các bài học đầu tiên, nhưng tôi đã tự hỏi làm thế nào để sử dụng C thay thế. Ý tôi là, có một lý do họ đã phát minh ra các ngôn ngữ cấp cao hơn. Tôi đã thử chỉ biên dịch mã C thành .o
tệp object ( ), biên dịch
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
đến một tệp đối tượng khác và liên kết chúng lại với nhau và do đó có được kernel.img
. Sau đó tôi đã thay thế kernel đã có mặt của mình, nhưng nó không thực thi mã C. Mã C tôi đã viết chỉ nên bật đèn LED OK và sau đó quay lại (sau đó đến loop$: b loop$
). Nhưng đèn LED OK nhấp nháy ngẫu nhiên một vài lần và sau đó tắt. Đây là mã C của tôi:
int main(int argc, char ** argv) {
volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000;
*(gpioAddr + 4) = 1 << 18;
*(gpioAddr + 40) = 1 << 16;
return 0;
}
Làm cách nào để sử dụng C để phát triển hệ điều hành trên Raspberry Pi?
Tôi nghi ngờ đó là một lỗi trong mã (mặc dù tôi chỉ là người có sở thích). Tôi biết việc thiết lập C có thể phức tạp, nhưng tôi không phải là người đầu tiên làm việc này. AFAIK, tất cả các hệ điều hành hiện đang chiếm ưu thế chủ yếu được viết bằng C, vì vậy phải có một bài viết giải thích quy trình. Tôi cũng sẽ rất hài lòng với một danh sách các bước, vì vậy tôi có thể google cho các bước đó và có thể hỏi một câu hỏi ít rộng hơn một chút.
Lưu ý: lắp ráp ARM tương đương với mã C ở trên hoạt động tốt. Nó bật đèn LED (sau một chút nhấp nháy). Tôi nghĩ (hy vọng) điều đó cho thấy Raspberry Pi của tôi vẫn ổn.