This is virtually impossible. There is no standard calling convention for
8051. Every compiler uses its own invention, be it IAR, Keil or SDCC.
AFAIK only Raisonance and Keil are compatible. On top of that every
compiler uses its own object and library format. IAR has no clue how to
interpret the contents of an SDCC generated .rel file nor how to interpret
the sdcclib generated library. SDCC has another tool for generating
libraries called sdar which is similar to gnu AR, but I don't believe IAR
can handle that either.
I'll make the story even worse. It's already difficult to keep source code
compatible between these compilers. The use of <compiler.h> might help a
bit with that.
The above is true for almost every microcontroller and its different
compiler tools. Only for modern 32-bit controllers there is an EABI
definition that is followed by many tools.
> I've started working with SDCC a few days ago and, naturally, I have some
> issues. I'm hoping you can help me solve them. I went through the mailing
> list archive and I didn't see a similar question.
> I have a project for 8051 that requires IAR Workbench and SDCC working
> together. That is, some parts of the project will be done in IAR and
> later, as a library file, be included in a .c file made with SDCC.
> For starters I'm just trying to do the opposite, to see how SDCC and IAR
> work together. What I'm doing is:
> - create an example.c file that includes 8051.h file from SDCC\include and
> write to port P0 i.eg. P0=0x01;
> - make a .lib out of it "sdcclib examplelib.lib example.rel"
> - go to IAR, add this .lib file to my project. I've also added the path to
> my lib in the preprocessor.
> - use the functions from my examplelib library in my IAR project
> However, this does not work. When I add the library and try to build the
> project, I keep getting the error: "Fatal Error[e8]: Corrupt file.
> or misplaced tag encountered in module NO MODULE NAME ( C:\...\pstlib.lib
> ). Tag unknown ", "Error while running linker".
> Am I missing anything?
> Thanks in advance.
Android apps run on BlackBerry 10
Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
Now with support for Jelly Bean, Bluetooth, Mapview and more.
Get your Android app in front of a whole new audience. Start now.
Sdcc-user mailing list