1
mirror of https://github.com/flipperdevices/flipperzero-firmware.git synced 2025-12-12 04:41:26 +04:00

Toolchain fixes (#3451)

toolchain: updated to v33 with debugging & other fixes
toolchain: better error handling during update/env configuration process
debugging: improved udev rules file, added readme on installation
firmware: bumped compiler C/C++ standards (stricter code checks)
firmware: fixed warnings emerging from newer standards
ufbt: FBT_NOENV is now also supported by ufbt
fbt: added ccache-related variables to env forward list on Windows
This commit is contained in:
hedger
2024-02-26 16:16:19 +04:00
committed by GitHub
parent 4e1089ec49
commit bc309cebe6
27 changed files with 126 additions and 63 deletions

View File

@@ -1,10 +1,17 @@
#Flipper Zero serial port
# Flipper Zero serial port
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ATTRS{manufacturer}=="Flipper Devices Inc.", TAG+="uaccess", GROUP="dialout"
#Flipper Zero DFU
# Flipper Zero DFU
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", ATTRS{manufacturer}=="STMicroelectronics", TAG+="uaccess", GROUP="dialout"
#Flipper ESP32s2 BlackMagic
# Flipper ESP32s2 BlackMagic
SUBSYSTEMS=="usb", ATTRS{idVendor}=="303a", ATTRS{idProduct}=="40??", ATTRS{manufacturer}=="Flipper Devices Inc.", TAG+="uaccess", GROUP="dialout"
#Flipper U2F
# Flipper ESP32s2 in DAP mode
SUBSYSTEMS=="usb", ATTRS{idVendor}=="303a", ATTRS{idProduct}=="40??", ATTRS{manufacturer}=="CMSIS-DAP", TAG+="uaccess", GROUP="dialout"
# Flipper U2F
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5741", ATTRS{manufacturer}=="Flipper Devices Inc.", ENV{ID_SECURITY_TOKEN}="1"
#ST-Link-V3
# ST-Link-V3
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="37??", ATTRS{manufacturer}=="STMicroelectronics", TAG+="uaccess", GROUP="dialout"

19
scripts/debug/README.md Normal file
View File

@@ -0,0 +1,19 @@
## Installing udev rules
On Linux, unprivileged users need to be in the `dialout` group to access serial ports and other USB devices.
To add your user to the `dialout` group, run the following command:
```bash
sudo usermod -a -G dialout $USER
```
To install the udev rules needed for debugging & CLI access to Flipper, run the following command:
```bash
sudo cp 41-flipper.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
```
Note that not all possible debug interfaces are listed the `41-flipper.rules` file. If your interface is not supported out of the box, you may need to add a a rule for it. You can do so by adding a new line to the file according to udev rules syntax. Use `lsusb -v` to find the vendor and product IDs of your device.

View File

@@ -23,6 +23,8 @@ FORWARDED_ENV_VARIABLES = [
"PYTHONNOUSERSITE",
"TMP",
"TEMP",
"USERPROFILE",
"LOCALAPPDATA",
# ccache
"CCACHE_DISABLE",
# Colors for tools

View File

@@ -13,7 +13,7 @@ if not ["%FBT_NOENV%"] == [""] (
exit /b 0
)
set "FLIPPER_TOOLCHAIN_VERSION=28"
set "FLIPPER_TOOLCHAIN_VERSION=33"
if ["%FBT_TOOLCHAIN_PATH%"] == [""] (
set "FBT_TOOLCHAIN_PATH=%FBT_ROOT%"
@@ -58,3 +58,5 @@ if not "%1" == "env" (
cd "%FBT_ROOT%"
cmd /k
)
exit /b 0

View File

@@ -4,7 +4,7 @@
# public variables
DEFAULT_SCRIPT_PATH="$(pwd -P)";
FBT_TOOLCHAIN_VERSION="${FBT_TOOLCHAIN_VERSION:-"28"}";
FBT_TOOLCHAIN_VERSION="${FBT_TOOLCHAIN_VERSION:-"33"}";
if [ -z ${FBT_TOOLCHAIN_PATH+x} ] ; then
FBT_TOOLCHAIN_PATH_WAS_SET=0;
@@ -76,6 +76,14 @@ fbtenv_restore_env()
unset FBT_TOOLCHAIN_PATH;
}
fbtenv_check_if_noenv_set()
{
if [ -n "${FBT_NOENV:-""}" ]; then
return 1;
fi
return 0;
}
fbtenv_check_sourced()
{
if [ -n "${FBT_SKIP_CHECK_SOURCED:-""}" ]; then
@@ -203,7 +211,9 @@ fbtenv_show_unpack_percentage()
fbtenv_unpack_toolchain()
{
echo "Unpacking toolchain to '$FBT_TOOLCHAIN_PATH/toolchain':";
rm "$FBT_TOOLCHAIN_PATH/toolchain/current" || true;
if [ -L "$FBT_TOOLCHAIN_PATH/toolchain/current" ]; then
rm "$FBT_TOOLCHAIN_PATH/toolchain/current";
fi
tar -xvf "$FBT_TOOLCHAIN_PATH/toolchain/$TOOLCHAIN_TAR" -C "$FBT_TOOLCHAIN_PATH/toolchain" 2>&1 | fbtenv_show_unpack_percentage;
mkdir -p "$FBT_TOOLCHAIN_PATH/toolchain" || return 1;
mv "$FBT_TOOLCHAIN_PATH/toolchain/$TOOLCHAIN_DIR" "$TOOLCHAIN_ARCH_DIR" || return 1;
@@ -296,6 +306,9 @@ fbtenv_print_config()
fbtenv_main()
{
if ! fbtenv_check_if_noenv_set; then
return 0;
fi
fbtenv_check_sourced || return 1;
fbtenv_get_kernel_type || return 1;
if [ "$1" = "--restore" ]; then

View File

@@ -13,19 +13,21 @@ $toolchain_zip = "$toolchain_dist_folder-$toolchain_version.zip"
$toolchain_zip_temp_path = "$download_dir\$toolchain_zip"
$toolchain_dist_temp_path = "$download_dir\$toolchain_dist_folder"
try {
if (Test-Path -LiteralPath "$toolchain_target_path") {
Write-Host -NoNewline "Removing old Windows toolchain.."
Remove-Item -LiteralPath "$toolchain_target_path" -Force -Recurse
Write-Host "done!"
}
if (Test-path -Path "$toolchain_target_path\..\current") {
if (Test-path -LiteralPath "$toolchain_target_path\..\current") {
Write-Host -NoNewline "Unlinking 'current'.."
Remove-Item -LiteralPath "$toolchain_target_path\..\current" -Force
Write-Host "done!"
}
if (!(Test-Path -Path "$toolchain_zip_temp_path" -PathType Leaf)) {
if (!(Test-Path -LiteralPath "$toolchain_zip_temp_path" -PathType Leaf)) {
Write-Host -NoNewline "Downloading Windows toolchain.."
$wc = New-Object net.webclient
$wc.Downloadfile("$toolchain_url", "$toolchain_zip_temp_path")
@@ -57,4 +59,10 @@ Write-Host -NoNewline "Cleaning up temporary files.."
Remove-Item -LiteralPath "$toolchain_zip_temp_path" -Force
Write-Host "done!"
# dasdasd
} catch {
Write-Host "An error occurred"
Write-Host $_
Write-Host "Please close VSCode and any other programs that may be using the toolchain and try again."
$host.SetShouldExit(1)
Exit 1
}