- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am just switching from another fpga to altera.
Could you please tell me is this the write way to access main memory. main_memory = (char *) DDR2_SDRAM_BASEADDR; // base address of main memory can be changed in system.h file main_memory1 = (char *) DDR2_SDRAM_BASEADDR+1024; // base address of main memory can be changed in system.h file for ( x = 0 ; x < 262122 ; x = x +1) *(main_memory+x) = *(main_memory1+x); regards UCERDLink Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This isn't the right way if the "main memory" is also used for your software. The beginning of the memory is generally used for the exception vectors, and if you overwrite those you will crash the system.
It is a lot safer to allocate a block of memory to use, either by using malloc() to allocate at run time, or by using a static or global table to allocate at compile time.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- This isn't the right way if the "main memory" is also used for your software. The beginning of the memory is generally used for the exception vectors, and if you overwrite those you will crash the system. It is a lot safer to allocate a block of memory to use, either by using malloc() to allocate at run time, or by using a static or global table to allocate at compile time. --- Quote End --- Yes you are right but the reason for using directly baseaddress is, I have two DRAM controller on my FPGA board. The memory controller (We designed) can access read/write operation in parallel, that is why for comparison we are designing a baseline system (Nios system based) that can access both memories in parallel.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Well if you are sure that this memory section is never used by other parts of the software, then you can do it this way. If the memory buffer is shared with some hardware (a DMA for example) then remember to flush the cache before the hardware accesses the memory, or use uncached access through alt_remap_uncached()

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