Clone
4
Troubleshooting
ua1zbe edited this page 2026-04-12 01:15:14 +03:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Устранение неполадок

Прошивка не устанавливается

k5prog не находит рацию

Симптомы:

Device not found

Решение:

  1. Проверьте порт:

    ls /dev/ttyUSB* /dev/ttyACM*
    # Если ничего нет — адаптер не определяется
    
  2. Проверьте подключение:

    • TX адаптера → RX рации
    • RX адаптера → TX рации
    • GND → GND
    • НЕ подключайте VCC
  3. Проверьте права:

    sudo chmod 666 /dev/ttyUSB0
    # Или добавьте пользователя в группу dialout:
    sudo usermod -a -G dialout $USER
    
  4. Попробуйте другой порт:

    k5prog -f firmware.bin -p /dev/ttyUSB1 -w
    

Ошибка записи

Симптомы:

Write failed at address 0x...

Решение:

  1. Убедитесь что рация в режиме bootloader (зажать SK2 при включении)
  2. Попробуйте ещё раз
  3. Проверьте целостность файла: md5sum firmware.bin

Ошибка верификации

Симптомы:

Verify failed

Решение:

  1. Пересоберите прошивку: make clean && make
  2. Проверьте что файл не повреждён
  3. Попробуйте другой UART адаптер

Рация не включается после прошивки

Чёрный экран

Причины:

  • Прошивка не записалась полностью
  • Прошивка для другой модели
  • Ошибка в коде инициализации

Решение:

  1. SWD восстановление (самый надёжный):

    openocd -f interface/jlink.cfg -f dp32g030.cfg \
      -c "reset init; write_image firmware.bin 0; reset; shutdown;"
    
  2. UART восстановление:

    • Отключите батарею
    • Подключите UART
    • Зажмите SK2
    • Подключите батарею
    • Прошейте заново

Экран включается, но нет реакции на кнопки

Причина: Зависание в boot loop или ошибка инициализации

Решение:

  1. Зажмите все кнопки на 10 секунд
  2. Выключите рацию
  3. Перепрошейте

Экран

Артефакты на экране

Причина: Неправильная инициализация 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
  • Помехи

Решение:

  1. Переключите baud rate: F или *
  2. Подойдите ближе к передатчику
  3. Проверьте антенну

Спектр-анализатор

Зависает в режиме спектра

Причина: APP_RunSpectrum() — блокирующая функция

Решение:

  • Нажмите EXIT для возврата в VFO
  • Если не реагирует — выключите и включите рацию

Спектр не отображается

Причина: ENABLE_SPECTRUM = 0 в Makefile

Решение:

ENABLE_SPECTRUM = 1

FM Радио

Нет звука

Причина: Громкость на минимум или аудио путь не включён

Решение:

  1. Проверьте громкость (кнопки вверх/вниз)
  2. Убедитесь что есть сигнал

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_tuint16_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