The LCDuino-1 display I/O processor

Volu-Master™ and γ3 firmware

This page contains information about setting up the Arduino development environment on your computer, and how to download, modify, compile and flash the Volu-Master or γ3 firmware onto the Atmel MCU chip. Most LCDuino-1 users should be able to use the pre-flashed Atmel MCU chip (available from AMB audio shop), thus this page may not pertain to you. If you're simply looking to update the Volu-Master or γ3 firmware to a newer version (with an already compiled hex file), you may skip most of this page and only read the Required hardware and Compile and flash the firmware sections.

The information here is not a general guide to Arduino development, nor does it attempt to cover the firmware source code in detail. Those who want to do firmware hacking may use the information here as basic essentials, but there is no substitute to reading the source code and understanding it fully. You're on your own if you want to make firmware modifications beyond what is documented on this page. AMB and LinuxWorks are not obligated to provide support either directly or in the forums for this type of endeavor.

Here are the topics on this page:
  1. Source code license
  2. Required hardware
  3. Arduino development setup
  4. Firmware source code download
  5. Feature selection
  6. Compile and flash the firmware

1. Source code license

  
The Volu-Master and γ3 source code are released under GPLv3 (GNU General Public License version 3). You should read the terms of the license before you download it. Under this license, you may not make a closed-source (i.e., binary object or hex file only) version derived from Volu-Master or γ3, no matter how little or how much source code you modify. This license applies to you if you plan to use Volu-Master or γ3 code in a non-commercial project.

OEMs (original equipment manufacturers), VARs (value-added resellers) or other vendors who wish to use Volu-Master or γ3 code for commercial purposes, please contact AMB about an alternative commercial license.

If you use the Volu-Master or γ3 program in any form (source or binary, modified or not), to run on a product other than the LCDuino-1 system, we request that you provide full credit to our names and links to the LCDuino-1 website in the product's electronic and printed documentation.

2. Required hardware

You could flash the firmware (also known as a "sketch" in Arduino parlance) onto the Atmel MCU while it's installed on the LCDuino-1 board. You must have the FTDI TTL-232R cable as described in the Parts list.

Note: The Atmel MCU chip must be pre-flashed with the bootloader before flashing the firmware. The ATmega328P-PU chips supplied by AMB audio shop are pre-flashed with the bootloader, along with either Volu-Master or γ3 firmware. New MCU chips from Atmel, as purchased from a regular parts distributor, are completely un-initialized. Thus, the instructions here are not sufficient to make the MCU work. The FTDI TTL-232R cable can only be used to flash (or re-flash) the firmware, but not the bootloader. You need an "AVR programmer" to flash the bootloader. Information about AVR programmers and the process of flashing the bootloader is beyond the scope of this website. You are advised to search Arduino-related sites for information.

3. Arduino development environment setup

You need to install the following software on your computer in order to compile and flash the firmware. Please also see the Arduino Getting Started page for more platform-specific information. Be sure to install the appropriate packages for your OS platform (32-bit or 64-bit, and resolve all version dependencies if there are any conflicts). More detailed information can be found in the README.txt and INSTALL.txt files found in the Volu-Master and γ3 firmware source code bundle.
  • Operating system platform
    • Linux: kernel 2.6.31 or later, various distros.
    • Mac OS X: (see below)
    • Windows XP, Vista, 7, 8 and 10.
  • Java runtime environment - Sun/Oracle Java™ or OpenJDK, version 1.6.0 or later
    • Linux: This is usually supplied with Linux distros as installable packages.
    • Windows: [Download]
  • Arduino Software - see † below for version information.
    • The Java™-based Arduino graphical Integrated Development Environment (IDE), libraries, header files and tools.
      Available for Linux, Mac OS X and Microsoft Windows. [Download]
  • FTDI Virtual COM Port driver - version 2.04 or later
    • Linux: built-in to kernel 2.6.31 and later.
    • Mac OS X and Windows: [Download]
  • Cygwin - DLL version 1.7 or later
