This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

RL-ARM filesystem and SDRAM

Anybody using the file system with RTX o/s, saving data to SDRAM.

Have board 32MB SDRAM on DYCS0 map the memory in none RTX mode the code runs fine and can read write to files.

In RTX mode application hangs at finit(), when application is stopped its in the DAbt_Handler.

The code none RTX is really simple

int main (void) {

        int i;

        FILE *f_p, *f_rp;
        char line[80];

                while( 0 != finit() );

                i = fformat("R:");


                f_p = fopen("R:\\temp\test.txt", "w" );

                if (f_p != NULL){

                 fputs("Example of a string in ram.\n", f_p);


                 fclose(f_p);

                }

                //re open the file to read back
                f_rp = fopen("R:\\temp\test.txt", "r" );

                if (f_rp != NULL){

                        fgets(line, sizeof(line), f_rp);

                        fclose(f_rp);
                }

}

The RTX version

_task void init (void){


int i;
os_tsk_prio_self (100);
while( 0 != finit() );
i = fformat("R:");
os_tsk_create (timer_task, 40);
os_tsk_delete_self();
}
int main (void) { os_sys_init(init); while(1); }

The have increased the heap size, not using microlib, Imported swi_handler (i have used RTX before and the file system but not to SDRAM, previously use SDCARD).

Just after any pointers if anybody has some to share, bang head is getting painfull.

Thanks
Darren

Parents
  • But did you verify that your DRAM area is retaining data, i.e. that you could sleep the processor for a very significant time and then retrieve the data from all parts of the memory.

    The introduction of the RTX will change your access patterns, and even if there is no working refresh, you can keep data alive in DRAM memory by normal accesses.

    In the end, you must be sure that all parts of the DRAM gets refreshed by the special refresh cycles of the DRAM controller - different memory chips requires different "loop length" for these refresh cycles to make sure that all pages of the RAM gets refreshed.

Reply
  • But did you verify that your DRAM area is retaining data, i.e. that you could sleep the processor for a very significant time and then retrieve the data from all parts of the memory.

    The introduction of the RTX will change your access patterns, and even if there is no working refresh, you can keep data alive in DRAM memory by normal accesses.

    In the end, you must be sure that all parts of the DRAM gets refreshed by the special refresh cycles of the DRAM controller - different memory chips requires different "loop length" for these refresh cycles to make sure that all pages of the RAM gets refreshed.

Children