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

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


Местный
***

Группа: Участник
Сообщений: 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 !
Не понимаю что не так делаю ! В чем может быть проблема ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MaxiMuz
сообщение Feb 15 2012, 17:58
Сообщение #2


Местный
***

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



Всем спасибо за разьяснение в особенности haker_fox sm.gif
Возникла другая проблема! При совмещении асм-кода и Си компилятор "заоптимизировал" почти весь алгоритм Си программы, а именно:
вечный цикл
Код
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
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 15 2012, 20:42
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (MaxiMuz @ Feb 15 2012, 19:58) *
В чем может быть дело ?
В отсутствии volatile у Cnt_D1. Но у gcc проблема с volatile для регистровых переменных.

"Побрейтесь". sad.gif


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
MaxiMuz
сообщение Feb 16 2012, 08:20
Сообщение #4


Местный
***

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



Цитата(Сергей Борщ @ Feb 15 2012, 23:42) *
"Побрейтесь". sad.gif

почему же так грустно ?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:49
Рейтинг@Mail.ru


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