emard / LibXSVF-ESP

ESP32/8266 Arduino as (X)SVF JTAG programmer
43 stars 12 forks source link

fail to upload .svf file using esp32 #6

Open OkenKhuman opened 4 years ago

OkenKhuman commented 4 years ago

I have tested this code on esp32 and when I try to upload the code it shows "line 421: Allocating memory failed." on the web page... The svf file is generated using 'Quartus 2' op.zip I attached the file (.svf file) for your concern... please help me

emard commented 4 years ago

SVF command that uploads big chunk (bitstream) created by quartus is single SVF command which has to be buffered in full length (1MB lets say) and replayed backwards to JTAG.

ESP32 can buffer 8-16K max, So SVF must be preprocessed by some script and split to smaller chunks that ESP32 can buffer.

Splitting SVF introduces time delay before next chunk is buffered and ready to JTAG so FPGA should accept that.

On 3/23/20, alwaysLearner notifications@github.com wrote:

I have tested this code on esp32 and when I try to upload the code it shows "line 421: Allocating memory failed." on the web page... The svf file is generated using 'Quartus 2' op.zip I attached the file (.svf file) for your concern... please help me

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/emard/LibXSVF-ESP/issues/6

emard commented 4 years ago

Maybe you can take a look at my another project esp32ecp5 and add altera support.

It doesn't work with SVF but takes binary bitstream so it completely avoids HEX parsing and reverse buffering

On 3/24/20, D EMARD vordah@gmail.com wrote:

SVF command that uploads big chunk (bitstream) created by quartus is single SVF command which has to be buffered in full length (1MB lets say) and replayed backwards to JTAG.

ESP32 can buffer 8-16K max, So SVF must be preprocessed by some script and split to smaller chunks that ESP32 can buffer.

Splitting SVF introduces time delay before next chunk is buffered and ready to JTAG so FPGA should accept that.

On 3/23/20, alwaysLearner notifications@github.com wrote:

I have tested this code on esp32 and when I try to upload the code it shows "line 421: Allocating memory failed." on the web page... The svf file is generated using 'Quartus 2' op.zip I attached the file (.svf file) for your concern... please help me

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/emard/LibXSVF-ESP/issues/6

mpictor commented 3 months ago

[...] SVF must be preprocessed by some script and split to smaller chunks that ESP32 can buffer.

Do you happen to know where I can find such a script? I tried splitting up a xilinx svf to no avail; I guess I got something wrong.

I also tried changing the code to use PSRAM for the buffer, thinking it'd be able to buffer the entire file without issue. However, once again I got the TDO mismatch error.

emard commented 3 months ago

HI I can recommend esp32ecp5 micropython to load directly bitstream to ecp5 and some xilinx and altera would work too

libxsvf is my early attempt. svf must be processed reverse order and for this I haven't written any good script but in python it should be relatively "easy" but esp32ecp5 is still much easier and faster

For ecp5 there is good option to split in svf to small upload parts to not overfill esp32 small buffer, for xilinx and altera i'm didn't try to split but I expect there must be similar option to make it

On Fri, Aug 2, 2024 at 7:17 AM Mark @.***> wrote:

[...] SVF must be preprocessed by some script and split to smaller chunks that ESP32 can buffer.

Do you happen to know where I can find such a script? I tried splitting up a xilinx svf to no avail; I guess I got something wrong.

I also tried changing the code to use PSRAM for the buffer, thinking it'd be able to buffer the entire file without issue. However, once again I got the TDO mismatch error.

— Reply to this email directly, view it on GitHub https://github.com/emard/LibXSVF-ESP/issues/6#issuecomment-2264575612, or unsubscribe https://github.com/notifications/unsubscribe-auth/AC4K2R4NMNEPXZZU7MEOMO3ZPMI63AVCNFSM6AAAAABL324UQCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENRUGU3TKNRRGI . You are receiving this because you commented.Message ID: @.***>

mpictor commented 3 months ago

Interesting, I'd assumed the bitstream format was vendor-specific. I'll have to give this a try.

Reading through the iMPACT documentation, I didn't see any way to split the .svf commands up.

I was under the impression that a misconfiguration could cause a short in the fabric, leading to permanent damage. Any idea how true that is?

emard commented 2 months ago

bitstream format is vendor specific and protocol to upload is specific too but not much different so I have written 3 different esp32 sources that upload bistream for each vendor

I heard of probability for a permanent damage by uploading wrong bitstream but so far I have never broken anything during development, It would be a wonder if a code works changless after it is first written. At least bitstream has a 16 bit checksum which must match before it is executed so some junk was rejected this way

On Mon, Aug 26, 2024 at 1:57 AM Mark @.***> wrote:

Interesting, I'd assumed the bitstream format was vendor-specific. I'll have to give this a try.

I was under the impression that a misconfiguration could cause a short in the fabric, leading to permanent damage. Any idea how true that is?

— Reply to this email directly, view it on GitHub https://github.com/emard/LibXSVF-ESP/issues/6#issuecomment-2309050695, or unsubscribe https://github.com/notifications/unsubscribe-auth/AC4K2R5SAMH34NNZTNDRMHDZTJVMXAVCNFSM6AAAAABL324UQCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBZGA2TANRZGU . You are receiving this because you commented.Message ID: @.***>