SlideShare a Scribd company logo
RTLを語る会(15)
~VERSAL友の会(仮)~
FPGAでCortex-M1を味見する
2018/11/24(Sat.) だいすけ@morittyo
ARMがCortex-Mを無償公開
• XDF2018でCortex-M1/M3を無償提供との発表
• Cortex-A5も予定されている模様
• こちらはFPGAではなくASIC向けなので忘れて良し
• まあリソース的にも意味ないか
~中略~
因みにXilinx以外は?
• ACTEL改めMicrosemiも無料みたい
• 手元にあるIGLOO nano評価ボードで
は容量的に無理そう。いやぁ残念だ…
• ALTERAはCycloneIII向けにOpenCore
Plusライセンスで提供していたらしい
• 評価キット$2,500(当時)
もうやる気なさそう。。。
• Latticeはまったく情報なし
• らてぃすにはMico32があるから…!
Arm Cortex-M1 DesignStart FPGA-Xilinx edition
• ARM Developerのページに
ドキュメント
• Arty-S7(Spartan7)、
Arty-A7(Artix7)用のプロ
ジェクトファイルが公開済
Artix-7 35T Arty (Arty-A7)
FPGA評価キット
• 新人とかに4TC握らせてセミナーに行
かせると貰えるやつ
• 会社に転がってますよね(確信)
• 33Kロジックセル
• 買っても$99
では…中を見ていきますか
IP Integrator (全体構成)
• M1コア自体はAXIバスのクチが1個と
割り込み系ぐらい
• 気になるdaplink_if_0の中身…
Cortex-M1(1.1) の端子と設定
• それほど設定する項目はなし
• CFGITCMEN端子はブートに絡むので要チェック
daplink_if_0階層
• DAPLink_to_Arty_shieldという
謎のIP
• なぜ親の仇の様にSPIを置く
のか始めは意味不明だった
• SWD(Serial Wire Debug) I/Fをシールド端子に割り
振っているだけだった
• シールド基板側にFlashROMとSDカードが乗ってい
る模様
• FlashROMをXIP(execute in place)モードでも使いたい
が為にQSPIモジュールが2個乗っている
DAPLink_to_Arty_shield
DAPLink_fittedn
uart_rxd_axi
uart_rxd_arty
(UART_RXD) shield_38
uart_txd_axi
uart_txd_arty
0
1
"1"0
1
0
1 "0"
SWRSTn(SWRSTn) shield_39
SWDOEN
(SWDIO) shield_40 SWDO
SWCLK
shield_34
(SWCLK) shield_41
(UART_TXD) shield_37
SWDI
CortexM1
SWCLKTCK
SWDOEN
SWDITMS
SWDO
aux_reset_in
Clocks
and
Resets
IRQ[31]
CFGITCMEN[0]
UARTLite
USB UART
SPI
shield_30~33
,35~36
shield_26~29
QSPI XIP
QSPI
0
1
GPIO
qspi_sel
QSPI Flash
SD Card
QSPI_XIP
QSPI
SPI
IO26
IO41
シールド基板(V2C-DAPLink基板)
• M1コアのInstructionMemoryで設定したメ
モリでブート
CFGITCMEN[0]=1 (シールド無し)
DAPLink_fittedn
uart_rxd_axi
uart_rxd_arty
(UART_RXD) shield_38
uart_txd_axi
uart_txd_arty
0
1
"1"0
1
0
1 "0"
SWRSTn(SWRSTn) shield_39
SWDOEN
(SWDIO) shield_40 SWDO
SWCLK
shield_34
(SWCLK) shield_41
(UART_TXD) shield_37
SWDI
CortexM1
SWCLKTCK
SWDOEN
SWDITMS
SWDO
aux_reset_in
Clocks
and
Resets
IRQ[31]
CFGITCMEN[0]
UARTLite
USB UART
"1"
SPI
shield_30~33
,35~36
shield_26~29
QSPI XIP
QSPI
0
1
GPIO
qspi_sel
QSPI Flash
SD Card
QSPI_XIP
QSPI
SPI
bram_a7
.hex
• シールド基板上のFlashROMをXIPとみなし
てブート
CFGITCMEN[0]=0 (シールドあり)
DAPLink_fittedn
uart_rxd_axi
uart_rxd_arty
(UART_RXD) shield_38
uart_txd_axi
uart_txd_arty
0
1
"1"0
1
0
1 "0"
SWRSTn(SWRSTn) shield_39
SWDOEN
(SWDIO) shield_40 SWDO
SWCLK
shield_34
(SWCLK) shield_41
(UART_TXD) shield_37
SWDI
CortexM1
SWCLKTCK
SWDOEN
SWDITMS
SWDO
aux_reset_in
Clocks
and
Resets
IRQ[31]
CFGITCMEN[0]
UARTLite
USB UART
SPI
shield_30~33
,35~36
shield_26~29
QSPI XIP
QSPI
0
1
GPIO
qspi_sel
QSPI Flash
SD Card
QSPI_XIP
QSPI
SPI
メモリマップ
FPGA内部RAM(8KB)
ARTY-A7オンボードFlasgh
リソース使用率
Cortex_M1(黄色)
書込み&動作確認
• 仮想COMポートからメッセージ出力
• スライドSWで緑LEDのON/OFF
• PushSWでフルカラーLEDの色変更
と、ここまでは良し
なるほど、使えそうじゃないか…
MicroBlaze/NiosIIの採用を検討する際にありがちな事
•諸葛亮いわく、
ソフト担当がXilinx EDKインストールとか断固拒否。何GB食うんですか…。あとベンダーロック滅びれ。
MCSファイル?知るか。普通開発時はSDカードブートがデフォでしょ?FPGAなんてやめてi.MXにしま
しょうよ。てか、ちょっとしたソフトならハード担当のほうでちょちょっとやっちゃってください。
⇒ソフト開発の手順も確認しておきましょうか…
ソフトウェア開発環境
• Keil MDK-ARM Version5.26(現在)
• IDE開発環境は “μVision5”と呼ばれる
• もともとKeil社が開発していたが、2005年
にARMが買収
• Quick Link : http://www2.keil.com/mdk5/
• 評価版(MDK-Lite)は生成コード32kバイト
迄、.elfファイル作成不可の機能制限あり
BSP(board support package)作成
先にFPGA側でBSP作らないといけません。
• Vivadoから
File > Export > Export Hardware
→ m1_for_arty_a7_wrapper.hdf生成
• Xilinx SDKから
File > New > Board Support Package
• standalone v6.6選択
• stdin,stdoutのvalueを一回noneに確定させ
てから再度axi_uartlite_0を選択
※SDK側の既知バグとのこと
※BSP生成に失敗した人
• Vivado 2018.2以降を使用する
• SDKのリポジトリに以下を追加
• /vivado/arm_sw_repository
CortexM1のBSP作成時に必要なstandalone
v6.6のソースがここにあり、リポジトリ追加し
ないとBSPが作成できない!
MDK-ARMでサンプルコードのコンパイル
• 以下のファイルを手動でコピーする必要あり
• コピー元:
/vivado/Arm_sw_repository/CortexM1/bsp/standalone_v6_6/src/arm/cortexm1/armcc /xpseudo_asm_rvct.{c|h}
• コピー先:
/software/m1_for_arty_a7/sdk_workspace/standalone_bsp_0/CORTEX_M1_0/include/
• MDK-ARMを起動、ビルド実行
• /software/m1_for_arty_a7/Build_Keil/m1_for_arty_a7.uvprojx
• fromelfコマンドが見つからないといわれたので環境変数PATHに追加するなど
デバッガの設定変更
mbed CMSIS-DAPに変更
FlashROMの設定ファイルコピー
以下のファイルをC:/Keil_v5/ARM/Flashにコピーする
• /software/flash_downloader/S25FL128S_V2C.FLM
LOAD実行するとタイムアウトで失敗するので、何かま
だ設定が足りないかも
V2C-DAPLink基板(ホンモノ)ならイケるのか?
※回路図がまだ拾えないのもありよくわからず
デバッグ環境
まずは用語確認から
• CMSIS-DAP
• マイコンへのデバッグアクセス方法をARMが標準化し公開したプロトコル
• PC側はUSB接続、マイコン側はJTAG/SWD接続
• Flash書込み用マスストレージ、仮想COMポート、HIDデバッグポート
• DAPLink
• CMSYS-DAPを実装したもの
• github(https://github.com/ARMmbed/DAPLink)で公開
DAPLinkを使ったデバッグ
• V2C-DAPLink基板があれば問題なかったが、入手できておらず
⇒じゃあ適当なマイコン基板でなんとかしてみる
DAPLink マイコン(ARM)
JTAG/SWD
UART
FlashROM
USB2.0
PC
デバッガ部分
LPCXpressp1549
• 主役はLPC1549だが、今回は使わない
• mbed対応のためにLPC4322が搭載
• LPC4322にDAPLinkのFWを書き込む
• https://os.mbed.com/teams/NXP/wiki/Updating-
LPCXpresso-firmware
• JP1 : Short
LPC1549へのSWCLKとRESETを0固定
• JP2:1-2
LPC1549からのSWDがP1コネクタに(も)出力
LPC
1549
LPC
4322
USB
DAPLink
SWD/JTAG
JP1
JP2
P1
Debug
Arty-A7とLPCXpresso1549の接続
DAPLink_fittedn
uart_rxd_axi
uart_rxd_arty
(UART_RXD) shield_38
uart_txd_axi
uart_txd_arty
0
1
"1"0
1
0
1 "0"
SWRSTn(SWRSTn) shield_39
SWDOEN
(SWDIO) shield_40 SWDO
SWCLK
shield_34
(SWCLK) shield_41
(UART_TXD) shield_37
SWDI
ARM-M1
SWCLKTCK
SWDOEN
SWDITMS
SWDO
aux_reset_in
Clocks
and
Resets
IRQ[31]
CFGITCNEN[0]
UARTLite
USB UART
LPC4322
microUSB
USB0
TCK_SWCLK
JTAG_TDI
TDO_SWO
TMS_SWDIO
TMS_SWDIO_TXEN
JTAG_RESET
JTAG_RESET_TXEN
DEBUG
PIN
P1
LPC1549
SWDIO/TMS
SWCLK/TCK
nRESET
PIO1_1
JP1
0
0
JP1
4
2
10
RST
SWDIO
SWCLK
SWO
6
1
3,5
Arty-A7とLPCXpresso1549の接続
デバッグ実行
デバッガ動作OK!
修正した内容が反映されている
さらに…
欲がでてきますね
オシャレな開発環境があれば…
JC「あの高校の制服可愛いから行きたい~(はあと)」
…みたいな感じで
ソフト屋「あのイマドキな開発環境ならデプロイしてあ・げ・る!(はあと)」
みたいなのが開発環境にも必要(確信)
mbed (えんべっど)
• 評価ボードの箱に☐ ☐マークがついてるの見たことある
• トラ技やQiitaで見たことある
• 本も出てる(たくさん?)
• “インターネット電子工作”というパワーワード
mbed is 何
• ARM社が主導する、IoT向けのプラットフォーム
• ARM自身がやっているなら対応速度や継続性は安心できそう
• ブラウザによるクラウド開発環境(デバッグは出来ない)
• ノマド(死語)できる
• ドラッグ&ドロップ書込み
• オフライン開発環境
• 仕事となるとクラウドだけというわけにもいかない
• デバッグ環境
• CMSIS-DAP対応
→ 情報やソースコードがGithubなどに公開されている
ブラウザによるクラウド開発環境
• WEBブラウザベース開発
• ARM純正で安心
• 開発環境を整えなくてよい
(サンデープログラマーには有難い)
• 情報が豊富(たぶん)
• 結構な数のARMマイコンボードをサポート
• コンポーネントライブラリやAPIも豊富そう
ドラッグ&ドロップ書込み
• USB接続してbinファイルをD&D
• ”MBED”ドライブに放り込めばOK
• デバッグ用に仮想シリアル、SWD/JTAGも
付いてくる
• binファイルをD&Dすれば書込みOK
• 書込み失敗するとここにFAIL.txtが作られる
TIME OUT

More Related Content

What's hot

DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
RCCSRENKEI
 

What's hot (20)

Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)
 
ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料
 
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリームVivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
 