Volu-Master 1.00 must be compiled with Arduino 0022, γ3 1.00 must be compiled with Arduino 1.0.6. Volu-Master 1.01 and γ3 1.01 can be compiled with Arduino 1.0.x, 1.5.x or 1.6.x. On Windows, the Arduino "ZIP file for non-admin install" is recommended to allow multiple concurrent Arduino versions on the system.
Needed if you want to compile and flash the firmware using the Makefile (supplied with the Volu-Master and γ3 source code packages) rather than the Arduino IDE. You should install the Arduino software in a directory location where there is no whitespace character in any part of its path name.

Note: AMB and LinuxWorks developed the LCDuino-1 system on Linux, and tested on Windows. While it is possible to use Mac OS X to compile and flash the firmware, we have no first-hand experience on that platform. If you are a Mac OS X user and can help us augment the information on this page, please Contact AMB.

From this point forward it is assumed that you have downloaded and installed all the needed software.

4. Firmware source code download

Click below to download the Volu-Master or γ3 source code. By downloading, you are stating that you have read, understand, and accept the license terms.

[Download Volu-Master]   - for LCDuino-1 on a δ1 and δ2 system
[Download γ3]   - for LCDuino-1 on a γ3 DAC

The downloaded bundle is in ZIP format. You must choose a directory location to extract the ZIP file (such as under your home directory on Linux or your desktop on Windows). A directory called name_x_y will be created, where name is either "vm" (Volu-Master) or "gamma3", x is the major version number and y is the minor version number (e.g., "vm_1_03" or "gamma3_1_03"). That's the top-level directory containing all the source files.

Note: If you will be using the Makefile to compile and flash the firmware on Windows under Cygwin (see Compile and flash the firmware below), then be sure to install the firmware source code somewhere on your C: drive.

5. Feature selection

The Volu-Master and γ3 firmware each contain a number of features but they cannot all be compiled into a single binary and flashed onto the MCU. This is due to limitations of the ATmega328P MCU's available flash space as well as its RAM space. The default pre-flashed Atmel MCU from AMB has the most important and usable features enabled. One of the main reasons you may want to compile and re-flash the firmware is to enable a different set of features and options than the default.

The features and options are coded in a modular fashion, and conditionally-compiled using C-preprocessor #ifdef... #endif directives. The corresponding #define lines for each of these features are found in the config.h header file, where you could control whether you want to enable or disable the features.

Edit the config.h file with your favorite text editor (see Notes below), or use the Arduino IDE's built-in editor (see the next section about loading the source files into the Arduino IDE), and look for lines that resemble the following:
config.h: Volu-Master version shown, γ3 is similar.

/*
 * FEATURE switches: these enable/disable code (and feature) sections
 */

// This is used to enable LED13 to blink when an IR code was received
// (feedback to the user)
#define APP_BLINK_ON_LED13      1

// Enable more IR protocols than Sony (NEC, RC5, RC6)
#define NON_SONY                1

// Enable 'big fonts' for some displays
#define USE_BIGFONTS            1
//#define USE_THICKER_BIGFONT   1       // thicker alternate big font

// Volume control plugins (pick one or more)
#define USE_D1_RELAYS           1       // latching relays for vol control
//#define USE_PGA_I2C           1       // support PGA over I2C

// I/O selector plugins (pick one or more)
#define USE_D2_RELAYS           1       // latching relays for I/O selector
//#define USE_SPDIF             1       // support I/O selector with
                                        //'SPDIF mask,addr' types

// Use an analog linear potentiometer for volume and other functions
#define USE_ANALOG_POT          1       // linear pot

// The potentiometer is motorized (define USE_ANALOG_POT with this one)
#define USE_MOTOR_POT           1       // motor is via h-bridge driver

Notes

  1. All Volu-Master and γ3 source files are in Unix format. Line breaks contain only the LF (linefeed) character, not the CR/LF (carriage return/linefeed) pair. On Windows, the Notepad editor will not display line breaks properly. Use an editor capable of handling Unix files properly, or use the Arduino IDE's built-in editor.
  2. Only a portion of the config.h file is shown above.
  3. The comments for each of the features should be self-explanatory.

Notice that the #define USE_THICKER_BIGFONT line is commented-out by the preceding // comment delimiter. This is an example of a disabled feature. To enable it, delete the comment delimiter. To disable a feature, add the comment delimiter to the front of the line.

