{"id":13423328,"url":"https://github.com/jonlamb-gh/oxcc","last_synced_at":"2025-04-11T08:30:39.383Z","repository":{"id":105863814,"uuid":"143338375","full_name":"jonlamb-gh/oxcc","owner":"jonlamb-gh","description":"A port of Open Source Car Control written in Rust","archived":false,"fork":false,"pushed_at":"2018-11-13T23:51:25.000Z","size":233,"stargazers_count":19,"open_issues_count":9,"forks_count":5,"subscribers_count":6,"default_branch":"devel","last_synced_at":"2024-10-26T23:10:30.774Z","etag":null,"topics":["autonomous-driving","autonomous-vehicles","bootloader","can-bus","no-std","nucleo-f767zi","rust","rust-embedded","stm32","stm32f767zi"],"latest_commit_sha":null,"homepage":"","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/jonlamb-gh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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}},"created_at":"2018-08-02T19:46:46.000Z","updated_at":"2024-09-13T03:32:50.000Z","dependencies_parsed_at":"2023-04-08T10:17:34.195Z","dependency_job_id":null,"html_url":"https://github.com/jonlamb-gh/oxcc","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/jonlamb-gh%2Foxcc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonlamb-gh%2Foxcc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonlamb-gh%2Foxcc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonlamb-gh%2Foxcc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonlamb-gh","download_url":"https://codeload.github.com/jonlamb-gh/oxcc/tar.gz/refs/heads/devel","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223462623,"owners_count":17149193,"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":["autonomous-driving","autonomous-vehicles","bootloader","can-bus","no-std","nucleo-f767zi","rust","rust-embedded","stm32","stm32f767zi"],"created_at":"2024-07-31T00:00:31.009Z","updated_at":"2024-11-07T05:25:17.736Z","avatar_url":"https://github.com/jonlamb-gh.png","language":"Rust","readme":"# OxCC\n\n## Overview\n\nA port of [Open Source Car Control](https://github.com/jonlamb-gh/oscc) written in Rust.\n\n`OxCC` runs on the [NUCLEO-F767ZI STM32F767ZI](https://www.st.com/en/evaluation-tools/nucleo-f767zi.html) board.\n\nIt is built around the traits and patterns provided by the [embedded-hal](https://github.com/rust-embedded/embedded-hal)\nproject and community:\nsee the [BSP crate](https://github.com/jonlamb-gh/oxcc-nucleo-f767zi),\nthe [HAL crate](https://github.com/jonlamb-gh/oxcc-stm32f767-hal),\nand the [device crate](https://github.com/jonlamb-gh/oxcc-stm32f767).\n\n### OSCC Divergence\n\nApart from the change in MCU/board, `OxCC` combines all of the OSCC modules (throttle, brake, steering, CAN gateway) into a single application.\n\n#### Hardware\n\nA new layout and schematic is currently in the works, check out the rough [pinout](https://jonlamb-gh.github.io/oxcc/nucleo-144-oxcc-pins.png) to get started.\n\n* CAN\n\n  `OxCC` uses the stm's on-board bxCAN controller.\n  For a transceiver I've been using the [SN65HVD230](https://www.waveshare.com/sn65hvd230-can-board.htm) from Waveshare.\n\n## Getting Started\n\n### Dependencies\n\n* [rust](https://github.com/rust-lang-nursery/rustup.rs) (nightly)\n* [svd2rust](https://github.com/rust-embedded/svd2rust)\n* [openocd](http://openocd.org/) (for debugging)\n* [gdb-arm-none-eabi](https://gcc.gnu.org/) (for debugging)\n* [binutils-arm-none-eabi](https://gcc.gnu.org/) (uses `objcopy` for device deployment)\n* [stlink](https://github.com/texane/stlink) (for device deployment)\n\n### Building\n\nThe default Cargo configuration will build for the `Kia Soul EV` vehicle\nwith the `panic-over-abort` strategy.\n\nSee the `[features]` section of the [Cargo.toml](Cargo.toml) to change configurations.\n\n* Install system package dependencies:\n  ```bash\n  sudo apt-get install openocd\n  sudo apt-get install gdb-arm-none-eabi\n  sudo apt-get install binutils-arm-none-eabi\n  ```\n* Install `stlink` from source: [guide](https://github.com/texane/stlink/blob/master/doc/compiling.md)\n* Install Rust nightly and additional components:\n  ```bash\n  curl https://sh.rustup.rs -sSf | sh\n  rustup install nightly\n  rustup component add rust-src\n  rustup component add rustfmt-preview --toolchain nightly\n  rustup target add thumbv7em-none-eabihf\n  ```\n* Install `svd2rust`:\n  ```bash\n  cargo install svd2rust\n  ```\n* Build `OxCC` firmware:\n  ```bash\n  cargo build\n  ```\n\n## Deploying\n\nDeploy the firmware Using `st-flash` (provided by `stlink`):\n\n```bash\n# Convert ELF to ihex format\narm-none-eabi-objcopy \\\n    -O ihex \\\n    target/thumbv7em-none-eabihf/release/oxcc \\\n    target/thumbv7em-none-eabihf/release/oxcc.hex\n\n# Upload to flash\nst-flash \\\n    --format ihex \\\n    write \\\n    target/thumbv7em-none-eabihf/release/oxcc.hex\n```\n\n## Debugging\n\nIn one terminal, start `openocd`:\n\n```bash\nopenocd -f board/stm32f7discovery.cfg\n```\n\nIn the `OxCC` terminal, use the [runner](.cargo/config) to start a `gdb` session:\n\n```bash\ncargo run\n```\n\n# License\n\nLicensed under either of\n\n* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or\n  http://www.apache.org/licenses/LICENSE-2.0)\n* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n","funding_links":[],"categories":["no-std crates"],"sub_categories":["WIP"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonlamb-gh%2Foxcc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonlamb-gh%2Foxcc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonlamb-gh%2Foxcc/lists"}