Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: свежак KGP win32/arm/avr/mips/m68k
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26
AHTOXA
Цитата(ReAl @ Oct 13 2010, 02:15) *
на pure virtual функции, ставятся заглушки, которые могут потянуть за собой какой-то код exeptions, который за собой найдёт что потянуть.


Именно так. Я уже как-то писал про это.
AlexeyVoroshen
Цитата(dimay192 @ Oct 12 2010, 14:23) *
Значит такс:
1.проект на С++
В общем, структура кода приблизительно такова:
Главная ф-ция:
[code]ResourceManager RM;

[ кусь... ]


Здравствуйте.
Хочу поделиться/посоветовать. Пишу на С++.
У меня вроде с разрастанием кода все неплохо стало smile.gif
Даже с virtual, pure virtual и т.д.
Терпимо - <1,5K всяких либ прилинковывается, самое ненужное - libunwind на 432 байта.

Что сделал:
1. syscalls_r1.c - обязательно всякие sbrk и др.
2. new_delete_fOS_r1.cpp - new и delete переделал под FreeRTOS, но главное вызываются malloc и free
3. ещё добавил:

// При вызове линкера через $(CPP) всё проходит, но из библиотеки libgcc++ в bss помещается много фигни
// (её можно отрубить, включив отбор неиспользуемых функций, но это не всегда надо),
// поэтому определим вызов функции и всё работает при линковке из $(CC)
// call to a pure virtual function happened ... wow, should never happen ... stop
void __cxa_pure_virtual(void) { while(1); }

Может и вам поможет smile.gif
Успехов.
dimay192
Ок... Общее направление действий понял...
Пока решил не заморачиваться за С++ (к сожалению мало времени, чтобы ковырять библы). Перевел тот же проект на С и все встало на места - лишнего не тащит, размер кода пришел в норму...
А разобраться надо будет обязательно! Но пока и так сойдет!

/********************************************************
************ Всем спасибо за внимание и участие! ************
********************************************************/
Trizna
Можно ли в этой сборке заставить gcc генерировать объектники в COFF формате?
По ключикам пробежался, вроде ни чего похожего нет sad.gif
Надо прилинковать ассемблерную функцию скомпилированную gcc к проекту в VS.
demiurg_spb
почитайте про ELF->COFF converter

ИМХО objcopy Вам поможет (доки на binutils почитайте)
klen
Цитата(Trizna @ Oct 22 2010, 13:34) *
Можно ли в этой сборке заставить gcc генерировать объектники в COFF формате?
По ключикам пробежался, вроде ни чего похожего нет sad.gif
Надо прилинковать ассемблерную функцию скомпилированную gcc к проекту в VS.


gcc для x86 выдает объектники и исполняймые в формате PE.
откуда такие сложности? VS таки ассемблер разучился компилять? Вы навно чтото для winCE ваяите?
Trizna
Цитата(demiurg_spb @ Oct 22 2010, 13:22) *
почитайте про ELF->COFF converter

ИМХО objcopy Вам поможет (доки на binutils почитайте)


Похоже имеющийся objcopy только под elf заточен sad.gif
d:\TVV\My Dropbox\Temp\cortex>arm-kgp-eabi-objcopy --info




