home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v5.zip / DDKX86 / SRC / DEV / ATCOM / COM01.DOC < prev    next >
Text File  |  1995-04-10  |  6KB  |  124 lines

  1.  
  2. .*;     SCCSID =
  3. .se os2 = 'OS/2'
  4. .se comp = 'COM01'
  5. .*.us 1
  6. .*.ce &comp. Component
  7. :h3.&comp. Architecture
  8. :h4.Problem Description/Objectives
  9. :p.
  10. The family1 asynchronous communications port device driver
  11. should provide support for some of the capabilities of the new
  12. Extended ISA (EISA) systems that are becoming available to OS/2 users.
  13. The specific areas that need to be addressed are support for 
  14. more than two COM ports, and interrupt sharing.  
  15. :p.
  16. The majority of the code added will be used at initialization time
  17. to parse the EISA system's configuration information to determine
  18. if the system has any extended capabilities that need to be supported.
  19. There will be NO IMPACT on compatibility for AT-class machines; the
  20. new code will never be executed when run on an AT-class machine.
  21.  
  22. :h4.Solutions/Justification
  23. :p.
  24. COM01.SYS was originally written to support AT-class machines only.  As
  25. such, it only needed to support the two COM ports that were originally 
  26. designed for the AT.  EISA systems, with their expanded I/O space and an
  27. ability to share interrupt lines, are a good deal more flexible.  The 
  28. user is allowed to configure the system to match their needs.  On many
  29. of the EISA systems that are available, COM ports have been built
  30. in to the system's motherboard.  If the user adds an ISA compatible
  31. COM port, they can then re-configure one of the motherboard's
  32. COM ports to be COM3.  OS/2 should provide support for this type of
  33. configuration: the user should have access to COM ports beyond COM2
  34. for OS/2 applications.
  35. :p.
  36. Another configurable parameter on EISA machines is the sharing of interrupt
  37. lines.  On some of the EISA systems that provide COM ports, the COM ports can
  38. be configured to share their interrupt line.  This is mostly useful in server
  39. environments, where a large number of hardware adapters are added to the
  40. system.   OS/2's COM driver should support the sharing of a COM port's
  41. interrupt line; this will allow the user more flexibility in the 
  42. configuration of an EISA system that will be running OS/2.
  43.  
  44. :h4.Architectural Review
  45. To be performed.
  46. :h3.&comp. Design
  47. :h4.Design Overview
  48. :p.
  49. The maximum number of COM ports supported on an EISA machine will be four.
  50. Code will be added to parse the EISA system configuration information
  51. at device driver install time to determine the COM port configuration.  
  52. A small amount of additional code will be added to the interrupt service 
  53. routine for support of any shared interrupt lines.
  54. :p.
  55. A small amount of code will be added to OS2LDR.  This code will make
  56. sure that the return value from the DosDevConfig API contains the 
  57. correct number of asynchronous COM ports attached to an EISA system.
  58.  
  59. :h4.Data Structures Description
  60. To be added.
  61. :h4.Exported Interfaces
  62. To be added.
  63. :h4.Imported Interfaces
  64. To be added.
  65. :h4.Design Constraints
  66. To be added.
  67. :h4.Design Review
  68. To be performed.
  69. :h3.&comp. Implementation
  70. :h4.Internal Interfaces
  71. To be added.
  72. :h4.Implementation
  73. :p.
  74. Two new device headers will be added to the COM01.SYS driver: COM3 and
  75. COM4.  Minor changes will be needed in a few places to accomodate
  76. these additional devices; this mostly consists of making the code
  77. table driven as opposed to 'if not COM1 then assume COM2'.
  78. :p.
  79. A new module will be added to COM01.SYS for use at device driver 
  80. installation time.  The existing initialization code will call 
  81. a function within this module once, to set up any EISA configuration
  82. information.  If not running on an EISA system, the new code will
  83. simply set a flag indicating a non-EISA system and then return.  If
  84. running on an EISA system, the EISA system's configuration information will
  85. be searched for COM port information.  This information will be stored
  86. in a table.  
  87. :p.
  88. When running on an EISA system, as each of the COM device driver's
  89. headers is initialized, this table of information will be used to 
  90. initialize the COM driver's data structure for the port.  The following
  91. items will be saved in the COM driver's data structure: the port address,
  92. the interrupt line, and whether or not the interrupt line is to be 
  93. shared.
  94. :p.
  95. A modification will be made to the interrupt service routine.
  96. A check will be made to see if the COM port causing the interrupt 
  97. supports interrupt sharing or not.  If it does, then the UART's 
  98. Interrupt ID register is read; if it indicates that there is no pending
  99. interrupt, then the driver immediately returns control to the kernel,
  100. with an indication that the interrupt was not from the COM port.  Note
  101. that this code will NOT affect the operation of the interrupt service
  102. routine when running on an AT-class system, since interrupt sharing
  103. is NEVER supported on AT-class systems.
  104. :p.
  105. The modification made to OS2LDR will be in the module DOSHLP.ASM.  The
  106. current code is already parsing the EISA system configuration information
  107. to determine the "sharing" status of the interrupt lines.  This code would
  108. be modified to also count the number of asynchronous COM ports in the 
  109. system.  This value will be returned to the kernel via DHConfig.
  110.  
  111. :h4.Implementation Review
  112. To be performed.
  113. :h3.&comp. Appendix (included for each review)
  114. :h4.Glossary
  115. To be added.
  116. :h4.Size and Performance Considerations
  117. :p.
  118. Interrupt sharing can have an affect on COM port throughput.  If the
  119. user chooses to share a COM port's interrupt line with another device 
  120. that generates a high number of interrupts, COM performance can be 
  121. expected to suffer.  This is a system configuration issue, however, 
  122. not an OS/2 issue.
  123.  
  124.