Перенести паспорт и проверку прошивки из 167 в 166
Добавить неизменяемое окно firmware-info v1 0x1200 из 12 слов для FC03 и служебного CAN, запретить запись. Сохранить текущую технологическую карту и логгер v4 с записью 12 слов. Подключить общий генератор версии 1.0.0 для Balsam-166-PM35, prebuild CCS и локальный выпуск BIN с manifest и SHA-256. Проверять соответствие встроенных слов манифесту до публикации; старый OUT без паспорта отклонять. Проверка: реальные обработчики RS/CAN и CRC под GCC O3, прежний тест логгера, анализатор установленного SetGUI, полная сборка TI C2000 22.6.0.LTS. BIN 30248 байт при границе параметров 32508 байт. Аппаратная проверка требует установки нового образа и перезапуска платы.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "../../Source/Internal/log_to_mem.c"
|
||||
#include "../../Source/Internal/Include/ump_can_protocol.h"
|
||||
uint16_t firmware_info_static_read(unsigned index) { (void)index; return 0U; } /* Изолирует проверку старого логгера от данных сборки; реальные слова паспорта проверяются отдельным port_test.c. */
|
||||
struct mock_gpio GpioDataRegs;
|
||||
int READY = 0, Desk = 6, Mode = 5;
|
||||
int modbus[128];
|
||||
|
||||
@@ -11,21 +11,24 @@ import subprocess
|
||||
import tempfile
|
||||
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('--compiler', default=shutil.which('clang') or shutil.which('cl'))
|
||||
parser.add_argument('--compiler', default=shutil.which('clang') or shutil.which('cl') or shutil.which('gcc') or ('C:/msys64/mingw64/bin/gcc.exe' if Path('C:/msys64/mingw64/bin/gcc.exe').is_file() else None)) # Поддерживает имеющийся GCC для проверки нового include-пути без обязательной установки другого host-компилятора.
|
||||
args = parser.parse_args()
|
||||
if not args.compiler:
|
||||
parser.error('Provide --compiler pointing to clang.exe or cl.exe')
|
||||
parser.error('Provide --compiler pointing to clang.exe, cl.exe or gcc.exe') # Явно перечисляет поддерживаемые инструменты проверки, не меняя компилятор самой прошивки.
|
||||
root = Path(__file__).resolve().parents[2]
|
||||
with tempfile.TemporaryDirectory(prefix='ump-recorder-') as directory:
|
||||
output = Path(directory)
|
||||
library = output / 'recorder_test.dll'
|
||||
includes = [root / 'tests/ump_logger/stubs', root / 'Source/Internal/Include']
|
||||
includes = [root / 'tests/ump_logger/stubs', root / 'Source/Internal/Include', root.parent / 'newProject/templates/c/firmware-info/include'] # Адаптер CAN теперь использует общий статический интерфейс паспорта, как production-сборка 166.
|
||||
source = root / 'tests/ump_logger/recorder_test.c'
|
||||
if Path(args.compiler).stem.lower() == 'cl':
|
||||
command = [args.compiler, '/nologo', '/LD', '/GS-', '/wd4068', '/wd4312',
|
||||
*['/I' + str(p) for p in includes], str(source),
|
||||
'/Fo' + str(output / 'recorder.obj'), '/link', '/NOENTRY',
|
||||
'/NODEFAULTLIB', '/OUT:' + str(library)]
|
||||
elif Path(args.compiler).stem.lower() in ('gcc', 'cc'): # MinGW использует обычную DLL с CRT и не принимает специальные параметры компоновщика Clang/lld.
|
||||
command = [args.compiler, '-shared', '-O3', '-Wno-unknown-pragmas', '-Wno-int-to-pointer-cast', *['-I' + str(p) for p in includes], str(source), '-o', str(library)] # Компилирует тот же существующий recorder_test.c и production-логгер без копирования его алгоритма.
|
||||
os.environ['PATH'] = str(Path(args.compiler).resolve().parent) + os.pathsep + os.environ.get('PATH', '') # Даёт дочернему Python доступ к runtime DLL выбранного MinGW только в этом тестовом процессе.
|
||||
else:
|
||||
command = [args.compiler, '-shared', '-nostdlib', '-fuse-ld=lld',
|
||||
'-Wl,/noentry,/nodefaultlib', '-Wno-unknown-pragmas',
|
||||
|
||||
Reference in New Issue
Block a user