реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Компиляция gnu c в uVision3
EKirshin
сообщение Oct 2 2006, 16:25
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 41
Регистрация: 2-10-06
Из: Москва
Пользователь №: 20 904



Здравствуйте!

Использую STR912FW44, пакет разработки KEIL, плата MCBSTR9

У меня такая проблема:

Хочется написать программу для USB. Скомпилировать пример джойстика не удаётся по причине ограничения 16кб линкера (никто, случаем лекарства не подкинет?). Поэтому хочу скомпилировать средствами gnu, зашить во внутреннюю флэш и запустить отладку - всё средствами uVision3. Откомпилиорвать удалось после переписания файла startup (насколько верно, сомневаюсь). Создаётся файл elf. Потом пытаюсь загружать его во флэш из uVision3. Выдаёт ошибку Incorrect line... (что-то типа этого - точно не помню).

Нет ли у кого примера стартап-файла для компиляции с использованием gnu?
И, кстати, в тестовых программках keil'a есть файлик retarget.c. Без него примеры не работают. Зачем он нужен, не поясните? В хелпе написано как-то невразумительно: для перенаправления каких-то потоков...
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Oct 2 2006, 17:51
Сообщение #2


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



ой как не спец в этих делах, но предположу следующее:
ELF предназначен не для заливки во флэш, а для отладки. Фо флешь надо бинарник грузить. Как его получить? Есть утилиты специальные вроде, может даже с кейлом идут
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Oct 3 2006, 07:10
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Какая версия Кейла, какая ГЦЦ, какой адаптер, какие ключи компиляции?
Go to the top of the page
 
+Quote Post
yaghtn
сообщение Oct 3 2006, 09:43
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 52
Регистрация: 7-11-05
Из: Чебоксары
Пользователь №: 10 546



Цитата(EKirshin @ Oct 2 2006, 20:25) *
Нет ли у кого примера стартап-файла для компиляции с использованием gnu?


Startup лежат в папке самого uVision ( \ARM\GNU\Startup )
При создании нового проекта, стартап для выбранного тулчейна автоматически добавляется.
(не для всех. Например, для philips - добавляет, но для ST - нет)
Go to the top of the page
 
+Quote Post
alogvinov
сообщение Oct 3 2006, 10:20
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 17-01-05
Пользователь №: 1 995



Цитата(jorikdima @ Oct 2 2006, 21:51) *
ой как не спец в этих делах, но предположу следующее:
ELF предназначен не для заливки во флэш, а для отладки. Фо флешь надо бинарник грузить. Как его получить? Есть утилиты специальные вроде, может даже с кейлом идут


Бинарник из .elf получается следующим образом:
arm-elf-objcopy -O binary file.elf file.bin

Возможно, что префикс утилиты objcopy будет отличаться от arm-elf- .
Go to the top of the page
 
+Quote Post
почемучка
сообщение Oct 3 2006, 10:27
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 16-08-06
Из: Москва
Пользователь №: 19 597



Цитата(jorikdima @ Oct 2 2006, 21:51) *
ой как не спец в этих делах, но предположу следующее:
ELF предназначен не для заливки во флэш, а для отладки. Фо флешь надо бинарник грузить. Как его получить? Есть утилиты специальные вроде, может даже с кейлом идут

Преобразование arm-elf в bin можно сделать в оболочке bash или в linux с помощью команды arm-elf-objcopy:
arm-elf-objcopy -O binary program program.bin
где program - исходный elf program.bin - выходной bin
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Oct 3 2006, 10:34
Сообщение #7


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Вообще у меня это был реторический вопрос smile.gifsmile.gif
Но все равно спасибо.
Go to the top of the page
 
+Quote Post
Костян
сообщение Oct 3 2006, 17:10
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Цитата(jorikdima @ Oct 2 2006, 15:51) *
ой как не спец в этих делах, но предположу следующее:
ELF предназначен не для заливки во флэш, а для отладки. Фо флешь надо бинарник грузить.

Все верно , только как дополнение во флэш можно грузить и hex , т.к keil не создает бинарники автоматом (хотя есть на официальном сайте утилита hex2bin -- кажется так называетя).
Go to the top of the page
 
