Bộ lập trình Linux / Mac AVR?


11

Tôi đã được mã hóa và sử dụng Arduinos khá lâu rồi. Tuy nhiên, tôi đã sẵn sàng để chuyển sang sử dụng các chip AVR thẳng mà không cần bộ tải khởi động arduino. Câu hỏi của tôi là nguồn lực để làm điều này là gì?

Tôi muốn sử dụng linux / mac vì vậy winavr không có hình ảnh như avrstudio. Nếu không có những thứ như tôi sau thì tôi sẽ giải quyết cho một máy ảo windows. Nhưng cho đến khi tôi biết chắc chắn. Những gì tôi muốn là một số loại IDE sử dụng avr-gcc.

Như một phần thưởng cho câu hỏi này, có ai có tài nguyên tốt về việc học C cho avr không? Cụ thể làm thế nào để cấu hình Makefiles vv cho các chip khác nhau?

Câu trả lời:


7

Tôi đồng ý với zklapow nhưng cũng kiểm tra phần dự án trên AVR Freaks. Đó là cách tôi học được vào ngày trước arduinos. Ngoài ra, bạn gần như chắc chắn sẽ phải đọc biểu dữ liệu cho chip của mình để hoàn thành mọi việc hữu ích. Chẳng có chức năng hay nào, ví dụ, đọc một chân tương tự vì có rất nhiều tham số mà môi trường arduino ẩn khỏi bạn. Tôi sẽ cho bạn một ví dụ:

 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
 }

gần giống với C sau (không được kiểm tra):

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
    }
}

Chắc chắn, có một số hàm trễ trong một số thư viện và có thể có các hàm đầu ra trong các thư viện khác, nhưng hãy làm quen với việc viết mã như thế này. Cách duy nhất bạn có thể có thể biết tất cả những gì PORTB và DDRB này có nghĩa là đọc biểu dữ liệu. Tôi xin lỗi vì đã làm hỏng điều này nhưng không đủ người nhận ra rằng bảng dữ liệu là một mỏ vàng cho thông tin.


Tôi sẽ thực hiện một chỉnh sửa cho mã của bạn, khi bạn đặt DDRB, bạn nên sử dụng DDRB | = (1 << 6) để không ảnh hưởng đến các bit khác.
zklapow

Ngoài ra còn có hàm delay_ms (). Nhưng nói chung, trong các chương trình phức tạp hơn, bạn thường không muốn bị trì hoãn mã hóa cứng vào ứng dụng của mình.
davr

7

Bạn cũng nên kiểm tra Eclipse cho C / C ++plugin AVR-Eclipse. Hoạt động hoàn hảo cho tôi, đặc biệt là với crosspack. Tôi sử dụng nó khoảng một năm nay và tôi thực sự thích nó.


Nhận plugin avr-eclipse, nó tích hợp độc đáo với avrdude và avr-gcc để bạn kết thúc với một IDE đẹp trên trình biên dịch tốt, miễn phí.
dren.dk

thiết lập vi điều khiển Eclipse cũng sẽ là một cổng tốt để sử dụng các vi điều khiển ARM. Thay thế tốt hơn nhiều so với việc chỉ có một IDE IDE.
lyncas

4

Tôi cũng sử dụng CrossPack của ObDev . Đây là một gói tuyệt vời của tất cả các công cụ cần thiết để viết mã C-GCC. Chúng là những công cụ tương tự có trong một bản cài đặt Arduino tiêu chuẩn, vì vậy đôi khi tôi đã sử dụng can đảm của hệ thống xây dựng Arduino để viết mã AVR-GCC đơn giản.

Thông thường khi tôi viết mã C, "IDE" tôi sử dụng là trình soạn thảo văn bản, lệnh dòng lệnh và Makefiles. Tôi chỉ hiệu quả hơn theo cách đó. Tôi có một cửa sổ mở đó là trình soạn thảo văn bản (emacs), một cửa sổ khác đang biên dịch và cửa sổ thứ ba hoặc thứ tư đang thực hiện màn hình nối tiếp hoặc tương tự. Nhưng tất cả những gì có thể được thực hiện trong một cửa sổ dòng lệnh, trong trường hợp đó, các lệnh trông giống như:

