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

 
 
> Какую среду разработки Вы используете?
Какую среду разработки Вы преимущественно используете для своих проектов, и почему?
среда разработки (компилятор/транслятор)
AVR-Studio (atmel-avr-asm) [ 43 ] ** [17.27%]
AVR-Studio + gcc-plugins [ 12 ] ** [4.82%]
IAR-EWAVR преимуществунно (asm) [ 0 ] ** [0.00%]
IAR-EWAVR преимущественно ( C ) [ 79 ] ** [31.73%]
WinAvr (gcc) [ 33 ] ** [13.25%]
CodeVision [ 52 ] ** [20.88%]
ImageCraft-C [ 9 ] ** [3.61%]
E-LAB pascal [ 1 ] ** [0.40%]
Alhorithm Builder [ 7 ] ** [2.81%]
AVR-Basic [ 2 ] ** [0.80%]
другую [ 11 ] ** [4.42%]
Всего голосов: 249
Гости не могут голосовать 
defunct
сообщение Feb 1 2006, 21:33
Сообщение #1


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Давно мечтал услушать все "за" и "против", о популярных средах программирования для AVR uC.
Всех сред разработки я знать не могу smile.gif
поэтому если в списке Вы не нашли того с чем работаете, указывайте ее в сообщениях smile.gif

Сам я использую в основном AVR-Studio в комбинации с gcc, из-за наиболее, на мой взляд, удобного отладчика, который отображает значения переменных/регистров в всплывающих подсказках прямо в тексте отлаживаемых модулей, а также из-за эмулятора, предоставляемого разработчиком uC, доверее к которому много выше чем к эмуляторам сторонних разработчиков.

В IAR-е помоему отсутствует такая возможность, сколько не ковырялся в настройках так и не нашел где можно включить отображение значений переменных в режиме отладки, или я не прав?
Хотя код сгенерированный IAR'ом и получается меньшего объема, но удобная отладка как для меня важнее..

Сообщение отредактировал defunct - Feb 1 2006, 21:56
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dxp
сообщение Feb 2 2006, 07:17
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Проекты смешанные C++/Asm с подавляющей по объему долей С++ - асм только где-то во обработчиках прерываний и очень, очень редко, уже и не помню, когда в последний раз пользовался в рабочем проекте.

В качестве инструментария: пакет EWAVR + мощный сторонний программерский редактор SlickEdit. Сборка под управлением gnu make, от самого EWAVR используеются компилятор, асм, линкер, библы, ессно, ну, словом, все то, что необходимо для компиляции. Саму оболочку использую только для запуска C-SPY.

По поводу симулятора. Симулятор как таковой в системах на МК вещь весьма бесполезная. Поясню. Симулятор - система симулирующая (или, как это происходит на практике, пытающаяся это делать) работу программы в реальных условиях. Поскольку условия реальные воссоздать крайне сложно, если вообще возможно, то и результаты симуляции получаются соответствующими. Но все это не означает, что то, что называют симуляторами есть бесполезные вещи. Если использовать симулятор для моделирования, то в этом случае есть приличный смысл в таких программах. Что понимается под моделированием? Под моделированием понимается прогон какого-то фрагмента кода (или части программы) при искусственном создании условий и наблюдение за поведением программы в этих условиях.

Например, мне надо отладить прием пакетов по UART. При этом меня интересует именно правильность приема байтов, проверка заголовка пакета, контрольной суммы и т.д. И для этого мне надо, чтобы на вход применика, а точнее в регистр данных приемника UART поступали эти самые байты.

Как добиться этого от симулятора, который честно, якобы, симулирует периферию МК? Я должен в этом случае создать довольно длинный и сложный стимул на соответствующюю ножку МК. Этот стимул руками писать замучаешься, да еще и ошибок наделаешь. Надо какую-нито утилитку для этого соорудить. И отладить. Возни, короче, выше ушей.

А вот как эта задача решается на "моделяторе" C-SPY. Там для этого существуют специальные макросы, позволяющие смоделировать требуемую ситуацию. Например, для упомянутого случая пишем такой код:

Код
__var T_C0_period;
__var UART_Rx_period;
__var UDR;
__var fid;

