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
  • Always progress in small steps.

    As Tamir notes, you need to configure a RAM drive.

    But you must also configure your processor to make use of the external memory. Specifying the SDRAM in the memory map will not be enough. The memory controller must know that the memory is there, and must be configured to generate constant refreshes of the memory - that is the D as in Dynamic in the SDRAM term.

    Progressing in small steps means that you should first make sure that you have your external memory correctly connected, and the processor initialized to use it before you add the next onion ring and tries to use the memory for a RAM disk. Create a tiny application that initializes everything and then copies information to the external RAM. Then put your processor to sleep for a minute or more and then wake it up and verify that all data is still valid in the RAM.

    You can of course do this test in your current application too, but in that case you should do it before starting up RTX. When you know the RAM works, then you can remove the test code.

Reply
  • Always progress in small steps.

    As Tamir notes, you need to configure a RAM drive.

    But you must also configure your processor to make use of the external memory. Specifying the SDRAM in the memory map will not be enough. The memory controller must know that the memory is there, and must be configured to generate constant refreshes of the memory - that is the D as in Dynamic in the SDRAM term.

    Progressing in small steps means that you should first make sure that you have your external memory correctly connected, and the processor initialized to use it before you add the next onion ring and tries to use the memory for a RAM disk. Create a tiny application that initializes everything and then copies information to the external RAM. Then put your processor to sleep for a minute or more and then wake it up and verify that all data is still valid in the RAM.

    You can of course do this test in your current application too, but in that case you should do it before starting up RTX. When you know the RAM works, then you can remove the test code.

Children