LinuxÇý¶¯µÄÅäÖúͱàÒë½Å±¾
ÔÚÍê³ÉÁËÇý¶¯³ÌÐò´úÂëµÄ±àд֮ºó£¬½ÓÏÂÀ´µÄÈÎÎñ¾ÍÊDZàÒë¡£linuxÄں˱àÒëµÄ¹ý³ÌÊÇͨ¹ýÄÚºËÔ´ÂëµÄ¸ùĿ¼ºÍ¸÷×ÓĿ¼ÖеÄMakefile·Ö¼¶¹ÜÀíµÄ¡£ÆäÖиùĿ¼µÄMakefileÊÇ×îÖØÒªµÄ£¬Ëü¿ÉÒÔ¿´³ÉÊÇÆäËûMakefile×î³õµÄÈë¿Ú¡£Ëü¸ºÔð¶¨ÒåËùÓÐÓëÌåϵ½á¹¹Î޹صıäÁ¿ºÍÄ¿±ê£¬¶ÁÈ¡.configÎļþ£¬²¢¸ù¾ÝÆäÐÅÏ¢×îÖÕÉú³Évmlinux(elf¸ñʽµÄLinuxÄÚºË)ºÍmodules(Ä£¿é)¡£makeͨ¹ýÏòϵݹéµ÷ÓÃ×ÓĿ¼ÏµÄMakefileÀ´±àÒëÕâÁ½¸öÄ¿±ê¡£
ͨ³£Ï£Íû°ÑÇý¶¯³ÌÐò·ÅÔÚÄÚºËÀÔÚÅäÖÃÄÚºËʱ¿ÉÒÔ×ÔÓɲüô¡£ÕâÐèÒª¶ÔÄÚºËÅäÖýű¾KbuildÓÐÒ»¶¨µÃÁ˽⡣¾ßÌå¿ÉÒԲο¼ÄÚºËÔ´ÂëÖеÄDocumentation/kbuildĿ¼ÏµÄÏà¹ØÎĵµ
KbuildÊÇÒ»×éºÜÈÝÒ×ʹÓõĽű¾¡£Í¨³£Ö»ÐèÒª¹ØÐĸöĿ¼ÏµÄÁ½¸öÎļþ£ºKconfig(2.6ÄÚºË)ºÍMakefile¡£
ÒÔhelloÄ£¿éΪÀý
step1£º´úÂë±àд
mini2440_hello_module.c ·ÅÖõÄλÖÃ/opt/FriendlyARM/mini2440/linux2.6.29/drivers/char
´úÂëÈçÏÂ
/**********************************************************************************************/
/*Îļþ:mini2440_hello_module.c */
/*¼ò½é:HelloWorld */
/***********************************************************************************************/
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_module_init(void)
{
printk(KERN_ALERT"Hello,world\n");
return 0;
}
static void hello_module_exit(void)
{
printk(KERN_ALERT"Goodbye, world\n");
}
module_init(hello_module_init);
module_exit(hello_module_exit);
step2£º ÔÚchar Ŀ¼Ï´ò¿ªKconfig(¿ÉÒÔÀí½âΪÊÇÄں˵ÄÅäÖýű¾)
Ìí¼Ó
config MINI2440_HELLO_MODULE
tristate "Mini2440/QQ2440 module sample"
depends on ARCH_S3C2440
default m if MACH_FRIE
Ïà¹ØÎĵµ£º
LinuxÌṩÁË´óÁ¿µÄÃüÁÀûÓÃËü¿ÉÒÔÓÐЧµØÍê³É´óÁ¿µÄ¹¤×÷£¬Èç´ÅÅ̲Ù×÷¡¢Îļþ´æÈ¡¡¢Ä¿Â¼²Ù×÷¡¢½ø³Ì¹ÜÀí¡¢ÎļþȨÏÞÉ趨µÈ¡£ËùÒÔ£¬ÔÚLinuxϵͳÉϹ¤×÷Àë²»¿ªÊ¹ÓÃϵͳÌṩµÄÃüÁî¡£ÒªÏëÕæÕýÀí½âLinuxϵͳ£¬¾Í±ØÐë´ÓLinuxÃüÁîѧÆð£¬Í¨¹ý»ù´¡µÄÃüÁîѧϰ¿ÉÒÔ½øÒ»²½Àí½âLinuxϵͳ¡£
²»Í¬Linux·¢ÐаæµÄÃüÁîÊýÁ¿²»Ò»Ñù£¬µ«Linux·¢ÐÐ°æ± ......
tar
-c: ½¨Á¢Ñ¹Ëõµµ°¸
-x£º½âѹ
-t£º²é¿´ÄÚÈÝ
-r£ºÏòѹËõ¹éµµÎļþĩβ׷¼ÓÎļþ
-u£º¸üÐÂÔѹËõ°üÖеÄÎļþ
ÕâÎå¸öÊǶÀÁ¢µÄÃüÁѹËõ½âѹ¶¼ÒªÓõ½ÆäÖÐÒ»¸ö£¬¿ÉÒԺͱðµÄÃüÁîÁ¬Óõ«Ö»ÄÜÓÃÆäÖÐÒ»¸ö¡£ÏÂÃæµÄ²ÎÊýÊǸù¾ÝÐèÒªÔÚѹËõ»ò½âѹµµ°¸Ê±¿ÉÑ¡µÄ¡£
-z£ºÓÐgzipÊôÐÔµÄ
-j£ºÓÐbz2ÊôÐÔµÄ
-Z£ºÓÐcompressÊôÐ﵀ ......
LinuxϾ²Ì¬¿â.aÉú³É
1.½«¸÷º¯Êý´úÂëËùÔÚµÄÔ´Îļþ±àÒë³ÉĿ¼Îļþ¡£ÀýÈ磬¶ÔÓÚmyfunc.c£¬¿ÉÒÔÓÃÈçÏÂÃüÁî ½«Æä±àÒë³ÉÄ¿±êÎļþ£º
gcc -c myfunc.c
µ±È»ÔÚÓжà¸öÔ´Îļþʱ£¬Ö»ÐèÔÚgcc ÃüÁîÐÐÖн«Æä·Ö±ðÁÐÉϾͿÉÒÔÁË¡£¾´ËÒ»²½£¬½«Äܹ»µÃµ½¸÷Ô´ÎļþµÄÄ¿±êÎļþ¡£¶ÔÉÏÀý£¬½«µÃµ½myfunc.o
2.½«¸÷Ä¿±êÎļþÊÕ¼¯ÆðÀ´· ......
ÎÒÓõÄJava°æ±¾Îª1.4£¬ÓÃ1.5µÄʱºò˵ÊÇÓв»°²È«µÄ²Ù×÷£¬ÎÞ·¨±àÒë¡¢ÔËÐС£
ÏÂÔØ×îа汾£¬BRITE.tar.gz
$ gunzip BRITE.tar.gz
$ tar xvf BRITE.tar
$ cd BRITE/
$ make all
±àÒëÍê³É£¬ÔËÐÐBRITE
$ ./brite &
Ö÷ÒªµÄÎÊÌâ ......