{"id":20316083,"url":"https://github.com/lupyuen/rust_test","last_synced_at":"2025-04-11T17:40:38.117Z","repository":{"id":87767168,"uuid":"446609540","full_name":"lupyuen/rust_test","owner":"lupyuen","description":"Rust Test App for Apache NuttX OS","archived":false,"fork":false,"pushed_at":"2022-03-21T09:14:19.000Z","size":32,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-25T13:39:44.783Z","etag":null,"topics":["bl602","lora","nuttx","pinecone","pinedio","riscv32","rust","rust-embedded"],"latest_commit_sha":null,"homepage":"https://lupyuen.github.io/articles/rust2","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lupyuen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["lupyuen"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["paypal.me/lupyuen"]}},"created_at":"2022-01-10T23:05:23.000Z","updated_at":"2022-12-09T19:44:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"b84f8b62-c3e0-4ea1-8c80-0785df478301","html_url":"https://github.com/lupyuen/rust_test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lupyuen%2Frust_test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lupyuen%2Frust_test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lupyuen%2Frust_test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lupyuen%2Frust_test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lupyuen","download_url":"https://codeload.github.com/lupyuen/rust_test/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248451341,"owners_count":21105853,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bl602","lora","nuttx","pinecone","pinedio","riscv32","rust","rust-embedded"],"created_at":"2024-11-14T18:24:14.412Z","updated_at":"2025-04-11T17:40:38.105Z","avatar_url":"https://github.com/lupyuen.png","language":"Rust","funding_links":["https://github.com/sponsors/lupyuen","paypal.me/lupyuen"],"categories":[],"sub_categories":[],"readme":"# Rust Test App for Apache NuttX OS\n\nRead the article...\n\n-   [\"Rust on Apache NuttX OS\"](https://lupyuen.github.io/articles/rust2)\n\nThis repo depends on...\n\n-   [lupyuen/rust-nuttx](https://github.com/lupyuen/rust-nuttx)\n\n# Install App\n\nTo add this repo to your NuttX project...\n\n```bash\n## TODO: Change this to the path of our \"incubator-nuttx-apps\" folder\npushd nuttx/apps/examples\ngit submodule add https://github.com/lupyuen/rust_test\npopd\n```\n\nThen update the NuttX Build Config...\n\n```bash\n## TODO: Change this to the path of our \"incubator-nuttx\" folder\ncd nuttx/nuttx\n\n## Preserve the Build Config\ncp .config ../config\n\n## Erase the Build Config\nmake distclean\n\n## For BL602: Configure the build for BL602\n./tools/configure.sh bl602evb:nsh\n\n## For ESP32: Configure the build for ESP32.\n## TODO: Change \"esp32-devkitc\" to our ESP32 board.\n./tools/configure.sh esp32-devkitc:nsh\n\n## Restore the Build Config\ncp ../config .config\n\n## Edit the Build Config\nmake menuconfig \n```\n\nIn menuconfig, enable the Rust Test App under \"Application Configuration\" → \"Examples\".\n\nTo build the NuttX + Rust project...\n\n```bash\ncd nuttx/apps/examples/rust_test\n./run.sh\n```\n\nIn NuttX Shell, enter this to run the app...\n\n```bash\nrust_test\n```\n\n# Output Log\n\n```bash\nnsh\u003e rust_test\nHello from Rust!\nHello World!\ntest_spi\nspi_test_driver_open:\ngpout_write: Writing 0\nspi_test_driver_write: buflen=5\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_setfrequency: frequency=1000000, actual=0\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=1d and recv=44\nbl602_spi_poll_send: send=0 and recv=44\nbl602_spi_poll_send: send=8 and recv=44\nbl602_spi_poll_send: send=0 and recv=44\nbl602_spi_poll_send: send=0 and recv=44\nbl602_spi_select: devid: 0, CS: free\nspi_test_driver_read: buflen=16\ngpout_write: Writing 1\ntest_spi: received\n  44\n  44\n  44\n  44\n  44\ntest_spi: SX1262 Register 8 is 0x44\ngpout_write: Writing 0\nspi_test_driver_write: buflen=5\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=1d and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=8 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=80\nbl602_spi_select: devid: 0, CS: free\nspi_test_driver_read: buflen=16\ngpout_write: Writing 1\ntest_spi: received\n  a2\n  a2\n  a2\n  a2\n  80\ntest_spi: SX1262 Register 8 is 0x80\nspi_test_driver_close:\ntest_hal\nspi_test_driver_open:\ngpout_write: Writing 0\nspi_test_driver_write: buflen=5\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=1d and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=8 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=80\nbl602_spi_select: devid: 0, CS: free\nspi_test_driver_read: buflen=5\ntest_hal: received\n  a2\n  a2\n  a2\n  a2\n  80\ntest_hal: SX1262 Register 8 is 0x80\ngpout_write: Writing 1\nspi_test_driver_close:\ntest_sx1262\nspi_test_driver_open:\nInit modem...\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=2\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=80 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=2\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=8a and recv=a2\nbl602_spi_poll_send: send=1 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=5\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=39 and recv=a2\nbl602_spi_poll_send: send=b0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=2\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=89 and recv=a2\nbl602_spi_poll_send: send=7f and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=3\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=98 and recv=a2\nbl602_spi_poll_send: send=e1 and recv=a2\nbl602_spi_poll_send: send=e9 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Wriing 0\nspi_test_driver_write: buflen=5\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=95 and recv=a2\nl602_spi_poll_send: send=4 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=1 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=3\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=8e and recv=a2\nbl602_spi_poll_send: send=e and recv=a2\nbl602_spi_poll_send: send=4 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=3\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=8f and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=9\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=8b and recv=a2\nbl602_spi_poll_send: send=7 and recv=a2\nbl602_spi_poll_send: send=4 and recv=a2\nbl602_spi_poll_send: send=1 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=10\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=8c and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=8 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=9\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=8 and recv=a2\nbl602_spi_poll_send: send=2 and recv=a2\nbl602_spi_poll_send: send=3 and recv=a2\nbl602_spi_poll_send: send=2 and recv=a2\nbl602_spi_poll_send: send=3 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=2\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=9d and recv=a2\nbl602_spi_poll_send: send=1 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=5\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=d and recv=a2\nbl602_spi_poll_send: send=7 and recv=a2\nbl602_spi_poll_send: send=40 and recv=a2\nbl602_spi_poll_send: send=14 and recv=a2\nbl602_spi_poll_send: send=24 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\nReading Register 8...\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=5\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=1d and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=8 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=80\nbl602_spi_select: devid: 0, CS: free\nspi_test_driver_read: buflen=5\ngpout_write: Writing 1\ntest_sx1262: SX1262 Register 8 is 0x80\nWriting Registers...\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=4\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=d and recv=a2\nbl602_spi_poll_send: send=8 and recv=a2\nbl602_spi_poll_send: send=89 and recv=a2\nbl602_spi_poll_send: send=4 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=4\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=d and recv=a2\nbl602_spi_poll_send: send=8 and recv=a2\nbl602_spi_poll_send: send=d8 and recv=a2\nbl602_spi_poll_send: send=fe and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=4\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=d and recv=a2\nbl602_spi_poll_send: send=8 and recv=a2\nbl602_spi_poll_send: send=e7 and recv=a2\nbl602_spi_poll_send: send=38 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=4\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=d and recv=a2\nbl602_spi_poll_send: send=7 and recv=a2\nbl602_spi_poll_send: send=36 and recv=a2\nbl602_spi_poll_send: send=d and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\nSending LoRa message...\nFrequency: 923000000\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=27\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=e and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=48 and recv=a2\nbl602_spi_poll_send: send=65 and recv=a2\nbl602_spi_poll_send: send=6c and recv=a2\nbl602_spi_poll_send: send=6c and recv=a2\nbl602_spi_poll_send: send=6f and recv=a2\nbl602_spi_poll_send: send=20 and recv=a2\nbl602_spi_poll_send: send=66 and recv=a2\nbl602_spi_poll_send: send=72 and recv=a2\nbl602_spi_poll_send: send=6f and recv=a2\nbl602_spi_poll_send: send=6d and recv=a2\nbl602_spi_poll_send: send=20 and recv=a2\nbl602_spi_poll_send: send=52 and recv=a2\nbl602_spi_poll_send: send=75 and recv=a2\nbl602_spi_poll_send: send=73 and recv=a2\nbl602_spi_poll_send: send=74 and recv=a2\nbl602_spi_poll_send: send=20 and recv=a2\nbl602_spi_poll_send: send=6f and recv=a2\nbl602_spi_poll_send: send=6e and recv=a2\nbl602_spi_poll_send: send=20 and recv=a2\nbl602_spi_poll_send: send=4e and recv=a2\nbl602_spi_poll_send: send=75 and recv=a2\nbl602_spi_poll_send: send=74 and recv=a2\nbl602_spi_poll_send: send=74 and recv=a2\nbl602_spi_poll_send: send=58 and recv=a2\nbl602_spi_poll_send: send=21 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=10\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=8c and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=8 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=19 and recv=a2\nbl602_spi_poll_send: send=1 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: end=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=4\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=83 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_poll_send: send=0 and recv=a2\nbl602_spi_select: devid: 0, CS: free\nspi_test_driver_read: buflen=4\ngpout_write: Writing 1\ngpin_read: Reading...\ngpint_read: Reading int pin...\n...\ngpint_read: Reading int pin...\ngpin_read: Reading...\ngpout_write: Writing 0\nspi_test_driver_write: buflen=3\nspi_test_driver_configspi:\nbl602_spi_setmode: mode=1\nbl602_spi_setbits: nbits=8\nbl602_spi_select: devid: 0, CS: select\nbl602_spi_poll_send: send=2 and recv=ac\nbl602_spi_poll_send: send=ff and recv=ac\nbl602_spi_poll_send: send=ff and recv=ac\nbl602_spi_select: devid: 0, CS: free\ngpout_write: Writing 1\nspi_test_driver_close:\nDone!\nnsh\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flupyuen%2Frust_test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flupyuen%2Frust_test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flupyuen%2Frust_test/lists"}