
Código fuente del firmware de Flipper Zero
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/.github/assets/dark_theme_banner.png">
<source media="(prefers-color-scheme: light)" srcset="/.github/assets/light_theme_banner.png">
<img
alt="Un arte pixelado de un delfín con texto: Repositorio oficial de Flipper Zero"
src="https://assets.kitploit.com/production/public/readmes/47650/c34882bd225a2220a9ca4cb52c7d82954dc516c45a921101c0bbe3a30a318b09.png">
</picture>
# Firmware de Flipper Zero
- [Sitio web oficial de Flipper Zero](https://flipper.net) - Una forma sencilla de explicar a tus amigos lo que Flipper Zero puede hacer.
- [Actualización de firmware de Flipper Zero](https://flipper.net/pages/downloads) - Mejoras para tu delfín: últimas versiones de firmware, herramientas de actualización para PC y dispositivos móviles.
- [Documentación de usuario](https://docs.flipper.net/zero) - Aprende más sobre tu delfín: especificaciones, guías de uso y cualquier cosa que quieras preguntar.
- [Documentación para desarrolladores](https://developer.flipper.net/flipperzero/doxygen) - Sumérgete en el código fuente del firmware de Flipper Zero: sistema de compilación, estructura del firmware y más.
# Contribuir
Nuestro objetivo principal es construir una comunidad sana y sostenible alrededor de Flipper, por lo que estamos abiertos a cualquier idea y contribución nueva. También tenemos algunas reglas y tabúes aquí, así que lee esta página y nuestro [Código de conducta](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/CODE_OF_CONDUCT.md) con atención.
## Necesito ayuda
El mejor lugar para buscar respuestas es nuestra [Documentación de usuario](https://docs.flipper.net/zero). Si no encuentras la respuesta allí, consulta nuestro [Servidor de Discord](https://flipp.dev/discord). Si quieres contribuir al desarrollo del firmware o modificarlo para tus propias necesidades, también puedes consultar nuestra [Documentación para desarrolladores](https://developer.flipper.net/flipperzero/doxygen).
## Quiero reportar un problema
Si has encontrado un problema y quieres reportarlo, consulta nuestra página de [Issues](https://github.com/flipperdevices/flipperzero-firmware/issues). Asegúrate de que la descripción contenga información sobre la versión del firmware que estás usando, tu plataforma y una explicación clara de los pasos para reproducir el problema.
## Quiero proponer una nueva funcionalidad
Si tienes una solicitud de funcionalidad o quieres votar por una existente, utiliza [Discussions](https://github.com/flipperdevices/flipperzero-firmware/discussions) y sigue nuestras [Directrices de discusión](https://github.com/flipperdevices/flipperzero-firmware/discussions/4395).
## Quiero contribuir con código
Antes de abrir un PR, confirma que tus cambios deben estar contenidos en el firmware. Muchas ideas pueden implementarse fácilmente como aplicaciones externas y publicarse en el [Catálogo de aplicaciones de Flipper](https://github.com/flipperdevices/flipper-application-catalog). Si no estás seguro, contáctanos en el [Servidor de Discord](https://flipp.dev/discord) o en la página de [Issues](https://github.com/flipperdevices/flipperzero-firmware/issues), y te ayudaremos a encontrar el lugar adecuado para tu código.
Además, lee nuestra [Guía de contribución](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/CONTRIBUTING.md) y nuestro [Estilo de codificación](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/CODING_STYLE.md), y asegúrate de que tu código sea compatible con nuestra [Licencia del proyecto](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/LICENSE).
Finalmente, abre un [Pull Request](https://github.com/flipperdevices/flipperzero-firmware/pulls) y asegúrate de que los estados de CI/CD estén todos en verde.
# Desarrollo
El firmware de Flipper Zero está escrito en C, con algunas partes escritas en C++ y lenguaje ensamblador armv7m. Se recomienda un nivel intermedio de conocimientos de C para programar cómodamente. Los lenguajes C, C++ y ensamblador armv7m son compatibles para las aplicaciones de Flipper.
## Requisitos
Plataformas de desarrollo compatibles:
- Windows 10+ con PowerShell y Git (x86_64)
- macOS 12+ con herramientas de línea de comandos (x86_64, arm64)
- Ubuntu 20.04+ con build-essential y Git (x86_64)
Depuradores en circuito compatibles (opcionales pero muy recomendados):
- [Placa de desarrollo Wi-Fi para Flipper Zero](https://flipper.net/products/wifi-devboard)
- Compatibles con CMSIS-DAP: Raspberry Pi Debug Probe, etc...
- ST-Link (v2, v3, v3mods)
- J-Link
El sistema de compilación de Flipper se encargará de todas las demás dependencias.
## Clonar el código fuente
Asegúrate de tener suficiente espacio y clona el código fuente:
```shell
git clone --recursive https://github.com/flipperdevices/flipperzero-firmware.git
```
## Compilar
Compila el firmware con la herramienta de compilación de Flipper:
```shell
./fbt
```
## Flashear el firmware con un depurador en circuito
Conecta tu depurador en circuito a tu Flipper y flashea el firmware con la herramienta de compilación de Flipper:
```shell
./fbt flash
```
## Flashear el firmware por USB
Asegúrate de que tu Flipper esté encendido y que tu firmware funcione. Conecta tu Flipper con un cable USB y flashea el firmware con la herramienta de compilación de Flipper:
```shell
./fbt flash_usb
```
## Documentación
- [Herramienta de compilación de Flipper](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/fbt.md) - compilar, flashear y depurar el software de Flipper
- [Aplicaciones](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/AppsOnSDCard.md), [Manifiesto de aplicaciones](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/AppManifests.md) - desarrollar, compilar, implementar y depurar aplicaciones de Flipper
- [Combinaciones de hardware y desbloqueo](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/KeyCombo.md) - recuperar tu Flipper de las situaciones más complicadas
- [Formatos de archivo de Flipper](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/file_formats) - todo sobre cómo Flipper almacena tus datos y cómo puedes trabajar con ellos
- [Controles remotos universales](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/UniversalRemotes.md) - contribuye con tu infrarrojo remoto a la base de datos de controles remotos universales
- Y mucho más en la [Documentación para desarrolladores](https://developer.flipper.net/flipperzero/doxygen)
# Estructura del proyecto
- `applications` - Aplicaciones y servicios utilizados en el firmware
- `applications_users` - Lugar para tus aplicaciones y servicios adicionales
- `assets` - Recursos utilizados por aplicaciones y servicios
- `documentation` - Configuraciones del sistema de generación de documentación y archivos de entrada
- `furi` - Furi Core: primitivas y utilidades a nivel de sistema operativo
- `lib` - Nuestras bibliotecas y las de terceros, drivers, herramientas, etc...
- `site_scons` - Configuración y módulos del sistema de compilación
- `scripts` - Scripts complementarios y diversas bibliotecas de Python
- `targets` - Objetivos del firmware: código específico de la plataforma
Además, consulta los archivos `ReadMe.md` dentro de esos directorios para obtener más detalles.
# Enlaces
- Discord: [flipp.dev/discord](https://flipp.dev/discord)
- Reddit: [reddit.com/r/flipperzero](https://www.reddit.com/r/flipperzero/)
- Sitio web: [flipper.net](https://flipper.net)
- Kickstarter: [kickstarter.com](https://www.kickstarter.com/projects/flipper-devices/flipper-zero-tamagochi-for-hackers)
## Herramientas SAST
- [PVS-Studio](https://pvs-studio.com/pvs-studio/?utm_source=website&utm_medium=github&utm_campaign=open_source) - analizador estático para código C, C++, C# y Java.