{ "info": { "author": "Emmanuel Blot", "author_email": "emmanuel.blot@free.fr", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Other Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Hardware :: Hardware Drivers" ], "description": "pyspiflash\n==========\n\nSPI data flash device drivers (pure Python)\n\nSPI flash devices, also known as *DataFlash* are commonly found in embedded\nproducts, to store firmware, microcode or configuration parameters.\n\nPySpiFlash_ comes with several pure Python drivers for those flash devices, that\ndemonstrate use of SPI devices with PyFtdi_. It could also be useful to dump\nflash contents or recover from a bricked devices.\n\n.. _PySpiFlash : https://github.com/eblot/pyspiflash\n.. _Python: http://python.org/\n.. _PyFtdi : https://github.com/eblot/pyftdi\n\nSupported SPI flash devices\n---------------------------\n\n============= ======= ========== ======== ====== ======= ========== ========== ==========\nVendor Atmel Atmel Macronix SST Winbond Eon Numonix Micron\n------------- ------- ---------- -------- ------ ------- ---------- ---------- ----------\nDataFlash AT45_ AT25_ MX25L_ SST25_ W25Q_ EN25Q M25P N25Q\n============= ======= ========== ======== ====== ======= ========== ========== ==========\nStatus Tested Tested Tested Tested Tested Not tested Not tested Tested\n------------- ------- ---------- -------- ------ ------- ---------- ---------- ----------\nSizes (MiB) 2,4 2,4,8 2,4,8,16 2,4 2,4 8\n------------- ------- ---------- -------- ------ ------- ---------- ---------- ----------\nRead (KiB/s) 1278 1279 1329 642 1252 1315\n------------- ------- ---------- -------- ------ ------- ---------- ---------- ----------\nWrite (KiB/s) 56 64 71 2 63 107\n------------- ------- ---------- -------- ------ ------- ---------- ---------- ----------\nErase (KiB/s) 60 63 31 500 60 84\n============= ======= ========== ======== ====== ======= ========== ========== ==========\n\nNotes about performances\n........................\n\n* *Read* operation is synchronous with SPI bus clock: it therefore only depends\n on the achievable frequency on the SPI bus, which is bound to the highest\n supported frequency of the flash device.\n* *Write* operation depends mostly on the flash device performance, whose upper\n limit comes mostly from the maximum write packet size of the device, as the\n device needs to be polled for completion after each packet: the shorter the\n packet, the higher traffic on the SPI and associated overhead.\n* *Erase* operation depends mostly on the flash device performance, whose fully\n depends on the flash device internal technology, as very few and short\n packets are exchanged over the SPI bus.\n\nSupporting new flash devices of series '25'\n...........................................\nMany flash devices support a common subset to for read/write/erase operations.\nCritical differences appear with lock and protection features, and with\nsecurity features. An NDA is often required to obtain details about the\nadvanced security features of these devices.\n\nIt should be nevertheless quite easy to add support for new flash device\nvariants:\n\n* ``match`` method in the PyFtdi flash device API should be the first to look\n at to detect more compatible flash devices.\n\n.. _AT45: http://www.adestotech.com/sites/default/files/datasheets/doc8784.pdf\n.. _AT25: http://www.atmel.com/Images/doc8693.pdf\n.. _SST25: http://ww1.microchip.com/downloads/en/DeviceDoc/25071A.pdf\n.. _MX25L: http://www.mxic.com.tw/\n.. _W25Q: http://www.nexflash.com/hq/enu/ProductAndSales/ProductLines/FlashMemory/SerialFlash/\n\nSupported SPI flash commands\n----------------------------\n\nIdentification\n The SPI device driver is automatically selected based on the detected SPI\n flash device\n\nRead\n Read byte sequences of any size, starting at any location from the SPI\n flash device\n\nWrite\n Write arbitrary byte sequences of any size, starting at any location to the\n SPI flash device\n\nErase\n Erase SPI flash device blocks, whose size depend on the capabilities of the\n flash device, typically 4KiB and/or 64KiB.\n\nUnlock\n Unlock any protected flash device sectors\n\nDependencies\n------------\n\n* Python_ 3.5 or above is required.\n* PyFTDI_ 0.20 or above is required.\n\nNote about previous releases\n............................\n\nIf you have no choice but using previous releases of Python (including Python\n2.x) or PyFTDI_ , please checkout the latest PySpiFlash_ 0.4.1 which provides\nsupport for these deprecated environmement, but is no longer actively\nmaintained.\n\nPySpiFlash_ heavily relies on PyFtdi_ module to access the SPI flash device.\nThe PyFtdi_ API has been changed several times, see the compatibility matrix\nbelow.\n\nThe ``setup.py`` script should take care of those dependencies.\n\n==================== ===============\nPySpiFlash_ version PyFtdi_ version\n-------------------- ---------------\n0.2.* 0.9 .. 0.10\n0.3.* 0.11+\n0.4.* 0.13.2+\n0.5.* 0.20.0+\n==================== ===============", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/eblot/pyspiflash", "keywords": "driver,ftdi,usb,serial,spi,flash,mtd", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyspiflash", "package_url": "https://pypi.org/project/pyspiflash/", "platform": "", "project_url": "https://pypi.org/project/pyspiflash/", "project_urls": { "Homepage": "http://github.com/eblot/pyspiflash" }, "release_url": "https://pypi.org/project/pyspiflash/0.5.2/", "requires_dist": null, "requires_python": ">=3.5", "summary": "SPI data flash device drivers (pure Python)", "version": "0.5.2" }, "last_serial": 2853798, "releases": { "0.2.0": [], "0.3.0": [], "0.4.0": [ { "comment_text": "", "digests": { "md5": "a84caa59ae9f56a74d3b93ea8bc02ff2", "sha256": "0ed653cad23a7a9b0023dd194d63734e0f709b04ad8f24609a558fb9471559b1" }, "downloads": -1, "filename": "pyspiflash-0.4.0.tar.gz", "has_sig": false, "md5_digest": "a84caa59ae9f56a74d3b93ea8bc02ff2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13214, "upload_time": "2016-04-27T09:59:36", "url": "https://files.pythonhosted.org/packages/49/cc/b029f2830a1959de0ed570e475472a49317a6c151fcda19dd891d9196d33/pyspiflash-0.4.0.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "25e5f9299d64261ee2f1ea8561280c1a", "sha256": "8a97899ce964169bfee3c8c9984551e08c34611a2270e7b27d990d3c15f8b963" }, "downloads": -1, "filename": "pyspiflash-0.5.2.tar.gz", "has_sig": false, "md5_digest": "25e5f9299d64261ee2f1ea8561280c1a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 13704, "upload_time": "2017-05-05T13:47:43", "url": "https://files.pythonhosted.org/packages/62/71/3e1f784d52944a77cefea984e83912fb61ed58187cb6c7ffbc127cdc9f95/pyspiflash-0.5.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "25e5f9299d64261ee2f1ea8561280c1a", "sha256": "8a97899ce964169bfee3c8c9984551e08c34611a2270e7b27d990d3c15f8b963" }, "downloads": -1, "filename": "pyspiflash-0.5.2.tar.gz", "has_sig": false, "md5_digest": "25e5f9299d64261ee2f1ea8561280c1a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 13704, "upload_time": "2017-05-05T13:47:43", "url": "https://files.pythonhosted.org/packages/62/71/3e1f784d52944a77cefea984e83912fb61ed58187cb6c7ffbc127cdc9f95/pyspiflash-0.5.2.tar.gz" } ] }