ramdisk failure

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

ramdisk failure

Jump to solution
1,242 Views
kristies1
Contributor II

Hi,

using MQX4.0.2 on K60FX512, I want to create small ramdisk, but always get error MFS_WRITE_FAULT  during format, what is wrong?

extern unsigned char  extBuffer[4096];

MQX_FILE_PTR a_fd_ptr;

void Ram_disk_start(void)

{

   MQX_FILE_PTR               dev_handle1,fp;

   int_32                     error_code;

   _mqx_uint                  mqx_status;

   a_fd_ptr = 0;

   mqx_status = _io_mem_install("mfs_ramdisk:", (uchar_ptr)&extBuffer[0],   (_file_size)4096);

   dev_handle1 = fopen("mfs_ramdisk:", "b");

   mqx_status = _io_mfs_install(dev_handle1, "b:", 0);

   a_fd_ptr = fopen("b:", NULL);

   error_code    = ferror(a_fd_ptr);

   if ( error_code == MFS_NOT_A_DOS_DISK ) {

      printf("\nNOT A DOS DISK! You must format to continue.");

      rdformat();

   }

   

}

void rdformat(void)

{

       int_32                     error_code = IO_ERROR;      

       uint_32 bad_cluster_count;

       MFS_IOCTL_FORMAT_PARAM format_struct;

       MFS_FORMAT_DATA MFS_format =

       {

       /* PHYSICAL_DRIVE; */ 0x80,

       /* MEDIA_DESCRIPTOR; */ 0xf8,

       /* BYTES_PER_SECTOR; */ 256,

       /* SECTORS_PER_TRACK; */ 0,

       /* NUMBER_OF_HEADS; */ 0,

       /* NUMBER_OF_SECTORS; */ 16, /* depends on disk */

       /* HIDDEN_SECTORS; */ 0,

       /* RESERVED_SECTORS; */ 0

       };

       format_struct.FORMAT_PTR = &MFS_format;

       format_struct.COUNT_PTR = &bad_cluster_count;

    error_code = ioctl(a_fd_ptr, IO_IOCTL_FORMAT,  (uint_32_ptr) &format_struct);

    if (error_code) {

       printf("Error while formatting: 0x%x\n", error_code);

    }

}   

Labels (1)
1 Solution
962 Views
DavidS
NXP Employee
NXP Employee

Hi Kristie,


C:\Freescale\Freescale_MQX_4_1_1_GA\mfs\examples\ramdisk

Terminal output:

Demo start

Initialized Ram Disk to a:\

NOT A DOS DISK! You must format to continue.

Shell (build: Apr 30 2015)

Copyright (c) 2013 Freescale Semiconductor;

shell>

shell> format a:

  1. Formatting...
  2. Done. Volume name is

Free disk space: 1536 bytes

shell>

shell> write test 1234

shell>

shell> dir

TEST             1234 01-01-1980 00:00:18      A TEST

shell>

shell> type test

0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQ

shell>

shell>

I used MQX4.1.1 on TWR-K70F120M using CW10.6.

Now your code is trying to implement MFS on 4096 bytes.  This is too small (just barely).

MFS needs RAM for the FAT table.  My example has the RAM disk at 6144 (0x1800) bytes and after formatting you can see there is only 1536 bytes available.

When I set my example to 4096 byte I get the following output:

Demo start

Initialized Ram Disk to a:\

NOT A DOS DISK! You must format to continue.

Shell (build: Apr 30 2015)

Copyright (c) 2013 Freescale Semiconductor;

shell>

shell> format a:

  1. Formatting...

Error while formatting: 0x3057

shell>

shell>

Please increase your RAM disk size.

Regards,

David

View solution in original post

1 Reply
963 Views
DavidS
NXP Employee
NXP Employee

Hi Kristie,


C:\Freescale\Freescale_MQX_4_1_1_GA\mfs\examples\ramdisk

Terminal output:

Demo start

Initialized Ram Disk to a:\

NOT A DOS DISK! You must format to continue.

Shell (build: Apr 30 2015)

Copyright (c) 2013 Freescale Semiconductor;

shell>

shell> format a:

  1. Formatting...
  2. Done. Volume name is

Free disk space: 1536 bytes

shell>

shell> write test 1234

shell>

shell> dir

TEST             1234 01-01-1980 00:00:18      A TEST

shell>

shell> type test

0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHIJKLMNOPQ

shell>

shell>

I used MQX4.1.1 on TWR-K70F120M using CW10.6.

Now your code is trying to implement MFS on 4096 bytes.  This is too small (just barely).

MFS needs RAM for the FAT table.  My example has the RAM disk at 6144 (0x1800) bytes and after formatting you can see there is only 1536 bytes available.

When I set my example to 4096 byte I get the following output:

Demo start

Initialized Ram Disk to a:\

NOT A DOS DISK! You must format to continue.

Shell (build: Apr 30 2015)

Copyright (c) 2013 Freescale Semiconductor;

shell>

shell> format a:

  1. Formatting...

Error while formatting: 0x3057

shell>

shell>

Please increase your RAM disk size.

Regards,

David