A machine-implemented method for programming a heterogeneous multi-processor computer system to run a plurality of program modules, wherein each program module is to be run on one of the processors, the system comprising a plurality of processors of two or more different processor types, the method comprising:
- (a) performing machine-implemented offline processing using a program module applicability analyzer (PMAA) and a plurality of SBT tools of a schedule building toolkit (SBT), wherein:
- the PMAA determines which processor types are capable of running which program modules;
- and
- the plurality of SBT tools comprise:
- (i) a schedule builder that selects a subset of one or more different schedule solutions based on a first set of use cases;
- and
- (ii) a source code generator that generates scheduling software for a selected schedule solution, wherein the scheduling software is to be run on one or more of the processors;
- and
- (b) performing machine-implemented online processing using realtime data to test the scheduling software and the selected schedule solution, wherein:
- the PMAA determines whether a first processor of a first processor type is capable of running a first program module without compiling the first program module.