В предыдущих главах мы рассказали о базовых настройках диагностических функций TSMaster и подробно разобрали шаги работы. Но при использовании TSMaster неизбежно возникает множество других вопросов — ниже мы выбрали несколько самых популярных и даём на них ответы.

Ключевые слова: TSMaster, UDS-диагностика, стирание памяти, Seed&Key, системные переменные, hex, FAQ.

1. Настройка адреса стирания

1.1. Фиксированные адрес и длина

Если адрес стирания фиксирован, обработка проще всего: настройте сервис с содержимым типа Normal и внесите в него исходные данные напрямую. Например, адрес стирания — 0x00801234, длина стирания — 0x0000C000. Тогда фиксированные значения заполняются так, как показано ниже:

Сервис с фиксированным адресом стирания
Рис. 1. Сервис Normal с фиксированными значениями адреса и длины стирания

То есть отправляемые значения и ожидаемые значения ответа вносятся прямо в очередь сервисов.

1.2. Переменные адрес и длина

Адрес зависит от загруженного hex-файла: соответствующие адрес и длина данных переменны. В этом случае нужно использовать системные переменные. Рассмотрим на примере hex-файла. Каждый раз, когда диагностический модуль загружает hex-файл, он автоматически извлекает из него характеристическую информацию и регистрирует её в системе как системные переменные (на данный момент регистрируются только адрес + длина; если нужно больше — направьте запрос в TOSUN на оценку). Как показано на рисунке:

Системные переменные из hex-файла
Рис. 2. Автоматически зарегистрированные системные переменные (адрес и длина) при загрузке hex

Затем выполните настройку в BasicConfig, как показано ниже:

Настройка в BasicConfig
Рис. 3. Конфигурация сервиса стирания в BasicConfig со ссылкой на системные переменные

Наконец, сошлитесь на эту конфигурацию в автоматизированном процессе, как показано ниже:

Ссылка на конфигурацию в автопроцессе
Рис. 4. Использование конфигурации в автоматизированном процессе

Во время автоматического выполнения система автоматически считывает текущие значения системных переменных и подставляет их в отправляемый сервис — так реализуется динамическая загрузка параметров.

2. Значения Seed&Key

Если значение Seed&Key фиксировано, просто выберите режим Normal и введите фиксированное значение. В этом разделе разбирается динамическое вычисление Key на основе Seed. Основные шаги:

Шаг 1. При настройке параметров транспортного уровня загрузите соответствующую DLL с алгоритмом. Эта DLL общая для всех операций диагностического модуля, где задействован алгоритм Seed&Key. Поэтому пользователю нужно поместить в эту библиотеку функции вычисления Key для всех уровней доступа (level).

Загрузка DLL алгоритма Seed&Key
Рис. 5. Загрузка DLL с алгоритмом Seed&Key в параметрах транспортного уровня

Шаг 2 (способ 1). В шагах автоматизированного процесса добавьте шаг выполнения типа Seed&Key и выберите уровень (Level) для GetSeed, как показано ниже:

Шаг Seed&Key в автопроцессе
Рис. 6. Шаг типа Seed&Key с выбором уровня GetSeed

Шаг 3 (способ 2). В BasicConfig добавьте сервисы 0x27 GetSeed и SendKey (внимание: эти два сервиса обязательно настраиваются парой), как показано ниже:

Сервисы 0x27 GetSeed
Рис. 7. Настройка сервиса 0x27 GetSeed в BasicConfig
Сервис 0x27 SendKey
Рис. 8. Настройка парного сервиса 0x27 SendKey

В автоматизированном тестовом процессе добавьте шаг SelectConfig и выберите в нём ранее настроенный сервис 0x27, как показано ниже:

Шаг SelectConfig
Рис. 9. Выбор конфигурации сервиса 0x27 в шаге SelectConfig

3. Считанная строка перевёрнута?

Пользователь ожидал прочитать строку ReadDemo, а считалась строка omeDdeaR — полностью перевёрнутая, как показано ниже:

Перевёрнутая строка
Рис. 10. Считанная строка оказалась перевёрнутой

Причина в том, что настроенный порядок разбора строки не совпадает с фактическим порядком хранения символов, поэтому разобранная строка тоже оказывается перевёрнутой.

Наше решение: измените порядок разбора строки — например, если раньше был Motorola, измените на Intel. После изменения считанная строка совпадает с ожидаемой.

Исправленный порядок разбора
Рис. 11. После смены порядка разбора (Motorola → Intel) строка читается корректно