Учебник, необходимый для GNU blackfin toolchain с Eclipse
Кто-нибудь знает хороший учебник по использованию цепочки инструментов GNU blackfin с eclipse в Windows?
Я пытаюсь начать с разработки голого металлического приложения на blackfin, и я установил набор инструментов и затмение C/C++ Juno, но не могу скомпилировать. В настоящее время я получаю команду make: *** Нет правила для создания цели 'all', но есть много других вещей, из-за которых я теряюсь.
Спасибо заранее,
Хасан.
Редактировать: я прочитал немного о программе "make" и решил запустить тестовый проект с одним файлом, чтобы изучить набор инструментов командной строки (без среды eclipse). Вот мой main.c и связанный с ним makeFile:
//main.c
#include <stdio.h>
int main(void)
{
volatile int x = 42;
printf("%i\n", x);
return 0;
}
#makeFile
CPU = bf533-any
CROSS_COMPILE = bfin-elf-
CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)gcc
CFLAGS = -c -Wall
bfin_test: main.o
$(LD) main.o -mcpu=$(CPU) -o $@
main.o: main.c
$(CC) $(CFLAGS) main.c -mcpu=$(CPU) -o $@
Вот результат выполнения команды make на консоли cmd:
D:\work\experiments\bfin_test_project>dir
Volume in drive D is Data
Volume Serial Number is 248D-2C8D
Directory of D:\work\experiments\bfin_test_project
14/04/2013 12:30 <DIR> .
14/04/2013 12:30 <DIR> ..
11/04/2013 13:30 102 main.c
14/04/2013 12:29 257 makeFile
14/04/2013 12:29 264 makeFile~
3 File(s) 623 bytes
2 Dir(s) 634,582,650,880 bytes free
D:\work\experiments\bfin_test_project>make
bfin-elf-gcc -c -Wall main.c -mcpu=bf533-any -o main.o
bfin-elf-gcc main.o -mcpu=bf533-any -o bfin_test
c:/program files (x86)/analog devices/gnu toolchain/2012r2/elf/bin/../lib/gcc/bf
in-elf/4.3.5/../../../../bfin-elf/lib\libc.a(lib_a-closer.o): In function `close
_r':
/usr/src/packages/BUILD/blackfin-toolchain-2012R2/gcc-4.3/newlib/libc/reent/clos
er.c:53: warning: _close is not implemented and will always fail
c:/program files (x86)/analog devices/gnu toolchain/2012r2/elf/bin/../lib/gcc/bf
in-elf/4.3.5/../../../../bfin-elf/lib\libc.a(lib_a-fstatr.o): In function `fstat
_r':
/usr/src/packages/BUILD/blackfin-toolchain-2012R2/gcc-4.3/newlib/libc/reent/fsta
tr.c:62: warning: _fstat is not implemented and will always fail
c:/program files (x86)/analog devices/gnu toolchain/2012r2/elf/bin/../lib/gcc/bf
in-elf/4.3.5/../../../../bfin-elf/lib\libc.a(lib_a-isattyr.o): In function `isat
ty_r':
/usr/src/packages/BUILD/blackfin-toolchain-2012R2/gcc-4.3/newlib/libc/reent/isat
tyr.c:58: warning: _isatty is not implemented and will always fail
c:/program files (x86)/analog devices/gnu toolchain/2012r2/elf/bin/../lib/gcc/bf
in-elf/4.3.5/../../../../bfin-elf/lib\libc.a(lib_a-lseekr.o): In function `lseek
_r':
/usr/src/packages/BUILD/blackfin-toolchain-2012R2/gcc-4.3/newlib/libc/reent/lsee
kr.c:58: warning: _lseek is not implemented and will always fail
c:/program files (x86)/analog devices/gnu toolchain/2012r2/elf/bin/../lib/gcc/bf
in-elf/4.3.5/../../../../bfin-elf/lib\libc.a(lib_a-readr.o): In function `read_r
':
/usr/src/packages/BUILD/blackfin-toolchain-2012R2/gcc-4.3/newlib/libc/reent/read
r.c:58: warning: _read is not implemented and will always fail
c:/program files (x86)/analog devices/gnu toolchain/2012r2/elf/bin/../lib/gcc/bf
in-elf/4.3.5/../../../../bfin-elf/lib\libc.a(lib_a-writer.o): In function `write
_r':
/usr/src/packages/BUILD/blackfin-toolchain-2012R2/gcc-4.3/newlib/libc/reent/writ
er.c:58: warning: _write is not implemented and will always fail
Это произвело.o и (предположительно) файл эльфа. И вот результат попытки запустить файл elf с помощью симулятора цепочки инструментов:
D:\work\experiments\bfin_test_project>bfin-elf-run bfin_test
program stopped with signal 11 (Segmentation fault).
Согласно http://docs.blackfin.uclinux.org/doku.php?id=toolchain%3Asim, это должен быть запуск симулятора в виртуальном режиме. (Не уверен, что мне следует предоставлять другие файлы)
Также я не уверен, является ли выходной файл (bfin_test) фактически файлом elf или его можно запустить с помощью симулятора (bfin-elf-run). Но если это так, мне интересно, почему я получаю ошибку сегментации такой, казалось бы, простой программы. Любая идея кто-нибудь? Обратите внимание, что я получаю ту же ошибку при изменении main, чтобы содержать только "return 0;".
Может кто-нибудь, пожалуйста, скажите мне, где я иду не так.
Еще раз спасибо,
1 ответ
Hasan,
Посмотрите на эти ссылки. Они могут предложить некоторую помощь.
https://docs.blackfin.uclinux.org/doku.php?id=toolchain:bare_metal:compile https://docs.blackfin.uclinux.org/doku.php?id=toolchain:bare_metal:link
Это настоящая борьба за то, чтобы набрать поток инструментов GNU для Blackfin, но как только вы сделаете все это довольно хорошо.
Джим