|
Hello,
I have some simple card that will be use to transfer video from webCam to the PC.
Now, i need to write a drive to this card and make sure that the video will be seen by some other application that i already wrote.
The card is not sit in the pc - so i using UBS to connect to the card that will be sit in some other 'box'.
I download the DDK - and i was reading about how to do it.
But now i don't know how to start.
Is there any code example and some good reference that i can learn to know how to start and how to do it ?
Thanks.
|
|
|
|
|
The reference materials you are looking for are here[^] (and elsewhere on the web via Google). However, be warned that writing drivers is not a trivial task so unless you have good solid Windows programming experience you may find it something of an uphill struggle.
I must get a clever new signature for 2011.
|
|
|
|
|
Give up.
If this is in anyway anything other than a study project, ie if its of any comercial value tell your boss to get a kernel contractor in. What you are facing is a learnign curve as steep as a black holes gravity well, and will probably take you 2 years to even get running, let alone be stable.
I say this becaus you had to come here and say "where do I start".
You have, I take it, downloaded the WDK/DDK and have read the entire section on video and USB? No, didnt think so. If you had you would know where to start and would have specific quesiotns, like USB bus protocols, bulk transfer sizes, isochronous pipes and the like.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation."
Bob Carter, Research Professor of Geology, James Cook University, Townsville
|
|
|
|
|
Hi,
I just got an Intel DP55WG main board. The problem is that when I switch it on, I get an 3b code. The computer doesn't even show the boot screen, hence I cannot access the BIOS. (The error code is not documented in the manual). Then the whole system restarts, and repeats until I switch off the PSU.
I tried different memory modules, Gfx cards with no success.
Any ideas?
Thanks in advance
--------------------------------
Specs :
CPU : i5-650
Ram : Kingston 1333 DDR3 (4gig)
GFX Card : XFX Radeon HD5750
PSU : 650 Watt
|
|
|
|
|
Cool. Sounds like completely screwed up hardware. What did Google say about the 3b error?
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation."
Bob Carter, Research Professor of Geology, James Cook University, Townsville
|
|
|
|
|
Couldn't find anything. I managed to fix the problem though. 2 words : Firmware update
From what I could see the Intel Mainboard is not compatible with the processor I am using, but the firmware upgrade fixes teh problem. (I am not sure how they could get that wrong, since both are Intel)
Thank god I am not a techie full time
|
|
|
|
|
Ah, I thought you didnt get the BIOS up. Even without a CPU you would still get a BIOS.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation."
Bob Carter, Research Professor of Geology, James Cook University, Townsville
|
|
|
|
|
In general each new generation of CPU will need slightly different settings to work; getting the settings to the board requires a firmware update. The board may be new to you, but if it was made before the CPU it doesn't matter...
3x12=36
2x12=24
1x12=12
0x12=18
|
|
|
|
|
Hi.
Excuse me about my bad english.
I develop First stage of a bootloader. Now I write it in first sector (sector number 0) of a hard disk. Then attach that hard disk to the system. When I turn on that system, it can't found my bootloader and run old bootloader that saved in hard disk.
I search first 1,000,000 sectors of hard disk but old bootloader not found. What is location of old bootloader? If I Know it's location, I can write my bootloader in that location then BIOS can find my bootloader and run it.
Thanks alot.
|
|
|
|
|
What is the best way to go about debugging this issue (in addition to google?)
When we unplug and replug a custom HID device enough times on a low-ish-end machine (XP Pro SP3), Windows stops recognizing new USB connects and disconnects on any USB port (any device class). We turned on the Driver Verifier, and got a 0xC9 bugcheck (DRIVER_VERIFIER_IOMANAGER_VIOLATION), with an error code of 0x21D (An IRP dispatch handler has not properly detached from the stack below it upon receiving a remove IRP - Not entirely sure what that means, but from what I've read on MSDN (See Summary of Guidelines for Pending IRPs)[^], it looks like something is keeping the "post-processing" from running on a disconnect). The driver file that was referenced is HIDCORE.SYS (I think...I didn't actually see the error, this is what my colleague told me). We are using the HID driver built into Windows.
The problem only occurs when a utility we wrote is running that sends a few commands to the device. While this utility is running, we can connect and disconnect the device any from 3 to 30 times before the USB "locks up". Any connected devices still work, but no new connect/disconnect events are recognized. It's most reproducible on lower-end machines, but will occasionally happen on a medium-end PC. The only way out of this is to reboot.
We've made sure we're closing all our file handles to the device when we get a disconnect event. We don't have a whole lot of experience debugging low-level driver-related problems. Any suggestions would be greatly appreciated.
I'm sure there's some bit of information I'm missing, but any suggestions would be greatly appreciated.
Dybs
The shout of progress is not "Eureka!" it's "Strange... that's not what i expected". - peterchen
|
|
|
|
|
Is your app registering for device plug and play events using RegisterDeviceNotification?
And dont forgwet its a two stage, first you register for events by device classm then by handle when your device arrives.
Faiing to handle this wil screw up the windows plug and play state and leave drivers locked in memory (which is what you have here).
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation."
Bob Carter, Research Professor of Geology, James Cook University, Townsville
|
|
|
|
|
In a Windows C++ environment during writing to a log file I observe a periodic hiccup of approx 16 milliseconds in between writes. So I wrote a little function that writes out 20,000 sequentially numbered messages using a while loop. Approximately every 3000 to 4000 messages I see a 16 millisecond delay. This is with no programmatic flushing. With flushing after each write it happens after approx. every 2000 messages.
How can I get around this recurring hiccup? Would a solid state disk solve this problem? Or at least dramatic reduce the hiccup time?
Thanks
ak
|
|
|
|
|
I suggest you calculate the number of bytes moved in between two hiccups, and I bet it will be a multiple of the sector size (512B), possibly simply the cluster size (which could be the next power of 2 multiple of 512B that exceeds the partition size divided by 64K).
What probably is happening is a new cluster needs to be allocated, causing an update of the FAT table. A possible workaround would be to preallocate the file, which implies you need to know and allocate the maximum size before you start writing the data. A possible approach is by using a "memory mapped file".
AFAIK solid state disks are faster, especially when reading data and hopping around (their seek time is much better). So the same problem would exist, at a much smaller scale.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
modified on Tuesday, January 11, 2011 7:41 PM
|
|
|
|
|
Luc Pattyn wrote: AFAIK solid state disks are faster, especially when reading data and hopping around (their seek time is much better). So the same problem would exist, at a much smaller scale.
You have a potential much bigger problem with SSDs.
You cant erase single cells in an SSD, but instead it erases pretty large blocks of data (usually 128kB).
So if you change a few bytes in a file, the drive will write another block, and mark the original block for deletion, and do the actual delete whenever it's idle.
If you use an SSD for logging purposes, it might never get idle for long enough to get the erasing done and you would end up with a drive that's not having any free blocks despite being far from full.
When this happens you will get a hiccup of a totally different magnitude.
|
|
|
|
|
Interesting. So for continuous writes, the app should not flush, and one should have Windows cache the file in chunks that correspond to the block size of the SSD, avoiding almost all partial-block writes. Not sure that can be organized easily.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Even in a degraded state (and forcing that is getting hard even for benchmarkers) a current generation SSD will still outperform a mechanical drive.
3x12=36
2x12=24
1x12=12
0x12=18
|
|
|
|
|
The original response talks about preallocating files. I'd like to try an experiment with this approach and just see what the improvement is. Can anyone suggest some VS c++ code that will accomplish this. 1) preallocated file creation, that would be reused with each running of the program 2) code that opens the file 3) code that sequencially writes ascii data msgs to the file starting at the beginning.
Thanks
|
|
|
|
|
Yes it will indeed.
And in all normal use you won't notice it at all.
|
|
|
|
|
The original response talks about preallocating files. I'd like to try an experiment with this approach and just see what the improvement is. Can anyone suggest some VS c++ code that will accomplish this. 1) preallocated file creation, that would be reused with each running of the program 2) code that opens the file 3) code that sequencially writes ascii data msgs to the file starting at the beginning.
Thanks
|
|
|
|
|
Hi guys!
I'm concerning situation, what will do the job quicker. One server hdd, for example WD VelociRaptor, 3.5'', 300GB, Serial ATA/300, 10000RPM, 16MB cache , or two WD Caviar Black, 3.5'', 1TB, SATA/600, 7200RPM, 64MB cache connected into RAID 0.
For me, intuitively raid will be quicker, but some test or personal experience will be useful. Unfortunately I never worked with raid so I only know the theory about it.
I know that there is double chance to data loss with raid 0 but I'm planning to buy third external hdd which will be working as a backup storage.
I don't wan't to create raid 1+0 because of lack of founds to buy more hdd's.
In the price of one 300GB server disk I can get two 1 TB disks.
What are you thinking about such situation? The computer will work as a render machine, mostly for 3ds max and autocad as well, so the speed of disk is quite important matter for me.
Oh! And I'm planning to use raid controller to relieve processor from counting all that stripe stuff.
|
|
|
|
|
First of all, there isn't as big difference performancewise between those disks as you might think.
The velociraptor has only a slightly higher sustained datarate, and if you would consider the 1.5 TB Caviar, it's even slower.
But the latency is 30% lower.
It's also serverclass when it comes to reliability, which the caviar certainly isn't.
So it's more about how you're going to use the drives that makes the difference.
If you read or write very large contiguous files in one go, the raid system is the clear winner.
But if you read or write very many small files, then the single velociraptor will be the better choice.
Also keep in mind that a cheap raid controller isn't fast. Check the sustained write speed if available.
If you really want a fast system, you should consider one of these[^] instead.
|
|
|
|
|
Does anyone know where I might find application benchmarks for dual socket core i5 2500K versus one and two socket core i7 2600K? Curious about Excel and compiler benchmarks.
Is overclocking effective with dual socket machines with or without liquid cooling? Note that this will be for my personal machine that I will program on at home and not for a server, etc.
|
|
|
|
|
I haven't seen any 2 socket benchmarks yet. Annand did a compiler benchmark with single socket systems.
The catch with overclocking is that in general 2 socket boards are intended for servers and have minimal hardware support (most notably they typically don't have VRMs capable of handling the excess load, or the extra heat it produces) even if it's allowed in the BIOS.
3x12=36
2x12=24
1x12=12
0x12=18
|
|
|
|
|
Thanks. I'll probably go with single socket overclocking 2600K or dual socket 2500 without overclocking if I find a two socket board in the next month.
|
|
|
|
|
I didn't occur to me at the time, but you're not going to find a 2 socket 1155 board because it's not a supported configuration (no QPI to link the chips). On the Intel side you'll have to wait until Q3 for LGA 2011 to launch before you can get multi-socket support for Sandybridge.
3x12=36
2x12=24
1x12=12
0x12=18
|
|
|
|
|