llvm basic porting for risc v
llvm basic porting for risc vllvm basic porting for risc v
llvm basic porting for risc v
 
Vivado hls勉強会3(axi4 lite slave)
Vivado hls勉強会3(axi4 lite slave)Vivado hls勉強会3(axi4 lite slave)
Vivado hls勉強会3(axi4 lite slave)
 
RISC-Vの可能性
RISC-Vの可能性RISC-Vの可能性
RISC-Vの可能性
 
Zynq mp勉強会資料
Zynq mp勉強会資料Zynq mp勉強会資料
Zynq mp勉強会資料
 
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
 
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
 
ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介
 
FPGAスタートアップ資料
FPGAスタートアップ資料FPGAスタートアップ資料
FPGAスタートアップ資料
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
VPP for Stateless SRv6/GTP-U Translation
VPP for Stateless SRv6/GTP-U TranslationVPP for Stateless SRv6/GTP-U Translation
VPP for Stateless SRv6/GTP-U Translation
 
Hopper アーキテクチャで、変わること、変わらないこと
Hopper アーキテクチャで、変わること、変わらないことHopper アーキテクチャで、変わること、変わらないこと
Hopper アーキテクチャで、変わること、変わらないこと
 
高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応
 
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
 
PCIe
PCIePCIe
PCIe
 

Recently uploaded

ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
miyp
 

Recently uploaded (8)

【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
 
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
 
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
 
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
 
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
 

FPGAでCortex-M1を味見する