% emacs foo.c [chỉnh sửa tập tin]
% tạo [mã biên dịch]
% tạo flash [tải lên chip]
% screen /dev/tty.usbserial 9600 [nói chuyện với chip]
... và sau đó lặp lại khi cần ...

Ngoài ra, bạn có thể muốn kiểm tra SmileyMicros.com . Ông đã viết một cuốn sách thực sự hay về giới thiệu lập trình AVR GCC dựa trên bảng điều khiển AVR Butterfly, trước Arduino và từ đó đã cập nhật các ví dụ của mình để kết hợp Arduino. Đây là một so sánh tuyệt vời để xem cách lập trình AVR C được thực hiện trên một con chip phức tạp hơn so với con chip trong Arduino.



3

Vì bạn đã sử dụng Arduino, mọi thứ bạn cần đã được cài đặt. Tôi biên dịch các bản phác thảo Arduino từ dòng lệnh bằng cách sử dụng Makefile. Tôi cũng biên dịch mã mà không cần bộ tải khởi động Arduino.

Makefile tôi sử dụng để biên dịch bộ tải khởi động Arduino cho các bo mạch của tôi có tại http://wiblocks.luciani.org/docs/app-notes/bootloader.html Bạn có thể sửa đổi nó để biên dịch chương trình của bạn thay vì tệp ATmegaBOOT_xx8.c.

Makefile của tôi được sửa đổi từ tệp tôi tìm thấy tại trang web này - http://mjo.tc/atelier/2009/02/arduino-cli.html

Trong khi trả lời cùng một câu hỏi (chỉ mới ngày hôm qua;) trên twitter, tôi đã bắt gặp một makefile tại dorbotpdx. Xem http://dorkbotpdx.org/blog/ax/arduino_0017_makefile

Ngoài ra còn có một kịch bản shell được ghi chép tốt tại http://arkku.com/misc/arduino_make.sh

Tôi có thể sẽ sử dụng Makefile chứ không phải là shell script. Các đồng nghiệp đã thực hiện kịch bản này đã thực hiện một công việc tuyệt vời để bình luận dòng chảy. Đó là một cái nhìn chỉ để hiểu dòng chảy.


Tôi không thể làm cho arduino_make.sh hoạt động với OSX 10.6 vì 'awk -v' không hoạt động như mong đợi trên OSX và anh ấy sử dụng nó ở mọi nơi.
sân thượng

Câu hỏi của anh không phải là về Arduino, mà là về việc sử dụng avr-gcc và avrdude trên Linux
dren.dk

2

Tôi thấy IDE CodeLite (www.codelite.org) IDE đẹp và đầy đủ tính năng; Tuy nhiên, để lập trình vi mạch AVR, bạn cần tạo Makefile của riêng mình.

Bạn có thể dùng thử BeRTOS , trình tạo này sẽ tạo một dự án BeRTOS và các Makefiles có liên quan, sau đó bạn có thể sử dụng với CodeLite. Để flash mục tiêu của bạn, chỉ cần sử dụng "tạo flash" và bạn đã hoàn thành. Chúng tôi làm việc trên Linux hàng ngày, nếu bạn có thêm câu hỏi, vui lòng đăng chúng trên danh sách gửi thư. Tuyên bố miễn trừ trách nhiệm: Tôi là nhà phát triển BeRTOS.

Trân trọng, Luca


Từ chối trách nhiệm, CodeLite là một công cụ tuyệt vời. Bạn không phải sử dụng 'tạo flash' nếu bạn định cấu hình CodeLite để hoạt động với hệ thống xây dựng của mình. Code :: Blocks có tiềm năng tương tự.
Kevin Vermeer

2

Nếu bạn đã cài đặt Macports, bạn chỉ cần chạy:

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

và bạn nên sẵn sàng để đi.


2

Nếu bạn yêu cầu hệ thống gói của bạn cài đặt avr-libc, điều đó sẽ cung cấp cho bạn tất cả những gì bạn cần. Tôi sử dụng emacs như IDE của tôi, cos, tốt, xem tên người dùng.

Nếu bạn muốn tạo một tệp mẫu, hãy xem một trong các dự án của tôi trên github, ví dụ: https://github.com/unixbigot/pir-lite

