- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'd like to put both my FPGA design and my user code into an EPCS device. I've figured out how to put the FPGA design into the EPCS via JIC file but it's not entirely clear to me how the user program goes in there. From reading the bootloader source it appears that the user program gets stored in the EPCS right after the end of the FPGA design. But how do I get it in there? The flash programmer doesn't have a dropdown to select the target for the user program. Can someone answer the questions below:
1) Is it enough to use SOPC Builder to set the reset address of the CPU to the EPCS? Will that cause the flash programmer to put my program into the EPCS? 2) Can I create a JIC file that combines the FPGA and user code? Will I still have to set the reset address to the EPCS? 3) Is it still possible to debug the program by loading the SOF file into RAM or do I need a CPU with the reset address in RAM? Thanks, AndrewLink Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi queisser,
> Will that cause the flash programmer to put my program into the EPCS? I always use the command line for this ... since I can roll it into a make target. Here's what I do: 1. create the application flash: $ elf2flash --epcs --base=0x0 --end = 0x7fffffff --flash=<whatever> --input=<your app elf> --outfile=<your app flash> 2. program the app to the epcs: $ nios2-flash-programer --epcs --input=<your app flash> --sof=<your pgmr sof> 3. create the flash file for your fpga sof: $ sof2flash --epcs --input=<fpga sof> --offset=0x0 --output=<fpga flash> 4. program ther fpga image: $ nios2-flash-programmer --epcs --input=<fpga flash> --sof=<your pgmr sof> --relocate > Can I create a JIC file that combines the FPGA and user code? Sorry ... never used JIC. > Will I still have to set the reset address to the EPCS? No. The epcs bootloader code just won't run. So you'll have to do the bootstrap in your own app. > Is it still possible to debug the program by loading the SOF file into RAM Yes. After loading the fpga configuration via jtag, everything will work as normal. If you happen to set your reset address to the epcs bootloader code, it will still grab the application from the epcs. Regards, --Scott- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Scott,
Thanks for the info. I did what you suggest and it worked. The FlashProgrammer tool in the IDE works as well and, of course, does essentially the same thing although the order of burning the SOF and the ELF is reversed. I guess the --relocate takes care of that. I'm still not clear about the reset address - if I set the reset address to RAM or regular flash, wouldn't the CPU crash when it jumps there and finds garbage. In other words, wouldn't loading the user program out of the EPCS necessitate a reset address set to the EPCS? I'll try this later but I don't want to wait for a recompile right now. Thanks, Andrew- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Andrew,
> if I set the reset address to RAM or regular flash, wouldn't the CPU crash > when it jumps there and finds garbage. Yes ... if it finds garbage there. I keep a stable boot monitor in the epcs, but I put test code and filesystem images in standard parallel flash. The boot monitor can program the flash much (_MUCH_) faster than the flash programmer (via ethernet). So for test and debug I just load a sof that has the reset address in the parallel flash via JTAG since it's much more convenient. If things go belly up, I hit the hw reset and use the image from the epcs -- I'm just plain lazy I suppose ;-) > wouldn't loading the user program out of the EPCS necessitate a reset > address set to the EPCS? Normally, yes. But I may have misunderstood your original question. So, I think we might be talking apples and oranges. You can have a reset address outside of the epcs then jump into the epcs bootloader -- admittedly a hack -- and not necessarily a good practice ;-) -- although it does work fine ... but this is all for test & debug ... not product. Regards, --Scott
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page