Size: px
Start display at page:

Download ""

Transcription

1 Linux/uClinux + MiniGUI:

2

3 MiniGUI MiniGUI-STR Linux/uClinux+MiniGUI Linux/uClinux MiniGUI Linux/uClinux Linux/uClinux SkyEye Xcopilot Linux uclinux GNU Linux/uClinux / Linux/uClinux MiniGUI MiniGUI-STR PC SkyEye Xcopilot MiniGUI MiniGUI-STR ARM3000 HH2410R3 MiniGUI MiniGUI MiniGUI MiniGUI V1.6 MiniGUI V1.6 I

4 MiniGUI V1.6 MiniGUI MiniGUI MiniGUI-Lite IAL MiniGUI API Reference Manual V1.6 MiniGUI API MiniGUI-STR MiniGUI Linux uclinux MiniGUI MiniGUI MiniGUI II

5 Linux/uClinux + MiniGUI 1.1 (C) 2005 III

6 ... I... III Linux PC Linux/uClinux MiniGUI MiniGUI MiniGUI MiniGUI Linux/uClinux Linux/uClinux Linux Linux IV

7 GNU Linux V

8 NFS CRAMFS JFFS ROMFS RAM disk SkyEye ARM Linux SkyEye Xcopilot uclinux Xcopilot uclinux Hello, world Makefile make makefile Makefile uclinux-dist C C Linux/uClinux MiniGUI VI

9 4.1 MiniGUI Windows MiniGUI Windows MiniGUI Linux PC MiniGUI-STR MiniGUI-STR MiniGUI-STR MiniGUI PC MiniGUI-STR SkyEye EP7312 MiniGUI SkyEye EP7312 MiniGUI SkyEye EP7312 MiniGUI-STR SkyEye EP7312 MiniGUI Xcopilot MiniGUI uclibc Xcopilot MiniGUI Xcopilot MiniGUI-STR Xcopilot MiniGUI MiniGUI Linux/uClinux ARM VII

10 MiniGUI ARM HH2410R MiniGUI HH2410R VIII

11 A MiniGUI-STR MiniGUI-VAR A.1 MiniGUI-STR A.2 MiniGUI-STR B MiniGUI-STR B.1 MiniGUI-STR B B.1.2 MiniGUI-STR B.1.3 MiniGUI-STR B.2 MiniGUI-STR MiniGUI.cfg B.2.1 system B.2.2 fbcon qvfb B.2.3 systemfont B.2.4 rawbitmapfonts varbitmapfonts A.2.5 mouse event B.2.6 cursorinfo iconinfo bitmapinfo B.2.7 bgpicture B.2.8 mainwinmetrics windowelementcolors B.2.9 imeinfo B C MiniGUI C C C.3 GNU IX

12

13 PDA Linux uclinux Linux/uClinux WAP 3G GUI J2ME 3D MiniGUI MiniGUI UT TCL MiniGUI MiniGUI MiniGUI Linux/uClinux MiniGUI 1

14 MiniGUI Linux/uClinux Linux Linux Linux/uClinux MiniGUI Linux/uClinux Linux/uClinux Linux C 2

15 1 Linux/uClinux MiniGUI 2 Linux/uClinux SkyEye Xcopilot Linux uclinux GNU 3 Linux/uClinux / 4 Linux/uClinux MiniGUI MiniGUI PC SkyEye Xcopilot 5 MiniGUI Linux/uClinux MiniGUI ARM3000 HH2410R3 MiniGUI-STR MiniGUI-VAR MiniGUI-STR MiniGUI MiniGUI minigui/ MiniGUI-STR libminigui-str tar.gz minigui-res-str-1.6.tar.gz mg-samples-str tar.gz mde-str tar.gz MiniGUI mgdemo tar.gz qvfb-1.0.tar.gz MiniGUI Linux PC Windows skyeye/ SkyEye V0.8.6 xcopilot/ Xcopilot armlinux/ ARM Linux SkyEye EP7312 uclinux/ uclinux-dist Xcopilot m68k-elf 3

16 samples/ 3 cal docs/ MiniGUI PDF Linux PC III CPU 256MB 15GB USB/PS2 PS2 VESA2 1024x Red Hat Linux 9 /usr 5GB RedHat Linux Fedora Fedora /usr /usr/local /home /var /opt /usr/local /opt 3GB #include <stdio.h> int main (void) { return 0; } 4

17 Linux <Ctrl+C> GPL MiniGUI-STR 1.6.x MiniGUI-STR italic URL bold italic constant width Linux Shell Bash Shell root root# user$ user$ make user$ su root# make install <> user$ cd <path to libminigui-str-1.6.2> \ CFLAGS=-m mid-shared-library -mshared-library-id=0 -Os -Wall -g -fomit-frame-pointer \ -I$(UCLINUX_DIR)/lib/uClibc/include PC 5

18 Linux/MiniGUI MiniGUI 12 D / / info@minigui.com 6

19 real-time embedded operating system RTOS UNIX RTOS RTOS C C ISO C ANSI C C RTOS + ANSI C ANIS C I/O ANSI C malloc/free RTOS RTOS psos psos 7

20 TCP/IP pna prpc phile ANSI C prepc probe pmont RTOS 1-1 RTOS Real-Time Applications Networking Module File System Module Graphics Module RTOS Core Device Drivers ANSI C Library CPU, Devices RTOS VxWorks 1 psos 2 Nucleus 3 WinCE 4 RTOS VxWorks psos Nucleus WinCE Linux/uClinux 5 ecos 6 Linux/uClinux Linux Linux Linux 1 VxWorks WindRiver 2 psos Integrated Systems Inc Linux uclinux

21 uclinux Linux MMU CPU uclinux Linux 32 ecos RTOS Linux/uClinux TCP/IP POSIX ecos uc/os-ii 7 ThreadX 8 uc/os-ii ThreadX RTOS uc/os-ii CPU ThreadX RTOS ThreadX VxWorks psos VxWorks psos Hopen Delta Linux

22 Linux/uClinux Linux/uClinux Linux/uClinux Linux Linux Linux PC Linux PC Linux CPU Linux Linux Linux 32 CPU MMU CPU CPU Linux Linux uclinux uclinux Linux 32 CPU Linux/uClinux 32 10

23 Linux/uClinux 32 x Compaq Alpha AXP Sun SPARC UltraSPARC Motorola PowerPC PowerPC64 ARM Hitachi SuperH IBM S/390 MIPS HP PA-RISC Intel IA-64 DEC VAX AMD x86-64 AXIS CRIS Renesas M32R ARM ARM ARM ARM ARM ARM S3C44B0 S3C2410 S3C4410 CirrusLogic EP7312 Atmel AT91 Linux/uClinux Linux/uClinux PC Linux/uClinux 1.1 task C Linux/uClinux Linux/uClinux C C I/O 11

24 Linux/uClinux PC Linux/uClinux Linux/uClinux Linux PC Linux/uClinux Linux/uClinux 1.1 MiniGUI Linux/uClinux MiniGUI MiniGUI ) LCD 12

25 2) GUI uc/os-ii uc/gui Nucleus GRAFIX VxWorks WindML GUI 3) GUI Linux MicroWindows OpenGUI picogui GUI 4) GUI TrollTech Qt/Embedded MiniGUI GNU GPL GUI Qt/Embedded Linux uclinux 16MB 64MB MiniGUI 9 MiniGUI 10 MiniGUI 1999 GPL

26 MiniGUI Linux/uClinux ecos uc/os-ii VxWorks psos ThreadX Win32 Intel x86 ARM ARM7/AMR9/StrongARM/xScale PowerPC MIPS M68K DragonBall/ColdFire MiniGUI MiniGUI 1998 MiniGUI MiniGUI Linux MiniGUI MiniGUI MiniGUI HappyLinux 1.0 MiniGUI MiniGUI MiniGUI MiniGUI MiniGUI MiniGUI MiniGUI uclinux ecos MiniGUI MiniGUI Linux/uClinux ecos uc/os-ii VxWorks psos ThreadX Win MiniGUI MiniGUI 14

27 MiniGUI MiniGUI 1-2 MiniGUI ANSI C MiniGUI API MiniGUI FrameWork, MMI, Key Applications MiniGUI Portable Layer ANSI C Library Device Drivers Linux/uClinux, VxWorks, ThreadX, ecos, uc/os-ii,... ix86, ARM, MIPS, PowerPC, M68K 1-2 MiniGUI MiniGUI MiniGUI Linux UNIX uclinux uc/os-ii ecos VxWorks MMU CPU GUI MiniGUI MiniGUI-Threads MiniGUI-Threads uc/os-ii ecos VxWorks psos Linux uclinux MiniGUI MiniGUI-Threads MiniGUI-Lite MiniGUI-Threads MiniGUI-Lite 15

28 MiniGUI-Lite UNIX Linux MiniGUI-Standalone MiniGUI uclinux MiniGUI-Standalone MiniGUI-Standalone DOS MiniGUI-Threads UNIX MiniGUI-Lite UNIX MiniGUI Linux/uClinux Linux/uClinux 16

29 3. Linux/uClinux PC PC PC PC Linux/uClinux Windows Windows 17

30 Windows PC PC cross-compiler host target C C C C toolchain helloworld #include <stdio.h> int main (void) { printf ( Hello, world\n ); return 0; } Linux PC user$ gcc o helloworld helloworld.c gcc C #include 18

31 <stdio.h> /usr/include /usr/local/include stdio.h gcc helloworld gcc ld /lib C libc.so Linux PC ARM user$ arm-linux-gcc o helloworld helloworld.c arm-linux-gcc ARM PC #include <stdio.h> stdio.h libc.so arm /usr/local/arm-linux/bin/ /usr/local/arm-linux/arm-linux/include/ /usr/local/arm-linux/arm-linux/lib/ PATH user$ export PATH=:/usr/local/arm-linux/bin:$PATH Shell arm-linux-gcc uclinux uclibc I -L Linux/uClinux Linux 19

32 Linux uclinux Linux/uClinux C UNIX PC Linux/uClinux 1. Linux PC 2. PC PC 3. 20

33 PC Linux/uClinux PC uclinux uclinux uclinux fork fork uclinux uclinux user$ ls more uclinux uc-libc uclibc uclinux setitimer SIGALARM uclibc POSIX Threads 3 Linux/uClinux Linux/uClinux MiniGUI Linux/uClinux 2 SkyEye Xcopilot 21

34 Linux uclinux GNU 22

35 2 Linux/uClinux Linux/uClinux Linux/uClinux Linux SkyEye EP7312 Xcopilot Linux/uClinux Linux UNIX Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux MontaVista HardHat Linux Linux 23

36 Linux Linux Linux Linux RTOS image Flash RTOS Linux RTOS Linux Linux 2-1 Linux Linux Linux 2-1 Linux 24

37 2.1.2 Linux Linus Torvalds Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux 25

38 VFS RTOS Linux OS Linux C C Linux Linux RTOS Linux root filesystem UNIX 26

39 init Linux RAM Linux RTOS Linux API API Linux GNU C glibc Linux Linux uclinux glibc uclibc C Linux Linux RAM Linux RTOS RTOS Linux 27

40 Linux Linux RTOS Linux Linux Linux bootloader MiniGUI PC MiniGUI MiniGUI Linux PC 1) 28

41 Linux Linux UNIX Windows Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux PC Linux Linux UNIX Solaris Linux UNIX Linux UNIX Linux Solaris Solaris Solaris Linux Windows UNIX Cygwin Cygwin UNIX Linux Linux Cygwin arm-linux arm-elf Cygwin 2) / / / 29

42 minicom Linux HyperTerminal Windows console 2-3 Bootloader minicom 2-3 NFS NFS TFTP Trivial File Transfer Protocol DOC DOM CompactFlash ROM 30

43 2-4 Bootloader 2-4 M-System DOC ISA DOC ISA ISA DOC Linux DOC M-System DOC DOS/Windows Windows native toolchain

44 Flash DOC x86 Linux PC Linux RedHat GNU Linux GNU GNU GCC Glibc Binutils GDB 1) GCC GCC GNU Compiler Collection x86 ARM MIPS PowerPC C C++ Java ADA Fortran Pascal GCC gcc [ option filenames ]... g++ [ option filenames ]... gcc C g++ C++ option GCC filenames GCC GCC GCC cpp GCC ld 32

45 GCC.c C.C C++.cc C++.cxx C++.h.s.S.o.a 2) C C Linux Linux uclinux C C Glibc 11 Linux C uclibc 12 uclinux C Linux newlib 13 uclibc RedHat 3) Binutils Binutils as GNU assembler ld GNU linker ar archive / nm objcopy

46 objdump ranlib readelf ELF size section strip GNU Linux Linux minicom minicom minicom s Configuration Serial port setup

47 2-6 minicom Change which setting? Save setup as dfl A-Serial Device /dev/ttys0 /dev/ttys1 E-Bps/Par/Bits N F-Hardware Flow Control No G-Software Flow Control No Shell minicom minicom minicom CTRL-A < > CTRL-A Q minicom 35

48 CTRL-A S CTRL-A R CTRL-A C CTRL-A Z minicom Linux Linux bootloader kernel init CPU C PC LILO GRUB init init init init Linux 36

49 ROM ROM CPU memory map ROM Linux TFTP RAM start_kernel NFS init init init /etc/inittab init /etc/rc.d/rcs init LILO 14 GRUB 15 x86 Blob 16 LART Blob ARM TFTP U-Boot 17 PowerPC ARM RedBoot 18 RedHat ecos RedBoot

50 2.3.3 Flash Flash Flash x86 1 Flash NFS 2 TFTP NFS Linux 38

51 Linux Linux Linux Linux Linus Torvalds Linux x86 ARM MIPS ARM MIPS PowerPC M68k ) make *config make config make menuconfig curses 2-8 make xconfig TK X Window make oldconfig make config 39

52 2-8 make menuconfig make menuconfig.config.config make menuconfig.config make menuconfig make menuconfig ARM Linux user$ make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig ARCH CROSS_COMPILE Makefile Makefile ARCH := arm 40

53 CROSS_COMPILE=arm-linux- Makefile CROSS_COMPILE gcc arm-linux-gcc CROSS_COMPILE arm-linux- 2) Linux Code maturity level options Loadable module support General setup Memory technology devices Block devices Network device support Character devices Filesystems Console drivers 3) user$ make dep C Makefile make menuconfig 41

54 make dep 2.6 make dep make zimage make bzimage make vmlinux user$ make zimage zimage gzip zimage bzimage big zimage gzip vmlinux vmlinux make zimage zimage vmlinux x86 zimage bzimage zimage 512KB bzimage x86 bzimage zimage vmlinux bzimage Makefile bzimage zimage arch/${arch}/boot ARM arch/arm/boot user$ make modules make clean make distclean 42

55 UNIX Linux RTOS Linux Linux Linux Linux / bin sbin boot etc lib usr home root root dev opt mnt var lock log 43

56 proc tmp Linux /bin /sbin /etc /lib /dev /usr /var /proc Linux /bin /etc /lib /dev /var uclinux Linux lib*.a lib*.so Linux glibc libc so libc.so.6 C ld-linux.so Linux C C C malloc free Linux Linux C GNU C Glibc Linux 44