CODE
BFD header file version (Klen's GCC package (KGP) for ARM/elf platform) 2.20.51.20101005
elf32-littlearm
(header little endian, data little endian)
arm
elf32-bigarm
(header big endian, data big endian)
arm
elf32-little
(header little endian, data little endian)
arm
elf32-big
(header big endian, data big endian)
arm
srec
(header endianness unknown, data endianness unknown)
arm
symbolsrec
(header endianness unknown, data endianness unknown)
arm
verilog
(header endianness unknown, data endianness unknown)
arm
tekhex
(header endianness unknown, data endianness unknown)
arm
binary
(header endianness unknown, data endianness unknown)
arm
ihex
(header endianness unknown, data endianness unknown)
arm

elf32-littlearm elf32-bigarm elf32-little elf32-big srec
arm elf32-littlearm elf32-bigarm elf32-little elf32-big srec

symbolsrec verilog tekhex binary ihex
arm symbolsrec verilog tekhex binary ihex

klen
для армов только elf, в соff нет нужды, все средсва работают с elf. ELF - промышленный стандарт а coff это поделка микромягких. также как OpenGL и DirectX

у вас один выход - коветнуть.
Trizna
Цитата(klen @ Oct 22 2010, 13:45) *
gcc для x86 выдает объектники и исполняймые в формате PE.
откуда такие сложности? VS таки ассемблер разучился компилять? Вы навно чтото для winCE ваяите?

Я ваяю под windows mobile. Армовский ассемблер от микрософта, которым я раньше пользовался не поддерживает Cortex, пришлось использовать gcc? вот мучаюсь пока...

Цитата(klen @ Oct 22 2010, 13:54) *
у вас один выход - коветнуть.


Не подскажете чем?
klen
Цитата(Trizna @ Oct 22 2010, 14:58) *
Не подскажете чем?


ну нада поискать в инете, я не искал. если нет то сами напишите и дайте людям. с форатом ELF нет проблем - есть офицальные доки + бинутилс это сборник примеров как его парсить и модифицировать, вопрос по COFF, говнокодовцы из редмонта дают на него доки?

свежак

mingw64:
http://klen.org/Files/DevTools/x86_64_kgp_...w32_20101022.7z

arm-eabi под x86_64:
http://klen.org/Files/DevTools/kgp_arm_eab..._64_20101022.7z
injen-d
Цитата(klen @ Oct 22 2010, 15:51) *

Распаковал kgp_arm_eabi_x86_64_20101022.7z при попытке запуска пишет, что arm-kgp-eabi-gcc.exe не является приложением Win32
klen
Цитата(injen-d @ Oct 22 2010, 19:47) *
Распаковал kgp_arm_eabi_x86_64_20101022.7z при попытке запуска пишет, что arm-kgp-eabi-gcc.exe не является приложением Win32

правильно пишет. написано же ''arm-eabi под x86_64" x86_64 это 64 битные винды. для 32битных масдаев я не собрал - давайте медленно но верно относить старье на помойку истории. мож у нас тут комунизм окончательно победил но чтото я сомневаюсь что Вы написали верхний пост с машины у которой 32юитный проц, они ж ужо вроде и не продаются. если сильно нада то соберу 32битную сборку - но хотелосьбы в перспективе от этого отказатся.
injen-d
Понятно. Смутила надпись x86_64, обычно пишут либо х86, либо х64 (насчет корректности записи х64 не знаю, но пишут так почти везде), подумал, что там две версии, а потом не обратил внимания, что в архиве только одна.
ИМХО, не стоит отказываться от х86, ибо всё еще бывают проблемы с дровами для специфических девайсов и с некоторым ПО.
klen
Цитата(injen-d @ Oct 22 2010, 20:40) *
Понятно. Смутила надпись x86_64, обычно пишут либо х86, либо х64 (насчет корректности записи х64 не знаю, но пишут так почти везде), подумал, что там две версии, а потом не обратил внимания, что в архиве только одна.
ИМХО, не стоит отказываться от х86, ибо всё еще бывают проблемы с дровами для специфических девайсов и с некоторым ПО.

я считаю так - первая хрень это архитектура(читай набор инструкций) вторая это разрадность. поэтому указываю и то и другое.

отказыватся НАДА, только не всегда это возможно. нада старатся. на линуксе это произошло вместе с процессорами.
я щас соберу и выложу. хотя нехотелось wink.gif
AHTOXA
Цитата(klen @ Oct 22 2010, 22:26) *
для 32битных масдаев я не собрал - давайте медленно но верно относить старье на помойку истории.


Ну это вы напрасноsmile.gif Думаю, что значительно более половины тутошних виндузятников сидит под ХР 32-бит, и ещё какое-то время никуда не двинутся. Особенно в свете того, что, как я читал, 7-я винда не даёт ставить неподписанные дрова (прощайте LPT-шные программаторы с giveio, прощай olimex MSP430-JTAG-TINY, и ещё куча интересных железок.)
Ну или, если говорить только про себя, то лично я пока сижу под ХР 32-битsmile.gif
klen
Цитата(AHTOXA @ Oct 22 2010, 21:01) *
Ну это вы напрасноsmile.gif Думаю, что значительно более половины тутошних виндузятников сидит под ХР 32-бит, и ещё какое-то время никуда не двинутся. Особенно в свете того, что, как я читал, 7-я винда не даёт ставить неподписанные дрова (прощайте LPT-шные программаторы с giveio, прощай olimex MSP430-JTAG-TINY, и ещё куча интересных железок.)
Ну или, если говорить только про себя, то лично я пока сижу под ХР 32-битsmile.gif


ай жесть какаято..
ставлю самодельные дрова к соим устройствам под семерку - даже не жужжит! кажется билли своей дланью до моих дровишек не дотягивалсо с намеренем аффтограф поставить. и вообще ее(винду) никто не спрашивает хотит она или нет, кто в доме папа? они даже аутентификацию пользоватедя до сихпор сделать несумели как нада, а вы 'драйверы не подписаны". ну даладно... нехочу про винду - мерзкая она и работает мерзко и код под нее я из подпалки пишу, потомучто написать не мерзкий код под мерзкую ос невозможно - кривизна пластинок должна сответствовать кривизне патифона - иначе заклинит.

вот 32 битная сборка:

http://electronix.ru/redirect.php?http://k..._32_20101022.7z
я ее 3минуты назад собрал и не тестил - собираю и работю под убунтой, чтоб проверить нада перегружатся. если че докину если че забыл положить. вроде все как обычно.

AHTOXA
Цитата(klen @ Oct 23 2010, 00:12) *
вот 32 битная сборка:


Спасибоsmile.gif
В принципе работает, в смысле - запускается. Но на сборке моего тестового (рабочего) проекта (C++) выдало странную ошибку:
"invalid argument to gimple call".
klen
Цитата(AHTOXA @ Oct 22 2010, 22:40) *
Спасибоsmile.gif
В принципе работает, в смысле - запускается. Но на сборке моего тестового (рабочего) проекта (C++) выдало странную ошибку:
"invalid argument to gimple call".

GIMPLE - это форма представления дерева программы которую юзает gcc, наверно налетели на какойто редкий косяг. нитересно. а предыдущая сборкак как? переваривает исходник?
оно еще строку кода и имя исходника написать - есть такое?
AHTOXA
Цитата(klen @ Oct 23 2010, 01:10) *
GIMPLE - это форма представления дерева программы которую юзает gcc, наверно налетели на какойто редкий косяг.

Понятно. Странно, что внутренняя ошибка GCC обрабатывается как ошибка в компилируемой программе.
Цитата
а предыдущая сборкак как? переваривает исходник?

Я несколько предыдущих сборок пропустил, каюсь, не было времени совсем. Но та пред-пред-пред-предыдущая, которой я сейчас пользуюсь, - не выдаёт такой ошибки. Дату сборки посмотрю позже, если надо.
Цитата
оно еще строку кода и имя исходника написать - есть такое?

Да, заругалось на конкретную переменную в конкретной строке. Типа, на ch в строке
TxChannel.Push(ch);
ReAl
Цитата(klen @ Oct 22 2010, 21:12) *
ставлю самодельные дрова к соим устройствам под семерку - даже не жужжит!
Ну а вот есть inpout-что-то там, под XP/64 без проблем работает, под W7/64 не хочет, ругается на неподписанный драйвер. Что ей сделать?
Где-от натыкался на рекомендации как что и куда, но они требуют каждый раз при загрузке F8 тыкать и особым образом загружаться. Как-то грустно.
Собственно, мне как бы и всё равно, сам под убунтой и с FT2232 сижу, но «народ интересуется».
klen
празничный билд!
свежак для армов, HALLOWEEN_EDITIION. жеско отимизирует выходной код при компиляции тыкв с фанриками!

Win32:
klen.org/Files/DevTools/kgp-arm-eabi_x86_32_HALLOWEEN_EDITIION.7z

Win64
klen.org/Files/DevTools/kgp-arm-eabi_x86_64_HALLOWEEN_EDITIION.7z
SergeyDDD
Цитата(klen @ May 11 2010, 23:28) *
я вижу ситуацию равнобедренно. нефиг тому что не относится к компиллеру там делать.
но с другой стороны - вместе с этим наборчиком получается минимальный полный набор джентельмена.
поэтому я думаю что make,rm, sh будут в отдельном архивчике с постоянным URL и будет все задокументировано в readme к KGP.


Здравствуйте уважаемы Klen!
Прежде всего спасибо за Вашу работу...

У меня возникла проблема с поиском make,rm, sh
Где можно найти этот "отдельный архивчик"?
В KGP искомого readme и URL-ов я не нашел

demiurg_spb
Цитата(SergeyDDD @ Nov 1 2010, 13:08) *
У меня возникла проблема с поиском make,rm, sh
Где можно найти этот "отдельный архивчик"?

Вам нужен MSYS
http://www.mingw.org/wiki/MSYS
klen
ставить весь MSYS нет необходимости, вы его всеравно не будете использовать при работе. изза 4 файлов ставить сотню другую, незачем
http://klen.org/Files/DevTools/make_sh_rm_touch.7z
только тех утилит что мспользуются при сборке проектов с помощью make
adnega
make all
..compiling main.c
'c:\gcc\kgp_arm_eabi\bin'\arm-kgp-eabi-gcc -std=c99 -fpack-struct -mcpu=cortex-m3 -mthumb -O0 -c main.c -o main.o
...linking
'c:\gcc\kgp_arm_eabi\bin'\arm-kgp-eabi-ld -Map main.map -T linker.ld main.o -o sops_kg.out
main.o: In function `kg_add_kv':
main.c:(.text+0x7748): undefined reference to `memcpy'
main.o: In function `event_add':
main.c:(.text+0x8f78): undefined reference to `__disable_irq'
main.c:(.text+0x8fa4): undefined reference to `memcpy'
main.c:(.text+0x8fd8): undefined reference to `__enable_irq'
main.c:(.text+0x8fee): undefined reference to `__enable_irq'
main.o: In function `event_free':
main.c:(.text+0x9008): undefined reference to `__disable_irq'
main.c:(.text+0x9024): undefined reference to `__enable_irq'
main.c:(.text+0x9056): undefined reference to `memcpy'
main.c:(.text+0x9086): undefined reference to `__enable_irq'
make: *** [sops_kg.out] Error 1

Что он от меня просит?
memcpy я нигде не использую, компилятор вставляет ее сам (например, при присваивании структур). Линкер не может найти.

Второй вопрос? а где взять __disable_irq и т.п.?

PS. Ухожу от Keil`a
AHTOXA
Цитата(adnega @ Nov 24 2010, 19:50) *
Ухожу от Keil`a

И это правильноsmile.gif
Что касаемо вопроса - используйте в качестве линкера не ld, а gcc - он в курсе стандартных библиотек, и сам подключит нужные.
Ну или указываете все либы явно (-lgcc, -lc и т. д.)
Ну а __disable_irq - в CMSIS, в файле "core_cm3.h".
adnega
Не помогает(

...linking
'c:\gcc\kgp_arm_eabi\bin'\arm-kgp-eabi-ld -Map main.map -T linker.ld libc.a libgcc.a main.o -o sops_kg.out
main.o: In function `kg_add_kv':
main.c:(.text+0x7748): undefined reference to `memcpy'

Файлы приписал явно, поместил в директорию проекта, т.е. линкер их находит

Причем nm -r libc.a

lib_a-memcpy.o:
00000000 T memcpy

а nm -r main.o

000013e8 R menu
U memcpy
0000db84 T main
00000004 C lost
AHTOXA
Цитата(adnega @ Nov 24 2010, 20:31) *
Не помогает(

А первый вариант? С gcc?

Цитата
'c:\gcc\kgp_arm_eabi\bin'\arm-kgp-eabi-ld -Map main.map -T linker.ld libc.a libgcc.a main.o -o sops_kg.out

Не так. Я же написал в скобочках: "-lgcc, -lc"
То есть, от имени библиотеки отнимаете префикс lib, вместо него ключик -l. Например, для libgcc.a надо написать -lgcc.
Но всё же пользуйте gcc, это рекомендованный способ. Он ко всему прочему выбирает библиотеки из правильного варианта согласно архитектуре и прочим делам.
Сергей Борщ
QUOTE (adnega @ Nov 24 2010, 17:31) *
Не помогает(
"Если ничего не помогает - прочтите, наконец, инструкцию!"
-lc.a -lgcc.a

А чем вас так пугает вызов gcc вместо ld?
adnega
про ключик -l мне известно, и, если я не путаю, то -l{name} === lib{name}.a.

тестовый пример (с использованием статической библиотеки) с gcc заработал, боевой попробую завтра.

использую ld, т.к. есть makefile, его использующий.

меня пугает не вызов той или иной программы, а непонимание процесса.
правильно я думаю, что принеобходимости gcc сам вызовет ld (например, для выполнения скрипта линкера)?
klen
Цитата(adnega @ Nov 24 2010, 17:50) *
memcpy я нигде не использую, компилятор вставляет ее сам (например, при присваивании структур). Линкер не может найти.

1. я бы на месте компиллера тоже самое сделал. наверно хотя это не его собачче дело функции вызывать, код генерить копирующий да, но функции...
2. однакож... я если честно не знал что в С структуры можно присваивать.... век живи век учись...
ReAl
Цитата(adnega @ Nov 24 2010, 20:37) *
правильно я думаю, что принеобходимости gcc сам вызовет ld (например, для выполнения скрипта линкера)?
gcc (gcc.exe) это не компилятор а программа управления компиляторами. Весь пакет GCC — это GnuCompilerCollection, а исполняемый файл gcc это сокрее GnuCompilerController.
Он вызывает ld всегда, если его не попросить специально этого не делать ключиками -c, -S, -E.
Не вызывает компилятор, если на входе указаны только объектные файлы.
Вызывает ассемблер, если на входе файл .s
Зная заданные при сборке пути, сам их подставляет куда надо (запуская препроцесор, компилятор, линкер).
И так далее. Т.е. делает много вещей по умолчанию, которые иначе пришлось бы делать вручную.
Даже оптимизация может выполняться отдельными исполняемыми файлами и cc вызывает их только если оптимизация задана.

А по поводу -l, насколько я понимаю, дело в этом
Цитата
The only difference between using an -l option and specifying a file name is that -l surrounds library with `lib' and `.a' and searches several directories.
Задавая через -l Вы просите его поискать библиотеку и в каталогах по умолчанию.
Задавая в командной строке полное имя библиотеки — взять библиотеку в текущем каталоге либо в указанных по -L
demiurg_spb
Цитата(klen @ Nov 25 2010, 00:42) *
век живи век учись...
Это да...

Ну так стандартная функция div ведь возвращает структуру, которая присваивается структуре.
Код
div_t x = div(n, 10U);

Жаль что нельзя инициализировать структуру константой после её объявления:
Код
div_t x = {10, 10}; // можно
div_t y;
y = {10, 10};    // нельзя

Жаль что нельзя сравнивать структуры на равенство:
Код
div_t x = {10,10};
div_t y = {10,10};
if (x==y)
{
}

С чего бы такие ограничения?
adnega
спасибо за ответы.

Про gcc я так и думал - мол, делает все за всех о чем его надо просить ключиками. Не ясно почему не работает ld, но сейчас это уже не актуально - надеюсь, со временем осознание придет.

так)

Проект компилируется и даже работает код в железе (причем используются прерывания).
Теперь не могу найти откуда берется таблица векторов прерываний (или весь startup).
По сути мне нужно прописать новое прерывание (для SDIO), в файле stm32f10x_it.c его нет.
Где почитать по этому вопросу (редактирование таблицы векторов прерываний, стартап и т.п.)?
+ где почитать о том, что делается до функции main (инициализация переменных и т.п.)
+ как задавать размер стека и его положение (сейчас жестко задаю размер и положение; как хотя бы приблизительно узнать необходимый размер стека)?
ReAl
Цитата(demiurg_spb @ Nov 25 2010, 13:02) *
Жаль что нельзя инициализировать структуру константой после её объявления:
Код
div_t x = {10, 10}; // можно
div_t y;
y = {10, 10};    // нельзя

C99 6.5.2.5 Compound literals
Иногда пользуюсь.
Код
struct foo {
        int a, b;
};

struct foo foo1;
void moo() {  foo1 = (struct foo){1, 2};  }
gcc -O2 -S -std=c89 --pedantic stru.c
Цитата
str.c: In function ‘moo’:
stru.c:9: warning: ISO C90 forbids compound literals
gcc -O2 -S -std=c99 --pedantic stru.c
cat stru.s
Код
    .file    "stru.c"
    .text
    .p2align 4,,15
.globl moo
    .type    moo, @function
moo:
.LFB0:
    .cfi_startproc
    movl    $1, foo1(%rip)
    movl    $2, foo1+4(%rip)
    ret
    .cfi_endproc
.LFE0:


Цитата(demiurg_spb @ Nov 25 2010, 13:02) *
Жаль что нельзя сравнивать структуры на равенство:
...
С чего бы такие ограничения?
Ну батенька, Вам мёд, да ещё и ложкой :-)


Цитата(adnega @ Nov 25 2010, 13:38) *
Не ясно почему не работает ld,
Задать каталоги библиотек компилятора через ключ -L пробовали? gcc ему их подсовывает от себя.
MrYuran
Цитата(klen @ Nov 25 2010, 00:42) *
2. однакож... я если честно не знал что в С структуры можно присваивать.... век живи век учись...

Присваивать-то можно, но не факт что оптимально будет присваиваться.
Всё-таки memcpy() предпочтительнее
ReAl
Кстати, оно даже так работает
Код
void baa( struct foo *p);

void kwa() {
        baa( &(struct foo){ 5, 6} );
}
Создаёт на стеке временную переменную типа struct foo, заполняет её и адрес передаёт. Вот avr-gcc. Ничем не отличается от явного указания локальной переменной с её инициализацией.
Код
.global    kwa
    .type    kwa, @function
kwa:
    push r29
    push r28
    rcall .
    rcall .
    in r28,__SP_L__
    in r29,__SP_H__
/* prologue: function */
/* frame size = 4 */
    ldi r24,lo8(5)
    ldi r25,hi8(5)
    std Y+2,r25
    std Y+1,r24
    ldi r24,lo8(6)
    ldi r25,hi8(6)
    std Y+4,r25
    std Y+3,r24
    movw r24,r28
    adiw r24,1
    rcall baa
/* epilogue start */
    pop __tmp_reg__
    pop __tmp_reg__
    pop __tmp_reg__
    pop __tmp_reg__
    pop r28
    pop r29
    ret

Именно так и пользовался — для инициализиации записей в EEPROM значениями по умолчанию при слёте CRC (ну, тех записей, которые можно было просто переинициализировать).

Цитата(MrYuran @ Nov 25 2010, 16:21) *
Присваивать-то можно, но не факт что оптимально будет присваиваться.
Всё-таки memcpy() предпочтительнее
Так выше ж было сказано, что он memcpy для этого и вызывает.
Когда-то раньше, кто-то другой, кто не умел по месту разбираться в длине/её константности в вызове memcpy и вызывал именно функцию memcpy всегда, для копирования структур присваиванием прикидывал и либо делал почленное копирования по месту, либо вызывал memcpy. Так что присваивание структур компилировалось оптимально.
MrYuran
Цитата(AHTOXA @ Oct 22 2010, 20:01) *
Ну это вы напрасноsmile.gif Думаю, что значительно более половины тутошних виндузятников сидит под ХР 32-бит, и ещё какое-то время никуда не двинутся. Особенно в свете того, что, как я читал, 7-я винда не даёт ставить неподписанные дрова (прощайте LPT-шные программаторы с giveio, прощай olimex MSP430-JTAG-TINY, и ещё куча интересных железок.)
Ну или, если говорить только про себя, то лично я пока сижу под ХР 32-битsmile.gif

Мне админ поставил 7-ку на пару недель, потом полетел винт, и на новый вернул опять ХР.
Брезгует семёрка нормально работать в сети с 2003 Server, хочет 2008...
По идее конечно, надо переходить на 64, но только не винду..
demiurg_spb
Цитата(ReAl @ Nov 25 2010, 17:21) *
C99 6.5.2.5 Compound literals
Иногда пользуюсь.
О! Не знал. Спасибо!
Цитата
Ну батенька, Вам мёд, да ещё и ложкой :-)
Ага! Каштановый медок обожаю!:-)
adnega
Цитата(adnega @ Nov 25 2010, 14:38) *
спасибо за ответы.

