pyflashsim.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import sys
  5. from sharedlibrary import GenericLibrary
  6. from ctypes import *
  7. class libflashsim(GenericLibrary):
  8. dllname = 'tests/flashsim.so'
  9. functions = [
  10. ['flashsim_open', [c_char_p, c_int, c_int], c_void_p],
  11. ['flashsim_sector_erase', [c_void_p, c_int], None],
  12. ['flashsim_read', [c_void_p, c_int, c_void_p, c_int], None],
  13. ['flashsim_program', [c_void_p, c_int, c_void_p, c_int], None],
  14. ['flashsim_close', [c_void_p], None],
  15. ]
  16. class FlashSim(object):
  17. def __init__(self, name, size, sector_size):
  18. self.libflashsim = libflashsim()
  19. self.sim = self.libflashsim.flashsim_open(name ,size, sector_size)
  20. def sector_erase(self, addr):
  21. self.libflashsim.flashsim_sector_erase(self.sim, addr)
  22. def read(self, addr, size):
  23. buf = create_string_buffer(size)
  24. self.libflashsim.flashsim_read(self.sim, addr, buf, size)
  25. return buf.raw
  26. def program(self, addr, data):
  27. self.libflashsim.flashsim_program(self.sim, addr, data, len(data))
  28. def __del__(self):
  29. self.libflashsim.flashsim_close(self.sim)