GR-PEACH_producer_meeting


Team for GR-PEACH Producer Meeting

GettingStarted_JPN

Information

このページはrev.C向けの情報となっています。 rev.Bをご利用の方は、こちらを参照ください。
rev.Bとrev.Cの見分け方はこちらを参照ください。

CMSIS-DAP ファームウェアの更新

事前準備
以下のファイルをダウンロードして、適当なフォルダに展開します。

  • 最新版
    grpeach_8mb_20150601.bin
    • 512Kバイト以上のサイズのバイナリファイルに対応しました
  • 旧版
    • grpeach_8mb_20150318.bin
      • OS X Yosemite上でもドラッグ&ドロップでプログラム書き込みができるようになりました
    • grpeach_8mb_20141217.bin
      • 最適化方法を見直し、書き込みを高速化ました
    • grpeach_8mb_20141211.bin
      • ターミナルの再起動が不要になりました
      • 書き込み速度を向上させました
        • 通信クロック高速化
        • 書き込みシーケンスの改善
    • grpeach_8mb_20141209.bin
      • GR-PEACHのプログラム書き込み開始時にチップイレースをしていましたが、必要な箇所だけブロックイレースを行うように変更しました
      • 2回目書き込みに失敗する問題を修正しました
      • 上記対応後シリアル出力されない場合がある問題の修正しました
        • GR-PEACHのプログラムを書き換えた後はターミナルソフトの再起動を行ってください。
    • grpeach_8mb_20141127.bin
      • 制限: RZ/A1Hのプログラム書き換えたのち、RSTボタンを押すとUSBシリアルが正常に動かないことがあります。
      • 配布時はこちらのファームウエアが書き込まれています。
    • grpeach_8mb_20141112.bin
      • 制限: RZ/A1Hのプログラム書き換え前に一度GR-PEACHを抜き差ししてください。
  1. GR-PEACHをPCに接続します。
    書き換えを行うときはJP2をショートさせた状態で接続させてください。
    /media/uploads/RyoheiHagimoto/rev_c_jp2.jpg
  2. 「CRP DISABLED」という名前のマスストレージドライブがマウントされます。
    「mbed」という名前のマスストレージドライブがマウントされた場合は、JP2のショートが失敗しています。
    再度1.を実施してください。
    また書き換えを行っている場合、JP2のショートを解除してもかまいません。
  3. Macの場合、こちらのスクリプトを用いて書き換えてください。手順3,4を行います。
    Windowsの場合、フォルダーを開いてファイルを表示し、中に含まれているFirmware.binを削除します。
    Step2
  4. ドライブに<ファイル名>をコピーします。
  5. コピーが終わったらUSBケーブルを外します。
  6. 再度PCとGR-PEACHを接続し、「MBED」という名前のマスストレージドライブが 見つかれば、ファームウェアの更新完了です。


USBシリアルドライバのインストール

Windowsご利用の方は、GR-PEACHをUSBに挿入して「MBED」ドライブが見えている状態でUSBシリアルドライバをインストールします。


GR-PEACHをターゲットとして登録する

  1. GR-PEACHを接続し、「mbed.htm」を開くと、GR-PEACHのサイトに行きます。
  2. GR-PEACHのサイトの右側の「Add to your compiler」をクリックし、開発環境に登録します。 /media/uploads/ShinjiYamano/jpn_gettingstarted010.png

LEDをチカチカさせよう

  1. ページ右上にある、"Compiler"ボタンをクリックし、開発環境を立ち上げます。
  2. mbed_blinkyをimportします。

    Import programmbed_blinky

    The example program for mbed pin-compatible platforms

  3. 「Update all libraries to the latest version」にチェックを入れ、「import」します。
  4. Compileボタンをクリックしてコンパイルを行います。 /media/uploads/ShinjiYamano/jpn_gettingstarted012.png
  5. コンパイルが終了すると、バイナリファイルがダウンロードされます。
    これをmbedのマスストレージドライブへコピーしてください。
    ・ドラッグ&ドロップを行ってください。
  6. GR-PEACHのリセットボタンを押すか、USBケーブルを挿し直すことで、プログラムが実行されます。

LEDを滑らかに光らせよう

  1. LEDをチカチカさせようのmain.cppを以下のように書き換え、コンパイルし、実行します。

LED PWM

#include "mbed.h"

PwmOut led(LED_RED);

int main() {
    float crt = 1.0, delta = 0.04;

    led.period_ms(2); // 500Hz
    while (true) {
        led.write(crt);
        wait_ms(50);
        crt = crt + delta;
        if (crt > 1.0) {
            crt = 1.0;
            delta = -delta;
        }
        else if (crt < 0) {
            crt = 0;
            delta = -delta;
        }
    }
}


A/Dコンバータを使おう

  1. LEDをチカチカさせようのmain.cppを以下を参考に書き換え、コンパイルし、実行します。

Arduino A0,A1のA/D変換

#include "mbed.h"

DigitalOut myled(LED1);
AnalogIn   ain0(A0);
AnalogIn   ain1(A1);

int main() {
    myled = 1;
    while(1) {
        myled = !myled;
        printf("ain0 = %8.3f, ain1 = %8.3f\n", ain0.read(), ain1.read());
        wait(1);
    }
}


