все-таки как втроить С-код в проект на Co |
Ответить |
Автор | |
Новичок Присоединился: 06 Январь 2006 Online Status: Offline Публикации: 9 |
Опубликовано: 12 Январь 2006 15:01 |
Здравствуйте! почему то не найти информацию каким образом встраивать функции, написанные на языке Си в проект CoDeSys. Я так понимаю нужно создавать свою библиотеку, но по каким правилам и как затем ее подключать в CoDeSys. з.ы. контроллер beckipc sc13 спасибо
|
|
Действительный член Присоединился: 29 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 293 |
|
Вызов внешних функций из obj файлов в SС13 не поддерживается. Код Ваших С функций должен быть скомпонован с системой исполнения CoDeSys для SС13. В системе исполнения нужно сделать так называемую Reference table с указателями на Ваши функции. Далее нужно добавить функцию RHICFGGetExtRefTable, возвращающую указатель на эту таблицу. После чего Ваши функции будут видны из IEC программ. В самом CoDeSys нужно сделать проект, содержащий объявления соответствующих POU и сохранить его как внешнюю библиотеку (external library). Получится .lib файл, который конечные пользователи должны будут включить в свои проекты. Для внешних библиотек полезно написать некие заглушки на IEC языках в CoDeSys. Они будут работать в режиме эмуляции. Пример: void huge MyFirstLibFunc(void) int huge MySecondLibFunc(int i) RHIExtRefTable gRHIRefTable[] = RHIExtRefTable * RHICFGGetExtRefTable(void) Подробнее см. документ 'RHI documentation' в SDK. |
|
Igor Petrov
|
|
Новичок Присоединился: 06 Январь 2006 Online Status: Offline Публикации: 9 |
|
спасибо огромное! разбираемся... |
|
Новичок Присоединился: 06 Январь 2006 Online Status: Offline Публикации: 9 |
|
Добрый день!
не могу разобраться как именно подключать функции C к CoDeSys. я так понимаю в CoDeSys необходимо создавать внешнюю библиотеку (которая будет далее использоваться в проектах), содержащую POU с объявлением функции (то есть описанием переменнах, входов/выходов) и сам код функции на языке Си. Каким образом код функции надо подключить к CoDeSys? я создаю в борлад Си проект, пишу код функции, создаю таблицу RHIRefTable (как в примере) со списком определенных функций, компилирую...и что делать дальше? или в борланд Си нужно создавать не exe-проект, а lib-библиотеку (для exe)?? но эта lib-библиотека не хочет загружаться в library manager CoDeSys... одним словом, если есть возможность, пожалуйста, проясните поподробнее как это все делается. спасибо |
|
Действительный член Присоединился: 29 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 293 |
|
1) Создайте в CoDeSys новый проект, указав в качестве целевой платформы Beck IPC @CHIP. Вообще в CoDeSys внешние библиотеки на C нужны бывают редко. Можно писать внутренние библиотеки на ST. В них можно запретить доступ к текстам. Компилятор CoDeSys для этого семейства процессоров дает код, не хуже C компилятора. К функциям ОС доступ возможен через библиотеку rtos.lib.
|
|
Igor Petrov
|
|
Новичок Присоединился: 06 Январь 2006 Online Status: Offline Публикации: 9 |
|
Здравствуйте! Спасибо, вобщем-то все получается. Библиотке CAN в собственной интерпритации разрабатывается полным ходом.
Хотел бы уточнить следующее: При создании external library в CoDeSys и генереровании .h файла, все объявления функции и переменных имеют несколько неправильную форму, например тип int записывается как INT. Понятно дело, компилятор borland не воспринимает такой тип и приходится переписывать все объявления типов. В принципе один раз это сделать несложно, но потом при добавлении функций к библиотеке, .h файл генерируется заново и приходится заново все исправлять. Можно ли как-то с этим справиться?
спасибо |
|
Действительный член Присоединился: 29 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 293 |
|
Добрый день! Конечно, не стоит вносить такие правки руками! Поручите эту работу препроцессору компилятора С. #define INT int Включите его в свой проект первым. |
|
Igor Petrov
|
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |