⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart_test.stp

📁 自己实用Verilog编写的UART程序
💻 STP
📖 第 1 页 / 共 4 页
字号:
1QXW7zAE15Y6md10_e@k6oQmgg3A8QW3_HCXW7pQzc3YWGhTxn8uHjMX8Xz9A80Dg2IDC05000e0
0Y8eY88Q2200GG34O0408jG960WgkmS84HkQ01fh7o04000800WGUJm0W0m6QM12208Q0680804D
GFX6KHe074f21G001UAahIv69uHg22Iex00n0000810WPOwQ0W8MXeWWJagl07IjudOOm080Gm28
HS5J11FAba0WWgtKW4aaLmZIL40144baYmp0GIYIa4aWg1e01III1rv4220WWwK8417Y@Dg106hQ
Y22R1X8080a00Gu4KLQn1J8OGH070300OXCq_0XdWJI1W40GmZOLHX1ia4bgeW0acba8PHI2U4Ab
aab1QKGq090IIoYa4aOmZM5q0Om2M2ajjzP02D3qsMcje057GRRMsm0i8ajvRx08uncOOJV3D98H
keb8ZW4584oKW50IabQQ9YE9H0GORmZDPG3HpX8a8eab5xq4G8Lm2WDAJ1aSO3Ic198JSxW7R280
0G9Z582GQYcaYK9Z4mcW4W4G99RJ4WW7RobFzF8999oq7Y_4aW8nfVJURJ2Wmqlo@990Ho@1Fs4q
W10rqcm480f0OQpoEi0L1Cf9JB4Ga0rs4fL02UKg@3zQDN0Fa4uc4g8XJhACeWR1Q8Q0U2eXZdhO
AU1EY6WWSBgBgzgApKZW7bY400GqdXTCn4R1GGmZWL3GL5uHGr1C80008uaVYJ83GG00HGOMBTmz
dnNn9WHuBMrgr1G10WBdnhe1E0800Oe1Tjh6136lL11DiXfH1ebIl5@qA18rJGmi5S5@G420002U
SggGK8kfZYJ838G00xmqGV284yeJLlHWbaaWgtGW91992oIIia891FwKD06O999GGI0ca4a4A991
r0OGGTILTW1L8G0G00YOOqwC03QUKXqij24G0GTJHr9G5dc0MZNDW000AWcm2PWW0DK8Q0ige01G
IGILKaW999hOBY2D999IIIIesqa8898HMQQY4ba09199QoIo0DcASYo09028@xBpm5K0erzDRXEF
0WIMyj1FI28FJss1GmZDn4Mo62GWYSG3P6L88IeWXPB8599LW2eTY2NamsW7Ro06oc3OPIG5ZUs1
C0HgcXHRi008vG2WDBGbaus1Fwa00u08i92IG2GK4sa2100GQJ3YW020GXfD1F_adzsVmM6GaHUq
z9A3GYXcs@6W0BXTNc@pG0aa@3Ui985b0gD9f9WW40mascT0HX0OIJsMiWQ0AfHRh04yOL300z1H
D49vK5KfGPB7iubMbXqm3yKLK9M1RvHF0EGG00ejWlgJmB00G1F3e0G08WG3u9GTFwEuWe1O8sld
8004511Pnan0101Wu5l2204GJfP4SlKD0O020WWuHGeT2U2fw21200r0m02000Y000HU55800Wtx
E8tnp8W00af22b3S501WmiJQgGWB060GSJd2W400ID0BW004XyUGuUWbYcPLKKmK564y8QhCOKGg
f4dGL2800UzhWT1QuH132E9A4A00RjS0O00Wiw2AE1A0100KI2402102UiAbaiaG199HmIIWiae4
9A9BI2O24abbnnLGmZEXWa4i602ac4a99B9XI2IIaa54K7KG0002Wkic9EuCxpG00Wi1229dCqQ1
SSDlP1RnMq0U5le1Gf99HGGIYiaaa9A99G2IoW7dw7W2g1m0GIMIr0O0899hW7Hx9pUYJW2G530o
MssCCXX0QRxpMWW41ezDRRG2A0osiiT04yOJCbWjX05a8dqqcHG2Y4QOIq21jGI5f8Pd00A9iDun
ciWpjv44a44mYcTG21aAG0o6feHIEa8Rpca89kTmZE190EHRJYW4604998fG020aSaa80110KNIR
mZFvoJ@7a0W4PfZRVIIMauy5zl9AHIuY1@@W418v@W7R2GH0WQJRR29010ijfP7qa00sraj538IW
IRasA01FIr0QD0G00u2SW60W40910rXTsi0nUF0UbaK0100WieIOTD22enf8ZF0800ING9G0J0eD
dlY6uWbF8O00hW000iBm1020W000189008eXgW000W5008Q082UyfQ0Cey8bQdoZoeGugW5Y9R90
2002200cSAY9588uHi_E81G1G0n945010Ww6cG040H44LDqW2H5YmCCHzCH20420gODig3YOvYUY
Jm311018000W0W1yrILHCOG11488088D1261mWe1w9qjBUyJX5qygYY5QkteW6oG040GRRgTlH3r
OQrrl6KE03a0102EPA1G02n@I600WWjaF8gGjAPa0B99A0II2WaaWf919XIIIY08Y4P9891F2bqc
a4999A2II2WWaW9999XGIGYWea4P5891r9Lr1Aqbi3nmWLoLZLG03G002wLyiu3qgMW2M1odW7FP
PWaY6uYAAEmIIIGmZ5KHH1caWi08996yOKrQGWbaa0e98Pr0OW0aa4P99B1Fcb020W5QMOi5U2Qe
2y0G_iij11G1Gpsss2Aa80AxRR6Iq0bCIGmZEns0s62WGYS8HR61W9IeedHB8008rs0jTAB4amsW
7RoGIsc3IOIG15QsfD5Hgc08Ra429vWYaD3Gmaus1Fs400007asaG891APa08140IJQI4a400A99
9undyIu@3M2GYCaajFf99ISwbytW4e9C9o@VIgnnI2US58W40gjPj9mY40maccT0030OQHsM8n00
gjPQh04y8L30GTcIPD0WRzwZHHXIbDG31_hGT1E5DW1TaP0440WjA9AQ0Do00X9Ezwzi9EghAW00
1H3OHmZL5vbOjCqmY2C4J6JG1W0UP8Z0qU240GG@UD02808E1g4200W00YeRH7c0mW8lkTq45U5k
BW0008008g6eWu4U8eXb02204QI4RWGLq064L8R31iGjEMLH11zhUGe1RTmg3H3arH2ASCn10100
0400CNfHBuvGk77G0000100GNkD4SYJ1DGmr14ipC130K0H00Wm9g2W0GGR1E5K752IIIaDae8B9
9ewD2O99AHII22aaa5998nW7Vg602Y6e0989PH3G0199ee188unkUcuWuHI86ck4000yhKM8G00Y
DVfG3segzpG800CSF3nZaLaA74yeOIII2Waaa9989XII2I5564yeK8989XI3I6DG1r0a0989nW7n
AE1l08C08xRRp062G9Z40CG00jijD30OWW7bYDDiDaWa4vcMsCIGIaG3BpM8AGIgjDQxaW6759uH
NiXbjv44c4qoocT22JaQTPs69PGIkb9Rpqa89kTmZGv4ac4288G9Z40840GIJJI9Z64yuJ_@z@1P
98H_uwtdaq49_vQ@R22a4_z3USA0140gjDj90020msccT0010OJxI6BmqqsQmZOrGb2RdSMyY83H
00O0Wr0500aQGOppGG5L35887TJK0WW0WOo63400K3zDadWNb9PGmZLbCW1H3SmmV64yeLGW00w1
0YH3u9Q0AG000aJ050300Y9pfe1k8uHf2ceWg3EeNfZ2kVZK2i8oBi0I00axV897KKvE4qp1NL78
nB8yq159G0I0kJegs0DeW05Y60Xm9iQlsnwWmYOOg210GGCckD0WN2WW0gV_Y0RVY00GGRbG4dWK
01W0_f4XHgY8uHcAPq08D91IIIoaWWaG8999UH52UqfIvQWG2GI4ULLvI7n9iK1lTL4X4tQqKan2
6qj4XL2LCCG4yeOLKS08998IIIM4aa43UKgQ0G8302Y6uW0DegwW4I1YXW6Y2q0WjxPR0EM0qiij
j0ES0WMMtc18808xRxW7X2FRZ48A9NXfjH45a4qmAs2ooGYQHHhE99eW7XYHjT26W4QoGsE22GIP
H5R398CHkXXDp4acW7XI40S2ac410808IJII10808vfFH00G0eKqaW7VoVkyVmZ48Fy@4199X@U_
VcW0aW@VyzJKG6y8K24WQbYs20n00KJxR7W140if1jAmm10rsc6yOMH49MhAubIJMPALmSWXDTL4
4000EsogO@A8qW6Y6edW7vu9CcYAKZtUQhR02E4YhobG8Q09Yzx942011eHc040WE4Z8303Y9Z9W
0G01WqGt0C4WsJL7m0012Wu4i2404GD060180822kkNrefJy94HfG0004dG1TGGHOOGTXsO54KGq
095bR8X6CsIGC5Gp7H3uLKfN5le53VSGw0G4SYKXxHc040W0eF8gmjGIIGgaa44A9HPrR9eaWWCu
njO919H0oIg603819P5yOMlJKHylOD00NJ6K0204Wh2UOX4U2DOZe1Gus_lYb5jeS5399DPv5M4y
uKIGIKY68ig3au22X2Ui2s5Gsibj1GUBGpMst2Wi90QRVR6Wa8Wizj2U4A0eDI08aSbWy6Hm2IGR
XIB8198gD1awaa03Uy9R1CRE9491ja4Pda00fs2WiH29aaR0GtC9OJYR7yeJGGWJqqa80110HoJI
AWW509f9920200b4s6yuJ_Da_1988H_potdaW49_P9yRIHa4_rHzF930I_Func0m60escqc00100
RJBs1W54Wj9OR1aw0es69j2GmZukXuPH3qMIEG4FmMd6yLnD5W0408W6pY60YT3wfDdDAU4jHY88
222k80Xj6egSf3Y6O1800G1EPLD0CSeWGjYxKD05599LL7Wm204CvKHn9eHD09C1G2G200YWGgXl
E3W00Gdad5irPW00G0000f000OYal0110SD2J1tJOmZ9FDI3vzqb0W0WD2a8SY2YK9gT1AOpW62k
7gQ0M0300ml0F4yOJaaaa88A1Kz634aai2Uag899G2IIW4aaiQ08Wqa4KGTK1G00ew02GH00ipm4
nmmKSfhLGW1BdKmz05r_1A77KrDG9Kpm272_Jm9e08808uHggeO1JIYILKG02oIoOBW2ff9PmZmT
GJIn9G1WX1WI6903Z0DBBRB0200bCI0420IzzjT1F_4cs6900Ik23RZ83B9ebbjDuH2CzbTsuu81
FwYDaaDdmWaWMItiJIIWKROJs85DIoDCwRcW0Dnj3Uq910m9bCI0809DQIAG0GWa8D910W0WYWaa
OmZEv7c@laH2yUpVYWWamF@tFJIGIm@jz_9B93Uy90520gDjj90200mcccT0310OJJsM0100gj9J
h04y8l30aNnIRzu13fjNLuCGiCCL01100080SPG1PhbK0DOW0288CyJY9hK0I20b95ndRK1GI08E
X8Y6mWW7nQQYZ2Uy30100zSa0G02WOoUY004mF0P4S@jW002I1XWiHa8gzf0200zCH2Rfwr9laLT
0104G0M3ve31y0K00Ge1b5yOoLKyHmZsMSnOvUKGIG9W0108uaj6Bjf0R79uaiG0GIgabbiwj3aW
aaKz61Waai2UagIvE8un3C9915KtLL7GGUJM43pJl0rm8hCbFJ4XMNmo095OBX1dWS55L4yuKr0a
HW6I12008eXnGW0Ppso60OW0jxPVB66m0ejjlP66m0IMtAund8BQP391PHkDiFZae49acsg5GG4a
23pmEBJYIORmZDPROVpD9998Di9xWW48LMsWDGG2aiBowc91IISxW7T200SZcq4Xfw8maa201089
IIIG000eC5f96yeJ_F@_1881Lo81A399a7@zpaaa4i@@iVGKYW7V2130WIRRQ21500iDjO700G0s
sck5038WIJsqA01Fsx0DCiXOL30yV0DoE5b10600YxPt@kaWW00GG3O5DW41FYLKXVrBFKr0WoDP
94WMLjcmGn9_4WsAJ3OGmZJD0mRtrILf2SCqGFn9iHIk95soWvHemG0AStpL1F6DO00W35A8s2kI
UYW8L8Bua92iLhe21haH48819NzM1qIII4aC44y8Nr0e0P99BIGIY1FMLS2Xb5cRHiQNmZGlF2G1
Fw1aaaiAACG00IImZz6qWP40WiPRR3040Wczjj5020WI690C00fMsskW7TQ7H2889vgfjDgaH2Wj
jG2aaKposs9oIIYW7XIRd459XsGjjJ2caKRnss8HJIoLRRRMmZKLou1IGII3UqWI69WqaaOmZFf@
@XiaH3GMIIuV_@laH2yz@@81999uHd0W00Ko81W000rcss10100RJRh2W00Gjfj1F_x00@7yufVK
PKNAO4pi1jvKNCPLbdU2ncVKvIO4dG3H3mGmZ@7yeZn9GMD04aws4HUPLHxRjXORbASG6UN46s@1
t@VS2y6q12H0Om61C4fIK1DyNmZCL_M1LlX089HfuuO8uHdg1mYWwW2104Gr19WW04OMb6wUu9G0
00d7rGm9@NGmCdwOKmMR4qGJ1FwHi5U5yOqbCA1700WI698uHgoQ4YI698und8RRd899nkaH64RR
RpC999unfaba808009hH3wSWWI6B8uHeAPq0@_@dbCgWl@@d67D9uHMAP4ZW7@FUH@3K6k0dwAEk
aYxHmrUYOHEbANIYe1a8un@hE8dW7ZgzZoYQtiLDECCi@3Du@G3CDI5qozOZGti8msU3Uyhu5DG2
IIGrRAGGIoAuHg2g3jOOCR7cT3Evmuh6Bg3n2Uy@W7Bjan72UqgI6h8uHhAPiYW7jgan72UivSwe
Q0W@h2P80200DpLMq0B5eUXX6um00y6u4UG0002U4uQ0AB0jcZoz@O@8D0DhhdVf0QACMOt2Ev@W
7X1299PrRA80999un@3Uy@22WxcAW2Q0be1egY2A819P5yuL0991Z6uhg3G8rUW2UScI6F8unmAP
yWW7@Fun@70u@10_F0DR3gxy0doDun@3Uy@WJeFqW@3ev@W7@FunLZNyYW7@F6cHIW@iWJ_FuaDh
eu09891nMuLW6h5dGPQRRRP000Wv@@tdaa4fssMjP0000@@z@V9HIoRpss20000_c0Dmssss606q
481r0eX60002000yF00W9100i500G2000o700WH000C0000HYaa4hsW40III2GIIY000m0048III
YGIIID07Waaa4aaaKD0W0m80OzZ5G2000I0089W34000ioy1GIIIAYeXUHKeqG3g184400Wr0eG3
174dG2ijjjvGIIYI000GRRhsSRRscba89F000mjPRRfLRRBYaaa00000ssssmsssA899PF02g1G3
D000i100uI0003008E12u2008900O302aaaauIIIYJRRhERRRsD99Ioaa89ssgjzscjjd4999onB
DGRRR39999aaaaWsssiqssgbaai60Ca000O200WR100CB00W9000o400Gs000i68eX20IIIkPj2v
JQmG2AKVW2r0O2091WJ_z0Waa4900WKA8O702aaaaL304XCCHD0Kq8X1r0WmIc5q9m1gjjjvaaaq
sm1GRRR5899H800ONM2KRRRtAX2ORRR59995En1r0eXQIIIC100dIS0saa4H20000IIaWssgDijL
RNIYa4xV@@ljQRxOrssc8999q@@@ZjjjDORRRcaaa8y@@x7RRpsqssz34Wu@@l6WDi9991B99Hba
a4nla49RIIaiMI6VW04VIIaGRRrMRRpsijLRxlDRRtMjjTtijjNrss6pssssssscsssMHRRR3FG0
RRRRORRRcjjjPijjPZjjj60Ci999fjjjrsaa4vssMjRIIaCRRrsl9HIYjLRx1GWJ@7Kt@1F_VmZ@
7en@1QyVW6@7en@1QyVW6@7en@12cGiVX5mfr1QyVW6@7e1WWaai2qeiA0F8G3d08800W00A2H38
00010W0040WGr05K3GJ;
INTEGER CHECKSUM=25206;
BOOLEAN UROW[128];
' bit 24-17 and 5-0 unsed
BOOLEAN UROW_MASK[128] = $FFFFFFFFFFFFFFFFFFFFFFFFFE01FFC0;
ENDDATA;