Про gcc я так и думал - мол, делает все за всех о чем его надо просить ключиками. Не ясно почему не работает ld, но сейчас это уже не актуально - надеюсь, со временем осознание придет.

так)

Проект компилируется и даже работает код в железе (причем используются прерывания).
Теперь не могу найти откуда берется таблица векторов прерываний (или весь startup).
По сути мне нужно прописать новое прерывание (для SDIO), в файле stm32f10x_it.c его нет.
Где почитать по этому вопросу (редактирование таблицы векторов прерываний, стартап и т.п.)?
+ где почитать о том, что делается до функции main (инициализация переменных и т.п.)
+ как задавать размер стека и его положение (сейчас жестко задаю размер и положение; как хотя бы приблизительно узнать необходимый размер стека)?


Разобрался. Все меня интересующее было в файлике stm32f10x_vector.c.

Проект с Keil успешно переведен под gcc! Осталось только причесать, но с этим справлюсь самостоятельно.
)
Spym
klen, скажите, а как обстоят дела с поддержкой C++ исключений на AVR?
klen
Цитата(Spym @ Dec 13 2010, 11:21) *
klen, скажите, а как обстоят дела с поддержкой C++ исключений на AVR?


а четр его знает, я не пробывал. тут и без с++ исключений тяжко - во превых никак не могут в транке поченить складывание отладочной информации dwarf в бинарник, во вторых с++ на AVR это для лично для меня из области сферически-вакумных коней, а уж исключения... их на больших машинах иногда отключают - дорогое удовольствие (код размотки исключений + вся их инфраструктура во всех моих проектах была больше (~44k) чем целевой код, в итоге я таки научился вместе скомпиллером все это отключать). в третих - буквально в воскресенье позвонил старый сослуживец, мы сним начинали делать аппарат прозвонка на 1000 контактов (кабельные пауки тестить), так вот я начинал делать на модулях с кортексами, я уволился, он не имея опыта по армам все переделал на атмегах1280. решение орг проблем по девайсу заняло 9 месяцев - теперь он в панике просит все переделать в зад на кортексах потому как с мегами жопа начилась. неможет их купить, а нада сотнями штук! короце друзья - с авэров я слез окончательно и бесповоротно чего и вам желаю.
возможно все вышесказанное не относится к AVR32.

