ロックビットのあるフラッシュメモリの対応例

CSIDEが32ビット・デバイスに対応しているかどうかにより対処方法が異なります。
下記でお手持ちのCSIDEが32ビット・デバイスに対応しているかご確認ください。

●32ビット・デバイス未対応CSIDE フラッシュメモリ書き込みを対応したROMICE64、H-UDI/JTAGデバッガ
及びReadme.txtに32ビット・デバイスに対応と記載されていないバージョンのNEXTiCE、PALMiCE用CSIDE
●32ビット・デバイス対応CSIDE 上記以外でフラッシュメモリ書き込みをサポートしたCSIDE


 

32ビット・デバイス対応CSIDEの場合


 32ビットデバイスに対応しているCSIDEでは、セクタ・ブロックのアクセスごとにロック・ビットを
 解除することができます。

 ロック・ビットを解除する手順が
  (1)セクタ・ブロックに0x0060をライト
  (2)セクタ・ブロックに0x00d0をライト の場合の例
 
  1. ロックビットを解除するマクロ・コマンドを登録
  2. {lockbit_clear
        int __addr
        __addr = GetFlashSectBlockAddress()
        Outport(2, __addr, 0x0060)
        Outport(2, __addr, 0x00d0)
        while{ (Inport(2, __addr) & 0x0080) == 0x0000
        }
        Outport(2, __addr, 0x00ff)
    }


  3. コマンド・ウィンドウでFlashBeforExecMacro(lockbit_clear)を実行

 

 

 

32ビット・デバイス未対応CSIDEの場合


 32ビット未対応のCSIDEでは、フラッシュメモリに書き込み等を行う前に、全てのロック・ビットを
 解除しておく必要があります。

 インテル製28F128J3を16bitで1個使用している場合の例
 
  1. ロックビットを解除するマクロ・コマンドを登録
  2. {ClearLockBit16
        Printf("Block=%%3d Address=%%08lx .", %0, %1)
        Outport(2, %1, 0x0060)
        Outport(2, %1, 0x00d0)
        while{ (Inport(2, %1) & 0x0080) == 0x0000
        }
        Printf(".")
        while{ 1
            if{ (Inport(2, %1) & 0x0008) == 0x0008
                Printf(" Error : Voltage Range Error\n")
                break
            }
            Printf(".")
            if{ (Inport(2, %1) & 0x0030) == 0x0030
                Printf(" Error : Command Sequence Error\n")
                break
            }
            Printf(".")
            if{ (Inport(2, %1) & 0x0020) == 0x0020
                Printf(" Error : Clear Block Lock-Bits Error\n")
                break
            }
            Printf(" Ok\n")
            break
        }
        Outport(2, %1, 0x00ff)
    }

    {i_28F128J3_16
        int i
        Printf("\nClear Block Lock-Bits\n")
        for {i=0, i<0i128, i+=1
            ClearLockBit16 i, %0+i*0x20000
        }
        Printf("Finish\n")
    }


  3. コマンド・ウィンドウでi_28F128J3_16 0を実行
    (フラッシュ・デバイスが0番地に配置されている場合)