I'm a senior student in the computer department of a university. I'll be looking for a job half a year later. Everyone knows that it's hard to find a job these days.
During the last summer vacation, I got an unpaid internship in a company. Of course, I want to stay. This time I've come into contact with very low - level things. Especially this time I encountered a very difficult technical problem, and I'm very worried about whether I can do this well. Now let me briefly describe this problem. Please point out if there are any basic problems in the description, because it's the first time I'm doing such a low - level program.
The TEAM I joined is developing a solution. The main programs in it run just after the computer is booted and before the operating system is entered (it's a bit similar to the boot program of a hard disk protection card). In this program running almost on bare metal, there is a function to access a self - developed USB peripheral hardware of the company.
My module is centered around this. The driver of this USB hardware under WINDOWS has long been completed, but in the bare - metal assembly environment, the form is completely different, which makes me at a loss.
Later, I saw such a program URL on your website: http://newdos.yginfo.net/dosware/usbdrv.zip
This program can make DOS support USB devices. The program is not large.
Then I read some information about USB and combined with the understanding of the program, I drew the following conclusions:
1. If assembly or DOS wants to access the USB interface, it needs to address the USB controller chip through I/O addresses for operations, such as initialization and sending data, which are all I/O operations on the USB controller.
2. If my assembly application program is to perform operations on this hardware to a certain purpose, first, there should be a USB controller driver, which packages the underlying operations on the controller. Then, based on the controller driver, I develop a device driver for my USB device that calls the controller driver.
The diagram is as follows
Assembly application program <--- > My USB device's driver module <--- > USB controller driver <-- > USB controller < - > USB peripheral
Looking at the DUSE program downloaded from your website again, although it's for DOS, its function is similar to the module I want to do. Especially the USB controller driver. I find that it's the underlying core of the DUSE program. The driver programs of various different devices just call it, but I know nothing about it; if I can directly send and receive data to the USB interface on the basis of it, how to communicate with my USB peripheral, I'm very familiar with instructions.
I don't know if my expression is clear. My final goal is to use assembly to access the USB interface and send data to control a specific USB device developed by the company under bare metal (I know the control instructions of this device).
Please experts give guidance on how to make a general USB controller driver module (I see that DUSE can be used on various machines). It's best to have relevant code that can be directly referred to. Time is pressing for my job. I'm doing this for my job. Thank you, experts. I'm in Shanghai. If this matter is done well, I will definitely invite you to dinner.
My EMAIL: dellweiwei@hotmail.com
During the last summer vacation, I got an unpaid internship in a company. Of course, I want to stay. This time I've come into contact with very low - level things. Especially this time I encountered a very difficult technical problem, and I'm very worried about whether I can do this well. Now let me briefly describe this problem. Please point out if there are any basic problems in the description, because it's the first time I'm doing such a low - level program.
The TEAM I joined is developing a solution. The main programs in it run just after the computer is booted and before the operating system is entered (it's a bit similar to the boot program of a hard disk protection card). In this program running almost on bare metal, there is a function to access a self - developed USB peripheral hardware of the company.
My module is centered around this. The driver of this USB hardware under WINDOWS has long been completed, but in the bare - metal assembly environment, the form is completely different, which makes me at a loss.
Later, I saw such a program URL on your website: http://newdos.yginfo.net/dosware/usbdrv.zip
This program can make DOS support USB devices. The program is not large.
Then I read some information about USB and combined with the understanding of the program, I drew the following conclusions:
1. If assembly or DOS wants to access the USB interface, it needs to address the USB controller chip through I/O addresses for operations, such as initialization and sending data, which are all I/O operations on the USB controller.
2. If my assembly application program is to perform operations on this hardware to a certain purpose, first, there should be a USB controller driver, which packages the underlying operations on the controller. Then, based on the controller driver, I develop a device driver for my USB device that calls the controller driver.
The diagram is as follows
Assembly application program <--- > My USB device's driver module <--- > USB controller driver <-- > USB controller < - > USB peripheral
Looking at the DUSE program downloaded from your website again, although it's for DOS, its function is similar to the module I want to do. Especially the USB controller driver. I find that it's the underlying core of the DUSE program. The driver programs of various different devices just call it, but I know nothing about it; if I can directly send and receive data to the USB interface on the basis of it, how to communicate with my USB peripheral, I'm very familiar with instructions.
I don't know if my expression is clear. My final goal is to use assembly to access the USB interface and send data to control a specific USB device developed by the company under bare metal (I know the control instructions of this device).
Please experts give guidance on how to make a general USB controller driver module (I see that DUSE can be used on various machines). It's best to have relevant code that can be directly referred to. Time is pressing for my job. I'm doing this for my job. Thank you, experts. I'm in Shanghai. If this matter is done well, I will definitely invite you to dinner.
My EMAIL: dellweiwei@hotmail.com


. I wonder if the original poster can post it?