57 Linux Glibc Glibc Linux Glibc ld-linux libc C libm libdl libcrypt libpthread POSIX /lib d a cp user$ cp a lib*.so* ${ROOTFS}/lib/ strip ARM strip user$ arm-linux-strip ${ROOTFS}/lib/*.so uclibc Glibc Glibc libc ld-linux libdl libm libcrypt libpthread Glibc /boot ${ROOTFS}/lib/modules ${ROOTFS}/etc modules.conf 45

58 2.5.4 Linux /dev Linux /dev Linux mem null zero random tty0 ttys0 tty tty console fb0 Framebuffer /dev rcs mknod mknod user$ cd ${ROOTFS}/dev user$ su Password: root# mknod m 666 null c 1 3 mknod mknod -m 666 null 46

59 c 1 3 Documentation/devices.txt /dev ${ROOTFS}/dev cp -a cp user$ cp a /dev/zero ${ROOFS}/dev/ rcs mknod JFFS2 CRAMFS UNIX Linux Linux Linux BusyBox Linux BusyBox Linux BusyBox ls cp mkdir init ifconfig cat rm mount BusyBox 47

60 BusyBox BusyBox C glibc uclibc C Linux init init init init init= init /sbin/init /etc/init /bin/init /bin/sh init UNIX System V init Linux init Linux init System V init init BusyBox init init 1) System V init Linux init Miquel van Soorenburg System V init init halt runlevel shutdown mesg ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/ init System V init init init /etc/inittab /etc/rc.d/ /etc/inittab /etc/rc.d/ 48

61 2-1 init System V init NFS X init X Linux 5 1 2) BusyBox init BusyBox init init BusyBox init Linux init System V init BusyBox init BusyBox init runlevel Linux BusyBox init /sbin/init busybox /bin/busybox BusyBox BusyBox init init BusyBox init init 49

62 /etc/inittab /etc/init.d/rcs inittab action wait inittab action once inittab action respawn inittab action askfirst BusyBox /etc/inittab BusyBox inittab inittab init action action /dev/tty1 /dev/tty4 BusyBox init /etc/inittab BusyBox inittab System V init inittab BusyBox inittab inittab id:runlevel:action:process System V init id id process shell Shell BusyBox sh BusyBox init runlevel process action process BusyBox inittab Action sysinit respawn askfirst wait once ctrlaltdel respawn Ctrl+Alt+Del 50

63 shutdown restart init init inittab ::sysinit:/etc/init.d/rcs ::respawn:/sbin/getty ttys0 ::restart:/sbin/init ::shutdown:/bin/umount -a r inittab init a) /etc/init.d/rcs b) c) /sbin/init init d) init id init #!/bin/sh # Remount the root filesystem in read-write mount -n -o remount,rw / # Mount /proc filesystem mount /proc # Start the network interface /sbin/ifconfig eth /etc/fstab fstab # /etc/fstab # device directory type options # /dev/nfs / nfs defaults none /proc proc defaults 51

64 NFS 3) init System V init BusyBox init init init init fork init init Linux CRAMFS TMPFS RAM disk /var/tmp /tmp /var/tmp RAM Linux Linux 52

65 CPU MMU 4MB ROM RAM CPU 8-16MB CPU 32MB uclinux Linux ROM EEPROM Linux Flash 1) Flash Flash Flash EEPROM Flash Flash NOR NAND Intel 1988 NOR Flash XIP Flash RAM NOR RAM NOR Flash CPU NOR 1-4MB NOR 0 NAND NAND NOR NAND NAND 512 NAND Flash NOR Flash KB 64MB 53

66 NAND Flash 8MB 128MB NAND Flash DiskOnChip 1024MB NAND Flash 100 NOR Flash 10 NAND NOR NOR NAND NOR NAND NAND NOR NAND NOR XIP NOR NAND Flash NOR ROM NAND 2) MTD Linux MTD memory technology device ROM RAM Flash M-System DOC DiskOnChip Linux MTD MTD MTD MTD MTD MTD MTD MTD 2-9 JFFS2 NFTL NAND Flash DOC RAM 54

67 2-9 MTD MTD add_mtd_device() mtd_info MTD mtd_info MTD Linux MTD DOC DOC NAND Flash Common Flash Interface (CFI) RAM ROM DOC NAND Flash M-System Linux DOC1000 DOC2000 DOC Millennium DOC MTD RAM ROM MTD MTD MTD MTD MTD MTD MTD MTD MTD Linux 2-3 CRAMFS No No No Yes Flash JFFS2 Yes Yes Yes Yes Flash Ext2 over NFTL Yes Yes No No Flash Ext3 over NFTL Yes Yes Yes No Flash Ext2 over RAM disk Yes No No No RAM 55

68 Flash RAM CPU RAM disk (initrd) RAM disk Flash RAM RAM disk NFS Linux NFS NFS NFS NFS NFS 56

69 1) NFS NFS Linux NFS Linux NFS NFS RedHat 9.0 setup System Services nfs NFS root#/etc/init.d/portmap start root#/etc/init.d/nfs start NFS /etc/exports IP /tftpboot/rootfs *(rw,no_root_squash) /tftpboot/rootfs * IP IP rw no_root_squash root /etc/exports NFS root#/etc/init.d/nfs restart NFS 2) NFS NFS NFS file system support Root file system on NFS Root file system on NFS 57

70 root=/dev/nfs NFS /dev/nfs Root file system on NFS nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>] nfsroot /tftpboot/%s <server-ip> NFS IP ip <root-dir> NFS %s IP <nfs-options> NFS ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf> IP IP ip RARP BOOTP <client-ip> IP RARP BOOTP <server-ip> NFS BOOTP <gw-ip> NFS BOOTP <netmask> <hostname> BOOTP <device> <autconf> 58

71 2.6.4 CRAMFS CRAMFS Linus Torvalds 16MB 256MB UID 8 GID UNIX 00:00:00 GMT, January 1, PAGE_CACHE_SIZE 4096 endian 1 CRAMFS CRAMFS Flash Flash RAM CRAMFS mkcramfs cramfsck mkcramfs Linux scripts/cramfs user$ cd ${KERNELDIR}/scripts/cramfs user$ make mkcramfs cramfsck CRAMFS ${ROOTFS} user$ mkcramfs ${ROOTFS}/ cramfs.img 59

72 50% CRAMFS root# mount o loop cramfs.img /mnt/cramfs /mnt/cramfs CRAMFS /mnt/cramfs CRAMFS CRAMFS Ext2 CRAMFS Flash JFFS2 JFFS Axis Flash Flash RedHat David WoodHouse JFFS JFFS2 JFFS2 Flash JFFS2 JFFS2 MTD MTD ROMFS ROMFS uclinux ROMFS uclinux Flash XIP RAM ROMFS Linux ecos Linux ROMFS 60

73 CRAMFS ROMFS ROMFS ROMFS genromfs RAM disk RAM disk Linux RAM RAM disk RAM disk RAM disk RAM disk RAM disk RAM disk CONFIG_BLK_DEV_RAM CONFIG_BLK_DEV_RAM_SIZE CONFIG_BLK_DEV_INITRD RAM disk RAM disk initrd Initial RAM disk ext2 CONFIG_EXT2_FS 1) RAM disk RAM disk Linux RAM disk initrd RAM disk initrd Initial RAM disk RAM disk initrd Linux Linux initrd RAM disk RAM disk Linux Linux initrd 61

74 initrd Linux initrd initrd initrd Flash initrd RAM disk RAM disk RAM disk RAM disk Flash 2) RAM disk Linux RAM disk RAM disk RAM disk RAM disk RAM disk RAM disk 2MB RAM disk ext2 user$ su m password: root# dd if=/dev/zero of=/dev/ram bs=1k count= records in records out root# mke2fs -vm0 /dev/ram 2048 mke2fs 1.27 (8-Mar-2002) Filesystem label= OS type: Linux 62

75 Block size=1024 (log=0) Fragment size=1024 (log=0) 256 inodes, 2048 blocks 0 blocks (0.00%) reserved for the super user First data block=1 1 block group 8192 blocks per group, 8192 fragments per group 256 inodes per group Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. root# mount -t ext2 /dev/ram /mnt/ramdisk root# cp -a ${yourfilesdir}/* /mnt/ramdisk root# umount /mnt/ramdisk root# dd if=/dev/ram of=ramdisk bs=1k count= records in records out root# gzip ramdisk 1 Linux dd RAM disk 2MB dd if=/dev/zero /dev/zero of=/dev/ram /dev/ram /dev/ram RAM disk bs=1k 1k count= MB 2 mke2fs RAM disk 2MB ext2 -m0 mke2fs 5% Linux 3 mount RAM disk /mnt/ramdisk -t ext2 /dev/ram ext2 4 RAM disk RAM disk 5 RAM disk 6 7 dd RAM disk RAM disk if=/dev/ram RAM disk 63

76 ramdisk gzip ramdisk.gz RAM disk Linux RAM disk RAM disk mount umount mke2fs RAM disk Linux loop back device RAM disk user$ su m password: root# dd if=/dev/zero of=ramdisk bs=1k count=2048 root# mke2fs F -vm0 ramdisk root# mount o loop ramdisk /mnt/ramdisk root# cp -av ${yourfilesdir}/* /mnt/ramdisk root# umount /mnt/ramdisk root# gzip ramdisk 1 dd 2 mke2fs ramdisk ext2 mke2fs -F mke2fs 3 mount -o loop ramdisk /mnt/ramdisk ramdisk 4 /mnt/ramdisk ramdisk ramdisk ramdisk 5 6 RAM disk Linux loop back device Linux 64

77 RAM disk initrd 3) RAM disk RAM disk RAM disk gunzip root# gunzip ramdisk.gz root# mount o loop ramdisk /mnt/ramdisk /mnt/ramdisk cp df Available K root# df /mnt/ramdisk Filesystem 1k-blocks Used Available Use% Mounted on /home/snig/ramdisk % /mnt/ramdisk RAM disk RAM disk dd ramdisk /dev/ram /dev/ram /mnt/ramdisk /dev/ram ramdisk /mnt/ramdisk ramdisk 65

78 dd root# gunzip ramdisk.gz root# dd if=ramdisk of=/dev/ram bs=1k count=2048 root# mount /dev/ram /mnt/ramdisk RAM disk RAM disk 4MB 4) RAM disk Linux initrd RAM disk 2MB 2MB 8MB RAM disk 4MB 8MB RAM disk RAM disk RAM disk 8MB RAM disk 8MB RAM disk 2MB dmesg RAM disk user$ dmesg grep RAMDISK RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize RAMDISK: Compressed image found at block 0 RAM disk Linux GRUB /etc/grub.conf kernel 66

79 ramdisk_size=8192 RAM disk 8MB title Red Hat Linux ( ) root (hd0,0) kernel /boot/vmlinuz ro root=/dev/hda1 ramdisk_size=8192 initrd /boot/initrd img SkyEye SkyEye Linux Windows GNU gdb ARM CPU LCD SkyEye Linux uclinux ucos-ii SkyEye SkyEye EP7312 Linux /opt/armlinux user$ mkdir /opt/armlinux /opt/armlinux SkyEye SkyEye EP7312 LCD skyeye tar.bz2 skyeye/ 67

80 user$ cd /opt/armlinux user$ tar jxvf skyeye tar.bz2 user$ cd skyeye user$./configure -target=arm-elf - prefix=/usr/local user$ make user$ su c make install skyeye /usr/local/bin /usr/local/bin PATH skyeye SkyEye user$ skyeye *************************************************************** **** **** **** SkyEye Simulator Ver with GDB 5.3 Interface **** **** **** *************************************************************** GNU gdb 5.3 Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This SkyEye was configured as "--host=i686-pc-linux-gnu --target=arm-elf". (SkyEye) (SkyEye) ARM arm-linux-cross tar.bz2 armlinux/ root# cd /usr/local root# mkdir arm root# cd arm root# tar jxvf <path to product cdrom>/armlinux/arm-linux-cross tar.bz2 /usr/local/arm ARM Linux /bin arm-linux-gcc PATH /usr/local/arm/2.95.3/bin arm-linux-gcc 68

81 2.7.3 linux patched-for-ep7312.tar.bz2 armlinux/ ARM EP7312 Linux /opt/armlinux linux user$ tar jxvf linux patched-for-ep7312.tar.bz2 make menuconfig user$ cd linux user$ make menuconfig linux Makefile ARCH CROSS_COMPILE ARM /usr/local/arm/2.95.3/bin/arm-linux- System Type CLPS711X/EP721X Implementations EDB

82 2-11 Block devices RAM disk support Intial RAM disk (initrd) support RAM disk ROMFS Filesystems ROM file system support user$ make dep user$ make zimage arch/arm/boot/compressed/vmlinux vmlinux SkyEye 70

83 /opt/armlinux ep7312 user$ cd /opt/armlinux user$ mkdir ep7312 user$ cd ep7312 user$ cp /opt/armlinux/linux /vmlinux. -f SkyEye EP7312 SkyEye skyeye.conf /opt/armlinux/ep7312 skyeye.conf #skyeye config file for ep7312 cpu: arm720t mach: ep7312 mem_bank: map=i, type=rw, addr=0x , size=0x mem_bank: map=m, type=rw, addr=0xc , size=0x mem_bank: map=m, type=r, addr=0xc0000, size=0x mem_bank: map=m, type=rw, addr=0xc , size=0x00c00000 skyeye.conf cpu CPU arm720t SkyEye ARM720T mach ( CPU ) ep7312 EP7312 mem_bank IBM DeveloperWorks SkyEye skyeye vmlinux user$ skyeye vmlinux *************************************************************** **** **** **** SkyEye Simulator Ver with GDB 5.3 Interface **** **** **** *************************************************************** GNU gdb 5.3 Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. 71

84 Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This SkyEye was configured as "--host=i686-pc-linux-gnu --target=arm-elf". (SkyEye) (skyeye) (SkyEye) target sim cpu info: armv4, arm720t, , ffffff00, 1 mach info: name ep7312, mach_init addr 0x SKYEYE: use arm7100 mmu ops Connected to the simulator. (SkyEye) load Loading section.init, size 0xc000 vma 0xc Loading section.text, size 0xd869c vma 0xc Loading section ex_table, size 0x7b8 vma 0xc010c6a0 Loading section.data, size 0x985b vma 0xc010e000 Start address 0xc Transfer rate: bits in <1 sec. (SkyEye) run Starting program: /opt/armlinux/ep7312/vmlinux Linux version ac4-rmk1 (snig@snig.lan.minigui.com) (gcc version (relea se)) #18 19:29:45 CST 2005 Processor: ARM ARM720T revision 0 Architecture: Cirrus Logic EDB7312 (EP7312 evaluation board) Warning: bad configuration page, trying to continue On node 0 totalpages: 4096 zone(0): 4096 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: root=/dev/ram0 rw initrd=0xc ,0x Calibrating delay loop BogoMIPS Memory: 16MB = 16MB total Memory: 14820KB available (865K code, 209K data, 48K init) Dentry-cache hash table entries: 2048 (order: 2, bytes) Inode-cache hash table entries: 1024 (order: 1, 8192 bytes) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 4096 (order: 2, bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Starting kswapd v1.8 pty: 256 Unix98 ptys configured block: queued sectors max/low 9757kB/3252kB, 64 slots per queue RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize Blkmem copyright 1998,1999 D. Jeff Dionne Blkmem copyright 1998 Kenneth Albanowski Blkmem 1 disk images: 0: FB0C0000-FB0BFFFF [VIRTUAL FB0C0000-FB0BFFFF] (RO) NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 1024 bind 1024) NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. NetWinder Floating Point Emulator V0.95 (c) Rebel.com Blkmem: bad access: block=2, count=2 (pos=800, len=0) end_request: I/O error, dev 1f:00 (Blkmem), sector 2 EXT2-fs: unable to read superblock Blkmem: bad access: block=0, count=2 (pos=400, len=0) end_request: I/O error, dev 1f:00 (Blkmem), sector 0 romfs: unable to read superblock Kernel panic: VFS: Unable to mount root fs on 1f:00 initrd 72

85 Kernel panic: VFS: Unable to mount root fs on 1f:00 user$ mkdir /opt/armlinux/ep7312/rootfs BusyBox busybox-1.00.tar.bz2 /opt/armlinux user$ tar jxvf busybox-1.00.tar.bz2 user$ cd busybox-1.00 make menuconfig BusyBox

86 2-14 busybox Build Options busybox BusyBox arm-linux- arm-linux-gcc 74

87 busybox route armlinux/ep7312 busybox-config BusyBox user$ make dep user$ make busybox file ARM user$ file busybox busybox: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, statically lin ked, stripped BusyBox user$ make PREFIX=/opt/armlinux/ep7312/rootfs install bin sbin usr/bin usr/sbin BusyBox _install /dev mknod crw snig snig 5, console crw snig snig 1, kmem crw snig snig 1, mem crw snig snig 1, null brw snig snig 1, ram0 crw snig snig 1, random crw snig snig 5, tty crw snig snig 4, tty0 crw snig snig 4, tty1 crw snig snig 204, ttyam0 crw snig snig 204, ttyam1 crw snig snig 1, urandom crw snig snig 1, zero /etc 75

88 inittab fstab user$ cd /opt/armlinux/ep7312/rootfs user$ mkdir etc init BusyBox init BusyBox inittab inittab /opt/armlinux/busybox-1.00/examples/inittab # /etc/inittab init(8) configuration for BusyBox # # Copyright (C) by Erik Andersen <andersen@codepoet.org> # # # Note, BusyBox init doesn't support runlevels. The runlevels field is # completely ignored by BusyBox init. If you want runlevels, use sysvinit. # # # Format for each entry: <id>:<runlevels>:<action>:<process> # # <id>: WARNING: This field has a non-traditional meaning for BusyBox init! # # The id field is used by BusyBox init to specify the controlling tty for # the specified process to run on. The contents of this field are # appended to "/dev/" and used as-is. There is no need for this field to # be unique, although if it isn't you may have strange results. If this # field is left blank, it is completely ignored. Also note that if # BusyBox detects that a serial console is in use, then all entries # containing non-empty id fields will _not_ be run. BusyBox init does # nothing with utmp. We don't need no stinkin' utmp. # # <runlevels>: The runlevels field is completely ignored. # # <action>: Valid actions include: sysinit, respawn, askfirst, wait, once, # restart, ctrlaltdel, and shutdown. # # Note: askfirst acts just like respawn, but before running the specified # process it displays the line "Please press Enter to activate this # console." and then waits for the user to press enter before starting # the specified process. # # Note: unrecognised actions (like initdefault) will cause init to emit # an error message, and then go along with its business. # # <process>: Specifies the process to be executed and it's command line. # # Note: BusyBox init works just fine without an inittab. If no inittab is # found, it has the following default behavior: # ::sysinit:/etc/init.d/rcs # ::askfirst:/bin/sh # ::ctrlaltdel:/sbin/reboot # ::shutdown:/sbin/swapoff -a # ::shutdown:/bin/umount -a -r # ::restart:/sbin/init # # if it detects that /dev/console is _not_ a serial console, it will # also run: # tty2::askfirst:/bin/sh # tty3::askfirst:/bin/sh # tty4::askfirst:/bin/sh # # Boot-time system configuration/initialization script. # This is run first except when booting in single-user mode. # ::sysinit:/etc/init.d/rcs 76

89 # /bin/sh invocations on selected ttys # # Note below that we prefix the shell commands with a "-" to indicate to the # shell that it is supposed to be a login shell. Normally this is handled by # login, but since we are bypassing login in this case, BusyBox lets you do # this yourself... # # Start an "askfirst" shell on the console (whatever that may be) ::askfirst:-/bin/sh # Start an "askfirst" shell on /dev/tty2-4 tty2::askfirst:-/bin/sh tty3::askfirst:-/bin/sh tty4::askfirst:-/bin/sh # /sbin/getty invocations for selected ttys tty4::respawn:/sbin/getty tty5 tty5::respawn:/sbin/getty tty6 # Example of how to put a getty on a serial line (for a terminal) #::respawn:/sbin/getty -L ttys vt100 #::respawn:/sbin/getty -L ttys vt100 # # Example how to put a getty on a modem line. #::respawn:/sbin/getty ttys2 # Stuff to do when restarting the init process ::restart:/sbin/init # Stuff to do before rebooting ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r ::shutdown:/sbin/swapoff -a etc user$ cp /opt/armlinux/busybox-1.00/examples/inittab /opt/armlinux/ep7312/rootfs/etc/ inittab BusyBox init /etc/init.d rcs ${ROOTFS}/etc init.d user$ cd /opt/armlinux/ep7312/rootfs/etc/ user$ mkdir init.rd user$ cd init.rd init.d rcs chmod +x #!/bin/sh hostname ARMLinux mount -t proc proc /proc cat /etc/motd proc /etc/motd ${ROOFS}/etc 77

90 fstab # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 ${ROOTFS} lib var user$ cd /opt/armlinux/ep7312/rootfs user$ mkdir lib var user$ ln s /var/tmp tmp bin dev etc lib linuxrc proc sbin tmp usr var genromfs ROMFS user$ cd /opt/armlinux/ep7312/ user$ genromfs d roofs f initrd.romfs skyeye.conf SkyEye skyeye.conf #skyeye config file for ep7312 cpu: arm720t mach: ep7312 mem_bank: map=i, type=rw, addr=0x , size=0x mem_bank: map=m, type=rw, addr=0xc , size=0x mem_bank: map=m, type=r, addr=0xc0000, size=0x340000, file=./initrd.romfs mem_bank: map=m, type=rw, addr=0xc , size=0x00c00000 /opt/armlinux/ep7312 SkyEye user$ skyeye vmlinux *************************************************************** **** **** **** SkyEye Simulator Ver with GDB 5.3 Interface **** **** **** *************************************************************** GNU gdb 5.3 Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This SkyEye was configured as "--host=i686-pc-linux-gnu --target=arm-elf"... (SkyEye) target sim 78

91 cpu info: armv4, arm720t, , ffffff00, 1 mach info: name ep7312, mach_init addr 0x SKYEYE: use arm7100 mmu ops Loaded ROM./initrd.romfs Connected to the simulator. (SkyEye) load Loading section.init, size 0xc000 vma 0xc Loading section.text, size 0xd869c vma 0xc Loading section ex_table, size 0x7b8 vma 0xc010c6a0 Loading section.data, size 0x985b vma 0xc010e000 Start address 0xc Transfer rate: bits in <1 sec. (SkyEye) run Starting program: /opt/armlinux/ep7312/vmlinux Linux version ac4-rmk1 (snig@snig.lan.minigui.com) (gcc version (relea se)) # :29:45 CST 2005 Processor: ARM ARM720T revision 0 Architecture: Cirrus Logic EDB7312 (EP7312 evaluation board) Warning: bad configuration page, trying to continue On node 0 totalpages: 4096 zone(0): 4096 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: root=/dev/ram0 rw initrd=0xc ,0x Calibrating delay loop BogoMIPS Memory: 16MB = 16MB total Memory: 14820KB available (865K code, 209K data, 48K init) Dentry-cache hash table entries: 2048 (order: 2, bytes) Inode-cache hash table entries: 1024 (order: 1, 8192 bytes) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 4096 (order: 2, bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Starting kswapd v1.8 pty: 256 Unix98 ptys configured block: queued sectors max/low 9757kB/3252kB, 64 slots per queue RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize Blkmem copyright 1998,1999 D. Jeff Dionne Blkmem copyright 1998 Kenneth Albanowski Blkmem 1 disk images: 0: FB0C0000-FB171FFF [VIRTUAL FB0C0000-FB171FFF] (RO) NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 1024 bind 1024) NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. NetWinder Floating Point Emulator V0.95 (c) Rebel.com VFS: Mounted root (romfs filesystem). Freeing init memory: 48K Welcome to / \ / \ / \_/ \ _ / _ \ / /\ /\ \ / /_\ \ / / \_/ \ \ _ \ \ \/ / / / \ \ \ \ _ _ / \ /_/ \_\ \_\ _ _ _ _ _ \ \_/\_/ ARMLinux for Skyeye For further information check: Please press Enter to activate this console. init rcs BusyBox Shell BusyBox v1.00 ( : ) Built-in shell (ash) Enter 'help' for a list of built-in commands. 79

92 -sh: can't access tty; job control turned off / # Shell ls l / # ls -l drwxr-xr-x Jan 1 00:00 bin drwxr-xr-x Jan 1 00:00 dev drwxr-xr-x Jan 1 00:00 etc drwxr-xr-x Jan 1 00:00 lib lrwxrwxrwx Jan 1 00:00 linuxrc -> bin/busybox drwxr-xr-x Jan 1 00:00 proc drwxr-xr-x Jan 1 00:00 sbin lrwxrwxrwx Jan 1 00:00 tmp -> /var/tmp drwxr-xr-x Jan 1 00:00 usr drwxr-xr-x Jan 1 00:00 var / # /bin /sbin / # cd /bin /bin # ls -l lrwxrwxrwx Jan 1 00:00 ash -> busybox -rwxr-xr-x Jan 1 00:00 busybox lrwxrwxrwx Jan 1 00:00 cat -> busybox lrwxrwxrwx Jan 1 00:00 chgrp -> busybox lrwxrwxrwx Jan 1 00:00 chmod -> busybox lrwxrwxrwx Jan 1 00:00 chown -> busybox lrwxrwxrwx Jan 1 00:00 cp -> busybox lrwxrwxrwx Jan 1 00:00 date -> busybox lrwxrwxrwx Jan 1 00:00 dd -> busybox lrwxrwxrwx Jan 1 00:00 df -> busybox lrwxrwxrwx Jan 1 00:00 dmesg -> busybox lrwxrwxrwx Jan 1 00:00 echo -> busybox lrwxrwxrwx Jan 1 00:00 false -> busybox lrwxrwxrwx Jan 1 00:00 hostname -> busybox lrwxrwxrwx Jan 1 00:00 kill -> busybox lrwxrwxrwx Jan 1 00:00 ln -> busybox lrwxrwxrwx Jan 1 00:00 ls -> busybox lrwxrwxrwx Jan 1 00:00 mkdir -> busybox lrwxrwxrwx Jan 1 00:00 mknod -> busybox lrwxrwxrwx Jan 1 00:00 more -> busybox lrwxrwxrwx Jan 1 00:00 mount -> busybox lrwxrwxrwx Jan 1 00:00 mv -> busybox lrwxrwxrwx Jan 1 00:00 pidof -> busybox lrwxrwxrwx Jan 1 00:00 ping -> busybox lrwxrwxrwx Jan 1 00:00 ps -> busybox lrwxrwxrwx Jan 1 00:00 pwd -> busybox lrwxrwxrwx Jan 1 00:00 rm -> busybox lrwxrwxrwx Jan 1 00:00 rmdir -> busybox lrwxrwxrwx Jan 1 00:00 sh -> busybox lrwxrwxrwx Jan 1 00:00 sleep -> busybox lrwxrwxrwx Jan 1 00:00 sync -> busybox lrwxrwxrwx Jan 1 00:00 touch -> busybox lrwxrwxrwx Jan 1 00:00 true -> busybox lrwxrwxrwx Jan 1 00:00 umount -> busybox lrwxrwxrwx Jan 1 00:00 uname -> busybox lrwxrwxrwx Jan 1 00:00 usleep -> busybox lrwxrwxrwx Jan 1 00:00 vi -> busybox / # cd /sbin/ /sbin # ls -l lrwxrwxrwx Jan 1 00:00 halt ->../bin/busybox lrwxrwxrwx Jan 1 00:00 ifconfig ->../bin/busybox lrwxrwxrwx Jan 1 00:00 init ->../bin/busybox lrwxrwxrwx Jan 1 00:00 klogd ->../bin/busybox lrwxrwxrwx Jan 1 00:00 pivot_root ->../bin/busybox lrwxrwxrwx Jan 1 00:00 poweroff ->../bin/busybox lrwxrwxrwx Jan 1 00:00 reboot ->../bin/busybox lrwxrwxrwx Jan 1 00:00 swapoff ->../bin/busybox 80

93 lrwxrwxrwx Jan 1 00:00 swapon ->../bin/busybox lrwxrwxrwx Jan 1 00:00 syslogd ->../bin/busybox /sbin # /bin /sbin busybox /usr/bin/ /usr/sbin 700KB busybox SkyEye EP7312 ARM Linux ROMFS 3 4 uclinux Linux MMU / MMU uclinux Linux uclinux Linux Linux uclinux uclinux MMU uclinux Xcopilot m68k CPU uclinux /opt/uclinux user$ mkdir /opt/uclinux /opt/uclinux 81

94 2.8.1 Xcopilot Xcopilot user$ cd /opt/uclinux user$ tar zxvf <path to cdrom>/xcopilot/xcopilot uc0.tar.gz Xcopilot user$ cd xcopilot uc0 user$./configure user$ make xcopilot PDA m68k m68k-elf-tools sh uclinux root# sh <path to cdrom>/m68k-elf/m68k-elf-tools sh /usr/local m68k m68k-elf-gcc uclinux uclinux uclinux uclinux uclinux-dist tar.gz uclinux /opt/uclinux user$ tar zxvf uclinux-dist tar.gz uclinux uclinux-dist user$ cd uclinux-dist 82

95 uclinux user$ make menuconfig uclinux-dist uclinux Vendor/Product 3com/Xcopilot Kernel Linux-2.4.x libc uclibc Customize Kernel Settings 2-17 ROMFS RAM disk EXT2 ROMFS RAM disk EXT2 Block devices RAM disk support ROM disk memory block device(blkmem) blkmem Flash 83

96 ROMFS 2-18 File systems ROMFS EXT2 proc

97 uclinux uclinux-dist uclinux C user$ make dep user$ make Xcopilot images pilot.rom pilot.rom uclinux-dist Xcopilot user$ ln s /opt/uclinux/uclinux-dist/images/pilot.rom ~/.xcopilot/pilot.rom Xcopilot xcopilot uclinux 2-20 user$ cd /opt/uclinux/xcopilot uc0 user$./xcopilot 2-20 uclinux Xcopilot 85

98 ls /> ls -l drwxr-xr-x Jan bin drwxr-xr-x Jan dev drwxr-xr-x Jan etc drwxr-xr-x Jan home drwxr-xr-x Jan lib drwxr-xr-x Jan mnt dr-xr-xr-x Nov 30 00:00 proc lrwxrwxrwx Jan tmp -> /var/tmp drwxr-xr-x Jan usr drwxr-xr-x Nov 30 00:00 var /> SkyEye /bin BusyBox /bin> ls -l -rwxr-xr-x Jan expand -rwxr-xr-x Jan init -rwxr-xr-x Jan reboot -rwxr-xr-x Jan sh -rwxr-xr-x Jan tip /bin> /bin init sh /etc /etc> ls -l -rw-r--r Jan inittab -rw-r--r Jan motd -rw-r--r Jan ramfs.img -rw-r--r Jan rc /etc> RAM disk rc cat rc /etc> cat rc hostname CoPilot /bin/expand /etc/ramfs.img /dev/ram0 mount -t proc proc /proc mount -t ext2 /dev/ram0 /var mkdir /var/tmp mkdir /var/log mkdir /var/run mkdir /var/lock mkdir /var/empty cat /etc/motd rc RAM disk /etc/ramfs.img /dev/ram0 /var /var 86

99 Linux SkyEye Xcopilot Linux/uClinux Linux/uClinux MiniGUI Linux 87

100 3 2 Linux/uClinux Linux/uClinux Linux/uClinux C SkyEye Xcopilot C / PC SkyEye EP7312 Xcopilot Linux/uClinux Hello, world #include <stdio.h> int main (void) { printf ("Hello, world\n"); return 0; } 88

101 helloworld.c Linux PC user$ gcc -Wall -O2 -o helloworld helloworld.c user $./helloworld Hello, world SkyEye EP7312 user$ arm-linux-gcc -Wall -O2 -o helloworld helloworld.c helloworld file user$./helloworld -bash:./helloworld: cannot execute binary file user $ file helloworld helloworld: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, \ dynamically linked (uses shared libs), not stripped file helloworld ELF 32 ARM, version 1 (ARM) arm-linux-strings user$ arm-linux-strings helloworld /lib/ld-linux.so.2 libc.so.6 printf abort _IO_stdin_used libc_start_main GLIBC_2.0 Hello, world arm-linux-strings strings strings helloworld.c Hello, world\n 89

102 printf abort _IO_stdio_used libc_start_main /lib/ld-linux.so.2 libc.so.6 helloworld helloworld /lib/ld-linux.so.2 libc.so.6 /lib/ld-linux.so.2 C glibc 2.0 shared object name /lib LD_LIBRARY_PATH 19 libc.so.6 helloworld arm-linux-strip user$ ls -l helloworld -rwxrwxr-x 1 weiym weiym :41 helloworld user$ arm-linux-strip helloworld user$ ls -l helloworld -rwxrwxr-x 1 weiym weiym :01 helloworld 19 ld-linux.so.2 /lib LD_LIBRARY_PATH arm-linux-strings $arm-linux-strings ld-linux.so.2 grep ^/ arm-linux /usr/local/arm/2.95.3/arm-linux/lib/ 90

103 helloworld 11,049 2,472 arm-linux-strip strip strip helloworld helloworld.static user$ arm-linux-gcc -static -Wall -O2 helloworld.static helloworld.c user$ ls -l helloworld helloworld.static -rwxrwxr-x 1 weiym weiym :07 helloworld -rwxrwxr-x 1 weiym weiym :06 helloworld.static user$ arm-linux-strip helloworld helloworld.static user$ ls -l helloworld helloworld.static -rwxrwxr-x 1 weiym weiym :08 helloworld -rwxrwxr-x 1 weiym weiym :08 helloworld.static helloworld.static strings C glibc strings strip C arm-linux ar 91

104 as ld nm objdump objcopy ranlib readelf size strings strip ar s ar ELF ELF UNIX Excutable and Linkable Format a.out BSS SkyEye EP7312 SkyEye EP7312 initrd RAMDISK initrd 4.3 MiniGUI initrd.img /armlinux/ep7312/ helloworld.static 1. initrd.img /mnt/tmp root# cp <path to cdrom>/armlinux/ep7312/initrd.img. root# file initrd.img initrd.img: Linux rev 1.0 ext2 filesystem data root# mkdir p /mnt/tmp root# mount -t ext2 -o loop initrd.img /mnt/tmp/ 2. helloworld.static initrd root# cp helloworld.static /mnt/tmp/bin 92

105 root# umount /mnt/tmp helloworld.static initrd initrd.img Linux /armlinux/ep7312/ vmlinux.for.ep7312 skyeye.conf cpu: arm720t mach: ep7312 mem_bank: map=i, type=rw, addr=0x , size=0x mem_bank: map=m, type=rw, addr=0xc , size=0x mem_bank: map=m, type=rw, addr=0xc , size=0x , file=./initrd.img mem_bank: map=m, type=rw, addr=0xc , size=0x00c00000 skyeye.conf SkyEye # skyeye vmlinux.for.ep7312 (SkyEye) target sim (SkyEye) load (SkyEye) run bin/ helloworld.static Welcome to / \ / \ / \_/ \ _ / _ \ / /\ /\ \ / /_\ \ / / \_/ \ \ _ \ \ \/ / / / \ \ \ \ _ _ / \ /_/ \_\ \_\ _ _ _ _ _ \ \_/\_/ ARMLinux for Skyeye For further information check: Execution Finished, Exiting Command: /bin/sh Sash command shell (version 1.1.1) /> cd bin /bin> ls helloworld.static init mount sh /bin>./helloworld.static Hello, world /bin> uclinux Hello, world uclinux uclinux MMU 93

106 uclinux uclinux uc-libc uclibc -I -L uclinux MMU uclinux ELF FLAT FLAT ZFLAT ELF objcopy FLAT Xcopilot DragonBall Motorola M Com Copilot PDA -m Motorola DragonBall ARM -I -L l -Wl,-elf2flt -Wl, 20 gcc m m machine m68k GCC

107 Xcopilot uclibc 2 uclibc /opt/uclinux/uclinux-dist/uclibc Hello, world user$ m68k-elf-gcc \ -m mid-shared-library -mshared-library-id=0 -Os -g -fomit-frame-pointer \ -I/opt/uclinux/uClinux-dist/lib/uClibc/include \ -Wl,-elf2flt -Wl,-move-rodata -Wl,-shared-lib-id,0 \ -nostartfiles /opt/uclinux/uclinux-dist/lib/uclibc/lib/crt0.o \ -L/opt/uclinux/uClinux-dist/lib/uClibc/lib \ -o helloworld helloworld.c \ -Wl,-R,/opt/uclinux/uClinux-dist/lib/uClibc/libc.gdb lc -mid-shared-library -mshared-library-id=0 ID ID Os -g -fomit-frame-pointer -I/opt/uclinux/uClinux-dist/lib/uClibc/include uclibc -Wl,-elf2flt ELF FLAT -Wl,-move-rodata.rodata.text -Wl,-shared-lib-id,0 ID 0 -nostartfiles /opt/uclinux/uclinux-dist/lib/uclibc/lib/crt0.o C uclibc crt0.o -Wl,-R,/opt/uclinux/uClinux-dist/lib/uClibc/libc.gdb uclibc libc.gdb lc uclibc C libc.a uclinux-dist 21 in place fpic ID 0 m68k msep-data in place 95

108 Bash Shell uclinux-dist <Ctrl+S> <ScrLck> <Ctrl+Q> helloworld.gdb helloworld ELF FLAT user$ ls -l -rwxr--r-- 1 weiym weiym :39 helloworld -rw-rw-r-- 1 weiym weiym :21 helloworld.c -rwxrwxr-x 1 weiym weiym :39 helloworld.gdb user$ file helloworld.gdb helloworld helloworld.gdb: ELF 32-bit MSB executable, Motorola 68020, version 1 (SYSV), \ statically linked, not stripped helloworld: data file helloworld.gdb ELF 32 Motorola 68020, version 1 (SYSV) helloworld file FLAT file helloworld helloworld Xcopilot helloworld uclinux-dist romfs make image root# cd /opt/uclinux/uclinux-dist root# cp <path_to_helloworld>/helloworld romfs/bin root# make image uclinux-dist/romfs 22 uclinux-dist/images/pilot.rom pilot.rom uclinux-dist/images pilot.rom user$ ln sf /opt/uclinux/uclinux-dist/images/pilot.rom ~/.xcopilot/pilot.rom X Window xcopilot Xcopilot 22 make Linux genromfs 96

109 Command: mount -t proc proc /proc Command: mount -t ext2 /dev/ram0 /var Command: mkdir /var/tmp Command: mkdir /var/log Command: mkdir /var/run Command: mkdir /var/lock Command: cat /etc/motd Welcome to _ / _ _ \ \ \/ / _ _ / \ \ _ _ _ _ \ \_/\_/ _ For further information check: Execution Finished, Exiting Sash command shell (version 1.1.1) /> cd bin /bin>./helloworld Hello, world /bin> cd bin Hello, world make makefile make makefile make Linux make makefile Makefile makefile make makefile Win32 Win32 makefile 97

110 Linux make GNU make GNU make makefile GNUmakefile makefile Makefile UNIX Makefile makfile makefile make makefile $ make -f Makefile.debug makefile make target dependency rule 3.1 helloworld.c makefile helloworld helloworld: helloworld.o gcc o helloworld.o helloworld.o: helloworld.c gcc c Wall O2 o helloworld.o helloworld.c makefile helloworld helloworld.o helloworld.o helloworld.c makefile make <target> all makefile clean clean: rm -f *.o 98

111 make clean rm -f *.o makefile makefile GNU make C makefile helloworld makefile CC= gcc CFLAGS=-Wall -O2 -g LD= gcc LDFLAGS= PROG=helloworld OBJS=helloworld.o # Rule for building an object file.c.o: $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< $(PROG): $(OBJS) $(LD) $(LDFLAGS) -o $@ $< all: $(PROG) clean: rm $(OBJS) $(PROG) f CC CFLAGS LD LDFLAGS make PROG OBJS makefile $ $(CC) $(CFLAGS) makefile GNU make.c.o %.o:%.c $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< make makefile Linux INTERNET make makefile 99

112 3.2.2 Makefile Linux cal cal $ cal March 2005 Su Mo Tu We Th Fr Sa cal.c print.c cal.h cal.c main usage print.c cal.h /samples/cal.tar.gz Linux cal makefile PC SkyEye EP7312 makefile Makefile.arm-linux # Modify the following variables to meet your cross-compilation toolchain. CROSS=arm-linux PREFIX=/usr/local/arm-linux/arm-linux/ ### do not modify the following variables and rules. ### BINDIR=$(PREFIX)/bin CC=$(CROSS)-gcc CFLAGS=-Wall -O2 -g LD=$(CROSS)-gcc LDFLAGS= STRIP=$(CROSS)-strip RM=rm -f INSTALL=install -c PROG=$(CROSS)-cal OBJS=cal.o print.o # Rule for building an object file %.o:%.c $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< $(PROG): $(OBJS) $(LD) $(LDFLAGS) -o $@ $^ all: $(PROG) clean: $(RM) $(OBJS) $(PROG).depend core install: $(PROG) $(STRIP) $(PROG) $(INSTALL) -o root -g root -s -m 0755 $(PROG) $(BINDIR) uninstall: 100

113 rm -f $(BINDIR)/$(PROG) depend.depend: $(CC) $(CFLAGS) -M *.c >.depend ifeq (.depend, $(wildcard.depend)) include.depend endif makefile Linux makefile clean install uninstall depend makefile arm-linux makefile uclinux uclinux cal makefile Makefile.m68k-elf # Modify the following variables to meet your cross-compilation toolchain. CROSS=m68k-elf UCLINUX_DIR=/opt/uclinux/uClinux-dist PREFIX=/usr/local/m68k-elf/ CFLAGS=-m mid-shared-library -mshared-library-id=0 -Os -Wall -g -fomit-frame-pointer \ -I$(UCLINUX_DIR)/lib/uClibc/include LDFLAGS=-Wl,-elf2flt -Wl,-move-rodata -Wl,-shared-lib-id,0 \ -nostartfiles $(UCLINUX_DIR)/lib/uClibc/lib/crt0.o \ -L$(UCLINUX_DIR)/lib/uClibc/lib \ -Wl,-R,$(UCLINUX_DIR)/lib/uClibc/libc.gdb -lc ### do not modify the following variables and rules. ### CC=$(CROSS)-gcc LD=$(CROSS)-gcc BINDIR=$(PREFIX)/bin RM=rm -f INSTALL=install -c PROG=$(CROSS)-cal OBJS=cal.o print.o # Rule for building an object file %.o:%.c $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< $(PROG): $(OBJS) $(LD) $(LDFLAGS) -o $@ $^ all: $(PROG) clean: $(RM) $(OBJS) $(PROG) $(PROG).gdb.depend core install: $(PROG) $(INSTALL) -o root -g root -s -m 0755 $(PROG) $(BINDIR) uninstall: rm -f $(BINDIR)/$(PROG) depend.depend: $(CC) $(CFLAGS) -M *.c >.depend ifeq (.depend, $(wildcard.depend)) include.depend endif 101

114 SkeEye EP7312 makefile Makefile.m68k-elf 3.1 m68k-elf-gcc uclibc CFLAGS LDFLAGS strip ELF FLAT PREFIX clean $(PROG).gdb Makefile.m68k-elf Makefile.arm-linux make make f Makefile.arm-linux make f Makefile.m68k-elf Linux PC ARM Linux Xcopilot cal make clean uclinux-dist Linux uclinux uclinux-dist/ uclinux uclibc uclinux-dist makefile uclibc cal 1. uclinux-dist/user cal root# cd /opt/uclinux/uclinux-dist/user root# mkdir mycal root# cd mycal root# cp <path to cal>/cal/*.[ch]. 102

115 2. user tip Makefile root# cp../tip/makefile. 3. Makefile EXEC = mycal OBJS = cal.o print.o all: $(EXEC) $(EXEC): $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS$(LDLIBS_$@)) romfs: $(ROMFSINST) /bin/$(exec) clean: -rm -f $(EXEC) *.elf *.gdb *.o 4. user/ Makefile dir_y += games dir_y += games dir_y += mycal uclinux-dist make romfs/bin mycal C C Windows Linux/UNIX 4GB void foo (int bar) { char temp [1024]; 103

116 // do your work if (bar > 1) { bar --; foo (bar); } } return; char Linux uclinux Linux C C C 104

117 3.3.2 byte order short int double Intel x86 0x Intel x A 0x34 A+1 0x12 little-endian A A+1 0x34 0x little-endian unsigned short temp = 0x1234; write (fd, &temp, sizeof (unsigned short)); unsigned short temp; read (fd, &temp, sizeof (unsigned short)); // temp = 0x1234 Intel x86 read temp 0x1234 big-endian temp 0x

118 A A+1 0x12 0x big-endian RISC PowerPC M68k MIPS Xcopilot M68k PC 0x1234 endina.dat #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main (void) { unsigned char *p; unsigned short temp = 0x1234; int fd = open ("endian.dat", O_CREAT O_TRUNC O_RDWR, 0666); if (fd < 0) { perror ("Open file error"); return 1; } // write the short data to the file write (fd, &temp, sizeof (unsigned short)); // read back the data. lseek (fd, 0, SEEK_SET); read (fd, &temp, sizeof (unsigned short)); close (fd); // print the bytes p = (unsigned char*) &temp; printf ("the first byte is 0x%x\n", *p); printf ("the second byte is 0x%x\n", *(p + 1)); } return 0; user$ gcc -o endian endian.c user$./endian the first byte is 0x34 the second byte is 0x12 Xcopilot endian.dat #include <stdio.h> #include <unistd.h> #include <sys/types.h> 106

119 #include <sys/stat.h> #include <fcntl.h> int main (void) { unsigned char *p; unsigned short temp; int fd = open ("endian.dat", O_RDONLY); if (fd < 0) { perror ("Open file error"); return 1; } // read back the data. read (fd, &temp, sizeof (unsigned short)); close (fd); // print the bytes p = (unsigned char*) &temp; printf ("the first byte is 0x%x\n", *p); printf ("the second byte is 0x%x\n", *(p + 1)); } return 0; the first byte is 0x12 the second byte is 0x34 #include <stdio.h> inline int is_big_endian (void) { union { unsigned short i; unsigned char c[2]; } data; data.i = 0x1234; if (data.c[0] == 0x12) return 1; } return 0; int main (void) { if (is_big_endian ()) printf ("This is a big-endian system\n"); else printf ("This is a little-endian system\n"); } return 0; is_big_endian C 107

120 unsigned short temp = 0x1234; unsigned char byte = (unsigned char)(temp >> 8); printf ( the low byte is 0x%x\n, byte); MiniGUI #define MGUI_LIL_ENDIAN 1234 #define MGUI_BIG_ENDIAN 4321 #if defined( i386 ) defined( ia64 ) \ (defined( alpha ) defined( alpha)) \ defined( arm ) \ (defined( CC_ARM) &&!defined( BIG_ENDIAN)) \ (defined( mips ) && defined( MIPSEL )) \ defined( LITTLE_ENDIAN ) \ defined(win32) #define MGUI_BYTEORDER MGUI_LIL_ENDIAN #else #define MGUI_BYTEORDER MGUI_BIG_ENDIAN #endif MiniGUI MGUI_BYTEORDER #if MGUI_BYTEORDER == MGUI_BIG_ENDIAN // for the big-endian system #else // for the little-endian system #endif Xcopilot MiniGUI unsigned short temp; // read back the data. read (fd, &temp, sizeof (unsigned short)); close (fd); #if MGUI_BYTEORDER == MGUI_BIG_ENDIAN temp = ((temp << 8) (temp >> 8)); #endif temp = ((temp << 8) (temp >> 8)); temp MiniGUI MiniGUI MiniGUI Endian 108

121 short int long float double ARM 8 double C #include <stdio.h> void align_1 (void) { struct { char c; int i; } my_struct; } printf ("The size of my_struct is %d\n", sizeof (my_struct)); int main (void) { align_1 (); } return 0; PC user$ gcc -o align align.c user$./align The size of my_struct is char c int i 4 i 4 c 4 i

122 0 c 8 c unused unused unused unused unused unused 4 12 i i 3-5 my_struct 23 8 struct { char c; short s; int i; } my_struct; struct { int i; short s; char c; } my_struct; gcc attribute ((packed)) 23 Linux Linux uclinux 110

123 struct attribute ((packed)) { int i; short s; char c; } my_struct; 32 unsigned int read_uint_from_mem (const unsigned char* data) { unsigned int u; memcpy (&u, data, sizeof (unsigned int)); return u; } unsigned int read_uint_from_mem (const unsigned char* data) { unsigned int *u; u = (unsigned int*)data; return *u; } data 4 SkyEye Xcopilot unsigned char data [1024]; unsigned char u; u = read_uint_from_mem (data + 1); uclinux read_uint_from_mem unsigned int read_uint_from_mem (const unsigned char* data) { Uint32 q1, q2, q3, q4; } q1 = data[0]; q2 = data[1]; q3 = data[2] q4 = data[3] return ((q1<<24) (q2<<16) (q3<<8) (q4)); 111

124 3.3.4 A D A D B B C C ABCD A B C D A 0,0 A 10,10 A A 112

125 3-7 A D A O D O B B 3-7 C C x 1,y 1 ;x 2,y 2 ;x 3,y 3 x 1,y 1 ;x 2,y 2 ;x 3, y 3 x 1 = ax1 + by1 + c y 1 = dx1 + ey1 + f x 2 = ax2 + by2 + c y 2 = dx2 + ey2 + f x 3 = ax3 + by3 + c y 3 = dx3 + ey3 + f 113

126 114 ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) = = = = = = ey dx y f x x y y x x y y x x y y x x y y e y y x x y y x x y y y y y y y y d by ax x c x x y y x x y y x x x x x x x x b y y x x y y x x y y x x y y x x a C a b c d e f static BOOL dogaussianelimination_f (double* x, const POINT* src_pts, const POINT* dst_pts) { double x12, x23, y12, y23, nx12, nx23, ny12, ny23; double numerator, denominator1, denominator2; x12 = (double)(src_pts [0].x - src_pts [1].x); x23 = (double)(src_pts [1].x - src_pts [2].x); y12 = (double)(src_pts [0].y - src_pts [1].y); y23 = (double)(src_pts [1].y - src_pts [2].y); nx12 = (double)(dst_pts [0].x - dst_pts [1].x); nx23 = (double)(dst_pts [1].x - dst_pts [2].x); ny12 = (double)(dst_pts [0].y - dst_pts [1].y); ny23 = (double)(dst_pts [1].y - dst_pts [2].y); denominator1 = x12*y23 - x23*y12; if (fabs (denominator1) < 0.0E-10) return FALSE; denominator2 = y12*x23 - y23*x12; if (fabs (denominator2) < 0.0E-10) return FALSE; numerator = nx12*y23 - nx23*y12; x [0] = numerator / denominator1; numerator = nx12*x23 - nx23*x12; x [1] = numerator / denominator2; x [2] = dst_pts [0].x - x [0] * src_pts [0].x - x [1] * src_pts [0].y; numerator = ny12*y23 - ny23*y12; x [3] = numerator / denominator1; numerator = ny12*x23 - ny23*x12; x [4] = numerator / denominator2; x [5] = dst_pts [0].y - x [3] * src_pts [0].x - x [4] * src_pts [0].y; return TRUE; } src_pts dst_pts a b c d e f x

127 DO_MOUSE_CALIBRATE_PROC mg_do_mouse_calibrate; #define NR_EQUATIONS 6 static double vars1 [NR_EQUATIONS], vars2 [NR_EQUATIONS], vars3 [NR_EQUATIONS], vars4 [NR_EQU ATIONS]; static void do_mouse_calibrate (int* x, int* y) { double x1, y1, x2, y2, x3, y3, x4, y4; x1 = vars1 [0] * (*x) + vars1 [1] * (*y) + vars1 [2]; y1 = vars1 [3] * (*x) + vars1 [4] * (*y) + vars1 [5]; x2 = vars2 [0] * (*x) + vars2 [1] * (*y) + vars2 [2]; y2 = vars2 [3] * (*x) + vars2 [4] * (*y) + vars2 [5]; x3 = vars3 [0] * (*x) + vars3 [1] * (*y) + vars3 [2]; y3 = vars3 [3] * (*x) + vars3 [4] * (*y) + vars3 [5]; x4 = vars4 [0] * (*x) + vars4 [1] * (*y) + vars4 [2]; y4 = vars4 [3] * (*x) + vars4 [4] * (*y) + vars4 [5]; } *x = (int)((x1 + x2 + x3 + x4)/ ); *y = (int)((y1 + y2 + y3 + y4)/ ); BOOL SetMouseCalibrationParameters (const POINT* src_pts, const POINT* dst_pts) { POINT my_src_pts [3]; POINT my_dst_pts [3]; my_src_pts [0] = src_pts [0]; my_src_pts [1] = src_pts [1]; my_src_pts [2] = src_pts [4]; my_dst_pts [0] = dst_pts [0]; my_dst_pts [1] = dst_pts [1]; my_dst_pts [2] = dst_pts [4]; if (!dogaussianelimination_f (vars1, my_src_pts, my_dst_pts)) return FALSE; my_src_pts [0] = src_pts [1]; my_src_pts [1] = src_pts [2]; my_src_pts [2] = src_pts [4]; my_dst_pts [0] = dst_pts [1]; my_dst_pts [1] = dst_pts [2]; my_dst_pts [2] = dst_pts [4]; if (!dogaussianelimination_f (vars2, my_src_pts, my_dst_pts)) return FALSE; my_src_pts [0] = src_pts [2]; my_src_pts [1] = src_pts [3]; my_src_pts [2] = src_pts [4]; my_dst_pts [0] = dst_pts [2]; my_dst_pts [1] = dst_pts [3]; my_dst_pts [2] = dst_pts [4]; if (!dogaussianelimination_f (vars3, my_src_pts, my_dst_pts)) return FALSE; my_src_pts [0] = src_pts [0]; my_src_pts [1] = src_pts [3]; my_src_pts [2] = src_pts [4]; my_dst_pts [0] = dst_pts [0]; my_dst_pts [1] = dst_pts [3]; my_dst_pts [2] = dst_pts [4]; if (!dogaussianelimination_f (vars4, my_src_pts, my_dst_pts)) return FALSE; } mg_do_mouse_calibrate = do_mouse_calibrate; return TRUE; do_mouse_calibrate vars1 vars4 a f vars1 vars4 SetMouseCalibrationParameters 115

128 dogaussianelimination_f vars1 vars4 src_pts dst_pts SetMouseCalibrationParameters mg_do_mouse_calibrate do_mouse_calibrate NULL mg_do_mouse_calibrate MiniGUI (10,10) (9,9) MiniGUI DO_MOUSE_CALIBRATE_PROC mg_do_mouse_calibrate; #define NR_EQUATIONS 6 #define LSHIFT(x) ((x)<<10) #define RSHIFT(x) ((x)>>12) static int vars1 [NR_EQUATIONS], vars2 [NR_EQUATIONS], vars3 [NR_EQUATIONS], vars4 [NR_EQUATI ONS]; static void do_mouse_calibrate (int* x, int* y) { int x1, y1, x2, y2, x3, y3, x4, y4; x1 = vars1 [0] * (*x) + vars1 [1] * (*y) + vars1 [2]; y1 = vars1 [3] * (*x) + vars1 [4] * (*y) + vars1 [5]; x2 = vars2 [0] * (*x) + vars2 [1] * (*y) + vars2 [2]; y2 = vars2 [3] * (*x) + vars2 [4] * (*y) + vars2 [5]; x3 = vars3 [0] * (*x) + vars3 [1] * (*y) + vars3 [2]; y3 = vars3 [3] * (*x) + vars3 [4] * (*y) + vars3 [5]; x4 = vars4 [0] * (*x) + vars4 [1] * (*y) + vars4 [2]; 116

129 y4 = vars4 [3] * (*x) + vars4 [4] * (*y) + vars4 [5]; } *x = RSHIFT (x1 + x2 + x3 + x4); *y = RSHIFT (y1 + y2 + y3 + y4); static BOOL dogaussianelimination (int* x, const POINT* src_pts, const POINT* dst_pts) { int x12, x23, y12, y23, nx12, nx23, ny12, ny23; int numerator, denominator1, denominator2; x12 = (src_pts [0].x - src_pts [1].x); x23 = (src_pts [1].x - src_pts [2].x); y12 = (src_pts [0].y - src_pts [1].y); y23 = (src_pts [1].y - src_pts [2].y); nx12 = (dst_pts [0].x - dst_pts [1].x); nx23 = (dst_pts [1].x - dst_pts [2].x); ny12 = (dst_pts [0].y - dst_pts [1].y); ny23 = (dst_pts [1].y - dst_pts [2].y); denominator1 = x12*y23 - x23*y12; if (denominator1 == 0) return FALSE; denominator2 = y12*x23 - y23*x12; if (denominator2 == 0) return FALSE; numerator = nx12*y23 - nx23*y12; x [0] = LSHIFT (numerator) / denominator1; numerator = nx12*x23 - nx23*x12; x [1] = LSHIFT (numerator) / denominator2; x [2] = LSHIFT (dst_pts [0].x) - x [0] * src_pts [0].x - x [1] * src_pts [0].y; numerator = ny12*y23 - ny23*y12; x [3] = LSHIFT (numerator) / denominator1; numerator = ny12*x23 - ny23*x12; x [4] = LSHIFT (numerator) / denominator2; x [5] = LSHIFT (dst_pts [0].y) - x [3] * src_pts [0].x - x [4] * src_pts [0].y; } return TRUE; BOOL SetMouseCalibrationParameters (const POINT* src_pts, const POINT* dst_pts) { POINT my_src_pts [3]; POINT my_dst_pts [3]; my_src_pts [0] = src_pts [0]; my_src_pts [1] = src_pts [1]; my_src_pts [2] = src_pts [4]; my_dst_pts [0] = dst_pts [0]; my_dst_pts [1] = dst_pts [1]; my_dst_pts [2] = dst_pts [4]; if (!dogaussianelimination (vars1, my_src_pts, my_dst_pts)) return FALSE; my_src_pts [0] = src_pts [1]; my_src_pts [1] = src_pts [2]; my_src_pts [2] = src_pts [4]; my_dst_pts [0] = dst_pts [1]; my_dst_pts [1] = dst_pts [2]; my_dst_pts [2] = dst_pts [4]; if (!dogaussianelimination (vars2, my_src_pts, my_dst_pts)) return FALSE; my_src_pts [0] = src_pts [2]; my_src_pts [1] = src_pts [3]; my_src_pts [2] = src_pts [4]; my_dst_pts [0] = dst_pts [2]; my_dst_pts [1] = dst_pts [3]; my_dst_pts [2] = dst_pts [4]; if (!dogaussianelimination (vars3, my_src_pts, my_dst_pts)) return FALSE; my_src_pts [0] = src_pts [0]; my_src_pts [1] = src_pts [3]; my_src_pts [2] = src_pts [4]; my_dst_pts [0] = dst_pts [0]; my_dst_pts [1] = dst_pts [3]; 117

130 my_dst_pts [2] = dst_pts [4]; if (!dogaussianelimination (vars4, my_src_pts, my_dst_pts)) return FALSE; } mg_do_mouse_calibrate = do_mouse_calibrate; return TRUE; dogaussianelimination vars1 vars4 vars1 vars LSHIFT do_mouse_calibrate 12 vars1 vars4 double 8 int 4 fabs (denominator2) < 0.0E-10 denominator1 == 0 MiniGUI

131 static inline fixed ftofix (double x) { if (x > ) { errno = ERANGE; return 0x7FFFFFFF; } if (x < ) { errno = ERANGE; return -0x7FFFFFFF; } } return (long)(x * (x < 0? -0.5 : 0.5)); static inline double fixtof (fixed x) { return (double)x / ; } static inline fixed itofix (int x) { return x << 16; } static inline int fixtoi (fixed x) { return (x >> 16) + ((x & 0x8000) >> 15); } 0~2π MiniGUI MiniGUI 12.6 Linux/uClinux make makefile 119

132 Linux/uClinux MiniGUI Linux/uClinux 120

133 121

134 4 Linux/uClinux MiniGUI Linux/uClinux Linux/uClinux MiniGUI MiniGUI SkyEye Xcopilot MiniGUI MiniGUI MiniGUI MiniGUI Windows Windows MiniGUI MiniGUI Windows 24 mgdemo-win rar 25 Windows README.txt wvfb.exe mgdemo_win32.exe wvfb MiniGUI 24 /minigui/mgdemo tar.gz Win32 Linux PC 25 /minigui 122

135 MiniGUI Windows MiniGUI Windows Windows MiniGUI Windows Windows wvfb LCD MiniGUI Windows wvfb LCD MiniGUI MiniGUI Windows MiniGUI Windows MiniGUI Windows MiniGUI Windows MS Visual Studio 98 MiniGUI Windows minigui-dev-1.6-win32.rar 123

136 Windows README helloworld MiniGUI helloworld wvfb hellowolrd helloworld.exe dll minigui.dll DLL wvfb Windows MiniGUI 124

137 MiniGUI helloworld.c MiniGUI Win32 MiniGUI Windows MiniGUI MiniGUI MiniGUI MiniGUI Windows MiniGUI Linux/uClinux MiniGUI 1. Linux PC MiniGUI MiniGUI 2. PC MiniGUI 3. MiniGUI MiniGUI 4. MiniGUI MiniGUI-STR MiniGUI MiniGUI MiniGUI MiniGUI-VAR Linux uclinux MiniGUI-STR MiniGUI-VAR A MiniGUI-STR MiniGUI-VAR Linux PC 125

138 MiniGUI-STR MiniGUI Linux EP7312 SkyEye uclinux Xcopilot MiniGUI-STR MiniGUI-STR MiniGUI-STR 1) libminigui-str tar.gz MiniGUI-STR V1.6.2 MiniGUI 2) minigui-res-str-1.6.tar.gz MiniGUI-STR MiniGUI-STR ISO GB2312 3) mg-samples-str tar.gz MiniGUI-STR MiniGUI MiniGUI-STR MiniGUI mg-samples MiniGUI-STR 4) mde-str tar.gz MiniGUI-STR MiniGUI MiniGUI-STR MiniGUI mde MiniGUI-STR MiniGUI-STR MiniGUI-STR V1.6.2 MiniGUI minigui/ mgdemo tar.gz MiniGUI-STR MiniGUI minigui-dev-1.6-linux.tar.gz minigui-dev-1.6-win32.rar GPL MiniGUI-STR 1.6.x GPL mg-samples-str minigui-res-str MiniGUI 126

139 MiniGUI MiniGUI-STR MiniGUI PC Linux PC MiniGUI X Window FrameBuffer qvfb Linux Linux FrameBuffer qvfb FrameBuffer MiniGUI 1) QVFB QVFB Qt FrameBuffer Qt Qt Linux KDE X Window Qt 2 Qt 3 src/tools Qt QVFB qvfb-1.0.tar.gz qvfb user$ tar zxf qvfb-1.0.tar.gz user$ cd qvfb-1.0 user$./configure user$ make qvfb user$ su c make install make install make install make install qvfb /usr/local/bin 127

140 /usr/local/bin qvfb qvfb X Window qvfb & user$ qvfb & qvfb qvfb qvfb qvfb qvfb qvfb PC

141 2) Linux FrameBuffer FrameBuffer Linux 2.2.xx /dev/fb0 /dev/fb1 1024x768-8 user$ dd if=/dev/zero of=/dev/fb0 bs=1024 count=768 FrameBuffer FrameBuffer /dev/fb0 mmap memset 1024x768-8 int fb; unsigned char* fb_mem; fb = open ("/dev/fb0", O_RDWR); fb_mem = mmap (NULL, 1024*768, PROT_READ PROT_WRITE,MAP_SHARED,fb,0); memset (fb_mem, 0, 1024*768); FrameBuffer Linux FrameBuffer FrameBuffer PC PC VESA VESA PC VESA VESA Linux VESA FrameBuffer VESA VESA FrameBuffer VESA FrameBuffer

142 LILO GRUB Linux VESA FrameBuffer fbset FrameBuffer fbset FrameBuffer /proc/devices fb cat /dev/fb0 > /dev/null /dev/fb0 VESA FrameBuffer Linux VESA FrameBuffer VESA FrameBuffer LILO GRUB Linux VESA FrameBuffer VESA FrameBuffer Linux VESA FrameBuffer 26 LILO /etc/lilo.conf /etc/lilo.conf boot = /dev/hda2 timeout = 50 prompt read-only image = /boot/vmlinuz label = linux root = /dev/hda2 other = /dev/hda1 VESA FrameBuffer /boot/vmlinuz fb 26 VESA 386 Linux 130

143 image = /boot/vmlinuz fb label = linuxfb root = /dev/hda2 vga = 0x317 other = /dev/hda1 # VESA FrameBuffer # # # VESA root# lilo vga=0x0317 VESA FrameBuffer 1024x x0317 VESA Colours 640x x x x x x bits?? 0x302??? 8 bits 0x300 0x301 0x303 0x305 0x307 0x31C 15 bits? 0x310 0x313 0x316 0x319 0x31D 16 bits? 0x311 0x314 0x317 0x31A 0x31E 24 bits? 0x312 0x315 0x318 0x31B 0x31F 32 bits?????? GRUB /boot/grub/menu.lst kernel vga=0x0317 # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You do not have a /boot partition. This means that # all kernel and initrd paths are relative to /, eg. # root (hd0,0) # kernel /boot/vmlinuz-version ro root=/dev/hda1 # initrd /boot/initrd-version.img #boot=/dev/hda default=0 timeout=10 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Red Hat Linux ( , FrameBuffer) root (hd0,0) kernel /boot/vmlinuz ro root=/dev/hda1 vga=0x0317 initrd /boot/initrd img title Red Hat Linux ( ) root (hd0,0) kernel /boot/vmlinuz ro root=/dev/hda1 initrd /boot/initrd img GRUB LILO 131

144 PC lilo: FrameBuffer Linux Linux LOGO VESA FrameBuffer Linux FrameBuffer Linux FrameBuffer ATI Mach64 ATI Radeon NeoMagic 3Dfx Banshee/Voodoo3 Linux FrameBuffer fbset FrameBuffer Linux VESA FrameBuffer Linux FrameBuffer Framebuffer-HOWTO 27 MiniGUI qvfb qvfb FrameBuffer Linux/uClinux FrameBuffer PC MiniGUI Linux/uClinux FrameBuffer /dev/fb MiniGUI-STR 1) MiniGUI-STR MiniGUI Graphics and Input Abstract Layer GAL IAL Linux 27 Linux 132

145 GAL IAL MiniGUI QVFB Linux FrameBuffer MiniGUI Linux/uClinux FrameBuffer PC MiniGUI MiniGUI Linux/uClinux FrameBuffer Linux/uClinux MiniGUI MiniGUI MiniGUI-STR V MiniGUI-STR V1.6.2 qvfb qvfb MiniGUI galqvfb fbcon Linux/uClinux FrameBuffer MiniGUI galfbcon 4-2 MiniGUI-STR V1.6.2 qvfb qvfb qvfbial MiniGUI qvfb MiniGUI console Linux FrameBuffer nativeial MiniGUI dummy dummyial MiniGUI auto MiniGUI autoial 133

146 ipaq Compaq ipaq H3600/H3800 ipaqial arm3000 ARM3000 arm3000ial fft fft7202ial hh2410r3 2410R3 hh2410r3ial embest embest2410ial 2) MiniGUI-STR MiniGUI JPEG PNG libjpeg libpng MiniGUI MiniGUI MiniGUI-STR MiniGUI-STR libjpeg JPEG jpgsupport libpng PNG pngsupport Linux 3) MiniGUI 3 makefile makefile makefile makefile GNU Autoconf/Automake makefile MiniGUI MiniGUI GNU Automake/Autoconf GNU Autoconf Automake Shell makefile Apache MySQL Autoconf/Automake MiniGUI Autoconf/Automake./configure make make install configure makefile 134

147 make all make make clean *.o make distclean configure Makefile make install bin_programs /usr/local/bin make dist PACKAGE-VERSION.tar.gz PACKAGE VERSION configure.in AM_INIT_AUTOMAKE (PACKAGE, VERSION) make distcheck make dist PACKAGE-VERSION.tar.gz configure make all PACKAGE-VERSION.tar.gz Autoconf/Automake Autoconf/Automake configure Shell Linux/UNIX Shell MiniGUI configure makefile configure SkyEye Xcopilot makefile 4) MiniGUI-STR MiniGUI-STR PC libminigui-str tar.gz minigui-res-str-1.6.tar.gz mg-samples-str tar.gz /minigui/ 135

148 libminigui-str tar.gz user$ tar zxf <path to cdrom>/minigui/libminigui-str tar.gz libminigui-str /configure user$ cd libminigui-str user$./configure./configure Makefile./configure --help B MiniGUI-STR./configure --enable-xxx MiniGUI./configure --disable-xxx./configure make make install libminigui root user$ make user$ su -c make install./configure MiniGUI MiniGUI --disable libjpeg JPEG user$./configure --disable-jpgsupport /usr/local/lib /etc/ld.so.conf 28 ldconfig user$ su -c /sbin/ldconfig 28 Linux PC /etc/ld.so.conf ldconfig /etc/ld.so.cache 136

149 MiniGUI /usr/local/ /usr/local/etc/ /usr/local/lib/ /usr/local/include/minigui/ MiniGUI user$ ls -l R /usr/local/include/minigui/ /usr/local/include/minigui/: -rw-r--r-- 1 root root :37 common.h -rw-r--r-- 1 root root :37 config.h -rw-r--r-- 1 root root :37 control.h drwxr-xr-x 2 root root :37 ctrl -rw-r--r-- 1 root root :37 dti.c -rw-r--r-- 1 root root :37 endianrw.h -rw-r--r-- 1 root root :37 fixedmath.h -rw-r--r-- 1 root root :37 gdi.h -rw-r--r-- 1 root root :37 mgext.h -rw-r--r-- 1 root root :37 minigui.h -rw-r--r-- 1 root root :37 own_malloc.h -rw-r--r-- 1 root root :37 own_stdio.h -rw-r--r-- 1 root root :37 window.h /usr/local/include/minigui/ctrl: -rw-r--r-- 1 root root :37 button.h -rw-r--r-- 1 root root :37 combobox.h -rw-r--r-- 1 root root :37 ctrlhelper.h -rw-r--r-- 1 root root :37 edit.h -rw-r--r-- 1 root root :37 listbox.h -rw-r--r-- 1 root root :37 menubutton.h -rw-r--r-- 1 root root :37 newtoolbar.h -rw-r--r-- 1 root root :37 progressbar.h -rw-r--r-- 1 root root :37 propsheet.h -rw-r--r-- 1 root root :37 scrollbar.h -rw-r--r-- 1 root root :37 scrollview.h -rw-r--r-- 1 root root :37 static.h -rw-r--r-- 1 root root :37 textedit.h -rw-r--r-- 1 root root :37 toolbar.h -rw-r--r-- 1 root root :37 trackbar.h $ ls l /usr/local/lib lrwxrwxrwx 1 root root :07 libminigui-1.6.so.2 -> \ libminigui-1.6.so rwxr-xr-x 1 root root :07 libminigui-1.6.so rw-r--r-- 1 root root :07 libminigui.a -rwxr-xr-x 1 root root :07 libminigui.la lrwxrwxrwx 1 root root :07 libminigui.so -> \ libminigui-1.6.so MiniGUI --prefix MiniGUI-STR root 137

150 make install $ tar zxf <path to cdrom>/minigui/minigui-res-str-1.6.tar.gz $ cd minigui-res-str-1.6 $ su -c make install MiniGUI /usr/local/lib/minigui/res/ MiniGUI MiniGUI 5) MiniGUI-STR mg-samples-str user$ tar zxf <path to cdrom>/minigui/mg-samples-str tar.gz user$ cd mg-samples-str user$./configure user$ make MiniGUI-STR src/ src/ MiniGUI MiniGUI qvfb Linux FrameBuffer qvfb MiniGUI 1) X Window qvfb 2) qvfb file->configure ) MiniGUI /usr/local/etc/minigui.cfg [system] gal_engine=qvfb ial_engine=qvfb [qvfb] defaultmode=320x240-16bpp display=0 138

151 MiniGUI MiniGUI qvfb qvfb MiniGUI Linux FrameBuffer MiniGUI 1) Linux X Window <Ctrl+Alt+F1> 2) MiniGUI /usr/local/etc/minigui.cfg [system] gal_engine=fbcon ial_engine=console mdev=/dev/mouse mtype=ps2 [fbcon] defaultmode=1024x768-16bpp PS2 /dev/mouse FrameBuffer 1024x mtype=none Linux MiniGUI 139

152 <Ctrl+Alt+BackSpace> MiniGUI <Ctrl+Esc> MiniGUI 4-6 Linux MiniGUI mde-str tar.gz 4-6 Linux FrameBuffer MiniGUI SkyEye 2004 EP7312 LCD 29 SkyEye Linux MiniGUI SkyEye EP7312 LCD SkyEye ywc02@mails.tsinghua.edu.cn 140

153 SkyEye EP7312 armlinux /opt/armlinux/linux armlinux /usr/local/arm/ /armlinux/ep7312/ SkyEye EP7312 LCD armlinux /armlinux/ep7312/armlinux4skyeye-ep7312.tar.gz /opt/armlinux/ep7312 root# cd /opt/armlinux/ root# mkdir /opt/armlinux/ep7312 root# cd ep7312 root# cp <path to cdrom>/armlinux/ep7312/armlinux4skyeye-ep7312.tar.gz. root# tar jxf armlinux4skyeye-ep7312.tar.gz LCD FrameBuffer armlinux root# cd /opt/armlinux/ root# cp ep7312/armlinux4skyeye-ep7312/skyeye_ts_drv.[ch] linux /drivers/char/ root# cp ep7312/armlinux4skyeye-ep7312/ep7312_sys.h linux /drivers/char/ root# cp ep7312/armlinux4skyeye-ep7312/ep7312.h linux /drivers/video/ root# cp ep7312/armlinux4skyeye-ep7312/clps711xfb.c linux /drivers/video/ -f clps711xfb.c SkyEye EP7312 LCD FrameBuffer CLPS711x FrameBuffer EP Linux Linux linux /drivers/char/config.in 33 bool 'Touch scren driver support for SkyEye EP7312 simulation' CONFIG_TS_SKYEYE_EP7312 linux /drivers/char/makefile

154 obj-$(config_ts_skyeye_ep7312) += skyeye_ts_drv.o SkyEye EP7312 Linux make menuconfig Linux linux / make menuconfig Linux System Type CLPS711X/EP721X Implementations EDB7312 Character devices 4-7 Virtual terminal SkyEye EP7312 Touch scren driver support for SkyEye EP7312 simulation 4-7 Linux 142 Console drivers VGA tex console Frame-buffer Support 4-8

155 4-8 Linux FrameBuffer make menuconfig linux /.config CONFIG_VT=y CONFIG_TS_SKYEYE_EP7312_TS=y CONFIG_FB=y CONFIG_DUMMY_CONSOLE=y CONFIG_FB_CLPS711X=y CONFIG_FBCON_ADVANCED=y CONFIG_FBCON_MFB=y CONFIG_FBCON_CFB2=y CONFIG_FBCON_CFB4=y CONFIG_FBCON_CFB8=y CONFIG_FBCON_CFB16=y SkyEye EP7312 LCD Linux 143

156 root# make dep; make bzimage SkyEye EP7312 MiniGUI MiniGUI-STR SkyEye EP7312 MiniGUI src/ial/skyeye-ep7312.h src/ial/skyeye-ep7312.c SkyEyeEP7312 MiniGUI src/ial/ial.c... #ifdef _SKYEYE_EP7312_IAL #include "skyeye-ep7312.h" #endif... static INPUT inputs [] = {... #ifdef _SKYEYE_EP7312_IAL {"SkyEyeEP7312", InitSkyEyeEP7312Input, TermSkyEyeEP7312Input}, #endif... } inputs MiniGUI MiniGUI MiniGUI MiniGUI.cfg SkyEye EP7312 SkyEyeEP7312 InitSkyEyeEP7312Input TermSkyEyeEP7312Input skyeye-ep7312.h skyeye-ep7312.c SkyEye EP7312 Xcopilot Xcpilot --enable-skyeyeep7312ial MiniGUI MiniGUI --enable-skyeyeep7312ial 144

157 _SKYEYE_EP7312_IAL MiniGUI SkyEye EP7312 MiniGUI-STR MiniGUI-STR SkyEye EP7312 MiniGUI-STR MiniGUI-STR user$ cd libminigui-str build/ buildlib-linux-ep7312-skyeye #!/bin/bash rm config.cache config.status -f CC=arm-linux-gcc \ CFLAGS=-I/opt/armlinux/linux /include \./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ \ --build=i386-linux \ --host=arm-unknown-linux \ --target=arm-unknown-linux \ --disable-static \ --disable-cursor \ --disable-micemoveable \ --disable-galqvfb \ --enable-nativegal \ --enable-skyeyeep7312ial \ --disable-qvfbial \ --disable-nativeial \ --disable-latin9support \ --disable-big5support \ --disable-imegb2312 \ --disable-savebitmap \ --disable-savescreen \ --disable-aboutdlg \ --disable-dblclk CC=arm-linux-gcc configure makefile arm-linux-gcc C CFLAGS=-I/opt/armlinux/linux /include 145

158 configure makefile C -I/opt/armlinux/linux /include Linux MiniGUI Linux./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ \ --prefix MiniGUI make install MiniGUI /usr/local/arm/2.95.3/arm-linux/etc/ /usr/local/arm/2.95.3/arm-linux/lib/ /usr/local/arm/2.95.3/arm-linux/include/ --build=i386-linux \ --host=arm-unknown-linux \ --target=arm-unknown-linux \ configure i386 build arm-linux host target --disable-cursor \ --disable-micemoveable \ --disable-galqvfb \ --disable-nativeial \ --disable-qvfbial \ --enable-skyeyeep7312ial \ --disable-latin9support \ --disable-big5support \ --disable-imegb2312 \ --disable-savebitmap \ --disable-savescreen \ --disable-aboutdlg \ --disable-dblclk MiniGUI SkyEye EP enable-skyeyeep7312ial SkyEye EP7312 B MiniGUI-STR MiniGUI MiniGUI-Threads MiniGUI-STR MiniGUI make make install 146

159 user$ cd libminigui-str user$./build/buildlib-linux-ep7312-skyeye user$ make clean; make user$ su c make install --prefix MiniGUI user$ cd /usr/local/arm/2.95.3/arm-linux user$ ls etc/ include/minigui/ lib/libminigui* -l -R -rwxr-xr-x 1 root dip Mar 14 16:30 lib/libminigui.a lrwxrwxrwx 1 root dip 23 Mar 14 16:30 \ lib/libminigui-1.6.so.2 -> libminigui-1.6.so rwxr-xr-x 1 root dip Mar 14 16:30 lib/libminigui-1.6.so rwxr-xr-x 1 root dip 748 Mar 14 16:30 lib/libminigui.la lrwxrwxrwx 1 root dip 23 Mar 14 16:30 \ lib/libminigui.so -> libminigui-1.6.so etc/: -rw-r--r-- 1 root dip 5335 Mar 14 16:30 MiniGUI.cfg include/minigui/: -rw-r--r-- 1 root dip Mar 14 16:30 common.h -rw-r--r-- 1 root dip Mar 14 16:30 config.h -rw-r--r-- 1 root dip 3410 Mar 14 16:30 control.h drwxr-sr-x 2 root dip 4096 Mar 14 16:30 ctrl -rw-r--r-- 1 root dip 2250 Mar 14 16:30 dti.c -rw-r--r-- 1 root dip Mar 14 16:30 endianrw.h -rw-r--r-- 1 root dip Mar 14 16:30 fixedmath.h -rw-r--r-- 1 root dip Mar 14 16:30 gdi.h -rw-r--r-- 1 root dip Mar 14 16:30 minigui.h -rw-r--r-- 1 root dip Mar 14 16:30 window.h include/minigui/ctrl: -rw-r--r-- 1 root dip Mar 14 16:30 button.h -rw-r--r-- 1 root dip Mar 14 16:30 combobox.h -rw-r--r-- 1 root dip Mar 14 16:30 ctrlhelper.h -rw-r--r-- 1 root dip Mar 14 16:30 edit.h -rw-r--r-- 1 root dip Mar 14 16:30 listbox.h -rw-r--r-- 1 root dip 9615 Mar 14 16:30 menubutton.h -rw-r--r-- 1 root dip Mar 14 16:30 newtoolbar.h -rw-r--r-- 1 root dip 5653 Mar 14 16:30 progressbar.h -rw-r--r-- 1 root dip 9601 Mar 14 16:30 propsheet.h -rw-r--r-- 1 root dip 2875 Mar 14 16:30 scrollbar.h -rw-r--r-- 1 root dip Mar 14 16:30 scrollview.h -rw-r--r-- 1 root dip 7190 Mar 14 16:30 static.h -rw-r--r-- 1 root dip 2966 Mar 14 16:30 textedit.h -rw-r--r-- 1 root dip 4107 Mar 14 16:30 toolbar.h -rw-r--r-- 1 root dip Mar 14 16:30 trackbar.h SkyEye EP7312 MiniGUI-STR MiniGUI MiniGUI MiniGUI 147

160 4.3.4 SkyEye EP7312 MiniGUI 1) MiniGUI MiniGUI 3.1 l MiniGUI user$ arm-linux-gcc -Wall -O2 -o helloworld helloworld.c -lminigui lpthread mg-samples-str configure makefile user$ cd <path to mg-samples-str-1.6.2> user$./build-linux-ep7312-skyeye user$ make clean; make mg-samples-str SkyEye EP7312 2) MiniGUI MiniGUI SkyEye EP7312 ROMFS ROMFS skyeye.conf ROMFS initrd.img MiniGUI ROMFS initrd.img /armlinux/ep7312/ ROMFS 1. romfs/ root# mkdir /opt/armlinux/ep7312/romfs -p 148

161 root# cd /opt/armlinux/ep initrd.img root# cp <path to cdrom>/armlinux/ep7312/initrd.img. root# mount -t ext2 -o loop initrd.img /mnt/tmp/ 3. romfs root# cp /mnt/tmp/* romfs/ -a root# umount /mnt/tmp 4. minigui-res-str minigui-res-str config.linux prefix prefix=/opt/armlinux/ep7312/romfs make install MiniGUI-STR /opt/armlinux/ep7312/romfs/usr/local/lib/minigui root# cd romfs/usr/local/lib/minigui/res/ root# rm bmp/*flat.bmp -f root# rm bmp/*phone.bmp -f root# rm icon/*flat.ico -f root# rm imetab/ -rf 5. MiniGUI C libpthread MiniGUI ROMFS /lib root# cd /opt/armlinux/ep7312/romfs root# cp /usr/local/arm/2.95.3/arm-linux/lib/libminigui-1.6.so.2 lib/ root# cp /usr/local/arm/2.95.3/arm-linux/lib/libpthread.so.0 lib/ root# cp /usr/local/arm/2.95.3/arm-linux/lib/libm.so.6 lib/ root# cp /usr/local/arm/2.95.3/arm-linux/lib/libc.so.6 lib/ root# cp /usr/local/arm/2.95.3/arm-linux/lib/ld-linux.so.2 lib/ root# arm-linux-strip lib/* ld-linux.so.2 libc.so.6 libm.so.6 libpthread.so.0 ROMFS /lib arm-linux-strip 149

162 arm-linux-strings <excutable> grep ^lib libminigui.so libminigui-1.6.so ROMFS root# mkdir p usr/local/arm/2.95.3/arm-linux/ root# ln s /lib usr/local/arm/2.95.3/arm-linux/lib ROMFS /usr/local/arm/2.95.3/arm-linux/lib ROMFS /lib 7. MiniGUI root# mkdir usr/local/etc root# cp /usr/local/arm/2.95.3/arm-linux/etc/minigui.cfg usr/local/etc/ [system] # GAL engine gal_engine=fbcon # IAL engine ial_engine=skyeyeep7312 mdev=/dev/ts mtype=def 8. MiniGUI ROMFS /bin root# arm-linux-strip <path to mg-samples-str-1.6.2>/src/ root# cp <path to mg-samples-str-1.6.2>/src/helloworld bin/ 9. genromfs ROMFS 150

163 root# cd /opt/armlinux/ep7312 root# genromfs d romfs f romfs.img root# ls -l romfs.img -rw-r--r-- 1 root root Mar 15 17:03 romfs.img MiniGUI ROMFS 3) MiniGUI /opt/armlinux/ep7312 skyeye.conf #skyeye config for MiniGUI sample cpu: arm720t mach: ep7312 lcd:state=on mem_bank: map=i, type=rw, addr=0x , size=0x mem_bank: map=m, type=r, addr=0x , size=0x000c0000 mem_bank: map=m, type=r, addr=0x000c0000, size=0x , file=./romfs.img mem_bank: map=m, type=rw, addr=0xc , size=0x skyeye.conf romfs.img size 0x Linux /opt/armlinux/ep7312 X Window SkyEye root# cp /opt/armlinux/linux /vmlinux. root# skyeye vmlinux (SkyEye) target sim (SkyEye) load (SkyEye) run /bin helloworld Welcome to / \ / \ / \_/ \ _ / _ \ / /\ /\ \ / /_\ \ / / \_/ \ \ _ \ \ \/ / / / \ \ \ \ _ _ / \ /_/ \_\ \_\ _ _ _ _ _ \ \_/\_/ ARMLinux for Skyeye For further information check: Execution Finished, Exiting Command: /bin/sh Sash command shell (version 1.1.1) /> cd bin /bin>./helloworld MiniGUI helloworld SkyEye 151

164 LCD SkyEye EP7312 MiniGUI helloworld mde-str MiniGUI user$ cd <path to mde-str-1.6.2> user$./build-linux-ep7312-skyeye user$ make clean; make same ROMFS root# cd /opt/armlinux/ep7312/romfs/bin root# cp <path to mde-str-1.6.2>/same/same. root# mkdir res; cd res root# cp <path to mde-str-1.6.2>/same/res/*.gif. romfs.img SkyEye SkyEye LCD MiniGUI same SkyEye LCD MiniGUI SkyEye LCD SkyEye 152

165 4-10 SkyEye EP7312 MiniGUI same uclibc uclinux-dist /opt/uclinux uclinux-dist Xcopilot /uclinux/ uclinux-dist root# cd /opt/uclinux/uclinux-dist root# patch p1 < <path to the patch>/uclinux-dist patch Xcopilot MiniGUI FrameBuffer /opt/uclinux/uclinux-dist root# make menuconfig uclinux-dist

166 4-11 uclinux Vendor/Product 3com/Xcopilot Kernel linux-2.4.x Libc Version uclibc Customize Kernel Settings Character devices digitizer support Virtual terminal digitizer support Xcopilot Virtual terminal Frame-buffer support 154

167 4-12 Frame-buffer support Support for frame buffer devices Dragonball frame buffer Xcopilot FrameBuffer Advanced low level driver options Monochrome support Xcopilot

168 4-13 FrameBuffer MiniGUI uclinux uclinux-dist/uclibc uclibc MiniGUI root# make TARGET_ARCH=m68k menuconfig uclibc

169 4-14 uclibc make TARGET_ARCH=m68k menuconfig uclibc m68k ARM make TARGET_ARCH=arm menuconfig Target Architecture Features and Options Enable floating point number support Enable full C99 math library support 4-15 uclibc 4-15 uclibc Xcopilot MiniGUI-Threads uclibc General Library Settings POSIX Threading Support

170 4-16 uclibc POSIX uclibc uclinux MiniGUI-Standalone MiniGUI MiniGUI-Standalone uclinux-dist uclibc root# cd /opt/uclinux/uclinux-dist root# make dep root# make uclinux-dist user/ Xcopilot ROM images/ pilot.rom Xcopilot MiniGUI MiniGUI-STR Xcopilot MiniGUI src/ial/mc68x328.h src/ial/mc68x328.c MC68X328 MiniGUI src/ial/ial.c

171 #ifdef _MC68X328_IAL #include "mc68x328.h" #endif... static INPUT inputs [] = {... #ifdef _MC68X328_IAL {"MC68X328", InitMC68X328Input, TermMC68X328Input}, #endif... } inputs MiniGUI MiniGUI MiniGUI MiniGUI.cfg Xcopilot MC68X328 InitMC68X328Input TermMC68X328Input mc68x328.h mc68x328.c static int ts = -1;... BOOL InitMC68X328Input (INPUT* input, const char* mdev, const char* mtype) { int err; struct ts_drv_params drv_params; int mx1, mx2, my1, my2; int ux1, ux2, uy1, uy2; /* * open up the touch-panel device. * Return the fd if successful, or negative if unsuccessful. */ ts = open("/dev/ts", O_NONBLOCK O_RDWR); if (ts < 0) { fprintf (stderr, "Error %d opening touch panel\n", errno); return FALSE; } err = ioctl(ts, TS_PARAMS_GET, &drv_params); if (err == -1) { close (ts); return FALSE; } drv_params.version_req = MC68328DIGI_VERSION; drv_params.event_queue_on = 1; drv_params.sample_ms = 10; #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 4, 0) drv_params.deglitch_on = 1; #else drv_params.deglitch_ms = 0; #endif drv_params.follow_thrs = 0; drv_params.mv_thrs = 2; drv_params.y_max = ; // to allow scribble area drv_params.y_min = 0; drv_params.x_max = 159; drv_params.x_min = 0; drv_params.xy_swap = 0; 159

