2个版本
0.1.1 | 2022年4月12日 |
---|---|
0.1.0 | 2021年7月11日 |
#2105 in 嵌入式开发
3KB
Canadensis:Cyphal实现
此项目实现了(Cyphal的大部分功能(之前称为UAVCAN v1.0)。正如Cyphal网站所解释的,“Cyphal是一种基于现代网络标准(以太网、CAN FD等)的实时车内分布式计算和通信的开放技术。它是为了解决下一代智能车辆(有人驾驶和无人驾驶飞机、航天器、机器人和汽车)的车载确定性计算和数据分布的挑战而创建的。”
这是一个独立的项目,与Cyphal联盟无关。
子模块说明
此存储库使用子模块来存储公共受控数据类型。在克隆时,请使用git clone --recursive
。如果您已使用递归选项克隆了存储库,请运行git submodule init
然后运行git submodule update
。否则,某些测试将失败。
发布的crate
crate | 描述 |
---|---|
canadensis (文档) |
包含所有核心传输独立功能的主要库 |
canadensis_data_types (文档) |
对应于Cyphal公共受控数据类型的Rust类型 |
canadensis_can (文档) |
Cyphal/CAN传输 |
canadensis_bxcan (文档) |
bxCAN嵌入式CAN控制器的兼容性 |
canadensis_linux (文档) |
适用于Linux SocketCAN接口的兼容性 |
canadensis_serial (文档) |
实验性的Cyphal/串行传输 |
canadensis_udp (文档) |
实验性 Cyphal/UDP 传输 |
canadensis_pnp_client (文档) |
用于即插即用节点 ID 分配的客户端库 |
canadensis_crc (文档) |
访问软件镜像 CRC |
canadensis_write_crc (文档) |
一个用于计算和写入软件镜像 CRC 的工具,供 canadensis_crc 使用 |
canadensis_codegen_rust (文档) |
一个 DSDL 处理器,可以生成 Rust 数据类型和序列化代码 |
canadensis_macro (文档) |
一个过程宏,可以从内联和/或外部 DSDL 文件生成 Rust 数据类型和序列化代码 |
其他 crate(如 canadensis_bit_length_set、
canadensis_core、
canadensis_derive_register_block、
canadensis_dsdl_frontend、
canadensis_dsdl_parser、
canadensis_encoding 和
canadensis_filter_config)在各个地方重新导出,所以通常您不需要直接依赖它们。
状态
此代码旨在符合 Cyphal 规范的 1.0-beta 版本。
大部分功能正常工作。有些部分不完整
- 有一些测试,但在未经测试的区域可能存在几个错误。
- 可以减少动态内存分配的量,或者至少更好地记录。
- 需要更好的文档
原则
- 在嵌入式设备上运行
- 使用动态内存分配,但仅在必要时
- 支持 Cyphal/CAN(经典 CAN 和 CAN FD)
- 支持 Cyphal/串行和 Cyphal/UDP(这些传输方式尚未完全指定,但 canadensis 实现在发布时与
pycyphal
兼容)
许可
在以下任一许可下授权
- Apache 许可证 2.0(《LICENSE-APACHE》或 https://apache.ac.cn/licenses/LICENSE-2.0》)
- MIT 许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT》)
任选其一。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的任何旨在包含在作品中的贡献,都将按上述方式双重许可,不附加任何额外条款或条件。
lib.rs
:
应用程序可以使用此库访问由 canadensis_write_crc
工具编写的 CRC。
步骤(针对 ARM Cortex-M 目标)
- 在应用程序中调用
get_crc
函数 - 编译应用程序,生成 .elf 文件
- 在 .elf 文件上运行
canadensis_write_crc
以计算并填写 CRC- 注意:在此阶段不要使用
cargo build
或cargo run
。这将覆盖二进制文件并清除CRC。
- 注意:在此阶段不要使用
- 将.elf文件加载到目标微控制器上并按常规运行