×ðÁú¿­Ê±¹ÙÍøµÇ¼

ÉèÖÃLinuxϵͳÒÔÖ§³Ö×°±¸Çý¶¯¿ª·¢

ÉèÖÃlinuxϵͳÒÔÖ§³Ö×°±¸Çý¶¯¿ª·¢

µ¼ÑÔ£º

×°±¸Çý¶¯ÊDzÙ×÷ϵͳÓëÓ²¼þÖ®¼äµÄÇÅÁº£¬ËüÈÏÕ潫²Ù×÷ϵͳµÄÇëÇóת»»ÎªÓ²¼þÄܹ»Ã÷È·µÄÖ¸Áî¡£ÔÚLinuxϵͳÖУ¬×°±¸Çý¶¯ÊÇÒÔÄ £¿éµÄÐÎʽ±£´æµÄ¡£±¾ÎĽ«ÏÈÈÝÔõÑùÉèÖÃlinuxϵͳÒÔÖ§³Ö×°±¸Çý¶¯¿ª·¢£¬²¢¸½ÉÏһЩ´úÂëʾÀý£¬×ÊÖú¶ÁÕ߸üºÃµØÃ÷È·¡£

Ò»¡¢×¼±¸ÊÂÇé

×°ÖÃLinuxϵͳ

Òª¾ÙÐÐ×°±¸Çý¶¯µÄ¿ª·¢£¬Ê×ÏÈÐèÒªÔÚ×Ô¼ºµÄ¿ª·¢ÇéÐÎÖÐ×°ÖÃLinuxϵͳ¡£ÍƼöʹÓÃUbuntu»òCentOSµÈ³£¼ûµÄLinux¿¯Ðа棬ÕâЩ¿¯ÐаæÓµÓдó×ڵĿª·¢¹¤¾ßºÍÇý¶¯Ö§³Ö¡£

×°Öÿª·¢¹¤¾ßÁ´

¿ª·¢Çý¶¯ÐèҪʹÓõ½±àÒëÆ÷¡¢µ÷ÊÔÆ÷µÈ¿ª·¢¹¤¾ß¡ £¿ÉÒÔͨ¹ýÒÔÏÂÏÂÁî×°Öó£ÓõĿª·¢¹¤¾ßÁ´£º

sudo apt update
sudo apt install build-essential
sudo apt install gcc
sudo apt install gdb

µÇ¼ºó¸´ÖÆ

ÕâЩ¹¤¾ßÁ´½«×÷ΪÎÒÃÇ¿ª·¢×°±¸Çý¶¯µÄ»ù´¡¡£

×°ÖÃÄÚºËÔ´´úÂë

ΪÁË¿ª·¢×°±¸Çý¶¯£¬ÎÒÃÇÐèÒª»ñÈ¡LinuxÄں˵ÄÔ´´úÂë¡ £¿ÉÒÔͨ¹ýÒÔÏÂÏÂÁîÏÂÔز¢½âѹÄÚºËÔ´Â룺

wget https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.7.7.tar.xz
tar -xvf linux-5.7.7.tar.xz

µÇ¼ºó¸´ÖÆ

ÕâÀïÒÔLinux 5.7.7°æ±¾ÎªÀý£¬¶ÁÕß¿ÉÒÔƾ֤×Ô¼ºµÄÐèÇóÏÂÔØÆäËû°æ±¾µÄÄÚºËÔ´Âë¡£

¶þ¡¢±àÒë²¢¼ÓÔØ×°±¸Çý¶¯Ä £¿é

½ÓÏÂÀ´£¬ÎÒÃǽ«±àдһ¸ö¼òÆÓµÄ×°±¸Çý¶¯Ä £¿é£¬²¢½«Æä±àÒë²¢¼ÓÔص½LinuxϵͳÖС£

½¨ÉèÇý¶¯Ä £¿éÎļþ

ÔÚÄÚºËÔ´ÂëËùÔÚĿ¼Ï½¨ÉèÒ»¸öÃûΪhello_driver.cµÄÎļþ£¬ÄÚÈÝÈçÏ£º

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

