Hi,
I have an issue about writing and reading data using flash area of nrf9160. I'm using the library of pynrfjprog and the following script for writing/reading data.
Script:
import argparse from pynrfjprog import API # Default settings JLINK_SPEED_KHZ = 4000 DEFAULT_START_ADDR = "0x6F000" DEFAULT_LENGTH = "0x4000" DEFAULT_FILE_NAME = "jflashrw.bin" def convert(str): if str.upper().startswith("0X"): return int(str, 16) else: return int(str) if __name__ == '__main__': # Print banner print "JLink Flash read/write" # Parse arguments parser = argparse.ArgumentParser() parser.add_argument("action", choices=("read", "write"), nargs="?", default="read") parser.add_argument("--start", type=str, nargs="?", default=DEFAULT_START_ADDR) parser.add_argument("--length", type=str, nargs="?", default=DEFAULT_LENGTH) parser.add_argument("--file", type=str, nargs="?", default=DEFAULT_FILE_NAME) args = parser.parse_args() # Open connection to jlink nrfjprog = API.API('NRF91') nrfjprog.open() try: nrfjprog.connect_to_emu_without_snr(jlink_speed_khz=JLINK_SPEED_KHZ) except: print "No jlink detected!" exit() # Perform action if args.action == "read": # Read flash bin_data = nrfjprog.read(addr=convert(args.start), data_len=convert(args.length)) # Write to file fh = open(args.file, "wb") fh.write(bytearray(bin_data)) fh.close() else: # Read file fh = open(args.file, "rb") bin_data = bytearray(fh.read()) fh.close() print len(bin_data), args.length # Write flash if convert(args.length) == len(bin_data): nrfjprog.write(addr=convert(args.start), data=bin_data, control=True) else: print "Number of bytes miss-match!" # Cleanup nrfjprog.close()
But, my written data and read data are different from each other. You can check my outputs.
Screenshot of terminal:
And this view is from text editor:
Do you have any idea about my issue? Thanks for your interest.