172 /* * according to mc68328digi.h 'How to calculate the parameters', * we have measured: */ mx1 = 508; ux1 = 0; my1 = 508; uy1 = 0; mx2 = 188; ux2 = 159; my2 = 188; uy2 = 159; /* * now calculate the params: */ drv_params.x_ratio_num = ux1 - ux2; drv_params.x_ratio_den = mx1 - mx2; drv_params.x_offset = ux1 - mx1 * drv_params.x_ratio_num / drv_params.x_ratio_den; drv_params.y_ratio_num = uy1 - uy2; drv_params.y_ratio_den = my1 - my2; drv_params.y_offset = uy1 - my1 * drv_params.y_ratio_num / drv_params.y_ratio_den; err = ioctl(ts, TS_PARAMS_SET, &drv_params); if (err == -1) { close (ts); return FALSE; } input->update_mouse = mouse_update; input->get_mouse_xy = mouse_getxy; input->set_mouse_xy = NULL; input->get_mouse_button = mouse_getbutton; input->set_mouse_range = NULL; input->update_keyboard = NULL; input->get_keyboard_state = NULL; input->set_leds = NULL; } input->wait_event = wait_event; return TRUE; InitMC68X328Input /dev/ts iotcl LCD INPUT INPUT MiniGUI : Native Engine : TermMC68X328Input /dev/ts void TermMC68X328Input (void) { if (ts >= 0) close (ts); ts = -1; } 160

