Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Memory mapping ( PC +DOS or WINDOWS )

Status
Not open for further replies.
Replies continue below

Recommended for you

What memory bus is the device sitting on? If it's PCI, the device should be able to change its location in memory and the BIOS should assign it a free location.
 
I am confused:
On the PC as I know there is only one memory -- the main
one which adreeses one ROM ( for start-up, etc ) and one
RAM. The RAM may consist of any number of chips and may be
divided into pages using the uppper memory bits.

There is only one memory map and one I/O map.

Am I wrong ?

By the way I need the possible highest speed this is why
I have to use mem.map vs I/O map..




----------------------------
Please read FAQ240-1032
My WEB: <
 
Nick, you probably need a newer reference book.

Extended and expanded memory were bad enough. After that, things got seriously crazy.

You might consider putting your entire peripheral, including its memory and whatever processor it needs, into an external box, and connecting it to its user interface on the PC via USB or Ethernet.






Mike Halloran
Pembroke Pines, FL, USA
 
nbucska, there are many different memory buses on a modern PC. What kind of PC are you trying to use? A new desktop PC? A small embedded PC? An application-specific design?

And how are you plugging in your memory-mapped device? Memory is accessed through PCI, PCI-Express, ISA, LPC, local buses, and others. It all depends on the type of PC. What are you trying to do?
 
Overall, memory-mapping on a typical PC is probably a poor way to get good throughput. Your best approach should be to have an on-board buffer memory in your PCI card that you can DMA elsewhere at a later time. A ping-pong configuration would allow you to run continuously without interruption, assuming that the incoming datarate doesn't exceed the intrinsic datarate of the PCI bus.

TTFN

Eng-Tips Policies FAQ731-376


 
"I need fast response, hight throughput and low owerhead."

That's what _she_ said.

....... Oops, sorry, wrong discussion.



Mike Halloran
Pembroke Pines, FL, USA
 
_Everyone_ needs "fast response, hight throughput and low owerhead" ... and everyone defines the threshold of satisfaction for each differently.

_That's_ what she really said.


While you're trying to bracket your problem with numbers, including if you please how many such devices you plan to make, you might look up 'indeterminacy', as applied to Windows, and to DOS.




Mike Halloran
Pembroke Pines, FL, USA
 
I think 10 to 20 Mbytes/sec would be sufficient.
In my application there would be very few bursts
longer than 2 to 4 bytes and the overhead shouln't
take more time -- assuming a CPU faster than 500 MHz.
operating preferably under DOS or linux.

If all these can be satisfied, there may be market for
several hundred to few thousand.





----------------------------
Please read FAQ240-1032
My WEB: <
 
If I assume that you're talking about designing a custom board that will plug into a desktop PC, then you're probably talking about designing a PCI or PCI-Express card. Both of those can handle the throughput that you need. Many Ethernet cards have that kind of throughput and typically are memory-mapped.

Going back to your original question about finding an unused address, a properly designed PCI or PCI-Express card uses a moveable memory window and is assigned a base address by a combination of the BIOS and the OS. If you move the cards around or install other cards, the memory window assigned to any particular card may change. In Windows, you can see what the memory (or I/O) address range is by opening Device Manager and checking out the resources for your various hardware devices.
 
So the data is bursts of <4 _bytes_, coming in at ~5 million bursts per second on average, continuously?

Sounds like a natural for a little hardware buffering, just to keep the overhead from bringing the machine down.





Mike Halloran
Pembroke Pines, FL, USA
 
At the very minimum, you'd need to concatenate data words to transmit on a standard PCI bus, since it's typically only 33 MHz bus rate. Trying to get 60% utilization of that bus could be challenging. If you can get at least two datawords per transaction, that would cut the bus utilization down to 30%.

Again, buffering will reduce the transaction overhead if you send bigger chunks of data.

TTFN

Eng-Tips Policies FAQ731-376


 
Mike:
It is not continuous. The data frequency is variable but
the average may be very low. The 33 MHz would be fast enough.

Thank you all.
Could I learn more about the address selection under anything but WINDOWS?

By the way, I intend to use desktop, no more than a few years old.









----------------------------
Please read FAQ240-1032
My WEB: <
 
Status
Not open for further replies.
Back
Top