я для авр сборки не выкладываю не потому что забил, потому что не получается c отладочной информацией elf заставить gcc генерить sad.gif
если нада я могу свежак собрать - я уверен что код будет генерится хороший но в AVRStudio можно будет только по асму ползать при симуляции.


свежак для армов
64bit host
http://www.klen.org/Files/DevTools/kgp-arm...-64_20101212.7z

32bit host
http://www.klen.org/Files/DevTools/kgp-arm...-32_20101212.7z
garlands
Цитата(MrYuran @ Nov 25 2010, 16:42) *
Мне админ поставил 7-ку на пару недель, потом полетел винт, и на новый вернул опять ХР.
Брезгует семёрка нормально работать в сети с 2003 Server, хочет 2008...
По идее конечно, надо переходить на 64, но только не винду..

#define offtop_mode
да Вы что??! =0 у меня на работе стояла семерка, а файлопомойка вообще на 2000 винде была. и ничего, все нормально ходило.
это примерно как на позапрошлой работе у меня вся контора (а это без малого полторы тысячи человек) сидела на 2000 винде только потому, что админ (линуксоид просто супер, а вот в винде...) не знал, что хрюшу можно завтавить пускать на шару не только под гостевой учеткой... wink.gif
#undef offtop_mode
Genadi Zawidowski
Цитата(klen @ Dec 14 2010, 10:38) *
свежак для армов
...
32bit host


