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

Joel Sherrill <joel@OARcorp.com> joel.sherrill at OARcorp.com
Tue Jul 27 15:12:41 UTC 2004


Thomas Doerfler wrote:
> 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.

TIll's site also has an NFS client for RTEMS.

http://www.slac.stanford.edu/~strauman/rtems/nfs/index.html

--joel

> 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
> 


-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
    Support Available             (256) 722-9985




More information about the users mailing list