|
|
  |
CrossWorks и Maverick, Как настроить поддержку в CrossWorks Maverick сопроцессора для ep93xx? |
|
|
|
Nov 23 2006, 16:37
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404

|
Цитата(aaarrr @ Nov 23 2006, 14:19)  Если под Winows, то, ИМХО, никак. Под Linux'ом можно попробовать прикрутить тулчейн от Цирруса, если CrossWorks это позволяет. Хмм а почему? К примеру Ep93xx\Src\Kernel\Hal\Common\crunch.s Код ... ; Save the DPCS and crunch registers. ; cfstr64 c15, [r0, #0x78] cfmv32sc c15, c0 cfstr64 c15, [r0, #0xb0] cfstr64 c0, [r0, #0x00] ... Оно то должно как-то компилироваться?? А для WinCE впридачу идёт CrunchLib (где sqrt, sin, cos и тд оптимизированы под crunch) хотя толку от неё не скажешь, что особо много...
|
|
|
|
|
Nov 23 2006, 20:09
|

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

|
Цитата(aaarrr @ Nov 23 2006, 15:19)  Если под Winows, то, ИМХО, никак. Под Linux'ом можно попробовать прикрутить тулчейн от Цирруса, если CrossWorks это позволяет. Ну почемуж никак. Нада пересобрать GCC с поддержкой ep9312. Я как раз это собираюсь сделать. Если получится то выложу. Я правильно понимаю что ep9312 как раз и содержит MavericCRUNCH. C точки зрения gcc пересобирается binutils в котором ассемблер здает кроме ARM инструкций еще и модуля MavericCRUNCH, и соответственно собирается gcc +newlib в котором по другому собирается libm - для использования инструкций сопроцессора. Все. Если ктонить мне подарит долголетие к CW 1.6 build 3 то я ему сделаю поддержку чего угодно  Цитата Код К примеру Ep93xx\Src\Kernel\Hal\Common\crunch.s [code] ... ; Save the DPCS and crunch registers. ; cfstr64 c15, [r0, #0x78] cfmv32sc c15, c0 cfstr64 c15, [r0, #0xb0] cfstr64 c0, [r0, #0x00] ... Оно то должно как-то компилироваться??Lsr Дык асемблер может ругнутся что незнает он таких инструкций. Цитата А для WinCE впридачу идёт CrunchLib (где sqrt, sin, cos и тд оптимизированы под crunch) хотя толку от неё не скажешь, что особо много... Наверно так "оптимизирована"  Былаб у меня плата с таким девайсом яб с удовольствием поупражнялся вместе с GCC функции на ассемблерных вставках пореализовывать. Но нет девайса..  А у ep9301 есть сопроцессор?
|
|
|
|
|
Nov 23 2006, 23:48
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404

