Я уже нашел учебники по выпечке пи , но они используют только ассемблер . Я прошел первые уроки, но мне уже интересно, как использовать C вместо этого. Я имею в виду, что есть причина, по которой они изобрели языки более высокого уровня. Я попытался просто скомпилировать код C в .o
файл object ( ), компилируя
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
к другому объектному файлу и связывая их вместе и таким образом получая kernel.img
. Затем я заменил уже существующее ядро своим собственным, но оно не выполняет код Си. Код C, который я написал, должен просто включить светодиод OK и затем вернуться (затем приходит loop$: b loop$
). Но светодиод OK несколько раз мигает случайным образом, а затем просто гаснет. Вот мой код C:
int main(int argc, char ** argv) {
volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000;
*(gpioAddr + 4) = 1 << 18;
*(gpioAddr + 40) = 1 << 16;
return 0;
}
Как использовать C для разработки операционной системы на Raspberry Pi?
Я сомневаюсь, что это ошибка в коде (хотя я просто любитель). Я знаю, что настройка C может быть сложной, но я не первый, кто делает это. AFAIK, все доминирующие в настоящее время ОС написаны в основном на C, поэтому должна быть статья, объясняющая процесс. Я был бы очень счастлив со списком шагов, так что я могу поискать эти шаги в Google и, возможно, задать вопрос чуть менее широкий.
Примечание: эквивалент сборки кода ARM вышеупомянутого кода C работает просто отлично. Включается светодиод (после небольшого мигания). Я думаю (надеюсь), что означает, что мой Raspberry Pi в порядке.