Upload
trinhkhanh
View
242
Download
0
Embed Size (px)
Citation preview
V11.3
XUPV5 Development
Board
Embedded Linux on Xilinx
MicroBlaze
Presentation Manual
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������$
&����� ����������� ��
������������ ������������� ������� ���� ��������� ��
�� �������������
�����������������'������
!��������������������%�� ����������())*+),
���������-������������.��� �
.�������� �
/��������'���� �/0�/���������'����������/
���������������%� ������� �����'� ��
1�����
�������������� ������
1��������� ����2�������
1���� �!��"������� ������� ����
������������ ������������� ������� ���� ��������� ��
�� ��� ����3
������������������������
��������� ���������4�.-�����5������6���������
������7��������4�.-�������������������������
������������� ��
�� ����
������� ��� ��0����'�������0�888
��������� ����0�������� ����0�888
�� �
���������� ��������0�������0������0�888
������������ ������������� ������� ���� ��������� ��
-������������
#�9������������
:�;0���������
<�� ��4���'0�1��������� ����2�������
��������������������4���'
:��������������������������������� �!��"����())=
�������������������������������
������������ ������������� ������� ���� ��������� ��
������������� �
>����%��
����������
��������� ��� �����
� ������������������0������������'� ������
������%����
����������'����
>�'����&8883
>�'����&�������3
;��%���
�� ����������������0���������������
�?������� �������������@�
������������ ������������� ������� ���� ��������� ��
;�A ����
#�������������������� ����
����������������� ������ ��� ��
��������� �������������������������������
>��'������� ����������������� �!��"
#��������������������������
'�������� �!��"�������� ������������������#B�������������
����������� ������
������ ���������'�� �
��������� ����
������������ ������������� ������� ���� ��������� �
�C������
;�� �������888�
!��� �4�.-�7����'�������
�� �����������������
�������������������������
!��� ���:����� ���������� ��������� �� ���
����% ��:���0�&�� ��0�888
!��� ����������������� �� ���
������������ ������������� ������� ���� ��������� �!
� �����%�#� �$5����'�6
$8$�&����� ����
$8(��������������#� ������
������������������
$8=�&����� ����������������
������������������������
$8*�-���� ��������������
�������������������������������
$8,�D�'����������1:�+&�
��������������
$8E�#�� ����������������
���������������������
$8F�������������
����������������������
������������ ������������� ������� ���� ��������� �"
� �����%�#� �(5���'������� ����6
(8$�&����� ���������#B������� �!��"
���������� ����������������������� ��
(8(�:���������'�������������������� ���
������!������"�������������
(8=�:��������� �����
������������������������"�����
(8*�;��:��������������
������������ ����"�#��"���
(8,�.����������������'
������������ ������������� ������� ���� ��������� ���
�����������������
��������������:��5�������6
:��;��,
�������<�>����������������,8)
������/ ����/0��������'��
!������������!+���:#�� ���
�������&���7��#B�$$8=
��������������������������
$(HOME)/petalinux
-���� �����������������
$(HOME)/xup-materials
������������ ������������� ������� ���� ��������� ���
�����������������
�������������� ����������G,%��$$)1�#��������� ����5�������6
��� �
(,E�� ��##<(
=(%����H!1�� � ��������<-������&�����=)������4�����
1'��=(��� �� �������������<;���
� ���-:��:���� ��4����� ������������ �������
&���� ��
�����0�<�(=(0���!0�888
!������������'�� ���
I������#�
I%���������#&�0�*��������������'�� ��
������������ ������������� ������� ���� ��������� ���
�������������=�$E))���������5�������6
���
E*��!�##<��#<-�
$E�!�I�������������
(��!�����������
&���� ��
�����0�<�(=(0���!0�888
!������������'�� ���
I������#�
I%���������#&�0�*��������������'�� ��
�����������������
������������ ������������� ������� ���� ��������� ���
�����������������
�:+��������������:��;��,
��!�����
#� ����������'���'������ �!��"�����
&�������������������������������������'��
��������
����������� ����������� �!��"
������������ ������������� ������� ���� ��������� ���
�����������������
������ ���
-������ ��C�����������������~/xup-materials/labs/labX.Y/resources
��� � ���������������������
1��������������� ���
:���������A ���������������������������������
~/xup-materials/labs/labX.Y/completed
��������0������������
����������������� �����������������������������
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������&
�������������#� ������
������������ ������������� ���������������������������
'�( ����
)������������������������� ����
����������� �������������
����� ��� ���������� ���������
��������������������
���� ����������
)���������*����$+$,
�������������� �������������-������������������
������������-%��.���������������
����� �������������������-������������������������
������������ ������������� ���������������������������
�� �*������,������/
0���������� �����'��������� ��
��-�����.������ ����.���� �������
� �������.��� ���1�����.����������������.�0�2
���������
�34.�5����.��0��.���2.��� �!��".�56�.�2�����.�+++
������������ ������������� ���������������������������
�� �*������,������/
#��������������
�������������
�������������
7������������2������7�%�#+8���#����
5���� ������ ��� ���������� ���������������
� ��������
#�� �������%9������������ �������%9��������%9����%9� ����
:��������������
������������ ������������� ��������������������������
;<�1�����
���������������
5�����-�������������� ����=���������
������������ /
������
��������2����� .�+++
5���� ������
������������.���������.�;�0�.�+++
� ����������� ����� ���>
)��;<����( ���������;��
6� ������������
������������ ������������� ��������������������������!
?���� �������������
&@���5�����.�$AA$
B0C����������������� ���( �� ����������D�
E�������)������.� ���+��+�����
$AA&�������F+A@
$AAG�������$+F
$AA@�������$+&�
$AA4�������&+F
$AAA�������&+&
&FF$�������&+G
&FFH�������&+4
������&FFA�%�������&+4+H$� I0!�������-���J
������������ ������������� ��������������������������"
?���� �������������
�������������
$AA@�������$+H+AG
����������%�34�� ��� �������*�43�,
$AA3�%�������&+F��
0!���1HAF
������2���������
������)���������� ������:��������"���
&FFA�%�������&+4+H$
9�&F��� ����� ��� ���
���������������� �����
�� �!��"���������������������������
������������ ������������� ��������������������������#
K���������
'�������
�+ +"
��%���(��������*F.$.&,
�%�����������
���L������
����L����������%�������� ����� ��� ��������������
"�%����
0��&+4��
������������������� ������ ����������1��������������
������������&+M1&+3��������/
������ �����
������������ ������������� ��������������������������$
5����� ������������� ���
�������� ������
�����%�� ���
������
2������.���-�����.������ �.�+++�
K��
����������������
?��-�
2��.����
���.�������� ������.�0'
I0!�������-���J
������������ ������������� ����������������������������
������K���5 ��� ���%�'���-
�
I0!�������-���J
������������ ������������� ����������������������������
����������� ��� ���%)��� ���� ���������
2���� ����-������� ������������
6=������� �
��� .�0'
�� �����������
)����������2����� ������-�������������� ���� ���������
+�+�malloc()������2����� � ���
�����������������������
������������ ����� ������� �-������������������������
������������ ������������� ����������������������������
������K���5 ��� ���%)��N������:���� ���
5���� �������������������� ����5�0
�� ���� ��� ����� ����� �����������=������� ��������
# ���������� ������������������������
��H�����5)5�����
:5)H&������!����
�:���������-��650#�
+++
I0!�������-���J
������������ ������������� ����������������������������
������K���5 ��� ���%�)����� �����
)�������������� ��
��
��������� ���
open(), close(), read(), write(),
seek()+++
��� �
� �%� ����������� ������� �%�������� �
��
�� ��������
�� � ������
������������ ������������� ����������������������������
������K���5 ��� ���%)����� �����
5 ��������� �
���������� ���������������������� ���������� �����
/dev/ttyS0 *���������"�,
/dev/hda���*�����0#������,
��-������ ��� ����� ����
����� ������� �������������
������������ ������������� ���������������������������
������K���5 ��� ���%)����� �����
#�� � �����
������������������������ ��1��� �1��
������������� ������������ ���������� ����.�+�
))O.���!.�0&2.���0.������
������������������� ������������� ��� ����� �
������������ ������������� ���������������������������!
����������� ��� ���%�� �����������
)��������� ��������������������� ��������-�������
�������������
��� ����
���� ���� ������
� ��� � ������
��-��� ������
2����� �fork()�����������
�)�������������������������
��-%������ �������-�� ����
����� �������� ����������2���� ����
������������ ������������� ���������������������������"
����������2�����
�������������������H34�� ��� ��
?��-����� ���������������*���,
N���������
��� ���� ����
������
������� ������2.��0��.���562.�P
$AA3�E��2������������
K�����5�����-��������#+�8���#��������������������������#5�*�43�%�����,
������������ ������������� ���������������������������#
�2��������(��#���� �
<�����
<����� ���� ����
<������������ �1�����������������
<��fork()
0���� ������
<����� ���� �����E������� ���� �����1-����� -�
2�����������vfork()�������
fork()/exec()�Q vfork()/ exec()
:������"������ ��������� �
���������� ������� ������ ��� �����
������������ ������������� ���������������������������$
�������������������������/
2���% ����������
��������������������.������������
���������������������������������������
�������������������������
���%������������ ���� ������
����������������������������������� �
2���%�������� �����1���1����� ��
!���������� ��
�������������
������-��
������������ ������������� ����������������������������
'������ �����
)������ �������� ���������
�������*2.�2RR.�+++,
������.������*��������,
������
�������������������
;22���������� �������������������
;<��2������2��� ����
gcc, as, ld, gdb
������������ ������������� ����������������������������
'������ �����
�����%�� ��� ����� ����
2�������� ���������������������������������
����������������������2����� .�����������������������
)-���������������
�2������*������,
microblaze-uclinux-gcc�*-as, -ld, -gdb.�+++,
������*���,�
mb-linux-gcc�*+++,
������������ ������������� ����������������������������
:������� �
�����������
����S11---+�����(�����+ ��1��� �14FFF
����������������
����S11---+���+ ��1�����-���1�����1���� 1�%�����%���1
����� ������
��������� �<-��*---+�-�+��,
K���)���*---+������+��,�
������8�����*---+�����(�����+ ��,
������#�� ��*---+�������� �+ ��,�
������������ ������������� ����������������������������
����$+$�%�5����������
�����������������������������������
'������������� �����
��-%����������.������������=��
�����.�����
2�����-����������
��
$@%&F��������
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������&
'����� ����������������
������������ ������������� ������� ���� �� ���������
(�) ����
*������������
���� ���������������������������������
��� ����� ���
���� �����
��������� ���� �����������
*���������� ���� ����
���������������������� ������������� ���
*����������������� ����+���� �!��"����������
������������ ������������� ������� ���� �� ���������
'�������������
#��������+��������������������� �
���,��������������
���� ����
���+���� �������
-��������� � �+�������� ���
. ��������� ����������
/������������� �
����������0
������������ ������������� ������� ���� �� ���������
'����� ������������
1��%��%��������������������
���,���� ,�������� ��������� �
���� �����
���+���� �������
���������!��������
����� �����������������������
���������� ���������
���������(�����#� ��������������2,,+++3��������3 ��,��� �,�� ���������,��������
������������ ������������� ������� ���� �� ���������
'����� ������������
�� �����
4����� ���� ,�� ����
5���%������� ������ ����
1��������%���������������� � �������6��
���������� � ��������
petalinux-* �����
7��� �����
�� ���8������� ��� ������
1��������������$3$�9# ���:;;<=
������������ ������������� ������� ���� �� ���������
���������78������
���������������� �������+���������
7�/������������������>��(���?� ������
�������������������� �����������
(����������������(-���������������+����������������
:6!�71�
:6/"�>��
�������������9����?6!��=
������������
'��������#-�
>���� �$$3&
������������ ������������� ������� ���� �� ���������
*�����������������+
/��+�� ����������������������
����������������#-���������+
�����+�� �����������
�� ��������������
>����������@������ ������������ �����������
�����������+�%�� ��� �������������������+�� �����������
������������ ������������� ������� ���� �� ���������
*�����������������+
����+��������
!�������������������� ��������
!���
>�������4�61
#�+�������������
#���
������������94�61� ������������������=
������������ ������������� ������� ���� �� ��������
����������� ���
��� %����������������
>�������������������
*���������� ��
hardware
'�� ������ @��� ��������
software
���@�������@������ �������
tools
6>>�� @�petalinux-*�
����������
������������ ������������� ������� ���� �� ����������
���������!��� ��%�6�������� ����+��
*����������� ���
$ source settings.sh���9����,�����������=
$ source settings.csh�9>������,�� ���=
1������������������ ������
����$PETALINUX�����������������
petalinux-*������ ��������+�+���������
����+������������������������������������������ ����
���������������� �������
������+����� ����+��� ������ �������
������������ ������������� ������� ���� �� ����������
���������!��� ��%�� ��������������
���� ����� �����[user@host petalinux-dist] $ make menuconfig
������������ ������������� ������� ���� �� ����������
���������!��� ��%�� ��������������
>�����A.���,���� ���� ����A
������������������,�������&�$B;;%7�1%���%��$$&
#��������������������@������ ������@�� �����
�
�
�
�
�
������������ ������������� ������� ���� �� ����������
���������!��� ��%!�������������������
!��������[user@host petalinux-dist] $ make
!��������������+������ ���
���
������
����� ������
�%�������������
������������ ������
petalinux-dist/images���������� �� �
����� ��������/tftpboot������+������������
�����
������������ ������������� ������� ���� �� ����������
���������!��� ��%!��������������+�
>�����������+������������ �� �[user@host ...]$ cd hardware/reference-designs/...
!�����������+��[user@host ...]$ xps -nw system.xmp
XPS% run init_bram
>����implementation/download.bit
>��������������/���������#-�6�'������9���=�
������������ ������������� ������� ���� �� ����������
���������!��� ��%���������������
petalinux-boot-prebuilt
�������� ��� ���������������� ������������
petalinux-jtag-boot
����������C*16� ���������+�����������������+������
petalinux-new-platform
����+������������������������93�3��+������=
petalinux-new-app
����+������ ������ ����������������
petalinux-new-module
�������������������������������
������������ ������������� ������� ���� �� ����������
1��������������������
� ��������!��>������9�� �!��"��������=
>��� ���������������������
+++3� ���+���3 ��
���������������������������
��D;$@��&�$E;;@��&#��$E;;1
7���� ����+�
#�+���������������
������� ���������6����
���2,,���3������3 ��
�� �!��"�6>>����� ����
!�� ������������ ������� ����+����������������
>������������������ ���������
������������ ������������� ������� ���� �� ����������
4����7��� �
���������(�����#� ���������
����2,,+++3��������3 ��,��� �,�� ���������
#� ���������
*�������
�� �!��"�������������������
�� ������ ����
���������������
6������ ���� ������� %�������������
������������F��)�����G��3�83��3��H�+������� �����F���� ����� ����"%� �����H
������������ ������������� ������� ���� �� ����������
����$3:�%�!�����������������+�����
������������ �����
!����� ����+����������
��+%�������
'����������������8��
!�����+���������������+��
&;%D?��������
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������&
'���� ���������������������������
������������ ������������� ������������ ����� �����������������
(�) ����
*������������
�������������� ������������������������ ����
����������� ���% ��������������� ���%��������
*���������� ���� ����
��������������� ������������ �������������
���%�������������������������������� �����
������������������������������
*������������������ �� �������������+������+���������������������� �!��"�
������������ ������������� ������������ ����� �����������������
�������������'���� ������
'���� ���������������%���
���%��������� ��������������
,������� ��������������� ���� ����
��� ������� �����������-�./(-�000
�����������������������������������������������������
����������������������-��������������������������
���% ����������
������������������������������� �!��"
+������������������ ������1
������������ ������������� ������������ ����� �����������������
2���% �����������!��� �
#��������
�������� ������� ��� ��/� ����������������� �������������������
3����� �����������40�0��5678
��������+�� �������������������� �!��"1
[user@host]$ gcc -o hello hello.c[user@host]$ ./helloHello, world!
# ./hello./hello: cannot execute binary file
������������ ������������� ������������ ����� ����������������
2���% �����������!��� �
��������� ������������������ ���� ������
4��� �������-���������� �!��"����� 8
microblaze-uclinux-gcc �4�����8
mb-linux-gcc�4���8
# ./hello (target)
Hello, world!
[user@host]$ microblaze-uclinux-gcc -o hello \ hello.c[user@host]$ ./hellobash: ./hello: cannot execute binary file
������������ ������������� ������������ ����� ����������������!
2���% �����������!��� �
�����������mb-gcc1
����������4�����/���+�8��� �!��"�2� �����
���������������������������2�������
�������������������������������
������������ ������������� ������������ ����� ����������������"
.��������������� ������
(�����������
������������������/usr/bin-�/usr/local/bin��
���������4���������������������������8
�� � ���% ����������� �������������� ��������������
petalinux-dist/romfs/
!�������� ��������� �������������������� ����������
[user@host] make all install
������������ ������������� ������������ ����� ����������������#
'���� ������������������
������������� ������
�����-���������-�+����-���+�����-��� �����-�000
��������
petalinux-dist/user/���� �
�� ������������ �����
�������� ��� �����������������������������
��%������������ ������
2���������������petalinux-dist/user-��
���petalinux-new-app � ������� �����
software/user-apps
������������ ������������� ������������ ����� ����������������$
petalinux-new-app
2����������������+��������� �����
�� �����Makefile���� ���� ������������������
�
9�� ���������������������
[user@host software]$ petalinux-new-app mytest
New application template successfully created in software/user-apps/mytestSee mytest/README for what to do next.
[user@host mytest]$ make all romfs
������������ ������������� ������������ ����� ������������������
9������� �������� �����
*���,��
!���������������������� ������
9���������� ��������
9�����������+�������+�����
�������������-������ ����������� ������
*���� �� ��������+
����+������������+��������������� �����
# /bin/mytestHello, PetaLinux World!cmdline args:./mytest
������������ ������������� ������������ ����� ������������������
#�������
*���������+�����������
.��� �������������������������������� ��
�������/� �������� �
��������������������:3������������� �!��"/����������
%���������������� ������������������������������������������� �������� ������������ ������������������%
&'����('���)��*�%+����, '�&����'-%���$"$�
������������ ������������� ������������ ����� ������������������
2���%��������
.��microblaze-uclinux-gdb�����������
����-���+�������� ����������� ������������������������1
;���*2�/.���������������������
����
$ microblaze-uclinux-gdb \ /path/to/mytest.gdb
�4���� � ��� ������� �!��"�.��
�����-�����$<5&8
����
#gdbserver host:1234 /bin/mytest
������������ ������������� ������������ ����� ������������������
2���%��������
�����������.gdb����1
mytest������������ ����������
������������������� ���������������
mytest.gdb���������=������ ���������������
� �����
������������ �microblaze-uclinux-gdb
������������ ������������� ������������ ����� ������������������
������������������%�(������� �!��"
# gdbserver host:1234 /bin/mytest foo barProcess /bin/mytest created; pid = 676Listening on port 1234
������������� ����������
Remote debugging from host 192.168.0.20
��� �����������������������������
Hello, PetaLinux World!cmdline args:/bin/mytestfoobar
Child exited with retcode = 0
Child exited with status 0GDBserver exiting#
������������ ������������� ������������ ����� �����������������
������������������%(���������
(���=�������>��*������ ������4���������������������8�����
[user@host mytest] $ microblaze-uclinux-gdb mytest.gdb
������������ ������������� ������������ ����� �����������������!
������������������%(���������
#���������������������main()
2�����+�������������-������������ �
(����������������� �!��"� �����
�����������������
$ microblaze-uclinux-gdb -nw mytest.gdb
������������ ������������� ������������ ����� �����������������"
=����9��� �
���������(�����#� ����������?�#�����������'���� ������
����>//+++0��������0 ��/��� �/�� ���������/��������/������/#�������/��'���� ������
:3��������������
����>//+++0���0��/����+�/���/�� ���������/
������������ ������������� ������������ ����� �����������������#
����$05�%�'���� �����������������������
���petalinux-new-app
����� ����������� ��
2�����������������
!�����+�����
��������+���� ���%��������
�
&@��������
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������&
'(�)*��+�,�����
������������ ������������� ������������� ������
-�. ����
'������������
���� ���,��� ��������������������������
��,���,���������� ����������������������� ��
����� ����������������������� �� ���
����������,��������� ������� �!��")������
'���������� ���� ����
������+/����������������������� ��
������������������������������,����
������������,�%����������� ������
������������ ������������� ������������� �����
!��� �'(�)*�
�� �!��"���������������������� ������������'(�)*����� �
����������� �������� �����������,����������ping
ftp/tftp
http
telnet/telnetd
�� ����� �������� ������,������� �����������
tcpdump, wireshark
������������ ������������� ������������� �����!
!��� �'(�)*�
-�����,����������
wget
ntpclient
ppp
��������,����������
iwconfig, iwspy, iwpriv0�111
����������ssh/sshd
� ��� ������
������0���,���0�111�
������������ ������������� ������������� ������
��%����������� ������
������
boa�%%������%���������������
thttpd�%%���� )����)�����������������
fnord�%%������,�������������
���2���� ������
��%��������� �������
(������3��,� �*���� �4(3*5�
������������ ����������� ������������ ����������,��,��������������������0�1�1�,����1
���������6�������4�6�5
������������ ������������� ������������� �����"
��%����������� ������
+�,������������� �
������2 ���������42�5�
+�,���� ��� �������� �
(��������� �
�����������
7�*��
�� �!��"�8�2�����9�7��������:
*������������ �
������������)������) �����)�����
������������ ������������� ������������� �����#
+�,��%������2���� ������
���������� ��������
'(�)*����� ��� ����������
�#������������������
+�,������ ��� �������������������
���� �����������
������������ ������������� ������������� �����$
;����������������������
����,��������
���������������������
(3*%�����������,�����������
������������������ �������
�����<�����
6��,��������
�������!�*�/���������� ����������������/�����������/�32� ���������������
�������/�32� ��������������������������������������������� ���
��)��,�����������������/�32���������
������������ ������������� ������������� �����%
�����#�������
;��������� ��������������
gdbserver���������������
mb-linux-gdb���������������
������ �������'(�)*�
���������������� ��� ����
������������ ������������� ������������� �������
�����#�������
+/��=���,�������� ���
������,��������������� ����� ���������,��
����������������� �� ��������
�������������
*������� �����)���)������� ��
6-�'$ make (edit)
$ make
'2;3�'�# ./my-app(test)
# ./my-app
������������ ������������� ������������� �������
���������������+�,�����
�������,������ �������������
������� �������������������
(�����������������,�����
(���������,�������
Linux Kernel Configuration ->
Networking ->
Networking options ->
Linux Kernel Configuration ->
Device Drivers ->
Network device support ->
������������ ������������� ������������� �������
��������+�,���#�� �
����������������������*�� ��
����>���
$?)$??������
������� ��� ��0���,���� �����
���#�2
'�%����������4��>��� 5
$?)$??)$???
� ���%�����#�2
@���@� �����7���A)&�/���������
@����@� ��������������
#�� ��������������������������
������������ ������������� ������������� ������
��������+�,���#�� �
�� �!��"� �������� �������������2()�6B� ������
1�1���������*��$CD?
���� �� ��� �%���������������������
���� ������<���
*;E�
������������
������������ ������������� ������������� ������!
/����;��� �
��������,������� ��� ���
@���������������������F��0�G���@0�!��������(����0�-�;��� ����0�H??&�
+�,������ ������
@������#�� �#���0�G���@0�(����0�;����������F���%6������0�-�;��� ����0�H??&
����������(��� ��������������������
����I))�.1��)����)����)
��� ������������
+�����
����I)),,,1������1��
������������ ������������� ������������� �������
����$1A
��������,������ �������������������
;������������������
/�������������/'�
+/��������
�������,�%�������,�%���������� ������
G?��������
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������&
#�� ������������������������
������������ ������������� ��������������������� ������� �����
'�( ����
)������������
!��� � �� ������������������� ���������
)��*����������� *� �� ���������+������������
)�������������������������������������
)�� �� �����������,'�-����� �,'.��������+��
)���������� ���� ����
/���������������������
,���������������� ���� ����
������������������������� �!��"
������������ ������������� ��������������������� ������� �����
� ���� �����������
#�� ��������������������+�������� ��+�������� �� ������
#�� �������������������� ������
#����������0�#�10�22
,�����������1�,�-read(), write()0�222.
#�� ���������������������
��+��� ��� ����-�34&0���/0��� �!��"222.
��+��������� � ��������� ����
����������� ������� �
��������������� �
�������������� ��������
������������ ������������� ��������������������� ������� ����
� ���� �����������
5�+����+����+�+������� ���������������� ����-�������������6,78.9
��������������%�� �����0�2�2��/,
'��:�����/,� ��������������� ������������ ��
1���������� ������������,78�
#����:� ��������������� ����������
� ���%��%/������������ �� ��� ������
��������� ����������� ����������
��������:������������
5�+��������������������������� ������ ��������������9
������������ ������������� ��������������������� ������� ����!
� ���� �����������
)��platform_device
;�� ����6��� ��� ����
/����������������������,78�����������
'����������� %�� ��� �����
�������������� ��� ���� ���� ���
���� �����������������������
<��������������������� ���������+��
platform_device��� �����0�����
�������������� ���� ��� ��
������������ ������������� ��������������������� ������� �����
)��platform_device
1�� �� ������������� �������������
static struct platform_device my_device={ .name = "uartlite", .id = 0, .dev.platform_data = NULL, .num_resources = 2, .resource = (struct resource[]) { {.start = 0xbf000000, .end = 0xbf000fff; .flags = IORESOURCE_MEM }, {.start = 3, .end = 3, .flags = IORESOURCE_IRQ, }}...platform_device_register(&my_device);
������������ ������������� ��������������������� ������� ����"
)��platform_device
,�������� ��������������������
static struct platform_driver ulite_platform_driver = { .probe = ulite_probe, .remove = ulite_remove, .driver = { .owner = THIS_MODULE, .name = "uartlite", },};
int __init ulite_init(void){ ... ret = platform_driver_register(&ulite_platform_driver);}
������������ ������������� ��������������������� ������� ����#
)��platform_device
,�������� �������� �����
static int __devinit ulite_probe(struct platform_device *pdev){ struct resource *res, *res2; struct uart_port *port;
...
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
res2 = platform_get_resource(pdev, IORESOURCE_IRQ, 0); ...}
������������ ������������� ��������������������� ������� ����$
)��platform_device
'���+
� ������ ���������������� ��� �����platform_device_register()�+�������platform_device���( �
#�� �������������������� �����platform_driver_register() +������
platform_driver���( �
)��������� ������.name�����0����� ����������������������.probe()���� ����
)��������2probe()���� �����:������������������ ��������������������������,78�����������
������������ ������������� ��������������������� ������� ������
1������� �!����������
������+�������������������platform_device�����������9�
���� ���9
���� � ���������������������������/����������-17�0�!�� ����0�22.
����������������� ���� ��������������� �!��"�
� �� ���� �������+�������������
������������ ������������� ��������������������� ������� ������
1������� �!����������
���������1������� �!���������-����% �����.
��������#<�����+��� ��������������������������������
� ������������������+��� ���
�������� �!��������
:� �����������������
�������������%�����������
��������microblaze_0/libsrc/petalinux_v1.00.b/Kconfig.auto������+����( ���
������������ ������������� ��������������������� ������� ������
1������� �!����������
=���������������������������������linux-2.6.x/arch/microblaze/platform/common/xuartlite.c
�
#define XILINX_UARTLITE_PLATFORM_INITIALISER(n) ...
.resource = (struct resource[]) { { .start = CONFIG_XILINX_UARTLITE_##n##_BASEADDR, .end = CONFIG_XILINX_UARTLITE_##n##_HIGHADDR, .flags = IORESOURCE_MEM},{ .start = CONFIG_XILINX_UARTLITE_##n##_IRQ, .end = CONFIG_XILINX_UARTLITE_##n##_IRQ, .flags = IORESOURCE_IRQ,}...
������������ ������������� ��������������������� ������� ������
������������������
#�� ������ ���������� ��� ���� ���� ��� ����������������
<����������������� ���� ��������� ��������
#��������������� ���������.ko����
������������������+����insmod
7�����+����rmmod
# insmod mydriver.ko...# rmmod mydriver...
������������ ������������� ��������������������� ������� �����
�������������������>����� �����
���lsmod� ������������������������������
?����� @� ��������+����+���� � �����
�� ������������������� �����
,������������������������
/������ �rmmod�+�������� ��������"�
# lsmodModule Size Used bymydriver 30764 1
������������ ������������� ��������������������� ������� �����!
�������������������%���� �����������
�������� ������ ����������������������������
����������������������������������
,��������������������� ����0�2�2
�
Kernel config -> Loadable module support ->
[*] Enable loadable module support
<*> Xilinx GPIO Support
<M> Xilinx GPIO Support
������������ ������������� ��������������������� ������� ������
�������������������%����������������
�������������� ���������������� ����
<��� ������������+��������+����������������� ����������� �
#������� ��� �� ������������
'�� ������������������:���
��������������������� �����
/����� � ��������������
�����% ����+������� %��������� ����
'�� �� ���������-������ .
'�� �� �����������
��������������������������
������������ ������������� ��������������������� ������� �����"
�������������������%petalinux-new-module
������������������� ������� �����������������
petalinux-new-module
1���+��:�� ���������������+��������������������
����������������������
������������ ������������� ��������������������� ������� �����#
����� �,'
/������ ����������������������������
A�B�����0�������222
����������������������� �� ��� ��������0��������������
���������������0����%������0������
2�2�������������� ��������������������������� �
A�������� ���������������
*/�����,�(����� ���� ����+������������ 9*
������������ ������������� ��������������������� ������� �����$
����� �,'
,������������������ �� ������� ��� �������
�
��������������0����������������:����������
�����������0���������������������0������������ �����+��� ��
������������� ������������
�������������������� ����������
������������������������
fd=open("/dev/mem",O_RDWR);void *ptr=mmap(base_address, size, \ PROT_READ|PROT_WRITE,MAP_FIXED|MAP_PRIVATE, fd, 0);
ptr=(void *)base_address;
������������ ������������� ��������������������� ������� ������
����� �,'�%����,'����+��
=�����������0��������� �,'�-�,'.�1�,�+��������� �
linux-2.6.x/drivers/uio
����+�� ���0����������������������������� ���� �����
���� ����������������� ����������
�C ���������%�������
������,'����
�������������������
1������������+������������������
������������ ������������� ��������������������� ������� ������
����� �,'�%��������
��������platform_device���������
.probe()���� ����
������������������ ������
������������struct uio_info
����uio_register_device()
.name
.version
.mem[] -�� ������������������� �.
.irq
.handler() -������������������������� ����.
������������ ������������� ��������������������� ������� ������
void *ptr=mmap(NULL, size, PROT_READ|PROT_WRITE,MAP_SHARED, fd, n * PAGE_SIZE);
����� �,'�%�������� ���������
'������������
������������� ��� /sys/class/uio/uioX�
/� ��������������name�
,�������� ��
��� ��������������� �
���������������������-��� ��� ��� .
����� ���+������� ���������� ��� ������������+�
fd=open("/dev/uioX",O_RDWR);
������������ ������������� ��������������������� ������� ������
����� �,'�%���������������
�������������
,�����������-.���������� ������������������������� ��������� ���
�����
/�������� �������������� ����
O_NONBLOCK������������-.� ���
select() � ���� ���������������� ����
��������� ���� �����������,78�� ��
1 ��������������������������������� �������
read(fd, &num_irqs, sizeof(num_irqs));
������������ ������������� ��������������������� ������� �����
����� �,'�%�������� ���
��
;���������������� ����
��������� ������������������
�� ��������������������� ��������+������������
�,'������������������ ������
���������+������������������%����������
5������+��������������������� ��������� �����
����������������� ��
������������ ������������� ��������������������� ������� �����!
����� �,'�%�������� ���
/���
,�����������������������
���( ����������������������� �
A������������#�1���6��������� ���� ��
'��
� �����������;����� ������������
������������ ������������� ��������������������� ������� ������
=����7��� �
#�� �#���
*������#�� �#���*0�3���0�/���0�7����������<���%5�����0�'�7���
�,'
��������� �A+����� �
����D66�+�2��61�� ��6E3EFGF6
������������ ������������� ��������������������� ������� �����"
����$2F
/��������������������
!�������� ���
������������������������
HF�������
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������&
�����������'������%��������������������(������������)������
������������ ������������� ������������ ����
*�+ ����
,������������
!��� �������������-����� ���������
.������������������������� ��������������
�������������������� �!��"�'��
/� ������� ���������������������
,���������� ���� ����
���������� ���������������������������������
��� ������� ������ ����������� ���������
������������ ������������� ������������ ����
!� ������
��� ���������������0���1
2��������������
3������� ��� ������������������������ �� ���
3�������������������������
3 ������ �����
����������� ������������������������������ ���4*�� ���
3���-��*����������������� ������������������� ���� �
'�������������� ���� ��
3���-�� �� %��%-�����������������������
,���������-����������� �0������������-��1
������������ ������������� ������������ ����
2���������
4�������������� �� ���(������������ ����������������������� ����������������� � �������� �� ������ 5��
64���� ���� �.,'�����"��(�����788---5� ����"��5 ��8��� ��8��-8$99$:9;
������������ ������������� ������������ ����
!� �������%�'���������������
�������������� ��������-������������������
�'����������� �������� ����������'������ ��������
��������������
������ ���� ����
����� �������� ���� ���-����� -��%��� ����<
�� ������� ������� ������48*���� ������������
�������������
��� ������������� ������������
����� ��� ������������������� ������������� ��
������������ ������������� ������������ ���
=�����
3������������������� �������������-��������� ������������������������(� �������������������������5
64���� ���� �.,'�����"��(�����788---5� ����"��5 ��8��� ��8��-8$99$:9;
������������ ������������� ������������ ����
#������������'�����
#� ��� ���������-�� ���������������������������������������
�����������<
3���������������(�������>������-� >�-����������� �������������������� �� �
��������������������������� ������������� ����(����������������
������������������������������������
��������������� ������8-��� ���������� ����
������������ ������������� ������������ ���!
�� �!��"��������
���������������� ��&599�0 ������������������1
������ ���� ������'?9@������ ��� ���
,���� ���������������������0�����A���B1
������0������������� �����1
��� �����0��� ���� �������� 1
�������0��� ������������������������1�
������������������ �!��"����-��� ���������
�
BEGIN microblaze... PARAMETER C_USE_MMU = 3 PARAMETER C_MMU_ZONES = 2...END
������������ ������������� ������������ ����
����������������
������������%���������������C���� �:99D
:5E5��������� (�������������������������:99D
/�������������)�������������
�� �!��"%�������������-������ ����
Mb-linux-*, ������������������ �0�'��� ����
�����1
����������������� ��� �����������������
������������ ������������� ������������ �����
����������������
������������� �������� �����������������������������
�������������������CONFIG_MMU
�������� ������)���
���-m�����������petalinux-new-platform����
�����������������
������������ ������������� ������������ �����
������������
F�-����� ��G
���� ���������
$99%:99H���"������
���/�I3����-������-��������������������
������ �
���������� ���� ��� �������-�� �������
,�!�(� � �������(�555�
���� ����3.�J��������������$9�� �������-�� �������������
3���������:99J
4� ������������������
����������$5$����%���
������������ ������������� ������������ �����
����$5E�%����������(��������������
!�����������0�����1�����
'�������� ����-������������ ��
. �������/�I3�-�����%�����������������
!�������������� �����������������
��+� �����������������
, ���� �������� ���
?@�������
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������&
'����� ����������������� �!��"������#(
������������ ������������� ������� ���� �� ����� �������������
)����� ������
������� � �� ����������������*�����
�����������������������������
������������������������ ������
�������������������
+�*���������������������������*�����
����������������� ���%��%,����������*��������� �!��"�,��
-�*���� ����������% ���������*��� ����
-�*���� ����� ���������*�
.����� �*� ���������������������� ���������*��*����������������
������������ ������������� ������� ���� �� ����� ������������
/�0 ����
)������������
!��� ������#(����*�����!���� ����!���������
��0�����*���� ������� �!��"�� ����
�� �!��"�� ��� ����������
( ������������ ��
)���������� ���� ����
!������������ �!��"�� ��������� �� ��*����!���� ����!����
,��������������� �!��"����������������
!��������������������������������� ���
������������ ������������� ������� ���� �� ����� ������������!
��������������)����.��*
1������2
������������ ������������� ������� ���� �� ����� ������������"
��������������)����.��*
)���������#��������(���3�#(4��� ����
������������ ���������XPS
��������� �����������BSB
,�����5'��������'����"��
�������� ����� ���� � XMD
�������� ���������� ���� � PlatGen
������� ���������� ���� � LibGen
������������������������6�SimGen
7+������*����������������
�� ����'�8�#�������'�8�#� ���������
������7�'����������� ����������������������#(������
'�������*������9��������������������������� � ����� ����������
������������ ������������� ������� ���� �� ����� ������������#
��������������)����.��*
������������ ���������������������� �� ������� ����
���$%�����&
������������ ������������� ������� ���� �� ����� ������������'
:�������������'�
�#(� ����������������������'�� ��
��*����$XILINX_EDK/hw/XilinxProcessorIP/pcores
��*������������0�������*�������������������
�� �!��"�,��
)��8�'������,������8���� �,������
!���������� ��
PLB�%������������% ������� 5����������
OPB�%�������� 5����������8���*��� ���4�
FSL�%���������.'./%��������� ���� ��� �����
���� ������-�
������������ ������������� ������� ���� �� ����� ������������(
)���� �!��"�,��
; ��� ��
����� �<$%����:'�,�3�����������'�������-���� ��������������#��4
<$���<$�����������������������
�����������;���
��������5���8����������8������� ����
���������.��8����
���������-��� ������
������8������� �"�8���������� ��8����������3���4
������������ ������������� ������� ���� �� ����� ������������)
)���� �!��"�,��
; ��� ���3 �������4
/���������������������"������ �������������� � ��
=>� ��������=>(� ��3.�7;������ �������4
/�����������*������
,���������������������*�����������
!������������*�� �������������
;����������
������������3<������������8�������4
������ ����������3?������������4�
������������ ������������� ������� ���� �� ����� ��������������
)���� �!��"�,���% �������� �����
��������%,���������������� ����������� ������������;��
; ����������� ��������������
,�������������������
�� �������������,�������
������ �����8��8��rd=op(ra,rb)
����������������� ������� ��� �
����,���
������
:@������ ���� ������������
������������ ������������� ������� ���� �� ����� ��������������
)���� �!��"�,���% �������� �����
�� �!��"����������� % ������ ��� ���������
������������� ���������������8��������
;���� � ��� �������� ��
,��� �������.�������3�������*���������4�
������������ ������������� ������� ���� �� ����� ��������������
������'��,���%���� �'���� �
)�������������� �,�������3���,4
�#:;�8�##:�����##:$
������A�����
,��� � �� ��� �
������ �������
�� ��-�� ��� �����
��������8�BBB
,������������������� �� ���
���������� �,�������3���C� �C� 4
�:;�����������.����
������>���������,��
������������ ������������� ������� ���� �� ����� �������������
������'��,���%� ����'������ ��
'������,�������3���C'+),4
������<$������� ������
�������������������������
����� �� �������@���
��������������3���C)'��:4
��5��*�����
������*�� ������
����%����8���%����8������������
��������������
���� �� ���� �� ������������������� ����
������������ ������������� ������� ���� �� ����� �������������!
������'��,���%'5/
7����������'/�3���C7�'/4������*�� �������������<$������� �
�%���������5������5������� �����
��������':D���� ������������
����������3���C��;,�')�4�3EEE4������&F5&FF�������;,�
)�%���������3��C)��;,4�3EEE4&F5&FF5&FFF�������;,
������ ��������� ����� � ���������� ��� �
��� �����'8�'$,8�BBB
������������ ������������� ������� ���� �� ����� �������������"
!���'������ ���%��!�����/�!
�� ������ ���!���3��!4
/�% ������� 5����������
<$5=>����������8�<$5=>5&$A����������3�����������5*��� ������4
+������������������� �!��"�� �����3������*�,����G���>5?%.����� �4
/�% �����������!���3/�!4
��*������� ���� 5����������
������� �������� ������ �!��"
��*����������3����� �������� ���4
������������ ������������� ������� ���� �� ����� �������������#
!���'������ ���%.��
.����������������3.��4<$%����*���.'./%�����������������
,����������.'./������3&��� ����<$(���4�
� � ������������� � �������������
�����3*��4����������3��4�����
#� �� ��� ���������� �!��"�,��������&=�����5�������������
������ ���������5����.�����������������
/����������� ������������
7������������������������ ������#��8�G���8BBB
.��%�������������� ����� �� ���
,������� � ��� ������ ������
������������ ������������� ������� ���� �� ����� �������������'
;�) �� ����� �!��"�� ���
1������2
������������ ������������� ������� ���� �� ����� �������������(
!���� ����!����
�#(���"�������������������� ���� ������������� �����������������
�������������������������8������������������
������� ���������������������
,��������������� ��� ������������%����'/
7�'/������#5�*�� ��
����
��� �3�#:;�8�##:8�.����8��:;�4
� ���;,�8�BBB
������������ ������������� ������� ���� �� ����� �������������)
!���� ����!����
;���%��������������� ���������
�������
7������������*���������.����������������������*������������ ���!�!��������������8��������!�!
������������ ������������� ������� ���� �� ����� ��������������
!���� ����!����
������������ ������������� ������� ���� �� ����� ��������������
!�!�����������������
!�!����� ���H?I�������*� �����������% ������� ���
;��*��*����@��������%!�!;����������������
,����������,��
�� ������������������%������!��
;��������%���������� �������������#(���0 �
������ ��0�� �����*�������������������petalinux-new-platform
petalinux-copy-autoconfig
��*����������%� �� ��!�!�%J����������������������
�
������������ ������������� ������� ���� �� ����� ��������������
.����:��� �
��������#(��� ���������
�������:�� �#����������;���� ������+���
������������ ������������� ������� ���� �� ����� �������������
����$B&�%�!���� ����!���������������!��������� �� �
,������!�!����*����������<��&=FF�����
�������#(� ����������'�
;������������!���������
,������*�����������������
!��������-�
!��������������� ���
!���K!���" �# ����� ��� ��$� � ���� �� �% �� �� ���� ������ �&� ��� ������ �# ����� &��� ��� ������ �'��� �&� ��� �������
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������$
&������'��(��#������������)���� ���
������������ ������������� ������� ������������� �� �� ��! �"��� ��
*�+ ����
,������������� ��������� ������������������������������� ���������(�
��!�����-�������� ��� ���
�#.�/&��0)�����������/���"��
�#.������������ ���� �������� ��
)��&�����������������!���-�� �������������1!-�2
,���������� ���� ����,��&��0)��������������"��������!�����-��� ��
&���1�� �� 2��������� ������������
3������������� �����������������'�
������������ ������������� ������� ������������� �� �� ��! �"��� �#
&������'��(�
,�������(� � ��������������-�43
, �� ��� ������ �����%������
����������������%��
��%������ �����
������)*������ �
��������� ���� ������������
56����������
577���������� ������
,�������������� �����
#��������� ��� �������������������������������� �������
������������ ������������� ������� ������������� �� �� ��! �"��� �$
&������'��(�%&���������� ����
��� ��������� � �����
���%����������
���� ��������
������������������)*���� ������ � �����
���%����������
����(������������
� ���� ������-�43����������� �/ ����������/���������� ���
�� �!��"0�����������������������0 �����������
������������ ������������� ������� ������������� �� �� ��! �"��� �%
!���������� ���%-���������!�������
-������� ������8���������-)-*� ��� ����
�� ��&��� ��� ����
4������� ��� ���%� ������� ������
'��������(����� ���������� ���
&������������������
&'��� �(
������������ ������������� ������� ������������� �� �� ��! �"��� �)
!���)������ ���%�-��
-����������� ����� �� ���
�� ����������� ����
���)*
�� �����&��
�� (��
������������ ������������� ������� ������������� �� �� ��! �"��� �*
!���)������ ���%-��
-�����������������&��%&������ ��� �
������������ ������������� ������� ������������� �� �� ��! �"��� �+
!���)������ ���%-��
�#.�/&��0)�����������/���"��� ��������-������ ��������
&����)�� ������9������������&��8�����������5��������1�������2
:�� ������������������� ��� �������-�������� �
����� ���� ��� ������ �������� ������
��������� ������������� �-������ ����
open()/read()/write()/ioctl()� �����
�� /dev/fslN
������������ ������������� ������� ������������� �� �� ��! �"��� �,
!���)������ ���%��!
��!��������������� �������&����������������� ��� �
4������ ������ �������� � ������8������������������
������;��8���������������
�������� �� ����;��8������
���������8����������%����� 8�������������
<$%���������8�<$%06=%05$>%���������
�������8�������������������1����� �2�
������������8�������%������������
������������ ������������� ������� ������������� �� �� ��! �"��� ���
!���)������ ���%��!
��������� � ����������� ������� ��� �����
����������������� ����������������������������
!�������0����8�#�3� �������
!������������������ �����������
&��0)��������������"�������(���� ��������� ������������
4�������������������� �������!�?���� ���������������������������
��(���� ������ ���������!�����������������@
������������ ������������� ������� ������������� �� �� ��! �"��� ���
!���)������ ���%��!
��!��������� ������������ �������)0*������ �
������������ ������������� ������� ������������� �� �� ��! �"��� ���
!���)������ ���%��!
�� �!��"�0������������ �����0��������������
������������ ������������� ������� ������������� �� �� ��! �"��� ��#
������������������� �����
A ������������� ������������������
'�(������������ �������������B
9��������� �
���������������(%������������ ��
!������������������ ����%���� �����
�������8�(���8��������������8�@@@
�#.��������������������������� �!��"�� ���
&���C������C��������
-����� ���������������� ����(�
������������ ������������� ������� ������������� �� �� ��! �"��� ��$
������������������� �����
!���-�� �������������1!-�2
,�����������)!��1&�&��� �2
!-�����������(������������� ��
����������� ����%����� ������
*�� ������������������������������������������
�
write_word(IER_REG, 0x00000003)read_word(IER_REG, 0x00000003)write_word(GIE_REG, 0x80000000)read_word(GIE_REG, 0x80000000)assign -- Request VHDL to generate input read_word(DATA, 0x00000001) -- verify dataread_word(ISR_REG, 0x00000001) -- verify interruptwrite_word(ISR_REG, 0x00000001) -- reset interrupt
������������ ������������� ������� ������������� �� �� ��! �"��� ��%
-����;��� �
-���������!����������
!-��%��������3���9���D56http://www.xilinx.com/support/documentation/application_notes/xapp516.pdf
������������ ������������� ������� ������������� �� �� ��! �"��� ��)
���$@$���� ������������� ��
,(�� ��� �E
����$@$��F���!���������� ���
����$@$��F�-������������ ���
)�� ����������8� ��� ����������
������������ ������������� ������� ������������� �� �� ��! �"��� ��*
����$@$��%���� ������������� �� �-���.��/0
&����������� ������)�� �
����� ���������� ������
)���� �������!
3�������� �!��"�� �����������#.
&��� �������#������������
;���������(�
������������ ��� ����#����1��#2���������� ������(�� ����� ��
&�������������������(%������
=7�������
������������ ������������� ������� ������������� �� �� ��! �"��� ��+
����$@$��%���� ������������� �� �-�12���/0
&����������� ������)�� �
����� ���������� ������
)���� �����-��
3�������� �!��"�� �����������#.
&��� �������#������������
;���������(�
&�������������������(%������
=7�������
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������&
'�#�� �#���������(��)�
������������ ������������� ������������������ �� �����������
*�+ ����
,������������
��� ����������������-���������!��������
��)���� ����������� ��� ����� ��������������� ������
,���������� ���� ����
.�������������!���� ����
.������ ������)������������������� �-������
������������ ������������� ������������������ �� �����������
,)����� ������������
��!������
������ ��� �%������� ����
�)����������������
�������������/drivers/misc/ppwm_adapter.c0
�������������� �����������/arch/microblaze/platform/common/
petalogix_pwm.c0
-��������
��������������� �-�������/drivers/misc/fslfifo0
.����� ������� � ������������������
������������ ������������� ������������������ �� �����������
,������#���%���!������
����� ����������� ������1
����2����������� �����
(�)����)�)����������� ��)������1
��������� ��1
!�� ������1
�� �������1
���������������� �2������1
*��3% ����������4�� �
.��� �������� ������)��
����� �������� ��� ������
�� ��� ��� 5�������������������� ��������� ����
������������ ������������� ������������������ �� ����������
,����������%*����� ���� �
6���������� ���������������� ������� )����
7�������������������������
����������� ��struct miscdevice {...};
misc_register() / misc_deregister()
������������� �����8�����
��+�������9:
������������� open()/read()/write()/ioctl()/close()
������������ ������������� ������������������ �� ����������!
,����������%���!�����������
���������)���������)� ���������������������
ioctl()
����� ���������������������� ��� ���������� �������������������;��� �� ������������������ ;
write()
������������ ����������������������� ������
read()
<���� ����������������� ������;
�����������8 ��������������
open()/release()
������������ ������������� ������������������ �� ����������"
,����������%-��������
��������� ������������� �-������ ����
drivers/misc/fslfifo/
��������������� ��� ����� ������ ������ �-��% ��� ������
' ������������ �����/dev/fslfifoN (N=0..7)
��� �)� ��������/������0�-��% ��� ������ ����������
���������� ������������5���������������� ������
������������ ������������� ������������������ �� ����������#
,������#���%������ �� ��
��!�������/������write()0�
-���������
unsigned values[4]={0,64,128,255};fd=open("/dev/plb_pwm",O_RDWR);write(fd,values,4*sizeof(unsigned));
unsigned char values[4]={0,64,128,255};fd=open("/dev/fslfifo0",O_RDWR);write(fd,values,sizeof(unsigned));
������������ ������������� ������������������ �� ����������$
����$;&�%�.������#���#�������
,)��������
����$;&��=���!
����$;&��=�-��
��������������� ���������������� ��� � ��������������$;$
������������ ������������� ������������������ �� ������������
����$;&��%�.������#���#�������%���!�#��
.������ ����������!������
.�������� ������ ���������� �����!������
�
�&:��������
������������ ������������� ������������������ �� ������������
����$;&��%�.������#���#�������%�-���#��
.��������������������������� �-��-4-*����
.�������� ������ ���������� ���-��������
&:��������
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������&
'��(�����������!��
������������ ������������� �������� ������������ ��
'�) ����
*������������
��+��������� ������opencores.org
���� ���������!����������� ��
�������� �������������������!��� �������� �!��"���) ��
+�����������plb_2_wb������ �
*���������� ���� ����
�������������'��(���,�� ��������� �!��"�� ���
������������ ������������� �������� ������������ �
-��������'��(��.��
-������
('/#,(
#(*
0�0����������
(������ ������
!��*�����!������
�����
����1���,1�,$(1�...
( ���
-��1�#��1��2-3
(���
(��������4561�56731��� �!��"1�-8/1�...
9'��9������ ���
'��
��� ������ �
8���� �������
/������:����;����
!��������
������������ ������������� �������� ������������ ��
*������!���!��
!��� ��� ��� ������
5%<&�������������
0$%<&��������������
� � �������=������!>
���������������������������� �����
������ ���������������!
�����������1������������?+��� �������
�� �+�����+������@
-��������� ���� ������'��(��.��
������������ ������������� �������� ������������ �!
*������!���!��������#A
2�+���� ��� ������!���������������� �!��"�� ����@
������plbv46_to_wishbone����������
'��(��.��
��!���������������!��
��������� �������� 1��������
�������� ��������
�#A��������������,�� �������B���
-���plbv46_to_wb������ �!��"�� ���
���� �����+������� ������#A
(��� ���������������������������2�����
������������ ������������� �������� ������������ �"
�����������!��� �������#A
���'��(����simple_gpio�������
�����
#�+��������� �
* �� ��� ����������������=.�>���82#��=.���>�����
/�������#A�(��?,������������+�"��
,�������������������
�� ���������������������= ������) �1��� �����edk_user_repository>
:����������� ������������2#������=.�.�simple_gpio>
�� ������2#�������������������
������������ ������������� �������� ������������ �#
�����������!��� �������#A
/�������#A�(��?,������������+�"���= �������>
��������������� �������� ����
�#A�����������+�����������!��
����!���������������������������� �����
(�������������%����2#��������#
.�.����simple_gpio
plbv46_2_wb �����������0$%���������?��������
simple_gpio���������������3%���������1�5�����
���������
����� ����%���1��
����������+������
������������ ������������� �������� ������������ �$
-����������!��� �������#A���) �
-������plbv46_2_wb� �
(��� ������������!����
(���������������������!�������=�>� ��� �������������
-������simple_gpio
(��� ������!������������������plbv46_2_wb�����
(��� ���������������������
������������ ������������� �������� ������������ �%
-����������!��� �������#A���) �
���� ������ �������
����&��'
�(��)��
*����
���
����&��'
����� ��&�+���,�(�
����� ���-� .����������
��� ���������+
������������ ������������� �������� ������������ ���
���������� ������
C������+���� ����� ���
B����� ����� ��������� �����
.�.�+�����������������������plbv46_2_wb�����
��������� ����� ���������������
�� ���������� ������� ����
;������������������������������) ��
�������������������������B���
���������� ����������������������
������% ������plbv46_2_wb�+��������
���wb_2_plbv461�����������������������
������������ ������������� �������� ������������ ���
���������� ������
�� ������������+� �� ��
����� �������
;��
��� � ��� ��������������������� ������������������
��������� ������������������������ ?��������
������������ ��������D����� �������E�����������
�;���=����;��>� ��������
!�#
���� %��� �����'A
�������� �� ������������� ���+����
������������ ������������� �������� ������������ ���
/��� �
'��(��.��
www.opencores.org
����!���!����������
http://www.opencores.org/projects.cgi/web/wishbone/wbspec_b3.pdf
������������ ������������� �������� ������������ ��
����$.&
!�+����� � ���������� ������plbv46_2_wb����������'��(���simple_gpio
-���������������� �!��"���) �
!���������������������+%�������+�������������
&7�������
�������������� ������������������
���������������������
������������������������� �!��"
#� �$�%��������&
'���������(�������)
������������ ������������� ����� �������������������
*�+ ����
,�
��� ��������������������)�������)���� �����������
-��)����)���������� ���
������������ ������������� ����� ������������������
�����������./���� ��
0�)� ������/�'1�2������������������� ����� ����.
/�'1������ ����� ����������� ���� ���� ����
������� ����3�������4�����������������
5���(������% ��������������������������� ���������6�5�� ���
!��� ��������� ���������������
� ���%��%5���������
*�������� ����
�������6�-,*�
������������ ������������� ����� ������������������!
�����������./���� ��
���������+ ��
�������� ������ �����
� ���%��%5���������6� ��� ��
0��)��6�7�� �������
*�������� ����
1���� ��������������
��������������������(��������� ���������� ���������)������8�� ��
�����������������7��������������� ����� ��������
5 ������� (�������� �����(�999
������������ ������������� ����� �������������������
�����������./���� ��
- ����������5��������
*�������� ��������-5
!*-�0�:!�� ;
0,�����:��<�����;
������� ��������� ������� �
!�� �����������������=!��$>�6�-1���:!�� ;
� ���%��%5���
1� ���� �������� �����
5�����������������������/�'1%�������� �
������������ ������������� ����� ������������������"
�����������./���� ��
������+ �������,��������� ����3��������6�7,?��
-�5�4�- ����������� ������5��������
��� �����/�'1���������������������������
��������57��� �����
��7���������� ������������
'������� �����������)�������
����)���� �������������������)�������
# ���� � �����������
# ���� ��� ��� ��������������)������� ��
������������ ������������� ����� ������������������#
��������-��)
5�������������������������5�� ���
!��� �����)������)������������
!������������ �������������
5������������������������ ������
#�� ����������������
!��� ���������������������
������ ����������������������
������������ ������������� ����� ������������������$
��������-��)
,����)���+���������������
7��������)�����������(�����8����)��������������� ������ ���������������������������� ���� ����)���� ��������� ����������
1���������)������������������� ������������������� ����� ����������� �
�������������� ����������� ��������������� �����
<�������� ��)�����������������������)��������
������������ ������������� ����� �������������������
/�����������
/��� ������������ ����� ��
���������������� ���������������� ��� ��
,����������������������(� ��� �������)�������������������������
������������������(� �����������!�����
,����� ��@