Ignore:
Timestamp:
Aug 11, 2000, 7:26:31 PM (20 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
57b1f53
Parents:
b96ca51
Message:

2000-08-11 Charles-Antoine Gauthier <charles.gauthier@…>

  • README: Updated
  • console/console.c: Fix polled input. Add support for shared printk. Add support for more flexible polled I/O with and without termios. I/O mode and console is selectable either from NVRAM or from mvme167.cfg. Clean up comments.

2000-08-11 Charles-Antoine Gauthier <charles.gauthier@…>

  • startup/page_table.c (page_table_init): Reorganize NVRAM parameters.
  • include/bsp.h: Reorganize NVRAM parameters. Add support for shared printk.
  • times: These are the times for the MVME167, not the MBX860-002.

2000-08-11 John Cotton <john.cotton@…>

  • network/network.c: Fix NVRAM configuration parameter handling from previous revision. Check J1-4, restructure NVRAM parameter handling.

2000-08-11 Charles-Antoine Gauthier <charles.gauthier@…>

  • network/network.c: Cleanup of network driver to reduce warnings. Addition of second parameter to uti596_attach.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/m68k/mvme167/README

    rb96ca51 red09fd77  
    5555
    5656Port Description
     57
    5758Console driver
    5859---------------
    5960
    60 This BSP includes an termios-capable console driver that supports all
    61 four serial ports on the MVME167 model. The RTEMS console, /dev/console,
    62 corresponds to channel 1 in the CD2401. This corresponds to Serial Port
    63 2/TTY01 on the MVME712M. Serial Port 1/Console is normally used by 167Bug;
    64 do not open /dev/tty00 if you are debugging using 167Bug.
    65 
    66 The console is initialized with whatever parameters are set up in termios
    67 before it calls the firtOpen driver callback, EXCEPT THAT HARDWARE
    68 HANDSHAKING IS TURNED OFF, i.e. CLOCAL is set in the struct termios
    69 c_cflag field. We use 3-wire cables for I/O, and find hardware handshaking
    70 a pain. If you enable hardware handshaking, you must drive CTS* low on the
    71 CD2401 for output to occur. If the port is in the DTE configuration, you
    72 must drive the RS-232 CTS line to space; if the port is in the DCE
    73 configuration, you must drive the RS-232 RTS line to space.
     61This BSP includes an termios-capable interrupt-driven I/O console driver
     62that supports all four serial ports on the MVME167 model. The port labelled
     63Serial Port 1/Console on the MVME712 is normally used by 167Bug; do not open
     64/dev/tty00 if you are debugging using 167Bug.
    7465
    7566Limited support is provided for polled terminal I/O. This is used when
    76 running the timing tests. Set the CD2401_POLLED_IO manifest constant to 1
    77 in rtems/c/src/lib/libbsp/m68k/mvme167/console/console.c to enable polled
    78 I/O. In this case, I/O is done through 167Bug, usually to the Serial Port
    79 1/Console port. Interrupt-driven and polled I/O cannot be mixed in the
    80 MVME167.
     67running the timing tests, and by the printk() debug output function.
     68Polled I/O may use termios, or it may bypass those services. The printk()
     69function does not use termios. When polled I/O is used, the terminal settings
     70must be set through 167-Bug; trying to change the line settings through RTEMS
     71has no effect.
     72
     73Three is no support for using interrupt-driven I/O without termios support.
     74
     75The default configuration is to use polled I/O and to bypass termios. This
     76is done so the test can be built at the same time as the rest of the system.
     77It is highly recommended that the defaults be changed in the mvme167.cfg file
     78to reflect the desired defaults, or that the appropriate parameters be set up
     79in NVRAM to select the appropriate I/O modes at boot time.
     80
     81When configured for interrupt-driven I/O, the console is initialized with
     82whatever parameters are set up in termios before it calls the firtOpen driver
     83callback, EXCEPT THAT HARDWARE HANDSHAKING IS TURNED OFF, i.e. CLOCAL is set
     84in the struct termios c_cflag field. We use 3-wire cables for I/O, and find
     85hardware handshaking a pain. If you enable hardware handshaking, you must drive
     86CTS* low on the CD2401 for output to occur. If the port is in the DTE
     87configuration, you must drive the RS-232 CTS line to space; if the port is
     88in the DCE configuration, you must drive the RS-232 RTS line to space.
     89
     90To use interrupt-driven I/O, set the CD2401_IO_MODE manifest constant to 1 in
     91rtems/make/custom/mvme167.cfg, or configure the appropriate parameter in
     92User Area Non-volatile RAM. See the Configuration Parameters section below
     93for instructions on setting up NVRAM.
     94
     95To use termios, set the CD2401_USE_TERMIOS manifest constant to 1 in
     96rtems/make/custom/mvme167.cfg, or configure the appropriate parameter in
     97User Area Non-volatile RAM. See the Configuration Parameters section
     98below for instructions on setting up NVRAM.
     99
     100The RTEMS console, i.e. the port used by stdin, stdout and stderr (do not
     101confuse it with the port labelled Console on the MVME712), must be
     102specified in the rtems/make/custom/mvme167.cfg file, or in the NVRAM
     103parameters. Set the value of CONSOLE_MINOR appropriately. See below for a
     104list of choices. See the Configuration Parameters section below for
     105instructions on setting up NVRAM.
     106
     107The RTEMS printk port, i.e. the port where printk sends it debugging output
     108text, must be specified in the rtems/make/custom/mvme167.cfg file, or in the
     109NVRAM parameters. Set the value of PRINTK_MINOR appropriately. See below for a
     110list of choices. See the Configuration Parameters section below for
     111instructions on setting up NVRAM.
     112
     113Interrupt-driven and polled I/O cannot be mixed in the MVME167, except that
     114printk always used polled I/O without termios. If interrupt-driven I/O is
     115used and printk is used, do not open the device that printk uses from an
     116RTEMS application.
     117
     118Console and printk port choices:
     119
     120  0 - /dev/tty0, Serial Port 1/Console on the MVME712M.
     121  1 - /dev/tty1, Serial Port 2/TTY01 on the MVME712M.
     122  2 - /dev/tty2, Serial Port 3 on the MVME712M.
     123  3 - /dev/tty3, Serial Port 4 on the MVME712M.
     124
     125Setting the RTEMS console to port 0 when interrupt-driven I/O is specified
     126will prevent 167-Bug from using that port.
     127
     128To use polled I/O on port 2 or 3, the port must be configured in 167-Bug. See
     129the "PF" command in the "Debugging Package for Motorola 68K CISC CPUs User's
     130Manual", part number 68KBUG.
    81131
    82132
    83133Floating-point
     134--------------
    84135
    85136The MC68040 has a built-in FPU. This FPU does not implement all the
     
    136187
    137188Configuration Parameters
     189------------------------
    138190
    139191If Jumper J1-4 is installed, certain configuration parameters may be read from
    140192the first 31 bytes of User Area NVRAM starting at 0xFFFC0000. In this case, the
    141 user is responsible for writing the appropriate values to this memory location
    142 (via 167Bug) in order to alter the default behaviour. A zero value results in
    143 the default behaviour. The paramaters that are configurable and their default
    144 settings are described below.
    145 
    146         Data Cache Enable (0xFFFC0000 - 1 byte)
    147                 write a non-zero value to this location to enable the data cache
    148                 default: disabled
    149        
    150         Instruction Cache Activation (0xFFFC0001 - 1 byte)
    151                 write a non-zero value to this location to enable the instruction cache
    152                 default: disabled
     193remaining J1-[5-7] jumpers are ignored, and the user is responsible for writing
     194the appropriate values in NVRAM (via 167-Bug) in order to alter the default
     195behaviour. A zero value in NVRAM results in the default behaviour. The paramaters
     196that are configurable and their default settings are described below.
    153197               
    154         Cache Mode (0xFFFC0002 - 2 bytes)
    155                 0xFFF0 = cachable, write-through
    156                 0xFFF1 = cachable, copyback
    157                 0xFFF2 = noncachable, serialized
    158                 0xFFF3 = noncachable,
    159                 default: cachable, copyback
    160 
     198        Cache Mode (0xFFFC0000 - 1 byte)
     199          Set the following bits in the byte to set the desired cache mode:
     200            bit 0
     201              0 - data cache disable
     202              1 - data cache enable
     203            bit 1
     204              0 - instruction cache disable
     205              1 - instruction cache enable
     206            bits 2 & 3:
     207                    00 = cachable, write-through
     208                    01 = cachable, copyback
     209                    10 = noncachable, serialized
     210                    11 = noncachable
     211
     212        Console driver I/O mode (0xFFFC0001 - 1 byte)
     213          Set the following bits in the byte to set the desired I/O mode:
     214            bit 0
     215              0 - do not use termios
     216              1 - use termios
     217            bit 1
     218              0 - polled I/O
     219              1 - interrupt-driven I/O
     220
     221        Console driver ports (0xFFFC0002 - 1 byte)
     222          Set the following bits in the byte to select the console and printk ports:
     223            bit 0 & 1 select the RTEMS console port
     224        00 - /dev/tty0, Serial Port 1/Console on the MVME712M.
     225        01 - /dev/tty1, Serial Port 2/TTY01 on the MVME712M.
     226        10 - /dev/tty2, Serial Port 3 on the MVME712M.
     227        11 - /dev/tty3, Serial Port 4 on the MVME712M.
     228            bit 4 & 5 select the RTEMS printk port
     229        00 - /dev/tty0, Serial Port 1/Console on the MVME712M.
     230        01 - /dev/tty1, Serial Port 2/TTY01 on the MVME712M.
     231        10 - /dev/tty2, Serial Port 3 on the MVME712M.
     232        11 - /dev/tty3, Serial Port 4 on the MVME712M.
     233    If the printk port is the same as some other port that will be opened by an
     234    RTEMS application, then the driver must use polled I/O, or the printk port
     235    must not be used.
     236   
    161237        IP Address (0xFFFC0004 - 4 bytes)
    162                 write the hexidecimal representation of the board's IP address in this
    163                 location for example, 192.168.1.2 = 0xC0A80102
     238                write the hexadecimal representation of the IP address of the board in this
     239                locatio, e.g. 192.168.1.2 = 0xC0A80102
    164240                default: obtain the IP address from an rtems_bsdnet_ifconfig structure
    165241
    166242        Netmask (0xFFFC0008 - 4 bytes)
    167                 write the hexidecimal representation of the netmask in this location
     243                write the hexadecimal representation of the netmask in this location
    168244                for example, 255.255.255.0 = 0xFFFFFF00
    169245                default: obtain the netmask from an rtems_bsdnet_ifconfig structure
    170246               
    171247        Ethernet Address (0xFFFC000C - 6 bytes)
    172                 write the board's hardware address in this location
    173                 default: obtain the hardware address from an rtems_bsdnet_ifconfig structure
     248                write the Ethernet address of the board in this location
     249                default: obtain the hardware address from an rtems_bsdnet_ifconfig
     250                         structure
    174251
    175252        Processor ID (0xFFFC0012 - 2 bytes)
     
    187264
    188265Cache Control and Memory Mapping
     266--------------------------------
    189267
    190268If configuration is not obtained from non-volatile RAM (ie. J1-4 is off),
     
    192270
    193271If Jumper J1-7 is installed, the data cache will be turned on. If Jumper
    194 J1-6 is installed, the instruction cache will be turned on. Removing the
    195 jumper causes the corresponding cache to be left disabled.
     272J1-6 is installed, the instruction cache will be turned on. (If a jumper
     273is off, its corresponding cache will remain disabled).
    196274
    197275If Jumper J1-5 is installed, the data cache will be placed in copyback
     
    204282
    205283
     284Networking
     285----------
     286
     287If configuration is not obtained from non-volatile RAM (ie. J1-4 is off),
     288the networking parameters shown above must be specified in an initialized
     289rtems_bsdnet_ifconfig struct. This structure is declared and initialized to
     290specify any network devices and includes entries for ip_address, ip_netmask
     291and hardware_address. See the Network Device Configuration section of the
     292RTEMS Networking Supplement.
     293
     294When non-default (non-zero) networking paramaters are provided in NVRAM (ie.
     295j1-4 is on), the user MUST ensure that the corresponding entries in the
     296ifconfig struct are NULL. Failing to do so is an error, because it causes
     297the memory allocated for the initialized struct values to be lost.
     298
     299
    206300Miscellaneous
     301-------------
    207302
    208303The timer and clock drivers were patterned after the MVME162 and MVME152
     
    239334At the time this README was composed, the latest working compiler that was
    240335used successfully was gcc version 2.96 20000213 (experimental). Both the C
    241 and C++ compilers were working. Binutils 2.9.1 are used.
     336and C++ compilers were working. Binutils 2.10 are used.
    242337
    243338
    244339Known Problems
    245340--------------
     341
     342Polled I/O without termios may not work very well on input. The problem
     343is that input processing is not done: applications may get characters too
     344early, and may get characters that they normally would not get, such as
     345backspace or delete. Furthermore, input is not buffered at all. The latest
     346versions of rtems seem to set the count field in the rtems_libio_rw_args_t
     347argument to the buffer size, not to the number of characters expected on
     348input. Rather than wait for 1024 characters on each call, the driver
     349returns each character when it is received.
    246350
    247351The cdtest will not run with interrupt-driven I/O. The reason is that the
     
    252356of this story is: do not do I/O from the constructors or destructors of static
    253357objects.
    254 
    255 The cpuuse and malloctest tests do not work properly, either with polled I/O
    256 or interrupt-driven I/O. They are known not to work with interrupt-driven I/O,
    257 but should work with polled I/O?
    258358
    259359Output stops prematurely in the termios test when the console is operating in
     
    288388
    289389
    290 What's new
    291 ----------
     390What is new
     391-----------
    292392
    293393Support for Java is being actively worked on.
     
    336436
    337437
    338 Timing tests:
    339 
    340         Context Switch
    341 
    342     context switch: no floating point contexts 12
    343     context switch: self 3
    344     context switch: to another task 3
    345     fp context switch: restore 1st FP task 14
    346     fp context switch: save idle, restore initialized 5
    347     fp context switch: save idle, restore idle 15
    348     fp context switch: save initialized, restore initialized 5
    349    
    350    
    351   Miscellaneous
     438Timing tests: See rtems/c/src/lib/libbsp/m68k/mvme167/times
    352439 
    353     _ISR_Disable 1
    354     _ISR_Flash 0
    355     _ISR_Enable 0
    356    
    357     _Thread_Disable_dispatch 0
    358     _Thread_Enable_dispatch 3
    359     _Thread_Set_state 9
    360     _Thread_Disptach (NO FP) 16
    361     _Thread_Resume 6
    362     _Thread_Unblock 4
    363     _Thread_Ready 6
    364     _Thread_Get 3
    365     _Thread_Get: invalid id 0
    366    
    367     _Semaphore_Get 2
    368 
    369 
    370         Task Manager
    371 
    372     rtems_task_create 56
    373     rtems_task_ident 106
    374     rtems_task_start 21
    375     rtems_task_restart: calling task 24
    376     rtems_task_restart: suspended task -- returns to caller 27
    377     rtems_task_restart: blocked task -- returns to caller 36
    378     rtems_task_restart: ready task -- returns to caller 27
    379     rtems_task_restart: suspended task -- preempts caller 40
    380     rtems_task_restart: blocked task -- preempts caller 51
    381     rtems_task_restart: ready task -- preempts caller 52
    382     rtems_task_delete: calling task 67
    383     rtems_task_delete: suspended task 52
    384     rtems_task_delete: blocked task 54
    385     rtems_task_delete: ready task 54
    386     rtems_task_suspend: calling task 23
    387     rtems_task_suspend: returns to caller 12
    388     rtems_task_resume: task readied -- returns to caller 13
    389     rtems_task_resume: task readied -- preempts caller 22
    390     rtems_task_set_priority: obtain current priority 8
    391     rtems_task_set_priority: returns to caller 16
    392     rtems_task_set_priority: preempts caller 34
    393     rtems_task_mode: obtain current mode 4
    394     rtems_task_mode: no reschedule 5
    395     rtems_task_mode: reschedule -- returns to caller 12
    396     rtems_task_mode: reschedule -- preempts caller 26
    397     rtems_task_get_note 8
    398     rtems_task_set_note 8
    399     rtems_task_wake_after: yield -- returns to caller 4
    400     rtems_task_wake_after: yields -- preempts caller 19
    401     rtems_task_wake_when 36
    402 
    403 
    404         Interrupt Manager
    405 
    406     interrupt entry overhead: returns to nested interrupt 5
    407     interrupt entry overhead: returns to interrupted task 9
    408     interrupt entry overhead: returns to preempting task 7
    409     interrupt exit overhead: returns to nested interrupt 1
    410     interrupt exit overhead: returns to interrupted task 2
    411     interrupt exit overhead: returns to preempting task 26
    412 
    413 
    414         Clock Manager
    415 
    416     rtems_clock_set 20
    417     rtems_clock_get <1
    418     rtems_clock_tick 8
    419 
    420 
    421         Timer Manager
    422 
    423     rtems_timer_create 8
    424         rtems_timer_ident 104
    425     rtems_timer_delete: inactive 12
    426     rtems_timer_delete: active 13
    427     rtems_timer_fire_after: inactive 17
    428     rtems_timer_fire_after: active 18
    429     rtems_timer_fire_when: inactive 23
    430     rtems_timer_fire_when: active 23
    431     rtems_timer_reset: inactive 16
    432     rtems_timer_reset: active 17
    433     rtems_timer_cancel: inactive 9
    434     rtems_timer_cancel: active 10
    435 
    436 
    437         Semaphore Manager
    438 
    439     rtems_semaphore_create 22
    440     rtems_semaphore_ident 119
    441     rtems_semaphore_delete 24
    442     rtems_semaphore_obtain: available 10
    443     rtems_semaphore_obtain: not available -- NO_WAIT 10
    444     rtems_semaphore_obtain: not available -- caller blocks 35
    445     rtems_semaphore_release: no waiting tasks 11
    446     rtems_semaphore_release: task readied -- returns to caller 17
    447     rtems_semaphore_release: task readied -- preempts caller 27
    448 
    449 
    450         Message Queue Manager
    451 
    452     rtems_message_queue_create 85
    453     rtems_message_queue_ident 103
    454     rtems_message_queue_delete 32
    455     rtems_message_queue_send: no waiting tasks 25
    456     rtems_message_queue_send: task readied -- returns to caller 27
    457     rtems_message_queue_send: task readied -- preempts caller 39
    458     rtems_message_queue_urgent: no waiting tasks 26
    459     rtems_message_queue_urgent: task readied -- returns to caller 28
    460     rtems_message_queue_urgent: task readied -- preempts caller 39
    461     rtems_message_queue_broadcast: no waiting tasks 13
    462     rtems_message_queue_broadcast: task readied -- returns to caller 37
    463     rtems_message_queue_broadcast: task readied -- preempts caller 45
    464     rtems_message_queue_receive: available 21
    465     rtems_message_queue_receive: not available -- NO_WAIT 11
    466     rtems_message_queue_receive: not available -- caller blocks 37
    467     rtems_message_queue_flush: no messages flushed 7
    468     rtems_message_queue_flush: messages flushed 10
    469 
    470 
    471         Event Manager
    472 
    473     rtems_event_send: no task readied 7
    474     rtems_event_send: task readied -- returns to caller 18
    475     rtems_event_send: task readied -- preempts caller 29
    476     rtems_event_receive: obtain current events <1
    477     rtems_event_receive: available 10
    478     rtems_event_receive: not available -- NO_WAIT 5
    479     rtems_event_receive: not available -- caller blocks 28
    480 
    481 
    482         Signal Manager
    483 
    484     rtems_signal_catch 5
    485     rtems_signal_send: returns to caller 15
    486     rtems_signal_send: signal to self 24
    487     exit ASR overhead: returns to calling task 20
    488     exit ASR overhead: returns to preempting task 21
    489 
    490 
    491         Partition Manager
    492 
    493     rtems_partition_create 30
    494     rtems_partition_ident 103
    495     rtems_partition_delete 14
    496     rtems_partition_get_buffer: available 14
    497     rtems_partition_get_buffer: not available 9
    498     rtems_partition_return_buffer 18
    499 
    500 
    501         Region Manager
    502 
    503     rtems_region_create 25
    504     rtems_region_ident 105
    505     rtems_region_delete 13
    506     rtems_region_get_segment: available 13
    507     rtems_region_get_segment: not available -- NO_WAIT 17
    508     rtems_region_get_segment: not available -- caller blocks 49
    509     rtems_region_return_segment: no waiting tasks 16
    510     rtems_region_return_segment: task readied -- returns to caller 35
    511     rtems_region_return_segment: task readied -- preempts caller 58
    512 
    513 
    514         Dual-Ported Memory Manager
    515 
    516     rtems_port_create 13
    517           rtems_port_ident 103
    518     rtems_port_delete 14
    519     rtems_port_external_to_internal 5
    520     rtems_port_internal_to_external 5
    521 
    522 
    523         IO Manager
    524 
    525     rtems_io_initialize <1
    526     rtems_io_open <1
    527     rtems_io_close <1
    528     rtems_io_read <1
    529     rtems_io_write <1
    530     rtems_io_control <1
    531 
    532 
    533         Rate Monotonic Manager
    534 
    535     rtems_rate_monotonic_create 15
    536           rtems_rate_monotonic_ident 103
    537     rtems_rate_monotonic_cancel 16
    538     rtems_rate_monotonic_delete: active 18
    539     rtems_rate_monotonic_delete: inactive 20
    540     rtems_rate_monotonic_period: initiate period -- returns to caller 23
    541     rtems_rate_monotonic_period: conclude periods -- caller blocks 25
    542     rtems_rate_monotonic_period: obtain status 13
    543 
Note: See TracChangeset for help on using the changeset viewer.