ヌルポインター親衛隊

社内でひとりエンジニアやってます。

【Ubuntu、AVR】UbuntuでAVRマイコンの開発環境を構築する

この記事は

UbuntuでAVRの開発環境を構築するために色々調べたので、備忘を兼ねてまとめてみました。
これまではwindows7 + AtmelStudio7を使用していたため、自分と同じように開発環境を変更する人のお役に立てればと思います。

1.環境

+ubuntu 14.04LTS(linux kernel 3.13.0-44-generic)
+eclipse3.8.1 IDE
+AVR Eclipse eclipse上でAVRの開発を行うためのplugin
+gcc-avr avrコンパイラ.gccの派生
+avrdude 書き込み用のプログラム
+ISPmk2 おなじみの高いライター
+atmega168p テスト用マイコン

今はLinux Kernelも5.8となりました(2020.8)。
随分前に別ブログで投稿した記事のため、内容が随分と古いです。

2.環境構築手順

2-1)ソフトウェアのインストール インストールするソフトウェアは3つです。
avrの依存関係はgcc-avrとともにインストールされるはずです。

 $ sudo apt-get update
 $ sudo apt-get upgrade
 $ sudo apt-get install eclipse gcc-avr avrdude binutils-avr avr-libc

2-2.ISPmk2の設定(avrdude)

ISPmk2の動作クロックは工場出荷時にはランダムになっているらしいです。
そのため、マイコンの書き込み前に明示的に設定して置く必要があります。
コマンドラインから以下のコマンドを実行します。

$ sudo avrdude -c avrispmkII -P usb -F -u -t
avrdude> sck 10
>>>sck 10
avrdude> quit
>>> quit
avrdude done. Thank you.

また、USBデバイスまわりはパーミッションを設定しないと一般ユーザーで使用不可能です。
恒久策がわからなかったため、今回は管理者権限でeclipseを起動しました。

$ sudo eclipse

2-3.eclipseの設定

2-3-1.CDTのインストール

eclipseJavaIDEとして作成されています。しかし、その他の言語のIDEとしても使用することが可能です。
今回はC/C++で開発するため、CDT(C/C++ Development Tools?)プラグインを導入してAVRの開発に利用しましょう。

  1. 上部の"ヘルプ"タブより"新規ソフトウェアのインストール"を選択。
  2. すべての使用可能なサイト-を選択。
  3. "プログラミング言語"以下にあるチェックボックスをチェックし、"次へ"ボタンを押す。 なお,チェックするチェックボックスの具体的なモノは以下に記す.

  4. C/C++呼び出しグラフ可視化

  5. C/C++開発ツール
  6. C/C++開発ツール SDK
  7. C/C++ライブラリー API ドキュメンテーション・ホバー・ヘルプ

以上

2-3-2.AVR Eclipseのインストール

同じくEclipseでAVRを扱うためのプラグインを導入する。

  1. 上部の"ヘルプ"タブより、"新規ソフトウェアのインストール"を選択。
  2. "追加"より以下を追加する。名前は適当でよい。 http://avr-eclipse.sourceforge.net/updatesite/
  3. 真ん中辺りのチェックボックス(AVR Eclipse Plugin)をチェックし、"次へ"ボタンを押す。

以上

2-3-3.AVR Eclipseの設定

  1. 上部タブより"ウインドウ"内の"設定"を開き、左タブより"AVR"を選択する。
  2. "AVRdude"の"追加"ボタンより以下のように設定する。
  3. 名前 ISPmk2
  4. Programmer Hardware Atmel AVR mkII
  5. Override default baudrate 9600

以上

3.ソースコードの記述,コンパイル,書き込み

  1. 新規プロジェクトよりCもしくはC++プロジェクトを選択する。
    AVR Cross Target Application下のプロジェクトを選択し、プロジェクトを生成する。
  2. 新規でソースファイルを生成し、コードを書き込んでゆく。
  3. 上部タブの金槌のようなアイコンでコンパイルを行う。
    この際"Release"を選択肢ないとhexが生成されなかったため注意(要検証)。
  4. 上部タブの"AVR↓"アイコンでAVRに書き込む

以上

4.マイコンの設定について

対象のプロジェクトを右クリックし、プロパティのAVR項目よりマイコンの設定ができます。
構成は"Release"にして設定する。

4-1.ターゲット

ターゲットの設定はTargetHaedwareより行います。

4-2.フューズビットの設定

まだ操作したことが無いため、保留します。

5.追記:書き込みエラーの対処法

私の環境でいざマイコンへ書き込もうとした所エラーが出ました。
Eclipseをスーパーユーザーで起動すれば対処できるのですが、ワークスペースが別になったり毎回コマンドラインから起動する必要があるため、対策を講じます。

$sudo chmod 4755 /usr/bin/avrdude

chmodコマンドは4000の指定でsetuid(2)が作動します。
setuidはファイルの所有者としてファイルを開くシステムコールです。

参考
https://forums.ubuntulinux.jp/viewtopic.php?id=9172
http://x68000.q-e-d.net/~68user/unix/pickup?chmod

おわりに

最近はVS codeなどのIDEライクなエディタもありますね。
当時はEclipseVimしか知らず、しばらくVimでやってましたが設定がめんどくさくてEclipseを利用しました。