# OpenOCD: ターゲットデバイスとの通信を確立させる (Microsemi)

**URL:** <https://forum.spacecubics.com/t/openocd-microsemi/54>\
**Category:** Community\
**Tags:** lang-ja\
**Created:** [January 15, 2022, 10:27am UTC](https://forum.spacecubics.com/t/openocd-microsemi/54 "2022-01-15T10:27:03Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![yashi](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.spacecubics.com/yashi/32/10_2.png) [@yashi](https://forum.spacecubics.com/u/yashi)\
**Post date:** [January 15, 2022, 10:27am UTC](https://forum.spacecubics.com/t/openocd-microsemi/54/1 "2022-01-15T10:27:04Z")

</div>

OpenOCDコマンドを直接実行する時は、

- Device
- Interface
- Target

などを指定し、ボードと通信します

```auto
openocd --command "set DEVICE M2S150" --file interface/microsemi-flashpro.cfg --file target/microsemi-cortex-m3.cfg

```

`--command` と `-c` 、 `--file` と `-f` は同じです。

指定されたファイルは、 [OpenOCD Search path](https://forum.spacecubics.com/t/topic/52) から探します。オプションは `-s` 。

## Device

`set DEVICE` を使って、ターゲットとなるデバイスの指定をする。上記例では `M2S150` Microsemi SmartFusion 2 FPGA 150K logic 品です。間違ったデバイスを指定すると

```auto
Info : JTAG tap: M2S010.tap tap/device found: 0x1f8061cf (mfg: 0x0e7 (GateField), part: 0xf806, ver: 0x1)
Warn : JTAG tap: M2S010.tap UNEXPECTED: 0x1f8061cf (mfg: 0x0e7 (GateField), part: 0xf806, ver: 0x1)
Error: JTAG tap: M2S010.tap expected 1 of 1: 0x0f8031cf (mfg: 0x0e7 (GateField), part: 0xf803, ver: 0x0)
Error: Trying to use configured scan chain anyway...
Warn : Bypassing JTAG setup events due to errors

```

と言われます。

表示されている HEX番号は JTAG ID。 `0x1f8061cf` が M2S150、 `x0f8031cf` はエラー出すためにいれた M2S010。

## Configuration files

`.cfg` ファイルは OpenOCD の配下にあります

- Linux で OpenOCD パッケージをインストールした場合: `/usr/share/openocd/scripts`
- 自分でソースからビルドした場合: `tcl/`
- SoftwareConsole version 6.2 の場合: `C:\Microsemi\SoftConsole_v6.2\openocd\share\openocd\scripts\`

## Microsemi

Upstream の OpenOCD には microsemi 系の config ファイルは入っていない場合があります。 Upstream の OpenOCD を使っていて Microsemi 系のデバイスを使いたい場合は、 Microsemi の OpenOCD の `scripts/` 以下をサーチパスに指定すると良いです。

ファイルの指定順番は大事です。たとえば `microsemi-flashpro.cfg` で宣言されている `FPGA_TAP` という変数が `target/microsemi-cortex-m3.cfg` で使われたりします。先に `target/microsemi-cortex-m3.cfg` を指定すると `Unknown FPGA_TAP` と言われてエラーになります。
