Software is usually developed on evaluation boards whilst waiting for the prototype hardware. This ensures that the prototype hardware design can be tested and debugged soon after it is available.
The choice of programming language(s), operating system (or bare metal), unit testing requirements etc. will also be confirmed at this stage.
At this stage we are looking to verify all the basic functionality of the product on the prototype hardware.
