|
|
2.3.3 Das "hello-4.o" läßt sich auch auf dem COBRA-Board erfolgreich starten(29.06.2005) Das "hello-4.o" ließ sich erfolgreich starten, wie der Output zeigt: dn image.bin
Address: 0x00010000
Ethernet Address is 00:CF:52:82:CF:01
Downloading Image 'image.bin' from 192.168.100.1
TFTP download successful
Read 1625680 bytes (3176 blocks)
dBUG> go 10000
Linux version 2.4.24-uc0 (andreas@gericom) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 205
uClinux/COLDFIRE(m5282)
COLDFIRE port done by Greg Ungerer, gerg@snapgear.com
Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne
On node 0 totalpages: 2048
zone(0): 0 pages.
zone(1): 2048 pages.
zone(2): 0 pages.
Kernel command line:
Calibrating delay loop... 6.96 BogoMIPS
Memory available: 6360k/8192k RAM, 0k/0k ROM (712k kernel code, 203k data)
kmem_create: Forcing size word alignment - vm_area_struct
kmem_create: Forcing size word alignment - mm_struct
kmem_create: Forcing size word alignment - filp
Dentry cache hash table entries: 1024 (order: 1, 8192 bytes)
Inode cache hash table entries: 512 (order: 0, 4096 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
kmem_create: Forcing size word alignment - bdev_cache
kmem_create: Forcing size word alignment - cdev_cache
kmem_create: Forcing size word alignment - kiobuf
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 2048 (order: 1, 8192 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
kmem_create: Forcing size word alignment - sock
Initializing RT netlink socket
Starting kswapd
kmem_create: Forcing size word alignment - file_lock_cache
kmem_create: Forcing size word alignment - nfs_read_data
kmem_create: Forcing size word alignment - nfs_write_data
ColdFire internal UART serial driver version 1.00
ttyS0 at 0x40000200 (irq = 77) is a builtin ColdFire UART
ttyS1 at 0x40000240 (irq = 78) is a builtin ColdFire UART
kmem_create: Forcing size word alignment - blkdev_requests
fec.c: Probe number 0 with 0x0000
eth0: FEC ENET Version 0.2, 00:cf:52:82:cf:01
fec: PHY @ 0x1f, ID 0x20005c30 -- DP83847
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 7 disk images:
0: F5208-1AFA07 [VIRTUAL F5208-1AFA07] (RO)
1: FFC00000-FFC3FFFF [VIRTUAL FFC00000-FFC3FFFF] (RW)
2: FFC00000-FFC07FFF [VIRTUAL FFC00000-FFC07FFF] (RW)
3: FFC08000-FFC3FFFF [VIRTUAL FFC08000-FFC3FFFF] (RW)
4: FFC40000-FFFFFFFF [VIRTUAL FFC40000-FFFFFFFF] (RW)
5: FFD00000-FFDFFFFF [VIRTUAL FFD00000-FFDFFFFF] (RW)
6: FFC00000-FFFFFFFF [VIRTUAL FFC00000-FFFFFFFF] (RW)
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
kmem_create: Forcing size word alignment - ip_dst_cache
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 512 bind 512)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (romfs filesystem) readonly.
Freeing unused kernel memory: 24k freed (0xdc000 - 0xe1000)
Shell invoked to run file: /etc/rc
Command: hostname cobra1
Command: /bin/expand /etc/ramfs.img /dev/ram0
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: mkdir /var/empty
Command: ifconfig lo 127.0.0.1
Command: route add -net 127.0.0.0 netmask 255.255.255.0 lo
Command: # set up the ip address of the target:
Command: ifconfig eth0 192.168.100.2 broadcast 192.e16t8.h1000.:25 5 cneotmnasfk i25g5.:25 5.a25u5.t0 o-
negotiation on, 100FDX, 100HDX, 10FDX, 10HDX.
Command: # add a route via eth0:
Command: route add -net 192.168.100.0 netmask 255.255.255.0 eth0
Command: # start the portmapper (needed for nfs):
Command: portmap &
[15]
Command: # the following line is an example, how to mount nfs directories:
Command: #mount -t nfs -o rsize=4096,wsize=4096 192.168.100.1:/home/uClinux /usr
Command: cat /etc/motd
===============================================
COBRA5282 board
Version 20040324
===============================================
Command:
Execution Finished, Exiting
Sash command shell (version 1.1.1)
/> mount -t nfs -o rsize=4096,wsize=4096 192.168.100.1:/home/andreas/uClinux /usr
/> ls
bin dev etc home lib mnt proc r
/> ls -l
drwxr-xr-x 1 0 0 32 Jan 1 1970 bin
drwxr-xr-x 1 0 0 32 Jan 1 1970 dev
drwxr-xr-x 1 0 0 32 Jan 1 1970 etc
drwxr-xr-x 1 0 0 32 Jan 1 1970 home
drwxr-xr-x 1 0 0 32 Jan 1 1970 lib
drwxr-xr-x 1 0 0 32 Jan 1 1970 mnt
dr-xr-xr-x 2 0 0 0 Nov 30 00:00 proc
lrwxrwxrwx 1 0 0 8 Jan 1 1970 tmp -> /var/tmp
drwxr-xr-x 3 1000 100 216 Jun 29 2005 usr
drwxr-xr-x 7 0 0 1024 Nov 30 00:00 var
/> cd usr
/usr> ls -l
-rw-r--r-- 1 1000 100 4337 Mar 4 2005 boot_linux.cap
-rw-r--r-- 1 1000 100 135796 Jun 29 2005 hello-4.o
drwxr-xr-x 2 1000 100 432 Mar 4 2005 led_test_cobra5282-20040324
-r-xr-xr-x 1 1000 100 3028 Mar 4 2005 led_test_cobra5282-20040324.tar.gz
/usr> lsmod
Module Size Used by Not tainted
/usr> insmod hello-4.o
Using hello-4.o
Hello, world 4
Device registered using major 254.
/usr> lsmod
Module Size Used by Not tainted
hello-4 516 0 (unused)
/usr> rmmod hell
rmmod: hell: No such file or directory
pid 28: failed 256
/usr> rmmod hello-4
Goodbye, world 4
/usr>
Auch der etwas später compilierte erste Versuch von "qadc-1_0" ließ sich als Modul laden und auch wieder löschen, aber der nächste Schritt, daß auch der Befehl register_chrdev zum Einsatz kam, funktionierte noch nicht. Hier wieder der Output: /usr> ls -l -rw-r--r-- 1 1000 100 4337 Mar 4 2005 boot_linux.cap -rw-r--r-- 1 1000 100 135796 Jun 29 2005 hello-4.o drwxr-xr-x 2 1000 100 432 Mar 4 2005 led_test_cobra5282-20040324 -r-xr-xr-x 1 1000 100 3028 Mar 4 2005 led_test_cobra5282-20040324.tar.gz -rw-r--r-- 1 1000 100 136256 Jul 2 2005 qadc-1_0.o -rwxr--r-- 1 1000 100 20160 Jul 2 2005 readqadc-1_0 /usr> insmod qadc-1_0.o Using qadc-1_0.o QADC Driver 1.0 Device registered using major 254. /usr> cd /dev /dev> ls -l q* crw------- 1 0 0 126, 0 Jan 1 1970 qspi0 crw------- 1 0 0 126, 1 Jan 1 1970 qspi1 crw------- 1 0 0 126, 10 Jan 1 1970 qspi10 crw------- 1 0 0 126, 11 Jan 1 1970 qspi11 crw------- 1 0 0 126, 12 Jan 1 1970 qspi12 crw------- 1 0 0 126, 13 Jan 1 1970 qspi13 crw------- 1 0 0 126, 14 Jan 1 1970 qspi14 crw------- 1 0 0 126, 2 Jan 1 1970 qspi2 crw------- 1 0 0 126, 3 Jan 1 1970 qspi3 crw------- 1 0 0 126, 4 Jan 1 1970 qspi4 crw------- 1 0 0 126, 5 Jan 1 1970 qspi5 crw------- 1 0 0 126, 6 Jan 1 1970 qspi6 crw------- 1 0 0 126, 7 Jan 1 1970 qspi7 crw------- 1 0 0 126, 8 Jan 1 1970 qspi8 crw------- 1 0 0 126, 9 Jan 1 1970 qspi9 /dev> cat qadc qadc: No such file or directory /dev> cd /usr /usr> lsmod Module Size Used by Not tainted qadc-1_0 584 0 (unused) /usr> rmmod qadc-1_0 Goodbye, world /usr> Das Device qadc war nicht richtig registriert, obwohl die Routine erfolgreich zurückkehrte. Hier der zugehörige Quellcode: printk(KERN_ALERT "QADC Driver 1.0 \n"); /* Set up character device for user mode clients */ i = register_chrdev(0, "qadc", &qadc_fops); if (i == -EBUSY){
printk(KERN_NOTICE "unable to find a free device # for "
"Driver Services\n");
}else{
major_dev = i;
printk("Device registered using major %d.\n", major_dev);
}
Etwas später lese ich hier , daß bei der Registrierung mit register_chrdev nicht ein Eintrag unter /dev entsteht, sondern unter /proc/devices. Etwas später werden "printk"-Zeilen genannt, die dem User mitteilen, wie mit dem Shell-Kommando mknod ein Eintrag in /dev erreicht werden kann für dieses Char-Device. In der Datei makedevs.c findet sich aber auch eine Methode, wie direkt der CC-Code im Treiber diesen mknod-befehl ausführen könnte. Copyright © Andreas Birkert Letzte Aktualisierung am 20. Dezember 2013 |
|
|