processing.app.SerialException: Serial port '/dev/ttyUSB0' not found.  Did you select the right one from the Tools > Serial Port menu?
    at processing.app.Serial.<init>(Serial.java:153)
    at processing.app.Serial.<init>(Serial.java:76)
    at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:71)
    at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:78)
    at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:53)
    at processing.app.Sketch.upload(Sketch.java:1460)
    at processing.app.Sketch.exportApplet(Sketch.java:1427)
    at processing.app.Sketch.exportApplet(Sketch.java:1382)
    at processing.app.Editor$45.run(Editor.java:2165)
    at java.lang.Thread.run(Thread.java:619)
processing.app.debug.RunnerException: Serial port '/dev/ttyUSB0' not found.  Did you select the right one from the Tools > Serial Port menu?
    at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:91)
    at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:78)
    at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:53)
    at processing.app.Sketch.upload(Sketch.java:1460)
    at processing.app.Sketch.exportApplet(Sketch.java:1427)
    at processing.app.Sketch.exportApplet(Sketch.java:1382)
    at processing.app.Editor$45.run(Editor.java:2165)
    at java.lang.Thread.run(Thread.java:619)
processing.app.debug.RunnerException: Serial port '/dev/ttyUSB0' not found.  Did you select the right one from the Tools > Serial Port menu?
    at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:91)
    at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:78)
    at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:53)
    at processing.app.Sketch.upload(Sketch.java:1460)
    at processing.app.Sketch.exportApplet(Sketch.java:1427)
    at processing.app.Sketch.exportApplet(Sketch.java:1382)
    at processing.app.Editor$45.run(Editor.java:2165)
    at java.lang.Thread.run(Thread.java:619)


BuildProcess  
The process the Arduino environment uses to build a sketch.

Overview

A number of things have to happen for your Arduino code to get onto the Arduino board. First, the Arduino environment performs some small transformations to make sure that the code is correct C++. It then gets passed to a compiler (avr-gcc), which turns the human readable code into machine readable instructions (or object files). Then, your code gets combined with (linked against), the standard Arduino libraries that provide basic functions like digitalWrite() or Serial.print(). The result is a single Intel hex file, which contains the specific bytes that need to be written to the program memory of the chip on the Arduino board. This file is then uploaded to the board: transmitted over the USB or serial connection via the bootloader already on the chip or with external programming hardware.

Pre-Processing

The Arduino environment performs a few transformations to your main sketch file (the concatenation of all the tabs in the sketch without extensions) before passing it to the avr-gcc compiler.

When your sketch is compiled, all tabs with no extension are concatenated together to form the "main sketch file" (C++). Then, #include "WProgram.h" is added to your sketch. This header file (found in the core folder for the currently selected board) includes all the definitions needed for the standard Arduino core. Next, the environment searches for function definitions within your main sketch file and creates declarations (prototypes) for them.

The #include statement and function prototypes are inserted after any comments or pre-processor statements (#includes or #defines), but before any other statements (including type declarations). This means that if you want to use a custom type as a function argument, you should declare it within a separate header file. Also, this generation isn't perfect: it won't create prototypes for functions that have default argument values, or which are declared within a namespace or class.

Compilation

Sketches are compiled by avr-gcc and avr-g++ according to the variables in the boards.txt file of the selected board's platform.

The include path includes the sketch's directory, the core folder (e.g. the hardware/arduino/core/arduino/ sub-folder of the Arduino application) and the avr include directory (hardware/tools/avr/avr/include/), as well as any library directories (in hardware/libraries/) which contain a header file which is included by the main sketch file.

Note that libraries referenced only by another library (and not the main sketch file) are not placed in the include path or linked against the sketch. All libraries used (even indirectly by another library) must be #included by the main sketch file.

When you verify or upload a sketch, it is built in a temporary directory in the system-wide temporary directory (e.g. /tmp on Linux).

The .c and .cpp files of the target are compiled and output with .o extensions to this directory, as is the main sketch file and any other .c or .cpp files in the sketch and any .c or .cpp files in any libraries which are #included in the sketch.

These .o files are then linked together into a static library and the main sketch file is linked against this library. Only the parts of the library needed for your sketch are included in the final .hex file, reducing the size of most sketches.

The .hex file is the final output of the compilation which is then uploaded to the board.

If build.verbose is set to true in the main preferences file, or if shift is held down when clicking the Compile / Verify toolbar button, the complete command line of each external command executed as part of the build process will be printed in the editor console.

Uploading

Sketches are uploaded by avrdude. The upload process is also controlled by variables in the boards and main preferences files. See the platforms page for details.

If upload.verbose is set to true in the main preferences file, or if the shift key is held down when clicking the Upload toolbar button, debugging information will be output to the editor console, including avrdude command lines and verbose output.



Reply via email to