173 wait_event #ifdef _LITE_VERSION static int wait_event (int which, int maxfd, fd_set *in, fd_set *out, fd_set *except, struct timeval *timeout) #else static int wait_event (int which, fd_set *in, fd_set *out, fd_set *except, struct timeval *timeout) #endif { fd_set rfds; int retvalue = 0; int e; if (!in) { in = &rfds; FD_ZERO (in); } if ((which & IAL_MOUSEEVENT) && ts >= 0) { FD_SET (ts, in); #ifdef _LITE_VERSION if (ts > maxfd) maxfd = ts; #endif } #ifdef _LITE_VERSION e = select (maxfd + 1, in, out, except, timeout) ; #else e = select (FD_SETSIZE, in, out, except, timeout) ; #endif if (e > 0) { if (ts >= 0 && FD_ISSET (ts, in)) { FD_CLR (ts, in); retvalue = IAL_MOUSEEVENT; } } else if (e < 0) { return -1; } } return retvalue; select ts MiniGUI IAL_MOUSEEVENT MiniGUI mouse_update static int pen_down = 0; /* pen down */ static int mousex = 79, mousey = 79; /************************ Low Level Input Operations **********************/ /* * Mouse operations -- Event */ static int mouse_update(void) { struct ts_pen_info pen_info; int bytes_read; 161