RxIn()
{
    UDR = __readFile(fid);
    __writeMemoryByte (UDR, 0x0c, "I/O-SPACE");
}


execUserSetup()
{
    T_C0_period    = 10000;
    UART_Rx_period = 8000;

    __cancelAllInterrupts();        

    __orderInterrupt("TIMER0 OVF", 1000000, T_C0_period, 0, 0, 100); // set T_C0 overflow interrupt
    __orderInterrupt("USART RXC",  1151690, UART_Rx_period, 0, 0, 100); //

    __setSimBreak("0x0c", "I/O-SPACE", 1, 1,"", "TRUE", "I", "RxIn()");

      
    fid = __openFile("uart.dat", "r");
    __message "fid = ", fid, "\n";      // debug
    __message "err = ", err, "\n";    // debug
}

execUserExit()
{
    __cancelAllInterrupts();

    if(fid)
    {
        __closeFile(fid);
    }  
}


Как это работает. В системном макросе execUserSetup() происходит настройка моделятора - задаются прерывания, макросы, открывается на чтение файл "uart.dat".

Далее каждые 10000 тактов происходит прерывание от Т/С0. Каждые 8000 тактов происходит прерывание от приемника UART. При этом точно перед обращением к регистру UDR в программе (в обработчике прерывания) C-SPY генерирует так называемый immediate break при котором вызывается пользовательская функция-макрос RxIn(), в которой происходит считывание из файла очередного значения и запись его по указанному адресу, который является как раз адресом регистра UDR, после этого работа функции заканчивается и исполнение программы продолжается, но МК считывает из UDR то самое значение из файла. При следующем входе будет считано следующее значение. И т.д. Если в файле "uart.dat" было записано ff 13 0 0 1 12, то при первом прерывании будет считано ff, при втором 13, далее 0, 0, 1, 12, после этого все пойдет по кругу, но нас это уже не интересует - мы смогли спокойно посмотреть, как обработчик прерывания, получая байты от приемника UART, их обработал, весь пакет.

Далее, например, мы хотим смоделировать ситуацию, когда возникает наложение прерываний (в случае разрешения вложенных прерываний). Для этого достаточно просто указать нужные значения моментов времени (в тактах) активации прерываний и их периодов. Например, я знаю, что программа находится в прерывании от UART'а на 12530-м такте и выходит из него на 12555-м такте. Тогда задаю время активации прерывания от таймера, скажем, на 12540-м такте и спокойно наблюдаю, как обработчик прерывания прерван другим прерыванием, как работает сохранение контекста, как расходуется стек в этой более требовательной к размеру стека ситуации. Попробуйте это сделать на симуляторе, который честно симулирует периферию. smile.gif

Или, скажем, надо мне смоделировать обработку потока данных от АЦП. Все аналогично, записываю во внейшний файл значения отсчетов, задаю __setSimBreak, макрос-функцию считывания данных из файла и вуаля. Полная гибкость и управляемостьь процессом моделирования. А симулятор честный годится только на то, чтобы посмотреть, как периферия инициализировалась (хотя это и в моделяторе можно посмотреть) да как, к примеру, таймер щелкает. Т.е. при начальном освоении МК эти вещи полезны, но в дальнейшем при серьезной работе от них толку почти никакого, когда есть такой инструмент, как C-SPY.

Исходя из вышесказанного, AVR Studio как средство отладки в режиме симулятора не представляется достойным инструментом по сравнению с тем же C-SPY. В режиме эмулятора (при использовании аппаратного эмулятора), конечно, ситуация другая. Но и тут C-SPY на высоте, ничем не уступает (в последней версии 4.12 научился наконец работать через USB). И по факту удобнее. В студии, к примеру, до сих пор нету окошка Locals. Вроде вещь элементарная и нужная, а до сих пор не сделали. У студии одно безоговорочное преимущество - она бесплатная. smile.gif

