I am trying to use the bus pirate to read the ESMT F25L004A flash chip, looking at the datasheet here. http://www.esmt.com.tw/db/manager/upload/f25l004.pdf I see that the documentation says the opt code to read from the device is 0x03 000000 where 000000 is the beginning address. However the data sheet also describes some sort of Block addressing that I am not sure how to account for.

M5 App defaults except for Normal (H=3.3V, L=GND)

Is the correct syntax? I want to read one byte,

[ 0x03 000000 r:1 ]


I've never used bus pirate before, but how about trying to read the status byte first (it should be simpler and easy to confirm)? Maybe something like: [0x05 r]

Also, maybe your above command should be:

[0x03 0x0 0x0 0x0 r]

Memory appears to be addressed as A23-A0. Where A23-A19 =0, A18-A16 specify the block that you want to address (Table 1), then you specify the specific address using A15-A0 (4 KB of space). To Read Address 0x030000:

[0x03 0x3 0x0 0x0 r]

Good luck,


  • \$\begingroup\$ That was it, the little clip needed a good re-seating and the bits flowed forth. \$\endgroup\$ – Bob R Aug 9 '17 at 4:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.