Comments 17
Но для начала, надо разобраться, почему «падает» при запуске BusyBox.
первое, что в голову приходит — собрано с CONFIG_NOMMU=y?
К сожалению, компилятор Sourcery CodeBench Lite, которым пользовался автор статей о портировании проекта на плату Марсоход, более недоступны для скачивания
Ещё как доступны! Исчезли легконаходимые ссылки, но сами файлы остались доступны.
Вот ссылка на использованный авторами marsohod.org toolchain arm-2012.03-57-arm-none-linux-gnueabi.
Ссылку я подсмотрел в исходниках buildroot: см. файл toolchain/toolchain-external/toolchain-external.mk.
Самый последний Sourcery CodeBench toolchain для ARM — arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2.
P.S. Кстати, в Debian Linux (testing) можно поставить пакет gcc-arm-linux-gnueabi
— и будет вам кросскомпилятор.
В публикации указано, что для сборки ядра и bare-metal программ используется один toolchain (arm-non-eabi), а для busybox — другой (arm-buildroot-uclinux-uclibcgnueabi). Криминала большого тут нет, однако, было бы неплохо объяснить, почему сделано именно так.
arm-buildroot-uclinux-uclibcgnueabi
по-умолчанию собирает исполняемые файлы в формате bFLT для uCLinux и линкует с uClibc-ng. А arm-none-eabi — собирает ELF и ни с чем не линкует. Можно, конечно, использовать один тулчейн. Просто я начал работу с портирования ядра и собирал его первым тулчейном, а после того, как стало ясно, что ядро работает, взялся за userspace, для которого использовал BuildRoot как некий стандарт, а он собирает свой тулчейн по-умолчанию.
Запускаем Linux на FPGA: Hello, World