Please be aware that some features (which are disabled by default) are only partially-implemented or not fully-tested. These features are not officially supported unless otherwise noted.

Once you've made your changes, save the file and proceed to the next step to compile the firmware.

6. Compile and flash the firmware

Before you could flash the firmware, make sure your Atmel MCU chip is installed on your LCDuino-1 board, and it must contain pre-flashed bootloader. With Volu-Master, disconnect all δ1 or δ2 boards from LCDuino-1's J4 connector.

With Volu-Master, disconnect power to the LCDuino-1 board (by unplugging J3). If your LCDuino-1 is being used in a γ3 DAC or α10 pre-amplifier, then unplug the DAC or pre-amp's AC power cord. Then, connect the FTDI TTL-232R cable between LCDuino-1's J3 and an available USB port on your computer. Make sure the FTDI cable is connected to J3 in the correct orientation: the cable's green wire should be closest to VR1 (the contrast adjustment trimpot). After you connect the cable, LCDuino-1's power LED (LEDP) should illuminate. If this is the first time you've connected the cable to the computer, a message may be displayed on your computer screen about installing the driver for it. Let the installation complete automatically.

There are two ways to compile and flash the firmware:
The steps for each of these are described below.

6a. Using the Arduino IDE

The procedure for using the Arduino IDE is the same on Linux, Mac OS X and Windows.
1.  Start the Arduino IDE program by clicking on its desktop icon (or, if no icon was installed, the program executable file can be found in the directory where you installed the Arduino Software. You may run it directly). The Arduino window should appear on your computer screen.
2.  Click FileOpen.... Navigate to your firmware source code directory. For Volu-Master, select the vm_x_y.ino file.. For γ3, select the gamma3_x_y.ino file.. Clock OK to continue.
3.  The Arduino IDE will load the .ino file (the main source file), and automatically load all other needed files. The files are selectable by clicking on the tabs containing the file names. You may edit the files using the built-in editor, and don't forget to save your edits before closing the Arduino IDE window.
4.  Click ToolsBoard and select Arduino Duemilanove or Nano w/ ATmega328.
5.  Click ToolsSerial Port and select the virtual COM port where your FTDI cable is assigned to. On Linux, this is typically /dev/ttyUSB0. On Windows, it may be COM3 or COM4.
6.  To start the compile, click the Verify / Compile button (check mark), or click SketchVerify / Compile.
7.  The compile status, including error messages, should be shown in the output area at the bottom of the Arduino window. If your compile is successful, then you may flash the firmware onto the Atmel MCU.
8.  To start the flash, click the Upload button (right arrow), or click FileUpload to I/O Board.
9.  The output area will show the flash status. If you encounter an error, check the board type and serial port settings, and make sure that your firmware has not exceeded the maximum supported flash size. For the ATmega328P, it's 32K bytes, but some of it is taken up by the bootloader. If your flash size exceeds 30500 bytes, you're getting really close to running out of flash space.
10.  If you are compiling with the default config.h settings and did not modify the source code, then you can ignore the message: "Low memory available, stability problems may occur."

This is the Arduino version 1.8.10 IDE window showing the loaded Volu-Master source files, after a successful compilation. Other Arduino versions are similar.

6b. Using the Makefile

The procedure for using the Makefile is the same on Linux, Mac OS X and Windows. However, here are some OS-specific notes:

Linux
Edit the Volu-Master or γ3 Makefile-x.y, where x.y is the major Arduino version you are using (i.e., Makefile-1.0 for Arduino 1.0.x, Makefile-1.5 for Arduino 1.5.x, Makefile-1.6 for Arduino 1.6.x or Makefile-1.8 for Arduino 1.8.x).

Locate the following lines:

ifndef ARDUINO_ROOT
ARDUINO_ROOT    = /usr/local/arduino/arduino-x.y.z
endif

where x.y.z is the Arduino version (such as 1.8.10).

Change /usr/local/arduino/arduino-x.y.z to point to the actual location where your Arduino software is installed.

Also, locate the following lines:

ifndef port
port            = /dev/ttyUSB0
endif