static int __init hello_driver_init(void)
{
 printk(KERN_INFO "Hello, driver!
");
 return 0;
}

static void __exit hello_driver_exit(void)
{
 printk(KERN_INFO "Goodbye, driver!
");
}

module_init(hello_driver_init);
module_exit(hello_driver_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("A simple hello driver");

µÇ¼ºó¸´ÖÆ

Õâ¶Î´úÂë½ç˵ÁËÒ»¸ö¼òÆÓµÄ×°±¸Çý¶¯Ä £¿é£¬Ä £¿é¼ÓÔØʱ´òÓ¡”Hello, driver!”£¬Ä £¿éжÔØʱ´òÓ¡”Goodbye, driver!”¡£

±àÒëÇý¶¯Ä £¿é

ÔÚÄÚºËÔ´ÂëĿ¼ÏÂÖ´ÐÐÒÔÏÂÏÂÁî±àÒëÇý¶¯Ä £¿é£º

make -C /lib/modules/$(uname -r)/build M=$(pwd) modules

µÇ¼ºó¸´ÖÆ

¼ÓÔØÇý¶¯Ä £¿é

±àÒëÀֳɺ󣬿ÉÒÔͨ¹ýÒÔÏÂÏÂÁÇý¶¯Ä £¿é¼ÓÔص½ÄÚºËÖУº

sudo insmod hello_driver.ko

µÇ¼ºó¸´ÖÆ

×¢ÖØ£ºÕâÀïµÄhello_driver.koÊDZàÒëÌìÉúµÄÇý¶¯Ä £¿éÎļþÃû¡£

Éó²éÇý¶¯Êä³öÐÅÏ¢

ʹÓÃÒÔÏÂÏÂÁîÉó²éÇý¶¯µÄÊä³öÐÅÏ¢£º

dmesg

µÇ¼ºó¸´ÖÆ

¿ÉÒÔ¿´µ½ÀàËÆÒÔϵÄÊä³ö£º

[  259.309732] Hello, driver!

µÇ¼ºó¸´ÖÆ

жÔØÇý¶¯Ä £¿é

ҪжÔØÇý¶¯Ä £¿é£¬¿ÉÒÔʹÓÃÒÔÏÂÏÂÁ

sudo rmmod hello_driver

µÇ¼ºó¸´ÖÆ

Ö´ÐкóÔÙ´ÎÉó²éÇý¶¯Êä³öÐÅÏ¢£¬½«»á¿´µ½ÀàËÆÒÔϵÄÊä³ö£º

[  260.901703] Goodbye, driver!

µÇ¼ºó¸´ÖÆ

ÒÔÉϰ취չʾÁËÒ»¸ö¼òÆÓµÄ×°±¸Çý¶¯Ä £¿éµÄ±àÒëÓë¼ÓÔØÀú³Ì¡£¶ÁÕß¿ÉÒÔƾ֤×Ô¼ºµÄÐèÇó±àдԽ·¢ÖØ´óµÄÇý¶¯Ä £¿é¡£

½áÓ

±¾ÎÄÏÈÈÝÁËÔõÑùÉèÖÃlinuxϵͳÒÔÖ§³Ö×°±¸Çý¶¯¿ª·¢£¬²¢ÌṩÁËһЩ´úÂëʾÀý¡£Ï£Íûͨ¹ý±¾ÎĵÄÖ¸µ¼£¬¶ÁÕßÄܹ»Ô½·¢Ë³ËìµØ¾ÙÐÐ×°±¸Çý¶¯µÄ¿ª·¢ÊÂÇé¡£

ÒÔÉϾÍÊÇÉèÖÃLinuxϵͳÒÔÖ§³Ö×°±¸Çý¶¯¿ª·¢µÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡

ÃâÔð˵Ã÷£ºÒÔÉÏչʾÄÚÈÝȪԴÓÚÏàÖúýÌå¡¢ÆóÒµ»ú¹¹¡¢ÍøÓÑÌṩ»òÍøÂçÍøÂçÕûÀí£¬°æȨÕùÒéÓë±¾Õ¾Î޹أ¬ÎÄÕÂÉæ¼°¿´·¨Óë¿´·¨²»´ú±í×ðÁú¿­Ê±¹ÙÍøµÇ¼ÂËÓÍ»úÍø¹Ù·½Ì¬¶È£¬Çë¶ÁÕß½ö×ö²Î¿¼¡£±¾ÎĽӴýתÔØ£¬×ªÔØÇë˵Ã÷À´ÓÉ¡£ÈôÄúÒÔΪ±¾ÎÄÇÖÕ¼ÁËÄúµÄ°æȨÐÅÏ¢£¬»òÄú·¢Ã÷¸ÃÄÚÈÝÓÐÈκÎÉæ¼°ÓÐÎ¥¹«µÂ¡¢Ã°·¸Ö´·¨µÈÎ¥·¨ÐÅÏ¢£¬ÇëÄúÁ¬Ã¦ÁªÏµ×ðÁú¿­Ê±¹ÙÍøµÇ¼ʵʱÐÞÕý»òɾ³ý¡£

Ïà¹ØÐÂÎÅ

ÁªÏµ×ðÁú¿­Ê±¹ÙÍøµÇ¼

18523999891

¿É΢ÐÅÔÚÏß×Éѯ

ÊÂÇéʱ¼ä£ºÖÜÒ»ÖÁÖÜÎ壬9:30-18:30£¬½ÚãåÈÕÐÝÏ¢

QR code
ÍøÕ¾µØͼ