[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Для шины PCI предусмотрены специальные команды MemoryRead и MemoryWrite (C[3:0]= 0110 и 0111 соответственно). Команды чтения и и записи в порты ввода/вывода другие (С[3:0]= 0010 и 0011). Оба способа обращения к устройству поддерживаються мегафункцией Альтеры pcit1 которую мы используем. Если генерить драйвер под наше устройство при помощи программ типа WinDriver или NumegaDriver Studio, то все идеально работает ( т.е. можно писать/читать в порты ввода/вывода и писать/читать в память). Полученные таким способом драйверы хотя и работают, но мне не подходят, т.к. я хочу, чтобы программа работала с устройством без драйвера вовсе. Обращение к портам ввода/вывода получается и без драйвера ( например, на С++ это довольно банальные функции _inp(<адрес порта>) и _outp(<адрес порта>,BYTE).Моя задача состоит в том, чтобы научиться записывать и читать память (которая расположена на нашем устройстве) подобным образом. Теоретически Ваш совет относительно обращения к памяти через порты I/O понятен и легко реализуем, но учитывая, что на плате может быть, к примеру 16Мбт, неясно, как в относительно узком адресном пространстве IO зарезервировать такой большой бъём. Думаю, шинные циклы MemoryRead и MemoryWrite как раз и предназначены для подобных случаев, ведь не зря для памяти при конфигурировании назначается 32-разрядное адресное пространство ( в нашем примере 16Мбт). Sorry за пространные излияния :-))).
E-mail: info@telesys.ru