174 if (ts < 0) return 0; bytes_read = read (ts, &pen_info, sizeof (pen_info)); if (bytes_read!= sizeof (pen_info)) { return 0; } switch(pen_info.event) { case EV_PEN_UP: pen_down = 0; mousex = pen_info.x; mousey = pen_info.y; break; case EV_PEN_DOWN: pen_down = IAL_MOUSE_LEFTBUTTON; mousex = pen_info.x; mousey = pen_info.y; break; case EV_PEN_MOVE: pen_down = IAL_MOUSE_LEFTBUTTON; mousex = pen_info.x; mousey = pen_info.y; break; } } return 1; read ts mouse_update 1 MiniGUI mouse_getxy mouse_getbutton static void mouse_getxy (int *x, int* y) { *x = mousex; *y = mousey; } static int mouse_getbutton (void) { return pen_down; } Xcopilot INPUT NULL... input->set_mouse_xy = NULL; input->set_mouse_range = NULL; input->update_keyboard = NULL; input->get_keyboard_state = NULL; input->set_leds = NULL; --enable-mc68x328ial 162

175 MiniGUI MiniGUI --enable-mc68x328ial _MC68X328_IAL MiniGUI Xcopilot MiniGUI-STR MiniGUI-STR Xcopilot MiniGUI-STR MiniGUI-STR user$ cd libminigui-str build/ buildlib-uclinux-xcopilot #!/bin/sh # # Please make sure that the following things are OK: # # 1. You have installed the m68k-elf-tools already. # 2. Your uclinux distribution has been installed into # the directory of '/opt/uclinux/uclinux-dist'. # 3. You configured the uclinux to use uclibc, and have # configured uclibc to support pthread. # 4. You have made the uclinux distribution. # 5. You have made a symbol link of "uclibc" to the correct uclibc directory. # rm config.cache config.status -f CC=m68k-elf-gcc \ CFLAGS="-m Os -I/opt/uclinux/uClinux-dist/lib/uClibc/include \ -I/opt/uclinux/uClinux-dist/linux-2.4.x/include -fno-builtin \ -mid-shared-library -mshared-library-id=0 " \ LDFLAGS="-Wl,-elf2flt -Wl,-move-rodata -Wl,-shared-lib-id,0 -Wl,-elf2flt -Wl,-move-rodata \ -L/opt/uclinux/uClinux-dist/lib/uClibc/lib \ -Wl,-R,/opt/uclinux/uClinux-dist/lib/uClibc/libc.gdb -lc" \./configure --prefix=/opt/uclinux/uclinux-dist/minigui/m68k-elf/ \ --build=i386-linux \ --host=m68k-elf-linux \ --target=m68k-elf-linux \ --disable-shared \ --with-osname=uclinux \ --with-style=flat \ --enable-lite \ --enable-standalone \ --disable-micemoveable \ --disable-cursor \ --enable-fblin1l \ --disable-fblin8 \ --disable-fblin16 \ --disable-fblin32 \ 163