PROCEDURE DO_EXIT USES GV;
IRSTOP IDLE;
IRSCAN 8,$81;
IRSTOP IRPAUSE;
WAIT 20 USEC;
IF STATUS!=0 THEN IRSCAN 8, $07;
WAIT 200 USEC;
STATE RESET;
EXIT STATUS;
ENDPROC;

PROCEDURE PROC_INIT_AES USES GV;
    IRSCAN 8, $DD;
    DRSTOP IDLE;
    DRSCAN 128, $00000000000000000000000000000000;
    DRSTOP DRPAUSE;
    WAIT 3 CYCLES; 
    WAIT 48 USEC;

ENDPROC;

PROCEDURE PROC_VERIFY_IDCODE USES GV, PROC_INIT_AES, DO_EXIT;
' Shift IDCODE instruction
IRSCAN 8,$0F;
DRSCAN 32, $00000000, CAPTURE ID[],COMPARE $02A141CF,$0EFFFFFF,PASS;
IF PASS ==1 THEN GOTO idok;
STATUS = 6;
PRINT "Failed to verify IDCODE";

EXIT STATUS;

idok:

    CALL PROC_INIT_AES;
    IRSCAN 8, $0A;
    DRSTOP IDLE;
    DRSCAN 128, $E137623A2EEEE91126015F3F73664945;
    DRSTOP DRPAUSE;
    WAIT 3 CYCLES;
    WAIT 256 USEC;

    DRSCAN 128, $00000000000000000000000000000000, CAPTURE Buff128[];

    IF Buff128[127] THEN GOTO M7VerDone;

    STATUS = -31;
    PRINT "Failed to verify AES Sec.";
    CALL DO_EXIT;
    M7VerDone:
    
    IF 1 THEN GOTO RegDev;

    IF Buff128[126] THEN GOTO M7idok;
    STATUS = -32;
    PRINT "Failed to verify IDCODE.";
    PRINT "The Target is not an M7 Device.";
    CALL DO_EXIT;
    
    RegDev:

    IF Buff128[126]==0 THEN GOTO M7idok;
    STATUS = -32;
    PRINT "Failed to verify IDCODE.";
    PRINT "M7 Device detected.";
    CALL DO_EXIT;
    
    M7idok:

