Soporte para Flash W25Q128
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Soporte para Flash W25Q128
Yo si hay gente interesada puedo vender los chips programados. Desoldar el chip no es complicado, pero hay que tener cuidado para no cargarte la PCB si se usa pistola de calor. Yo lo desueldo usando 2 soldadores y me lleva 5 minutos el reemplazo. Ahora mismo no tengo chips Q128 de sobra porque pedí los justos para reemplazar los de los ZX-Unos que me quedaban en stock, pero tengo un pedido en camino y puedo pedir más si es necesario.
Re: Soporte para Flash W25Q128
Me interesarían en princio 2 unidades.
¿La compatibilidad con los ZX-Unos v2 está comprobada?
¿La compatibilidad con los ZX-Unos v2 está comprobada?
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Soporte para Flash W25Q128
Sí, porque es la misma BIOS. Abriré un hilo nuevo.Mejias3D escribió:Me interesarían en princio 2 unidades.
¿La compatibilidad con los ZX-Unos v2 está comprobada?
Re: Soporte para Flash W25Q128
¿Con el G540 se puede programar aunque no tenga esa opción? Porque no veo la opción de seleccionar el chip correcto.carmeloco escribió: Some programmers, don't have the QE option. I have too a Genius G540, and don't has the QE option.
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Soporte para Flash W25Q128
Según la lista acepta el Q32, por lo que puedes seleccionarlo como ese chip y luego ir añadiendo cores del 9 en adelante. El problema es que no sé si tendrá la opción QE. Hace falta un adaptador como este (el de 200mil):skywalky escribió:¿Con el G540 se puede programar aunque no tenga esa opción? Porque no veo la opción de seleccionar el chip correcto.carmeloco escribió: Some programmers, don't have the QE option. I have too a Genius G540, and don't has the QE option.
http://www.ebay.com/itm//112246653834
Con sólo el adaptador y el ZX-Uno también se puede grabar. Hay un core especial para ello:
http://www.atc.us.es/svn/zxuno/cores/sp ... uno_v4.bit
Re: Soporte para Flash W25Q128
Gracias, el adaptador lo tengo, probaré con otro programador que tampoco acepta la 128 pero si la 32, a ver si tiene la opción QE.
Lo de sólo el adaptador y el core, ¿como se hace? No lo entiendo muy bien.
Lo de sólo el adaptador y el core, ¿como se hace? No lo entiendo muy bien.
Re: Soporte para Flash W25Q128
Con el G540 no se puede grabar por no tener la opcion QE. Yo me compré el TL866 para poder grabarlos durante la fabricacion de mis
De todas formas, se puede soldar en la placa, y hacer un recovery con una Raspberry Pi, si no se tiene el adaptador Xilinx.
De todas formas, se puede soldar en la placa, y hacer un recovery con una Raspberry Pi, si no se tiene el adaptador Xilinx.
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Soporte para Flash W25Q128
Aquí tienes el conexionado del chip flash al bus de expansión:
Y el upgr16m.asm modificado es este:
Adjunto el compilado. Recuerda que la ROM con la que arranques debe estar rooteada.
Código: Seleccionar todo
vcc, hold, wp-> 3.3V
gnd-> GND
clk-> P40
di-> P44
do-> P27
cs-> P51
Código: Seleccionar todo
output UPGR16M
define FA_READ 0x01
define M_GETSETDRV 0x89
define F_OPEN 0x9a
define F_CLOSE 0x9b
define F_READ 0x9d
define F_SEEK 0x9f
define zxuno_port $fc3b
define flash_spi 2
define flash_cs 48
macro wreg dir, dato
call rst28
defb dir, dato
endm
org $2000 ; comienzo de la ejecución de los comandos ESXDOS
Main ld bc, zxuno_port
out (c), 0
inc b
in f, (c)
jp p, Nonlock
call Print
dz 'ROM not rooted'
ret
Nonlock xor a
rst $08
db M_GETSETDRV ; A = unidad actual
jr nc, SDCard
call Print
dz 'SD card not inserted'
ret
SDCard ld b, FA_READ ; B = modo de apertura
ld hl, FileName ; HL = Puntero al nombre del fichero (ASCIIZ)
rst $08
db F_OPEN
ld (handle+1), a
jr nc, FileFound
call Print
dz 'File FLASH not found'
ret
FileFound ld l, 0
ld bc, 0
ld de, 0
rst $08
db F_SEEK
call Print
dz 'No '
ld a, (puerto+2)
add a, $30
rst $10
call repe
jr nz, nfallo
; call hex
call Print
dz 'Flash error'
jr Next
nfallo halt
halt
;jr Verify;call hex
ld ix, $0400
ld de, $0000
exx
Bucle ld a, ixl
inc a
and $3f
jr nz, punto
ld a, '.'
exx
push de
rst $10
pop de
exx
punto ld hl, $8000
ld bc, $4000
handle ld a, 0
rst $08
db F_READ
jr nc, ReadOK
call Print
dz 'Read Error'
ret
ReadOK ld a, $40
ld hl, $8000
exx
call wrflsh
inc de
exx
dec ixl
jr nz, Bucle
dec ixh
jr nz, Bucle
halt
halt
Verify ld de, $8000
ld hl, $0040
ld a, 2
call rdflsh
ld de, $8000
ld hl, 0
Verify1 ex de, hl
ld c, (hl)
inc l
ld b, (hl)
inc hl
ex de, hl
add hl, bc
bit 1, d
jr z, Verify1
ld a, h
call hex
ld a, l
call hex
halt
halt
Next ld a, 13
rst $10
ld a, (handle+1)
rst $08
db F_CLOSE
ret
Print pop hl
db $3e
Print1 rst $10
ld a, (hl)
inc hl
or a
jr nz, Print1
jp (hl)
; ------------------------
; Write to SPI flash
; Parameters:
; A: number of pages (256 bytes) to write
; DE: target address without last byte
; BC': zxuno_port+$100 (constant)
; HL': source address from memory
; ------------------------
wrflsh ex af, af'
wrfls1 call puerto
wreg flash_spi, 6 ; envío write enable
call flashcs
call puerto
wreg flash_spi, $20 ; envío sector erase
out (c), d
out (c), e
out (c), a
call flashcs
wrfls2 call waits5
call puerto
wreg flash_spi, 6 ; envío write enable
call flashcs
call puerto
wreg flash_spi, 2 ; page program
out (c), d
out (c), e
out (c), a
ld a, $20
exx
ld bc, zxuno_port+$100
wrfls3 inc b
outi
inc b
outi
inc b
outi
inc b
outi
inc b
outi
inc b
outi
inc b
outi
inc b
outi
dec a
jr nz, wrfls3
exx
call flashcs
ex af, af'
dec a
jr z, waits5
ex af, af'
inc e
ld a, e
and $0f
jr nz, wrfls2
ld hl, wrfls1
push hl
waits5 call puerto
wreg flash_spi, 5 ; envío read status
in a, (c)
waits6 in a, (c)
and 1
jr nz, waits6
flashcs push af
ld a, (puerto+2)
rrca
jr c, flashcs1
wreg flash_cs, $ff
pop af
ret
flashcs1 wreg flash_cs+1, $ff
pop af
ret
puerto push af
ld a, 0
srl a
push af
ld bc, zxuno_port
ld a, flash_cs
adc a, 0
out (c), a
pop bc
inc b
ld a, $7f
puerto1 rlca
djnz puerto1
ld bc, zxuno_port + $100
out (c), a
pop af
ret
rst28 ld bc, zxuno_port + $100
pop hl
outi
ld b, (zxuno_port >> 8)+2
outi
jp (hl)
repe ld e, 0
repe1 call puerto
wreg flash_spi, 6 ; envío write enable
call flashcs
call puerto
wreg flash_spi, 1 ; envío write register status
out (c), 0
ld a, 2
out (c), a
call flashcs
call puerto
wreg flash_spi, $35 ; envío write register status
in a, (c)
in a, (c)
call flashcs
and 2
ret nz
dec e
jr nz, repe1
ret
; ------------------------
; Read from SPI flash
; Parameters:
; DE: destination address
; HL: source address without last byte
; A: number of pages (256 bytes) to read
; ------------------------
rdflsh ex af, af'
xor a
push hl
call puerto
wreg flash_spi, 3 ; envio flash_spi un 3, orden de lectura
pop hl
push hl
out (c), h
out (c), l
out (c), a
ex af, af'
ex de, hl
in f, (c)
rdfls1 ld e, $20
rdfls2 ini
inc b
ini
inc b
ini
inc b
ini
inc b
ini
inc b
ini
inc b
ini
inc b
ini
inc b
dec e
jr nz, rdfls2
dec a
jr nz, rdfls1
call flashcs
pop hl
ret
hex push af
and $f0
rrca
rrca
rrca
rrca
cp $0a
jr c, mayo
add a, 7
mayo add a, $30
rst $10
pop af
and $0f
cp $0a
jr c, maya
add a, 7
maya add a, $30
rst $10
ret
FileName dz 'FLASH.ZX1'
skywalky escribió:Gracias, el adaptador lo tengo, probaré con otro programador que tampoco acepta la 128 pero si la 32, a ver si tiene la opción QE.
Lo de sólo el adaptador y el core, ¿como se hace? No lo entiendo muy bien.
- Adjuntos
-
- UPGR16M.zip
- (618 Bytes) Descargado 304 veces
Re: Soporte para Flash W25Q128
Muchas gracias, luego lo pruebo.
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Soporte para Flash W25Q128
Recuerda bajarte el core especial (T21-MULTISPI) y que la ROM esté rooteada.skywalky escribió:Muchas gracias, luego lo pruebo.