+Quote Post
EKirshin
сообщение Oct 4 2006, 06:25
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 41
Регистрация: 2-10-06
Из: Москва
Пользователь №: 20 904



Цитата(yaghtn @ Oct 3 2006, 13:43) *
Цитата(EKirshin @ Oct 2 2006, 20:25) *

Нет ли у кого примера стартап-файла для компиляции с использованием gnu?


Startup лежат в папке самого uVision ( \ARM\GNU\Startup )
При создании нового проекта, стартап для выбранного тулчейна автоматически добавляется.
(не для всех. Например, для philips - добавляет, но для ST - нет)


У меня uVision3, из комплекта разработки Keil с платой MCBSTR9. Адаптер ULINK. В папке \ARM\GNU\Startup файлов для ST нет. Если у кого-нибудь есть - пришлите, пожалуйста.
И где можно почитать о формате этих файлов. В частности, как размещать секции кода, стэка, ... Синтаксис вообще.
И еще интересует, где можно взять докуметацию на гнушный ассемблер.
Go to the top of the page
 
+Quote Post
yaghtn
сообщение Oct 4 2006, 07:22
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 52
Регистрация: 7-11-05
Из: Чебоксары
Пользователь №: 10 546



Доки на gnu есть в uV. Меню "help/Open Books Window".
На синтаксис ассемблера и файла скрипта линкера(*.ld) можно посмотреть в кейловских файлах примеров для других eval-платок. В uV для ST мало чего есть. Есть пример для stR7, но он не под гну.

В доке http://www.at91.com/thirdparty/j_lynch/jlynch.pdf, всего кроме прочего, подробно расписано что должно быть в startup и *.ld - файлах.



Кстати, если хотите использовать в кейле gnu только по причине ограничения 16к, то быть может, легче будет побороть это ограничение и пользовать RealView тулчейн?
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Oct 4 2006, 07:38
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Прям сейчас глянул: в симулятор загружается ELF, скомпилированный GNUARM 4.1.0, без всяких хексов. Должен грузиться и через УЛинк. Какие версии продуктов, повторно спрашиваю?
Go to the top of the page
 
+Quote Post
VAI
сообщение Oct 4 2006, 10:01
Сообщение #12


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



с другой стороны, человек еще спрашивал о лекарстве, это здесь
http://caxapa.ru/arm.html?id=64525


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
EKirshin
сообщение Oct 4 2006, 11:51
Сообщение #13


Участник
*

Группа: Свой
Сообщений: 41
Регистрация: 2-10-06
Из: Москва
Пользователь №: 20 904



Цитата(Andy Great @ Oct 4 2006, 11:38) *
Прям сейчас глянул: в симулятор загружается ELF, скомпилированный GNUARM 4.1.0, без всяких хексов. Должен грузиться и через УЛинк. Какие версии продуктов, повторно спрашиваю?


uVision 3.31
BinUtils V2.14
GCC V3.3.1
uClibc V0.9.20
Cygwin DLL V1.3.22

Compiler control string:
-c -mcpu=arm7tdmi -gdwarf-2 -MD -Wall -O -mapcs-frame -mthumb-interwork -IC:\Keil\ARM\INC\ST\91x\ -o *.o

Assembler control string:
-m arm7tdmi -gdwarf2 -mthumb-interwork --MD *.d -IC:\Keil\ARM\INC\ST\91x\ -o *.o

Почему “arm7tdmi”, если у меня АРМ9? И где можно это изменить, если необходимо?

Linker control string:
-mthumb-interwork -Wl -o USB_HID.elf
*.o -nostartfiles -lm
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Oct 4 2006, 13:00
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



А ошибка какая? Попробуйте скомпилировать для ARM7 тестовые примеры и загрузить их в симулятор. Не уверен, гляну дома, может быть в той версии ГЦЦ нет поддержки ARM9?
Go to the top of the page
 
+Quote Post
yaghtn
сообщение Oct 4 2006, 14:21
Сообщение #15


Участник
*

Группа: Свой
Сообщений: 52
Регистрация: 7-11-05
Из: Чебоксары
Пользователь №: 10 546



Поддержка arm9 компилятором не нужна. Из даташита: "The ARM966E-S core is binary compatible with 32-bit ARM7 code and 16-bit Thumb code".
Так что arm7tdmi - нормально.

