SlideShare a Scribd company logo
1 of 17
JTAGを使ってみよう!
Raspberry pi の設定について
2020年05月19日
サイエンスパーク株式会社
プラットフォーム開発部バグダス検証課
板垣 大地
• 名前:板垣 大地 (イタガキ ダイチ)
• サイエンスパーク株式会社 バグダス検証課に所属
• 約半年くらい前から、IoT機器のはんだ付け~
ファームウェア吸出し~解析をやらされる
自己紹介
1. ターゲット
2. ブートシーケンス
3. Dt-blob
4. Config.txt
5. JTAG PIN
6. J-Linkの接続
7. ターゲットの検出
8. まとめ
目次
1.ターゲット
Raspberry pi zero WH
Processor:BCM2835
Architecture:ARM1176JZF-S Classic Processors Arm11
特徴
• Trust zone対応
• Wireless LAN対応
• Bluetooth対応
• 価格が安い:2000~3000円程度
• 消費電力が少なめ:約150mA
• ×MiniHDMI→ディスプレイを使わない場合OK
今回は、Raspbian-2020-02-14 busterをインストール済み
https://developer.arm.com/ip-products/processors/classic-processors
boot sequence中のピン設定
1. Power-on
2. Setting by the bootrom
3. Setting by bootcode.bin
4. Setting by dt-blob.bin
5. Setting by the GPIO command in config.txt
6. Additional firmware pins (e.g. UARTS)
7. Kernel/Device Tree
4と5に注目 Device Tree blob file は、2014/7/14 から対応
Changing the default pin configuration
https://www.raspberrypi.org/documentation/configuration/pin-configuration.md
2.ブートシーケンス
Dt-blob.bin
→ 設定ファイルのバイナリ
• 最近のraspberry Piのイメージには、含まれていません。
• /boot に配置
• Dt-blob.bin example code
https://github.com/raspberrypi/firmware/blob/master/extra/dt-blob.dts
• NOOBSは、パーティションの切り方がraspbianと異なるので注意
NOTE: In the case of NOOBS installs, the DTB file should be placed on the recovery partition
instead.
Changing the default pin configuration
https://www.raspberrypi.org/documentation/configuration/pin-configuration.md
3.dt-blob
dt-blob.dts → dt-blob.bin
sudo apt install device-tree-compiler
・Raspbian Buster では、インストール済み
ソースからバイナリへ変換
sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob.dts
バイナリからソースへ変換
dtc -I dtb -O dts -o dt-blob.dts /boot/dt-blob.bin
Changing the default pin configuration
https://www.raspberrypi.org/documentation/configuration/pin-configuration.md
3.dt-blob
dt-blob.dts
/dts-v1/;
/ {
videocore {
pins_rev1 {
pin_config {
pin@default {
polarity = "active_high";
termination = "pull_down";
startup_state = "inactive";
function = "input";
}; // pin
マイコンのピン初期設定の記述
3.dt-blob
dt-blob.dts
前のページより続く
pin@p2 { function = "i2c1"; termination = "pull_up"; }; //
I2C 1 SDA
pin@p3 { function = "i2c1"; termination = "pull_up"; }; //
I2C 1 SCL
途中略
}; // pin_config
途中略
};
}; // pin_defines
}; // pins
};
};
2200行ぐらいあります。。。
3.dt-blob
/boot/config.txt
カメラ、GPIO、ディスプレイの設定、boot address等を
Rpiconfig で、config.txtの内容を設定することが多い。
dtparam=spi=on // Device Treeにパラメータを渡せる
# Enable ARMv8 on RPi3B 32bit → 64bit mode
arm_control=0x200
# Select Alt2 for GPIO pins 0 to 27 (for DPI24)
gpio=0-27=a2 // JTAGでは、 Alt4 のモードを使用する。
enable_jtag_gpio=1 // 左の記述のみで、ALT4に自動設定され
る。
PCのBIOSの設定に近いイメージ
4.config.txtの設定
5.JTAG Pin
https://www.raspberrypi.org/documentation/usage/gpio/README.md
Pin #
ALT4
Function Rsp
40pin
ARM
JTAG20
- Vref 1 1
- GND 14 4
GPIO22 ARM_TRST 15 3
GPIO26 ARM_TDI 37 5
GPIO27 ARM_TMS 13 7
GPIO25 ARM_TCK 22 9
GPIO23 ARM_RTCK 16 11
GPIO24 ARM_TDO 18 13
https://www.segger.com/products/debug-probes/j-link/technology/interface-description/
Raspberry pi
GPIO40pin
コネクタ勘合面より
J-Link コネクタピ
ン
https://www.raspberrypi.org/documentation/configuration/config-txt/gpio.md
6.J-Linkの接続
J-Link edu :
JTAG プローブ
Raspberry Pi Zero WH
7.ターゲットの検出
SEGGER J-Link Commander V6.60e (Compiled Jan 17 2020 17:26:41)
DLL version V6.60e, compiled Jan 17 2020 17:25:00
Connecting to J-Link via USB...O.K.
Firmware: J-Link V11 compiled Jan 7 2020 16:52:13
Hardware version: V11.00
S/N: XXXYYYZZZ
License(s): FlashBP, GDB
OEM: SEGGER-EDU
VTref=3.341V
J-Link Commanderを実行後のJ-Link起動画面
7.ターゲットの検出
Type "connect" to establish a target connection, '?' for help
J-Link>connect
Please specify device / core. <Default>: ARM11
Type '?' for selection dialog
Device>
Please specify target interface:
J) JTAG (Default)
TIF>
Device position in JTAG chain (IRPre,DRPre) <Default>: -1,-1 => Auto-
detect
JTAGConf>
Specify target interface speed [kHz]. <Default>: 4000 kHz
Speed>
Device "ARM11" selected.
J-Link設定
7.ターゲットの検出
Connecting to target via JTAG
TotalIRLen = 5, IRPrint = 0x01
JTAG chain detection found 1 devices:
#0 Id: 0x07B7617F, IRLen: 05, ARM1176 Core
ARM11 identified.
J-Link>
J-Link CPUの認識
ARM1176 Coreが認識された。
・ JTAG接続するには、マイコンのピン設定が必要。
・Raspberry Pi の/boot/config.txt で、各種ハードの
まとめ
SP2005-E04-01
ご清聴ありがとうございました

