Re^2: Mr Thomas, one more question please... [Initializing Partition Table (?)]

Thomas Doerfler Thomas.Doerfler at imd-systems.de
Tue Jul 27 14:05:44 UTC 2004


Joe,

I should have mentioned: you might want to use the 
TFTP or FTP client instead. With these clients 
(available in RTEMS) you can either open and read or 
create and write files on a notwork file server. So 
maybe this is a solution for you.

wkr,
Thomas.


> Hi Mr Thomas, and thanks once more again,
> 
> So, I have a mandrake linux box using a 80GB had disk
> which was limited to 40Gb due to mother noard
> restrictions. I only have the madrake linux installed
> in that computer, a mendocino celeron at 400MHz.
> 
> Does the hardisk must be FAT formated???
> The hard disk I have is formated using linux
> filesystem. I installed mandrake with the express
> option and it created the linux needed partitions...
> 
> 
> So when I try to mount it using fileio sample I get a
> return value diferent from zero and the last error is
> 25 - file or directory doens exists... :-(
> 
> I dont have any FAT formated hard disk... :-( 
> 
> Can I use a floppy instead? I am starting the rtems
> program using a grub diskette which was formated using
> fat system...  Can I use it to be mounted?
> 
> How do I refere to the floppy when mounting and
> initializing using the fileio samples? /dev/fd0?
> 
> Many thanks, once more again...
> I ama  student and I am trying to make some research
> in the rtems but I need to create a file to store some
> values for later use...
> 
> Joe
> 
> 
> 
> 
> 
> 
> 
> --- Thomas Doerfler <Thomas.Doerfler at imd-systems.de>
> wrote:
> 
> > Hello,
> > 
> > yes, I think the IDE and ATA driver should 
> > initialize on your system. So in the "fileio" menu, 
> > you should call "fileio_part_table_initialize" (menu
> > 
> > letter 'p') and then "fileio_fsmount" (menu letter 
> > 'f'). Then your first harddisk partition with FAT 
> > filesystem should be mounted to /mnt/hda.
> > 
> > What messages do you get, when you call 
> > "fileio_mount"? What kind of harddisk do you use and
> > 
> > how is it partitioned?
> > 
> > wkr,
> > Thomas.
> > 
> > 
> > > Hello Mr Thomas and thank you for your help,
> > > 
> > > I have the following instruction in my rtems
> > program
> > > and I realize that the RTEMS_BSP_HAS_IDE_DRIVER is
> > > defined!
> > > 
> > > rtems_driver_address_table Device_drivers[] =
> > > {
> > >  	CONSOLE_DRIVER_TABLE_ENTRY
> > >  	,CLOCK_DRIVER_TABLE_ENTRY
> > > #ifdef RTEMS_BSP_HAS_IDE_DRIVER
> > >  	,IDE_CONTROLLER_DRIVER_TABLE_ENTRY
> > >  	/* important: ATA driver must be after ide
> > drivers
> > >  */
> > > 	,ATA_DRIVER_TABLE_ENTRY 
> > > #endif
> > > };
> > > 
> > > But I cant see the hda anyway... :-(
> > > That instruction is enough to load and initialize
> > the
> > > hardisk driver?
> > > 
> > > So, please, could you give a quick look at the
> > > scaletton of my program... I cant solve this
> > problem
> > > alone... Did you saw anything suspicious? Do I
> > have to
> > > include any special parameter when I configure and
> > > build the rtems to access hard drive? 
> > > 
> > > 
> > > Thank you Mr Thomas...
> > > 
> > > Joe
> > > 
> > > 
> > > PS: My program is in one file only called hello.c
> > and
> > > i want to use POSIX api as much as possible...
> > >
> >
> ==================================================================
> > > 
> > > #define CONFIGURE_INIT
> > > 
> > > #include <bsp.h> /* for device driver prototypes
> > */
> > > #include <libchip/ata.h> /* for ata driver
> > prototype
> > > */
> > > #include <libchip/ide_ctrl.h> /* for general ide
> > > driver prototype */
> > > 
> > > #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
> > > #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
> > > #define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
> > > #define CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
> > > 
> > > #ifdef CONFIGURE_INIT
> > > rtems_driver_address_table Device_drivers[] =
> > > 	{
> > > 	CONSOLE_DRIVER_TABLE_ENTRY
> > > 	,CLOCK_DRIVER_TABLE_ENTRY
> > > #ifdef RTEMS_BSP_HAS_IDE_DRIVER
> > > 	,IDE_CONTROLLER_DRIVER_TABLE_ENTRY
> > > 	/* important: ATA driver must be after ide
> > drivers */
> > > 	,ATA_DRIVER_TABLE_ENTRY
> > > #endif
> > > 	};
> > > 
> > > #include <rtems/bdbuf.h>
> > > rtems_bdbuf_config rtems_bdbuf_configuration[] = {
> > >   {512,128,NULL}
> > > };
> > > int rtems_bdbuf_configuration_size =(
> > > sizeof(rtems_bdbuf_configuration)
> > > 				     /sizeof(rtems_bdbuf_configuration[0]));
> > > #endif
> > > 
> > > #include <unistd.h>
> > > #include <rtems/error.h>
> > > #include <dosfs.h>
> > > #include <ctype.h>
> > > #include <rtems/ide_part_table.h>
> > > #include <rtems/libcsupport.h>
> > > #include "fsmount.h"
> > > 
> > > #include <rtems.h>
> > > #include <stdlib.h>
> > > #include <stdio.h>
> > > #include <string.h>
> > > #include <errno.h>
> > > #include <semaphore.h>
> > > #include <pthread.h>
> > > #include <fcntl.h>
> > > #include <time.h>
> > > #include <rtems/posix/timer.h>
> > > 
> > > #define print_time(_s1, _tb, _s2) \
> > >   do { \
> > >     printf( "%s%02d:%02d:%02d   %02d/%02d/%04d%s",
> > \
> > >        _s1, (_tb)->hour, (_tb)->minute,
> > (_tb)->second,
> > > \
> > >        (_tb)->month, (_tb)->day, (_tb)->year, _s2
> > ); \
> > >     fflush(stdout); \
> > >   } while ( 0 )
> > > 
> > > /*
> > >  *  Macro to print an task name that is composed
> > of
> > > ASCII characters.
> > >  *
> > >  */
> > > 
> > > #define put_name( _name, _crlf ) \
> > >   do { \
> > >     rtems_unsigned32 c0, c1, c2, c3; \
> > >     \
> > >     c0 = ((_name) >> 24) & 0xff; \
> > >     c1 = ((_name) >> 16) & 0xff; \
> > >     c2 = ((_name) >> 8) & 0xff; \
> > >     c3 = (_name) & 0xff; \
> > >     putchar( (char)c0 ); \
> > >     if ( c1 ) putchar( (char)c1 ); \
> > >     if ( c2 ) putchar( (char)c2 ); \
> > >     if ( c3 ) putchar( (char)c3 ); \
> > >     if ( (_crlf) ) \
> > >       putchar( '\n' ); \
> > >   } while (0)
> > > 
> > > /*
> > >  *  static inline routine to make obtaining ticks
> > per
> > > second easier.
> > >  */
> > > 
> > > static inline rtems_unsigned32
> > get_ticks_per_second(
> > > void )
> > > {
> > >   rtems_interval ticks_per_second;
> > >   (void) rtems_clock_get(
> > > RTEMS_CLOCK_GET_TICKS_PER_SECOND,
> > &ticks_per_second );
> > >  return ticks_per_second;
> > > }
> > > 
> > > 
> > > /*
> > >  *  This allows us to view the "Test_task"
> > > instantiations as a set
> > >  *  of numbered tasks by eliminating the number of
> > > application
> > >  *  tasks created.
> > >  *
> > >  *  In reality, this is too complex for the
> > purposes
> > > of this
> > >  *  example.  It would have been easier to pass a
> > task
> > > argument. :)
> > >  *  But it shows how rtems_id's can sometimes be
> > used.
> > >  */
> > > 
> > > #define task_number( tid ) \
> > >   ( rtems_get_index( tid ) - \
> > >     
> > >
> >
> rtems_configuration_get_rtems_api_configuration()->number_of_initialization_tasks
> > > )
> > > 
> > > /* end of include file */
> > > 
> > > 
> > > /*
> > 
> === message truncated ===
> 
> 
> 
> 		
> __________________________________
> Do you Yahoo!?
> Yahoo! Mail - 50x more storage than other providers!
> http://promotions.yahoo.com/new_mail

--------------------------------------------
IMD Ingenieurbuero fuer Microcomputertechnik
Thomas Doerfler           Herbststrasse 8
D-82178 Puchheim          Germany
email:    Thomas.Doerfler at imd-systems.de
PGP public key available at: http://www.imd-
systems.de/pgp_keys.htm




More information about the users mailing list