0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

makeからplatformioへ変換

Last updated at Posted at 2021-12-25

flashromでパラレルflashを読み書きできるarduino(avr)のファームウエアーをmakeからplatformioへ引越ししてみました。

元々はMacOS XでArduino IDEに入っているavrのgccなどのtoolchainをmakeで使っていました。元のレポジトリはこんな感じです。

サブモジュールを使っているのでrecursiveでチェックアウトします。

% git clone --recursive https://github.com/yamori813/frser-atmega88

レポジトリの最上部からソースがあるので、srcディレクトリを作って、ソースとヘッダーとサブモジュールをgit mvします。Makefileも記録のために移します。

platformio.iniは以下のようにします。

[env:miniatmega328]
platform = atmelavr
board = miniatmega328
framework = arduino
upload_port = /dev/cuaU0
upload_speed = 57600
build_flags = -Isrc/libfrser -DBAUD=57600

これでpio runするとサブモジュールの利用しないファイルまでコンパイルしてエラーになります。

使用するファイルを限定するためにplatformio.iniに以下を追加します。

src_filter = +<*> -<libfrser> +<libfrser/frser.c> +<libfrser/udelay.c>

ビルドできました。

hiroki@pio:~/frser-atmega88 % pio run
Processing miniatmega328 (platform: atmelavr; board: miniatmega328; framework: arduino)
---------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/miniatmega328.html
PLATFORM: Atmel AVR (3.4.0) > Arduino Mini ATmega328
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 28KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES: 
 - framework-arduino-avr 5.1.0 
 - toolchain-atmelavr 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 5 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio/build/miniatmega328/src/flash.c.o
Compiling .pio/build/miniatmega328/src/libfrser/frser.c.o
Compiling .pio/build/miniatmega328/src/libfrser/udelay.c.o
Compiling .pio/build/miniatmega328/src/main.c.o
Compiling .pio/build/miniatmega328/src/uart.c.o
Archiving .pio/build/miniatmega328/libFrameworkArduinoVariant.a
Indexing .pio/build/miniatmega328/libFrameworkArduinoVariant.a
Compiling .pio/build/miniatmega328/FrameworkArduino/CDC.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/HardwareSerial.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/HardwareSerial0.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/HardwareSerial1.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/HardwareSerial2.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/HardwareSerial3.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/IPAddress.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/PluggableUSB.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/Print.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/Tone.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/USBCore.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/WInterrupts.c.o
Compiling .pio/build/miniatmega328/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/WString.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/abi.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/hooks.c.o
Compiling .pio/build/miniatmega328/FrameworkArduino/main.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/new.cpp.o
Compiling .pio/build/miniatmega328/FrameworkArduino/wiring.c.o
Compiling .pio/build/miniatmega328/FrameworkArduino/wiring_analog.c.o
Compiling .pio/build/miniatmega328/FrameworkArduino/wiring_digital.c.o
Compiling .pio/build/miniatmega328/FrameworkArduino/wiring_pulse.S.o
Compiling .pio/build/miniatmega328/FrameworkArduino/wiring_pulse.c.o
Compiling .pio/build/miniatmega328/FrameworkArduino/wiring_shift.c.o
Archiving .pio/build/miniatmega328/libFrameworkArduino.a
Indexing .pio/build/miniatmega328/libFrameworkArduino.a
Linking .pio/build/miniatmega328/firmware.elf
Checking size .pio/build/miniatmega328/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [==========]  97.2% (used 1990 bytes from 2048 bytes)
Flash: [=         ]   7.3% (used 2094 bytes from 28672 bytes)
Building .pio/build/miniatmega328/firmware.hex
=================================== [SUCCESS] Took 1.75 seconds ===================================

.gitignoreに.pioを追加して出来上がりです。

github actionも設定してみました。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?