I was able to boot a NIOS2 from a program residing in on chip RAM on a Cyclone 1C3. Heres what I did:
1) Use Legacy On-Chip RAM in the SOPC builder.
2) Select SDK. Don't know if you had to do this or not. The IDE/HAL probably works.
3) In SOPC: have the Reset Vector pointing to your RAM device. I used the defaults that SOPC gave me and it worked fine. If you select SDK, have the program and data memory pointed correctly.
4) The first time you build SOPC, have the on-chip RAM blank.
5) After SOPC, write your program.
6) Heres the biggie: When you compile, use the -b option and use the base address of your on-chip RAM.
For example: nios2-build -b 0x1000 -Os -o main main.c etime.c. Don't know why, but the -b is important. If you are using IDE/HAL, don't know what you need to do to set the -b option.
7) Once you have your .srec, go back to SOPC and under the contents tab, select the build option and point to your .srec (not .c).
8) Finish your design with Quartus.
I know this looks clunky, but I found that it has worked quite well over the past month.
Hope this helps,
Rick