Never make patches in the debugger and upload these to a file for later use. Change a source file, so you can alter the comments as required to write drivers that are beautiful to behold and a joy to use. Develop your code with the environment the firmware folks use so they can immediately integrate your test routines. It drives me crazy to see the lousy planning so endemic in this industry. All too often laziness or stupidly reign, so one engineer does his work under a particularly obsolete version of a compiler, while the rest of the team must painfully massage the code into something compatible with the version they use.
Hardware design requires as much software support as does the firmware.
PALs, PLDs, and FPGAs let you create much of the hardware design late in the game and so are a wonderful thing. Be sure your bench is set up with all of the tools you need to edit and compile these. Unfortunately, too many of the tools are not happy running under a standard DOS or Windows environment. You may need a special boot sequence to free memory. Another is to wait for all of this stuff to be reasonably available under Windows.