|
��������
ios - �������������� ������� �����/������
���������
#include <sys/user.h>
��������
������������� ��������������� �������� �����/������
��������� ����������� ������ ������ � �������� ���������� ������, �������� � ����������� ������������ �����������, ��������� ������������ ��������� ��� ��� � ����-������ �� ��������� ����. ������ � ������ ��������
�������������� � ������� �������������� ����������,
��������� � ��������� user. ������� �����/������ �����
�������� ������ ������ � ��������� � ������������ ���
����� ������������ ������ � ���������� ������.
� ��������� user ��������� ��������� �������������� ����������:
caddr_t u_iospad; /* �����. ����� ���. �������� */ caddr_t u_iosvad; /* ����. ����� ���. �������� */ long u_iossiz; /* ������ ���. �������� */�������� ���� ���� ����������� ������ ���� ������ ���� ���������� (�������� NBPC � ����� <sys/param.h>).
������
���������������� ���������� ����������� ������������
AGC-1 �� ���������� ���������. ��� ����� ���� �����
������ � ������ �����������, ��� � ����������� � ������� ios. ������ ����������� ����������� � ������
0xfcc00000 � ����� ����� 0x240000 (������ � ������������).
��������� ��������� �������������� ����� ��������� user �������������� � ������� �������� ������������ ����� /dev/agc. ��� ���� ����������� ������� agcopen �������� AGC (�� ����� �������� � ����� /usr/src/uts/io/agc.c). ������� ������������� ����
u.u_iosvad = (caddr_t) 0xfcc00000; u.u_iospad = (caddr_t) 0xfcc00000; u.u_iossiz = 0x240000;
��� ������� � ������ ����������� �������� ���������� AGC-1 ������������ ��� ��������, ���������� �� ������� ����: ������� ������ - ��� �������� ������ ����������� ��������, ������� ������ - ��� �������� ������, ������� ������ ���� �������� �� ���������� ������� (��� ��������� �� ����). �������� ����� ��������� ������: ������� ������ - 0xfcc3c000, ������� ������ - 0xfcc3c002.
�� ����� �������� ��� ���������� �������� - ������� ������ ������ � ������� ���������������. ��������������, ��� �� ����������� ������ ��� ���� ����������� (��������� �������������� �����-���� ����). �����, ����� ���������� ���������� ���������, �� ������ �������� �����������.
#include <fcntl.h> #define HEIGHT 0x008A #define ZOOM 0x00EA typedef unsigned short ushort; main (argc, argv) int argc; char *argv[]; { int i, j, k, fd, old_value; if ((fd = open ("/dev/agc", 0, O_RDWR)) < 0) { perror ("\nOpen error /dev/agc :"); exit (0); } /* ��������� �������� ������ ������ � ������� */ old_value = read_register (HEIGHT); /* ����� �������� ������ ������ (������� ��������� �� ����, � ����� ����������� �� ��������� �������� */ for (i=old_value; i>=1; i--) { write_register (HEIGHT, i); /* �������� */ for (j=0; j<1000; j++) k = j/231; } for (i=1; i<=old_value; i++) { write_register (HEIGHT, i); for (j=0; j<1000; j++) k = j/231; } /* ����� �������� ������� ��������������� */ for (i=0; i<16; i++) { write_register (ZOOM, (i | (i<<4)) << 8); sleep (1); } for (i=15; i>=0; i--) { write_register (ZOOM, (i | (i<<4)) << 8); sleep (1); } close (fd); } /* ������ � ������� ����������� */ void write_register (number, value) int number; /* ����� �������� */ int value; /* �������� �������� */ { ushort *adr= (ushort *) 0xfcc3c000; ushort *dat= (ushort *) 0xfcc3c002; ushort val; *adr = number; *dat = value; } /* ������ �������� ����������� */ int read_register (number) int number; /* ����� �������� */ { ushort *adr= (ushort *) 0xfcc3c000; ushort *dat= (ushort *) 0xfcc3c002; *adr = number; return ((int) *dat); }
���������������
������������ ������������� ios ����� �������� ������
�������.
Ios �������� �������-��������� ��������� � �� ������ ����������� ����� �� ��������.
|