Интегрирование C-кода в s-function
08.10.2019
Добрый день! Не могу разобраться, как с помощью s-function интегрировать сгенерированный код в simulink для проверки корректности работы сгенерированного кода. При кодогенерации создались файлы filename.с, filename.h, filename_data.с. Кодогенерацию выполнял со следующми параметрами: язык кода С, целевой процессор Texas Instruments TMS570 Cortex-R4. При написании в s-function 'filename' появляется ошибка:
Error while obtaining sizes from MEX S-function 'filename' in 'modelname/S-function'.
Caused by: Invalid MEX-file 'D:\MATLAB\filename.mexw64':'D:\MATLAB\filename.mexw64' is not a valid shared library
Лучший ответ
Добрый день,
В данном случае интеграция помощью S-функции не сработает.
Для того что бы проверить что код и модель работают одинаково надо провести PIL-тестирование. Это делается на уровне пакетов поддержки оборудования.
Можно взять вот эту демку:
https://www.mathworks.com/matlabcentral/fileexchange/46332-ti-hercules-pil-target-for-rm48
или посмотреть на пакет поддержки оборудования:
https://www.mathworks.com/matlabcentral/fileexchange/58176-embedded-coder-support-package-for-arm-cortex-r-processors
Ответы
Добрый день,
В данном случае интеграция помощью S-функции не сработает.
Для того что бы проверить что код и модель работают одинаково надо провести PIL-тестирование. Это делается на уровне пакетов поддержки оборудования.
Можно взять вот эту демку:
https://www.mathworks.com/matlabcentral/fileexchange/46332-ti-hercules-pil-target-for-rm48
или посмотреть на пакет поддержки оборудования:
https://www.mathworks.com/matlabcentral/fileexchange/58176-embedded-coder-support-package-for-arm-cortex-r-processors
Для интеграции кода нужно воспльзоваться любым из способов, например LCT или на худой конец S_bunction_builder блоком.
Ознакомится с LCT можно
https://www.mathworks.com/help/simulink/slref/legacy_code.html?s_tid=doc_ta