mcglinchey@charon.DEC.COM (Jim McGlinchey (HZO) DTN 264-7378) (10/08/87)
>> We intend ed to use the two interfaces DRV11-J and AXV11-C in a >> uVAX II under uVMS for registration of processdatas. Because there is >> no system support to this devices, we have to write "device drivers" >> by ourselves but we have no in doing this. For processing also single >> bytes we think it is very time intensive to use the functions of the >> queue I/O-system. A QIO costs you about a millisecond of overhead in a MicroVAX. The trick is to avoid doing single-character or single-word QIO's, and design a QIO command which will do many byte/word I/O's for you. If you plan to use interrupts, you'll have to write a device driver. No other solution is possible. If you do not wish to use interrupts, then you can map to the I/O page and directly access the device registers. The method to use is documented in the VMS Guide to Writing a Device Driver Manual, in one of the chapters at the end. It is my opinion, based on many years of experience doing device interfacing to PDP-11's and VAXen, that you're going to write a device driver. You may not want to, and you may be able to avoid it for a while, but eventually you WILL write one. The best way to start in teh VAX world is to: 1. Read the "Guide to Writing a VMS Device Driver Manual" 2. Have available, and be ready to read, the VMS Internals and Data Structures book. Start by using the Connect-to-Interrupt Driver (CONINTERR.EXE). It suse is documented in the "Guide to..." Manual. It is a real VMS device driver, to which you add the code specific for your device. >> If someone has experiences which are helpful in our problems, please >> send us a mail. I have recently answered a question like this on info_vax. I have appended a copy of my reply. >> Is there any way to write a device driver without the use of >> queue I/O system services, in favour like a procedure which can be >> referenced by every high level language? A device driver IS a part of the queue I/O system service, and therefore what you ask is impossible. You can, however, directly map to the I/O page, as I have just described. >> Is it necessary to make the system know the address of the >> devices CSR-registers and if, how to do this? Yes. It is necessary, and is part of the laoding procedure for a device driver. Look at the SYSGEN/CONNECT command. >> How to use the neccessary "modes" and "priority levels"? This scares me a bit. You must know about VMS IPLs (priority levels) before you attempt to do ANYTHING which accesses the I/O page, or deals with bus devices. Again, consult the VMS "Guide to..." manual, the VMS Internals Book, and the VAX Architecture Handbook. ==================================================================== | I answered the following via direct mail. I am posting| | it here as a supplement to my reply. | re DRV-11J: You can use the DRV-11J in two ways: with and without interrupts. This is an important decision, as the complexity of the solution grows wildly if you wish to use interrupts. Unfortunately, if you're driving a PUMA robot with it, you'll want to use interrupts. As for documentation of the board, notice that the DRV-11J is really a pair of Intel 9519 chips surrounded by a bunch of TTL chips and connectors. The 9519's do all the business of the DRV-11J and the other chips are along for the ride. Get yourself the Intel 9519 chip manual from your friendly neighborhood Intel rep, and you 'll have more information on the board than DEC supplies. The mechanism to drive it is a device driver. No DRV-11J driver exists for VMS, so you'll have to write your own. I would suggest starting with VMS connect-to-interrupt driver. You're still going to write a device driver, the the C-to-I driver contains most of the grim stuff, and you're just going to write the part which activates your board and handles its interrupts. Good. Luck, and let me know how it goes. Jim McGlinchey