If necessary, change /dev/ttyUSB0 to the virtual serial port device associated with your FTDI cable interface.

Windows
Using the Makefile method to compile and flash the firmware is supported on Windows systems only when running under Cygwin. You need the basic Cygwin environment such as the shell (bash, csh or ksh), make, text editor (vi or emacs) and other common Unix tools.

Cygwin maintains a virtual directory /cygdrive/c which represents the root directory of your C: drive. This becomes a problem for some utilities when invoked from the Makefile to access your Arduino software directory. For example, if your Arduino software is installed in this directory:

C:\Users\johndoe\arduino-1.8.10
Then its virtual path under Cygwin would be:

/cygdrive/c/Users/johndoe/arduino-1.8.10
While the make utility and many other Unix tools supplied with Cygwin works with the virtual path, many Arduino utilities do not. To resolve this problem, you need to create a mount point where your Arduino directory could be found without the /cygdrive/c prefix, and has the same path under Cygwin as it does under native Windows (sans the drive letter).

Type the following command at a Cygwin shell prompt (not with Windows Explorer or Windows command prompt, and substitute /Users/johndoe with your actual path):

mkdir -p /Users/johndoe
Then, edit Cygwin's /etc/fstab file and append the following line:

C:/Users/johndoe /Users/johndoe ntfs binary 0 0
Restart the Cygwin shell, and then verify that the directory has been mounted with the mount command. Here is an example output:

C:/Users/johndoe on /Users/johndoe type ntfs (binary)
C:/cygwin/bin on /usr/bin type ntfs (binary,auto)
C:/cygwin/lib on /usr/lib type ntfs (binary,auto)
C:/cygwin on / type ntfs (binary,auto)
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)

Edit the Volu-Master or γ3 Makefile-x.y where x.y is the major Arduino version you are using (i.e., Makefile-1.0 for Arduino 1.0.x, Makefile-1.5 for Arduino 1.5.x, Makefile-1.6 for Arduino 1.6.x or Makefile-1.8 for Arduino 1.8.x).

Locate the following lines:

ifndef ARDUINO_ROOT
ARDUINO_ROOT    = /usr/local/arduino/arduino-x.y.z
endif

where x.y.z is the Arduino version (such as 1.8.10).

Change /usr/local/arduino/arduino-x.y.z to /Users/johndoe/arduino-1.8.10 (or wherever your Arduino software is installed).

Also, locate the following lines:

ifndef port
port            = /dev/ttyUSB0
endif

Change /dev/ttyUSB0 to the virtual serial port device associated with your FTDI cable interface (such as COM5).

Source code compilation

To compile the source code, start a shell prompt window, change to the firmware source code top-level directory, and issue the "make -f Makefile-x.y" command, where Makefile-x.y is either Makefile-1.0, Makefile-1.5, Makefile-1.6 or Makefile-1.8, depending on the Arduino version you're compiling with. The following is an abbreviated example screen log of the compilation with Arduino 1.8.10 (Volu-Master 1.03 shown, γ3 is similar):

