From dbf78949172dcecb159f6c3b009d42990bf77b48 Mon Sep 17 00:00:00 2001 From: dehanj Date: Tue, 29 Aug 2023 13:34:06 +0200 Subject: [PATCH] Break out pynvcm into its own repo - Remove unnecessary files. - Update README. - Update LICENSE and SPDX: pynvcm uses ISC license, as per origin. Co-authored-by: Michael Cardell Widerkrantz --- .github/workflows/ci.yaml | 29 +++++ LICENSE | 257 ++------------------------------------ README.md | 49 ++++---- iceflasher.py | 3 + pybin2nvcm.py | 2 + pynvcm.py | 4 + tools/spdx-ensure | 5 +- 7 files changed, 83 insertions(+), 266 deletions(-) create mode 100644 .github/workflows/ci.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..10d60fc --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,29 @@ +name: ci + +on: + push: + branches: + - 'main' + pull_request: {} + # allow manual runs: + workflow_dispatch: {} + +jobs: + ci: + runs-on: ubuntu-latest + container: + image: ghcr.io/tillitis/tkey-builder:2 + steps: + - name: checkout + uses: actions/checkout@v3 + with: + # fetch-depth: 0 + persist-credentials: false + + - name: fix + # https://github.com/actions/runner-images/issues/6775 + run: | + git config --global --add safe.directory "$GITHUB_WORKSPACE" + + - name: check for SPDX tags + run: ./tools/spdx-ensure diff --git a/LICENSE b/LICENSE index 708a516..8040e23 100644 --- a/LICENSE +++ b/LICENSE @@ -1,245 +1,14 @@ -GNU GENERAL PUBLIC LICENSE +Permission to use, copy, modify, and/or distribute this software +for any purpose with or without fee is hereby granted, provided +that the above copyright notice and this permission notice +appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Version 2, June 1991 - - -Copyright (C) 1989, 1991 Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - -Preamble - -The licenses for most software are designed to take away your freedom to share and -change it. By contrast, the GNU General Public License is intended to guarantee your -freedom to share and change free software--to make sure the software is free for all -its users. This General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to using it. -(Some other Free Software Foundation software is covered by the GNU Lesser General -Public License instead.) You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General -Public Licenses are designed to make sure that you have the freedom to distribute -copies of free software (and charge for this service if you wish), that you receive -source code or can get it if you want it, that you can change the software or use -pieces of it in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid anyone to deny you -these rights or to ask you to surrender the rights. These restrictions translate to -certain responsibilities for you if you distribute copies of the software, or if you -modify it. - -For example, if you distribute copies of such a program, whether gratis or for a -fee, you must give the recipients all the rights that you have. You must make sure -that they, too, receive or can get the source code. And you must show them these -terms so they know their rights. - -We protect your rights with two steps: (1) copyright the software, and (2) offer you -this license which gives you legal permission to copy, distribute and/or modify the -software. - -Also, for each author's protection and ours, we want to make certain that everyone -understands that there is no warranty for this free software. If the software is -modified by someone else and passed on, we want its recipients to know that what -they have is not the original, so that any problems introduced by others will not -reflect on the original authors' reputations. - -Finally, any free program is threatened constantly by software patents. We wish to -avoid the danger that redistributors of a free program will individually obtain -patent licenses, in effect making the program proprietary. To prevent this, we have -made it clear that any patent must be licensed for everyone's free use or not -licensed at all. - -The precise terms and conditions for copying, distribution and modification follow. - - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains a notice placed -by the copyright holder saying it may be distributed under the terms of this General -Public License. The "Program", below, refers to any such program or work, and a -"work based on the Program" means either the Program or any derivative work under -copyright law: that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another language. -(Hereinafter, translation is included without limitation in the term -"modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not covered by this -License; they are outside its scope. The act of running the Program is not -restricted, and the output from the Program is covered only if its contents -constitute a work based on the Program (independent of having been made by running -the Program). Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and appropriately publish -on each copy an appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any warranty; and -give any other recipients of the Program a copy of this License along with the -Program. - -You may charge a fee for the physical act of transferring a copy, and you may at -your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion of it, thus -forming a work based on the Program, and copy and distribute such modifications or -work under the terms of Section 1 above, provided that you also meet all of these -conditions: - - a) You must cause the modified files to carry prominent notices stating that you - changed the files and the date of any change. - b) You must cause any work that you distribute or publish, that in whole or in - part contains or is derived from the Program or any part thereof, to be licensed - as a whole at no charge to all third parties under the terms of this License. - c) If the modified program normally reads commands interactively when run, you - must cause it, when started running for such interactive use in the most - ordinary way, to print or display an announcement including an appropriate - copyright notice and a notice that there is no warranty (or else, saying that - you provide a warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. (Exception: - if the Program itself is interactive but does not normally print such an - announcement, your work based on the Program is not required to print an - announcement.) - -These requirements apply to the modified work as a whole. If identifiable sections -of that work are not derived from the Program, and can be reasonably considered -independent and separate works in themselves, then this License, and its terms, do -not apply to those sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based on the -Program, the distribution of the whole must be on the terms of this License, whose -permissions for other licensees extend to the entire whole, and thus to each and -every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your rights to -work written entirely by you; rather, the intent is to exercise the right to control -the distribution of derivative or collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program with the -Program (or with a work based on the Program) on a volume of a storage or -distribution medium does not bring the other work under the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, under Section 2) -in object code or executable form under the terms of Sections 1 and 2 above provided -that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable source code, - which must be distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - b) Accompany it with a written offer, valid for at least three years, to give - any third party, for a charge no more than your cost of physically performing - source distribution, a complete machine-readable copy of the corresponding - source code, to be distributed under the terms of Sections 1 and 2 above on a - medium customarily used for software interchange; or, - c) Accompany it with the information you received as to the offer to distribute - corresponding source code. (This alternative is allowed only for noncommercial - distribution and only if you received the program in object code or executable - form with such an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for making -modifications to it. For an executable work, complete source code means all the -source code for all modules it contains, plus any associated interface definition -files, plus the scripts used to control compilation and installation of the -executable. However, as a special exception, the source code distributed need not -include anything that is normally distributed (in either source or binary form) with -the major components (compiler, kernel, and so on) of the operating system on which -the executable runs, unless that component itself accompanies the executable. - -If distribution of executable or object code is made by offering access to copy from -a designated place, then offering equivalent access to copy the source code from the -same place counts as distribution of the source code, even though third parties are -not compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program except as -expressly provided under this License. Any attempt otherwise to copy, modify, -sublicense or distribute the Program is void, and will automatically terminate your -rights under this License. However, parties who have received copies, or rights, -from you under this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not signed it. -However, nothing else grants you permission to modify or distribute the Program or -its derivative works. These actions are prohibited by law if you do not accept this -License. Therefore, by modifying or distributing the Program (or any work based on -the Program), you indicate your acceptance of this License to do so, and all its -terms and conditions for copying, distributing or modifying the Program or works -based on it. - -6. Each time you redistribute the Program (or any work based on the Program), the -recipient automatically receives a license from the original licensor to copy, -distribute or modify the Program subject to these terms and conditions. You may not -impose any further restrictions on the recipients' exercise of the rights granted -herein. You are not responsible for enforcing compliance by third parties to this -License. - -7. If, as a consequence of a court judgment or allegation of patent infringement or -for any other reason (not limited to patent issues), conditions are imposed on you -(whether by court order, agreement or otherwise) that contradict the conditions of -this License, they do not excuse you from the conditions of this License. If you -cannot distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may not -distribute the Program at all. For example, if a patent license would not permit -royalty-free redistribution of the Program by all those who receive copies directly -or indirectly through you, then the only way you could satisfy both it and this -License would be to refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under any particular -circumstance, the balance of the section is intended to apply and the section as a -whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents or other -property right claims or to contest validity of any such claims; this section has -the sole purpose of protecting the integrity of the free software distribution -system, which is implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed through that system -in reliance on consistent application of that system; it is up to the author/donor -to decide if he or she is willing to distribute software through any other system -and a licensee cannot impose that choice. - -This section is intended to make thoroughly clear what is believed to be a -consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in certain countries -either by patents or by copyrighted interfaces, the original copyright holder who -places the Program under this License may add an explicit geographical distribution -limitation excluding those countries, so that distribution is permitted only in or -among countries not thus excluded. In such case, this License incorporates the -limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions of the -General Public License from time to time. Such new versions will be similar in -spirit to the present version, but may differ in detail to address new problems or -concerns. - -Each version is given a distinguishing version number. If the Program specifies a -version number of this License which applies to it and "any later version", you have -the option of following the terms and conditions either of that version or of any -later version published by the Free Software Foundation. If the Program does not -specify a version number of this License, you may choose any version ever published -by the Free Software Foundation. - -10. If you wish to incorporate parts of the Program into other free programs whose -distribution conditions are different, write to the author to ask for permission. -For software which is copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our decision will be -guided by the two goals of preserving the free status of all derivatives of our free -software and of promoting the sharing and reuse of software generally. - -NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE -PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN -WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" -WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH -YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY -SERVICING, REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY -COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM -AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, -INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE -OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE -WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. diff --git a/README.md b/README.md index 0a1dcca..ecdb6bf 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ # pynvcm -pynvcm with friends is a tool to program the NVCM of a Tillitis' Tkey -(ICE40). +pynvcm is a tool to program the non-volatile configuration memory +(NVCM) inside the of a Tillitis' Tkey FPGA (ICE40). Either clone this repository and run from the Python interpreter or download and run our pre-packed executables from [releases](https://github.com/tillitis/pynvcm/releases). -**Note**: programming the NVCM is non-reversiable. +**Note**: programming the NVCM is non-reversable. -**Note**: the NVCM can still be read out unless you set the security -bit. +**Note**: the NVCM (including the Unique Device Secret) can still be +read out unless you set the security bit. ## Usage @@ -73,25 +73,32 @@ For example to write the NVCM, verify and set the security bit use: ## Licenses and SPDX tags Unless otherwise noted, the project sources are licensed under the -terms and conditions of the "GNU General Public License v2.0 only": +terms and conditions of the "ISC license": > Copyright Tillitis AB. +> +> Permission to use, copy, modify, and/or distribute this software +> for any purpose with or without fee is hereby granted, provided +> that the above copyright notice and this permission notice +> appear in all copies. > -> These programs are free software: you can redistribute it and/or -> modify it under the terms of the GNU General Public License as -> published by the Free Software Foundation, version 2 only. -> -> These programs are distributed in the hope that they will be useful, -> but WITHOUT ANY WARRANTY; without even the implied warranty of -> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -> General Public License for more details. -> -> You should have received a copy of the GNU General Public License -> along with this program. If not, see: -> -> https://www.gnu.org/licenses - -See [LICENSE](LICENSE) for the full GPLv2-only license text. +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +> WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +> WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +> AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR +> CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +> LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +> NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +> CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Some specific files, usually under the same license, have other +origin and copyright holders. `pynvcm.py` was originally written by: + +- Trammell Hudson, hudson@trmm.net +- Matthew Mets, [Github](https://github.com/cibomahto) +- Peter Lawrence, [Github](https://github.com/majbthrd) + +We keep a [LICENSE](LICENSE) file to easily autodetect the license. External source code we have imported are isolated in their own directories. They may be released under other licenses. This is noted diff --git a/iceflasher.py b/iceflasher.py index d2b43bf..d5e2d33 100755 --- a/iceflasher.py +++ b/iceflasher.py @@ -1,6 +1,9 @@ #!/usr/bin/env python """IceFlasher, an iCE40 programming tool based on an RPi Pico""" +# Copyright (C) 2023 - Tillitis AB +# SPDX-License-Identifier: ISC + import struct from typing import List, Any diff --git a/pybin2nvcm.py b/pybin2nvcm.py index ba2da06..b381971 100755 --- a/pybin2nvcm.py +++ b/pybin2nvcm.py @@ -3,6 +3,8 @@ in https://github.com/YosysHQ/icestorm/pull/272 """ +# Copyright (C) 2023 - Tillitis AB +# SPDX-License-Identifier: ISC def pybin2nvcm(bitstream: bytes) -> list[str]: """Convert an ice40 bitstream into an NVCM program diff --git a/pynvcm.py b/pynvcm.py index 3d2b7b0..242a026 100755 --- a/pynvcm.py +++ b/pynvcm.py @@ -6,6 +6,10 @@ # * Matthew Mets https://github.com/cibomahto # * Peter Lawrence https://github.com/majbthrd # +# Copyright (C) 2022, 2023 Tillitis AB +# +# SPDX-License-Identifier: ISC +# # Permission to use, copy, modify, and/or distribute this software # for any purpose with or without fee is hereby granted, provided # that the above copyright notice and this permission notice diff --git a/tools/spdx-ensure b/tools/spdx-ensure index 0df6691..3a39379 100755 --- a/tools/spdx-ensure +++ b/tools/spdx-ensure @@ -16,10 +16,13 @@ missingok_dirs=( missingok_files=( .editorconfig -.gitattributes .gitignore README.md LICENSE +Makefile +nvcm_test/application_fpga.bin +nvcm_test/application_fpga.nvcm +requirements.txt ) is_missingok() {