IDRev =INT(ID[31..28]);
IDFab = INT(ID[24..24]);
ENDPROC;

PROCEDURE DO_VERIFY_IDCODE USES PROC_VERIFY_IDCODE;
WAIT RESET, 5 CYCLES;
CALL PROC_VERIFY_IDCODE;
ENDPROC;

PROCEDURE PROC_BP_VER USES GV;
BOOLEAN PLAYER_VERSION_BOOLEAN[32];
PLAYER_VERSION_BOOLEAN[31..0] = BOOL(PLAYER_VERSION_VARIABLE);

INTEGER PLAYER_MAJOR_VERSION = INT (PLAYER_VERSION_BOOLEAN[23..16]) - SCULPTOR_MAJOR_BASE;
INTEGER PLAYER_MINOR_VERSION = INT (PLAYER_VERSION_BOOLEAN[15..8]) - SCULPTOR_MINOR_BASE;

Buff32[31..0] = BOOL(PLAYER_MAJOR_VERSION);
ACT_UROW_SW_VERSION[6..5] = Buff32[1..0];
Buff32[31..0] = BOOL(PLAYER_MINOR_VERSION);
ACT_UROW_SW_VERSION[4..1] = Buff32[3..0];
ACT_UROW_SW_VERSION[0] = PLAYER_VERSION_BOOLEAN[0];