Никого задеть и обидеть ни в коем случае не хотел, просто, как показывает опыт, народ в массе не знаком с возможностями моделятора C-SPY и нередко плюется от него. А зря. smile.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- defunct   Какую среду разработки Вы используете?   Feb 1 2006, 21:33
- - haker_fox   Использую IAR EWAVR 4.11A + AVRStudio: код, как вы...   Feb 2 2006, 00:18
|- - defunct   Цитата(haker_fox @ Feb 2 2006, 02:18) Исп...   Feb 2 2006, 04:44
|- - haker_fox   Цитата(defunct @ Feb 2 2006, 12:44) Цитат...   Feb 2 2006, 05:00
- - Proton   Счмтаю что нужно добавить IAR EWAVR + AVRStudio та...   Feb 2 2006, 04:52
- - Георгий   IAR EWAVR + AVRStudio   Feb 2 2006, 05:29
- - BVU   Однозначно IAR-EWAVR ( C ), но для полноты списка ...   Feb 2 2006, 07:36
- - unichorn   WinAVR + AVR-Studio + Cpp Builder   Feb 2 2006, 07:41
- - muravei   Использую Алгоритм билдер, устраивает симулятор.   Feb 2 2006, 07:54
- - IgorKossak   Поскольку использую IAR EWAVR + JTAG эмулятор, то ...   Feb 2 2006, 08:08
|- - defunct   Цитата(IgorKossak @ Feb 2 2006, 10:08) По...   Feb 2 2006, 09:21
|- - IgorKossak   Цитата(defunct @ Feb 2 2006, 11:21) ... в...   Feb 2 2006, 09:30
- - Polaris   Использую CodeVision + AVRStudio. Да, есть глюки в...   Feb 2 2006, 08:27
- - Rash   Использую IAR EWAVR + JTAG mk2 эмулятор, а AVR Stu...   Feb 2 2006, 08:32
- - ALexx   Изначально пошел по пути CodeVision+VMLab, о чем е...   Feb 2 2006, 13:10
- - MakSV   Использую IAR EWAVR 4.11A + AVRStudio, удобно и на...   Feb 2 2006, 15:02
- - zltigo   Цитата(dxp @ Feb 2 2006, 09:17) В качеств...   Feb 2 2006, 15:16
- - artStinger   Для написания использую MED - programmer's tex...   Feb 2 2006, 16:37
- - beer_warrior   gcc адназначна. 1.полный тулчейн под avr msp arm w...   Feb 2 2006, 17:49
- - Old1   Использую EWAVR 4.12 (evaluation) от IAR (компилят...   Feb 3 2006, 08:29
|- - defunct   Цитата(Old1 @ Feb 3 2006, 10:29) Пример т...   Feb 3 2006, 18:36
|- - Old1   Цитата(defunct @ Feb 3 2006, 22:36) Цитат...   Feb 4 2006, 13:24
|- - dxp   Цитата(Old1 @ Feb 4 2006, 19:24) Представ...   Feb 6 2006, 11:04
|- - Old1   Цитата(dxp @ Feb 6 2006, 14:04) Зачем это...   Feb 6 2006, 18:14
- - sseett   Начинал с AVR-Studio (atmel-avr-asm), но случайно...   Feb 7 2006, 08:52
|- - IgorKossak   Цитата(sseett @ Feb 7 2006, 10:52) ... К...   Feb 7 2006, 17:15
- - SasaVitebsk   Цитата(haker_fox @ Feb 2 2006, 04:18) В п...   Feb 7 2006, 22:55
|- - vesago   Цитата(SasaVitebsk @ Feb 8 2006, 01:55) Ц...   Jul 24 2006, 07:05
- - NightCat   Можно глупый вопрос? Есть какие-то еще "ну оч...   Feb 18 2006, 18:17
|- - defunct   Цитата(NightCat @ Feb 18 2006, 20:17) Ест...   Feb 18 2006, 18:41
- - ArtemK   После опробывания в качестве компилятора win-avr, ...   Feb 20 2006, 07:05
- - гигипотамм   Code Vision   Feb 25 2006, 13:51
- - Proton   zltigo Это точно он([banned]). После того как две...   May 23 2006, 15:12
- - Andy Great   Crossworks from Rowley   May 23 2006, 16:22
- - Сергей Борщ   ИАР через JTAG, еслои JTAG нет - мигание светодиод...   May 23 2006, 16:49
|- - defunct   Цитата(Сергей Борщ @ May 23 2006, 19:49) ...   May 23 2006, 17:06
|- - ilya514   Цитата(defunct @ May 23 2006, 20:06) Цита...   May 23 2006, 17:16
||- - defunct   Цитата(ilya514 @ May 23 2006, 20:16) Прос...   May 23 2006, 17:33
||- - Сергей Борщ   Цитата(defunct @ May 23 2006, 20:33) Цита...   May 23 2006, 18:11
||- - ilya514   [quote name='defunct' date='May 23 200...   May 23 2006, 18:19
|- - Сергей Борщ   Цитата(defunct @ May 23 2006, 20:06) Цита...   May 23 2006, 17:27
- - bodja74   А я AVR-Studio из за дизасемблера люблю,можно ...   May 23 2006, 17:44
- - Proton   ЦитатаA_Bolshev Дата Сегодня, 07:49 все тоже + ...   May 24 2006, 03:57
- - BigBolt   Опрос показывает, что наиболее популярными являютс...   May 24 2006, 08:22
- - Serg79   О чем разговор!!! Для сборки прошивки ...   May 24 2006, 08:42
|- - dxp   Цитата(Serg79 @ May 24 2006, 15:42) IAR-E...   May 24 2006, 09:50
|- - Serg79   Цитата(dxp @ May 24 2006, 13:50) Цитата(S...   May 24 2006, 11:00
|- - Rst7   Цитата(Serg79 @ May 24 2006, 14:00) О чем...   May 24 2006, 12:28
||- - bodja74   Цитата(Rst7 @ May 24 2006, 15:28) Только ...   May 24 2006, 12:51
|- - _Bill   Цитата(Serg79 @ May 24 2006, 14:00) А что...   May 24 2006, 13:03
|- - dxp   Цитата(Serg79 @ May 24 2006, 18:00) О чем...   May 24 2006, 13:23
- - VladimirZ   В основном CrossWorks+Jtag, симуляторам предпочита...   May 24 2006, 10:11
- - beer_warrior   Тут как говориться дело вкуса и привычки. я наприм...   May 24 2006, 12:38
|- - _Bill   Цитата(beer_warrior @ May 24 2006, 15:38)...   May 24 2006, 12:44
- - beer_warrior   2 DXP Все верно, однако... Не вижу я большой в это...   May 24 2006, 13:51
|- - defunct   Цитата(beer_warrior @ May 24 2006, 16:51)...   May 24 2006, 14:44
|- - dxp   Цитата(beer_warrior @ May 24 2006, 20:51)...   May 25 2006, 04:33
- - beer_warrior   ЦитатаНа мой взгляд, единственное неоспоримое преи...   May 24 2006, 16:12
- - beer_warrior   ЦитатаЯ лишь спорил с утверждением, что AVR-GCC ге...   May 25 2006, 05:53
|- - dxp   Цитата(beer_warrior @ May 25 2006, 12:53)...   May 25 2006, 07:23
|- - zltigo   Цитата(dxp @ May 25 2006, 10:23) ...любой...   May 25 2006, 08:07
- - Старый Бабай   Пользую GCC в связке с AVRStudio   May 25 2006, 12:48
- - beer_warrior   quote]Совсем плохо. Вывод - работать, видимо, надо...   May 25 2006, 13:57
|- - dxp   Цитата(beer_warrior @ May 25 2006, 20:57)...   May 26 2006, 03:58
- - Nanobyte   Большинство проектов выполнял на ASM, из плюсов - ...   May 25 2006, 14:32
- - beer_warrior   Цитата(SasaVitebsk @ May 25 2006, 21:41) * А каки...   May 25 2006, 21:07
- - beer_warrior   Итак наш ответ Чемб... простите DXP IAR и WinAVR у...   May 25 2006, 21:55
- - beer_warrior   Листинги   May 25 2006, 23:49
- - 733259   А вот что у меня получилосьЦитатаavr-gcc -g -Wall ...   May 26 2006, 03:03
|- - dxp   Цитата(733259 @ May 26 2006, 10:03) А вот...   May 26 2006, 04:23
- - 733259   В avr-gcc 4.0.3 - 118 байт, выше был 3.4.6   May 26 2006, 05:46


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

 


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


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