Linux / Mac AVR Suite програмування?


11

Я кодую і використовую Arduinos вже досить давно. Однак я готовий перейти до використання прямих чіпів AVR без завантажувача arduino. Моє питання - які ресурси для цього зробити?

Я хочу використовувати linux / mac, щоб winavr був поза зображенням, як це avrstudio. Якщо немає такої речі, якою я є після, я влаштуюся на віртуальну машину Windows. Але поки я точно не знаю. Що я хочу, це якийсь тип IDE, який використовує avr-gcc.

Як бонус до цього питання, чи є хтось хороший ресурс для вивчення C для avr? Зокрема, як налаштувати Makefiles тощо для різних різних мікросхем?

Відповіді:


7

Я погоджуюся з zklapow, але перевірте розділ проектів і на AVR Freaks. Про це я дізнався ще за день до ардуїно. Крім того, вам майже напевно доведеться прочитати таблицю даних для вашого чіпа, щоб зробити щось корисне. Немає приємних функцій, які, наприклад, зчитують аналоговий штифт, оскільки існує стільки параметрів, що середовище arduino приховує від вас. Дозвольте навести приклад:

 int ledPin =  13;    // LED connected to digital pin 13
 // The setup() method runs once, when the sketch starts
 void setup()   {                
   // initialize the digital pin as an output:
   pinMode(ledPin, OUTPUT);     
 }
 // the loop() method runs over and over again,
 // as long as the Arduino has power
 void loop()                     
 {
   digitalWrite(ledPin, HIGH);   // set the LED on
   delay(1000);                  // wait for a second
   digitalWrite(ledPin, LOW);    // set the LED off
   delay(1000);                  // wait for a second
 }

приблизно аналогічний наступному C (не перевірено):

int main(void) {
    // I just randomly picked pin 6 on PORTB, this may not be the same on an arduino
    DDRB = (1<<6); // set pin to output in data direction register
    int i; // have to do this outside the for loop because of C standard

    while(1) {
        PORTB |= (1<<6); // send pin 6 high and leave other pins in their current state
        for (i=0; i<10000; i++); // delay

        PORTB &= ~(1<<6); // send pin 6 low
        for (i=0; i<10000; i++); // delay
    }
}

Звичайно, в деяких бібліотеках є функції затримки, а в інших можуть бути функції виведення, але звикайте писати такий код. Єдиний спосіб, коли ви, можливо, можете знати, що означає все це для PORTB та DDRB - це прочитати таблицю даних. Мені дуже шкода, що про це говорять, але недостатньо людей усвідомлює, що аркуш є золотим копачем для інформації.


Я б вніс одну корекцію у ваш код, коли ви встановлюєте DDRB, ви повинні використовувати DDRB | = (1 << 6), щоб не впливати на інші біти.
zklapow

Також доступна функція delay_ms (). Але загалом у складніших програмах зазвичай не хочеться, щоб у вашій програмі були затримки кодування.
davr

7

Також слід перевірити Eclipse для C / C ++ та плагін AVR-Eclipse. Для мене працює бездоганно, особливо з крос-пакетом. Я використовую його вже близько року і мені дуже подобається.


Отримайте плагін avr-eclipse, він чудово інтегрується з avrdude та avr-gcc, так що в кінцевому підсумку ви отримаєте хороший IDE поверх хорошого, безкоштовного компілятора.
dren.dk

Налаштування мікроконтролерів Eclipse також буде хорошим шлюзом до використання мікроконтролерів ARM. Набагато краща альтернатива, ніж отримання IDE лише для AVR.
lyncas

4

Я також використовую CrossPack ObDev . Це велике поєднання всіх інструментів, необхідних для написання коду AVR-GCC C. Вони є тими самими інструментами, які є в стандартній установці Arduino, тому іноді я використовую кишки системи побудови Arduino, щоб написати звичайний код AVR-GCC.

Зазвичай, коли я пишу код С, я використовую "IDE" текстовий редактор, команди командного рядка та Makefiles. Я просто більш ефективний таким чином. У мене відкрито одне вікно, це текстовий редактор (emacs), інше вікно, яке є компіляцією, і третє чи четверте, що робить послідовний монітор чи подібне. Але все, що можна зробити в одному вікні командного рядка, і в цьому випадку команди виглядають приблизно так:

% emacs foo.c [редагувати файл]
% make [компілювати код]
% зробити flash [завантажити на чіп]
% screen /dev/tty.usbserial 9600 [говорити з чіпом]
... а потім повторіть по мірі необхідності ...

Також ви можете перевірити сайт SmileyMicros.com . Він написав справді приємну книгу про запровадження програми AVR GCC, засновану на платі AVR Butterfly, перед Arduino, і з тих пір оновлює свої приклади, щоб включити Arduino. Це приємне порівняння, щоб побачити, як програмування AVR C виконується на більш складному мікросхемі, ніж в Arduino.



3

Оскільки ви користуєтеся Arduino, все необхідне вже встановлено. Я компілюю ескізи Arduino з командного рядка за допомогою Makefile. Я також компілюю код без завантажувача Arduino.

Makefile, який я використовую для складання завантажувача Arduino для моїх дощок, знаходиться на веб- сайті http://wiblocks.luciani.org/docs/app-notes/bootloader.html Ви можете змінити його для компіляції програми, а не для файлу ATmegaBOOT_xx8.c.

Мій Makefile змінено з файлу, який я знайшов на цьому веб-сайті - http://mjo.tc/atelier/2009/02/arduino-cli.html

Відповідаючи на це саме запитання (тільки вчора;) на Twitter, я натрапив на файл makeor на dorbotpdx. Дивіться http://dorkbotpdx.org/blog/ax/arduino_0017_makefile

