~={yellow}Что к чему=~ - Модель 6721 была создана на базе модели 6711_v1 без каких либо изменений в программной или аппаратной части. Изменилось только название модели. На данный момент модель не вошла в основной репозиторий. - Документация по протоколам лежит здесь [[megatec 单相协议 new.pdf]] [[Homework 8]] [[Galleon.pdf]] ~={green}Изменения и ветки=~ ~={yellow}Mega=~ - Нужно было обеспечить поддержку данного ИБП и собрать прошивку для тестов у заказчика. - Для работы с тонким ИБП "Mega" была создана ветка "mega". - На данный момент модель в этой ветке - "6711_v1". - #### Задачи: 1. Интегрировать поддержку 3ф ИБП в контроллер 6709mts и 6712 (с внешним датчиком температуры и влажности) для поставки в МТС. [[Galleon II Galleon III 3 phase V02.pdf]] [[Galleon II-33-10K-60K-Rack_DS.PDF]] [[Galleon II 3phase 10-40K UM.PDF]] 2. Интегрировать поддержку ИБП нового типа для Билайн в контроллеры 6709 или 6711v1. Протокол базируется на стандартном Megateс. [[MEGA 通讯协议.pdf]]

6711

1. **Задача:** Убрать добавление “v1” к модели ИБП. **Вопрос:** Где "v1" в модели ИБП 6711? **Комментарий:** v1 именно в модели ИБП - [ ] Выполнено **Заметки:** Пока не нашел где это происходит.

6711 и 6711v1

1. **Задача:** Сбрасывать ошибку 13, сейчас сбрасываются 12 и 41. Ошибка 13 возникает в момент перегрева. **Вопрос:** Как реагировать на ошибку 0x13. Не вижу, чтобы сейчас она отслеживалась. **Комментарий:** Добавил условие "или" в функцию UPS_OverTempratureMonitor. Добавить в вызов функции в 6711. - [x] Выполнено 2. **Задача:** После возникновения режима Fault проверять код ошибки. Выяснилось, что ИБП обновляет код ошибки. Необходимо переносить это изменение в журнал. **Вопрос:** Что такое режим Fault и как он определяется? **Комментарий:** Режим "Fault" отображается на главной странице веб. При переходе ИБП в этом режим контроллер должен отслеживать состояние ошибки (оно может изменяться) и при изменении фиксировать новое состояние ошибки в журнале. **Заметки:** Правлю функцию: ```c++ void ups_mode_response(char *data) ``` Пока сделал тестовую версию. - [ ] Выполнено 3. **Задача:** Проверить работу RTC в високосный год, сейчас в журнале выглядит вот так: - [x] Выполнено
Итоги
1. В вопросу RTC исправил функцию: ```c++ void TM_RTC_GetDateTimeFromUnix(TM_RTC_t* data, uint32_t unix) ```
Вопросы
1. Где "v1" в модели ИБП 6711? 2. Добавил условие "или" в функцию UPS_OverTempratureMonitor. Добавить в вызов функции в 6711. 3. Что такое режим Fault и как он определяется? #### Общее: * Проект ==bt-67xx_universal_hw== * IP устройства по умолчанию 192.168.0.254 * login/pas - admin/12345 ```bash # Добавить ethernet интерфейс $ sudo ifconfig eth0:1 192.168.0.200 ``` #### Сборка/отладка: ``` 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 включает защиту flash памяти контроллера. * Релиз выпускается с DEBUG=0 ```bash $ 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" ``` **Подключение:** ```bash $ make openocd_ups ``` **Отладка:** ```bash $ arm-none-eabi-gdb -x .gdbinit_bt6711_v1 ``` **Снять защиту от чтения:** ```bash 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. Установка usbipd в Windows ```powershell $ winget install --interactive --exact dorssel.usbipd-win ``` Или скачать здесь: https://github.com/dorssel/usbipd-win/releases ```powershell # Вывести список устройств $ usbipd list # Подставить текущий BUSID устройства $ usbipd attach --wsl --busid ``` ~={yellow}Написал скрипт для этих команд. Пробрасывает st-link в WSL. Находится: codewars/powershell/usbipd.py=~ ```python 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 ```bash $ sudo apt install usbutils ``` При запуске gdb может потребоваться установить libncurses5.so ```bash $ sudo apt install libncurses5 ``` ``` $ make HARDWARE=bt6711_v1 PRINTF=custom DEBUG=0 MAC=EC-4C-4D-00-78-89 CROSS="/opt/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi" ``` ~={green}Сборка web=~![[build_web.png]]