I have recently downloaded quicksense studios for use in a capacitive sensing application. After using their utility to generate a lot of the needed source code, I decided to try and assemble and build the project using c51. I used the ax51 assembler, the cx51 compiler, and the lx51 linker. Eventually I managed to get the filed to assemble and compile, generating the needed object files. When I attempt to link them however, I keep getting this error:
@C:\Users\_I_\Documents\tc\test3\cyglink.txt "C:\Users\_I_\Documents\tc\test3\QS_Config.obj", "C:\Users\_I_\Documents\tc\test3\QS_DeviceInit.obj", "C:\Users\_I_\Documents\tc\test3\QS_Main.obj", "C:\Users\_I_\Documents\tc\test3\QS_Threshold_Cal.obj", "C:\Users\_I_\Documents\tc\test3\QS_F99xRoutines.obj", "C:\Users\_I_\Documents\tc\test3\QS_Baselining.obj", "C:\Users\_I_\Documents\tc\test3\QS_Core.obj", "C:\Users\_I_\Documents\tc\test3\QS_Events.obj", "C:\Users\_I_\Documents\tc\test3\QS_Exp_Averager.obj", "C:\Users\_I_\Documents\tc\test3\QS_Groups.obj", "C:\Users\_I_\Documents\tc\test3\QS_Memory.obj", "C:\Users\_I_\Documents\tc\test3\QS_nDPad.obj", "C:\Users\_I_\Documents\tc\test3\QS_Timing.obj", "C:\Users\_I_\Documents\tc\test3\QSCI_Memory.obj", "C:\Users\_I_\Documents\tc\test3\QSCI_Memory_lite.obj", "C:\Users\_I_\Documents\tc\test3\QSCI_Core_Lite.obj", "C:\Users\_I_\Documents\tc\test3\QSCI_UARTRoutines_lite.obj" TO "C:\Users\_I_\Documents\tc\test3\test3" RS(256) PL(68) PW(78) CODE(0, ?CO?QS_CONFIG(0x100)) *** ERROR L204: INVALID KEYWORD POS: 1054 Routines_lite.obj TO C:\Users\_I_\Documents\tc\test3\test3 RS
I do not understand why it is registering as an invalid keyword. I decided to try using bl51 instead. I got a different error message:
"C:\Users\_I_\Documents\tc\test3\QS_Config.obj", "C:\Users\_I_\Documents\tc\test3\QS_DeviceInit.obj", "C:\Users\_I_\Documents\tc\test3\QS_Main.obj", "C:\Users\_I_\Documents\tc\test3\QS_Threshold_Cal.obj", "C:\Users\_I_\Documents\tc\test3\QS_F99xRoutines.obj", "C:\Users\_I_\Documents\tc\test3\QS_Baselining.obj", "C:\Users\_I_\Documents\tc\test3\QS_Core.obj", "C:\Users\_I_\Documents\tc\test3\QS_Events.obj", "C:\Users\_I_\Documents\tc\test3\QS_Exp_Averager.obj", "C:\Users\_I_\Documents\tc\test3\QS_Groups.obj", "C:\Users\_I_\Documents\tc\test3\QS_Memory.obj", "C:\Users\_I_\Documents\tc\test3\QS_nDPad.obj", "C:\Users\_I_\Documents\tc\test3\QS_Timing.obj", "C:\Users\_I_\Documents\tc\test3\QSCI_Memory.obj", "C:\Users\_I_\Documents\tc\test3\QSCI_Memory_lite.obj", "C:\Users\_I_\Documents\tc\test3\QSCI_Core_Lite.obj", "C:\Users\_I_\Documents\tc\test3\QSCI_UARTRoutines_lite.obj" TO "C:\Users\_I_\Documents\tc\test3\test3" RS(256) PL(68) PW(78) CODE(0, ?CO?QS_CONFIG(0x100)) *** FATAL ERROR L218: NOT AN OBJECT FILE FILE: C:\Users\_I_\Documents\tc\test3\QS_Config.obj
However, when I go and check this directory, all the corresponding object files have been generated.
what am I missing? Any and all help is appreciated.
As far as I know, yes. I have seen it used in other codes that use both the lx51 and the bl51 linker. The utility which generates all this code also bases it on the type of assembler, linker, and compiler that the user inputs.
http://www.keil.com/support/man/docs/lx51/lx51_ln_dirref.htm
http://www.keil.com/support/man/docs/bl51/bl51_ramsize.htm
*** FATAL ERROR L218: NOT AN OBJECT FILE FILE: C:\Users\_I_\Documents\tc\test3\QS_Config.obj should be self explanatory. However, by "Keil tradition" it c an mean anything related to the file
is it the quotes, I do not recall them (currently not running commandfile)
1) in windows explorer delete the file at the exact path "C:\Users\_I_\Documents\tc\test3\QS_Config.obj", 2) compile/assemble the source for QS_Config 3) if any errors/warnings, get rid opf them and go to 2) 4) vrify that QS_Config.obj indeed ended up at C:\Users\_I_\Documents\tc\test3\
Erik
But not in LX51?
evidently
The utility which generates all this code also bases it on the type of assembler, linker, and compiler that the user inputs.
And what evidence do you have that the trouble is not with that utility, rather than Keil's linkers? In other words, aren't you jumping to conclusions here?
I did delete the object files and recompile with no errors. I do have a few warnings for various files, but no warning related to QS_config. I verified that there is a file called QS_Config.OBJ at the correct file path. You mentioned that its possible it is spitting out this error due to some other problem with this file. What other types of problems might cause this error?
Thank you everybody for the feedback.
I managed to get past the error I was getting in BL51. However, now I have a new error:
FATAL ERROR L252: RESTRICTED VERSION: CODE MUST BE ABOVE 4000H
I do have a full and licensed version running on this machine.
FATAL ERROR L252: RESTRICTED VERSION: CODE MUST BE ABOVE 4000H I do have a full and licensed version running on this machine. no 'version' is 'full' till registered. contact Keil.
According to the message, you don't.
As Erik says, this is a support issue - you need to contact Keil direct.
I have had this error pop up after running a fully licensed version for months. Apparently some probmlem in the License management routine. I just went to the Tool.ini file and copied by lic number and pasted in the license dialog under License Management. Then re-opened my project and all worked well. It has happened more than once for me. But I second Erik's suggest, contact Keil Support on any license problems.
Bradford