sdtest.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. # Test for sdcard block protocol
  2. # Peter hinch 30th Jan 2016
  3. import os, sdcard, pyb
  4. def sdtest():
  5. sd = sdcard.SDCard(pyb.SPI(1), pyb.Pin.board.X21) # Compatible with PCB
  6. pyb.mount(sd, '/fc')
  7. print('Filesystem check')
  8. print(os.listdir('/fc'))
  9. line = 'abcdefghijklmnopqrstuvwxyz\n'
  10. lines = line * 200 # 5400 chars
  11. short = '1234567890\n'
  12. fn = '/fc/rats.txt'
  13. print()
  14. print('Multiple block read/write')
  15. with open(fn,'w') as f:
  16. n = f.write(lines)
  17. print(n, 'bytes written')
  18. n = f.write(short)
  19. print(n, 'bytes written')
  20. n = f.write(lines)
  21. print(n, 'bytes written')
  22. with open(fn,'r') as f:
  23. result1 = f.read()
  24. print(len(result1), 'bytes read')
  25. fn = '/fc/rats1.txt'
  26. print()
  27. print('Single block read/write')
  28. with open(fn,'w') as f:
  29. n = f.write(short) # one block
  30. print(n, 'bytes written')
  31. with open(fn,'r') as f:
  32. result2 = f.read()
  33. print(len(result2), 'bytes read')
  34. pyb.mount(None, '/fc')
  35. print()
  36. print('Verifying data read back')
  37. success = True
  38. if result1 == ''.join((lines, short, lines)):
  39. print('Large file Pass')
  40. else:
  41. print('Large file Fail')
  42. success = False
  43. if result2 == short:
  44. print('Small file Pass')
  45. else:
  46. print('Small file Fail')
  47. success = False
  48. print()
  49. print('Tests', 'passed' if success else 'failed')