Compare commits

..

No commits in common. "2_12_2m9t" and "2_12_2m10" have entirely different histories.

30 changed files with 3055 additions and 10337 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
FW/928/fw-mchf.bin Executable file → Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

194
README.md
View File

@ -1,82 +1,118 @@
<b>Ver: 2.12.2m9t Cq Contest Mod by Xav</b>
<br/><br/>
New screen boot on
<br>
<img src="http://xavier.debert.free.fr/MCHF/1629722823447.jpg" width="20%" border="0">
In MENU select DEBUG
<br>
In end list have 2 new line CONTEST Yes or No for activation
<br>
And color for selection ex:Red
<br>
<img src="http://xavier.debert.free.fr/MCHF/1631858346843.jpg" width="20%" border="0">
<br>
For Have the new menu if Mod is actived, Switch push F3 for have CQ Contest
<br>
<img src="http://xavier.debert.free.fr/MCHF/1631858047458.jpg" width="20%" border="0">
<br>
The Mem saving a finish QSO
<br>
The Try saving a QSO no make for try later
<br>
The Cq switch list Mem or Try for switch one by one push same F3
<br>
Ex finish QSO
<br>
<img src="http://xavier.debert.free.fr/MCHF/1631858047460.jpg" width="20%" border="0">
<br>
<br>
Video in English
<br>
# 📻 UHSDR
## 📌 Description
**UHSDR** (*Universal Ham Software Defined Radio*) est un firmware open-source pour les **transceivers radioamateurs autonomes**.
Il supporte les microcontrôleurs **STM32F4 et STM32F7**, et propose :
- Modes analogiques : **SSB, AM, FM, AM synchrone**.
- Modes numériques : **FreeDV, RTTY, CW** (avec manipulateur Iambic/Ultimatic).
- Interface **CAT et audio via USB**.
- **Bootloader** pour les mises à jour via USB ou clé USB.
> 💡 **Origine** : Basé sur le projet [mcHF](http://www.m0nka.co.uk/) de Chris (M0NKA) et Clint (KA7OEI), sous licence **GPLv3** depuis février 2017.
M0NKA Chris, KA7OEI Clint, DF8OE Andreas, DB4PLE Danilo, DD4WH Frank, DL2FW Michael et SP9BSL Slawek
---
---
## 📦 Version 2.12.2m10
*Dernières améliorations par **Yuri** et **Xavier (Xav)**.*
### ✨ Nouveautés
Version | Auteur | Modifications |
|---------------|---------|----------------------------------------------------------------------------------------------------|
| **2.12.2m10** | Yuri | Script `arm_non_eabi.sh` pour **installation automatique** sur les noyaux Linux **5.X** (mini). |
| **2.12.2m9** | - | Corrections de compilation (GCC 10.X → 9.X). |
| **2.12.2m8** | Xav | **Ajout du mode CQ Contest** (voir [section dédiée](#-cq-contest-mod)). |
| **2.12.2m7** | Xav | **Nouvel écran de boot** au démarrage. |
---
## 🛠 Prérequis
| Outil/Dépendance | Version | Description |
|------------------------|---------------|-----------------------------------------------------------------------------|
| **Git** | - | Pour cloner le dépôt. |
| **GCC** | **9.X** | ⚠️ **Version 10.X non compatible** (problèmes de compilation). |
| **Make** | - | Pour compiler le projet. |
| **ARM Toolchain** | `arm-none-eabi-gcc` | Outil de compilation pour STM32. |
---
## 🚀 Installation
### 1⃣ Récupérer le projet
```bash
git clone http://fra1od.freeboxos.fr:3000/magnum88/UHSDR
cd UHSDR
```
2⃣ Compiler le firmware
Dans le répertoire mchf-eclipse :
```bash
make clean # Nettoie les anciennes compilations
make all # Génère les fichiers .dfu, .bin et .elf
make bootloader # Compile le bootloader (ex: v5.04)
```
✅ Résultat : Les firmwares seront générés dans les formats :
.dfu (pour mise à jour via USB)
.bin (fichier binaire)
.elf (pour débogage)
⚙️ Configuration
Personnaliser la compilation
Modifiez le fichier uhsdr_board_config.h pour adapter le firmware à votre matériel :
Option
Action
Radio spécifique
Décommentez #define R928_PLUS pour activer le support du RS928+.
Mémoire limitée
Décommentez #define IS_SMALL_BUILD pour les premiers 512 Ko (ex: mcHF v1).
Style d'affichage
Choisissez un thème : #define GREY_STYLE ou #define SEPIA_STYLE.
🔧 Corrections appliquées
Problème GCC 10.X :
La version 9.X est recommandée (moins stricte sur les en-têtes C/C++).
Solution : Utilisez le script arm_non_eabi.sh pour une installation automatique.
Erreurs de compilation :
Dans uhsdr_board.h (lignes 246-248) :
Remplacez var par static pour bw_data, mem_data et xvtr_data (évite les conflits de définition multiple).
Dans freedv/c2wideband.c :
Remplacez abs par fabs (2 occurrences) pour une meilleure précision.
🎯 CQ Contest Mod (depuis 2.12.2m8)
<br><img src="http://xavier.debert.free.fr/MCHF/1629722823447.jpg" width="20%" border="0"><br>
Nouvelle fonctionnalité pour gérer les concours radioamateurs directement depuis l'interface.
📱 Menu et utilisation
Activer le mode Contest :
Allez dans MENU → DEBUG.
Sélectionnez CONTEST: Yes (ou No pour désactiver).
Couleur de sélection : Rouge par défaut.
<br><img src="http://xavier.debert.free.fr/MCHF/1631858346843.jpg" width="20%" border="0"><br>
Lancer un CQ Contest :
Appuyez sur F3 pour afficher le menu CQ Contest.
<br><img src="http://xavier.debert.free.fr/MCHF/1631858047458.jpg" width="20%" border="0"><br>
Gestion des QSO :
Mem : Sauvegarde un QSO terminé.
Try : Sauvegarde un QSO en cours (à finaliser plus tard).
Basculer entre Mem/Try : Appuyez sur F3 pour passer de l'un à l'autre.
Exemple quand le QSO est fini.
<br><img src="http://xavier.debert.free.fr/MCHF/1631858047460.jpg" width="20%" border="0"><br>
<br>Vidéo<br>
[![Watch the video](http://xavier.debert.free.fr/MCHF/uhsdr-logo.png)](https://youtu.be/2OXR09mxWS4)
<br>
<br>
<div align="center"><h1><b>The UHSDR Project</b></h1></div>
UHSDR stands for **U**niversal**H**am**S**oftware**D**efined**R**adio.
The project provides the firmware to run standalone HAM transceivers.
It currently supports STM32F4 and STM32F7 MCU based QSD designs. The
current firmware provides receive and transmit for various analog modes
(SSB,AM, FM) including modes like Synchronous AM, plus digital modes
like FreeDV, RTTY and of course CW (including Iambic/Ultimatic keyer).
An USB CAT and audio interface is part of the firmware as well. The
bootloader, which is another part of the project, permits to update the
firmware and bootloader using various means like USB disk or USB cable.
The base of the firmware was started by Chris, M0NKA, and Clint, KA7OEI
as part of the [mcHF](http://www.m0nka.co.uk/) project. In February 2017
both agreed to change firmware license to GPLv3. Because of this the mcHF
firmware has been extended in this project with new functionality
and also with support for use on different transceiver hardware. For
clarifying different license models on mcHF hardware and mcHF firmware the
name of the firmware changed to UHSDR.
The intent of this project is to give full support for mcHF [(and all
other known and listed hardware platforms)](https://github.com/df8oe/UHSDR/wiki/Supported-Hardware) as long as there are
contributors willing to support the given hardware.
So this is the best place to start with up-2-date developed firmware and
bootloader for mcHF.
Binaries of actual development are available as "bleeding edge builds".
Since 08-19-2017 all binaries which are populated are archived and can
accessed at GitHub startup page (see link a few lines down).
If you want to see the recent progress of the project, have a look [at
the commits here](https://github.com/df8oe/mchf-github/commits/active-devel).
You can find descriptions of menus and operating hints at [our WIKI](https://github.com/df8oe/UHSDR/wiki/)
All this is bundled in [startup page](https://df8oe.github.io/UHSDR/).
Have fun - Open-Source opens possibilities!
M0NKA, Chris<br/>
KA7OEI, Clint<br/>
DF8OE, Andreas<br/>
DB4PLE, Danilo<br/>
DD4WH, Frank<br/>
DL2FW, Michael<br/>
SP9BSL, Slawek<br/>
and the complete UHSDR community
---

View File

@ -0,0 +1,30 @@
Introduction
This directory contains SW4STM32 and CubeIDE compatible project that allows easy import to any
of those tools
Import into SW4STM32 IDE
- In the File menu, select 'Import...'
- Choose 'Existing Projects into Workspace' and click Next
- Select root directory: "root\SW4STM32\mchf-uhsdr", do not tick any of the options
- Click Finish
Import into STM32CubeIDE
- In the File menu, select 'Import...'
- Chose 'Import ac6 System Workbench for STM32 Project' and click Next
- Select root directory: "root\SW4STM32\mchf-uhsdr", 'Detect and configure project natures' selected
- Click Finish
Troubleshooting
- Fix for functions with wrong inline definition - use optimization (O1 at least), more info:
https://stackoverflow.com/questions/41218006/gcc-fails-to-inline-functions-without-o2
For any problems compiling under windows please open an issue report on the project GitHub page.
Thank you!
Krassi Atanassov, M0NKA

View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.405185049">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.405185049" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" artifactName="mchf-uhsdr" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.405185049" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
<folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.405185049." name="/" resourcePath="">
<toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.34469134" name="Ac6 STM32 MCU GCC" nonInternalBuilderId="fr.ac6.managedbuild.builder.gnu.cross" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
<option id="fr.ac6.managedbuild.option.gnu.cross.prefix.1763705716" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1652299346" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" useByScannerDiscovery="false" value="STM32F407VGTx" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.board.1426161387" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" useByScannerDiscovery="false" value="STM32F4DISCOVERY" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1452405993" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.61061369" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.601593623" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.2033800313" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
<builder buildPath="${workspace_loc:/mchf-uhsdr}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.793754731" keepEnvironmentInBuildfile="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="fr.ac6.managedbuild.builder.gnu.cross"/>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.772390096" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
<option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.777403713" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.more" valueType="enumerated"/>
<option id="gnu.c.compiler.option.debugging.level.132502211" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
<option id="gnu.c.compiler.option.include.paths.282795374" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../../../mchf-eclipse"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/basesw/mcHF/Inc"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/basesw/mcHF/Drivers/CMSIS/Device/ST/STM32F4xx/Include"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/basesw/mcHF/Drivers/STM32F4xx_HAL_Driver/Inc"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/basesw/mcHF/Drivers/CMSIS/Include"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/basesw/mcHF/Middlewares/ST/STM32_USB_Device_Library/Core/Inc"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/basesw/mcHF/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/basesw/mcHF/Middlewares/ST/STM32_USB_Host_Library/Core/Inc"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/basesw/mcHF/Middlewares/Third_Party/FatFs/src"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/basesw/mcHF/Middlewares/Third_Party/FatFs/src/drivers"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/basesw/mcHF/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/hardware"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/hardware/board_configs"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/freedv"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/audio"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/ui/oscillator"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/ui"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/misc/v_eprom"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/ui/lcd"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/ui/encoder"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/audio/codec"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/audio/softdds"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/misc"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/audio/cw"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/ui/menu"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/cat"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/audio/filters"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/src"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/src/bootloader"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/diag"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/usb/device/class/composite"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/usb/device/class/AUDIO/Inc"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/usb/device/class/CDC/Inc"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/usb/host/class/HID/Inc"/>
<listOptionValue builtIn="false" value="../../../mchf-eclipse/drivers/usb/app"/>
</option>
<option id="gnu.c.compiler.option.preprocessor.def.symbols.90444414" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
<listOptionValue builtIn="false" value="ARM_MATH_CM4"/>
<listOptionValue builtIn="false" value="_GNU_SOURCE"/>
<listOptionValue builtIn="false" value="CORTEX_M4"/>
<listOptionValue builtIn="false" value="STM32F407xx"/>
<listOptionValue builtIn="false" value="USE_FULL_ASSERT"/>
<listOptionValue builtIn="false" value="__FPU_PRESENT=1U"/>
<listOptionValue builtIn="false" value="UI_BRD_MCHF"/>
<listOptionValue builtIn="false" value="RF_BRD_MCHF"/>
<listOptionValue builtIn="false" value="FDV_ARM_MATH"/>
</option>
<option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.858840287" name="Other flags" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0 -Wno-unused-variable -Wno-pointer-sign -Wno-main -Wno-format -Wno-address -Wno-unused-but-set-variable -Wno-strict-aliasing -Wno-parentheses -Wno-missing-braces" valueType="string"/>
<option id="gnu.c.compiler.option.dialect.std.1769012353" name="Language standard" superClass="gnu.c.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.c.compiler.dialect.default" valueType="enumerated"/>
<option id="gnu.c.compiler.option.dialect.flags.483673750" name="Other dialect flags" superClass="gnu.c.compiler.option.dialect.flags" useByScannerDiscovery="true" value="" valueType="string"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.651324835" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1372381792"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.651324835" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1372381792" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
</tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.880310674" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
<option id="gnu.cpp.compiler.option.optimization.level.970004053" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.debugging.level.1410256587" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
</tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.1188646484" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
<option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.1516209896" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" useByScannerDiscovery="false" value="../../../mchf-eclipse/linker/arm-gcc-link_f4_flash1024k.ld" valueType="string"/>
<option id="gnu.c.link.option.libs.2086104375" name="Libraries (-l)" superClass="gnu.c.link.option.libs" useByScannerDiscovery="false"/>
<option id="gnu.c.link.option.paths.1126963068" name="Library search path (-L)" superClass="gnu.c.link.option.paths" useByScannerDiscovery="false" valueType="libPaths">
<listOptionValue builtIn="false" value="../../../mchf-eclipse/linker"/>
</option>
<option id="gnu.c.link.option.ldflags.1903642416" name="Linker flags" superClass="gnu.c.link.option.ldflags" useByScannerDiscovery="false" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1329019344" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.59611697" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker"/>
<tool id="fr.ac6.managedbuild.tool.gnu.archiver.1988995727" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.1193024950" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
<option id="gnu.both.asm.option.include.paths.2091638614" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value=""/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.951733050" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1519122619" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
<sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="STM32F4-Discovery.fr.ac6.managedbuild.target.gnu.cross.exe.454652357" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.405185049;fr.ac6.managedbuild.config.gnu.cross.exe.debug.405185049.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.772390096;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.651324835">
<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.release.1349538643;fr.ac6.managedbuild.config.gnu.cross.exe.release.1349538643.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.772390096;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.651324835">
<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Debug">
<resource resourceType="PROJECT" workspacePath="/mchf-uhsdr"/>
</configuration>
<configuration configurationName="Release">
<resource resourceType="PROJECT" workspacePath="/mchf-uhsdr"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
</cproject>

View File

@ -0,0 +1,4 @@
/.settings/
/Debug/
/mchf-eclipse/
/STM32F4DISCOVERY.xml

File diff suppressed because it is too large Load Diff

View File

@ -257,7 +257,7 @@ void correct_rate_K_vec(MODEL *model, float rate_K_vec[], float rate_K_sample_fr
float cka = K;
int k;
for (k = 0; k < K; k++) {
float a = abs(rate_K_sample_freqs_kHz[k] - nasty_error_freq);
float a = fabs(rate_K_sample_freqs_kHz[k] - nasty_error_freq);
if (closest_k == -1 || a < cka) {
closest_k = k;
@ -295,8 +295,8 @@ void correct_rate_K_vec(MODEL *model, float rate_K_vec[], float rate_K_sample_fr
for (m = 0; m < C2WB_K - 1; m++) {
//[tmp st_m] = min(abs(Am_freqs_kHz - rate_K_prev_sample_kHz));
//[tmp en_m] = min(abs(Am_freqs_kHz - rate_K_next_sample_kHz));
int pa = abs(Am_freqs_kHz[m] - rate_K_prev_sample_kHz);
int na = abs(abs(Am_freqs_kHz[m] - rate_K_next_sample_kHz));
int pa = fabs(Am_freqs_kHz[m] - rate_K_prev_sample_kHz);
int na = fabs(fabs(Am_freqs_kHz[m] - rate_K_next_sample_kHz));
if (st == -1 || pa < st) {
st = pa;
st_m = m;

View File

@ -708,4 +708,5 @@ void UiConfiguration_UpdateMacroCap(void);
#define EEPROM_MEMS_MEMORY_ADDRESS 0x3F5C
#define EEPROM_XVTR_MEMORY_ADDRESS 0x535D
#endif /* DRIVERS_UI_UI_CONFIGURATION_H_ */

File diff suppressed because it is too large Load Diff

View File

@ -1255,7 +1255,7 @@ void UiDriver_EncoderDisplay(const uint8_t row, const uint8_t column, const char
static uint8_t UiDriver_GetModeCode()
{
uint8_t mode;
uint8_t mode=0;
switch(ts.dmod_mode)
{
@ -2029,7 +2029,7 @@ static inline void UiDriver_FButton_F4ActiveVFO()
static inline void UiDriver_FButton_F5Tune()
{
const char* cap;
const char* cap="";
// uint32_t color;
// color = RadioManagement_IsTxDisabled() ? Grey1 : (ts.tune ? Red : White);
uint32_t color = RadioManagement_IsTxDisabled() ? Grey1 : (ts.tune ? Red : White);

View File

@ -341,7 +341,7 @@ static uint8_t UiVk_DSPVKeyInitTypeDraw(uint8_t KeyNum, uint32_t param)
static uint8_t UiVk_ModeVKeyInitTypeDraw(uint8_t KeyNum, uint32_t param)
{
uint8_t Keystate = Vbtn_State_Normal;
uint8_t mode_t;
uint8_t mode_t=0;
if(ts.dmod_mode == DEMOD_USB || ts.dmod_mode == DEMOD_LSB) { mode_t = ModeVK_SSB; }
else if(ts.dmod_mode == DEMOD_AM) { mode_t = ModeVK_AM; }
else if(ts.dmod_mode == DEMOD_SAM) { mode_t = ModeVK_SAM; }

View File

@ -243,9 +243,9 @@ typedef struct {
}
keyer_mode_t;
uint32_t mem_data[4][2][20];
uint32_t xvtr_data[4][3];
uint16_t bw_data[10][20];
static uint32_t mem_data[4][2][20];
static uint32_t xvtr_data[4][3];
static uint16_t bw_data[10][20];
typedef enum
{

View File

@ -115,7 +115,7 @@
* the 192k ram / 512k flash STM32F4 machines. Unless you have such a machine, leave this disabled.
*/
//#define IS_SMALL_BUILD // ********************************** Small build (512k) Var. 1 (not good)
//#define R928_PLUS // ********************************** For R928 ets with Si5351a alone synthesizer
#define R928_PLUS // ********************************** For R928 ets with Si5351a alone synthesizer
//#define OPEN_TX_OUTBAND // Open TX out of band (by Menu option) - not in use now
//#define GREY_STYLE // ********************************** Monochrome display style
//#define SEPIA_STYLE // ********************************** Monochrome display style

View File

@ -14,7 +14,7 @@
#define UHSDR_VER_MAJOR "2"
#define UHSDR_VER_MINOR "12"
#define UHSDR_VER_RELEASE "2m9"
#define UHSDR_VER_RELEASE "2m10"
#define UHSDR_BOOT_VERS "5.0.4m"

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 KiB

Binary file not shown.

View File

@ -0,0 +1,4 @@
#!/bin/bash
# sudo apt install dfu-util
dfu-util -d -R -a 0 0483:df11 -D fw-mchf.dfu
exit 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 829 KiB

35
arm_none_eabi.sh Normal file
View File

@ -0,0 +1,35 @@
#!/bin/bash
VER=15:10.3-2021.10-9
URL=https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
echo "Creating gcc-arm-none-eabi debian package version $VER"
echo "Entering temporary directory..."
cd /tmp
echo "Downloading..."
curl -fSL -A "Mozilla/4.0" -o gcc-arm-none-eabi.tar "$URL"
echo "Extracting..."
tar -xf gcc-arm-none-eabi.tar
rm gcc-arm-none-eabi.tar
echo "Generating debian package..."
mkdir gcc-arm-none-eabi
mkdir gcc-arm-none-eabi/DEBIAN
mkdir gcc-arm-none-eabi/usr
echo "Package: gcc-arm-none-eabi" > gcc-arm-none-eabi/DEBIAN/control
echo "Version: $VER" >> gcc-arm-none-eabi/DEBIAN/control
echo "Architecture: amd64" >> gcc-arm-none-eabi/DEBIAN/control
echo "Maintainer: maintainer" >> gcc-arm-none-eabi/DEBIAN/control
echo "Description: Arm Embedded toolchain" >> gcc-arm-none-eabi/DEBIAN/control
mv gcc-arm-none-eabi-*/* gcc-arm-none-eabi/usr/
dpkg-deb --build --root-owner-group gcc-arm-none-eabi
echo "Installing..."
sudo apt install ./gcc-arm-none-eabi.deb -y --allow-downgrades
echo "Removing temporary files..."
rm -r gcc-arm-none-eabi*
echo "Done."