ENDPROC;

PROCEDURE DO_READ_SECURITY USES GV;
IRSTOP IDLE;
IRSCAN 8,$A4;
IRSTOP IRPAUSE;
WAIT 3 CYCLES;
DRSCAN 44, $00000000000,CAPTURE SecReg[];

ULUWE = SecReg[9];
ULARE = SecReg[8];
ULUPC = SecReg[7];
ULUFE = SecReg[6];
ULUFP = SecReg[5];
ULUFJ = SecReg[4];
ULFLR = SecReg[3];
ULULR = SecReg[2];
ULAWE = SecReg[1];
ULARD = SecReg[0];
ULOPT[1] = SecReg[11];
ULOPT[0] = SecReg[10];
ENDPROC;

PROCEDURE DO_CHECK_R USES DO_READ_SECURITY, GV, DO_EXIT;
CALL DO_READ_SECURITY;

IF ULARE THEN GOTO ArrayEPR;
IF ULARD == 0 THEN ChkSec = 0;
IF ULARD == 0 THEN GOTO SkipRChk;

STATUS = -30;
PRINT "FPGA Array Verification is protected by pass key.";
PRINT "A valid pass key needs to be provided.";
CALL DO_EXIT;

ArrayEPR:
STATUS = -33;
PRINT "FPGA Array Encryption is enforced. Plain text verification is prohibited.";
CALL DO_EXIT;

