📄 bad_block.inc
字号:
;==================================================================
searchbbitable:
bank 2
mov a,#0x01
mov tableaddressrow3,a
mov a,#0xfb
mov tableaddressrow2,a
mov a,#0xc2
mov tableaddressrow1,a
clr tableaddresscol1
clr tableaddresscol2
find55aa55aataginnextblock:
call load_bbi_table_address
/*
BANK 2
clr bank2_temp
find55aa55aataginnextblock_jfkdsafrh3:
inc bank2_temp
jbs KEY_VOL,VOL_INC_KEY,find55aa55aataginnextblock_AA//$+3//===================
CALL DELAY_1ms
JBS KEY_SW,MODE_KEY,find55aa55aataginnextblock_AA
call Delay30mS
jbc bank2_temp,5,find55aa55aataginnextblock_jfkdsafrh3
call FlashBlockErase2G
*/
find55aa55aataginnextblock_AA:
call FlashContinueReadWriteAddress2G
bank 2
call flashreaddata
xor a,#0xaa
jbc stts,z,needtocreateatable
call flashreaddata
xor a,#0x55
jbc stts,z,needtocreateatable
call flashreaddata
xor a,#0xaa
jbc stts,z,needtocreateatable
call flashreaddata
xor a,#0x55
jbc stts,z,needtocreateatable
call flashreaddata
mov tableaddressrow3,a
call flashreaddata
mov tableaddressrow2,a
call flashreaddata
mov tableaddressrow1,a
call flashreaddata
mov fatendaddressrow3,a
call flashreaddata
mov fatendaddressrow2,a
xor a,#0xff
jbs stts,z,needtocreateatable
call flashreaddata
mov fatendaddressrow1,a
xor a,#0xff
jbs stts,z,needtocreateatable
BC STATUS,C
ret
needtocreateatable:
bank 2
mov a,#0x40
sub tableaddressrow1,a
jbs stts,c,finishnextblockaddress
dec tableaddressrow2
jbs stts,c,finishnextblockaddress
dec tableaddressrow3
finishnextblockaddress:
//BANK 2
// JBC bank2_check_flag,is_128_or_256,finishnextblockaddress_1
mov a,tableaddressrow3
and a,#0x01
jbc stts,z,find55aa55aataginnextblock
finishnextblockaddress_1:
mov a,tableaddressrow2
jbc stts,z,find55aa55aataginnextblock
mov a,tableaddressrow1
and a,#0xc0
jbc stts,z,find55aa55aataginnextblock
//call search_a_good_block_for_creating_table
//call create_bbi_table
BS STATUS,C
ret
;=================================================================
address_conversion_according_to_bbitable://=====查表变化地址====
//ret
bank 2
mov a,flashrowadd1
mov addressconversiontemprow1,a
mov a,flashcoladd1
mov addressconversiontempcol1,a
mov a,flashcoladd2
mov addressconversiontempcol2,a
rlc flashrowadd1,#1
rlc flashrowadd2,#1
rlc flashrowadd3,#1
rlc flashrowadd1,#1
rlc flashrowadd2,#1
rlc flashrowadd3,#1
rlc flashrowadd2,#1
rlc flashrowadd3,#1
mov a,flashrowadd2
and a,#0xfe
mov flashcoladd1,a
mov a,flashrowadd3
and a,#0x07
mov flashcoladd2,a
mov a,tableaddressrow1
and a,#0xc0
mov flashrowadd1,a
jbc flashrowadd3,3,$+3
bs flashrowadd1,0
mov a,tableaddressrow2
mov flashrowadd2,a
mov a,tableaddressrow3
mov flashrowadd3,a
; CALL FlashReset
call FlashContinueReadAddress2G//FlashContinueReadWriteAddress2G
call flashreaddata
mov flashrowadd2,a
call flashreaddata
mov temp,a
and a,#1
mov flashrowadd3,a
mov a,#0xc0
and temp,a
bank 2
nop
mov a,addressconversiontemprow1
and a,#0x3f
xor a,temp
mov flashrowadd1,a
mov a,addressconversiontempcol1
mov flashcoladd1,a
mov a,addressconversiontempcol2
mov flashcoladd2,a
bank 0
ret
;==========================================================
PAGE_ADDR_CHK_READ_fat:
ADD FlashRowAdd1,a
JBC STTS,C,exitPAGE_ADDR_CHK_READ_fat
INC FlashRowAdd2
JBC STTS,C,exitPAGE_ADDR_CHK_READ_fat
INC FlashRowAdd3
jbc FlashRowAdd3,1,exitPAGE_ADDR_CHK_READ_fat
clr FlashRowAdd3
exitPAGE_ADDR_CHK_READ_fat:
Ret
;============================================================
blocktest55h:
clr temp2
retryeraseagain:
call FlashBlockErase2G
jbs temp1,0,FlashblockEraseFailed
mov a,#3 ///64
mov temp3,a
looptestpage55:
call FlashPageProgramWriteAddress
clr temp1
mov a,#8
mov temp2,a
loopwrite55:
mov a,#0x55
CALL FlashWriteData
djz temp1,$+3
jmp loopwrite55
djz temp2,$+3
jmp loopwrite55
call FlashPageProgramWriteDataOK
call FlashContinueReadWriteAddress2G
clr temp1
mov a,#8
mov temp2,a
loopread55:
call flashreaddata
xor a,#0x55
jbc stts,z,setbadblocktag
djz temp1,$+3
jmp loopread55
djz temp2,$+3
jmp loopread55
mov a,#1
call PAGE_ADDR_CHK_read_fat
djz temp3,$+3
jmp looptestpage55
bs stts,z
ret
setbadblocktag:
bc stts,z
ret
FlashblockEraseFailed:
inc temp2
jbs temp2,1,$+3
jmp retryeraseagain
clr temp2
jmp setbadblocktag
;==================================================================
blocktestAAh:
clr temp2
retryeraseagainAA:
call FlashBlockErase2G
jbs temp1,0,FlashblockEraseFailedAA
mov a,#3 ///64
mov temp3,a
looptestpageAA:
call FlashPageProgramWriteAddress
clr temp1
mov a,#8
mov temp2,a
loopwriteAA:
mov a,#0xaa
CALL FlashWriteData
djz temp1,$+3
jmp loopwriteAA
djz temp2,$+3
jmp loopwriteAA
call FlashPageProgramWriteDataOK
call FlashContinueReadWriteAddress2G
clr temp1
mov a,#8
mov temp2,a
loopreadAA:
call flashreaddata
xor a,#0xaa
jbc stts,z,setbadblocktagAA
djz temp1,$+3
jmp loopreadAA
djz temp2,$+3
jmp loopreadAA
mov a,#1
call PAGE_ADDR_CHK_read_fat
djz temp3,$+3
jmp looptestpageAA
bs stts,z
ret
setbadblocktagAA:
bc stts,z
ret
FlashblockEraseFailedAA:
inc temp2
jbs temp2,1,$+3
jmp retryeraseagainAA
clr temp2
jmp setbadblocktagAA
;======================================================
load_bbi_table_address:
bank 2
mov a,tableaddressrow3
mov flashrowadd3,a
mov a,tableaddressrow2
mov flashrowadd2,a
mov a,tableaddressrow1
mov flashrowadd1,a
mov a,tableaddresscol1
mov flashcoladd1,a
mov a,tableaddresscol2
mov flashcoladd2,a
bank 0
ret
bbi_table_address_check:
bank 2
add tableaddresscol1,a
jbc stts,c,exit_bbi_table_address_check
inc tableaddresscol2
jbc tableaddresscol2,3,exit_bbi_table_address_check
clr tableaddresscol2
inc tableaddressrow1
jbc stts,c,exit_bbi_table_address_check
inc tableaddressrow2
exit_bbi_table_address_check:
bank 0
ret
load_fat_end_address:
bank 2
mov a,fatendaddressrow3
mov flashrowadd3,a
mov a,fatendaddressrow2
mov flashrowadd2,a
mov a,fatendaddressrow1
mov flashrowadd1,a
mov a,fatendaddresscol1
mov flashcoladd1,a
mov a,fatendaddresscol2
mov flashcoladd2,a
bank 0
ret
;==============================================================
search_a_good_block_for_creating_table:
bank 2
mov a,#0x01
mov tableaddressrow3,a
mov a,#0xfb
mov tableaddressrow2,a
mov a,#0xc0
mov tableaddressrow1,a
clr tableaddresscol1
clr tableaddresscol2
checknextblockforbbitable:
call load_bbi_table_address
call blocktest55h
jbc stts,z,searchnextblockfortable
call load_bbi_table_address
call blocktestAAh
jbc stts,z,searchnextblockfortable
call load_bbi_table_address
call FlashBlockErase2G
mov a,#0x02
xor flashrowadd1,a
call FlashPageProgramWriteAddress
mov a,#0xaa
CALL FlashWriteData
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -