Command line Arduino compiling and uploading?

2020-02-08 04:44发布

How do I compile and upload Arduino sketches from the command line on Mac and Linux? I've installed the Arduino programming environment. Are there some sample makefiles anywhere?

10条回答
做个烂人
2楼-- · 2020-02-08 05:21

You can actually use the arduino GUI to compile and upload, and set the editor to external in the preferences. That way, you can edit the C++ (PDE) files from xcode, and have arduino generate the actual CPP and build the whole shebang.

You can also use XCode to write plain C++/C for the arduino, using the avr-gcc compiler.

Have a look at: https://stackoverflow.com/a/8192762/153835

You can then use the plain avrdude upload tool to program the arduino. Have a look at: http://www.ladyada.net/library/arduino/bootloader.html

It used to be that the protocol spoken by Arduino was a modification of the STK500 protocol, and that only the avrdude bundled with arduino could speak it. I don't know if the mainstream avrdude was upgraded, or if you still have to resort to the avrdude inside the Arduino folder.

查看更多
▲ chillily
3楼-- · 2020-02-08 05:21

I have a makefile for Arduino which can be used to compile and upload Arduino (or plain AVR C) programs to Arduino.

Following are some of the important features of this makefile

  • Supports upload via Arduino as ISP or any programmer
  • Supports compiling plain AVR C programs
  • Supports user as well as system libraries.
  • Generate assembly and symbol files
  • Program using alternate Arduino core (like ATtiny or Arduino alternate cores)
查看更多
We Are One
4楼-- · 2020-02-08 05:24

Official CLI tool

The arduino team is developing a cli client https://github.com/arduino/arduino-cli

Announcement: https://blog.arduino.cc/2018/08/24/announcing-the-arduino-command-line-interface-cli/

You can do almost everything with this, from downloading boards and libraries, to compile and upload scripts. What's missing is the monitoring part.

To monitor in linux you can still use the commands stty to configure port and cat to read it.

stty -F /dev/ttyACM0 38400 # <-- Baud rate. The number in Serial.begin()
cat /dev/ttyACM0 # <-- Port

You can find the port with arduino-cli

arduino-cli board list

Full instructions in the Github repo and the man page:

    $ arduino-cli Arduino Command Line Interface (arduino-cli).

    Usage:   arduino-cli [command]

    Examples: arduino <command> [flags...]

    Available Commands:
      board         Arduino board commands.
      compile       Compiles Arduino sketches.
      config        Arduino Configuration Commands.
      core          Arduino Core operations.
      help          Help about any command
      lib           Arduino commands about libraries.
      sketch        Arduino CLI Sketch Commands.
      upload        Upload Arduino sketches.
      version       Shows version number of Arduino CLI.
查看更多
狗以群分
5楼-- · 2020-02-08 05:26

You need to actually create a viable cpp file out of your arduino sketch. The arduino environment does that for you automatically. One trick to get to those files is to open your arduino preferences.txt (it's in ~/Library/Arduino on the mac, I think in your Documents and Settings or Application Data on windows, don't remember exactly), and set build.verbose=true and upload.verbose=true. Start arduino, and compile your sketch (don't upload it). The console at the bottom will show you which files were compiled. You can now go to that directory, which will contain the cpp file, and compiled object files for all the core arduino objects. You can copy those into your project and use the cpp file to do further hacking. Let me know if you need more information about the Makefile, I can provide you with those I have.

查看更多
放我归山
6楼-- · 2020-02-08 05:27

Compiling and uploading sketches (as apposed to C/C++ sources) on the command line (on Windows, Mac, and Linux) is supported directly via flags to the arduino executable since 1.5.0.

An ino can be compiled and uploaded with arduino --upload [sketch.ino]

Documentation

查看更多
等我变得足够好
7楼-- · 2020-02-08 05:30

There is a command-line Arduino toolkit named Ino. It just does that.

查看更多
登录 后发表回答