レトロマイコンZ80ボードの構想(その10)CP/M80 BIOS検討2 [Z80]
ebayで注文していたブレッドボード用接続ケーブルが届いたので実験を再開しました。
届いたケーブルはメッチャ安いのですが、ブレッドボードに差し込むピンにボンドが付いた状態だったので接触不良を防ぐために1本ずつピンセットで挟んでボンドを取り除きながらの接続作業でした^^;;
自分で接続ケーブルを作るよりは全然楽なのですがさすがに安いだけあって品質が・・・
最初にやりたかった実験は NMI や RESET 以外で HALT 状態を抜ける実験です。
HALT状態では内部でNOPを実行しているということがマニュアルに書いてあったので、アドレスはインクリメントせずにHALTをNOPに置き換えてフェッチを繰り返しているものと想像していました。
であればバスをPIC制御にし、HALTコードをNOPに変更後、バスを開放すれば、Z80は何事もなかったようにHALT状態を抜けるのではないかと考えたわけです。
実験のソースとロジアナ波形は以下のとおりです。
Z80の動作としては0000hのアドレスのHALTコード(76H)でHALT状態になった後は0001h番地のNOPコード(00h)をフェッチしています。
従ってNOP書換えによるHALT脱出はできないという結論になりました。^^;
ロジアナ波形でresetがhighになった後RD/がlowの部分で命令コードをフェッチしています。
RD/の最初のlowでは(AD1,AD0)=(0,0)でアドレス0000hのコード(76h)をフェッチしています。(なので(D1,D0)=(1,0))
その後HALT状態(HALT/がlowに遷移)し、(ad1,ad0)=(0,1)なので0001hのメモリのコード(00h:NOP)をフェッチする動作が繰り返されます。
マーカーはRD/がアクティブになってからメモリからデータが出てくるまでの時間を示していて62.5nsでした。(この時ロジアナのサンプリング周波数は32MHzなので解像度は30ns程度です)
使用しているメモリはHM628128D(DIPタイプ、128KBytes)でアクセスタイムは70nsなのでアクセスタイムにはあまり余裕はありませんが問題なく動作しているようです。
Z80はPIC側から供給している16MHzで動作しています。(Z80は20MHz対応のチップを使用)
NOP書換えではHALTから抜けれないことが判ったのでBIOSではNMIかRESETを使用することになりそうですが、PIC側で使用するI/O数を節約するために RESET方式にしようかと考えています(NMI方式にした場合でもRESETはPICから制御したいからねぇ)
また、BUSREQ/はマシンサイクルの最後でチェックされ(Z80のマニュアルより:BUSREQ is always recognized at the end of the current machine cycle.)NMIよりも優先されるのでBUSACK/のチェックは省略可能と考えています。(SDカードの装着信号?を入力しておかないと起動後に抜き差しできなくなるのでI/O節約検討中なのですw)
HALT実験ソース(picle言語)
お遊びでZ80の全メモリをNOP(00h)に書き換えるプログラムを動かしてみました。
このコードなら今でもそらで機械語を言えます ^^
ロジアナ波形を見ると左側1/3くらいからデータバスがlowに貼り付き、WR/はhighに貼り付きます。
Z80は全メモリNOPコードの中、アドレス(PC)を進めるのみの動作になります。
昔のマイコンはメモリ空間上にVRAMがあったのでVRAM上での命令実行時に画面にノイズが載ってZ80の走行状態を目視できたんだよねぇw
全メモリクリアソース(picle言語)
★2018/02/28 変更 メモリクリア部を1byte短縮w
[TOP] [ 前へ ] 連載記事 [ 次へ ]
届いたケーブルはメッチャ安いのですが、ブレッドボードに差し込むピンにボンドが付いた状態だったので接触不良を防ぐために1本ずつピンセットで挟んでボンドを取り除きながらの接続作業でした^^;;
自分で接続ケーブルを作るよりは全然楽なのですがさすがに安いだけあって品質が・・・
最初にやりたかった実験は NMI や RESET 以外で HALT 状態を抜ける実験です。
HALT状態では内部でNOPを実行しているということがマニュアルに書いてあったので、アドレスはインクリメントせずにHALTをNOPに置き換えてフェッチを繰り返しているものと想像していました。
であればバスをPIC制御にし、HALTコードをNOPに変更後、バスを開放すれば、Z80は何事もなかったようにHALT状態を抜けるのではないかと考えたわけです。
実験のソースとロジアナ波形は以下のとおりです。
Z80の動作としては0000hのアドレスのHALTコード(76H)でHALT状態になった後は0001h番地のNOPコード(00h)をフェッチしています。
従ってNOP書換えによるHALT脱出はできないという結論になりました。^^;
ロジアナ波形でresetがhighになった後RD/がlowの部分で命令コードをフェッチしています。
RD/の最初のlowでは(AD1,AD0)=(0,0)でアドレス0000hのコード(76h)をフェッチしています。(なので(D1,D0)=(1,0))
その後HALT状態(HALT/がlowに遷移)し、(ad1,ad0)=(0,1)なので0001hのメモリのコード(00h:NOP)をフェッチする動作が繰り返されます。
マーカーはRD/がアクティブになってからメモリからデータが出てくるまでの時間を示していて62.5nsでした。(この時ロジアナのサンプリング周波数は32MHzなので解像度は30ns程度です)
使用しているメモリはHM628128D(DIPタイプ、128KBytes)でアクセスタイムは70nsなのでアクセスタイムにはあまり余裕はありませんが問題なく動作しているようです。
Z80はPIC側から供給している16MHzで動作しています。(Z80は20MHz対応のチップを使用)
NOP書換えではHALTから抜けれないことが判ったのでBIOSではNMIかRESETを使用することになりそうですが、PIC側で使用するI/O数を節約するために RESET方式にしようかと考えています(NMI方式にした場合でもRESETはPICから制御したいからねぇ)
また、BUSREQ/はマシンサイクルの最後でチェックされ(Z80のマニュアルより:BUSREQ is always recognized at the end of the current machine cycle.)NMIよりも優先されるのでBUSACK/のチェックは省略可能と考えています。(SDカードの装着信号?を入力しておかないと起動後に抜き差しできなくなるのでI/O節約検討中なのですw)
|
HALTコード実行時のZ80の挙動 |
|
お遊びでZ80の全メモリをNOP(00h)に書き換えるプログラムを動かしてみました。
このコードなら今でもそらで機械語を言えます ^^
ロジアナ波形を見ると左側1/3くらいからデータバスがlowに貼り付き、WR/はhighに貼り付きます。
Z80は全メモリNOPコードの中、アドレス(PC)を進めるのみの動作になります。
昔のマイコンはメモリ空間上にVRAMがあったのでVRAM上での命令実行時に画面にノイズが載ってZ80の走行状態を目視できたんだよねぇw
|
★2018/02/28 変更 メモリクリア部を1byte短縮w
全メモリクリアで永遠にNOPを実行し続ける |
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]
レトロマイコンZ80ボードの構想(その9)CP/M80 BIOS検討 [Z80]
ebayで注文したブレッドボード用の接続コードがまだ届かず Z80 と PIC24FJ64GA004 のインターフェース部分の実験ができず待ちの状態なのでCP/MのBIOS部分の検討を少しやってみました。
インテル系のニーモニックはあまり好きじゃないのでザイログ系のニーモニックがフルに使えるMACRO-80(m80.com)をCP/Mエミュ上で使うことに決めました。
何十年かぶりの m80・・・^^
avrCPM用のbios.asmを基にしてザイログニーモニックへの変換はすぐにできましたが、ディスクパラメータ生成のためのmac.com用のマクロがそのままでは動かず、自力でm80用に変換しようかとも思ったけどネットで探したら見つかった^^
bios.macの先頭部分抜粋
あちこちいじっていますが、アセンブルが通りました。
ディスクパラメータも想定通りに展開されています。^^
ディスクパラメータ生成
Z80とPIC24FJ64GA004とのインターフェースに関してはこれから細かく考えますが、boot時のシステム読込みはSDカードからではなく、PIC内のフラッシュから展開した方が良さそう。
あと、Z80とPIC間のインターフェースでZ80側のNMIもリセットも使わない方法を実験予定です。うまく行けばI/Oが1bit節約できる ^^
[TOP] [ 前へ ] 連載記事 [ 次へ ]
インテル系のニーモニックはあまり好きじゃないのでザイログ系のニーモニックがフルに使えるMACRO-80(m80.com)をCP/Mエミュ上で使うことに決めました。
何十年かぶりの m80・・・^^
avrCPM用のbios.asmを基にしてザイログニーモニックへの変換はすぐにできましたが、ディスクパラメータ生成のためのmac.com用のマクロがそのままでは動かず、自力でm80用に変換しようかとも思ったけどネットで探したら見つかった^^
|
あちこちいじっていますが、アセンブルが通りました。
超久々にm80でザイログニーモニックソースのアセンブル |
|
ディスクパラメータも想定通りに展開されています。^^
|
Z80とPIC24FJ64GA004とのインターフェースに関してはこれから細かく考えますが、boot時のシステム読込みはSDカードからではなく、PIC内のフラッシュから展開した方が良さそう。
あと、Z80とPIC間のインターフェースでZ80側のNMIもリセットも使わない方法を実験予定です。うまく行けばI/Oが1bit節約できる ^^
[TOP] [ 前へ ] 連載記事 [ 次へ ]
レトロマイコンZ80ボードの構想(その8)パラレルマスターポート機能 [Z80]
前回の記事「レトロマイコンZ80ボードの構想(その7)SDカード2」でSDカードのアクセス方法が確認できたので外部メモリ制御のためにPIC24FJ64GAのパラレルマスターポート(PMP)機能について実験してみました。
PICに実装されているPMP機能については「レトロマイコンZ80ボードの構想(その2)」の記事でも少し書いていますがPIC24FJ64GA004では外部メモリ制御のためのアドレス信号はPMA10(アドレス信号合計で11本)までです。
PICのピンアサインに関しては「レトロマイコンZ80ボードの構想(その5)ピンアサイン」を参照してください。
今回使用したメモリは HM628128で128KBytesのDIPパッケージの5V動作のスタティックRAMです(アクセスタイム:70ns)。
今回の評価実験回路については
としています。
メモリ書込み時のロジアナ波形が下図です。
PMPではメモリアクセス時のタイミングをPMMODE(パラレルマスタポート モードレジスタ)で設定でき、今回は
で設定しています(パラメータ名の末尾はそれぞれ Begin,Middle,End の意味だと思う)
ライトストローブの後にCS1/がdisableになるまでの時間が長め(WAITEで調整)ですが最短設定にしています。
データ線は読込み時にPIC側が入力状態になりますが、一部5Vトレラントでないポートがあります。時間的には一瞬なのでこのために壊れることはまずないと思いますが抵抗を入れる等、考慮した方がいいかも。
アドレス線など、他の信号に関してはPIC側からの出力信号であり、3.3V駆動のPIC側の信号でもメモリ側の規格範囲内(Input high voltage Min 2.2V)です。
メモリ書込み/読込み時の波形が下図です。
0x0000アドレスから開始(アドレスは自動インクリメント)して0xa5と0x5aの2つのデータを書込んだだ後、書込んだデータを読み出している波形です。
読み出し時にデータ線がバタついている部分がありますが、PIC側もメモリ側も入力状態なのでフローティング状態のためです。
バタつくのは良くないのでデータ線に関してはPIC側でプルアップ設定することでバタツキ対処をする予定です。
★2018/02/13 修正 {
3.3V電源が2.9Vの状態でした^^; 3.3Vにするとデータリード時のバタツキは発生しなくなりました(電源電圧が低くスレッショルド付近であったためバタツキ易くなっていたものと思います)。ロジアナのキャプチャも3.3Vのものに差し換えました。
}
★2018/02/12 追記
メモリテスト中のロジアナ波形を追加しておきます。数十分間連続動作させましたがエラーは検出されませんでした。
今回の実験で作ったソースを末尾に貼っておきます。
PMCS1はPMA14(アドレス線)と兼用なのでネット上で見つかる例はチップセレクトとしてPIC24FJ64GA004には無いPMCS2を使うものが殆どで、今回のようにPMCS1を使っている例は見つかりませんでした(海外等をじっくり探せば例があると思うけど探すより試した方が面白い)。
メモリライトを2回行った後、メモリリードを2回行っていますが、最初のリードはPMPがメモリリードシーケンスを開始するためのトリガなので読込んだデータは前回のリード動作で読んだ値になっています。(n個のデータを読むためには(n+1)回の、PMDIN1レジスタの読込みが必要)
また、init()の最後で実験的にPMWRをプルアップ設定してみたところ予想通り、PMPをdisableにした後も信号レベルはhighを保持する(ポート入力機能以外でもPullUp設定は有効)ようになりました。
PMP機能の実験用に作ったソース(picle言語)
[TOP] [ 前へ ] 連載記事 [ 次へ ]
PICに実装されているPMP機能については「レトロマイコンZ80ボードの構想(その2)」の記事でも少し書いていますがPIC24FJ64GA004では外部メモリ制御のためのアドレス信号はPMA10(アドレス信号合計で11本)までです。
PICのピンアサインに関しては「レトロマイコンZ80ボードの構想(その5)ピンアサイン」を参照してください。
今回使用したメモリは HM628128で128KBytesのDIPパッケージの5V動作のスタティックRAMです(アクセスタイム:70ns)。
今回の評価実験回路については
- アドレス線
Z80のメモリ空間は64KBytesなのA16はGNDに固定。またCS2は5Vに接続
- チップセレクト(CS1/)
Z80からのバス切替時などにlowになると最悪メモリ内容が破壊される可能性もあるので5Vにプルアップし、PIC側のPMCS1はオープンドレインに設定
- アドレスの上位ビット
A14、A15はとりあえず、PIC側のAD13に接続
- PMWR
実験的にPIC内でプルアップ設定
としています。
メモリ書込み時のロジアナ波形が下図です。
PMPではメモリアクセス時のタイミングをPMMODE(パラレルマスタポート モードレジスタ)で設定でき、今回は
- WAITB : 0
- WAITM : 1
- WAITE : 0
で設定しています(パラメータ名の末尾はそれぞれ Begin,Middle,End の意味だと思う)
ライトストローブの後にCS1/がdisableになるまでの時間が長め(WAITEで調整)ですが最短設定にしています。
データ線は読込み時にPIC側が入力状態になりますが、一部5Vトレラントでないポートがあります。時間的には一瞬なのでこのために壊れることはまずないと思いますが抵抗を入れる等、考慮した方がいいかも。
アドレス線など、他の信号に関してはPIC側からの出力信号であり、3.3V駆動のPIC側の信号でもメモリ側の規格範囲内(Input high voltage Min 2.2V)です。
メモリ書込み波形 |
|
メモリ書込み/読込み時の波形が下図です。
0x0000アドレスから開始(アドレスは自動インクリメント)して0xa5と0x5aの2つのデータを書込んだだ後、書込んだデータを読み出している波形です。
★2018/02/13 修正 {
3.3V電源が2.9Vの状態でした^^; 3.3Vにするとデータリード時のバタツキは発生しなくなりました(電源電圧が低くスレッショルド付近であったためバタツキ易くなっていたものと思います)。ロジアナのキャプチャも3.3Vのものに差し換えました。
}
メモリ書込み/読込み波形 |
|
★2018/02/12 追記
メモリテスト中のロジアナ波形を追加しておきます。数十分間連続動作させましたがエラーは検出されませんでした。
メモリ試験中の波形 |
|
今回の実験で作ったソースを末尾に貼っておきます。
PMCS1はPMA14(アドレス線)と兼用なのでネット上で見つかる例はチップセレクトとしてPIC24FJ64GA004には無いPMCS2を使うものが殆どで、今回のようにPMCS1を使っている例は見つかりませんでした(海外等をじっくり探せば例があると思うけど探すより試した方が面白い)。
メモリライトを2回行った後、メモリリードを2回行っていますが、最初のリードはPMPがメモリリードシーケンスを開始するためのトリガなので読込んだデータは前回のリード動作で読んだ値になっています。(n個のデータを読むためには(n+1)回の、PMDIN1レジスタの読込みが必要)
また、init()の最後で実験的にPMWRをプルアップ設定してみたところ予想通り、PMPをdisableにした後も信号レベルはhighを保持する(ポート入力機能以外でもPullUp設定は有効)ようになりました。
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]
レトロマイコンZ80ボードの構想(その7)SDカード2 [Z80]
前回の記事「レトロマイコンZ80ボードの構想(その6)SDカード」でSDカードとのSPI通信のロジアナ波形を掲載しましたが、ブロック読込み時に読込みデータ間にクロックが停止する隙間がでるのが嫌なのでSPI通信の処理を見直しました。
改良版でのSPI波形を参考に貼っておきます。今回はブロックライトとブロックリードの波形も付けました。
★2018/02/10 追記 {
SDカード初期化時のクロックは333kHzです。初期化後クロック切替えの実験をしたところ、SPI1CON1のプリスケーラの再設定だけではクロックが変わらず、一旦、SPIをdisableにしてからプリスケーラを設定後、SPIをイネーブルにする必要がありました。
picleソースで書くと
こんな感じです。
コメントに書いたようにブロック書込み/読込み動作が2MHzではNG(DIのデータを取りこぼす)で1MHzではokでした。(PIC24FJのクロックは内蔵の32MHz)
}
今回の実験で作成した picleソースは次のとおりです。SRAM上にソースが入りきらなくなってきたのでmain()部分と関数部分を分離し、main()側でフラッシュメモリにセーブした関数ソースをインクルードしています。
実験で使用したソース:関数部分(picle言語)
実験で使用したソース:main()部分(picle言語)
★2018/05/09 追記
SDHCタイプのSDカードのブロックサイズは 512バイトでCP/Mのディスクリード/ライト時の最小サイズ(128バイト)より大きいため、ブロッキング/デブロッキング処理する必要があります。また、ブロッキング/デブロッキング処理のサンプルソースがCP/Mのディスク内に添付されているケースもあるようです。
この処理を実施した場合、読込みは速くなる(1セクタの読込みで4個分読めるので)けど、書込みは一度該当セクタを読込み、書込み対象部分をアップデート後、セクタ書込みする必要があるので2倍程度遅くなります。
※BIOSへの書き込み要求時にC-regに下記情報が渡されるので単純に2倍遅くなるわけではない。
C=0 - Write can be deferred
C=1 - Write must be immediate
C=2 - Write can be deferred, no pre-read is necessary.
実際待ち時間が生じるのはHI-TECH Cでコンパイルする場合などのケースであり、この場合、読込みと同様に書込みも頻繁に行われているのでブロッキング/デブロッキングの処理で遅くしたくはありません。
今回はSDHCカードのセクタの先頭の128バイトのみを使うことでブロッキング/デブロッキング処理を省略し、書込み時のパフォーマンス低下を防ぐことにしました。
(SDカードを無駄遣いしているようにも思えますが、CP/Mで使用できるのはSDカードの先頭部分のほんの少しだけなので無駄ということにはならない)
SDHCのコマンドを眺めていたらブロックサイズを設定するコマンドがあったので試してみました。ブロックサイズを128にできれば未使用部分のセクタ先頭以外の3/4の読み/書きが不要になり高速化できるはずです。
このブロックサイズ指定のコマンドへの対応はSDカードに依存するようなことがネット情報にあり、16GBのSDカードを用いた実験結果としては
下のキャプチャがブロックサイズ指定のコマンドを発行している時の波形でSDカードからは OK 応答が帰ってきています。(その後クロックを1MHzに上げている)
下のキャプチャは128バイト分のブロック読込み後、別のセクタのブロック読込みを開始している時の波形です。
始めのブロックの最後の2バイトがCRCコードになっておらず、次のブロック読込みのコマンド発行中に129バイト目以降のデータが送られてきています(いずれもデータは0e5h)
[TOP] [ 前へ ] 連載記事 [ 次へ ]
- リード時の隙間
SPI通信でデータリード時にデータ間にクロックの停止する隙間が発生するのはやはりもったいない。SPIモジュール(ハード)自体の制約によるものではないので隙間なく受信するように変更しました。
- CSをhighに変更後のクロック提供
web上の情報ではCSをhighにしてから1バイト(0xff)を送信する必要があるという情報を見かけましたが、波形を見てみるとSDカードからの応答の最後のバイトのLSBがlowの場合、その後のクロック提供がないと、DOをlowに引っ張り続けることがあるけどクロック入力によりパラ-シリ変換がシフトされる(ゴミが残った場合吐き出される)とDOがhighに復帰するので供給するクロックは1クロック以上であればいいように思えます。
今回はわざわざ1バイトの0xffを送らないでSPI受信処理時のクロック提供のための0xff送信でバッファを使うようにしました。
受信完了後にバッファ内の0xffデータが送信されるのでSDカード側のごみ吐出しはできるものと思います。
改良版でのSPI波形を参考に貼っておきます。今回はブロックライトとブロックリードの波形も付けました。
★2018/02/10 追記 {
SDカード初期化時のクロックは333kHzです。初期化後クロック切替えの実験をしたところ、SPI1CON1のプリスケーラの再設定だけではクロックが変わらず、一旦、SPIをdisableにしてからプリスケーラを設定後、SPIをイネーブルにする必要がありました。
picleソースで書くと
SPISTAT[0] = $0000; # SPISTAT[1] = $7a; # SPI1CON1 prescale2:1,prescale4:1 = 8:1 2M NG SPISTAT[1] = $7d; # SPI1CON1 prescale1:1,prescale16:1 = 16:1 1M OK SPISTAT[0] = $8000;
こんな感じです。
コメントに書いたようにブロック書込み/読込み動作が2MHzではNG(DIのデータを取りこぼす)で1MHzではokでした。(PIC24FJのクロックは内蔵の32MHz)
}
CMD0波形 |
|
CMD8波形 |
|
ACMD41波形(アイドル状態なのでリトライ) |
|
ACMD41波形(0x00のレスポンス(OK)) |
|
CMD58波形 |
|
CMD24(ブロックライト)波形 |
|
CMD24(ブロックライト:データ送信後wait)波形 |
|
CMD24(ブロックライト:wait解除され終了)波形 |
|
CMD17(ブロックリード)波形 |
|
CMD17(ブロックリード:SDカードがパケット送信開始)波形 |
|
CMD17(ブロックリード:パケット受信完了)波形 |
|
今回の実験で作成した picleソースは次のとおりです。SRAM上にソースが入りきらなくなってきたのでmain()部分と関数部分を分離し、main()側でフラッシュメモリにセーブした関数ソースをインクルードしています。
|
|
★2018/05/09 追記
SDHCタイプのSDカードのブロックサイズは 512バイトでCP/Mのディスクリード/ライト時の最小サイズ(128バイト)より大きいため、ブロッキング/デブロッキング処理する必要があります。また、ブロッキング/デブロッキング処理のサンプルソースがCP/Mのディスク内に添付されているケースもあるようです。
この処理を実施した場合、読込みは速くなる(1セクタの読込みで4個分読めるので)けど、書込みは一度該当セクタを読込み、書込み対象部分をアップデート後、セクタ書込みする必要があるので2倍程度遅くなります。
※BIOSへの書き込み要求時にC-regに下記情報が渡されるので単純に2倍遅くなるわけではない。
C=0 - Write can be deferred
C=1 - Write must be immediate
C=2 - Write can be deferred, no pre-read is necessary.
実際待ち時間が生じるのはHI-TECH Cでコンパイルする場合などのケースであり、この場合、読込みと同様に書込みも頻繁に行われているのでブロッキング/デブロッキングの処理で遅くしたくはありません。
今回はSDHCカードのセクタの先頭の128バイトのみを使うことでブロッキング/デブロッキング処理を省略し、書込み時のパフォーマンス低下を防ぐことにしました。
(SDカードを無駄遣いしているようにも思えますが、CP/Mで使用できるのはSDカードの先頭部分のほんの少しだけなので無駄ということにはならない)
SDHCのコマンドを眺めていたらブロックサイズを設定するコマンドがあったので試してみました。ブロックサイズを128にできれば未使用部分のセクタ先頭以外の3/4の読み/書きが不要になり高速化できるはずです。
このブロックサイズ指定のコマンドへの対応はSDカードに依存するようなことがネット情報にあり、16GBのSDカードを用いた実験結果としては
- ブロック指定コマンドに対してはOK応答を返してくるけど、ブロック読込みで128バイト読込み、再度ブロック読込みすると129バイト目からのデータを吐き出してくるように見える(下記キャプチャ)
- ブロックサイズ設定がうまく行ったら二つ目のセクタの読み出し位置が先頭から129バイト目になるのではという期待もありましたが、読み出し位置はブロックサイズ指定後も変化しませんでした(指定対象サイズがセクタではなくブロックなので当然かも)
下のキャプチャがブロックサイズ指定のコマンドを発行している時の波形でSDカードからは OK 応答が帰ってきています。(その後クロックを1MHzに上げている)
ブロックサイズ指定コマンド波形 |
|
下のキャプチャは128バイト分のブロック読込み後、別のセクタのブロック読込みを開始している時の波形です。
始めのブロックの最後の2バイトがCRCコードになっておらず、次のブロック読込みのコマンド発行中に129バイト目以降のデータが送られてきています(いずれもデータは0e5h)
ブロックサイズ指定後のブロック読み出し |
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]
迷惑コメント発生中 [日記]
やったぁ~。本日のページビューは1千を超えました ^^
というか、実は数日前から特定のページにアルファベット文字だけの内容でリンクが多数の何かの売込みのコメント書込みが多発しています。
昨日まではその都度マニュアル操作で消していたんですがそれが気に入らなかった(気に入った?w)のか今朝から頻度が激増しました。
そうなんです・・・ページビューのほとんどはこのカキコのアクセスが占めてします・・・
書込み内容を変更しながら自動で書き込んでいるようです。
このブログは「画像認証」機能があり、コメント書込みの際に画像に書かれた文字を正しく入力する必要があります。
認証の文字列を読みづらい(と思われる)ものに変更してからは収まっているようですがもう少し様子を見たいと思います。(あまり反応すると増長しそうなのでしばらく放置)
ん~ 明日のアクセスランキングが楽しみ・・w
というか、実は数日前から特定のページにアルファベット文字だけの内容でリンクが多数の何かの売込みのコメント書込みが多発しています。
昨日まではその都度マニュアル操作で消していたんですがそれが気に入らなかった(気に入った?w)のか今朝から頻度が激増しました。
そうなんです・・・ページビューのほとんどはこのカキコのアクセスが占めてします・・・
書込み内容を変更しながら自動で書き込んでいるようです。
このブログは「画像認証」機能があり、コメント書込みの際に画像に書かれた文字を正しく入力する必要があります。
認証の文字列を読みづらい(と思われる)ものに変更してからは収まっているようですがもう少し様子を見たいと思います。(あまり反応すると増長しそうなのでしばらく放置)
ん~ 明日のアクセスランキングが楽しみ・・w