Я бы сначала попробовал откомпилить и отладить в RAM простенький проект, состоящий из стартапа и бесконечного цикла в main().

PS Я недопонял, что имеется в виду под словами "загрузить во флеш"?
Пункт меню "Flash/Download" или пункт "Debug/Start-Stop Debug session"?
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Oct 18 2006, 09:16
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Цитата
Откомпилиорвать удалось после переписания файла startup (насколько верно, сомневаюсь). Создаётся файл elf. Потом пытаюсь загружать его во флэш из uVision3. Выдаёт ошибку Incorrect line... (что-то типа этого - точно не помню).

Ха, щас глянул - эта ошибка пофиксена в 3.02. Качайте обновления.
Go to the top of the page
 
+Quote Post
klen
сообщение Oct 21 2006, 06:15
Сообщение #17


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(Andy Great @ Oct 4 2006, 17:00) *
А ошибка какая? Попробуйте скомпилировать для ARM7 тестовые примеры и загрузить их в симулятор. Не уверен, гляну дома, может быть в той версии ГЦЦ нет поддержки ARM9?


Ну как это не поддержывает. Не нада грязи smile.gif Вот что с третей версии вроде поддерживается.
Код
ARM_CORE("arm2",   arm2,    2,    FL_CO_PROC | FL_MODE26, slowmul)
ARM_CORE("arm250", arm250,    2,    FL_CO_PROC | FL_MODE26, slowmul)
ARM_CORE("arm3",   arm3,    2,    FL_CO_PROC | FL_MODE26, slowmul)

