SlideShare a Scribd company logo
1 of 36
Download to read offline
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

FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
Takefumi MIYOSHI
 

What's hot (20)

機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
第9回ACRiウェビナー_セック/岩渕様ご講演資料
第9回ACRiウェビナー_セック/岩渕様ご講演資料第9回ACRiウェビナー_セック/岩渕様ご講演資料
第9回ACRiウェビナー_セック/岩渕様ご講演資料
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
 
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかRustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
 
ChatGPTの驚くべき対話能力 20230414APR.pdf
ChatGPTの驚くべき対話能力 20230414APR.pdfChatGPTの驚くべき対話能力 20230414APR.pdf
ChatGPTの驚くべき対話能力 20230414APR.pdf
 
Ncnn a universal and efficient neural network inference with vulkan
Ncnn  a universal and efficient neural network inference with vulkanNcnn  a universal and efficient neural network inference with vulkan
Ncnn a universal and efficient neural network inference with vulkan
 
GPU最適化入門
GPU最適化入門GPU最適化入門
GPU最適化入門
 
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
Microsemi FPGA はいいぞ,FPGAの紹介とおさそいMicrosemi FPGA はいいぞ,FPGAの紹介とおさそい
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
【続】OpenXRでHoloLensアプリを作る
【続】OpenXRでHoloLensアプリを作る【続】OpenXRでHoloLensアプリを作る
【続】OpenXRでHoloLensアプリを作る
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
Microblaze loader
Microblaze loaderMicroblaze loader
Microblaze loader
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
 
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
 
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
 
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
 
180215 Ponanzaにおける強化学習、ディープラーニングとその先
180215 Ponanzaにおける強化学習、ディープラーニングとその先180215 Ponanzaにおける強化学習、ディープラーニングとその先
180215 Ponanzaにおける強化学習、ディープラーニングとその先
 

FPGAでCortex-M1を味見する