More Related Content

What's hot

mraa Introduction
mraa Introductionmraa Introduction
mraa IntroductionAraiInsde
 
高速シリアル通信を支える技術
高速シリアル通信を支える技術高速シリアル通信を支える技術
高速シリアル通信を支える技術Natsutani Minoru
 
FPGA startup 第一回 LT
FPGA startup 第一回 LTFPGA startup 第一回 LT
FPGA startup 第一回 LTYamato Kazuhiro
 
PYNQ祭りLT todotani
PYNQ祭りLT todotaniPYNQ祭りLT todotani
PYNQ祭りLT todotaniKenshi Kamiya
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングryos36
 
素晴らしきメガデモの世界
素晴らしきメガデモの世界素晴らしきメガデモの世界
素晴らしきメガデモの世界eagle0wl
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたTakefumi MIYOSHI
 
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Takefumi MIYOSHI
 
Getting Started with Jetson Nano
Getting Started with Jetson NanoGetting Started with Jetson Nano
Getting Started with Jetson NanoNVIDIA Japan
 
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うかソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うかなおき きしだ
 

What's hot (20)

Vyatta 201310
Vyatta 201310Vyatta 201310
Vyatta 201310
 
Fpgax 20130604
Fpgax 20130604Fpgax 20130604
Fpgax 20130604
 
mraa Introduction
mraa Introductionmraa Introduction
mraa Introduction
 