176 --disable-textmode \ --enable-dummyial \ --enable-mc68x328ial \ --disable-nativeial \ --disable-qvfbial \ --disable-latin9support \ --disable-gbksupport \ --disable-big5support \ --disable-savebitmap \ --disable-jpgsupport \ --disable-pngsupport \ --disable-imegb2312 \ --disable-aboutdlg \ --disable-savescreen \ --enable-grayscreen \ --enable-tinyscreen CC=m68k-elf-gcc configure makefile m68k-elf-gcc C CFLAGS="-m Os -I/opt/uclinux/uClinux-dist/lib/uClibc/include \ -I/opt/uclinux/uClinux-dist/linux-2.4.x/include -fno-builtin \ -mid-shared-library -mshared-library-id=0 " configure makefile C C 3.1 -I/opt/uclinux/uClinux-dist/linux-2.4.x/include Linux MiniGUI Linux LDFLAGS="-Wl,-elf2flt -Wl,-move-rodata -Wl,-shared-lib-id,0 -Wl,-elf2flt -Wl,-move-rodata \ -L/opt/uclinux/uClinux-dist/lib/uClibc/lib \ -Wl,-R,/opt/uclinux/uClinux-dist/lib/uClibc/libc.gdb -lc" configure makefile 3.1 MiniGUI configure CC LDFLAGS m68k-elf-gcc./configure --prefix=/opt/uclinux/uclinux-dist/minigui/m68k-elf/ \ 164

177 --prefix MiniGUI make install MiniGUI /opt/uclinux/uclinux-dist/minigui/m68k-elf/etc/ /opt/uclinux/uclinux-dist/minigui/m68k-elf/lib/ /opt/uclinux/uclinux-dist/minigui/m68k-elf/include/ --build=i386-linux \ --host=m68k-elf-linux \ --target=m68k-elf-linux \ configure i386 build m68k-elf host target --disable-shared \ uclinux configure MiniGUI --with-osname=uclinux \ --with-style=flat \ --enable-lite \ --enable-standalone \ --disable-micemoveable \ --disable-cursor \ --enable-fblin1l \ --disable-fblin8 \ --disable-fblin16 \ --disable-fblin32 \ --disable-textmode \ --enable-dummyial \ --enable-mc68x328ial \ --disable-nativeial \ --disable-qvfbial \ --disable-latin9support \ --disable-gbksupport \ --disable-big5support \ --disable-savebitmap \ --disable-jpgsupport \ --disable-pngsupport \ --disable-imegb2312 \ --disable-aboutdlg \ --disable-savescreen \ --enable-grayscreen \ --enable-tinyscreen MiniGUI Xcopilot --enable-fblin1l --enable-mc68x328ial MiniGUI fbcon 165

178 LCD FrameBuffer Xcopilot B MiniGUI-STR MiniGUI MiniGUI-Standalone MiniGUI-STR MiniGUI make make install user$ cd libminigui-str user$./build/buildlib-uclinux-xcopilot user$ make clean; make user$ su c make install --prefix MiniGUI user$ cd /opt/uclinux/uclinux-dist/minigui/m68k-elf user $ ls -l -R.: total 12 drwxr-xr-x 2 root root 4096 Mar 12 00:48 etc drwxrwxr-x 3 root root 4096 Mar 12 00:48 include drwxrwxr-x 2 root root 4096 Mar 12 00:48 lib./etc: total 8 -rw-r--r-- 1 root root 5138 Mar 12 00:48 MiniGUI.cfg./include: total 4 drwxrwxr-x 3 root root 4096 Mar 12 00:48 minigui./include/minigui: total 612 -rw-r--r-- 1 root root Mar 12 00:48 common.h -rw-r--r-- 1 root root Mar 12 00:48 config.h -rw-r--r-- 1 root root 3410 Mar 12 00:48 control.h drwxrwxr-x 2 root root 4096 Mar 12 00:48 ctrl -rw-r--r-- 1 root root 2250 Mar 12 00:48 dti.c -rw-r--r-- 1 root root Mar 12 00:48 endianrw.h -rw-r--r-- 1 root root Mar 12 00:48 fixedmath.h -rw-r--r-- 1 root root Mar 12 00:48 gdi.h -rw-r--r-- 1 root root Mar 12 00:48 minigui.h -rw-r--r-- 1 root root Mar 12 00:48 window.h./include/minigui/ctrl: total 212 -rw-r--r-- 1 root root Mar 12 00:48 button.h -rw-r--r-- 1 root root Mar 12 00:48 combobox.h -rw-r--r-- 1 root root Mar 12 00:48 ctrlhelper.h -rw-r--r-- 1 root root Mar 12 00:48 edit.h -rw-r--r-- 1 root root Mar 12 00:48 listbox.h -rw-r--r-- 1 root root 9615 Mar 12 00:48 menubutton.h -rw-r--r-- 1 root root Mar 12 00:48 newtoolbar.h -rw-r--r-- 1 root root 5653 Mar 12 00:48 progressbar.h -rw-r--r-- 1 root root 9601 Mar 12 00:48 propsheet.h -rw-r--r-- 1 root root 2875 Mar 12 00:48 scrollbar.h -rw-r--r-- 1 root root Mar 12 00:48 scrollview.h -rw-r--r-- 1 root root 7190 Mar 12 00:48 static.h -rw-r--r-- 1 root root 2966 Mar 12 00:48 textedit.h -rw-r--r-- 1 root root 4107 Mar 12 00:48 toolbar.h -rw-r--r-- 1 root root Mar 12 00:48 trackbar.h./lib: total

179 -rw-r--r-- 1 root root Mar 12 00:48 libminigui.a -rwxr-xr-x 1 root root 742 Mar 12 00:48 libminigui.la Xcopilot MiniGUI-STR MiniGUI Xcopilot MiniGUI 1) MiniGUI MiniGUI MiniGUI uclinux-dist user uclinux-dist MiniGUI uclinux-dist romfs make image uclinux-dist/user mgdemo mg-samples-str helloworld.c root# cd /opt/uclinux/uclinux-dist/user root# mkdir mgdemo root# cd mgdemo root# cp <path to mg-samples-str>/src/helloworld.c. Makefile EXEC = mghello OBJS = helloworld.o CFLAGS+=-I/opt/uclinux/uClinux-dist/minigui/m68k-elf/include LDFLAGS+=-L/opt/uclinux/uClinux-dist/minigui/m68k-elf/lib LDLIBS+=-lminigui all: $(EXEC) $(EXEC): $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS$(LDLIBS_$@)) romfs: $(ROMFSINST) /bin/$(exec) clean: -rm -f $(EXEC) *.elf *.gdb *.o uclinux-dist/user/ Makefile dir_y += mgdemo 167

180 uclinux-dist make romfs/bin mghello mgdemo makefile mycal makefile CFLAGS MiniGUI LDFLAGS MiniGUI LDLIBS -lminigui MiniGUI 3.2 I L l mg-samples-str configure makefile user$ cd <path to mg-samples-str-1.6.2> user$./build-uclinux-xcopilot user$ make mg-samples-str Xcopilot 2) MiniGUI Xcopilot MiniGUI ROM MiniGUI Welcome to _ / _ _ \ \ \/ / _ _ / \ \ _ _ _ _ \ \_/\_/ _ For further information check: Execution Finished, Exiting 168

181 Sash command shell (version 1.1.1) /> cd bin /bin>./mghello MISC: Can not locate your MiniGUI.cfg file or bad files! DESKTOP: Initialization of misc things failure! pid 10: failed 256 /bin> uclinux-dist romfs/ ROM romfs MiniGUI romfs root# cd /opt/uclinux/uclinux-dist/ root# mkdir romfs/usr/local/etc -p root# cp minigui/m68k-elf/etc/minigui.cfg romfs/usr/local/etc/ MiniGUI.cfg MiniGUI minigui-res-str make install make minigui-res-str config.linux TOPDIR TOPDIR=/opt/uclinux/uClinux-dist/romfs make install MiniGUI TOPDIR uclinux-dist romfs minigui-res-str MiniGUI.cfg MiniGUI.cfg Xcopilot uclinux-dist romfs/usr/local/etc/minigui.cfg [system] [system] # GAL engine gal_engine=fbcon # IAL engine ial_engine=mc68x

