2019年9月16日月曜日

[SiPEED TANG PRiMER] ハードウェア編

まえがき

各種ドキュメント類については wikiから手繰っていくと色々なドキュメント類に辿り着ける。
※商品名称がPRiMERだったりPremierだったり… そのためかリンクが"Not found"になる個所がある。その場合はURLの"Primer"を"Premier"に修正すると良さそう。

出荷時にHummingbird E203が書き込まれているようなので 取り敢えずRISC-V(RV32)マイコンとして触ってみたい場合はこちら

本編

下のドキュメントから始めるとわかりやすい。
[Lichee Tang Docs]
https://tang.sipeed.com/en/
所々中国語が混ざっているが 雰囲気でなんとかなる。

要約すると、
  1. 始めよう
    1. 必要なもの
      • TD(ツール)のダウンロード
      • サンプルのダウンロード
      • 各種ドキュメントのダウンロード
    2. TD(ツール)のインストール
    3. USBドライバのインストール
    4. Lチカ
  2. ハードウェア概要
  3. Lichee Tangの使い方
    • ピンアサインの固定方法とプログラムのダウンロード

ツールの特徴

・インストールサイズは200Mバイト弱
・大手のツール使用経験があれば それほど迷うことはなさそう
・シミュレータは付属してない (ModelSIMの実行マクロを吐き出す機能はある)
・IPはハードマクロのみかな?
・デバイスへの書き込み(揮発)は"JTAG", Flashへは"PROGRAM FLASH"で行える

FPGAの特徴

・今のところ何の遜色もない感じ。(安かろう悪かろうではなさそう)

Hummingbirdのコンパイル結果

Hummingbirdの論理合成をしたところ以下のようになった。
・LUTの使用率は80%くらい
・DSPの使用率が0%なのが気になる… (E203は 積算:17,除算:33cyclesのためらしい)

その他

・ModelSIMとの連携については後日追記するかもしれない
・内蔵SDRAMも試してみたい

参考リンク

wiki
Lichee Tang Docs
ツールとFPGAドキュメントの英訳版
Tang_FPGA_Examples
Tang_E203_Mini (Hummingbird)

[SiPEED TANG PRiMER] Hummingbirdファームウェア編

SiPEED TANG PRiMERには予めRISC-V(Hummingbird E203)が書き込まれており ボードを一つのRISC-V(RV32I/EMC)マイコンとして扱うことができる。初期状態ではLED点滅とUARTからデモ表示が確認できる。ファームの書き換えやデバッグは開発環境が用意されておりコマンド操作で行う。

ファームウェア開発環境

ビルド済みのツールチェーンが用意されており、基本的には下のリンク先の手順に従って進めれば問題なさそう。
[Hummingbird Core]
https://tang.sipeed.com/en/risc-v-core/hummingbird/
※sirv-e-sdk.tar.lrzのリンクが"Not found"の場合 リンクURLの"Primer"を"Premier"に変更すればOK。

要約すると、
  1. SDKの準備
    • ダウンロード
    • 解凍
  2. デモのビルドと実行
    • ビルド
    • JTAGの設定
    • JTAGとボードの接続
    • アップロード
  3. デバッグ
    • OpenOCDの起動
    • GDBの起動

説明は JTAGにFT2232D(SiPEED USB-JTAG/TTL)を使うことを前提に書かれている。
OpenOCD対応のJTAGであれば使えそうだが 設定はそのJTAG用に修正する必要がある。

ファームのアップロードが成功すると リセット後以下の用に表示される。

書かれてないこと

・OSは64bitのLinux (ビルド済みツールチェーンが64bitのため)
・必要なパッケージは lrzip, ibftdi1-2
・シリアルインタフェース速度は115200bps

要注意

・SiPEED USB-JTAG/TTLのピンアサイン表記に誤りがあるので注意が必要。
NC→3.3V出力
GND→5V出力

参考リンク

e200_opensource (SDKの元ネタ?と思われる)

2019年7月16日火曜日

PSoC4 HSSP on Arduino

AN84858(PSoC4 HSSP)をArduinoに移植してみた。
AN84858 - サイプレス社から外部マイクロコントローラーを使用したPSoC4のプログラミンング (HSSP)
Arduinoスケッチ内にターゲットPSoC4のFlashROMイメージを持つため それ以上のプログラム領域を持ったArduinoボードが必要。

確認した構成

・Arduioボード: ESP32 DEVKITV1
・PSoC4デバイス: CY8CKIT-142 (PSoC4 BLEモジュール)
・PSoC4ファーム: AN68272 (PSoC4 UARTブートローダ)


使用感

Arduinoへの書き込み時間もPSoC4への書き込み時間もほとんど気にならない。
ブートローダ書き込み後は PSoC Creatorの"Tools -> Bootloader Host..."から書き込めて便利。

GitHubリポジトリ: PSoC4_HSSP_Arduino

2018年12月17日月曜日

3D SineWave 表示

JavaScriptでHTML5のCanvasを操作する感覚が 8bitPC時代のBASICでグラフィックを操作する感覚にどことなく似ているためか、ちょっと懐かしくなって一気に書き上げてしまった。
今風にマウスでグリグリ動かせるようにもしてみた。

当時は店頭デモでよくみかけた気がする。静止画面一枚を書き上げるだけでも少し時間がかかってたかな?

GitHubリポジトリ: 3D SineWave

2018年12月16日日曜日

JScriptのBinaryBufferクラス

デバッグ中にバイナリデータを気軽に加工したくなるときがよくある。
例えば、データを画像に変換したい、でもバグでデータにズレがあるためズレを調整しながら確認したい、画像に限らずビットのズレを調整したいときなど…
コンパイル言語でも不自由はしないが 直接実行できるスクリプト言語が理想的で、加えて特別な環境が必要なく比較的メジャーな言語だと助かる。となると自分の場合はJScript一択なのかなと。
誰か作ってないかと色々探してみたけど理想的なものは見つからず…

そんな中で出来たのがJScriptのBinaryBufferクラス
Array-likeなオブジェクトにファイルの読み込み/書き出しとマルチバイト編集を追加したもの。
詳しくはREADME.ja.mdを参照。

2018年10月29日月曜日

電解コンデンサの液漏れ

数年前になるが 電解コンデンサの液漏れが多発したことがあった。
順番は忘れたが ハブ、オシロ、マザボとやられていった。
電源が入らなかったり動作が不安定になったりして 調べたら液漏れだったといった感じ。

部品の特定は、外観で液漏れが明らかだったり うろ覚えだが電圧や抵抗値で探したような。
幸いこの時は電解コンデンサの交換だけで全て元通り使えるようになった。

OWON PDS5022S

ASUS P5B-VM (+5V standby)

参考リンク

『不良電解コンデンサ問題』
『80年代末期の“亡霊”に注意、現代の修理業務でも遭遇率高し』

2018年10月28日日曜日

MSP-FET430UIFのファームウェアv2,v3

CCSv4とv5では MSP-FET430UIFのファームウェアバージョンが違うらしい。
そのためCCSv5で使った後にv4で使うには 手動でファームウェアを書き換える必要がある。

VID:PIDとファームウェアバージョンは以下の通り。
CCSv4 -- VID:PID 0451:F430 firmware v2
CCSv5 -- VID:PID 2047:0010 firmware v3
MSP430Flasher -- VID:PID 2047:0010 firmware v3

v2からv3へは自動で行われる。
v3からv2へはCCSv5のツールからダウングレードを行う。

参考リンク

『MSPDS Debugger Up- and Downgrade』