高速シリアル通信を支える技術
高速シリアル通信を支える技術高速シリアル通信を支える技術
高速シリアル通信を支える技術
 
FPGA startup 第一回 LT
FPGA startup 第一回 LTFPGA startup 第一回 LT
FPGA startup 第一回 LT
 
PYNQ祭りLT todotani
PYNQ祭りLT todotaniPYNQ祭りLT todotani
PYNQ祭りLT todotani
 
Riscv+fpga200606
Riscv+fpga200606Riscv+fpga200606
Riscv+fpga200606
 
Ptt391
Ptt391Ptt391
Ptt391
 
FPGA
FPGAFPGA
FPGA
 
Pynq祭り資料
Pynq祭り資料Pynq祭り資料
Pynq祭り資料
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミング
 
素晴らしきメガデモの世界
素晴らしきメガデモの世界素晴らしきメガデモの世界
素晴らしきメガデモの世界
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 
Fpga local 20130322
Fpga local 20130322Fpga local 20130322
Fpga local 20130322
 
Linux : PSCI
Linux : PSCILinux : PSCI
Linux : PSCI
 
ZynqMP勉強会
ZynqMP勉強会ZynqMP勉強会
ZynqMP勉強会
 
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)
 
Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 
Getting Started with Jetson Nano
Getting Started with Jetson NanoGetting Started with Jetson Nano
Getting Started with Jetson Nano
 
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うかソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うか
 

Similar to JTAGを使ってみよう

第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!
第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!
第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!NISHIMOTO Keisuke
 
レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9Knit Tiger
 
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会NVIDIA Japan
 
ACRiウェビナー_GIGABYTE様ご講演資料
ACRiウェビナー_GIGABYTE様ご講演資料ACRiウェビナー_GIGABYTE様ご講演資料
ACRiウェビナー_GIGABYTE様ご講演資料直久 住川
 
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...Takuma Usui
 
20191113 python raspberry_pi_gpio
20191113 python raspberry_pi_gpio20191113 python raspberry_pi_gpio
20191113 python raspberry_pi_gpioKioto Hirahara
 
Making remote controlled robot
Making remote controlled robotMaking remote controlled robot
Making remote controlled robotBatzorigt Rentsen
 
Microsoft Intelligent Edge Technologies
Microsoft Intelligent Edge TechnologiesMicrosoft Intelligent Edge Technologies
Microsoft Intelligent Edge TechnologiesTakeshi Fukuhara
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回Ryuichi Ueda
 
PF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGPF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGdaye001
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話yaegashi
 
Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上Ryo Sasaki
 
HTTP and 5G
HTTP and 5GHTTP and 5G
HTTP and 5Gdynamis
 
130522 rt講習会(説明用)
130522 rt講習会(説明用)130522 rt講習会(説明用)
130522 rt講習会(説明用)openrtm
 
2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmfAtomu Hidaka
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタl_b__
 
EC2 F1 Virtual JTAG
EC2 F1 Virtual JTAGEC2 F1 Virtual JTAG
EC2 F1 Virtual JTAGKenta IDA
 

Similar to JTAGを使ってみよう (20)

第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!
第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!
第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!
 
レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9
 
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会
 
ACRiウェビナー_GIGABYTE様ご講演資料
ACRiウェビナー_GIGABYTE様ご講演資料ACRiウェビナー_GIGABYTE様ご講演資料
ACRiウェビナー_GIGABYTE様ご講演資料
 
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
 
Reconf 201901
Reconf 201901Reconf 201901
Reconf 201901
 
20191113 python raspberry_pi_gpio
20191113 python raspberry_pi_gpio20191113 python raspberry_pi_gpio
20191113 python raspberry_pi_gpio
 
Smart tag firststep
Smart tag firststepSmart tag firststep
Smart tag firststep
 
Imaocande LT
Imaocande LTImaocande LT
Imaocande LT
 