Работает (at91sam7sxxx).
ReAl
Цитата(klen @ Dec 14 2010, 09:38) *
дорогое удовольствие (код размотки исключений + вся их инфраструктура
Там, если я правильно понял, не только код, но и на стеке дополнительная информация для размотчика должна быть, т.е. ОЗУ тоже полетит.
Для AVR не вижу возможности применять. Разве что на самых толстых, но тут уже не вижу смысла их самих применять (кроме, разве что, atxmega).

Цитата(klen @ Dec 14 2010, 09:38) *
я для авр сборки не выкладываю не потому что забил, потому что не получается c отладочной информацией elf заставить gcc генерить sad.gif
если нада я могу свежак собрать - я уверен что код будет генерится хороший но в AVRStudio можно будет только по асму ползать при симуляции.
По студиям не ползаю.

Только мне бы сборочки AVR и ARM под Linux-64… Всё лень самому научиться это делать…
klen
Цитата(ReAl @ Dec 14 2010, 19:58) *
По студиям не ползаю.
Только мне бы сборочки AVR и ARM под Linux-64… Всё лень самому научиться это делать…


оекй, выложу. я собсно под Linux-64 и собираю в первую очередь, а потом уже для выни (так сказать побочный для меня продукт sm.gif массово востребованый миром )
inco
Цитата(klen @ Dec 14 2010, 23:14) *
оекй, выложу. я собсно под Linux-64 и собираю в первую очередь, а потом уже для выни (так сказать побочный для меня продукт sm.gif массово востребованый миром )


И я присоединяюсь к просьбе! Вы бы выкладывали регулярно с виндовыми версиями и линукс 64. Очень было бы удобно один и тот же компилер в обоих средах.
_3m
Цитата(inco @ Dec 15 2010, 08:53) *
Вы бы выкладывали регулярно с виндовыми версиями и линукс 64. Очень было бы удобно...

crying.gif crying.gif crying.gif
ыы-ы-ы...
у меня 32-х битный линукс и 64 поставить нет никакой возможности
Уважаемый klen, выкладывайте хотя бы исходники.
klen
Цитата(_3m @ Dec 15 2010, 21:46) *
crying.gif crying.gif crying.gif
ыы-ы-ы...
у меня 32-х битный линукс и 64 поставить нет никакой возможности
Уважаемый klen, выкладывайте хотя бы исходники.

дык исходники в транке - бери кто хочеш sm.gif делай что хочеш

а че возможности нету то? на телефоне чтоль кодите? sm.gif
Petka
Цитата(ReAl @ Dec 14 2010, 19:58) *
Только мне бы сборочки AVR и ARM под Linux-64… Всё лень самому научиться это делать…

АРМ тулчейн под линукс собираю скриптом из топик со скриптом. Работает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.