Files
Andrey 05be38a04a Обновить Flash/CAN, версии сборок и управление периферией
Добавить защищённое обновление приложения через RS и CAN с сохранением
загрузчика, проверкой CRC, восстановлением передачи и защитой EEPROM.
Подключить общий процесс сборки C2000 и автоматический счётчик версии
для согласованных RAM, Flash, CAN и паспортов бинарных образов.

Уточнить запуск ЦАП, обработку измерений и параметров нагрузки,
начальную индикацию и документацию регистров GAS.
Дополнить модели аппаратуры и изолировать заголовки CAN в тестах.

Проверка: 26 тестов выпуска, 4 теста восстановления CAN и восемь
программных моделей CAN, Flash, EEPROM, ЦАП, параметров и TESTLAMP.
2026-11-06 16:11:11 +03:00

30 lines
4.8 KiB
C
Raw Permalink Blame History

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.
#include <stdlib.h> /* Позволяет ограничению модели завершить процесс при зависшем STOP. */
#define main existing_load_regressions /* Повторно использует проверенную модель GPIO, setup и tick действующих тестов нагрузки. */
#include "../load_control/load_control_test.c" /* Компилирует настоящий DAC.c с включённым новым путём CAN Boot. */
#undef main /* Собственный main проверяет переход из рабочего состояния в постоянный загрузчик. */
static unsigned int waiting_ticks; /* Ограничивает ожидание, чтобы ошибка остановки завершала тест, а не зависала. */
void ServiceDog(void) /* Моделирует работу Timer1 между проходами main, ожидающего завершённый STOP. */
{ /* Подменяет аппаратный scheduler, сохраняя настоящий алгоритм Load_runner. */
if (++waiting_ticks > 1500U) { puts("FAIL: CAN Boot STOP timeout"); exit(1); } /* Штатная остановка занимает около секунды; 1500 мс оставляет запас на границу периода ЦАП. */
CpuTimer1.InterruptCount++; /* Продвигает те же часы, которые читает production Load_boot_stop. */
Commands = 0x0380U; /* Продолжает подавать START, инициализацию и калибровку для проверки запрета повторного пуска. */
tick(1U, 1, 100U); /* Выполняет реальный миллисекундный автомат при свежем напряжении, которое обычно разрешает нагрузку. */
} /* Возвращается в цикл ожидания production функции. */
int main(void) /* Проверяет оба CAN-адреса нагрузок и вход из IDLE/работающего состояния. */
{ /* Содержит только модель времени и проверки наблюдаемых безопасных выходов. */
unsigned int mode, running, starts; /* Перебирает УМП5/6 и оба исходных состояния. */
for (mode = 5U; mode <= 6U; ++mode) { /* Обе штатные нагрузки обязаны одинаково останавливаться перед CAN Boot. */
for (running = 0U; running < 2U; ++running) { /* Начальный IDLE также должен получить полный STOP, даже если нагрузка ещё не запускалась. */
READY = 1; setup(mode); CpuTimer1.InterruptCount = 0UL; waiting_ticks = 0U; /* Сбрасывает production автомат и независимые часы очередного сценария. */
Commands = running ? 0x0080U : 0U; tick(20U, 1, 100U); /* При необходимости запускает нагрузку штатной командой до входа в загрузчик. */
starts = test_starts; /* Повторный START после открытия входа в boot запрещён. */
Load_boot_stop(); /* Вызывает настоящую блокирующую остановку, связанную с F28335Boot_Quiesce. */
CHECK(!READY && test_stop && !test_start && !test_permission && load_state == LOAD_IDLE); /* Требует снятый START, удержанный STOP и закрытый прикладной цикл. */
CHECK(load_zero_sent && !IMPowse && waiting_ticks >= 1000U && test_starts == starts); /* Проверяет завершение секундного импульса и отсутствие нового пуска от продолжающихся команд. */
CHECK(modbus[123] == DAC_min() && modbus[0x1C] == 40); /* Подтверждает реально отправленный код базовых 4 мА вместо калибровочного задания. */
} /* Завершает проверку двух исходных состояний. */
} /* Завершает обе штатные нагрузки. */
puts("PASS: CAN Boot uses full STOP and 4mA; live START/calibration cannot restart either load"); /* Сообщает проверенные свойства перехода, а не факт физической прошивки. */
return 0; /* Успех означает прохождение всех четырёх аппаратных сценариев модели. */
} /* Завершает поведенческую проверку остановки перед CAN Boot. */