Baking Pi 튜토리얼을 이미 찾았 지만 어셈블리 언어 만 사용 합니다 . 나는 첫 수업을 따랐지만 이미 C를 어떻게 사용하는지 궁금합니다. 그들이 더 높은 수준의 언어를 발명 한 이유가 있습니다. C 코드를 객체 ( .o
) 파일로 컴파일 하려고 시도했습니다.
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
다른 객체 파일에 연결하여 서로 연결하여 얻습니다 kernel.img
. 그런 다음 이미 존재하는 커널을 내 것으로 교체했지만 C 코드를 실행하지 않습니다. 내가 작성한 C 코드는 OK LED를 켜고 돌아온다 loop$: b loop$
. 그러나 OK LED가 무작위로 몇 번 깜박 인 다음 꺼집니다. 내 C 코드는 다음과 같습니다.
int main(int argc, char ** argv) {
volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000;
*(gpioAddr + 4) = 1 << 18;
*(gpioAddr + 40) = 1 << 16;
return 0;
}
Raspberry Pi에서 운영 체제 개발에 C를 어떻게 사용합니까?
코드에 오류가 있는지 의심합니다 (단지 취미는 아니지만). C를 설정하는 것이 복잡 할 수 있음을 알고 있지만 이것을 처음하는 사람은 아닙니다. AFAIK, 현재 지배적 인 모든 OS는 주로 C로 작성되므로 프로세스를 설명하는 기사가 있어야합니다. 나는 또한 단계 목록에 매우 만족할 것이므로 그 단계를 위해 Google을 사용하고 조금 덜 질문을 할 수 있습니다.
참고 : 위의 C 코드와 동등한 ARM 어셈블리는 정상적으로 작동합니다. LED가 켜집니다 (약간 깜박임 후). 내 라즈베리 파이가 괜찮다고 생각합니다.