I would like to use "run user program before" or some such to set a #define from one place in several builds i.e. build #1 will pick the #define from 'x' build #2 will also pick the #define from 'x' an example: ONE place to define whether want "debug' or "production" mode which will affect both the build of boot and app.
I do not know if I make myself crystal clear, but if not, do ask.
currently this is accomplished with sepaarte defines and too many mistakes happen.
BTW it would be absolutotally wondeful if the above also could affect a .bat file run in "run user program after"
Erik
Sorry, Erik, but you're really making just about no sense at all.
But let me ask: how does a simple header file fail to save that problem for you?
say I have 47 different projects say all have a local #define DEBUG
say that Joe (I am no better) always forget to change one or more #define DEBUG to //#define DEBUG when he builds for production
so, I would like to in one global place in some form or fashion make it so that all 47 projects build in either debug mode or production mode
Erik; Since you run most of your projects from the command line and batch files, then just write a TcL script to execute your project builds. Bradford
What is you had a header file like this:
//THIS IS A LOCAL FILE TO EACH PROJECT #ifdef PRODUCTION #undef DEBUG #elif DEBUG #define DEBUG #else //Up to developer.... #define DEBUG #endif
Now in a header common to all projects
//OR DEBUG OR NOTHING.. #define PRODUCTION
Would that work?
I normally have a "global.h" header that sets this kind of params.
So make that one global place a single header file, global to all projects. Or make it an argument to the makefile that controls a #define passed on directly to all batch / make files. Traditional Makefile setups would support this with a relatively simple invokation like
make all EXTRA_CPPFLAGS="-DRELEASE"
Or you could have a "setup_for_release.cmd" that sets an environment variable, which is queried by all build scripts. So by opening a shell and running, in there, first "setup_for_release.cmd" and then "build_everything_and_the_kitchen_sink.cmd", you get release builds of everything.
Or better yet, don't make a distinction between debug and release builds in the first place. Or as they say in the aerospace field: "You fly what you debug."
and they insist on the IDE :(
"You fly what you debug." there is a post link checksum generator. Thus when you JTAG the file with the debug info you do not get the checksum and the bootloader burps.
there is a post link checksum generator. Thus when you JTAG the file with the debug info you do not get the checksum and the bootloader burps.
So don't do that. uVision can handle separation between the hex file being loaded and symbols taken from the ELF file.
... do that. Again I am new to tne IDE (and sorry I am forced to use it). It seems Keil shares with the Gatesians the belief that they know better than you what you want. Also when using a decent editor instead of the 'simple' one in the IDE, the IDE 'advantage' soon disappears.
Anyhow, Thay want it, they get it, how to do the above .hex/.elf combo? flash/download do not ask.
how to do the above .hex/.elf combo? flash/download do not ask.
Been a while since I had to, but the essence was you had to change the debugger startup configuration from the automagic default. Turn off automatic flashing of the .elf file, then set up a debugger "init script" to do exactly those things you want done --- including flashing the .hex file, and loading the elf file, symbols-only.