SkipRChk:
ENDPROC;

PROCEDURE DO_CHECK_W USES DO_READ_SECURITY, GV, DO_EXIT;
CALL DO_READ_SECURITY;
IF ULAWE THEN GOTO ArrayWP;
IF ULARD THEN GOTO ArrayRPW;
IF ULARE THEN GOTO ArrayEPW;
GOTO SkipWChk;

ArrayWP:
STATUS = -28;
PRINT "FPGA Array Write/Erase is protected by pass key.";
PRINT "A valid pass key needs to be provided.";
CALL DO_EXIT;

ArrayRPW:
STATUS = -30;
PRINT "FPGA Array Verification is protected by pass key.";
PRINT "A valid pass key needs to be provided.";
CALL DO_EXIT;

ArrayEPW:
STATUS = -33;
PRINT "FPGA Array Encryption is enforced. Plain text programming is prohibited.";
CALL DO_EXIT;

SkipWChk:
ENDPROC;

PROCEDURE PROC_READ_FSN USES GV;
    ' Read FSN
    IRSCAN 8,$F9;
    DRSTOP IDLE;
    DRSCAN 3,$0;
    DRSTOP DRPAUSE;
    WAIT 1 CYCLES;

    IRSTOP IDLE;
    IRSCAN 8,$BF;
    IRSTOP IRPAUSE;
    WAIT 3 CYCLES;
    WAIT 264 USEC;
    DRSCAN 128, $00000000000000000000000000000000, CAPTURE Buff128[];

