I have to build a system with two NIOS2 processors, each of them linked to its corresponding on-chip memory block by means of the reset and exception vectors, and some PIO's. This configuration must then be put to work with two separate instances of Altera Monitor, each of them running its own C program independently. With version 12.0 of Quartus II Web Edition this was very easy, using SOPC Builder to ellaborate the two-processor system and loading the system on the Altera DE1 board. Then the first instance of Altera Monitor is launched, and the system is loaded by means of the PTF, SOF and JDI files issued by Quartus, taking care to use CPU1, MEMO1 and program1. The second instance of Altera Monitor is launched in a different folder, the system is loaded by means of the same above-mentioned PTF, SOF and JDI files issued by Quartus, taking care to use CPU2, MEMO2 and program2. Now both instances of Altera Monitor can run independently.
Due to objective circumstances, I had to completely reinstall Quartus II Web Edition, and now I used version 12.1 service pack1. It was quite an adventure, but finally I succeeded. This task now does not operate, which is a big problem that must be solved.
First of all, if I build the system with SOPC Builder and I use the PTF file in Altera Monitor, I cannot select the memory devices any more, thus I cannot complete the configuration...
... and I cannot even think of completing this task.
If I use the SOPCINFO file instead of the PTF file, then I can select CPU1, MEMO1 and program1 for the first instance, and CPU2, MEMO2 and program2 for the second instance. Both programs can be compiled correctly, but only one of them can be loaded and run, and the attempt to load the other one fails.
OK, I disconnect the first instance and manage to load the second program, and now the attempt to load the first program fails.
In both cases I get the error message "Unable to bind (112)".
I managed to rebuild the system by means of QSYS, in fresh new folders obviously, and tried again this task using the QSYS, SOF and JDI files... with the same negative results.
I reiterate, this task succeeded perfectly with version 12.0 using the PTF, SOF and JDI files. What happened, what does "Unable to bind (112)" mean and, most importantly, what can be done to solve this unpleasant situation?
First of all you mentioned that the two CPUs are sharing the same PIO, you must use mutex IP to control this hared peripheral and any other shared peripherals. Then tell me how you want to boot the NIOS II? I mean, are you creating a jic file to combine the sof file with the two HEX files? I prefer this way as it will solve any confusion that might happen.
BTW you can download the "Multi-Core NIOS processor example" from the link below and see how to have 4 NIOS processors running together and sharing the same peripherals.