flipperdevices/flipperzero-firmware
GitHub: flipperdevices/flipperzero-firmware
Flipper Zero 官方固件源码,为便携式多协议硬件安全测试设备提供核心功能与开发框架。
Stars: 15658 | Forks: 3283
# Flipper Zero 固件
- [Flipper Zero 官方网站](https://flipperzero.one)。一种向你的朋友解释 Flipper Zero 能做什么的简单方式。
- [Flipper Zero 固件更新](https://flipperzero.one/update)。为你的海豚(Flipper Zero)提供的改进:最新固件版本、PC 和移动设备的升级工具。
- [用户文档](https://docs.flipper.net)。了解更多关于你的海豚的信息:规格、使用指南以及你想问的任何问题。
- [开发者文档](https://developer.flipper.net/flipperzero/doxygen)。深入探索 Flipper Zero Firmware 源代码:构建系统、固件结构等。
## 我需要帮助
寻找答案的最佳去处是我们的 [用户文档](https://docs.flipper.net)。如果在那里找不到答案,请查看我们的 [Discord 服务器](https://flipp.dev/discord) 或我们的 [论坛](https://forum.flipperzero.one/)。如果你想为固件开发做贡献或根据自己的需求进行修改,也可以查看我们的 [开发者文档](https://developer.flipper.net/flipperzero/doxygen)。
## 我想报告问题
如果你发现了问题并想报告,请查看我们的 [Issues](https://github.com/flipperdevices/flipperzero-firmware/issues) 页面。请确保描述中包含你正在使用的固件版本、你的平台以及重现该问题的步骤的清晰说明。
## 我想贡献代码
在提交 PR 之前,请确认你的更改必须包含在固件中。许多想法可以轻松地作为外部应用程序实现,并发布在 [Flipper Application Catalog](https://github.com/flipperdevices/flipper-application-catalog) 中。如果你不确定,请在 [Discord 服务器](https://flipp.dev/discord) 或 [Issues](https://github.com/flipperdevices/flipperzero-firmware/issues) 页面上联系我们,我们会帮你找到代码的合适位置。
此外,请阅读我们的 [贡献指南](/CONTRIBUTING.md) 和 [代码风格](/CODING_STYLE.md),并确保你的代码与我们的 [项目许可证](/LICENSE) 兼容。
最后,打开一个 [Pull Request](https://github.com/flipperdevices/flipperzero-firmware/pulls) 并确保 CI/CD 状态全部为绿色(通过)。
# 开发
Flipper Zero Firmware 使用 C 语言编写,部分代码使用 C++ 和 armv7m 汇编语言编写。建议具备中级 C 语言知识以便进行舒适的编程。Flipper 应用程序支持 C、C++ 和 armv7m 汇编语言。
# 固件路线图
[固件路线图 Miro 看板](https://miro.com/app/board/uXjVO_3D6xU=/)
## 系统要求
支持的开发平台:
- Windows 10+,需安装 PowerShell 和 Git (x86_64)
- macOS 12+,需安装 Command Line tools (x86_64, arm64)
- Ubuntu 20.04+,需安装 build-essential 和 Git (x86_64)
支持的在片调试器(可选但强烈推荐):
- [Flipper Zero Wi-Fi Development Board](https://shop.flipperzero.one/products/wifi-devboard)
- 兼容 CMSIS-DAP 的设备:Raspberry Pi Debug Probe 等...
- ST-Link (v2, v3, v3mods)
- J-Link
Flipper Build System 将处理所有其他依赖项。
## 克隆源代码
确保你有足够的磁盘空间并克隆源代码:
```
git clone --recursive https://github.com/flipperdevices/flipperzero-firmware.git
```
## 构建
使用 Flipper Build Tool 构建固件:
```
./fbt
```
## 使用在片调试器刷写固件
将你的在片调试器连接到 Flipper,并使用 Flipper Build Tool 刷写固件:
```
./fbt flash
```
## 使用 USB 刷写固件
确保你的 Flipper 已开机且固件运行正常。用 USB 线连接你的 Flipper,并使用 Flipper Build Tool 刷写固件:
```
./fbt flash_usb
```
## 文档
- [Flipper Build Tool](/documentation/fbt.md) - 构建、刷写和调试 Flipper 软件
- [应用程序](/documentation/AppsOnSDCard.md),[应用程序清单](/documentation/AppManifests.md) - 开发、构建、部署和调试 Flipper 应用程序
- [硬件组合与救砖](/documentation/KeyCombo.md) - 在最糟糕的情况下恢复你的 Flipper
- [Flipper 文件格式](/documentation/file_formats) - 关于 Flipper 如何存储你的数据以及你如何操作它的所有信息
- [万能遥控器](/documentation/UniversalRemotes.md) - 将你的红外遥控器贡献到万能遥控器数据库
- [固件路线图](https://miro.com/app/board/uXjVO_3D6xU=/)
- 更多内容请见 [开发者文档](https://developer.flipper.net/flipperzero/doxygen)
# 项目结构
- `applications` - 固件中使用的应用程序和服务
- `applications_users` - 用于存放你的额外应用程序和服务的位置
- `assets` - 应用程序和服务使用的资源
- `documentation` - 文档生成系统配置和输入文件
- `furi` - Furi Core:操作系统级原语和辅助工具
- `lib` - 我们的以及第三方的库、驱动程序、工具等...
- `site_scons` - 构建系统配置和模块
- `scripts` - 辅助脚本和各种 Python 库
- `targets` - 固件目标:特定于平台的代码
此外,请参阅这些目录中的 `ReadMe.md` 文件以获取更多详细信息。
# 链接
- Discord: [flipp.dev/discord](https://flipp.dev/discord)
- 官网: [flipperzero.one](https://flipperzero.one)
- 论坛: [forum.flipperzero.one](https://forum.flipperzero.one/)
- Kickstarter: [kickstarter.com](https://www.kickstarter.com/projects/flipper-devices/flipper-zero-tamagochi-for-hackers)
## SAST 工具
- [PVS-Studio](https://pvs-studio.com/pvs-studio/?utm_source=website&utm_medium=github&utm_campaign=open_source) - 用于 C、C++、C# 和 Java 代码的静态分析器。
标签:BadUSB, Flipper Zero, Go语言工具, GPIO, iButton, NFC, RFID, STM32, Sub-GHz, 信号分析, 固件源码, 多协议, 客户端加密, 嵌入式开发, 开源硬件, 无线电安全, 物联网, 硬件安全, 硬件黑客, 红外遥控, 逆向工具