ExpressLRS开源代码之工程结构

news/2024/7/10 20:30:57 标签: ELRS, 开源

ExpressLRS开源代码之工程结构

  • 1. 源由
  • 2. 工程
  • 3. 开发环境安装
  • 4. pio命令
  • 5. ExpressLRS配置
  • 6. 硬件认证过程
  • 7. 参考资料

1. 源由

ExpressLRS开源代码基于Arduino框架设计,在所支持的硬件环境下,提供900/2400发射机和接收机硬件方案。

该设计提供了一个IO配置文件来更好的解耦软硬件设计,使得整个硬件设计工作和软件设计工作更加独立。

虽然系统复杂,工程结构的理解有一定难度,从方法论的角度看,这种解耦的设计本质上是为了更好的简化设计复杂度。

通过对ExpressLRS开源代码的研读,将会就ExpressLRS开源代码工程做一个简单的介绍,以便更好的进行配置和产品硬件IO的定义。

2. 工程

目前,ExpressLRS开源项目提供两种方式管理工程:1) ExpressLRS Configurator;2) PlatformIO。

从实际使用的角度看:

  1. 获取代码成功率不高
  2. 编译代码耗时
  3. ExpressLRS Configurator界面并不友好
  4. PlatformIO流行,且对开发者相对友好

因此,这里我们主要围绕PlatformIO + vscode来对工程结构进行介绍(包括使用到的截图)。

PlatformIO在嵌入式市场的独特理念为开发人员提供了一个跨平台工作的现代集成开发环境(云和桌面IDE),
支持许多不同的软件开发工具包(SDK)或框架,包括复杂的调试(调试)、单元测试(单元测试)、自动代码分析(静态代码分析),以及远程管理(远程开发)。
它的架构旨在最大限度地提高开发人员的灵活性和选择,开发人员可以使用图形编辑器或命令行编辑器(PlatformIO Core(CLI)),也可以同时使用两者。

PlatformIO是专业嵌入式系统工程师在多个特定平台上开发解决方案的必备工具。
此外,通过拥有去中心化架构,PlatformIO为新的和现有的开发人员提供了一条快速集成的道路,用于开发商业化产品,并缩短了整体上市时间。

PlatformIO可运行在任何一个现代操作系统上(macOS、MS Windows、Linux、FreeBSD)。

3. 开发环境安装

关于vscode + PlatformIO开发环境的安装,这里将不会展开,请参考:Install PlatformIO for VSCode / Get started

注:如果在Windows环境下,希望在命令行随处可以使用pio命令,请参考以下步骤进行配置。

  1. In Search, search for and then select: System (Control Panel)
  2. Click the Advanced system settings link.
  3. Click Environment Variables. …
  4. In the Edit System Variable (or New System Variable) window, specify the value of the PATH environment variable. …
  5. Reopen Command prompt window, and run your java code.

在这里插入图片描述

4. pio命令

PlatoformIO(pio)可以认为是一个命令行工具,该命令行工具整合了软件开发工具包(SDK)或框架,详见:PlatformIO Getting Started

在这里插入图片描述开发者在这个开发工具的帮助下,通过其支持的开发板(硬件),将可以快速实现业务逻辑,帮助项目快速业务软件原型。

5. ExpressLRS配置

当然,虽然pio可以帮助快速业务软件原型,但是ExpressLRS开源接收机、发射机基于各种目标硬件,可以形成各种硬件产品配置。

显然,这块内容相对来说是比较复杂的,但是基于pio开发的代码天生具备软硬件通过配置解耦的特性,接下来,就对这个配置工程结构进行分析:

platformio.ini
 ├──> hardware/targets.json
 │   ├──> hardware/RX/<layout_file>.json
 │   └──> hardware/RX/<layout_file>.json
 ├──> targets/common.ini
 │   ├──> python/build_flags.py
 │   ├──> python/build_env_setup.py
 │   └──> python/build_html.py  //esp series MCU
 ├──> targets/unified.ini
 ├──> targets/betafpv_900.ini //instance of betafpv 900
 └──> targets/<bandname_frequency>.ini
  1. 总入口:platformio.ini
  2. 通用环境变量:targets/common.ini
  3. 额外特定脚本:build_flags.pybuild_env_setup.pybuild_html.py
  4. 硬件目标:<bandname_frequency>.ini
  5. 目标管脚配置:hardware/RX/<layout_file>.jsonhardware/RX/<layout_file>.json
  6. 所支持厂家产品清单:hardware/targets.json

6. 硬件认证过程