ENDPROC;

PROCEDURE DO_INITIALIZE USES GV, DO_EXIT, PROC_VERIFY_IDCODE, DO_CHECK_W, DO_CHECK_R, PROC_READ_FSN, BITSTREAM, PROC_BP_VER, PARAMETERS;

FREQUENCY freq * 1000000;

IRSTOP IRPAUSE;
DRSTOP DRPAUSE;

'Goto reset state
WAIT RESET, 5 CYCLES;

'Verify Device ID
CALL PROC_VERIFY_IDCODE;

' Sample/Preload BSR Value
IRSCAN 8, $01;
DRSCAN 708, BsrPattern[];


' Execute ISC_ENABLE
IRSCAN 8, $80;
DRSTOP IDLE;
DRSCAN 18, #000000000000000000;
DRSTOP DRPAUSE;
WAIT 3 CYCLES; 
WAIT 556 USEC;

IRSCAN 8, $80, CAPTURE Buff32[7..0];

IF Buff32[5] == 0 THEN GOTO EnableOK;

DRSCAN 18, #000000000000000000, CAPTURE ISC_Config_Result[];
STATUS = 5;
PRINT "Failed to enter programming mode.";
EXPORT "ISC_Config_Result", ISC_Config_Result[];
CALL DO_EXIT;

EnableOK:

DRSCAN 18, #000000000000000000, CAPTURE ISC_Config_Result[];
IF ISC_Config_Result[16] THEN GOTO CRCOK;

STATUS = -26;
PRINT "Failed to enter programming mode.";
EXPORT "ISC_Config_Result", ISC_Config_Result[];
CALL DO_EXIT;

CRCOK:

'IDLE State check
IRSCAN 8, $84;
DRSCAN 5, #00000,COMPARE #00100,#00100, PASS;
IF !PASS THEN GOTO jtagOK;
PRINT "Failed to enter programming mode.";

EXIT -25;

jtagOK:
IF !ChkArray THEN GOTO SkipChkArray;
IF !ArrayROnly THEN CALL DO_CHECK_W; 
IF ArrayROnly THEN CALL DO_CHECK_R; 
SkipChkArray:
IF (PLAYER_VERSION_VARIABLE != 0) THEN 
    CALL PROC_BP_VER;

CALL PROC_READ_FSN;

ENDPROC;

PROCEDURE READ_INITIALIZE USES GV, DO_INITIALIZE;
ChkFrom = 0;
ChkArray = 0;
ChkSec = 0;
CALL DO_INITIALIZE;
ENDPROC;

PROCEDURE FW_INITIALIZE USES GV, DO_INITIALIZE;
FromROnly = 0;
ChkFrom = 1;
ChkArray = 0;
CALL DO_INITIALIZE;
ENDPROC;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -