Programming NOR or large NAND flash devices can be done using a variety of technologies, including boundary scan (JTAG), processor-controlled test (emulation), or FPGA-controlled test. Which embedded instrument you use is a trade-off between speed, complexity and cost.