ここから本文です
ブログを始めました・・・

書庫過去の投稿日別表示

全1ページ

[1]

同じ日に2度書くと言うことは訂正があるからです。
結論から申しますと普通ユーザーにし優先順位を上から2番目の
 HIGH_PRIORITY_CLASS にしてもデータの取り零しは発生しません
でした。取り零しの原因は受信処理ループにある下の三行でした。
printf は結構なリソース食いで速度の足を引っ張ります。

for (i = 0; i < (int)dwRead; i++)
printf("%02X", buf[i]);
   
printf("\n");

デバッグ用のコードでバグを発生させてるとはトンマで、すみません。

HIGH_PRIORITY_CLASS の設定は下を参考に適切な位置に入れて下さい。
なお製作29のコードでも動きましたけど以前のコードも動きました。
危うくコードを複雑して失敗する寸前でした。確かにwindowsとLinux用
ではドライバで大きな違いはなく(多少はLinuxが使い易いですけど)
実行してるパソコンの速度(性能)が大きく影響してました。

if (COMPORT == -1){

printf("no com port installed \n");
}

else{
printf("com port number is %d\n", COMPORT);

}


HANDLE hProcess;

hProcess = GetCurrentProcess();
if (SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS))
printf("SetPriorityClass: Success\n");
else 
printf("SetPriorityClass: Error\n");

まだ十分に(FT2345RLの)windows用ドライバを使い熟してる
状況ではありませんが、ある程度は使いました。同一のICに対し
(カーネルに組み込まれてる)Linux用ドライバとは結構、違う
感触を持ちました。またFTDIのサンプルコードを使う上でも
現状とは何点か違いがあり注意が必要です。サンプルコードが
最低限の送受信機能しかありませんし古い仕様です。これを
現状の仕様にしてコードを追加しなくてはなりません。

使い易さとしてはLinux用ドライバが使い易いです。

・windowsとLinuxとで最大の違い
マルチプロセスOSであるwindowsは一つのプロセスだけに
CPU等の資源を使う訳に行きませんので FM-7 → PC に送信
する際にデータを取り零す問題が発生しています。Linuxも
マルチプロセスOSとは認識してますが管理者モードで端末を
使って実行してますのでデータを取り零す問題はないです。

であればと行儀が悪いコードになりますけど、windowsでも
アドミニスターにし、優先順位を最高にして32バイトづつに
小分けしてパケットのように FM-7 → PC に送信しました。

しかし、この変更でも32Kバイト程(BASICROM)のデータ
の取り零しは防げませんでした。因みにCPUはアスロン2
(デュアルコア)の10年前の性能です。とは言え低速CPUでも
取り零しの発生を防ぐ方法が最善と考えますのでコードの変更で
対応可能なら抜本的にアルゴリズムの変更を視野に入れてます。
更には PC →  FM-7 の送信時にも、偶にLinuxでは問題はない
ですが停止することがありましたが優先順位を上げることに
よって、この問題は解決しました。

それで、対策は二通りで考えています。
1)ハードの配線も一箇所変える(最終手段です)
データ用の6ビット目を送信監視フラグに転用する変更

2)抜本的に抜本的にアルゴリズムを変更をする
最終的には実装しないと確認はできませんが可能性はあります。

と言う状況ですが FM-7 側の変更したコードを公開します。
またファミコンのディスクシステムの読み書きで、この基板を
組み合わせて使う予定ですが、windows用なら関心を持つ人も
多くなると考えますので先ずは確りとwindowsでの読み書きを
確立したと考えます。(下のコードで FM-7 → PC はNG)
使い方は $3000からの2バイトにデータ転送時の末尾(+1)
$3002からの2バイトにデータ転送時の先頭アドレスを設定。
FM-7 → PC  :エントリは  $3054
PC → FM-7  :エントリは  $3077

[root@localhost BIN20190606]# date
2019年  6月 28日 金曜日 18:44:49 JST
[root@localhost BIN20190606]# ./f9dasm  -noconv -offset 3000 FM7DRV28_20190628.dat
f9dasm: M6800/1/2/3/8/9 / H6309 Binary/OS9/FLEX9 Disassembler V1.75
Loaded binary file FM7DRV28_20190628.dat

*****************************************************
** Used Labels                                      *
*****************************************************

M0000   EQU     $0000
MFDFD   EQU     $FDFD
MFDFE   EQU     $FDFE

*****************************************************
** Program Code / Data Areas                        *
*****************************************************

        ORG     $3000