Trong đó repo avr-tmpl.mk là một thư viện makefile ngoài kệ (không phải do tôi viết). Bạn bao gồm nó từ tệp thực hiện chính của bạn và bạn chỉ phải xác định chip nào bạn có, tốc độ xung nhịp và các tệp của bạn. Tôi có một bản sao của nó và bao gồm nó từ tất cả các tệp thực hiện dự án của tôi.

"Tạo chương trình" sẽ gọi avrdude để tải mã. Makefile cũng in ra kích thước mã ở cuối, để bạn biết bạn còn bao nhiêu phòng.


0

Tôi đã lập trình 'Duemanilove' cũ của mình với tư cách là ISP với sự trợ giúp của bài viết này: http://arduino.cc/en/Tutorial/ArduinoISP Nó hoạt động tốt không kém ATtiny: http://hlt.media.mit.edu/? p = 1229

Xin lưu ý, khi sử dụng Arduino IDE 0022, bạn cần nâng cấp bản phác thảo ArduinoISP lên phiên bản mới hơn, do phòng chống spam tôi đã chuyển liên kết đó đến các bình luận bên dưới.

Tôi đã lập trình trong một trình soạn thảo văn bản (vi) và biên dịch bằng avr-gcc như được mô tả trong bài viết của mit.edu mà tôi đã liên kết.


phòng chống thư rác khiến tôi phải đề cập đến liên kết đến ArduinoISP gần đây từ các bình luận :: code.google.com/p/mega-isp/doads/iêu
jippie

0

Này anh bạn vẫn có thể sử dụng avrstudio trong ubfox. Suy nghĩ làm thế nào bạn có thể làm điều đó .....

Trả lời là chỉ cần cài đặt ứng dụng rượu vang và chạy các phần mềm windows với rượu vang.

Avr studio, proteus ... thậm chí các trò chơi của windows có thể được chạy trong Ubuntu với rượu vang.

Bạn thậm chí không phải lộn xộn với makefiles blah blah. (Chỉ cần cài đặt với rượu vang và bắt đầu).

Có rất nhiều trang web để bắt đầu với avr MCU như Extremeelectronics, AVR guide, v.v. Chỉ cần cung cấp một tìm kiếm google.

Tôi sẽ nói chi tiết cách cài đặt avrstudio 4 trong rượu vì avrstudio 5 và 6 không hoạt động với nó nhưng bạn có thể sử dụng hộp ảo trong linux để chạy ngay cả avr stud 5 và 6 với windows trên hộp ảo.

  1. Mở trung tâm phần mềm Ubuntu và nhập rượu vào tìm kiếm và sau đó cài đặt nó.

  2. Sau đó nhận thiết lập cho avrstudio4 và bạn cũng cần cài đặt win avr

    thử các liên kết này cho

a. avr studio 4 http://mycomsats.com/bloss/doad-atmel-avr-studio-4-free/

b. giành chiến thắng avr http://sourceforge.net/projects/winavr/files/WinAVR/20100110/WinAVR-20100110-install.exe/doad?use_mirror=kaz&r=http%3A%2F%2Fsourceforge.net%2Fprojectf2 2F & use_mirror = kaz

3.Mở thư mục có cài đặt cho AS (avr studio 4) và sau đó nhấp chuột phải và sau đó mở nó bằng "trình tải chương trình rượu vang windows" hoặc "ứng dụng rượu vang".

4.Sau đó, bạn cần nhấp vào các nút tiếp theo như bạn sẽ làm trong cửa sổ.

5.Sau đó cài đặt win avr tương tự với rượu vang (hãy vào phần cài đặt win avr ....).

6. Tải xuống chỉ báo menu cổ điển từ trung tâm phần mềm Ubuntu. Bạn sẽ nhận biết về nó chỉ trong năm phút.

7.Từ menu cổ điển -> rượu vang -> Chương trình -> công cụ avr

Bước thứ sáu là một bước bổ sung để bạn không phải loay hoay với tùy chọn thực thi avrstudio4 trong thư mục rượu.


Câu trả lời này sẽ hữu ích hơn nếu nó chứa các chi tiết / liên kết về cách chạy nó trong Wine. Atmel Studio mới nhất dựa trên Microsoft Visual Studio mà tôi tin rằng nó không hoạt động tốt dưới Wine, nhưng tôi có thể sai.
PeterJ

Tôi đã chỉnh sửa câu trả lời @PeterJ
Jasser
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.