Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
KOF2016 NetBSD dreamcast IDE HDD
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Izumi Tsutsui
November 12, 2016
Programming
2.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
KOF2016 NetBSD dreamcast IDE HDD
KOF2016のNetBSDセミナーで発表した『NetBSD/dreamcast IDE HDD接続 ふたたび』のスライドです。OSC2016東京秋のバージョンからちょっと更新しています
Izumi Tsutsui
November 12, 2016
More Decks by Izumi Tsutsui
See All by Izumi Tsutsui
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
160
CPUクロック20MHz RAM 16MBの LUNAで 30秒アニメGIF再生デモ / OSC2026Kyoto
tsutsui
0
150
OSC東京でいただいた UIAPduinoマイコンボードで PSG演奏と液晶ドッド絵デモ / osc2026Kagawa
tsutsui
0
440
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを ブラッシュアップしました / osc2026Tokyo-spring
tsutsui
1
120
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
tsutsui
1
220
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
400
今年もNetBSD環境を使って PC-6001のPSG演奏デモを作った話 / KOF2025
tsutsui
0
400
NetBSD/luna68kの歴史解説と、LUNAでアニメGIF再生デモと ついでにPC-6001デモも作った話 / OSC2025Kyoto
tsutsui
0
200
NetBSDの解説と NetBSD/luna68kの歴史と ついでにPC-6001展示 / OSC2025Tokyo-spring
tsutsui
0
270
Other Decks in Programming
See All in Programming
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
Java 27新機能 / Java 27 new features
kishida
2
190
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
150
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
410
Webの地図
yosuke_furukawa
PRO
6
5k
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
260
速習iPhone Duo対応
yuukiw00w
2
930
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
330
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.2k
Intent as Code
shoppingjaws
6
1.1k
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
590
Featured
See All Featured
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.3k
Rails Girls Zürich Keynote
gr2m
96
14k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
30 Presentation Tips
portentint
PRO
1
410
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Crafting Experiences
bethany
1
360
Into the Great Unknown - MozCon
thekraken
41
2.7k
The World Runs on Bad Software
bkeepers
PRO
72
12k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
We Are The Robots
honzajavorek
0
380
Transcript
NetBSD/dreamcast IDE HDD接続 ふたたび KOF 2016 KOF では 7年ぶりの展示です Izumi
Tsutsui
[email protected]
Twitter: @tsutsuii OSC東京版からちょっと更新
NetBSD/dreamcast 2000年 12月に本家ツリーにマージ http://mail-index.netbsd.org/source-changes/2000/12/11/0081.html
DC IDE HDD Interface http://homepages.compuserve.de/bITmASTER32/dc/dc-ide.html 2000年にはすでにトライしている人が
IDE I/F 概要 PC/AT用 回路 • コントローラがドライブ側にある • データバス、レジスタ選択、割り込み
の信号をつなぐだけで動く ⇒簡単なロジック回路だけで構成可能
2001年 3月 4日 「NetBSD/dreamcast を入れた」 というとある後輩に向かってメール (前ページのURLを示して) 「IDE-HDDのインターフェースを作って NetBSDのドライバを書くとかどう?」
2001年 3月 24日 後輩からの返信メール 「というわけで、作ってみました」 「DEVICE IDENTIFY の結果です」
( ゚д゚)
2001年 3月 27日 後輩からの返信メール 「READに成功しました」
2001年 5月 1日 後輩からの返信メール 「WRITEも動きました」
2001年 6月 某 名大祭 元祖(?) 謎マシン展示
2001年 NeBSD BoF http://www.jp.netbsd.org/ja/JP/JNUG/event/20010630BOF/dcwdc/mgp00001.html
2001年 12月 ISA NE2000と謎マシンの関係
2002年 6月 CPLDバージョン登場
「俺も遊ぶから もう一台作って」 と横暴な先輩モードを発動
拡張バス割り込み探索 ハックしよう! • 適当な割り込みハンドラを書く • ハンドラに printf を入れる •
機能が不明なピンにプルアップ抵抗を 順に当てていく • 触った瞬間にカーネルが反応したら そのピンが割り込み端子? ⇒13番ピンがそれっぽい?
2002年 7月 割り込み駆動で動作 NetBSD 1.6B (DIGNITY) #30: Sat Jul
13 19:43:13 JST 2002 tsutsui@mirage:/home/spool/src/sys/arch/dreamcast/compile/DIGNITY SEGA Dreamcast : dppbus0 at shb0 ne0 at dppbus0 port 0x0a00 irq 0x0008 ne0: NE2000 (RTL8019) Ethernet ne0: Ethernet address 00:00:f4:69:34:49 ne0: 10base2, 10baseT, 10baseT-FDX, auto, default [0x00 0x10] auto wdc0 at dppbus0 port 0x1000 irq 0x0010 wd0 at wdc0 channel 0 drive 0: <QUANTUM FIREBALL1280A> wd0: drive supports 8-sector PIO transfers, LBA addressing wd0: 1222 MB, 2484 cyl, 16 head, 63 sec, 512 bytes/sect x 2503872 sectors wd0: drive supports PIO mode 4, DMA mode 2 : # dd if=/dev/rwd0a of=/dev/null bs=64k 1031+1 records in 1031+1 records out 67576320 bytes transferred in 61.470 secs (1099338 bytes/sec)
2002年当時は OSC も KOF も無くて 「謎マシンの展示」 という概念自体が 無かったんですよね…
時は流れて 2005年10月
KOF2005 @大阪産業創造館 https://k-of.jp/2005/
謎マシン展示@Kansai http://www.soum.co.jp/~jun/KOF2010.pdf EWS4800/360AD NetBSD/ews4800mips マージ直前展示 ドリキャス キーボードとマウス ドリキャス 本体はこのへん ドリキャス接続
IDE-HDD と NE2000 画面は NetBSD/dreamcast のXサーバー
NetBSD/dreamcast で Xサーバーを動かして NetBSD/ews4800mips のシリアルコンソール端末 にしてました 誰にもわからなさ過ぎる展示でしたね……
さらに時は過ぎ KOF2009
MPlayer on dreamcast http://www.soum.co.jp/~jun/KOF2010.pdf
謎マシン展示でも マニアックすぎるネタは 気づいてもらえない という反省 (´・ω・`)
2010年に入って https://twitter.com/tsutsuii/status/16513319813
8年も経つと 自作の基板は いろいろ劣化が… ISAスロット抜き差しがきつかった模様
デバッグを試みるも…… NetBSD/dreamcast カーネル起動方法 • CD-Rにカーネルを焼いて起動 ⇒カーネル作るたびに焼くとかやっとれん • NetBSDカーネルが起動した状態で NFS等のファイルシステムから
カーネルを読み込み ⇒NE2000もダメ、BbAもつなげられない
SDカード接続等を試みるも、 結局挫折したまま5年 https://twitter.com/tsutsuii/status/669927653701390336
2016年2月
検索でこんなページが http://www.dc-swat.ru/blog/hardware/874.html
衝撃の事実 • ドリキャスの GD-ROMは 実は IDE/ATAPI • IDE が接続可能なランドが基板上にある
• GD-ROM が master で、配線だけすれば slave 設定の HDD が直接つながる!? ATA on Dreamcast http://www.dc-swat.ru/blog/hardware/874.html
本当に ATA なら、 NetBSDだったら ちょっとドライバ書けば 一瞬で動くんじゃ……
とりあえず 工作してみる
シールドその他でガードが固い どこから配線するか
わりと豪快な解決策 実施例を見てみる https://fnhack.wordpress.com/2014/10/16/soldering-to-the-motherboard/
板金加工は 大変なので 手抜きを 考える
このへんに すきまがある?
電源コネクタ横も 一応すきまがある
とりあえずボード取り外し
IDEケーブル準備
はんだめっき
ランド確認
黙々と配線
さらに配線
配線整頓
すきまから引き出し
さらに引き出し
エッジ注意
電源基板取り付け
で、ドライバ作成開始
https://twitter.com/tsutsuii/status/706303710536728577
https://twitter.com/tsutsuii/status/706305209673211904
https://twitter.com/tsutsuii/status/706317376434757632
https://twitter.com/tsutsuii/status/706322812412100608
https://twitter.com/tsutsuii/status/706323002904850434
https://twitter.com/tsutsuii/status/706323584365436928
https://twitter.com/tsutsuii/status/706339280436596736
https://twitter.com/tsutsuii/status/706350693385252864
https://twitter.com/tsutsuii/status/706388037987487744
https://twitter.com/tsutsuii/status/706396799968215040
https://twitter.com/tsutsuii/status/706397480439533568
https://twitter.com/tsutsuii/status/706398442801623040
https://twitter.com/tsutsuii/status/706411492216705024 https://gist.github.com/tsutsui/713a2cb010435effad08
配線工作:2時間 デバッグ:6時間 やっぱり一瞬でした
どこがおかしいのかわからない • ドライバが悪いのかハード工作が悪いのか • 最初テストに使った SATA-IDE 変換が Slave 設定ではちゃんと動かないという罠
• NetBSDのドライバはコピペだけでも動く ⇒設計をサボって実装漏れとかやらかす • デバドラでやらかすとデバッガが使えない ⇒いきなりリブートしたりする ハマりポイント
CFスレーブ動作テスト
OSC展示用 適当加工(展示2日前)
カッターナイフ工作
でろーん
というわけで展示物完成
GD-ROMドライバ • HDD用に MI ATA ドライバを使ったので GD-ROM も MI
ATAPI ドライバを使って 書き直す必要がある • が、GD-ROMは微妙に ATAPI 準拠してない ……本題ではないせいで気合い入らず保留中 今後の課題
ATAPI とは • IDE はもともとハードディスク用の規格 ⇒セクタ単位の READ, WRITE 転送のみ
• CD-ROM だと他にもいろんな操作が必要 ⇒音楽演奏 とか Eject とか (☝ ՞ ਊ )☝ ՞ ウイーン ➢ HDD用の転送のしくみはそのままに、 各種コマンドも送れるようにした仕様が ATAPI の規格 GD-ROM と ATAPI
ATA と ATAPI IDEバス 物理ドライブ マスター HDD スレーブ CD-ROM ディスクドライバ
CD-ROMドライバ ATA 層ドライバ: ATAデータ転送・割り込み処理 ATAPI層ドライバ: コマンドパケット処理 ATAコマンド・データ転送 データ転送要求 データ転送要求 各種アクセス
ATA関連ドライバ dmesg wdc0 at isa0 port 0x1f0 irq 14 atabus0
at wdc0 wd0 at atabus0 drive 0: <HDD NAME> atapibus0 at atabus0: 2 targets cd0 at atapibus0 drive 1: <CD-ROM NAME>
データ転送時のバス状態 ドライブ 選択 ATA HDD アクセス ATA コマンド データ転送 1,2…
ドライブ 選択 ATAPI アクセス ATA コマンド データ転送 データ 転送 コマンド パケット HDDにはコマンドパケットも データ転送に見える
データ転送 データ 転送 コマンド パケット GD-ROM の困った点 ドライブ 選択 ATA
コマンド ATAPI黎明期の混乱? • リセット動作が ATA標準と違う? • AUXレジスタの RST を叩いてもダメ? • ATAPI_SOFT_RESETコマンドが必要? • コマンドパケット転送で割り込みが入らず データ転送完了時のみ割り込みが入る ➔MI ATA/ATAPI ドライバの修正から必要
•HDDがあると結構使える感じです •標準ハードだと一瞬で動きます •規格から外れたハードを作ると ドライバ書く人が泣きます •ハード工作してドライバ書いての 自作自演楽しいです まとめ