Page 10 of 14

Re: KolibriOS на производстве

Posted: Fri May 31, 2013 10:49 am
by Serge
art_zh
1. Полностью с тобой согласен, для GMON нужен драйвер и ф.62 должна быть заткнута.
2. Колибри хороша тем, что кардинальные изменения достигаются лёгким движением руки.
Открываем taskman.inc, находим строку

Code: Select all

1134:        mov     [ebx+REG_EFLAGS], dword EFL_IOPL1+EFL_IF
меняем EFL_IOPL1 на EFL_IOPL3 и наслаждаемся беспроблемным доступом ко всем портам и даже cli hlt :)

Re: KolibriOS на производстве

Posted: Fri May 31, 2013 2:16 pm
by VitZ
На качественно организованном производстве
переходник RS232/RS485 встречается не реже,
чем персональный компьютер.
Операционные системы приходят и уходят, а последовательный
порт почему-то остаётся.
Следующей идеей у меня было -
подцепить какой-нть RS-485 девайс
(в том же ключе, как на LPTе - светодиоды).

Re: KolibriOS на производстве

Posted: Sat Jun 01, 2013 12:41 pm
by VitZ
Устройство двоичного вывода (0 - 24 В) i7042
попытаемся подключить к $3F0 - адресу
на скорости 115200, с 8мью битами данных,
без проверки на чётность и с минимальным количеством стоповых битов.

Re: KolibriOS на производстве

Posted: Sat Jun 01, 2013 1:42 pm
by art_zh
VitZ wrote:Устройство двоичного вывода (0 - 24 В)
не забудь про гальваническую развязку - у COM-порта (-12В ... +12В)

Re: KolibriOS на производстве

Posted: Sat Jun 01, 2013 2:02 pm
by SoUrcerer
У меня на ноуте до 5В, так что это еще стоит вольтметром проверить.

Re: KolibriOS на производстве

Posted: Sat Jun 01, 2013 3:59 pm
by VitZ
Устройство i7042 подключаем к компу через переходник i7520;
если (как у меня получалось раньше - из DOS'а) удастся послать
в пром-линию через com-порт строку '$01M',
то устройство (в данном случае i7042)
пришлёт своё имя (i7042 в данном случае
должно иметь в пром-линии адрес 01 и
настройку на скорость 115200) ...

Re: KolibriOS на производстве

Posted: Sat Jun 01, 2013 6:44 pm
by VitZ
... в конце каждой строки
общения между устройствами
(комп <-> i7042)
ставится символ (байт) 13.

Re: KolibriOS на производстве

Posted: Sat Jun 01, 2013 10:03 pm
by VitZ
В примере с LPT-светодиодами
две процедуры (p3 и p4) можно
свернуть в одну (по записываемому байту):

procedure zapis_v_port(b:byte);
begin asm
mov eax,43
mov bl,b
mov ecx,888
int $40
end; end;

Скорее всего и номер (адрес)
порта тоже можно вынести -
как параметр.

Re: KolibriOS на производстве

Posted: Sat Jun 01, 2013 10:14 pm
by SoUrcerer
Конечно, можно.

Re: KolibriOS на производстве

Posted: Sun Jun 02, 2013 9:25 am
by VitZ
У меня получилось:

procedure zapis_v_port(pb1, pb2, b: byte);
begin asm
mov eax, 43
mov bl,b
mov ch, pb1
mov cl, pb2
int $40;
end; end;
...
if key=7 then zapis_v_port($3, $78, 255);
if key=8 then zapis_v_port($3, $78, 0);

, а как в ассемблере записать в регистр (ecx) для номера
порта сразу 2а байта=word (888>255)
(может какие-то квадратные скобочки рядом с ecx использовать
или адрес этой переменной и указать количество её байт) ?

Re: KolibriOS на производстве

Posted: Sun Jun 02, 2013 2:20 pm
by Asper
VitZ
Размерность регистра и операнда должны совпадать для команды mov.
Если хочешь записать именно word в ecx можешь воспользоваться к примеру командой movzx.
Не пиши никогда идентификаторы, комментарии и т.д. транслитом, используй английский язык.
Это вроде как Pascal с BASM'ом?
Вместо кучи однотипных if лучше использовать конструкцию case of.

Re: KolibriOS на производстве

Posted: Sun Jun 02, 2013 6:31 pm
by VitZ
Asper, спасибо ...

procedure zapis_v_port(pdw:dword; b:byte);
begin asm
mov eax,43
mov bl,b
mov ecx,pdw
int $40
end; end;
...
if key=7 then zapis_v_port(888,255);
if key=8 then zapis_v_port(888,0);

... а транслитом я уже
больше думаю, чем пишу.

Re: KolibriOS на производстве

Posted: Sun Jun 02, 2013 7:23 pm
by VitZ
Драйвер нашего com-порта
будет содержать 8 процедур:
zachvat_portov, otdatj_porti, open_com,
zapis_v_port(pdw,b), chtenie_iz_porta(pdw,b), delay(ms),
sc(s1), rc(s2).
Последние две - это:
послать команду в com-порт (строка) и
принять команду из com-порта (строка) соответственно.

Re: KolibriOS на производстве

Posted: Sun Jun 02, 2013 7:46 pm
by SoUrcerer
: Зачвать портов! Отдатж порти!
Может, всё же лучше grab_ports/capture_ports и release_ports?

Re: KolibriOS на производстве

Posted: Sun Jun 02, 2013 8:50 pm
by VitZ
Я предлагаю перенумеровать через randomize все 8 процедур
и продолжить написание кода драйвера по-сути;
например:
p9358765,
p2089764,
...
p7848933.
(Естественно, надо будет проверить -
чтобы не было двух совпадающих имён) :)