Making remote controlled robot
Making remote controlled robotMaking remote controlled robot
Making remote controlled robot
 
Microsoft Intelligent Edge Technologies
Microsoft Intelligent Edge TechnologiesMicrosoft Intelligent Edge Technologies
Microsoft Intelligent Edge Technologies
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
 
PF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGPF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAG
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話
 
Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上
 
HTTP and 5G
HTTP and 5GHTTP and 5G
HTTP and 5G
 
130522 rt講習会(説明用)
130522 rt講習会(説明用)130522 rt講習会(説明用)
130522 rt講習会(説明用)
 
2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
 
EC2 F1 Virtual JTAG
EC2 F1 Virtual JTAGEC2 F1 Virtual JTAG
EC2 F1 Virtual JTAG
 

More from Study Group by SciencePark Corp.

WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)Study Group by SciencePark Corp.
 
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件Study Group by SciencePark Corp.
 
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能Study Group by SciencePark Corp.
 
ローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみたローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみたStudy Group by SciencePark Corp.
 
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法Study Group by SciencePark Corp.
 
06.超初心者向けセキュリティ入門(.netの解析と対策)
06.超初心者向けセキュリティ入門(.netの解析と対策)06.超初心者向けセキュリティ入門(.netの解析と対策)
06.超初心者向けセキュリティ入門(.netの解析と対策)Study Group by SciencePark Corp.
 
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまでSphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまでStudy Group by SciencePark Corp.
 
Azure DevTestLabsはデスクトップアプリ開発のテストを楽にしてくれる
Azure DevTestLabsはデスクトップアプリ開発のテストを楽にしてくれるAzure DevTestLabsはデスクトップアプリ開発のテストを楽にしてくれる
Azure DevTestLabsはデスクトップアプリ開発のテストを楽にしてくれるStudy Group by SciencePark Corp.
 

More from Study Group by SciencePark Corp. (20)

WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
 
YOLOとご一緒にPandasはいかがですか
YOLOとご一緒にPandasはいかがですかYOLOとご一緒にPandasはいかがですか
YOLOとご一緒にPandasはいかがですか
 
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
 
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
 
ドライバへのETWの埋め込み
ドライバへのETWの埋め込みドライバへのETWの埋め込み
ドライバへのETWの埋め込み
 
初心者向けデバイスドライバ講座(6)
初心者向けデバイスドライバ講座(6)初心者向けデバイスドライバ講座(6)
初心者向けデバイスドライバ講座(6)
 
ローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみたローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみた
 
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
 
02.超初心者向けセキュリティ入門(IoT)
02.超初心者向けセキュリティ入門(IoT)02.超初心者向けセキュリティ入門(IoT)
02.超初心者向けセキュリティ入門(IoT)
 
06.超初心者向けセキュリティ入門(.netの解析と対策)
06.超初心者向けセキュリティ入門(.netの解析と対策)06.超初心者向けセキュリティ入門(.netの解析と対策)
06.超初心者向けセキュリティ入門(.netの解析と対策)
 
Visual StudioでWixをビルドしてみた
Visual StudioでWixをビルドしてみたVisual StudioでWixをビルドしてみた
Visual StudioでWixをビルドしてみた
 
MacOS10.15への対応について
MacOS10.15への対応についてMacOS10.15への対応について
MacOS10.15への対応について
 
Teamsでのリモート勉強会の開き方
Teamsでのリモート勉強会の開き方Teamsでのリモート勉強会の開き方
Teamsでのリモート勉強会の開き方
 
リモートでの勉強会参加方法
リモートでの勉強会参加方法リモートでの勉強会参加方法
リモートでの勉強会参加方法
 
初心者向けデバイスドライバ講座 (2)
初心者向けデバイスドライバ講座 (2) 初心者向けデバイスドライバ講座 (2)
初心者向けデバイスドライバ講座 (2)
 
No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門
 
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまでSphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
 
初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)
 
