개요: DS80C400/DS80C410/DS80C411 네트워크 마이크로컨트롤러는 플래시 메모리 칩을 호환성 있게 사용하기 위해서 특정한 전기적 및 타이밍적 요구사항이 있다. 이 애플리케이션 노트에서는 이러한 요구사항을 설명하고 DS80C400/DS80C410/DS80C411과 완벽하게 호환되는 메모리 칩의 예를 제공한다. 전기적으로 호환되지만 ROM-로더 소프트웨어와는 호환되지 않는 플래시 메모리의 삭제 및 프로그래밍에 사용될 수 있는 소프트웨어 코드가 제시된다. 이 애플리케이션 노트를 읽고 고객들은 DS80C400/DS80C410/DS80C411 설계 시 사용할 플래시 메모리를 결정할 수 있게 될 것이다.
개요
이 애플리케이션 노트에서는 DS80C400/DS80C410/DS80C411 네트워크 마이크로컨트롤러와 함께 사용되는 플래시 메모리의 호환성 요구사항을 설명하며, 완벽하게 호환되는 플래시 메모리 칩의 예가 제공된다. 이 노트에서는 또한 전기적으로 호환되지만 ROM 로더 소프트웨어와 호환되지 않는 플래시 메모리의 삭제 및 프로그래밍에 사용될 수 있는 소프트웨어도 제시한다.
이 애플리케이션 노트에서 언급되는 모든 프로그램 코드는 Dallas Semiconductor FTP 서버에서 다운로드 형태로 제공된다.
요구사항
DS80C400/DS80C410/DS80C411과 함께 동작하려면 플래시 메모리 칩이 전기적으로 호환되어야 하고 정의된 타이밍 요구사항을 충족해야 한다 (즉, 충분히 빨라야 한다).
전기
DS80C400/DS80C410/DS80C411은 3.3V 바이트 폭 (x 8) 플래시 메모리를 필요로 한다.
액세스 시간
DS80C400/DS80C410/DS80C411 실행 속도 (CPU 속도)는 크리스털 속도이며 클록 승수기(clock multiplier)를 배가한다. (ROM 로더는 승수기를 건드리지 않고, 승수기는 애플리케이션 소프트웨어에 의해 설정될 수 있다.) 클록 기간 tclcl은 1/(CPU 속도)로 계산된다.
플래시로부터 실행은 플래시 메모리가 해당 데이터 시트에 제시된 DS80C400/DS80C410/DS80C411 타이밍 요구사항을 만족할 때에만 가능하다.
CPU 크리스털은 양호한 직렬 보오 레이트 발생기(baud-rate generator)여야 한다. 또한 100Mbit 네트워크에서의 동작은 CPU 속도가 약 27MHz보다 높을 경우에만 가능하다.
ROM 로더
DS80C400/DS80C410/DS80C411은 직렬 포트와 네트워크를 통해 SRAM 및 플래시의 로딩을 지원하는 내장 ROM을 갖추고 있다. 최대 로더 직렬 포트 보오 레이트는 크리스털 속도에 의해 제한된다. 즉 115200bps는 최소한 20MHz를 필요로 한다.
로더 알고리즘
ROM 로더는 플래시 섹터 삭제 및 플래시 바이트 프로그래밍을 위한 내장 알고리즘을 갖추고 있다. 로더는 64kB의 균일한 섹터 크기를 가정하며 표 2에 표시된 프로그래밍 알고리즘을 사용한다.
Operation
Cycle 1
Cycle 2
Cycle 3
Cycle 4
Cycle 5
Cycle 6
Addr
Data
Addr
Data
Addr
Data
Addr
Data
Addr
Data
Addr
Data
Program
0555
AA
02AA
55
0555
A0
PA
PD
Sector erase
0555
AA
02AA
55
0555
80
0555
AA
02AA
55
0000
30
참고: 표 2는 DS80C4XX 주소 행 A15-A0만을 나열한 것이다. A2-A16은 항상 섹터 주소이다. 모든 숫자는 16진수이다.
플래시 주소 행
대부분의 플래시 메모리는 "매직" 주소와 정합할 때 고순차 주소 비트를 무시한다 (DS80C400/DS80C410/DS80C411은 비트 A12 이상에 주소를 지정한다.) 예를 들어, 프로그래밍 순서를 초기화하려면 첫 번째 주소가 5555h이든 555h이든 상관이 없다.
일부 플래시 메모리는 또한 최하위 주소 비트(워드/바이트 선택 가능 메모리에서 A-1이라 하고, 기타에서는 A0이라 함)를 무시한다. 예를 들어, 주소가 555h이든 554h이든 상관이 없다.
이것은 일부 메모리가 처음 보기에는 비호환처럼 보이지만 DS80C400/DS80C410/DS80C411 로더와의 완벽한 호환성은 표 3 열 (B) 또는 (C)과 같이 플래시 주소 행을 연결하여 달성될 수 있다는 것을 의미한다. 기타 모든 플래시 메모리 (주소 행 A-1 없이, 그리고 표 4에 다르게 나열되지 않은 경우)는 열 (A)처럼 연결되어야 한다.
표 3. 주소 행 연결
DS80C400/410/411 Address Line
(A) Standard
(B) With A-1
(C) See Text
A0
A0
A0
A1
A1
A1
A1
A2
A2
A2
A2
A3
A3
A3
A3
A4
A4
A4
A4
A5
A5
A5
A5
A6
A6
A6
A6
A7
A7
A7
A7
A8
A8
A8
A8
A9
A9
A9
A9
A10
A10
A10
A10
A11
A11
A11
A-1
A0
A12
A12
A11
A12
A13
A13
A12
A13
A14
A14
A13
A14
...
...
...
...
A(n)
A(n)
A(n-1)
A(n)
로더 지원 레벨
완벽하게 지원되는 플래시 메모리는 ROM 로더와 "외부적으로" 동작한다.
부분적으로 지원되는 플래시 메모리는 플래시 섹터를 삭제하기 위해 소프트웨어 도움이 필요하지만, ROM에 의해 프로그래밍이 가능하다. 이 클래스에 속한 대부분의 플래시 메모리는 프로그램될 수 있는 부트 섹터를 가지지만 ROM 로더에 의해 완벽하게 삭제되지 않는다.
지원되지 않는 플래시 메모리는 삭제 및 프로그래밍을 위해 외부 소프트웨어 지원이 필요하다.
표 4는 플래시 메모리 선택을 나타낸 것이며 해당 ROM 로더 호환성을 보여준다.
표 4. 3V 플래시 메모리 (x 8)의 선택
Vendor (ID)
Device (ID)
Size (Byte)
Blocks
ROM Support
Notes
Atmel (1F)
AT49BV001A (4,5)
128K
B
Prog
Tested. ROM can program, but not erase part of the boot sector.
AT49LV008A (21,22)
1M
B
No
AT49LL080 (EB)
1M
U
No
Intel (89)
28F320J3 (16)
4M
O
No
Macronix (C2)
MX29LV081 (38)
1M
U
Full
Tested. Data sheet shows incompatibility for sector erase, but sector erase does work in practice.
MX29LV017B (C8)
2M
U
Full
Tested.
MX29LV033A (A3)
4M
U
Full
Micron (2C,89)
MT28F004B3 (70,71)
512K
B
No
MT28F400B3 (70,71)
512K
B
No
MT28F008B3 (9C,9D)
1M
B
No
MT28F320J3 (16)
4M
O
No
Sharp (89)
LH28F016SC (AA)
2M
U
No
Spansion (01) (AMD/Fujitsu)
AM29LV200B (3B,BF)
256K
B
Prog
Tested. Requires address line connection (B). ROM can program, but not erase part of the boot sector.
AM29LV004B (B5,B6)
512K
B
Prog
Tested. ROM can program, but not erase part of the boot sector.
AM29LV040B (4F)
512K
U
Full
Tested.
AM29LV400B (B9,BA)
512K
B
Prog
Tested. Requires address line connection (B). ROM can program, but not erase part of the boot sector.
AM29LV008B (37,3E)
1M
B
Prog
Tested. ROM can program, but not erase part of the boot sector.
AM29LV081B (38)
1M
U
Full
Tested.
AM29LV800 (5B,DA)
1M
B
Prog
Tested. Requires address line connection (B). ROM can program, but not erase part of the boot sector.
AM29LV017D (4F)
2M
U
Full
Tested.
AM29LV116D (4C,C7)
2M
B
Prog
Tested. ROM can program, but not erase part of the boot sector.
AM29LV160B/D or S29AL016D (49,C4)
2M
B
Prog
Tested. Requires address line connection (B). ROM can program, but not erase part of the boot sector.
AM29LV033C or S29AL032D Model 0 (A3)
4M
U
Full
Tested.
AM29LV320D or S29AL032D Model 3/4 (F6,F9)
4M
B
Prog
Tested. Requires address line connection (B). ROM can program, but not erase part of the boot sector.
SST (BF)
SST39LF040 (D7)
512K
O
No
SST39LF080 (D8)
1M
U
No
SST39VF1681/2 (C8)
2M
U
Full
Requires address line connection (C).
ST Microelectronics (20)
M29W004B (EA,EB)
512K
B
Prog
ROM can program, but not erase part of the boot sector.
M29W040B (E3)
512K
U
Prog
Tested. Should be fully supported according to data sheet, but sector erase algorithm does not work in practice.
M29W008D (D2,DC)
1M
B
Prog
Tested. ROM can program, but not erase part of the boot sector.
M29W800D (D7, 5B)
1M
B
No
Tested.
Winbond (DA)
W39L040A (D6)
512K
U
No
범례:
블록 열: B = 소자가 부트 블록을 가짐. U = 균일한 64kB 블록 크기. O = 64kB 이외의 균일한 블록 크기.
벤더 및 소자 ID는 16진수임.
ROM 지원 열: 완벽한 지원. ROM 프로그래밍 가능. 또는 지원되지 않음.
참고: Dallas Semiconductor는 모든 소자를 시험하지 않는다. 제조 공정과 소자 데이터는 변경될 수 있으므로 설계에 들어가기 전에 호환성을 검증한다.
플래시 소프트웨어
특정 메모리가 ROM 로더에 의해 완벽하게 지원되지 않을 경우, 이 메모리는 SRAM으로 로드되는 소프트웨어에 의해 삭제/프로그래밍될 수 있다. 리스트 1은 플래시 칩을 삭제하는 소프트웨어를 나타낸 것이고, 리스트 2는 64kB를 SRAM에서 플래시로 복사하여 플래시 섹터를 프로그래밍하는 방법을 보여준다. 이러한 프로그램 예는 일반적으로 특정 플래시의 프로그래밍 알고리즘에 부합하도록 수정되어야 한다.
프로그램 예는 첫 64KB SRAM에 로드된다 ("뱅크 0"). MTK를 사용할 때는 "Clear Heap" 옵션을 끈다. 부분적으로 지원되는 플래시 메모리를 프로그래밍하기 위해서 ROM 로더를 사용할 경우 (칩 삭제 프로그램 실행 후), JavaKit의 "AutoZap" 옵션을 끄거나 MTK의 "Erase Flash" 옵션을 끈다.
리스트 1. 플래시 칩 삭제 (chiperase.asm).
;****************************************************************************
;* Copyright (C) 2004 Dallas Semiconductor Corporation, All Rights Reserved.
;*
;* Permission is hereby granted, free of charge, to any person obtaining a
;* copy of this software and associated documentation files (the "Software"),
;* to deal in the Software without restriction, including without limitation
;* the rights to use, copy, modify, merge, publish, distribute, sublicense,
;* and/or sell copies of the Software, and to permit persons to whom the
;* Software is furnished to do so, subject to the following conditions:
;*
;* The above copyright notice and this permission notice shall be included
;* in all copies or substantial portions of the Software.
;*
;* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
;* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
;* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
;* IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES
;* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
;* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
;* OTHER DEALINGS IN THE SOFTWARE.
;*
;* Except as contained in this notice, the name of Dallas Semiconductor
;* shall not be used except as stated in the Dallas Semiconductor
;* Branding Policy.
;****************************************************************************
;
; This program demonstrates how to erase a flash memory chip that is not
; supported by the ROM loader of the networked microcontrollers.
;
; To build this program, run
; macro chiperase.asm
; a390 -d -l chiperase.mpp
;
; To execute, load into SRAM and use loader commands 'B0', 'X0'.
;
; Note: When using MTK to load this code, be sure to disable the "Clear Heap"
; option.
;
; The flash memory we want to erase is connected to CE2\, or address 400000h,
; since the ROM uses 2 MB per chip enable.
FLASH_ADDRESS EQU 400000h
; Different flash memories use different addresses to "tickle" flash programming/
; erase operation.
; Erase ST M29W040
; FLASH_TICKLE0 EQU (FLASH_ADDRESS or 555h)
; FLASH_TICKLE1 EQU (FLASH_ADDRESS or 2aah)
; Erase AM29LV200BT
FLASH_TICKLE0 EQU (FLASH_ADDRESS or 0aaah)
FLASH_TICKLE1 EQU (FLASH_ADDRESS or 555h)
org 000000h
start:
; The ROM enables 24 bit mode and disables interrupts.
; No other initialization is necessary.
; Start flash chip erase
; 1st Cycle
mov dptr, #FLASH_TICKLE0
mov a, #0aah
movx @dptr, a
; 2nd Cycle
mov dptr, #FLASH_TICKLE1
mov a, #55h
movx @dptr, a
; 3rd Cycle
mov dptr, #FLASH_TICKLE0
mov a, #80h
movx @dptr, a
; 4th Cycle
mov dptr, #FLASH_TICKLE0
mov a, #0aah
movx @dptr, a
; 5th Cycle
mov dptr, #FLASH_TICKLE1
mov a, #55h
movx @dptr, a
; 6th Cycle
mov dptr, #FLASH_TICKLE0
mov a, #10h
movx @dptr, a
; Wait for operation to complete
mov dptr, #FLASH_ADDRESS
wait:
movx a, @dptr
cjne a, #0ffh, wait
; Reset
mov dptr, #FLASH_ADDRESS
mov a, #0f0h
movx @dptr, a
; Print success message
mov a, #'D'
acall printchar
mov a, #'O'
acall printchar
mov a, #'N'
acall printchar
mov a, #'E'
acall printchar
; Done!
sjmp $
; Serial port 0 is initialized by the loader. Printing
; a character is therefore trivial.
tix bit scon.1
printchar:
jnb tix, $
clr tix
mov sbuf, a
jnb tix, $
ret
end
리스트 2. 지원되지 않는 플래시 프로그래밍 (flashprogram.asm).
;****************************************************************************
;* Copyright (C) 2004 Dallas Semiconductor Corporation, All Rights Reserved.
;*
;* Permission is hereby granted, free of charge, to any person obtaining a
;* copy of this software and associated documentation files (the "Software"),
;* to deal in the Software without restriction, including without limitation
;* the rights to use, copy, modify, merge, publish, distribute, sublicense,
;* and/or sell copies of the Software, and to permit persons to whom the
;* Software is furnished to do so, subject to the following conditions:
;*
;* The above copyright notice and this permission notice shall be included
;* in all copies or substantial portions of the Software.
;*
;* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
;* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
;* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
;* IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES
;* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
;* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
;* OTHER DEALINGS IN THE SOFTWARE.
;*
;* Except as contained in this notice, the name of Dallas Semiconductor
;* shall not be used except as stated in the Dallas Semiconductor
;* Branding Policy.
;****************************************************************************
;
; This program demonstrates how to erase a flash memory chip that is not
; supported by the ROM loader of the networked microcontrollers.
;
; To build this program, run
; macro flashprogram.asm
; a390 -d -l flashprogram.mpp
;
; To execute, first load the data you wish to program into SRAM memory in
; bank 1 (010000h - 01ffffh). Then, load this code into SRAM and use
; the loader commands 'B0', 'X100'.
;
; Note: When using MTK to load this code, be sure to disable the "Clear Heap"
; option.
;
; The flash memory we want to program is connected to CE2\, or address 400000h,
; since the ROM uses 2 MB per chip enable.
FLASH_ADDRESS EQU 400000h
; Different flash memories use different addresses to "tickle" flash programming/
; erase operation.
; Byte Program AM29LV200BT
FLASH_TICKLE0 EQU (FLASH_ADDRESS or 0aaah)
FLASH_TICKLE1 EQU (FLASH_ADDRESS or 555h)
; Address of programming buffer in SRAM
PROG_BUFFER EQU 010000h
; We want to program a whole 64 KB block
PROG_SIZE EQU 10000h
; This example program uses three datapointers
dps equ 086h
org 000100h
start:
; The ROM enables 24 bit mode and disables interrupts.
; No other initialization is necessary.
; Make sure r2 is in register bank 0
mov psw, #0
; Number of bytes to program
mov r1, #high(PROG_SIZE)
mov r0, #low(PROG_SIZE)
; Source
mov dps, #1
mov dptr, #PROG_BUFFER
; Destination
mov dps, #8
mov dptr, #FLASH_ADDRESS
loop:
; Start flash chip program for this byte
; Get source byte
mov dps, #1
movx a, @dptr
inc dptr
; Save byte we wish to program
mov r2, a
; No need to write the same byte again
; (also prevents writing of 0ffh)
mov dps, #8
movx a, @dptr
xrl a, r2
jz next
; Select dptr0
mov dps, #0
; 1st Cycle
mov dptr, #FLASH_TICKLE0
mov a, #0aah
movx @dptr, a
; 2nd Cycle
mov dptr, #FLASH_TICKLE1
mov a, #55h
movx @dptr, a
; 3rd Cycle
mov dptr, #FLASH_TICKLE0
mov a, #0a0h
movx @dptr, a
; 4th Cycle: Put destination byte
mov dps, #8
mov a, r2
movx @dptr, a
; Wait for operation to complete
wait:
movx a, @dptr
cjne a, 2, wait
next:
mov dps, #8
inc dptr
djnz r0, loop
; Display progress indicator
mov a, #'.'
acall printchar
djnz r1, loop
; Reset
mov dptr, #FLASH_ADDRESS
mov a, #0f0h
movx @dptr, a
; Print success message
mov a, #13
acall printchar
mov a, #10
acall printchar
mov a, #'D'
acall printchar
mov a, #'O'
acall printchar
mov a, #'N'
acall printchar
mov a, #'E'
acall printchar
; Done!
sjmp $
; Serial port 0 is initialized by the loader. Printing
; a character is therefore trivial.
tix bit scon.1
printchar:
jnb tix, $
clr tix
mov sbuf, a
jnb tix, $
ret
end
플래시 식별
대부분의 플래시 메모리는 자동선택 능력을 사용하여 식별될 수 있다. 리스트 3은 수많은 플래시 메모리 칩의 벤더 및 소자를 디코딩하는 C 프로그램을 나타낸 것이다.
리스트 3. 플래시 식별 (identify.c).
/* ---------------------------------------------------------------------------
* Copyright (C) 2004 Dallas Semiconductor Corporation, All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES
* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Except as contained in this notice, the name of Dallas Semiconductor
* shall not be used except as stated in the Dallas Semiconductor
* Branding Policy.
* ---------------------------------------------------------------------------
*/
/*
* Identify - Tries to Identify Flash Memory Make/Model.
* Run from bank 20 (using loader commands B20, X)
*/
#include
#include
void main()
{
unsigned char vendor, device, ce;
puts("DS80C400/DS80C410/DS80C411 Flash Memory Identification");
do {
printf("
Identify flash at which chip enable? ");
do {
putchar(ce = _getkey());
if ((ce < '0') || (ce > '7'))
printf(" 0-7> ");
} while ((ce < '0') || (ce > '7'));
puts("
");
ce -= '0';
ce <<= 5; // 2 MB per chip enable
AP = ce;
#pragma asm
/* Tickle Flash Memory */
mov dptr, #0x5555
mov dpx, ap
mov a, #0xaa
movx @dptr, a
mov dptr, #0xaaaa
mov dpx, ap
mov a, #0x55
movx @dptr, a
/* Read ID Command */
mov dptr, #0x5555
mov dpx, ap
mov a, #0x90
movx @dptr, a
/* Read Manufacturer ID */
mov dptr, #0
mov dpx, ap
movx a, @dptr
#pragma endasm
vendor = ACC;
#pragma asm
/* Reset Flash */
mov dptr, #0
mov dpx, ap
mov a, #0xf0
movx @dptr, a
mov a, #0xff
movx @dptr, a
#pragma endasm
#pragma asm
/* Tickle Flash Memory */
mov dptr, #0x5555
mov dpx, ap
mov a, #0xaa
movx @dptr, a
mov dptr, #0xaaaa
mov dpx, ap
mov a, #0x55
movx @dptr, a
/* Read ID Command */
mov dptr, #0x5555
mov dpx, ap
mov a, #0x90
movx @dptr, a
/* Read Manufacturer ID */
mov dptr, #0x01
mov dpx, ap
movx a, @dptr
#pragma endasm
device = ACC;
#pragma asm
/* Reset Flash */
mov dptr, #0
mov dpx, ap
mov a, #0xf0
movx @dptr, a
mov a, #0xff
movx @dptr, a
#pragma endasm
printf("Flash memory at CE%bu: Vendor ID %02bX, Device ID %02bX.
--> ", ce >> 5, vendor, device);
switch (vendor) {
case 0x01: printf("Spansion AM");
switch (device) {
case 0x37: puts("29LV008 Top Boot"); break;
case 0x38: puts("29LV081"); break;
case 0x3b: puts("29LV200 Top Boot"); break;
case 0x3e: puts("29LV008 Bottom Boot"); break;
case 0x49: puts("29LV160 Bottom Boot"); break;
case 0x4c: puts("29LV116 Bottom Boot"); break;
case 0x4f: puts("29LV040"); break;
case 0x5b: puts("29LV800 Bottom Boot"); break;
case 0xa3: puts("29LV033"); break;
case 0xb5: puts("29LV004 Top Boot"); break;
case 0xb6: puts("29LV004 Bottom Boot"); break;
case 0xb9: puts("29LV400 Top Boot"); break;
case 0xba: puts("29LV400 Bottom Boot"); break;
case 0xbf: puts("29LV200 Bottom Boot"); break;
case 0xc4: puts("29LV160 Top Boot"); break;
case 0xc7: puts("29LV116 Top Boot"); break;
case 0xc8: puts("29LV017"); break;
case 0xda: puts("29LV800 Top Boot"); break;
case 0xf6: puts("29LV320 Top Boot"); break;
case 0xf9: puts("29LV320 Bottom Boot"); break;
default: puts(" ????"); break;
}
break;
case 0x1f: printf("Atmel AT");
switch (device) {
case 0x21: puts("49BV/LV008 T"); break;
case 0x22: puts("49BV/LV008"); break;
case 0xeb: puts("49LL080"); break;
default: puts(" ????"); break;
}
break;
case 0x20: printf("ST M");
switch (device) {
case 0x5b: puts("29W800 Bottom Boot"); break;
case 0xd2: puts("29W008 Top Boot"); break;
case 0xd7: puts("29W800 Top Boot"); break;
case 0xdc: puts("29W008 Bottom Boot"); break;
case 0xe3: puts("29W040"); break;
case 0xea: puts("29W004 Top Boot"); break;
case 0xeb: puts("29W004 Bottom Boot"); break;
default: puts(" ????"); break;
}
break;
case 0x89: printf("Intel or Sharp LH or "); // fall through
case 0x2c: printf("Micron MT");
switch (device) {
case 0x16: puts("28F320J3"); break;
case 0x70: puts("28F004B3/28F400B3 Top Boot"); break;
case 0x71: puts("28F004B3/28F400B3 Bottom Boot"); break;
case 0x9c: puts("28F008B3/28F800B3 Top Boot"); break;
case 0x9d: puts("28F008B3/28F800B3 Bottom Boot"); break;
case 0xaa: puts("28F016SC"); break;
default: puts(" ????"); break;
}
break;
case 0xbf: printf("SST SST");
switch (device) {
case 0xc8: puts("39VF1681"); break;
case 0xc9: puts("39VF1682"); break;
case 0xd4: puts("39LF/VF512"); break;
case 0xd5: puts("39LF/VF010"); break;
case 0xd6: puts("39LF/VF020"); break;
case 0xd7: puts("39LF/VF040"); break;
case 0xd8: puts("39LF/VF080"); break;
default: puts(" ????"); break;
}
break;
case 0x02:
case 0xc2: printf("Macronix MX");
switch (device) {
case 0x38: puts("29LV081"); break;
case 0xa3: puts("29LV033"); break;
case 0xc8: puts("29LV017"); break;
default: puts(" ????"); break;
}
break;
case 0xda: printf("Winbond W");
switch (device) {
case 0xd6: puts("39L040"); break;
default: puts(" ????"); break;
}
break;
default: puts("Unknown vendor/unknown device");
break;
}
} while (1);
}
결론
이 애플리케이션 노트를 참조하여 고객들은 DS80C400/DS80C410/DS80C411 설계 시 사용할 플래시 메모리를 결정할 수 있을 것이다.
Maxim/Dallas Semiconductor assumes no responsibility for devices listed in this application note that are not manufactured by Maxim/Dallas Semiconductor. The user assumes full responsibility for certifying the suitability, including electrical specifications and availability, of a particular device in their application. Please contact the memory device vendors for more information on their products.