{"id":21388250,"url":"https://github.com/grisp/grisp-software","last_synced_at":"2026-02-14T03:36:06.114Z","repository":{"id":50966571,"uuid":"67125809","full_name":"grisp/grisp-software","owner":"grisp","description":"Toolchain and Examples for GRISP","archived":false,"fork":false,"pushed_at":"2021-08-19T08:42:18.000Z","size":13028,"stargazers_count":28,"open_issues_count":18,"forks_count":5,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-10-10T16:44:11.483Z","etag":null,"topics":["embedded","grisp","iot"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grisp.png","metadata":{"files":{"readme":"README.asciidoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-01T11:34:50.000Z","updated_at":"2022-04-23T23:06:50.000Z","dependencies_parsed_at":"2022-09-11T04:30:26.232Z","dependency_job_id":null,"html_url":"https://github.com/grisp/grisp-software","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/grisp/grisp-software","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp-software","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp-software/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp-software/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp-software/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grisp","download_url":"https://codeload.github.com/grisp/grisp-software/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp-software/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29434178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T03:34:37.767Z","status":"ssl_error","status_checked_at":"2026-02-14T03:34:09.092Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["embedded","grisp","iot"],"created_at":"2024-11-22T12:16:24.791Z","updated_at":"2026-02-14T03:36:06.089Z","avatar_url":"https://github.com/grisp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"GRISP\n=====\n\n:toc:\n== Prerequisites\n\n- the +xz+ decompression tool needs to be installed\n- the +zlib+ development files are necessary\n- +bison+, +flex+ and +texinfo+\n- to check for some of RTEMS source builders prerequisites\n\n    git submodule init\n    git submodule update rtems-source-builder\n    cd rtems-source-builder\n    ./source-builder/sb-check\n\n== Quick Start Guide\n\nYou can build the whole toolchain by running +./build/build.sh+. See\n\u003c\u003cBuilding\u003e\u003e for more details.\n\nTo build the simple RTEMS sample application, go to +grisp-simple-sample+ and\ncall +make+.\n\nIf you want to use OpenOCD, you have to make sure that you have read and write\naccess to the USB device. On a Linux system using udev, you can copy the\nudev-rule from build/99-grisp.rule to /etc/udev/rules.d/ for that. The rule also\nprovides a fixed name for the serial console (/dev/ttyGRiSP).\n\n== Directory Structure\n\nThe following directory structure is used in this project:\n\n- build: scripts for building the tool chain and libraries\n- grisp-XYZ: applications\n- libXYZ: non-RTEMS libraries\n- rtems-XYZ: software and libraries related to RTEMS\n- README.asciidoc: this document\n\n== Building\n\nThe complete toolchain is built by running +./build/build.sh+. This will do the\nfollowing:\n\n- check out the necessary git submodules\n- bootstrap RTEMS\n- build and install the toolchain\n- build and install the RTEMS BSP\n- build and install necessary libs\n\nAll installations are made inside the +rtems-install+ subdirectory in the base\ndirectory of the repository. To change the install location edit the +PREFIX+ in\n+build/configuration.sh+.\n\n== git Repository Structure\n\nThe +grisp-software+ project pulls in a number of git submodules (like RTEMS).\nMost of these submodules have been forked with no or only minimal changes. The\nbranches in the submodules follow the following guidelines:\n\n- +master+ tracks the upstream development of the project.\n- If patches are necessary, they will be added on branches and the commits on\n  the branch are referenced in +grisp-software+.\n\nHere is an example for how a git tree of a submodule could look like:\n\n----\n o---o---o---B'--o---o---o---o---o---o  master (clone of upstream/master)\n      \\               \\\n       \\               A'--C'  grisp-20171110-xyz\n        \\\n         A---B---C  grisp-20171020-xyz\n----\n\nIn that example +grisp-20171020-xyz+ is a version of the software with some\nadaptions for GRiSP. If for example a (maybe slightly modified) version of the\npatch +B+ has been accepted in the upstream repository and GRiSP now wants to\nupdate to a newer version of the master, +B+ is no longer necessary. Therefore\nthe new +grisp-20171110-xyx+ no longer contains +B+ but (adapted) versions of\n+A+ and +C+ are still necessary.\n\nThe old +grisp-20171020-xyz+ is still be kept so that a old version of the\n+grisp-software+ repository can still access the commits.\n\nThat structure makes it relatively easy to see the exact differences to the\nupstream version and which patches might should be integrated into it in the\nfuture. The disadvantage is that it will leave quite a number of old branches\nthat are still necessary so that older +grisp-software+ revisions can reference\nthem.\n\n=== Re-Building only target specific RTEMS libs\n\nSince building the toolchain takes a lot of time and since the toolchain\nchanges less often than the rest of the system you can also just rebuild\nRTEMS and its libs.\n\nTo do that delete the\n`rtems-install/rtems-4.12/arm-rtems4.12/atsamv` directory and then do a\n\n   ./build/build.sh --no-toolchain --no-bootstrap\n\n=== Updating the submodules from github\n\nWhen you want to rebuild with some new version from the Git repos you need to make\nsure that you update the sumodules:\n\n   git pull\n   git submodule update\n   \n=== Cleaning\n\nNormally, running `./build/build.sh` (or any other of the individual build\nscripts in the `./build` folder) should rebuild without the need for cleaning.\n\nHowever, if you want a clean start you can delete the `rtems-install` folder\nwhich will delete all created binaries, libraries and header files.\n\nTo make a complete reset of the whole repository, use the following commands:\n\n[source,shell]\n----\ngit co .        # Reverts all uncommited changes\ngit clean -dxn  # gives a preview, what unversioned files would be deleted\ngit clean -dxf  # deletes everything that is not under version control\n----\n\n== Boot Loader\n\nThe boot loader will try to initialize and mount the SD card. In case this is\nsuccessful it tries to read the +grisp.ini+ configuration file from the SD root\ndirectory.\n\nSample grisp.ini (showing the default values):\n[source,ini]\n----\n[boot]\ntimeout_in_seconds = 3\nimage_path = /media/mmcsd-0-0/grisp.bin\n----\n\nAll values are optional and in case something is missing default values will be\nused (presented in the listing above). Once the timeout expired without user\ninput the automatic application load sequence starts.\n\n=== Updating the Boot Loader\n\nFor updating the bootloader build OpenOCD by running `./build/build-openocd.sh`.\nYou can then update the boot loader with the following call:\n\n----\n./build/debug-load-flash.sh grisp-bootloader/binaries/bootloader.exe\n----\n\nThe process will need quite some time (about 30 seconds for loading and about a\nminute for verify).\n\nIf OpenOCD is failing due to libusb related issues, you might need to make\nadjustments specific to your operating system. Please see the libusb FAQ:\nhttps://github.com/libusb/libusb/wiki/FAQ\n\n== Debugging\n\nIt is possible to debug an application using the on-board FTDI to SWD adapter.\nFirst build and install OpenOCD by running `./build/build-openocd.sh`.\n\nPlace a SD with some sample application into the target. This takes care that\nthe bootloader starts an application. The debug scripts will wait for this and\nthen overwrite the application that is booted by the bootloader with the one\nthat should be debugged.\n\nAfter that you should start openocd on one console using\n`./build/debug-start-openocd.sh`. This starts an GDB-Server. Do not terminate\nthe process. You can then start a gdb that connects to the server using\n`./build/debug-start-gdb.sh path/to/app.exe`. The script adds a `reset` command\nto the normal gdb that restarts the target and reloads the application. Note\nthat for bigger applications, that might need quite some time.\n\n== WiFi\n\nBy default, the wpa_supplicant.conf from the root of the SD card will be used.\nFor a default WPA2 encrypted network, the file should look like follows:\n\n----\nnetwork={\n    ssid=\"mynetwork\"\n    key_mgmt=WPA-PSK\n    psk=\"secret\"\n}\n----\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrisp%2Fgrisp-software","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrisp%2Fgrisp-software","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrisp%2Fgrisp-software/lists"}