To get the initial bootloader image into your Balloon board you need to use the CPU JTAG interface. Normally this will already have been done and you won't need to do it again unless you manage to erase or otherwise bugger-up your bootloader image.
Details of the connectors and JTAG harware to use are in BalloonJTAGing
The normal way to do this is to install BalloonBinaryLoader, do bbl --jflash and follow the instructions. It takes quite a long time due to the speed limitations of the parallel port.
If you have a Windows machine then there is a jflash version with a GUI that can be used there.
What happens under the hood is that you use the jflash utility, which is included within BalloonBinaryLoader. You need root priviledges to get raw access to the parallel port, which is dealt with via sudo from within bbl.
On Linux: jflash --noverify <filename>, normally 'bootldr.small'.
On Windows you get a GUI. The JTAGing process via the parallel port is very slow so it takes about 4 mins to Put a 50K bootloader in, twice as long if you let it verify (which it does unless you specify --noverify).
Because it's slow we normally put a very stupid bootloader in and use that to load a smarter one over serial.
Command is bflash Balloon3 -f -p <filename> Filename is normally bootldrpxa-fpga.fast or bootldr-cpld.fast
Sometimes you need to power up the board and hit go on the bflash command immediately (otherwise the NOR can be misdetected or not detected).