|
Цитата(klen @ Nov 23 2006, 20:09)  Дык асемблер может ругнутся что незнает он таких инструкций. Дык WinCE собирается и не ругается, а это был файл из HAL  вот только компилятор С/С++ от MS не генирирует года Crunch =( (по крайне мере я про это ничего не нашел) поэтому в WinCE остается только CrunchLIB или ручками на ассемблере... Цитата(klen @ Nov 23 2006, 20:09)  А у ep9301 есть сопроцессор? Нет, зато есть у всех остальных этого семейства (9302/9307/9312/9315)
|
|
|
|
|
Nov 24 2006, 00:41
|

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

|
[quote name='klen' post='179412' date='Nov 23 2006, 20:09'] А у ep9301 есть сопроцессор? [/quote] Нет, зато есть у всех остальных этого семейства (9302/9307/9312/9315) [/quote] какой большой облом  я плакаю. У терры-электроники есть дев-платка на 9301 - стоит ~4000р НО на 9301 , хотел уже побежать в магазин... Olimex обесчает скоро появится тоже самое но на 9315: http://www.olimex.com/dev/index.htmlЯ уже созрел для такой машинки. Поставлю ее на авиамодель. Хотелосьбы чтоб она дешевле 250$ стоила
|
|
|
|
|
Nov 24 2006, 00:49
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(klen @ Nov 23 2006, 20:09)  Ну почемуж никак. Нада пересобрать GCC с поддержкой ep9312. Я как раз это собираюсь сделать. Если получится то выложу. Да, я несколько погорячился - мне почему-то казалось, что crunch доступен только в виде бинарников. Но все равно, по-моему, овчинка выделки не стоит. Цитата(sff @ Nov 23 2006, 23:48)  Цитата(klen @ Nov 23 2006, 20:09)  Цитата К примеру Ep93xx\Src\Kernel\Hal\Common\crunch.s Код ... ; Save the DPCS and crunch registers. ; cfstr64 c15, [r0, #0x78] cfmv32sc c15, c0 cfstr64 c15, [r0, #0xb0] cfstr64 c0, [r0, #0x00] ... Оно то должно как-то компилироваться??Lsr Дык асемблер может ругнутся что незнает он таких инструкций. Дык WinCE собирается и не ругается, а это был файл из HAL  вот только компилятор С/С++ от MS не генирирует года Crunch =( (по крайне мере я про это ничего не нашел) поэтому в WinCE остается только CrunchLIB или ручками на ассемблере... С точки зрения ассемблера это просто инструкции работы с сопроцессором - CDP, LDC, STC, MCR, MRC - они вполне могут и макросами определяться.
|
|
|
|
|
Nov 24 2006, 10:35
|

Дух погибшего транзистора
   
Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288

|
Эта появлюсь я в теме. Во первых у olimexa существует точно такае же платка, но на 9302, в котором сопроцессор присутсвует. Терра похоже может закупить их если заказов будет более 100 у.е, то есть хотябы один.  А на 9301 плат у них в наличии сейчас все-равно нет. Я в принципе то же заинтересован, так что можно сообща обратится к барыгам с просьбой привести платки.  Во-вторых. Я тут тоже с кроссворксом вожусь, правда пока с 1.5. в процессе возникли следующие вопросы. 1 Каким образом избавится от того, что линкер присобачивает в прошивку все что накомпиляет компилятор. В отличие от gcc нормальные тулчейны собирают только используемый код. Надо это мне, так как на фирме принято использовать бибилиотечки, которые хранятся в исходниках, а объемы встроенного флеша всеже не резиновые. 2 почему линкер gcc ругаецца на inline функции как на multiply definition в разных модулях. Я объявил конечно функции из библиотечки atmel как static но по-моему это бред какой-то. 3 Каким образом компилять в thumb режиме? Дело в том что в программе используются обработчики прерываний, а они должны быть arm. Ну собственно вопроса то два. Во превых можно ли как то объяснить gcc что функция должна быть арм. Во-вторых насколько корректно скомпиляется прога, если не использовать общий обработчик в стартапе, а пользоваться __attribute__ 4 Насколько возможно к этому долбаному кроссворску подключить сторониий gсс дистрибутив, например такой http://www.codesourcery.com/gnu_toolchains/arm/ Я так и не понял каким образом сделатть так, чтобы использовались библиотеки идущие с этой сборкой, а не от кроссворкса. Пробовал подключать только собственно компилер - с библиотеками кроссворкса не уживается.
--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
|
|
|
|
|
Nov 24 2006, 12:39
|

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

|
Цитата(SpiritDance @ Nov 24 2006, 10:35)  Эта появлюсь я в теме. Во первых у olimexa существует точно такае же платка, но на 9302, в котором сопроцессор присутсвует. Терра похоже может закупить их если заказов будет более 100 у.е, то есть хотябы один.  А на 9301 плат у них в наличии сейчас все-равно нет. Я в принципе то же заинтересован, так что можно сообща обратится к барыгам с просьбой привести платки.  Я всеми лапами ЗА. Очень хоцца помацать GCC+сопроцессор из исследовательских целей. Цитата Во-вторых. Я тут тоже с кроссворксом вожусь, правда пока с 1.5. в процессе возникли следующие вопросы.
1 Каким образом избавится от того, что линкер присобачивает в прошивку все что накомпиляет компилятор. В отличие от gcc нормальные тулчейны собирают только используемый код. Надо это мне, так как на фирме принято использовать бибилиотечки, которые хранятся в исходниках, а объемы встроенного флеша всеже не резиновые. если компиллер генерит код с опцией -g.. то в объектник валются все секции код, данные, отладка и тд. Чтоб оставить только содержательный код нужно пройтись по elf-бинарникам и библиотекам утилитой strip (в пакете binutils), собраной под arm-elf. Тем неменение в флешь заливается не ELF, а сделанный из него с помощью утилиты obj-copy HEX или BIN файл. Поэтому во флеш по любому не лезет лишние секции. Другое дело если вы не используете оптимизацию. То тогда GCC по умолчанию генерит все по стандарту и не отбрасывает "ненужный код". Попробуйте собрать с опцией -O1 или -O2 Напимер. код должен уменьшится и ускорится. Цитата 3 Каким образом компилять в thumb режиме? Дело в том что в программе используются обработчики прерываний, а они должны быть arm. Ну собственно вопроса то два. Во превых можно ли как то объяснить gcc что функция должна быть арм. Во-вторых насколько корректно скомпиляется прога, если не использовать общий обработчик в стартапе, а пользоваться __attribute__ в отличие от других компиллеров в GCC для использования кода Thumb нужно этот код собирать в отдельных модулях и компелировать с опцией -mthumb, в дополнение к опциям компиляции модулей обоих типов необходимо добавить опуию -mthumb-interwork, чттоб компиллер генерил кодд совместимый с перекрестными вызоваи функций с кодом обоих типов. Цитата 4 Насколько возможно к этому долбаному кроссворску подключить сторониий gсс дистрибутив, например такой http://www.codesourcery.com/gnu_toolchains/arm/ Я так и не понял каким образом сделатть так, чтобы использовались библиотеки идущие с этой сборкой, а не от кроссворкса. Пробовал подключать только собственно компилер - с библиотеками кроссворкса не уживается. Не только возможно но и категарически нужно. Поскольку в GCC найденные баги правятся "на лету", в отличие от коммерческих компиллеров. Для этого нада просто поменять файлы в CrossWorks/gcc/bin на новые из другой сборки. Людиииииии... есть у кого таблетка к CrossWorks 1.6 biuld 3, пааамираюю..
|
|
|
|
|
Nov 24 2006, 14:18
|

Дух погибшего транзистора
   
Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288

|
Цитата если компиллер генерит код с опцией -g.. то в объектник валются все секции код, данные, отладка и тд. Чтоб оставить только содержательный код нужно пройтись по elf-бинарникам и библиотекам утилитой strip (в пакете binutils), собраной под arm-elf. Тем неменение в флешь заливается не ELF, а сделанный из него с помощью утилиты obj-copy HEX или BIN файл. Поэтому во флеш по любому не лезет лишние секции. Другое дело если вы не используете оптимизацию. То тогда GCC по умолчанию генерит все по стандарту и не отбрасывает "ненужный код". Попробуйте собрать с опцией -O1 или -O2 Напимер. код должен уменьшится и ускорится. Я это дело проверял именно по размеру бинарника в профилях ARM flash debug и ARM flash release c подсоединненой бибилиотечкой усарта и без нее, в main в обоих случаях было просто записано for(;;); с подсоедиными к проекту файлами бинарник занял около 9К в дебаге и около 5К в релизе, в то время как с неприсоединнеными файлами заняло что-то около 500 байт. Я могу повторить экспиримент с и привести точные данные если хотите. Цитата в отличие от других компиллеров в GCC для использования кода Thumb нужно этот код собирать в отдельных модулях и компелировать с опцией -mthumb, в дополнение к опциям компиляции модулей обоих типов необходимо добавить опуию -mthumb-interwork, чттоб компиллер генерил код совместимый с перекрестными вызовам функций с кодом обоих типов. ОК. Только мне осталось непонятным как при таком подходе будут работать обработчики прерываний, при условии что обработчик в startup не задействован. Цитата Не только возможно но и категарически нужно. Поскольку в GCC найденные баги правятся "на лету", в отличие от коммерческих компиллеров. Да дело даже не столько в багах сколько именно в возможности использовать сторонние дистрибутивы. а то вся прелесть gcc вобще-то и теряется. Цитата Для этого нада просто поменять файлы в CrossWorks/gcc/bin на новые из другой сборки. Дык блин говорю же, так и поступал. причем можно даже ничего не менять указав путь к gcc в tools->options-build, компилятор по прежнему заглотил код, но линкер начал ругатся на оепратор деления  , типа не смог наети entry point или что-то в этом роде. кстати а что с inline? Я что то непонимаю или как?
--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
|
|
|
|
|
Nov 25 2006, 13:52
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 8-02-05
Из: Харьков
Пользователь №: 2 496

|
To Klen. Умирать не стоит.
Прикрепленные файлы
klen.rar ( 53.69 килобайт )
Кол-во скачиваний: 256
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|