SPIを使おう

  1. LEDをチカチカさせようのmain.cppを以下を参考に書き換え、コンパイルし、実行します。

Arduino D10-D13を用いたSPI通信

#include "mbed.h"
SPI spi(D11, D12, D13);   // mosi, miso, sclk
DigitalOut cs(D10);

int main() {
    int data = 0;
    int res = 0;

    for(int i = 0; i < 30; i++) {

        cs = 0;
        res = spi.write(data++);
        cs = 1;

        wait_ms(0.001);
    }
}


I2Cを使おう

  1. LEDをチカチカさせようのmain.cppを以下を参考に書き換えます。
  2. 必要に応じて、I2C信号をプルアップします。プルアップはジャンパをショートすることによって行うことができます。
    対応するジャンパはPlatformを参照ください。
    ジャンパの位置はこちらを参照ください。
  3. コンパイルし、実行します。

Arduino SDA,SCLを用いたI2C通信

#include "mbed.h"

#define SIZE (10)
#define ADDR (0x90)

I2C i2c(I2C_SDA, I2C_SCL);

int main() {
    char buf[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    char res[SIZE];

    i2c.write(ADDR, buf, SIZE);
    i2c.read(ADDR, res, SIZE);
}


micro-SDを使おう

  1. LEDをチカチカさせようのmain.cppを以下を参考に書き換えます。
  2. プロジェクトのルートディレクトリを選択し、SDファイルシステムの右側の「Import this library」をクリックします。
  3. 途中でダイアログが表示されますので、決して「Update all libraries to the latest version」にチェックを「入れないで」ください。
  4. コンパイルし、実行します。

SPI通信を用いたmicroSD制御

#include "mbed.h"
#include "SDFileSystem.h"

SDFileSystem sd(P8_5, P8_6, P8_3, P8_4, "sd");

namespace {
const char *sd_file_path = "/sd/out.txt";
const int DATA_SIZE = 256;
}

int main()
{
    uint8_t data_written[DATA_SIZE] = { 0 };
    bool result = true;

    // Fill data_written buffer with random data
    // Write these data into the file
    {
        FILE *f = fopen(sd_file_path, "w");

        printf("SD: Writing ... ");
        for (int i = 0; i < DATA_SIZE; i++) {
            data_written[i] = rand() % 0XFF;
            fprintf(f, "%c", data_written[i]);
        }

        printf("[OK]\r\n");
        fclose(f);
    }

    // Read back the data from the file and store them in data_read
    {
        FILE *f = fopen(sd_file_path, "r");
        printf("SD: Reading data ... ");
        for (int i = 0; i < DATA_SIZE; i++) {
            uint8_t data = fgetc(f);
            if (data != data_written[i]) {
                result = false;
                break;
            }
        }
        printf("[%s]\r\n", result ? "OK" : "FAIL");
        fclose(f);
    }
}


イーサネットを使おう

  1. LEDをチカチカさせようのmain.cppを以下を参考に書き換えます。

ehterのサンプルコード

#include "mbed.h"
#include "EthernetInterface.h"
 
struct s_ip_address
{
    int ip_1;
    int ip_2;
    int ip_3;
    int ip_4;
};
 
int main() {
    char buffer[256] = {0};
    s_ip_address ip_addr = {0, 0, 0, 0};
    int port = 0;
 
    printf("TCPCllient waiting for server IP and port...\r\n");
 
    EthernetInterface eth;
    eth.init("192.168.100.2", "255.255.255.0", "192.167.101.3");
    eth.connect();
 
    printf("TCPClient IP Address is %s\r\n", eth.getIPAddress());
    sprintf(buffer, "%d.%d.%d.%d", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4);
 
    TCPSocketConnection socket;
    while (socket.connect(buffer, port) < 0) {
        printf("TCPCllient unable to connect to %s:%d\r\n", buffer, port);
        wait(1);
    }
 
    while ( true ) {
        wait(1);
    }
 
    socket.close();
    eth.disconnect();
    return 0;
}

// set mac address
void mbed_mac_address(char *mac) {
    mac[0] = 0x00;
    mac[1] = 0x02;
    mac[2] = 0xF7;
    mac[3] = 0xF0;
    mac[4] = 0x00;
    mac[5] = 0x00;
}

  1. Importボタンをクリックします。
  2. libraryタグから「mbed-rtos」と「EthernetInterface」を選択し、「Import!」をクリックします。 /media/uploads/RyoheiHagimoto/ether_import_libs.png
  3. 途中でダイアログが表示されますので、必ず「Update all libraries to the latest version」にチェックを入れてください。
  4. コンパイルします。
  5. GR-PEACHにプログラムをダウンロードします。
  6. PCのIPアドレスを192.168.100.100に設定します。
  7. GR-PEACHとPCをLANケーブルで接続します。
  8. GR-PEACHをリセットします。
    シリアルで以下が出力されます。
TCPCllient waiting for server IP and port...
TCPClient IP Address is 192.168.100.2
  1. PCからGR-PEACHに向け、PINGを発行します。
PING 192.168.100.2



All wikipages