通常来说,硬件厂商,都希望被开源组织认证,以下便是ELRS官方的认证流程:

Step 1: prototype discussion
Step 2: schematic design (following ExpressLRS_Manufacturer_Design_Guidelines_v1.7.pdf) // checklist
Step 3: schematic review
Step 4: layout design (following ExpressLRS_Manufacturer_Design_Guidelines_v1.7.pdf) // checklist
Step 5: layout review
Step 6: send a few sample out for testing (as ELRS dev requested)
Step 7: If test passed, ELRS dev team will add target for long term support // checklist and ExpressLRS开源之RC链路性能测试
Step 8: the manufacturer sends the production unit (=the same unit which your customers will get) samples to the requested ELRS devs (~10 units). The samples will be reserved in the devs’ hands for future technical support

注:目前最新的硬件设计指南是:ExpressLRS_Manufacturer_Design_Guidelines_v1.7.pdf

7. 参考资料

【1】[ExpressLRS开源之接收机固件编译烧录步骤](https://blog.csdn.net/lida2003/article/details/132518813)
【2】ExpressLRS开源之RC链路性能测试
【3】ExpressLRS开源之基本调试数据含义
【4】ExpressLRS开源代码之框架结构
【5】PlatformIO Getting Started
【6】High-performance Open Source Radio Control Link


http://www.niftyadmin.cn/n/4992943.html

相关文章

如何有效防止服务器被攻击?

随着互联网的快速发展&#xff0c;服务器安全问题日益引起人们的关注。近期&#xff0c;全球范围内频繁发生的服务器攻击事件引发了广泛关注。为了保护企业和个人的数据安全&#xff0c;有效防止服务器被攻击已成为迫在眉睫的任务。 首先&#xff0c;及时更新服务器的操作系统和…

Vue框架--Vue版Helloworld

上面我们对Vue有了一个初步的了解,下面我们一起来搭建一些Vue的环境以及写第一个Helloworld案例。 1.搭建Vue的环境 (1).使用本地文件的方式引入Vue.js和其他相关文件 (2).使用npm(安装Node.js)和Vue-cli引入 (3).这里需要安装开发者工具: GitHub - vuejs/devtools: ⚙️ Bro…

7、监测数据采集物联网应用开发步骤(5.3)

监测数据采集物联网应用开发步骤(5.2) 静态配置库数据库调用&#xff0c;新建全局变量初始化类com.zxy.main.Init_Page.py #! python3 # -*- coding: utf-8 -Created on 2017年05月10日 author: zxyong 13738196011 from com.zxy.z_debug import z_debug from com.zxy.common…

elementUI中的table动态表单记录

form表单与table一起使用 之前一直以为form表单是单独使用&#xff0c;现在联动起来发现只是套了一层外壳&#xff0c;并不是很麻烦的事情 form的单独使用 <el-form :model"ruleForm" status-icon :rules"rules" ref"ruleForm" label-widt…

Git小白入门——上手实操之创建仓库和代码提交

版本库 什么是版本库呢&#xff1f;版本库又名仓库&#xff0c;英文名repository&#xff0c;简单理解成一个目录&#xff0c;目录里的所有文件都可以被Git管理&#xff0c;每个文件的修改、删除&#xff0c;Git都能跟踪&#xff0c;以便任何时刻都可以追踪历史&#xff0c;或…

【AWS】实操-保护 Amazon S3 VPC 终端节点通信

文章目录 实验概览目标实验环境任务 1&#xff1a;探索并启动实验环境任务 1.1&#xff1a;探索 Amazon VPC 资源任务 1.2&#xff1a;探索 Amazon EC2 资源任务 1.3&#xff1a;创建 Amazon VPC 终端节点任务 1.4&#xff1a;连接私有 EC2 实例任务 1.5&#xff1a;探索 Amazo…

进阶-文生图-组合(KoreranDollLikeness + Beautiful_dress + CHilloutmix)

本文专门开一节写文生图组合相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 将需求进行拆分&#xff0c;熟练运用组合。 正文 1、 KoreranDollLikeness Beautiful_dress Chilloutmix 2、MIX4 20D 黑丝 Chilloutmix

五、高并发内存池--Thread Cache

五、高并发内存池–Thread Cache 5.1 Thread Cache的工作原理 thread cache是哈希桶结构&#xff0c;每个桶是一个按桶位置映射大小的内存块对象的自由链表。每个线程都会有一个thread cache对象&#xff0c;这样每个线程在这里获取对象和释放对象时都是无锁的。 每一个线程…