2016年5月11日水曜日

Raspbian Jessie におけるDVMEGAのファームウェアアップデート

Back


先般やっとDVMEGA(ラズパイ・ラジオ,Bluespot共通 UHF版)を入手。折角ラズベリーパイとドッキングして使用するので,そのファームウェアアップデートもラズベリーパイで行いたいと思っておりました。

左記のサイトにその手順が書かれており,何件かスムーズに出来たとの情報も得ておりました。ところがいざやってみると,Jessieバージョンでは思うように行きません。

色々調べながら何とかできましたので手順を記したいと思います。実証実験しておりませんが出来たケースはWheezy(Debian7)ではないかと思われますのでオリジナルなやり方として併記いたします。
  1. ハードウェアのジャンパー半田付け


  2. ATMEGA328のリセットピン(C45下部)とGPIOコネクタの7番ピンの間にジャンパケーブルを半田付けします。

    デュアルバンドのDVMEGAの場合は上記サイトに写真があります。
  3. Rasberry Piへ関連ソフトをインストール



  4. =MEMO= 2016/11/05時点では、最新版のRaspbian 4.4.26+ #915に於いて、下記のWheezy用のインストール方法で出来る事を確認しました。  ただし、ファームウェアアップデートの実行に於いては Jessie用のコマンドが必要でした。 ( DVMEGA_HB_V307.cpp.hex )

    まず,OSを最新の状態にします。
    $ sudo apt-get update && sudo apt-get upgrade -y
    

    ●avrdudeのインストール

    Wheezyの場合
    $ sudo apt-get install avrdude
    
    でいいのですが,ここでインストールされる avrdude は最新版ではないようです。

    Jessieの場合
    $ wget http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz
    $ tar zxvf avrdude-6.3.tar.gz
    $ cd avrdude-6.3
    $ ./configure
    $ make
    $ sudo make install
    
    まず,wgetでavrdudeの最新版をダウンロードします。

    現在(2016年5月)は6.3ですが, http://download.savannah.gnu.org/releases/avrdude/で最新日付のものを選んでください。

    解凍した後できるフォルダの中で,環境を整え,コンパイルし,インストールします。インストール先は /usr/local/bin です。

    ●その他関連ソフトのインストールと環境設定

    $ sudo apt-get install git python-dev python-rpi.gpio
    $ git clone https://github.com/openenergymonitor/avrdude-rpi.git
    $ cd avrdude-rpi
    $ sudo cp autoreset /usr/bin
    $ sudo cp avrdude-autoreset /usr/bin
    $ sudo mv /usr/bin/avrdude /usr/bin/avrdude-original       // Wheezyの場合
    $ sudo mv /usr/local/bin/avrdude /usr/bin/avrdude-original // Jessieの場合
    $ sudo ln -s /usr/bin/avrdude-autoreset /usr/bin/avrdude
    
    このまま一行ずつコピーして実行してください。


  5. その他のソフトが/dev/ttyAMA0を使用していないことを確認

  6. G4KLXアプリケーションや ser2netのようなシリアルポートを使用するソフトウェアは停止してください。

    また次のようにすると、ttyAMA0を占有しているプロセスが判明するので kill します。
    $ ps -ef | grep ttyAMA0
    opendv     807   425  0 15:25 pts/0    00:00:00 grep --color=auto ttyAMA0
    $ sudo kill 425
    


  7. ファームウェアアップデートの実行

  8. Wheeayの場合
    $ avrdude -p m328p -c arduino -P /dev/ttyAMA0 -b 115200 -F -U flash:w::DVMEGA_V227_UNO_JAPAN.cpp.hex -v
    

    Jessieの場合
    $ avrdude -p ATMEGA328P -c arduino -P /dev/ttyAMA0 -b 115200 -F -U flash:w:DVMEGA_V227_UNO_JAPAN.cpp.hex -v
    
    DVMEGA_V227_UNO_JAPAN.cpp.hex は日本版ファームウェアです。

    Jessie での実行結果
    avrdude-original: Version 6.3, compiled on May 11 2016 at 16:34:20
                      Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
                      Copyright (c) 2007-2014 Joerg Wunsch
    
                      System wide configuration file is "/usr/local/etc/avrdude.conf"
                      User configuration file is "/root/.avrduderc"
                      User configuration file does not exist or is not a regular file, skipping
    
                      Using Port                    : /dev/ttyAMA0
                      Using Programmer              : arduino
                      Overriding Baud Rate          : 115200
    avrdude-original: Using autoreset DTR on GPIO Pin 7
                      AVR Part                      : ATmega328P
                      Chip Erase delay              : 9000 us
                      PAGEL                         : PD7
                      BS2                           : PC2
                      RESET disposition             : dedicated
                      RETRY pulse                   : SCK
                      serial program mode           : yes
                      parallel program mode         : yes
                      Timeout                       : 200
                      StabDelay                     : 100
                      CmdexeDelay                   : 25
                      SyncLoops                     : 32
                      ByteDelay                     : 0
                      PollIndex                     : 3
                      PollValue                     : 0x53
                      Memory Detail                 :
    
                                               Block Poll               Page                       Polled
                        Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
                        ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
                        eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
                        flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
                        lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                        hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                        efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                        lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                        calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
                        signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
    
                      Programmer Type : Arduino
                      Description     : Arduino
                      Hardware Version: 3
                      Firmware Version: 4.4
                      Vtarget         : 0.3 V
                      Varef           : 0.3 V
                      Oscillator      : 28.800 kHz
                      SCK period      : 3.3 us
    
    avrdude-original: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.00s
    
    avrdude-original: Device signature = 0x1e950f (probably m328p)
    avrdude-original: safemode: hfuse reads as 0
    avrdude-original: safemode: efuse reads as 0
    avrdude-original: NOTE: "flash" memory has been specified, an erase cycle will be performed
                      To disable this feature, specify the -D option.
    avrdude-original: erasing chip
    avrdude-original: reading input file "DVMEGA_V227_UNO_JAPAN.cpp.hex"
    avrdude-original: input file DVMEGA_V227_UNO_JAPAN.cpp.hex auto detected as Intel Hex
    avrdude-original: writing flash (27546 bytes):
    
    Writing | ################################################## | 100% 4.12s
    
    avrdude-original: 27546 bytes of flash written
    avrdude-original: verifying flash memory against DVMEGA_V227_UNO_JAPAN.cpp.hex:
    avrdude-original: load data flash data from input file DVMEGA_V227_UNO_JAPAN.cpp.hex:
    avrdude-original: input file DVMEGA_V227_UNO_JAPAN.cpp.hex auto detected as Intel Hex
    avrdude-original: input file DVMEGA_V227_UNO_JAPAN.cpp.hex contains 27546 bytes
    avrdude-original: reading on-chip flash data:
    
    Reading | ################################################## | 100% 3.19s
    
    avrdude-original: verifying ...
    avrdude-original: 27546 bytes of flash verified
    
    avrdude-original: safemode: hfuse reads as 0
    avrdude-original: safemode: efuse reads as 0
    avrdude-original: safemode: Fuses OK (E:00, H:00, L:00)
    strace: |autoreset: Broken pipe
    strace: |autoreset: Broken pipe
    strace: |autoreset: Broken pipe
    strace: |autoreset: Broken pipe
    strace: |autoreset: Broken pipe
    
    avrdude-original done.  Thank you.
    
    strace: |autoreset: Broken pipe
    
Back


73
J E 3 H C Z / Y. Todo at REF047 C


0 件のコメント:

コメントを投稿