|
WinAVR: Cовмещение Си и ассемблера |
|
|
|
Feb 9 2012, 11:23
|

Местный
  
Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658

|
Здраствуйте ! Использовал пример из статьи: http://we.easyelectronics.ru/AVR/avr-gcc-s...om-proekte.html"AVR-GCC: Совмещение C и ассемблера в одном проекте ". Начал править makefile, которым я обычно пользуюсь, но при указании Assembler source files... получил error: Oops, ASRC not found ! Не понимаю что не так делаю ! В чем может быть проблема ?
|
|
|
|
|
 |
Ответов
|
Feb 15 2012, 17:58
|

Местный
  
Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658

|
Всем спасибо за разьяснение в особенности haker_fox  Возникла другая проблема! При совмещении асм-кода и Си компилятор "заоптимизировал" почти весь алгоритм Си программы, а именно: вечный цикл Код while (1) { if (Cnt_Dl==0) { BufLed=pgm_read_byte (Ptabl); // ЗАГРУЗКА НОВОГО ЗНАЧЕНИЯ ТОНА Ptabl++; Cnt_Dl=1000; } } был упрощен до: Код while (1) { if (Cnt_Dl==0) 74: 23 2b or r18, r19 76: 19 f4 brne .+6 ; 0x7e <main+0x16> { BufLed=pgm_read_byte (Ptabl); // ЗАГРУЗКА НОВОГО ЗНАЧЕНИЯ ТОНА 78: 84 91 lpm r24, Z+ 7a: 80 93 60 00 sts 0x0060, r24 7e: ff cf rjmp .-2 ; 0x7e <main+0x16> переменные BufLed и *Ptabl описаны в Си-программе как Код uint8_t const *Ptabl; volatile uint8_t BufLed; // буфер для отображения оттенка соответствующим образом обьявленны в Асме и связке h-файла: Код #ifdef __ASSEMBLER__ # define sreg_save r2 # define LedTne r4 # define GenCnt r16 # define Cnt_Dl_low r18 # define Cnt_Dl_hi r19
#else /* !ASSEMBLER */
#include <stdint.h> register uint8_t LedTne asm("r4"); register uint16_t Cnt_Dl asm("r18");
#endif /* ASSEMBLER */ В чем может быть дело ?
Сообщение отредактировал MaxiMuz - Feb 15 2012, 18:03
|
|
|
|
Сообщений в этой теме
MaxiMuz WinAVR: Cовмещение Си и ассемблера Feb 9 2012, 11:23 demiurg_spb Makefile в студию... Feb 9 2012, 11:35 haker_fox QUOTE (MaxiMuz @ Feb 9 2012, 19:23) Здрас... Feb 9 2012, 12:35 MaxiMuz Цитата(haker_fox @ Feb 9 2012, 15:35) А В... Feb 9 2012, 16:06  demiurg_spb Это ваш реальный мейкфайл из проекта?
В вашем теку... Feb 9 2012, 16:15   MaxiMuz Цитата(demiurg_spb @ Feb 9 2012, 19:15) Э... Feb 9 2012, 16:20    demiurg_spb Цитата(MaxiMuz @ Feb 9 2012, 19:20) Да, в... Feb 10 2012, 05:40     Сергей Борщ QUOTE (demiurg_spb @ Feb 10 2012, 07:40) ... Feb 10 2012, 12:00  haker_fox QUOTE (MaxiMuz @ Feb 10 2012, 00:06) Счит... Feb 12 2012, 06:05   MaxiMuz Цитата(haker_fox @ Feb 12 2012, 09:05) Эт... Feb 12 2012, 16:45   MaxiMuz Цитата(haker_fox @ Feb 12 2012, 09:05) Эт... Feb 14 2012, 11:50 MaxiMuz Цитата(haker_fox @ Feb 9 2012, 15:35) Здр... Feb 14 2012, 11:05  demiurg_spb потому что по умолчанию всё берётся из текущего ка... Feb 14 2012, 11:39   MaxiMuz Цитата(demiurg_spb @ Feb 14 2012, 14:39) ... Feb 14 2012, 11:44    demiurg_spb Что задаётся?
Чтобы искалось в других каталогах?
И... Feb 14 2012, 11:46  haker_fox QUOTE (MaxiMuz @ Feb 14 2012, 19:05) в AS... Feb 15 2012, 00:49 MaxiMuz Да, вручную все добавляется и успешно собирается д... Feb 10 2012, 08:39 MaxiMuz В демо-проекте "совмещение Си и ассемблера... Feb 11 2012, 18:18 Сергей Борщ QUOTE (MaxiMuz @ Feb 11 2012, 20:18) Где ... Feb 11 2012, 21:06 ReAl Я давно в makefile проекта перестал вписывать отде... Feb 12 2012, 11:16 haker_fox QUOTE (ReAl @ Feb 12 2012, 19:16) Я давно... Feb 13 2012, 13:58  ReAl Цитата(haker_fox @ Feb 13 2012, 15:58) Мн... Feb 14 2012, 16:45 MaxiMuz новый вопрос:
Для обращения к байтовой регистрово... Feb 12 2012, 18:03 demiurg_spb Цитата(MaxiMuz @ Feb 12 2012, 21:03) А ка... Feb 13 2012, 05:19 _Ivana Спасибо за упоминание про Makefile. Только что пыт... Feb 13 2012, 19:01 haker_fox QUOTE (_Ivana @ Feb 14 2012, 03:01) пропи... Feb 14 2012, 02:12   Сергей Борщ QUOTE (MaxiMuz @ Feb 16 2012, 10:20) поче... Feb 16 2012, 09:31 MaxiMuz Непонимаю смысл вставки:Кодasm volatile("... Feb 19 2012, 14:58 Сергей Борщ QUOTE (MaxiMuz @ Feb 19 2012, 16:58) Непо... Feb 19 2012, 17:51  MaxiMuz Цитата(Сергей Борщ @ Feb 19 2012, 20:13) ... Feb 19 2012, 18:19   haker_fox QUOTE (MaxiMuz @ Feb 20 2012, 02:19) Где ... Feb 20 2012, 08:54    MaxiMuz Цитата(haker_fox @ Feb 20 2012, 11:54) Он... Feb 21 2012, 19:40     Сергей Борщ Я никогда не использовал регистровые переменные, н... Feb 21 2012, 23:53 slavik.ksu здравствуй те уважаемые форумчане!
Перехожу н... Feb 22 2012, 06:08 demiurg_spb КодISR ( USART_RX_vect )
{
switch ... Feb 22 2012, 06:36 slavik.ksu Оказывается в конструкции switch строка выполняетс... Feb 22 2012, 06:42 slavik.ksu Оказывается в конструкции switch строка выполняетс... Feb 22 2012, 06:43 ReAl Смотря что имеется ввиду под словом «выполняется»
... Feb 22 2012, 07:49 MaxiMuz Цитата(Сергей Борщ @ Feb 22 2012, 02:53) ... Feb 22 2012, 07:50 MaxiMuz Цитата(MaxiMuz @ Feb 22 2012, 10:50) Так ... Feb 22 2012, 10:02 ReAl Кстати, да.
Если кто-то из модераторов перенесёт в... Feb 22 2012, 11:16
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|