$ cd vm_1_03
$ make -f Makefile-1.8
---> Copying vm_1_03.ino to vm_1_03.cpp ...
cp -f vm_1_03.ino vm_1_03.cpp
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-g++ -DCLI_BUILD -mmcu=atmega328p -w -c -Os -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_DUEMILANOVE -DARDUINO_ARCH_AVR -ffunction-sections -fdata-sections -MMD -flto -std=gnu++11 -fno-exceptions -fno-threadsafe-statics -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/cores/arduino -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/EEPROM/src -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/Wire/src -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/Wire/src/utility -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/variants/standard -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/SoftwareSerial/src -c vm_1_03.cpp -o vm_1_03.cpp.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-g++ -DCLI_BUILD -mmcu=atmega328p -w -c -Os -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_DUEMILANOVE -DARDUINO_ARCH_AVR -ffunction-sections -fdata-sections -MMD -flto -std=gnu++11 -fno-exceptions -fno-threadsafe-statics -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/cores/arduino -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/EEPROM/src -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/Wire/src -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/Wire/src/utility -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/variants/standard -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/SoftwareSerial/src volcontrol.cpp -o volcontrol.cpp.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-g++ -DCLI_BUILD -mmcu=atmega328p -w -c -Os -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_DUEMILANOVE -DARDUINO_ARCH_AVR -ffunction-sections -fdata-sections -MMD -flto -std=gnu++11 -fno-exceptions -fno-threadsafe-statics -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/cores/arduino -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/EEPROM/src -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/Wire/src -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/Wire/src/utility -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/variants/standard -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/SoftwareSerial/src lcd1_libs.cpp -o lcd1_libs.cpp.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-g++ -DCLI_BUILD -mmcu=atmega328p -w -c -Os -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_DUEMILANOVE -DARDUINO_ARCH_AVR -ffunction-sections -fdata-sections -MMD -flto -std=gnu++11 -fno-exceptions -fno-threadsafe-statics -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/cores/arduino -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/EEPROM/src -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/Wire/src -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/Wire/src/utility -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/variants/standard -I/usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/SoftwareSerial/src /usr/local/arduino/arduino-1.8.10/hardware/arduino/avr/libraries/Wire/src/Wire.cpp -o Wire.cpp.o
...
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a main.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a wiring.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a wiring_analog.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a wiring_digital.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a wiring_pulse.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a wiring_shift.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a hooks.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a WInterrupts.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a WMath.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a WString.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a Print.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a USBCore.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a HardwareSerial.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a HardwareSerial0.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a HardwareSerial1.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a HardwareSerial2.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a HardwareSerial3.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a IPAddress.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a Tone.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a new.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a Stream.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc-ar rcs arduino_core.a CDC.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-ar rcs arduino_core.a abi.o
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-gcc -Os -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o vm_1_03.cpp.elf vm_1_03.cpp.o volcontrol.cpp.o lcd1_libs.cpp.o Wire.cpp.o twi.c.o arduino_core.a -L. -lm
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom vm_1_03.cpp.elf vm_1_03.cpp.hex
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avr-size vm_1_03.cpp.elf
   text    data     bss     dec     hex filename
  24268    1042     538   25848    64f8 vm_1_03.cpp.elf

Note: Make sure that your firmware has not exceeded the maximum supported flash size. For the ATmega328P, it's 32K bytes, but some of it is taken up by the bootloader. Your flash size is the text + data as shown above. If it exceeds 30500 bytes, you're getting really close to running out of flash space.

Flashing the firmware

To flash the firmware onto the LCDuino-1, issue the "make -f Makefile-x.y upload" command, where Makefile-x.y is Makefile-1.0, Makefile-1.5, Makefile-1.6 or Makefile-1.8, depending on the Arduino version you're using. Here is a screen log. If you get a "programmer is not responding" message, then check your port setting, and try removing and inserting the FTDI cable USB plug. If you get a verify error, then your firmware flash size is probably too big. Check the size as shown in the avrdude output. If it exceeds 30500 bytes, then you're getting really close to running out of flash space.

$ make -f Makefile-1.8 upload
/usr/local/arduino/arduino-1.8.10/hardware/tools/avr/bin/avrdude -C /usr/local/arduino/arduino-1.8.10/hardware/tools/avr/etc/avrdude.conf -p atmega328p -P /dev/ttyUSB0 -c arduino -b 57600 -D -U flash:w:vm_1_03.cpp.hex:i

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "vm_1_03.cpp.hex"
avrdude: writing flash (25310 bytes):

Writing | ################################################## | 100% 7.94s

avrdude: 25310 bytes of flash written
avrdude: verifying flash memory against vm_1_03.cpp.hex:
avrdude: load data flash data from input file vm_1_03.cpp.hex:
avrdude: input file vm_1_03.cpp.hex contains 28650 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 5.90s

avrdude: verifying ...
avrdude: 25310 bytes of flash verified

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done. Thank you.

$

Cleaning up

To clean up your firmware source code directory (remove all generated object files, library files, hex files, etc.), issue the "make -f Makefile-x.y clean" command. You should do this if you had used the Makefile to compile the firmware, but want to switch to using the Arduino IDE.


Main: LCDuino-1 Main | Prev: User guide | Next: History