Існує також добре задокументований сценарій оболонки на http://arkku.com/misc/arduino_make.sh

Я, мабуть, використовував би Makefile, а не скрипт оболонки. Співробітник, який зробив цей сценарій, зробив чудову роботу, коментуючи потік. Це робочий погляд просто для розуміння потоку.


Мені не вдалося змусити arduino_make.sh працювати w / OSX 10.6, оскільки 'awk -v' не працює так, як очікувалося на OSX, і він використовує його скрізь.
тераса

Його питання стосувався не Arduino, а використання avr-gcc і avrdude в Linux
dren.dk

2

Я знайшов CodeLite (www.codelite.org) IDE приємним та повноцінним; все-таки для програмування мікросхем AVR вам потрібно створити власний Makefile.

Ви можете спробувати майстер BeRTOS , який створить проект BeRTOS та пов'язані з ним Makefiles, які ви зможете використовувати разом із CodeLite. Щоб спалахнути ціль, просто використовуйте "зробити спалах" і все закінчено. Ми працюємо над Linux щодня, якщо у вас є додаткові запитання, будь ласка, опублікуйте їх у списку розсилки. Відмова: Я розробник BeRTOS.

З найкращими побажаннями, Лука


Відмова від відповідальності, CodeLite - чудовий інструмент. Вам не потрібно використовувати 'make flash', якщо ви налаштували CodeLite для роботи зі своєю системою збирання. Код :: Блоки мають подібний потенціал.
Кевін Вермер

2

Якщо у вас встановлено Macports, ви можете просто запустити:

$ sudo port install avr-binutils avr-gcc avr-libc avrdude 

і ви повинні бути готові йти.


2

Якщо ви попросите вашу пакетну систему встановити avr-libc, це повинно дати вам все необхідне. Я використовую emacs в якості свого IDE, тому що я бачу ім'я користувача.

Якщо ви хочете makefile шаблону, перегляньте один з моїх проектів на github, наприклад https://github.com/unixbigot/pir-lite

У цьому repo avr-tmpl.mk - це нестандартна бібліотека makefile (не написана мною). Ви включаєте його з основного makefile, і вам потрібно лише визначити, який у вас чіп, тактову частоту та ваші файли. У мене є одна його копія і включаю її з усіх моїх проектів.

"make program" зателефонує avrdude для завантаження коду. Makefile також друкує розмір коду в кінці, так що ви знаєте, скільки місця у вас залишилося.


0

Я запрограмував свій "старий" Duemanilove як ISP за допомогою цієї статті: http://arduino.cc/en/Tutorial/ArduinoISP Це однаково добре працює з ATtiny's: http://hlt.media.mit.edu/? р = 1229

Зауважте, що при використанні Arduino IDE 0022 вам потрібно оновити ескіз ArduinoISP до більш нової версії, через запобігання спаму я перейшов це посилання на коментарі нижче.

Я програвав у текстовому редакторі (vi) і компілював за допомогою avr-gcc, як описано в статті, пов'язаній з mit.edu.


Запобігання спаму змусило згадати посилання на останній ArduinoISP з коментарів:: code.google.com/p/mega-isp/downloads/…
jippie

0

Гей чувак, ти все ще можеш використовувати avrstudio в ubuntu. Думаючи, як це можна зробити .....

Відповідь - просто встановити додаток для вина та запустити ці програми з віном.

Avr studio, proteus ... навіть ігри Windows можна запускати в ubuntu з вином.

Вам не доведеться навіть возитися з макіяжними бла-бла. (Просто встановіть з вином і почніть).

Існує багато сайтів, щоб почати роботу з такою, як екстремалелектроніка, навчальні посібники AVR і т.д. MCU. Просто дайте пошук в Google.

Я докладно розповім, як встановити avrstudio 4 у вині, оскільки avrstudio 5 і 6 не працює з ним, але ви можете використовувати віртуальну коробку в Linux, щоб запустити навіть avr stud 5 і 6 з windows на віртуальну скриньку.

  1. Відкрийте центр програмного забезпечення Ubuntu і введіть вино в пошуку, а потім встановіть його.

  2. Потім отримайте настройку для avrstudio4, а також вам потрібно встановити win avr

    спробуйте ці посилання для

а. avr studio 4 http://mycomsats.com/blogs/download-atmel-avr-studio-4-free/

б. win avr http://sourceforge.net/projects/winavr/files/WinAVR/20100110/WinAVR-20100110-install.exe/download?use_mirror=kaz&r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fwinavr%2Ffiles% 2F & use_mirror = kaz

3. Відкрийте папку, де встановлено налаштування для AS (avr studio 4), а потім клацніть правою кнопкою миші та відкрийте її за допомогою "windows wine program loader" або "wine wine".

4. Тоді вам потрібно натиснути на наступні кнопки, як це було б зроблено у Windows.

5. Потім знову встановіть win avr аналогічно з вином (перейдіть у налаштування win avr ....).

6.Завантажте класичний індикатор меню з центру програмного забезпечення ubuntu. Ви дізнаєтесь про це всього за п’ять хвилин.

7.З класичного меню -> вино -> Програми -> інструменти avr

шостий крок - це додатковий крок, так що вам не доведеться возитися з тим, де виконується варіант avrstudio4 у папці вина.


Ця відповідь була б кориснішою, якби вона містила деталі / посилання щодо того, як її запустити під Wine. Остання студія Atmel заснована на Microsoft Visual Studio, який, на мою думку, не працює добре під Wine, але я можу помилитися.
PeterJ

Я відредагував відповідь @PeterJ
Jasser
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.