The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
обращение к портам ввода/вывода, !*! Bilbo, 11-Фев-03, 16:52  [смотреть все]
Нужно написать прогу под Free BSD, которая напрямую обращается к "железным" портам ввода/вывода. Как это сделать? Именно под Free BSD! Если не трудно, бросьте, в качестве иллюстрации, маленький исходничек.
Заранее благодарен.
  • RE: обращение к портам ввода/вывода, !*! qq, 02:15 , 12-Фев-03 (1)
    >Нужно написать прогу под Free BSD, которая напрямую обращается к "железным" портам
    >ввода/вывода. Как это сделать? Именно под Free BSD! Если не трудно,
    >бросьте, в качестве иллюстрации, маленький исходничек.
    >Заранее благодарен.

    http://forum.ixbt.com/0026/004148.html

  • RE: обращение к портам ввода/вывода, !*! spf, 07:25 , 12-Фев-03 (2)
    >Нужно написать прогу под Free BSD, которая напрямую обращается к "железным" портам
    >ввода/вывода. Как это сделать? Именно под Free BSD! Если не трудно,
    >бросьте, в качестве иллюстрации, маленький исходничек.
    >Заранее благодарен.

    Напрямую с железом? Тогда писать свой драйвер.

    • RE: обращение к портам ввода/вывода, !*! Bilbo, 10:57 , 13-Фев-03 (3)
      >>Нужно написать прогу под Free BSD, которая напрямую обращается к "железным" портам
      >>ввода/вывода. Как это сделать? Именно под Free BSD! Если не трудно,
      >>бросьте, в качестве иллюстрации, маленький исходничек.
      >>Заранее благодарен.
      >
      >Напрямую с железом? Тогда писать свой драйвер.


      Где можно найти информацию по написанию драйверов под FreeBSD? Лучше на русском и с примерами.

  • RE: обращение к портам ввода/вывода, !*! NL, 14:10 , 13-Фев-03 (5)
    >Нужно написать прогу под Free BSD, которая напрямую обращается к "железным" портам
    >ввода/вывода. Как это сделать? Именно под Free BSD! Если не трудно,
    >бросьте, в качестве иллюстрации, маленький исходничек.
    >Заранее благодарен.

    в свое время, когда у меня была подобная задача только под линукс я перелопатил драйвер LPT порта и в parport_pc.h и parport.h нашел вот такие функции inb() и outb(), читает и записывает данные соответствено. Самые что ни на есть низкоуровневые функции доступа к железным портам, почти ассемблер. Так вот может они есть и во ФриБСД. или одноименные хедеры посмотри, может что нароешь.

    • RE: обращение к портам ввода/вывода, !*! Bilbo, 17:18 , 26-Фев-03 (6)
      >>Нужно написать прогу под Free BSD, которая напрямую обращается к "железным" портам
      >>ввода/вывода. Как это сделать? Именно под Free BSD! Если не трудно,
      >>бросьте, в качестве иллюстрации, маленький исходничек.
      >>Заранее благодарен.
      >
      >в свое время, когда у меня была подобная задача только под линукс
      >я перелопатил драйвер LPT порта и в parport_pc.h и parport.h нашел
      >вот такие функции inb() и outb(), читает и записывает данные соответствено.
      >Самые что ни на есть низкоуровневые функции доступа к железным портам,
      >почти ассемблер. Так вот может они есть и во ФриБСД. или
      >одноименные хедеры посмотри, может что нароешь.


      Лю-ю-ю-ди-и-и! Есть ли справедливость в этой жизни!? Я не могу слинковать прогу, обращающуюся к портам ввода/вывода под FreeBSD, через функции outp/inp! Такое впечатление, что в libc вообще нет таких функций! Я поставил gcc3 легче не стало. Может во фрюхе вообще с портами другая техника работы? Методика open/lseek/write/close тоже не помогает, а на меня начальство наседает, я просто в шоке! Помогите! Не дайте пропасть тупому программеру.

      • RE: обращение к портам ввода/вывода, !*! qq, 00:37 , 27-Фев-03 (7)
        >>>Нужно написать прогу под Free BSD, которая напрямую обращается к "железным" портам
        >>>ввода/вывода. Как это сделать? Именно под Free BSD! Если не трудно,
        >>>бросьте, в качестве иллюстрации, маленький исходничек.
        >>>Заранее благодарен.
        >>
        >>в свое время, когда у меня была подобная задача только под линукс
        >>я перелопатил драйвер LPT порта и в parport_pc.h и parport.h нашел
        >>вот такие функции inb() и outb(), читает и записывает данные соответствено.
        >>Самые что ни на есть низкоуровневые функции доступа к железным портам,
        >>почти ассемблер. Так вот может они есть и во ФриБСД. или
        >>одноименные хедеры посмотри, может что нароешь.
        >
        >
        >Лю-ю-ю-ди-и-и! Есть ли справедливость в этой жизни!? Я не могу слинковать прогу,
        >обращающуюся к портам ввода/вывода под FreeBSD, через функции outp/inp! Такое впечатление,
        >что в libc вообще нет таких функций! Я поставил gcc3 легче
        >не стало. Может во фрюхе вообще с портами другая техника работы?
        >Методика open/lseek/write/close тоже не помогает, а на меня начальство наседает, я
        >просто в шоке! Помогите! Не дайте пропасть тупому программеру.

        хмм... ссылку видел? поглядел чё там?
        там пример программы, которая делает вывод в порты из пользовательского режима
        она компилируется и работает
        ну раз уж так трудно гулять по ссылкам, скопирую оттуда:


        #include <stdio.h>
        #include <fcntl.h>
        #include <machine/cpufunc.h>

        int main(int argc,char* argv[])
        {
        int val,port;
        int fd;

        if(argc<3){fprintf(stderr,"usage: %s port value\n",argv[0]); exit(1);}
        if(sscanf(argv[1],"0x%x",&port) && sscanf(argv[2],"0x%x",&val))
        {
        fd=open("/dev/io",O_RDWR);
        if(fd==-1){perror("open");exit(1);}
        outb(port,val);
        close(fd);
        }
        else
        {fprintf(stderr,"port and value must be in hex format with 0x prefix\n"); exit(1);}

        }

        компилируем:
        # gcc outb.c -o outb
        запускаем:
        # ./outb 0x3f2 0x10
        лампочка дисковода загорелась
        # ./outb 0x3f2 0x0
        потухла


        • RE: обращение к портам ввода/вывода, !*! Bilbo, 16:40 , 27-Фев-03 (8)
          >#include <stdio.h>
          >#include <fcntl.h>
          >#include <machine/cpufunc.h>
          >
          >int main(int argc,char* argv[])
          >{
          >int val,port;
          >int fd;
          >
          >if(argc<3){fprintf(stderr,"usage: %s port value\n",argv[0]); exit(1);}
          >if(sscanf(argv[1],"0x%x",&port) && sscanf(argv[2],"0x%x",&val))
          >{
          >fd=open("/dev/io",O_RDWR);
          >if(fd==-1){perror("open");exit(1);}
          >outb(port,val);
          >close(fd);
          >}
          >else
          >{fprintf(stderr,"port and value must be in hex format with 0x prefix\n"); exit(1);}
          >
          >
          >}
          >
          >компилируем:
          ># gcc outb.c -o outb
          >запускаем:
          ># ./outb 0x3f2 0x10
          >лампочка дисковода загорелась
          ># ./outb 0x3f2 0x0
          >потухла


          Огромное спасибо!!! Заработало! Я ваш должник!
          Это просто праздник какой-то!




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру