shutov,
All memory mapping is done within the file WINCE420\Platform\xxx\files\config.bib. Look in the Platform Builder help and it will explain to you the format of a bib file. In particular, our config.bib file includes a C-language header file. Typically this is in; WINCE420\Platform\xxx\inc\card_engine\xxx_config_bib.h. We use the header file so we can share memory map information between the linker and source code.
The most common thing to do is to include all of the components that you need in your image. Then, within the final generated ce.bib file, comment out the big libraries and executables. This way, those items will be built and placed in the release directory, however they won't be included in the final image. As long as you have a KITL connection, the CE image will pull whatever it needs from the release directory if it wasn't included in the image. So, it is possible to build a small kernel and have most everything else stored on the host.
Also, you might want to step back a bit and really think about what it is you are trying to debug. If you are debugging an application, you probably don't need a debug build of your operating system. Likewise, if you are specifically working on a single driver, you don't need to debug the entire operating system, just that driver. To do this, go ahead and build a retail version of your image, but include KITL and the debugger (Platform => Settings => Build Options).
You can also mix and match debug and retail builds. That is to say, you can build a retail version of the entire image, then switch to command line and build a debug version of your application, driver, whatever, and then re-link your final image. This will keep the image small but give you full debugging information on those components you are interested in.
For more information and advice, you might want to google the newsgroups:
http://groups.google.com/...oft.public.windowsce
http://groups.google.com/...indowsce.platbuilder
Regards,
--mikee