182 mdev=/dev/ts mtype=unknown uclinux-dist make ROM mg-samples-str MiniGUI romfs/ make image root# cp <path to mg-samples-str> root# cp src/helloworld /opt/uclinux/uclinux-dist/romfs/bin/ root# cd /opt/uclinux/uclinux-dist root# make image Xcopilot MiniGUI 3) MiniGUI Xcopilot ROM user$ cd ~/.xcopilot user$ ln s /opt/uclinux/uclinux-dist/images/pilot.rom X Window Xcopilot 31 user$ cd <path to xcopilot> user$./xcopilot Xcopilot MiniGUI Welcome to _ / _ _ \ \ \/ / _ _ / \ \ _ _ _ _ \ \_/\_/ _ For further information check: Execution Finished, Exiting Sash command shell (version 1.1.1) 31 Xcopilot MiniGUI /xcopilot/xcopilot uc0-mg.tar.gz xcopilot Xcopilot MiniGUI 170

183 /> cd bin /bin>./mghello MiniGUI Hello, world Xcopilot 4-17 Xcopilot LCD 4-17 Xcopilot MiniGUI MiniGUI PC MiniGUI PC MiniGUI MiniGUI Linux/uClinux MiniGUI Linux/uClinux MiniGUI 171

184 172

185 173

186 5 MiniGUI Linux/uClinux Linux/uClinux MiniGUI MiniGUI NFS Linux/uClinux

187 5-1 ARM3000 CPU S3C44B0X01 RTL8019AS FLASH SAMSUNG 9F2808L10B 16MB BIOS AM29LV160DB 2MB LCD 320* HY57V561620BT-H 32M/8M 5-1 ARM NET-ARM3000-uClinux 1) uclinux uclibc Linux CD-ROM /mnt/cdrom root install.sh user$ su password:< root > root# cd /mnt/cdrom root#./install.sh 175

1

1 SDT Uclinux SDT.alf.c 44blib.alf 44blib.c jtag ADS.alf.c make menuconfig make dep make clean make lib_only make user_only make romfs make image make uclinux ext2 cash lcd frambuffer 1 armsys-c uclinux

More information

Abstract arm linux tool-chain root NET-Start! 2

Abstract arm linux tool-chain root NET-Start! 2 Lab III - Embedding Linux 1 Abstract arm linux tool-chain root NET-Start! 2 Part 1.4 Step1. tool-chain 4 Step2. PATH 4 Part 2 kernel 5 Step1. 5 Step2... 6 Step3...8 Part 3 root. 8 Step1. 8 Step2. 8 Part

More information

Cygwin Cygwin windows Linux Cygwin.dll Windows Linux API Linux Windows Linux 2

Cygwin Cygwin windows Linux Cygwin.dll Windows Linux API Linux Windows Linux 2 uclinux 1 Cygwin Cygwin windows Linux Cygwin.dll Windows Linux API Linux Windows Linux 2 Cygwin Cygwin GNU gccgdbxfree86bashtetexopengl perlpython Linux Windows Cygwin Linux GNU Windows 3 Cygwin Cygwin

More information

<4D6963726F736F667420576F7264202D20C7B6C8EBCABD6C696E7578BBF9B4A1CAB5D1E92E646F63>

<4D6963726F736F667420576F7264202D20C7B6C8EBCABD6C696E7578BBF9B4A1CAB5D1E92E646F63> 嵌 入 式 linux 基 础 实 验 1 内 核 配 置 及 编 译 1. 进 入 内 核 所 在 目 录 /opt/ruiva/xscale/linux-2.6.26 #cd /opt/ruiva/xscale/linux-2.6.26 2. 键 入 make menuconfig, 根 据 需 要 适 当 配 置 内 核 #make menuconfig 这 里 先 使 用 默 认 的 配 置,

More information

一个开放源码的嵌入式仿真环境 ― SkyEye

一个开放源码的嵌入式仿真环境 ― SkyEye SkyEye SkyEye http://hpclab.cs.tsinghua.edu.cn/~skyeye/ I hear and I forget, I see and I remember, I do and I understand. SkyEye SkyEye SkyEye SkyEye SkyEye 1. SkyEye PC pervasive computing PC I O PDA

More information

华恒家庭网关方案

华恒家庭网关方案 LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU

More information

本文由筱驀釹贡献

本文由筱驀釹贡献 本 文 由 筱 驀 釹 贡 献 ppt 文 档 可 能 在 WAP 端 浏 览 体 验 不 佳 建 议 您 优 先 选 择 TXT, 或 下 载 源 文 件 到 本 机 查 看 Linux 操 作 系 统 Linux 操 作 系 统 第 一 部 分 介 绍 与 安 装 Linux 的 由 来 : Linux 的 由 来 : 的 由 来 Linus Torvalds 1.Linux 的 版 本 1.Linux

More information

Microsoft Word - PS2_linux_guide_cn.doc

Microsoft Word - PS2_linux_guide_cn.doc Linux For $ONY PlayStatioin2 Unofficall General Guide Language: Simplified Chinese First Write By Beter Hans v0.1 Mail: hansb@citiz.net Version: 0.1 本 人 是 菜 鸟 + 小 白 欢 迎 指 正 错 误 之 处, 如 果 您 有 其 他 使 用 心 得

More information

自由軟體教學平台

自由軟體教學平台 NCHC Opensource task force DRBL steven@nchc.gov.tw, c00hkl00@nchc.gov.tw National Center for High-Performance Computing http://www.nchc.gov.tw Jan, 2003 1 2003/1/28 ( ) 09:00-10:30 10:40-12:00 Linux 13:00-14:30

More information

ebook70-22

ebook70-22 2 2 L i n u x f s t a b X 11 L i n u x L i n u x L i n u x D O S Wi n d o w s L i n u x O p e n L i n u x / u s r / m a n / m a n 5 f s t a b m o u n t m o u n t L i n u x 22.1 OpenLinux L i n u x U N

More information

Windows 2000 Server for T100

Windows 2000 Server for T100 2 1 Windows 95/98 Windows 2000 3.5 Windows NT Server 4.0 2 Windows DOS 3.5 T200 2002 RAID RAID RAID 5.1 Windows 2000 Server T200 2002 Windows 2000 Server Windows 2000 Server Windows 2000 Server 3.5 for

More information

Windows 2000 Server for T100

Windows 2000 Server for T100 T200 3020 Windows 2000 Advanced Server /Windows NT 4.0 Server /Redhat Linux7.3 SCO UnixWare7.1.1 Novell NetWare5.0 1. Windows 2000 Advanced Server / 2. Windows NT 4.0 Server / 3. Redhat Linux7.3 4. SCO

More information

Microsoft Word - linux命令及建议.doc

Microsoft Word - linux命令及建议.doc Linux 操 作 系 统 命 令 集 1 基 本 命 令 查 看 系 统 信 息 : uname -a 修 改 密 码 : passwd 退 出 : logout(exit) 获 取 帮 助 : man commands 2 文 件 和 目 录 命 令 显 示 当 前 工 作 目 录 : pwd 改 变 所 在 目 录 : cd cd - 切 换 到 上 一 次 使 用 的 目 录 cd 切 换

More information

05_資源分享-NFS及NIS.doc

05_資源分享-NFS及NIS.doc 5 NFS NFS Server NFS Client NIS NIS 5-0 (Network File System, NFS) Unix NFS mount NFS... Network Information Service NIS Linux NIS NIS NIS / / /etc/passwd /etc/group NFS NIS 5-1 NFS 5-1-1 NFS NFS Network

More information

ARM JTAG实时仿真器安装使用指南

ARM JTAG实时仿真器安装使用指南 ARM JTAG Version 1.31 2003. 11. 12 ARM JTAG ARM JTAG.3 ARM 2.1.4 2.2.4 ARM JTAG 3.1 18 3.2 18 3.2.1 Multi-ICE Server.18 3.2.2 ADS..21 ARM JTAG 4.1 Multi-ICE Server 33 4.1.1 Multi-ICE Server..... 33 4.1.2

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Linux 操 作 系 统 基 础 介 绍 课 程 目 标 及 要 求 了 解 Linux 操 作 系 统 的 登 入 方 式 掌 握 常 用 命 令 的 基 本 用 法 能 够 熟 练 在 各 个 目 录 转 换 Outline 1. Linux 操 作 系 统 简 介 2. Linux 操 作 系 统 的 登 录 3. Linux 操 作 系 统 的 目 录 结 构 4. 常 用 命 令 5.

More information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

Microsoft Word - 第5章.doc

Microsoft Word - 第5章.doc 目 录 及 权 限 管 理 随 着 的 不 断 发 展, 越 来 越 多 的 人 开 始 使 用, 对 于 那 些 刚 接 触 的 人 来 说, 恐 怕 最 先 感 到 困 惑 的 就 是 那 些 不 明 不 白 的 目 录 了 同 样, 系 统 是 一 个 典 型 的 多 用 户 系 统 为 了 保 护 系 统 的 安 全 性, 系 统 对 不 同 用 户 访 问 同 一 文 件 或 目 录 的

More information

ebook140-8

ebook140-8 8 Microsoft VPN Windows NT 4 V P N Windows 98 Client 7 Vintage Air V P N 7 Wi n d o w s NT V P N 7 VPN ( ) 7 Novell NetWare VPN 8.1 PPTP NT4 VPN Q 154091 M i c r o s o f t Windows NT RAS [ ] Windows NT4

More information

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD University of California UNIX X/Open Company, Ltd.

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD University of California UNIX X/Open Company, Ltd. Java Desktop System 2 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. : 817 7758 10 2004 9 2004 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. Sun Sun

More information

09 Linux Linux Linux Linux 009.indd /9/4 下午 12:11:10

09 Linux Linux Linux Linux 009.indd /9/4 下午 12:11:10 09 Linux Linux Linux Linux 009.indd 1 2009/9/4 下午 12:11:10 Linux 指令範例速查手冊 9.1 badblocks badblocks [ ][ ] badblocks -b < > -c < > -i < > -o < > mke2fs -p -t < > -n -s -v -w 0 badblocks -o 9-2 009.indd 2

More information

ebook140-9

ebook140-9 9 VPN VPN Novell BorderManager Windows NT PPTP V P N L A V P N V N P I n t e r n e t V P N 9.1 V P N Windows 98 Windows PPTP VPN Novell BorderManager T M I P s e c Wi n d o w s I n t e r n e t I S P I

More information

untitled

untitled 年度 路 IVI 劉 隆 年 597 598 IVI 錄... 601 行... 601... 601 1.... 601 2. 路... 602 3.... 603... 604 1.IPv4 to IPv6... 604 2.IPv6 to IPv4... 605 -... 606 ( )IVI Server... 606 ( )IVI Server... 610 ( )IVI DNS Server...

More information

untitled

untitled V3049A-EXD IP-SAN/NAS Infinova Infinova Infinova Infinova www.infinova.com.cn Infinova Infinova Infinova 1 2 1 2 V3049A-EXD-R16 V3049A-EXD-R24 ... 1 1.1... 1 1.2... 1 1.3... 1... 2 2.1... 2 2.2... 3...

More information

lect03.ppt

lect03.ppt Linux 操 作 系 统 Linux 基 础 主 要 内 容 q 使 用 Linux q Linux 的 两 种 登 录 方 式 q 字 符 操 作 环 境 和 X Windows 系 统 q Linux 图 形 界 面 基 本 操 作 q Linux 命 令 的 使 用 方 式 q Linux 一 些 常 用 命 令 1 2 一 些 基 本 术 语 u 命 令 (Command) 给 计 算 机

More information

IP505SM_manual_cn.doc

IP505SM_manual_cn.doc IP505SM 1 Introduction 1...4...4...4...5 LAN...5...5...6...6...7 LED...7...7 2...9...9...9 3...11...11...12...12...12...14...18 LAN...19 DHCP...20...21 4 PC...22...22 Windows...22 TCP/IP -...22 TCP/IP

More information

untitled

untitled V3041A-J/V3042A-J IP-SAN/NAS Infinova Infinova Infinova Infinova www.infinova.com.cn Infinova Infinova Infinova 1 2 1 2 V3041A-16R-J V3041A-24R-J V3042A-16R-J V3042A-24R-J V3049-EXD-R16 V3049-EXD-R24 ...

More information

Chapter 2

Chapter 2 2 (Setup) ETAP PowerStation ETAP ETAP PowerStation PowerStation PowerPlot ODBC SQL Server Oracle SQL Server Oracle Windows SQL Server Oracle PowerStation PowerStation PowerStation PowerStation ETAP PowerStation

More information

Microsoft PowerPoint - lect01.ppt

Microsoft PowerPoint - lect01.ppt Linux 操 作 系 统 潘 建 瑜 华 东 师 范 大 学 数 学 系 jypan@math.ecnu.edu.cn Linux 操 作 系 统 教 材 : 以 课 堂 讲 义 为 主 上 课 时 间 : 周 五 5 6 7 第 三 教 学 楼 231 上 机 时 间 : 周 五 5 6 7 数 学 楼 200B 机 房 ( 暂 定 于 第 3 7 10 13 16 18 周 ) 课 程 主 页

More information

ebook62-1

ebook62-1 1 Red Hat Linux R e d Hat Linux L i n u x X Wi n d o w Red Hat L i n u x 1.1 Red Hat Linux Red Hat 16 M 120 M 3. 5 Intel 386 C D - R O M C D - R O M We b / 1.1.1 L i n u x L i n u 4 Primary Partition Extended

More information

Linux Ubuntu Part Linux Ubuntu Linux UNIX...19 Linux...19 Linux Linux...21 Linux GNU FSF Open So urce.

Linux Ubuntu Part Linux Ubuntu Linux UNIX...19 Linux...19 Linux Linux...21 Linux GNU FSF Open So urce. Linux Ubuntu 10.04 Part 1 17 1 Linux Ubuntu... 18 1-1 Linux... 19 UNIX...19 Linux...19 Linux...20...20 Linux...21 Linux...21 1-2 GNU FSF Open So urce...22 GNU...22 GPL...23...24 1-3 GNU/Linux V.S. Linux...25

More information

EK-STM32F

EK-STM32F STMEVKIT-STM32F10xx8 软 件 开 发 入 门 指 南 目 录 1 EWARM 安 装... 1 1.1 第 一 步 : 在 线 注 册... 1 1.2 第 二 步 : 下 载 软 件... 2 1.3 第 三 步 : 安 装 EWARM... 3 2 基 于 STMEVKIT-STM32F10xx8 的 示 例 代 码 运 行... 6 2.1 GPIO Demo... 6 2.2

More information

资源管理软件TORQUE与作业调度软件Maui的安装、设置及使用

资源管理软件TORQUE与作业调度软件Maui的安装、设置及使用 TORQUE Maui hmli@ustc.edu.cn 2008 1 1 TORQUE 2 1.1 TORQUE........................... 2 1.2 TORQUE...................... 2 1.3 TORQUE.......................... 4 1.4 TORQUE........................... 4

More information

Simulator By SunLingxi 2003

Simulator By SunLingxi 2003 Simulator By SunLingxi sunlingxi@sina.com 2003 windows 2000 Tornado ping ping 1. Tornado Full Simulator...3 2....3 3. ping...6 4. Tornado Simulator BSP...6 5. VxWorks simpc...7 6. simulator...7 7. simulator

More information

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

A Preliminary Implementation of Linux Kernel Virus and Process Hiding 邵 俊 儒 翁 健 吉 妍 年 月 日 学 号 学 号 学 号 摘 要 结 合 课 堂 知 识 我 们 设 计 了 一 个 内 核 病 毒 该 病 毒 同 时 具 有 木 马 的 自 动 性 的 隐 蔽 性 和 蠕 虫 的 感 染 能 力 该 病 毒 获 得 权 限 后 会 自 动 将 自 身 加 入 内 核 模 块 中 劫 持 的 系 统 调 用 并 通 过 简 单 的 方 法 实 现 自 身 的

More information

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM Oracle Solaris Studio 12.2 DLight 2010 9 2 2 3 DLight 3 3 6 13 CPU 16 18 21 I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AMP Apache MySQL

More information

1.ai

1.ai HDMI camera ARTRAY CO,. LTD Introduction Thank you for purchasing the ARTCAM HDMI camera series. This manual shows the direction how to use the viewer software. Please refer other instructions or contact

More information

