~={yellow}Что к чему=~
Задача: Сбрасывать ошибку 13, сейчас сбрасываются 12 и 41. Ошибка 13 возникает в момент перегрева.
Вопрос: Как реагировать на ошибку 0x13. Не вижу, чтобы сейчас она отслеживалась.
Комментарий: Добавил условие "или" в функцию UPS_OverTempratureMonitor. Добавить в вызов функции в 6711.
Задача: После возникновения режима Fault проверять код ошибки. Выяснилось, что ИБП обновляет код ошибки. Необходимо переносить это изменение в журнал.
Вопрос: Что такое режим Fault и как он определяется?
Комментарий: Режим "Fault" отображается на главной странице веб. При переходе ИБП в этом режим контроллер должен отслеживать состояние ошибки (оно может изменяться) и при изменении фиксировать новое состояние ошибки в журнале.
Заметки: Правлю функцию:
void ups_mode_response(char *data)
Пока сделал тестовую версию.
Задача: Проверить работу RTC в високосный год, сейчас в журнале выглядит вот так:
В вопросу RTC исправил функцию:
void TM_RTC_GetDateTimeFromUnix(TM_RTC_t* data, uint32_t unix)
Где "v1" в модели ИБП 6711?
Добавил условие "или" в функцию UPS_OverTempratureMonitor. Добавить в вызов функции в 6711.
Что такое режим Fault и как он определяется?
Проект ==bt-67xx_universal_hw==
IP устройства по умолчанию 192.168.0.254
login/pas - admin/12345
arm-none-eabi-gcc --version
arm-none-eabi-gcc (Sourcery CodeBench Lite 2013.05-23) 4.7.3
/home/dtelenkov/soft/tools/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/arm-none-eabi
Сборка:
Релиз выпускается с DEBUG=0
$ make HARDWARE=bt6711_v1 VERBOSE=1 DEBUG=1 PRINTF=custom MAC=EC-4C-4D-00-78-89 CROSS="/home/dtelenkov/soft/tools/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/arm-none-eabi"
Подключение:
$ make openocd_ups
Отладка:
$ arm-none-eabi-gdb -x .gdbinit_bt6711_v1
Снять защиту от чтения:
openocd -f interface/stlink.cfg -f target/stm32f4x.cfg -c "init; reset halt; stm32f4x unlock 0; reset halt; exit"
~={yellow}Сборка проекта на WSL в Windows=~
Для проброса usb устройств в WSL установить usbipd-win 5.1.0 https://github.com/dorssel/usbipd-win/releases
# Вывести список устройств
$ usbipd list
# Подставить текущий BUSID устройства
$ usbipd attach --wsl --busid <BUSID>
~={yellow}Написал скрипт для этих команд. Пробрасывает st-link в WSL.=~
import subprocess
def run(cmd):
ret = subprocess.run(["powershell.exe", cmd], stdout=subprocess.PIPE)
s = ret.stdout
return s.decode("utf-8")
def get_busid():
info = run(r"usbipd list")
begin = info.find("STM32 STLink")
busid = info[begin - 18: begin - 15]
return busid
def attach_stlink():
busid = get_busid()
cmd = "usbipd attach --wsl --busid " + busid
run(cmd)
def detach_stlink():
busid = get_busid()
cmd = "usbipd detach --busid " + busid
run(cmd)
if __name__ == "__main__":
# detach_stlink()
attach_stlink()
Могут быть проблемы с доступом по TCP к конкретному порту. Для этого в настройка firewall windows добавить правило для порта https://addshore.com/2024/07/wsl2-com-port-pass-through-with-usbipd-firewall-issues/
Инструкция как добавить правило в firewall https://remontka.pro/open-ports-network-windows/
В WSL установить libusb stlink openocd
$ sudo apt install usbutils
При запуске gdb может потребоваться установить libncurses5.so
$ sudo apt install libncurses5