M3000   NEG     M0000                    *3000: 00 00          '..'
M3002   NEG     M0000                    *3002: 00 00          '..'
M3004   NEG     M0000                    *3004: 00 00          '..'
M3006   NEG     M0000                    *3006: 00 00          '..'
Z3008   STB     MFDFD                    *3008: F7 FD FD       '...'
        LDA     MFDFE                    *300B: B6 FD FE       '...'
        CLR     MFDFD                    *300E: 7F FD FD       '...'
        RTS                              *3011: 39             '9'
Z3012   LDX     M3002,PCR                *3012: AE 8C ED       '...'
        LDB     #$01                     *3015: C6 01          '..'
Z3017   LDA     MFDFE                    *3017: B6 FD FE       '...'
        ANDA    #$80                     *301A: 84 80          '..'
        BEQ     Z301F                    *301C: 27 01          ''.'
        RTS                              *301E: 39             '9'
Z301F   BSR     Z3008                    *301F: 8D E7          '..'
        ASLA                             *3021: 48             'H'
        STA     M3006,PCR                *3022: A7 8C E1       '...'
        BSR     Z3008                    *3025: 8D E1          '..'
        ANDA    #$7F                     *3027: 84 7F          '..'
        ORA     M3006,PCR                *3029: AA 8C DA       '...'
        STA     ,X+                      *302C: A7 80          '..'
        CMPX    M3004,PCR                *302E: AC 8C D3       '...'
        BGE     Z3035                    *3031: 2C 02          ',.'
        BRA     Z3017                    *3033: 20 E2          ' .'
Z3035   STX     M3006,PCR                *3035: AF 8C CE       '...'
        RTS                              *3038: 39             '9'
Z3039   LDX     M3002,PCR                *3039: AE 8C C6       '...'
        LDB     #$02                     *303C: C6 02          '..'
Z303E   LDA     ,X+                      *303E: A6 80          '..'
        STA     MFDFE                    *3040: B7 FD FE       '...'
        STB     MFDFD                    *3043: F7 FD FD       '...'
        CLR     MFDFD                    *3046: 7F FD FD       '...'
        CMPX    M3004,PCR                *3049: AC 8C B8       '...'
        BGE     Z3050                    *304C: 2C 02          ',.'
        BRA     Z303E                    *304E: 20 EE          ' .'
Z3050   STX     M3006,PCR                *3050: AF 8C B3       '...'
        RTS                              *3053: 39             '9'
Z3054   LDX     M3002,PCR                *3054: AE 8C AB       '...'
        LDB     #$20                     *3057: C6 20          '. '
        ABX                              *3059: 3A             ':'
        CMPX    M3000,PCR                *305A: AC 8C A3       '...'
        BPL     Z3064                    *305D: 2A 05          '*.'
        STX     M3004,PCR                *305F: AF 8C A2       '...'
        BRA     Z306A                    *3062: 20 06          ' .'
Z3064   LDX     M3000,PCR                *3064: AE 8C 99       '...'
        STX     M3004,PCR                *3067: AF 8C 9A       '...'
Z306A   BSR     Z3039                    *306A: 8D CD          '..'
        CMPX    M3000,PCR                *306C: AC 8C 91       '...'
        BEQ     Z3076                    *306F: 27 05          ''.'
        STX     M3002,PCR                *3071: AF 8C 8E       '...'
        BRA     Z3054                    *3074: 20 DE          ' .'
Z3076   RTS                              *3076: 39             '9'
Z3077   LDX     M3002,PCR                *3077: AE 8C 88       '...'
        LDB     #$20                     *307A: C6 20          '. '
        ABX                              *307C: 3A             ':'
        CMPX    M3000,PCR                *307D: AC 8C 80       '...'
        BPL     Z3088                    *3080: 2A 06          '*.'
        STX     M3004,PCR                *3082: AF 8D FF 7E    '...~'
        BRA     Z3090                    *3086: 20 08          ' .'
Z3088   LDX     M3000,PCR                *3088: AE 8D FF 74    '...t'
        STX     M3004,PCR                *308C: AF 8D FF 74    '...t'
Z3090   BSR     Z3012                    *3090: 8D 80          '..'
        CMPX    M3000,PCR                *3092: AC 8D FF 6A    '...j'
        BEQ     Z309A                    *3096: 27 02          ''.'
        BRA     Z3077                    *3098: 20 DD          ' .'
Z309A   RTS                              *309A: 39             '9'

        END

全1ページ

[1]

本文はここまでですこのページの先頭へ
みんなの更新記事