Table of Contents
- Устранение неполадок
Устранение неполадок
Прошивка не устанавливается
k5prog не находит рацию
Симптомы:
Device not found
Решение:
-
Проверьте порт:
ls /dev/ttyUSB* /dev/ttyACM* # Если ничего нет — адаптер не определяется -
Проверьте подключение:
- TX адаптера → RX рации
- RX адаптера → TX рации
- GND → GND
- НЕ подключайте VCC
-
Проверьте права:
sudo chmod 666 /dev/ttyUSB0 # Или добавьте пользователя в группу dialout: sudo usermod -a -G dialout $USER -
Попробуйте другой порт:
k5prog -f firmware.bin -p /dev/ttyUSB1 -w
Ошибка записи
Симптомы:
Write failed at address 0x...
Решение:
- Убедитесь что рация в режиме bootloader (зажать SK2 при включении)
- Попробуйте ещё раз
- Проверьте целостность файла:
md5sum firmware.bin
Ошибка верификации
Симптомы:
Verify failed
Решение:
- Пересоберите прошивку:
make clean && make - Проверьте что файл не повреждён
- Попробуйте другой UART адаптер
Рация не включается после прошивки
Чёрный экран
Причины:
- Прошивка не записалась полностью
- Прошивка для другой модели
- Ошибка в коде инициализации
Решение:
-
SWD восстановление (самый надёжный):
openocd -f interface/jlink.cfg -f dp32g030.cfg \ -c "reset init; write_image firmware.bin 0; reset; shutdown;" -
UART восстановление:
- Отключите батарею
- Подключите UART
- Зажмите SK2
- Подключите батарею
- Прошейте заново
Экран включается, но нет реакции на кнопки
Причина: Зависание в boot loop или ошибка инициализации
Решение:
- Зажмите все кнопки на 10 секунд
- Выключите рацию
- Перепрошейте
Экран
Артефакты на экране
Причина: Неправильная инициализация ST7565
Решение:
- Проверьте что используется правильный Makefile
- Пересоберите:
make clean && make
Нет RSSI индикатора
Причина: ENABLE_RSSI_BAR = 0 в Makefile
Решение:
ENABLE_RSSI_BAR = 1
Заставка не появляется
Причина: Файл boot_splash.c не компилируется
Решение:
- Проверьте что
app/boot_splash.oесть в Makefile - Проверьте дату сборки:
grep BUILD_DATE Makefile
POCSAG
Не декодирует сообщения
Причина: Недостаточная частота сэмплирования (см. POCSAG#Сэмплинг)
Текущее состояние: BETA — требуется доработка.
Временное решение:
// В mode.c, case MODE_POCSAG — читать чаще:
for (int i = 0; i < 80; i++) {
uint16_t audio = BK4819_GetVoiceAmplitudeOut();
POCSAG_FeedSample(audio);
SYSTEM_DelayUs(125);
}
Показывает "IDLE" постоянно
Причина: Нет POCSAG сигнала на текущей частоте
Решение:
- Убедитесь что настроена правильная частота
- Попробуйте известные POCSAG частоты: 145.525, 433.500 MHz
Показывает "SEARCHING" но не находит SYNC
Причина:
- Слабый сигнал
- Неверная baud rate
- Помехи
Решение:
- Переключите baud rate:
Fили* - Подойдите ближе к передатчику
- Проверьте антенну
Спектр-анализатор
Зависает в режиме спектра
Причина: APP_RunSpectrum() — блокирующая функция
Решение:
- Нажмите
EXITдля возврата в VFO - Если не реагирует — выключите и включите рацию
Спектр не отображается
Причина: ENABLE_SPECTRUM = 0 в Makefile
Решение:
ENABLE_SPECTRUM = 1
FM Радио
Нет звука
Причина: Громкость на минимум или аудио путь не включён
Решение:
- Проверьте громкость (кнопки вверх/вниз)
- Убедитесь что есть сигнал
FM не запускается
Причина: ENABLE_FMRADIO = 0 в Makefile
Решение:
ENABLE_FMRADIO = 1
Ошибки компиляции
undefined reference to '_sbrk'
Решение: Убедитесь что syscalls.c есть в Makefile:
OBJS += syscalls.o
comparison is always false due to limited range of data type
Причина: Сравнение unsigned переменной с числом больше её максимума
Решение: Измените тип переменной на больший (например uint8_t → uint16_t)
fatal error: xxx.h: No such file or directory
Решение: Проверьте путь в include:
// Правильно:
#include "app/display_rssi.h"
#include "pocsag/pocsag.h"
// Неправильно:
#include "display_rssi.h"
Ошибки линковки
undefined reference (много штук)
Причина: Отсутствуют объектные файлы в Makefile
Решение: Проверьте что все зависимые модули включены:
OBJS += ui/ui.o ui/inputbox.o ui/menu.o
OBJS += app/menu.o app/generic.o app/action.o app/dtmf.o
Flash overflow
Симптомы:
region `FLASH' overflowed by XXXX bytes
Решение: Отключите ненужные модули (см. BuildGuide#Экономия-Flash)
Сбор системы
# Проверьте ядро
uname -a
# Проверьте права USB
ls -la /dev/ttyUSB*
groups
# Проверьте тулчейн
arm-none-eabi-gcc --version
arm-none-eabi-size --version
Логирование
Если ничего не помогает, включите UART лог:
ENABLE_UART = 1
Затем подключите UART адаптер и смотрите вывод:
minicom -D /dev/ttyUSB0 -b 38400