on board Flash provides many benefits
Flash programming refers to the ability to program or reprogram a Flash memory device after it has been soldered onto the printed circuit board. This is also referred to as "on-board programming". Typically flash devices hold the code that is executed by the processor or micro-controller to run a system.
Flash programming offers tremendous benefits to companies, because they can manufacture boards or entire systems in volume -- and have the flexibility to go back later to configure the devices to suit any application a customer requires.
This allows for more efficient manufacturing, and lowers the cost of keeping a variety of different parts (which are all the same, except for the way they are programmed) in inventory.
Flash also simplifies the process of responding to Engineering Change Orders (ECO) or Engineering Change Notices (ECN), since reprogramming a flash device can simply modify a board for a new use.
The problem arises for design engineers in developing prototypes, because they must program the device many times during the debugging process as the processor code is developed. With today's advanced packaging options, such as BGA's or chip-scale packaging, older methods that relied upon socketing the Flash and using some type of stand-alone programmer are becoming unusable, in terms of physical damage to the board, or expensive, in terms of wasted devices and sockets. Increasingly, designers require the ability to program a flash device after it has been attached to the printed circuit board. In a manufacturing setting, engineers have a similar problem -- with an additional complication. Conventional testing methodologies (like in-circuit testers) lose their usefulness when direct access to the flash device is not available.
Using JTAG and boundary-scan tools, engineers are free to solder flash devices onto a printed circuit board and program (and reprogram) them as many times as they want -- without ever touching the device.
Boundary scan can do on-board programming by using the boundary-scan structure of the adjacent microprocessor.