Linux Çý¶¯¿ª·¢âÒ¶¡½âÅ£Ö®¶þ —— Ä£¿é±à³Ì
±¾ÎÄÊǽ¨Á¢ÔÚÇ°ÃæµÄ¿ª·¢»·¾³ÒѾ³É¹¦½¨Á¢µÄ»ù´¡Ö®Éϵġ£Èç¹ûûÓн¨Á¢ºÃ£¬Çë²ÎÕÕ¡¶ Linux Çý¶¯¿ª·¢âÒ¶¡½âÅ£Ö®Ò» —— ¿ª·¢»·¾³µÄ½¨Á¢¡·¡£
ÒѾÓкܶàÎĵµ½²ÊöÄ£¿é±à³Ì£¬¸öÈ˾õµÃ¡¶ The Linux kernel module programming guide ¡·ÊÇ×îÏ꾡µÄ¡£±¾ÎIJ»ÔÙÁ¢×ãÓÚ´ÓÀíÂÛÉÏÈ¥²ûÊöÄ£¿é±à³ÌµÄÏà¹ØÖªÊ¶£¬¶ø×ÅÖØ´Óʵ¼ùµÄ»ù´¡ÉÏÈ¥ÕÆÎÕÄ£¿é±à³Ì£¬ÁìÎòÄ£¿é±à³ÌµÄʵÖÊ¡£µ±È»£¬¾ß±¸×ã¹»µÄÀíÂÛ֪ʶ²ÅÄÜ´Óʵ¼ù³ö·¢£¬ËùÒÔ£¬±¾Îĵµ¾¡Á¿ÅäºÏ¡¶ Linux Device Driver ¡·µÚÈý°æµÄµÚ¶þÕ£¬ÒÔ¼°½²ÊöÄ£¿é±à³Ì×îÍêÉÆµÄÎĵµ¡¶ The Linux kernel module programming guide ¡·¡£ÏÂÃæ£¬ÎÒÃÇ´Óʵ¼ù¿ªÊ¼³ö·¢°É¡£
1. ÈËÖ®³õ£¨ hello world £©
/*
* hello.c - The first kernel module programming
*/
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_ALERT */
#include <linux/init.h>
MODULE_LICENCE( “ Dual BSD/GPL ” );
static int hello_init(void)
{
printk(KERN_INFO "Hello world\n");
/*
* A non 0 return means init_module failed; module can't be loaded.
*/
return 0;
}
static void hello_exit(void)
{
printk(KERN_INFO "Goodbye world\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR(“dreamice, jyjiang2005@gmail.com ”);
MODULE_DESCRIPTION(“The first module program”);
MODULE_VERSION(“V1.0”);
MODULE_ALIAS(“Chinese: ren zhi chu”);
Makefile:
obj-m := hello.o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
$(RM) *.o *.ko *.mod.c Module.symvers
ÏÖÔÚ£¬ÎÒÃÇÒ»²½Ò»²½À´½âÎöÕâ¸ö×î¼òµ¥µÄhello world Ä£¿é³ÌÐò¡£
1£® /linux/module.h Õâ¸öÊDZØÐëµÄ¡£Õâ¸öÍ·Îļþ°üº¬Á˶ÔÄ£¿é½á¹¹µÄ¶¨ÒåÒÔ¼°Ïà¹ØÐÅÏ¢¡£
2£® module_init ºÍ module_exit ÕâÁ½¸öº¯ÊýÊDZØÐëµÄ¡£ module_init ¾ÍºÃ±ÈÓ¦ÓóÌÐòµÄ main º¯Êý£¬Ã»ÓÐ main º¯Êý£¬Ó¦ÓóÌÐò½«²»ÖªµÀ´ÓÄÄÀ↑ʼִÐС£
3£®¹ØÓÚ printk £¬ÔÚ ldd3 µÄµÚËÄÕÂÓÐÏêϸµÄ˵Ã÷£¬Õâ¸ö¿ÉÒÔ˵ÊÇÄں˵÷ÊÔµÄÒ»¸ö»ù±¾ÊֶΡ£
4£® MODULE_LICENCE £¬ MODULE_AUTHOR £¬ MODULE_DESCR
Ïà¹ØÎĵµ£º
ѧϰӦ¸ÃÊÇÒ»¸öÏȰÑÎÊÌâ¼òµ¥»¯£¬ÔÚ°ÑÎÊÌ⸴ÔÓ»¯µÄ¹ý³Ì¡£Ò»¿ªÊ¼¾Í×ÅÊÖ´¦Àí¸´ÔÓµÄÎÊÌ⣬ÄÑÃâÈà ÈËÓÐÐľªµ¨²ü£¬×½½ó¼ûÖâµÄ¸Ð¾õ¡£¶ÁLinuxÍø¿¨Çý¶¯Ò²ÊÇÒ»Ñù¡£Ädz¤³¤µÄÔ´Âë¼ÐÔÓ×ÅÄÇЩÎÒÃÇİÉúµÄ±äÁ¿ºÍ·ûºÅ£¬Íû¶øÉúη±ãÊÇÀíËùµ±È»µÄÁË¡£²»Òªµ£ÐÄ£¬ÊÂÇé ×ÜÓнâ¾öµÄ°ì·¨£¬ÏȰÑһЩÎÒÃǹܲ»×ŵĴúÂëÇиî³öÈ¥£¬ÁôϱØÐëµÄ²¿·Ö£¬°Ñ¿ò¼ÜÕ ......
----------------------------------------------------------------------------------------------------------------------------------------
/**/
/*
********************************************************************************************************
* @Description:s3c2410µÄrtcÇý¶¯µÄʵ ......
ÎҵĵçÄÔ°²×°ÁË˫ϵͳ£¬WindowsºÍLinux£¬²»¹ýÓÉÓÚLinuxÔÚ×î½üÒ»¶Îʱ¼äÄÚ²»»áʹÓã¬ËùÒÔÎÒ´òËãɾ³ýLinux¡£
ɾ³ýLinux×îÐèҪעÒâµÄµØ·½£¬¾ÍÊÇMBR£¨Master Boot Record£©¡£ÔÚɾ³ýLinux·ÖÇøÇ°£¬ÎÒÃÇÐèÒª½«Æô¶¯WindowsµÄÒýµ¼ÐÅϢдÈëMBR£¬·ñÔò£¬MBRÖеÄLinuxÒýµ¼ÐÅÏ¢£¬µ±È»¾Í²»ÄÜÆô¶¯WindowsÏµÍ ......
ÔÚLinuxÏÂʹÓÃGtk+ʵÏÖ×î¼òµ¥µÄGUI´°¿Ú£¬Ô´´úÂëÈçÏ£º
//SimpleGui.c
#include <gtk/gtk.h>
int main(int argc,char *argv[])
{
//¶¨ÒåÒ»¸öwidget(Gtk+¹¹¼þ)£¬ÕâÀﶨÒåµÄÊÇÒ»¸ö´°¿Ú¹¹¼þ
GtkWidget *wnd;
//Gtk+2.0µÄ³õʼ»¯ÃüÁîÐвÎÊý£¬Ã¿Ò»¸öGtk+³ÌÐò¶¼ÒªÓÐÕâ¾ä»°
gtk_init(& ......
×÷Õߣºlch
matlab
for
Linux
°²×°
(
°²×°·½·¨ÎĵµÊÇ´ÓÍøÉϲé×ÊÁÏ+
ʵ¼ùµÃµ½µÄ )
Ò».
°²×°
1.
Ê×ÏÈÐèÒª½¨Á¢°²×°Ä¿Â¼
[wzh@localhost ~]$ su
[root@localhost ~]$ mkdir /usr/matlab
2.
È»ºó¼ÓÔØ¹âÅÌÓ³Ïñ
[root@localhost wzh]# mount -o loop -t iso9660
/mnt/hda7 ......