Прежде чем задать вопрос, позвольте мне предоставить некоторые сведения:
Я читал техническую статью, касающуюся Autosar, которая предлагает подход Plug and Play для программных компонентов прикладного уровня. По сути, в статье предлагалось разделить память на отдельные компоненты и запрограммировать /прошить только те компоненты, которые были изменены, а не весь образ программного обеспечения. Это сэкономит время на перепрограммирование во время визита к дилеру. Теперь, поскольку может быть изменение адреса перепрограммируемых функций, это вызовет проблемы, когда эти измененные функции вызываются функциями, которые находятся в другом разделе (разделе памяти). В статье предлагается решение этого подхода с помощью таблицы переходов/перенаправлений, которая находится по фиксированному адресу и содержит адрес обновленной функции.
Теперь позвольте мне перейти к части вопроса:
Я думал об этой проблеме не с точки зрения архитектуры Autosar, а с точки зрения встроенного инженера и думал, что этот подход будет работать, это добавит увеличения пропускной способности. Другой вариант, который, по моему мнению, можно было бы использовать, - это, вероятно, указатели на функции. Но потом я подумал, что в обычном сценарии это компоновщик, который заменяет имя функционального символа его фактическим адресом и, следовательно, сценарий, в котором функция A (которая находится в неизмененном разделе) инициализируется функцией B (которая находится в обновленном разделе и наверное по другому адресу) не получится.
Это, наконец, подводит меня к моим последним вопросам:
- Будет ли работать подход указателей на функции? (Я думаю, что, вероятно, не будет.)
- Если ответ на приведенный выше вопрос отрицательный, могу ли я по-прежнему использовать подход с указателем на функцию, скажем, сохраняя все указатели на функции по фиксированному адресу и используя скрипт и файл карты для исправления фактического адреса.
Я благодарю всех вас, кто был достаточно терпелив, чтобы ответить на такой длинный вопрос. Хотел бы я задать вопрос поменьше.