Why do I get an error using a microcontroller library with S-function builder?

조회 수: 9 (최근 30일)
Hello every one, I am currently working with a microcontroler (dsPIC33) and I am trying to programm it with SIMULINK.
I would like to use the S-function Builder block. I already read the associated documentation and found several examples.
I wish to import a library used by MPLAB for microcontroler's programming. I made a copy of it and managed to import it with the S-function Builder but when I try to use one of the functions (__delay32 for example) I have the following error :
error LNK2001: unresolved external symbol __delay32
Does anyone have tried to do something similar?
Thanks for your help. Helene

답변 (2개)

Kaustubha Govind
Kaustubha Govind 2013년 3월 21일
Where is __delay32 defined? Assuming that it is in an external library/source file, you need to add that file to the 'Library/Object/Source files' textbox in the Libraries pane of the S-function Builder Dialog Box.

Helene
Helene 2013년 3월 25일
Thanks for the answer .
Maybe I should explain a little bit more what I am trying to achieve. As I said I am proggramming a microcontroller. I already worked with MPLAB by typing my code and I was using the library libpic30 without any problem. I am now working with Simulink and Lubin Kerhuel "Simulink Blockset Embedded Target microchip devices" . I would like to do my delay instruction without to have to edit the generated code.
I already tried the Taped delay anec Transport delay blocks. They work almost fine BUT I have to enter an initial value for the output. I am more looking for something that just memorized the current value of the signal and pause for a specific amount of time. That is what brought me to the S-function builder bloc.
__delay32 is defined indeed in a external library file, libpic30.h.
I already imported it as you suggested. I found this library file in the XC16 compiler folder from MPLAB but I am programing with simulink on another computer which does not have this version of the compiler.
If it helps the __delay32 function is defined as follow :
extern void __delay32(unsigned long cycles);
But there are no more precisions about the function or about the cycles parameter.
The comments about this .h file does say that: "This file defines useful exports from libpic30.a".
Thanks, Helene
  댓글 수: 1
Kaustubha Govind
Kaustubha Govind 2013년 3월 25일
So it appears that __delay32 is only defined for the microcontroller, but not for a host/PC target? Since the Simulink model runs the S-function on the host machine during simulation, you may want to use an OS-equivalent for __delay32 (or make it a no-op) in the S-function Builder. Then, modify the generated TLC file to call __delay32 instead of its replacement, so that the generated embedded code calls __delay32, but not the S-function itself.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Simulink Coder에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by