I am trying to import object files created by KEIL C51 compiler by my own pascal compiler. There are a lot of records not documented in the OMF51 documentation like 07, 09, 0F, 17, 19, 20, 23, 24, etc. Where can I get documentation for these records?
Hello Igor,
You stated: There are a lot of records not documented in the OMF51 documentation
Keil released part of the OMF51 Object Module Specification here:
http://www.keil.com/download/docs/80.asp
Ignore any record type not specified In the above link.
Keil does have a full OMF specification, but it is only released to emulator developers. If this is for an emulator (which it sounds like its not) contact Keil support for this full specification.
Is there a reason you need to interpret these undocumented OMF records? You should be fine with everything mentioned published specification.
I am already aware of this specification and records described in it are already supported. But I tried to compile one simple program with C51 and I get test.OBJ. Fine, but when I'm importing it I get the following records:
OBJECT FILE: test.OBJ 70: UNKNOWN 02: Module Header 0F: UNKNOWN 19: UNKNOWN 17: UNKNOWN 10: Debug 24: UNKNOWN 23: UNKNOWN 20: UNKNOWN 23: UNKNOWN 10: Debug 10: Debug 23: UNKNOWN 07: UNKNOWN 09: UNKNOWN 10: Debug 07: UNKNOWN 23: UNKNOWN 10: Debug 10: Debug 72: UNKNOWN 04: Module End
Most of records are undocumented. Of course, I can ignore them but where is actual data? I am missing segment definitions, external definitions, public definitions, content, fixup records, etc...
All I am trying to do is to add support for object files created by KEIL compiler. Is there any secret in these records?
In worst case I will be forced to do reverse engineering. This works 100% but takes time. I don't believe this is what KEIL wants.
All I am asking is some documentation on these records - how to import them. Of course, I can also just forget about importing object files generated by KEIL tools. There are other 8051 C compilers.
Have you actually contacted Keil for this information?
Remember, this forum is not the route to contact Keil!
Have you contacted technical support to obtain the OMF specification?
Jon
Wow. Great minds type alike!
All I am trying to do is to add support for object files created by KEIL compiler. Is there any secret in these records? any loaders I know of (can) use .hex files
are you making an emulator?
Erik
Of course, I have sent an email to KEIL (support.intl@keil.com)- no reply. I asked about the problem on the forum and was asked to explain the reason why do I need to import all the records and I have explained it in detail. Just this and nothing more.
I am asking for help and I am explaining what I need and why. Thanks to anybody who has any solution to this problem and is willing to share the secret.
Regards, igor
No, I am not making any emulator yet. I am writing a Pascal compiler for the 8051 family (well, it is almost done) and I'm trying to import object files created by KEIL compiler.
I can not use HEX files since these files are absolute, i.e. there is no relocation information. They can not be used in linker.
Sorry, I read through the posts again, and saw that you mentioned the compiler earlier. So I guess the emulator was just a type-o.
Yes, I think the compiler can replace the OMF. And the reference assignment is the same, so no need to change the details.