Jump to content

Линковка сущности с bsp_CLIENT_LIB и/или gpio_CLIENT_LIB приводит к неработоспособности RDP с другими сущностями.


Recommended Posts

Здравствуйте.
На курсе по разработке рассматривали учебный пример "светофор". Решил довести его до логичного завершения на Rpi и со светодиодами.
В качестве образца взял examples/GPIO_OUTPUT

Странная ситуация. Просто попробовал слинковать свой управлятор лампочками с либами bsp и gpio, добавив в CmakeLists.txt:

target_link_libraries (Client ${gpio_CLIENT_LIB})
     if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm|aarch64")
target_link_libraries (Client ${bsp_CLIENT_LIB})
endif ()

Даже если не пытаться работать с gpio такие действия приводят к тому что вызов

ServiceLocatorConnect

возвращает INVALID_HANDLE

Состояние можно посмотреть тут

https://github.com/lost-byte/cyberimmune-systems-example-traffic-light-kos/tree/communication-mosquitto

Коммит 3689

 

 

 

 

Link to comment
Share on other sites

А какой клиент IPC неможет подключится ? 

Просто вариантов достаточно много когда клиент IPC  не может создать подключение к IPC серверу. 

 Hекорректное имя соединения IPC.

 Не стартовал сервер который должен принимать IPC соединение.

 Нет разрешения на подключение с IPC серверу.

 

Так же если был бы предоставлен лог работы системы, это упростило бы поиск ошибки.

  • Confused 1
Link to comment
Share on other sites

Попробую сформулировать еще раз.
1. Есть проект который до поры до времени разрабатывался в qemu. Сделаны сущности, прописаны edl/cdl/idl файлы, прописаны правила в security.psl  Работа с GPIO сделана в виде функции заглушки, вместо работы с драйвером выводится сообщение в консоль.
И на этом этапе проблем ни с названием соединения ни с порядком старта (а он никак не регламентируется в KoS CE насколько я понимаю), ни с разрешениями - нет.

2. Сущность на которую возлагается функция работы с GPIO линкуется с библиотеками gpio_CLIENT_LIB
и bsp_CLIENT_LIB. Изменяется только CMakeLists.txt. За образец взят пример examples/gpio_output

И исходящее соединение RPC до другой сущности падает при нициализации на вызове ServiceLocatorConnect

Еще раз. С-код не меняется. Только линковка.

Логи успешного и неуспешного запуска прикладываю.
А нет, не прикладываю, оказывается приложить можно только картинки. Ну ок, вот ЯД https://disk.yandex.ru/d/Vjsguzh7q2cRSQ

 

Link to comment
Share on other sites


Здравствуйте

Помимо линковки клиента с клиентскими библиотеками нужно также сделать следующее:


- прописать в политиках security.psl правила для взаимодейтсвия Client с процессами BSP и GPIO (как это сделано в примере gpio_output)
- рекомендуется использовать security.psl.in шаблон c макросом @INIT_EXTERNAL_ENTITIES@ (см пример gpio_output), чтобы при генерации конечного security.psl в политику попадали нужные правила для процессов, участвующих в решении. Туда добавялются базовые правила для того, чтобы работала серверная часть процессов, к примеру, для BSP добавялются правила, разрешающие запуск серверного процесса драйвера процессом Einit. При изменении имени PSL файла обратие внимание на einit/CMakeLists.txt, там тоже нужно будет поменять имя PSL файла.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


×
×
  • Create New...