RAID RAID 0 RAID 1 RAID 5 RAID * ( -1)* ( /2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( )

RAID RAID 0 RAID 1 RAID 5 RAID * ( -1)* ( /2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( ) RAID RAID 0 RAID 1 RAID 5 RAID 10 2 2 3 4 * (-1)* (/2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( ) ( ) ( ) Windows USB 1 SATA A. SATASATAIntel SATA (SATA3

More information

Guide to Install SATA Hard Disks

Guide to Install SATA Hard Disks SATA RAID 1. SATA. 2 1.1 SATA. 2 1.2 SATA 2 2. RAID (RAID 0 / RAID 1 / JBOD).. 4 2.1 RAID. 4 2.2 RAID 5 2.3 RAID 0 6 2.4 RAID 1.. 10 2.5 JBOD.. 16 3. Windows 2000 / Windows XP 20 1. SATA 1.1 SATA Serial

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 1 2 1 2 3 4 5 6 7 8 9 10 3 1 150 2 150 1 1 1.1 1.1.1 1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 1.3.2 1.4 1.4.1 CPU 1.4.2 I/O 1.4.3 I/O 1.5 1.5.1 CISC RISC 1.5.2 1.5.3 1.6 1.6.1 1.6.2 N 1.6.3 2 2.1 2.1.1 2.1.2 2.1.3

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

ebook35-2

ebook35-2 2 2.1 Linux login Login: < > Password: < > Linux r o o t l o g o u t 2.2 Linux X Window Linux Linux Bourne ( b s h ) C ( c s h ) Korn ( k s h ) Bourne Steven Bourne UNIX Bourne bash Bourne C Bill Joy Bourne

More information

华恒家庭网关方案

华恒家庭网关方案 uclinuxblackfin www.hhcn.com 1 Blackfin Why uclinux HHBF561 2 Blackfin New generation of high performance, low power ADI Processors Industrial Controls VoIP VoIP 3 BlackfinBF533 System Peripherals Dynamic

More information

epub

epub 3 Cisco 3.1 S e t u p C i s c o C i s c o Cisco IOS C i s c o 3.2 Te l n e t T F T P 3-1 3-1 configure terminal configure memory Configure network t e l n e t < C t r l - Z > conf t N V R A M T F T P I

More information

Sun Fire V440 Server Administration Guide - zh_TW

Sun Fire V440 Server Administration Guide - zh_TW Sun Fire V440 Server 管 理 指 南 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. 650-960-1300 文 件 號 碼 :817-2818-10 2003 年 7 月, 修 訂 版 A 將 您 對 此 文 件 的 意 見 傳 送 到 :http://www.sun.com/hwdocs/feedback

More information

Windows XP

Windows XP Windows XP What is Windows XP Windows is an Operating System An Operating System is the program that controls the hardware of your computer, and gives you an interface that allows you and other programs

More information

LSI U320 SCSI卡用户手册.doc

LSI U320 SCSI卡用户手册.doc V1.0 Ultra320 SCSI SCSI 2004 7 PentiumIntel MS-DOS Windows Novell Netware Novell Sco Unix Santa Cruz Operation LSI U320 SCSI SCSI SCSI Integrated Mirroring/Integrated Striping BIOS Firmware LSI U320 SCSI

More information

K7VT2_QIG_v3

K7VT2_QIG_v3 ............ 1 2 3 4 5 [R] : Enter Raid setup utility 6 Press[A]keytocreateRAID RAID Type: JBOD RAID 0 RAID 1: 2 7 RAID 0 Auto Create Manual Create: 2 RAID 0 Block Size: 16K 32K

More information

Red Flag Linux Desktop 4.0 Red Flag Linux Desktop 4.0 1

Red Flag Linux Desktop 4.0 Red Flag Linux Desktop 4.0 1 Red Flag Linux Desktop 4.0 68 6 Red Flag Software Co., Ltd. http://www.redflag-linux.com Red Flag Linux Desktop 4.0 Red Flag Linux Desktop 4.0 1 1 Red Flag Linux Desktop 4.0 1.1 Red Flag Linux Desktop

More information

ebook70-21

ebook70-21 2 1 2 2 2 3 2 4 2 1 s u O p e n L i n u x L i n u x s c h e d u l i n g L i n u x O p e n L i n u x O p e n L i n u x O p e n L i n u x 5 r m # rm -fr / * L i n u x r m Permission denied s u 21.1 su s

More information

P4VM800_BIOS_CN.p65

P4VM800_BIOS_CN.p65 1 Main H/W Monitor Boot Security Exit System Overview System Time System Date [ 17:00:09] [Fri 02/25/2005] BIOS Version : P4VM800 BIOS P1.00 Processor Type : Intel (R) Pentium (R) 4 CPU 2.40 GHz Processor

More information

自由軟體社群發展經驗與 Linux認證介紹

自由軟體社群發展經驗與  Linux認證介紹 -- (http://linux.vbird.org) 2011/08/12 1 -- -- 不 理 便 了 來 連 ( ) ( ) 論 ~ ~ 2 復 理 3 4 復 數 量 復 離 來 ~ @_@ 5 - 年 Linux windows virtualbox 不 理 Linux Xen 立 4 4GB 了 30 xen 來 sudo xm 來 Linux I/O 例 yum 6 - 年 Windows

More information

Web

Web Email: tian@dr.com http://www.digiark.com/tian Web 1. 2. 3. 4. 5. 6. Internet Internet (Hacker) Internet web IP 1 Internet UNIX Windows VLAN Internet IP 2 Internet FTP TELNET PING IP 8 telnet FTP RLOGIN

More information

Ác Åé å Serial ATA ( Sil3132) S A T A (1) SATA (2) BIOS SATA (3)* RAID BIOS RAID (4) SATA (5) SATA (a) S A T A ( S A T A R A I D ) (b) (c) Windows XP

Ác Åé å Serial ATA ( Sil3132) S A T A (1) SATA (2) BIOS SATA (3)* RAID BIOS RAID (4) SATA (5) SATA (a) S A T A ( S A T A R A I D ) (b) (c) Windows XP Serial ATA ( Sil3132)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 6 (4) S A T A... 10 (5) S A T A... 12 Ác Åé å Serial ATA ( Sil3132) S A T A (1) SATA (2) BIOS SATA (3)* RAID BIOS

More information

untitled

untitled 錄 行 令 X Window 切 /etc/inittab, X Window GNOME 例, X Window, 滑, 行 令, X Window X Window 了 滑,, 行 / 令, 來 切 切 Linux (console) 了 7, 行 X Window, 來切, 切 Linux X Window,,, 滑, 不,,,, /etc/inittab, "id:5:initdefault:",

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

ebook71-13

ebook71-13 13 I S P Internet 13. 2. 1 k p p p P P P 13. 2. 2 1 3. 2. 3 k p p p 1 3. 2. 4 l i n u x c o n f P P P 13. 2. 5 p p p s e t u p 13. 2. 6 p p p s e t u p P P P 13. 2. 7 1 3. 2. 8 C a l d e r a G U I 13.

More information

IP TCP/IP PC OS µclinux MPEG4 Blackfin DSP MPEG4 IP UDP Winsock I/O DirectShow Filter DirectShow MPEG4 µclinux TCP/IP IP COM, DirectShow I

IP TCP/IP PC OS µclinux MPEG4 Blackfin DSP MPEG4 IP UDP Winsock I/O DirectShow Filter DirectShow MPEG4 µclinux TCP/IP IP COM, DirectShow I 2004 5 IP TCP/IP PC OS µclinux MPEG4 Blackfin DSP MPEG4 IP UDP Winsock I/O DirectShow Filter DirectShow MPEG4 µclinux TCP/IP IP COM, DirectShow I Abstract The techniques of digital video processing, transferring

More information

P4V88+_BIOS_CN.p65

P4V88+_BIOS_CN.p65 1 Main H/W Monitor Boot Security Exit System Overview System Time System Date [ 17:00:09] [Wed 12/22/2004] BIOS Version : P4V88+ BIOS P1.00 Processor Type : Intel (R) Pentium (R) 4 CPU 2.40 GHz Processor

More information

ebook 185-6

ebook 185-6 6 Red Hat Linux DB2 Universal Database 6.1 D B 2 Red Hat D B 2 Control Center D B 2 D B 2 D B 2 6.1 DB2 Universal Database [DB2]6.1 D B 2 O LT P O L A P D B 2 I B M P C We e k D B 2 D B 2 L i n u x Windows

More information

RTX3.2.0标准版 - 技术白皮书

RTX3.2.0标准版 - 技术白皮书 一 铭 操 作 系 统 技 术 白 皮 书 广 西 一 铭 软 件 股 份 有 限 公 司 版 权 声 明 本 书 版 权 归 广 西 一 铭 软 件 股 份 有 限 公 司 所 有, 并 保 留 对 本 文 档 及 声 明 的 最 终 解 释 权 和 修 改 权 本 文 件 中 出 现 的 任 何 文 字 叙 述 文 档 格 式 插 图 照 片 方 法 过 程 等 内 容, 除 另 有 特 别 说

More information

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1.

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE Project Properties IDE makefile 1. Oracle Solaris Studio 12.2 IDE 2010 9 2 8 9 10 11 13 20 26 28 30 32 33 Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1. "File" > "New

More information

.. 3 N

.. 3 N 1 .. 3 N9.. 4 5.. 6 7.. 8 20.. 21 23.. 24.. 25 26.. 27.. 28.. 29 2 (Cyber Café) Linux (LAN) Linux Public Home 3 K12LTSP K12LTSPFedora Core 4 (Linux)LTSP Linux (command line interface) (Graphical User Interface,

More information

简 介 本 白 皮 书 高 度 概 述 了 支 持 移 动 互 联 网 设 备 (Mobile Internet Device) 的 Intel C++ Software Development Tool Suite for Linux* OS, 目 标 读 者 主 要 是 技 术 决 策 制 订

简 介 本 白 皮 书 高 度 概 述 了 支 持 移 动 互 联 网 设 备 (Mobile Internet Device) 的 Intel C++ Software Development Tool Suite for Linux* OS, 目 标 读 者 主 要 是 技 术 决 策 制 订 白 皮 书 Robert Müller-Albrecht 开 发 人 员 产 品 部 门 支 持 移 动 互 联 网 设 备 的 Intel C++ Software Development Tool Suite for Linux* OS 文 档 编 号 :319332-001US 简 介 本 白 皮 书 高 度 概 述 了 支 持 移 动 互 联 网 设 备 (Mobile Internet Device)

More information

網路安全:理論與實務 第二版

網路安全:理論與實務 第二版 第 10 章 :Wireshark 封 包 分 析 軟 體 10-1 Wireshark 簡 介 10-2 Wireshark 的 安 裝 方 法 10-3 Wireshark 的 使 用 Wireshark 簡 介 - 發 展 歷 史 Wireshark (http://www.wireshark.org/) 是 一 個 開 放 原 始 碼 (open source software) 軟 體,

More information

05 01 X Window X Window Linux Linux X Window X Window Webmin Web Linux Linux X Window X Window Notebook PC X Window X Window module Linux Linux kernel

05 01 X Window X Window Linux Linux X Window X Window Webmin Web Linux Linux X Window X Window Notebook PC X Window X Window module Linux Linux kernel Linux sub bash test2.sh sub bash test.sh test2.sh sub bash var1 123 123 test.sh test2.sh var1 bash sub bash var1 bash 01 5-4 X Window X Window X Window Linux Server X Window CPU2006 Linux X Window benchmark

More information

ebook8-30

ebook8-30 3 0 C C C C C C++ C + + C++ GNU C/C++ GNU egcs UNIX shell s h e l l g a w k P e r l U N I X I / O UNIX shell awk P e r l U N I X C C C C C C U N I X 30.1 C C U N I X 70 C C U N I X U N I X U N I X C Dennis

More information

CH01.indd

CH01.indd 3D ios Android Windows 10 App Apple icloud Google Wi-Fi 4G 1 ( 3D ) 2 3 4 5 CPU / / 2 6 App UNIX OS X Windows Linux (ios Android Windows 8/8.1/10 BlackBerry OS) 7 ( ZigBee UWB) (IEEE 802.11/a/b/g/n/ad/ac

More information

TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP

TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP TCP/IP : TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP 1. ASCII EBCDIC Extended Binary-Coded Decimal Interchange Code 2. / (1) (2) Single System Image SSI) (3) I/O (4) 3.OSI OSI Open System Interconnection

More information

Bus Hound 5

Bus Hound 5 Bus Hound 5.0 ( 1.0) 21IC 2007 7 BusHound perisoft PC hound Bus Hound 6.0 5.0 5.0 Bus Hound, IDE SCSI USB 1394 DVD Windows9X,WindowsMe,NT4.0,2000,2003,XP XP IRP Html ZIP SCSI sense USB Bus Hound 1 Bus

More information

ebook15-C

ebook15-C C 1 1.1 l s ( 1 ) - i i 4. 14 - d $ l s -ldi /etc/. /etc/.. - i i 3077 drwxr-sr-x 7 bin 2048 Aug 5 20:12 /etc/./ 2 drwxr-xr-x 13 root 512 Aug 5 20:11 /etc/../ $ls -ldi /. /..... i 2 2 drwxr-xr-x 13 root

More information

快 速 入 门 (Linux) 概 述 文 档 目 的 本 文 档 介 绍 了 如 何 快 速 创 建 Linux 系 统 实 例 远 程 连 接 实 例 部 署 环 境 等 旨 在 引 导 您 一 站 式 完 成 实 例 的 创 建 登 录 和 快 速 环 境 部 署 云 服 务 器 ECS 实

快 速 入 门 (Linux) 概 述 文 档 目 的 本 文 档 介 绍 了 如 何 快 速 创 建 Linux 系 统 实 例 远 程 连 接 实 例 部 署 环 境 等 旨 在 引 导 您 一 站 式 完 成 实 例 的 创 建 登 录 和 快 速 环 境 部 署 云 服 务 器 ECS 实 云 服 务 器 ECS 快 速 入 门 (Linux) 快 速 入 门 (Linux) 概 述 文 档 目 的 本 文 档 介 绍 了 如 何 快 速 创 建 Linux 系 统 实 例 远 程 连 接 实 例 部 署 环 境 等 旨 在 引 导 您 一 站 式 完 成 实 例 的 创 建 登 录 和 快 速 环 境 部 署 云 服 务 器 ECS 实 例, 有 时 候 也 被 称 为 阿 里 云

More information

软件测试(TA07)第一学期考试

软件测试(TA07)第一学期考试 一 判 断 题 ( 每 题 1 分, 正 确 的, 错 误 的,20 道 ) 1. 软 件 测 试 按 照 测 试 过 程 分 类 为 黑 盒 白 盒 测 试 ( ) 2. 在 设 计 测 试 用 例 时, 应 包 括 合 理 的 输 入 条 件 和 不 合 理 的 输 入 条 件 ( ) 3. 集 成 测 试 计 划 在 需 求 分 析 阶 段 末 提 交 ( ) 4. 单 元 测 试 属 于 动

More information

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / SunSun MicrosystemsSun

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / SunSun MicrosystemsSun SAP livecache Sun Cluster Solaris OS SPARC Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. : 817 7374 10 2004 4 A 2004 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA

More information

目 录

目 录 1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12

More information

Data Server_new_.doc

Data Server_new_.doc 0i B/C Data Server Windows 2000 Window XP Windows XP FTP FANUC Data Server FTP liwei@beijing-fanuc 1 06-10-8 Content 1. /...3 1.1...3 1.2...3 1.3 CNC...3 2....5 2.1 STORAGE...5 2.2 FTP...6 2.3 BUFFER...7

More information

Total Internet Connectivity in a Single Chip

Total Internet Connectivity in a Single Chip 基 于 SX 微 处 理 器 的 嵌 入 式 Internet 技 术 乐 德 广 及 其 应 用 系 统 的 设 计 1 1, 郭 东 辉, 刘 瑞 堂 1, Gerard Parr 2 1. 厦 门 大 学 技 术 物 理 研 究 所 厦 门 361005 2. 英 国 Ulster 大 学 信 息 学 院 N.Ireland, BT52 1SA 摘 要 : SX 微 处 理 器 是 美 国 Scenix

More information

TX-NR3030_BAS_Cs_ indd

TX-NR3030_BAS_Cs_ indd TX-NR3030 http://www.onkyo.com/manual/txnr3030/adv/cs.html Cs 1 2 3 Speaker Cable 2 HDMI OUT HDMI IN HDMI OUT HDMI OUT HDMI OUT HDMI OUT 1 DIGITAL OPTICAL OUT AUDIO OUT TV 3 1 5 4 6 1 2 3 3 2 2 4 3 2 5

More information

ebook140-11

ebook140-11 11 VPN Windows NT4 B o r d e r M a n a g e r VPN VPN V P N V P N V P V P N V P N TCP/IP 11.1 V P N V P N / ( ) 11.1.1 11 V P N 285 2 3 1. L A N LAN V P N 10MB 100MB L A N VPN V P N V P N Microsoft PPTP

More information

投影片 1

投影片 1 9 1 9-1 Windows XP Windows Server 2003 Mac OS Linux, 都 (OS, Operating System ) 2 3 , 來, 行 3 理 行 4 ,, (UI, User Interface), 滑, 令 列 (CLI, Command-Line Interface) (GUI, Graphical User Interface) 2 5 令 列,

More information

Oracle Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE "P

Oracle Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE P Oracle Solaris Studio 12.3 IDE 2011 12 E26461-01 2 7 8 9 9 Oracle 10 12 14 21 26 27 29 31 32 33 Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE "Project

More information

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2 (Guangzhou) AIT Co, Ltd 020-84106666 020-84106688 http://wwwlenxcn Xi III Zebra XI III 1 (Guangzhou) AIT Co, Ltd 020-84106666 020-84106688 http://wwwlenxcn 230V 110V [ ]! 2 (Guangzhou) AIT Co, Ltd 020-84106666

More information

68369 (ppp quickstart guide)

68369 (ppp quickstart guide) Printed in USA 04/02 P/N 68369 rev. B PresencePLUS Pro PC PresencePLUS Pro PresencePLUS Pro CD Pass/Fails page 2 1 1. C-PPCAM 2. PPC.. PPCAMPPCTL 3. DB9D.. STPX.. STP.. 01 Trigger Ready Power 02 03 TRIGGER

More information

Microsoft Word - 100118002.htm

Microsoft Word - 100118002.htm 100 年 度 11800 電 腦 軟 體 應 用 乙 級 技 術 士 技 能 檢 定 學 科 測 試 試 題 本 試 卷 有 選 擇 題 80 題, 每 題 1.25 分, 皆 為 單 選 選 擇 題, 測 試 時 間 為 100 分 鐘, 請 在 答 案 卡 上 作 答, 答 錯 不 倒 扣 ; 未 作 答 者, 不 予 計 分 准 考 證 號 碼 : 姓 名 : 選 擇 題 : 1. (3)

More information

SA-DK2-U3Rユーザーズマニュアル

SA-DK2-U3Rユーザーズマニュアル USB3.0 SA-DK2-U3R 2007.0 2 3 4 5 6 7 8 System Info. Manual Rebuild Delete RAID RAID Alarm Rebuild Rate Auto compare Temp Management Load Default Elapse time Event Log 0 2 3 4 2 3 4 ESC 5

More information

AL-M200 Series

AL-M200 Series NPD4754-00 TC ( ) Windows 7 1. [Start ( )] [Control Panel ()] [Network and Internet ( )] 2. [Network and Sharing Center ( )] 3. [Change adapter settings ( )] 4. 3 Windows XP 1. [Start ( )] [Control Panel

More information

TCA Linux 相容性認證測試流程步驟

TCA Linux 相容性認證測試流程步驟 年 度 流 -Linux 行 北 年 錄...2 說...4 2.1...4 2.2...4 2.3...4 2.4 行...5...6 3.1...6 3.2...6 3.3...7 3.4 列...7 Linux...8 4.1...8 4.1.1 CD-ROM...8 4.1.2 滑...10 4.1.3...14 4.1.4 路...19 4.1.5 Linux...22 4.1.6...27

More information

VIDEOJET connect 7000 VJC-7000-90 zh- CHS Operation Manual VIDEOJET connect 7000 zh-chs 3 目 录 1 浏 览 器 连 接 7 1.1 系 统 要 求 7 1.2 建 立 连 接 7 1.2.1 摄 像 机 中 的 密 码 保 护 7 1.3 受 保 护 的 网 络 7 2 系 统 概 述 8 2.1 实 况

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

Serial ATA ( Nvidia nforce430)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 6 (4) S A T A... 9 (5) S A T A (6) Microsoft Win

Serial ATA ( Nvidia nforce430)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 6 (4) S A T A... 9 (5) S A T A (6) Microsoft Win Serial ATA ( Nvidia nforce430)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 6 (4) S A T A... 9 (5) S A T A... 11 (6) Microsoft Windows 2000... 14 Ác Åé å Serial ATA ( Nvidia nforce430)

More information

ebook70-5

ebook70-5 5 / 5.1 L i n u x L i n u x X L i n u x 5.1.1 touch t o u c h t o u c h G N U t o u c h # touch newfile # ls -l newfile - r w - r - - r - - 1 bball users 0 Jan 5 12 : 40 n e w f i l e t o u c h 0 # > newfile2

More information

Building Embedded Linux Systems 构建嵌入式 Linux 系统之根文件系统及其制作 计算机应用教研室 @ 计算机学院嵌入式系统实验室 @ 苏州研究院中国科学技术大学 /media/samsung/work/6 实验室相关 Outline 1 根文件系统的内容及其准备 2 根文件系统类型的选择根文件系统的类型及制作 3 根文件系统的制作阅读 µclinux 中的源代码,

More information

スライド 1

スライド 1 LPIC 304 2014 7 27 ( ) 13:30 16:30 LPI-Japan LPI-Japan 2009. All rights reserved. LPI-Japan 2009. All rights reserved. 2 Linux Linus Torvalds Carl ) in LinuxConJapan http://www.lpi.or.jp/news/event/page/20130529_02_report/

More information

untitled

untitled Unix Ka-Lok Ng () Department of Biological Sciences and Biotechnology() Taichung Healthcare and Management University (O) 04-23323456 x1856 3408 Teach the student how to use Linux system using TEXT mode

More information

Serial ATA ( nvidia nforce4 Ultra/SLI)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 6 (4) S A T A... 9 (5) S A T A (6) Micro

Serial ATA ( nvidia nforce4 Ultra/SLI)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 6 (4) S A T A... 9 (5) S A T A (6) Micro Serial ATA ( nvidia nforce4 Ultra/SLI)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 6 (4) S A T A... 9 (5) S A T A... 11 (6) Microsoft Windows 2000... 14 Ác Åé å Serial ATA ( nvidia

More information

ICD ICD ICD ICD ICD

ICD ICD ICD ICD ICD MPLAB ICD2 MPLAB ICD2 PIC MPLAB-IDE V6.0 ICD2 usb PC RS232 MPLAB IDE PC PC 2.0 5.5V LED EEDATA MPLAB ICD2 Microchip MPLAB-IDE v6.0 Windows 95/98 Windows NT Windows 2000 www.elc-mcu.com 1 ICD2...4 1.1 ICD2...4

More information

投影片 1

投影片 1 FreeBSD A 95/10/11 19:00~21:00 95/10/11 FreeBSD 練 1 Services Setup SSH, lighttpd, PHP, MySQL, FTP, Postfix, phpmyadmin, Blog, Gallery 95/10/11 FreeBSD 練 2 1. 2. # FreeBSD # 3. vi ee joe nano etc 95/10/11

More information

Panaboard Overlayer help

Panaboard Overlayer help Panaboard Overlayer Image Capture Software for Electronic Whiteboard (Panaboard) ... 3... 5... 6... 13...14 Panaboard Overlayer 1. 2. 3. 4. 4-1. 4-2. [ / ] ( ) 4-3. 5. 6. 6-1. 6-2. [ / ] ( ) 7. Panaboard

More information