Download
Magazine
Develop
Account
Download
Magazine
Develop
Login
Forgot Account/Password
Create Account
Language
Help
Language
Help
×
Login
Login Name
Password
×
Forgot Account/Password
Category:
Software
People
PersonalForge
Magazine
Wiki
Search
OSDN
>
Find Software
>
PT1の解析、ドライバの作成
>
Wiki
>
DMA
PT1の解析、ドライバの作成
Description
Project Summary
Developer Dashboard
Web Page
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
History
Downloads
List of Releases
Stats
Source Code
Code Repository list
Subversion
View Repository
Ticket
Ticket List
Milestone List
Type List
Component List
List of frequently used tickets/RSS
Submit New Ticket
Documents
FrontPage
Title index
Recent changes
Communication
Forums
List of Forums
Help (1)
Open Discussion (3)
Mailing Lists
list of ML
News
edit
|
Title Index
|
Recent Changes
|
Showing Page History #30862
Showing Page History #31334
DMAバッファ
受信用DMAバッファ 16個 (=VIRTUAL_COUNT)
バッファサイズ 4096(ページサイズ?) * 511(PT::Device::BUFFER_PAGE_COUNT) * 4(=VIRTUAL_SIZE)
連続性 4096Byte単位
内容 チューナの受信内容(マイクロパケット)がPT1によって延々と書き込まれる。
mDevice->
GetBufferPtr
(virtualIndex, &voidPtr)でvirtualIndex番目(0-)のバッファの先頭アドレスが取得可能、 かつSDK内でこのバッファに対する編集は行なわれていない。
送信用DMAバッファ 1個
バッファサイズ 4096(ページサイズ?) * 64(=VIRTUAL_COUNT*VIRTUAL_SIZE)
連続性 4096Byte単位
内容 受信/送信DMAバッファを構成する4096Byte単位のページの先頭アドレス全て
DMA開始直前に0x14にこのバッファの(先頭アドレス>>12)が書き込まれる。
各4096Byte単位のページの先頭4Byteに、次のページの(先頭アドレス>>12)が書かれている。
最後のページの先頭4Byteには最初のページの(先頭アドレス>>12)が書かれていてリングになっている。
各ページの残りには受信用DMAバッファ全体を64(=VIRTUAL_COUNT*VIRTUAL_SIZE)に分割した、 それぞれを構成するページの(先頭アドレス>>12)が順番に書かれていて、 残りの部分は0x00000000になっている。
※サイズはSample.exeで使用されている値。
DMA開始
DMAバッファ確保
上記の形でバッファを確保する。
送信DMAバッファに上記の形でアドレスを書く。
受信DMAバッファの各4096Byteのブロックの末尾4Byteを0x00000000で初期化する。
PT1から4096Byte単位でデータが書き込まれるので、末尾が0以外の値になることで受信完了を検知する。
転送カウンタをリセットする。
0x00に0x00000010を書き込む。
64回転送カウンタをインクリメントする。64=VIRTUAL_COUNT*VIRTUAL_SIZE
0x00に0x00000020を書き込む。
転送開始指示
0x14に送信用DMAバッファの(先頭アドレス>>12)を書き込む。
0x00に0x0c000040を書き込む。
DMA終了
転送終了指示
0x00に0x08080000を書き込む。
転送終了待ち
0x00から4Byteを読み込み、下から7ビット目(1 << 6)が0になるまで待機する。
1ms間隔で10回確認する。