Имам вградена хардуерна система, която съдържа буутлоудър, базиран на ARMboot (което е много подобно на Uboot и PPCboot) .
Този буутлоудър обикновено служи за зареждане на uClinux изображение от флаш паметта. Сега обаче се опитвам да използвам този буутлоудър, за да стартирам самостоятелно приложение helloworld, което не изисква никаква свързана библиотека. Всъщност той съдържа само while(1){}
код в основната функция.
Проблемът ми е, че не мога да разбера какви настройки на GCC трябва да използвам, за да създам самостоятелен правилно форматиран двоичен файл.
Използвам следната команда за изграждане:
cr16-elf-gcc -o helloworld helloworld.c -nostdlib
което извежда предупредително съобщение:
предупреждение: не може да се намери символ за запис _start; по подразбиране 00000004
След това, в рамките на буутлоудъра, качвам създадено приложение и го стартирам на някакъв адрес:
tftpboot 0xa00000 helloworld
go 0xa00004
Но не работи :( Системата се рестартира.
Обикновено трябва просто да виси (поради while(1)
).