/* V3 Architecture Processors */
ARM_CORE("arm6",          arm6,        3,    FL_CO_PROC | FL_MODE26, slowmul)
ARM_CORE("arm60",         arm60,    3,    FL_CO_PROC | FL_MODE26, slowmul)
ARM_CORE("arm600",        arm600,    3,    FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
ARM_CORE("arm610",        arm610,    3,                 FL_MODE26 | FL_WBUF, slowmul)
ARM_CORE("arm620",        arm620,    3,    FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
ARM_CORE("arm7",          arm7,        3,    FL_CO_PROC | FL_MODE26, slowmul)
ARM_CORE("arm7d",         arm7d,    3,    FL_CO_PROC | FL_MODE26, slowmul)
ARM_CORE("arm7di",        arm7di,    3,    FL_CO_PROC | FL_MODE26, slowmul)
ARM_CORE("arm70",         arm70,    3,    FL_CO_PROC | FL_MODE26, slowmul)
ARM_CORE("arm700",        arm700,    3,    FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
ARM_CORE("arm700i",       arm700i,    3,    FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
ARM_CORE("arm710",        arm710,    3,                 FL_MODE26 | FL_WBUF, slowmul)
ARM_CORE("arm720",        arm720,    3,                 FL_MODE26 | FL_WBUF, slowmul)
ARM_CORE("arm710c",       arm710c,    3,                 FL_MODE26 | FL_WBUF, slowmul)
ARM_CORE("arm7100",       arm7100,    3,                 FL_MODE26 | FL_WBUF, slowmul)
ARM_CORE("arm7500",       arm7500,    3,                 FL_MODE26 | FL_WBUF, slowmul)
/* Doesn't have an external co-proc, but does have embedded fpa.  */
ARM_CORE("arm7500fe",     arm7500fe,    3,    FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)

/* V3M Architecture Processors */
/* arm7m doesn't exist on its own, but only with D, ("and", and I), but
   those don't alter the code, so arm7m is sometimes used.  */
ARM_CORE("arm7m",         arm7m,    3M,    FL_CO_PROC | FL_MODE26, fastmul)
ARM_CORE("arm7dm",        arm7dm,    3M,    FL_CO_PROC | FL_MODE26, fastmul)
ARM_CORE("arm7dmi",       arm7dmi,    3M,    FL_CO_PROC | FL_MODE26, fastmul)

/* V4 Architecture Processors */
ARM_CORE("arm8",          arm8,        4,                 FL_MODE26 | FL_LDSCHED, fastmul)
ARM_CORE("arm810",        arm810,    4,                 FL_MODE26 | FL_LDSCHED, fastmul)
ARM_CORE("strongarm",     strongarm,    4,                 FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)
ARM_CORE("strongarm110",  strongarm110,    4,                 FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)
ARM_CORE("strongarm1100", strongarm1100, 4,                 FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)
ARM_CORE("strongarm1110", strongarm1110, 4,                 FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)

/* V4T Architecture Processors */
ARM_CORE("arm7tdmi",      arm7tdmi,    4T,    FL_CO_PROC          , fastmul)
ARM_CORE("arm7tdmi-s",    arm7tdmis,    4T,    FL_CO_PROC          , fastmul)
ARM_CORE("arm710t",       arm710t,    4T,                 FL_WBUF, fastmul)
ARM_CORE("arm720t",       arm720t,    4T,                 FL_WBUF, fastmul)
ARM_CORE("arm740t",       arm740t,    4T,                 FL_WBUF, fastmul)
ARM_CORE("arm9",          arm9,        4T,                             FL_LDSCHED, fastmul)
ARM_CORE("arm9tdmi",      arm9tdmi,    4T,                             FL_LDSCHED, fastmul)
ARM_CORE("arm920",        arm920,    4T,                             FL_LDSCHED, fastmul)
ARM_CORE("arm920t",       arm920t,    4T,                             FL_LDSCHED, fastmul)
ARM_CORE("arm922t",       arm922t,    4T,                             FL_LDSCHED, fastmul)
ARM_CORE("arm940t",       arm940t,    4T,                             FL_LDSCHED, fastmul)
ARM_CORE("ep9312",        ep9312,    4T,                             FL_LDSCHED |             FL_CIRRUS, fastmul)

/* V5T Architecture Processors */
ARM_CORE("arm10tdmi",     arm10tdmi,    5T,                             FL_LDSCHED, fastmul)
ARM_CORE("arm1020t",      arm1020t,    5T,                             FL_LDSCHED, fastmul)

/* V5TE Architecture Processors */
ARM_CORE("arm9e",         arm9e,    5TE,                             FL_LDSCHED, 9e)
ARM_CORE("arm946e-s",     arm946es,    5TE,                             FL_LDSCHED, 9e)
ARM_CORE("arm966e-s",     arm966es,    5TE,                             FL_LDSCHED, 9e)
ARM_CORE("arm968e-s",     arm968es,    5TE,                             FL_LDSCHED, 9e)
ARM_CORE("arm10e",        arm10e,    5TE,                 FL_LDSCHED, fastmul)
ARM_CORE("arm1020e",      arm1020e,    5TE,                 FL_LDSCHED, fastmul)
ARM_CORE("arm1022e",      arm1022e,    5TE,                 FL_LDSCHED, fastmul)
ARM_CORE("xscale",        xscale,    5TE,                             FL_LDSCHED | FL_STRONG | FL_XSCALE, xscale)
ARM_CORE("iwmmxt",        iwmmxt,    5TE,                             FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale)

/* V5TEJ Architecture Processors */
ARM_CORE("arm926ej-s",    arm926ejs,    5TEJ,                             FL_LDSCHED, 9e)
ARM_CORE("arm1026ej-s",   arm1026ejs,    5TEJ,                             FL_LDSCHED, 9e)

/* V6 Architecture Processors */
ARM_CORE("arm1136j-s",    arm1136js,    6J,                             FL_LDSCHED, 9e)
ARM_CORE("arm1136jf-s",   arm1136jfs,    6J,                             FL_LDSCHED | FL_VFPV2, 9e)
ARM_CORE("arm1176jz-s",      arm1176jzs,    6ZK,                 FL_LDSCHED, 9e)
ARM_CORE("arm1176jzf-s",  arm1176jzfs,    6ZK,                 FL_LDSCHED | FL_VFPV2, 9e)
ARM_CORE("mpcorenovfp",      mpcorenovfp,    6K,                 FL_LDSCHED, 9e)
ARM_CORE("mpcore",      mpcore,    6K,                 FL_LDSCHED | FL_VFPV2, 9e)
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Oct 21 2006, 09:04
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Я имел в виду версию 3.31, поставляемую Кейлом. Зная любовь некоторых товарищей к оптимизации (ГЦЦ для х86, АРМ, АВР и т.д., урезанные в части целевых платформ) я предположил такую возможность.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 11:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01555 секунд с 7
ELECTRONIX ©2004-2016