The full message generated after the compilations are all done, and BL51 starts. It is: *** FATAL ERROR L213 I/O ERROR ON WORK FILE: EXCEPTION 0029H: ACCESS TO FILE DENIED Target Not Created
I verified that the temporary file directories are all valid, writeable, empty, etc. and that the environment variables point to them. The error occurs when the target directory for the output is empty of any files except .uv2 files. Reinstalls have no curative effect.
I still get this message. It affects BL51 v6.02, from the compiler version 8.05; also BL51 5.11 from compiler version 7.20
BL51 for version 6.10 works. LX51 for version 8.05a works; unfortunately I have customers that need to use BL51. I have full support, theoretically, but Brian Clough of Plano TX has basically given up.
Ray sorry, but I do not fully understand:
you say BL51 for version 6.10 works. Do you mean by that that an older version works OK?
Yes, the older version works fine. I have three versions installed in order to test compatibility of semiconductor demo code with various Keil compilers: 6.10, 7.20 and 8.05a
sounds like a "default change" I got badly burnt on that some time ago.
Try getting rid of all defaults (specify everything - no assumptions) and get rid of all wildcards to see what happens.
Erik
Brian Clough, of Keil support in Plato TX sent me an experimental version to isolate the problem. Thank-you, Brian!
I tried it out, and there is now more information: *** Fatal Error L213: I/O ERROR ON WORK FILE EXCEPTION 0029H: ACCESS TO FILE DENIED FILE: C:\FSI\TEMP\$$L51$$$.TMP
Of course, there is no folder C:\FSI\TEMP When I created it, everything worked fine. What is this folder, anyway? Shouldn't it use my temp directory? (clearly a much lower-priority issue)
The path to this folder is defined with the Environment Variable TEMP. Please see: http://www.keil.com/support/docs/2972.htm
How was your TEMP Environment Variable set? Did it have any spaces in it...?
Do the initials "FSI" mean anything to you?
Initially: "The full message generated after the compilations are all done, and BL51 starts. It is: *** FATAL ERROR L213 I/O ERROR ON WORK FILE: EXCEPTION 0029H: ACCESS TO FILE DENIED Target Not Created"
Now, "Keil support in Plato TX sent me an experimental version to isolate the problem ... I tried it out, and there is now more information: *** Fatal Error L213: I/O ERROR ON WORK FILE EXCEPTION 0029H: ACCESS TO FILE DENIED FILE: C:\FSI\TEMP\$$L51$$$.TMP"
It would have been far more helpful if the message had included the full file details in the first place, wouldn't it?
Error messages should never complain about problems with "a file" without stating explicitly which file it concerns!
Brian Clough made a wonderful diagnostic suggestion:
"Hello Ray,
Can you do the following?
From a command prompt, type: SET >xx.txt
and send the xx.txt file."
This showed a -bunch- of environment variables that were not being defined in the computer->advanced->environment variable dialogue box of Win 2000. I double checked.
Oddly, many of them referred to the nonexistent folder C:\FSI\TEMP ...
Since I used to set up DOS systems, I instantly figured that they might be in autoexec.bat.
And, they were.
Apparently BL51 uses a hierarchy of environment variables for its temp files. Maybe so that a more precisely-named environment variable can control its behavior exactly? Anyway, it's definitely undocumented behavior. Reinhard Keil might know, but perhaps forgot to mention it (see above comment by him).
The exact problem was not the TEMP environment variables (which were correct), but some -other- environment variables set by autoexec.bat (where, of course, they were not visible to the computer->advanced->environment variable dialogue box of Win 2000) My autoexec.bat said:
SET A51INC=C:\FSI\INC SET A51TMP=C:\FSI\TEMP SET C51INC=C:\FSI\INC SET C51LIB=C:\FSI\LIB SET C51TMP=C:\FSI\TEMP SET AXAINC=C:\FSI\INC SET AXATMP=C:\FSI\TEMP SET CXAINC=C:\FSI\INC SET CXALIB=C:\FSI\LIB SET CXATMP=C:\FSI\TEMP
When this bad stuff was deleted from autoexec.bat, BL51 started working again.
The Keil tools stopped mucking about with autoexec.bat a long time ago. However, there are other tool vendors that still follow this practice. And, some of them use the same environment variable names as the Keil tools.
The following manual page describes the settings the Keil tools use:
http://www.keil.com/support/man/docs/c51/c51_cm_envvars.htm
Jon
"other tool vendors ... still follow this practice"
And "A51" isn't a unique name just for Keil's '51 assembler...
Hence the earlier question whether the initials "FSI" mean anything to the OP?