01.超初心者向けセキュリティ入門
01.超初心者向けセキュリティ入門01.超初心者向けセキュリティ入門
01.超初心者向けセキュリティ入門
 
Azure DevTestLabsはデスクトップアプリ開発のテストを楽にしてくれる
Azure DevTestLabsはデスクトップアプリ開発のテストを楽にしてくれるAzure DevTestLabsはデスクトップアプリ開発のテストを楽にしてくれる
Azure DevTestLabsはデスクトップアプリ開発のテストを楽にしてくれる
 

JTAGを使ってみよう

Editor's Notes

  1. 1. ターゲットは、JTAG接続を試みるボード、CPUについて説明します。 2.ブートシーケンスでは、ピン設定の流れを説明します。 3.Dt-blob : Device Tree,   4.Config.txt で、JTAGピンの設定について説明をします。 5.JTAG PINで、ハードウェア上のピン設定について説明します。 6.J-Linkの接続で、JTAGプローブ J-Linkの接続の様子を写真を紹介いたします。 7.ターゲットの検出で、実際に接続した状態を示します。
  2. 今回は、Raspberry Pi Zero をターゲットにしました。  W:無線あり H:ヘッダーあり  ・ヘッダーがあると、ヘッダーがケースに干渉して、カメラ用のケースに入りません。  ・miniHDMIのケースの厚みで、コネクタによっては注意が必要です。  ・消費電流が少なく、組み込み向け  ・ARMv6 アーキテクチャだけど、Trust Zone(セキュリティ機能)対応しています。  ・Wifi、Bluetoothが使える。  ・VNC も動きます。。  ・デスクトップも使える。  ・ブラウザは、重たいです。
  3. 2.botrom.bin ブートローダ読み込み 3.bootcode.bin FATパーティションよりファームウェア読出し 4.dt-blob デバイスツリー読出し 5.config.tx GPIOなどの設定読出し JTAGでは、4と5に注目
  4. Dt-blob.bin デバイスツリー(設定ファイル)のバイナリ サンプルは、Git hubよりダウンロード可。今回は未使用。 NOOBSは、複数OSを選んでインストールできるようになっているため、 パーテイションの切り方がraspbianと異なる。
  5. ソース dts とバイナリ bin変換ができます。
  6. 参考までに、dt-blobの中を見てみると。。。 ピン設定情報の記述がほとんどです。 polarity = active_high,  極性 = active_high termination = "pull_down", 終端=プルダウン Startup_state = 起動時設定 = 無効  
  7. 行数も多く、ピン設定がほとんどなので、実際にこのファイルを設定することは、あまりないと思われます。
  8. Config.txtで、 ・GPIOの設定 ・グラフィックスの設定 ・カメラの設定 ・ブートの設定 等、多岐設定ができます。 また、デバイスツリーにパラメータを渡すことができます。 JTAGを使う場合、 enable_jtag_gpio=1の記述が必要です。
  9. JTAGピンについて、モードが、ALT4の設定を参照します。 GPIOの番号と実際のピンの番号は一致していないです。
  10. J-Link edu は、教育向けの使用のみで、商用開発には使用しないこと。 右下隅が、ケース入りのRaspberry PI Zero WHです。
  11. ・ARM1176JZF-S なので、ARM11 coreを選択 IRPre, DRPre IRPre  : TDI側から数えた、Instruction Resistorの全長。 ARM11では、5bit DRPre: TDI側から数えた、デバイスの数 Pre TDI側から、Post TDO側より。。。  JTAGポートに複数のデバイス(コア)が繋がっていると、細かく設定する必要あり。 今回は、1デバイスのみ。
  12. カーネルやデバイスツリーをリコンパイルする必要もなく、config.txtに、 オプション設定を1つ追加するだけで、JTAG接続できることがわかりました。 Raspberry Pi Zero と普通のRaspbianの組み合わせでのJTAG接続について、 Webに、あまり資料がなかったので、今回、ご紹介いたしました。