ÈÕÆÚ£º2020-12-15
±¾ÊµÑéÀý³Ì·¾¶£ºi.MX6ULÖÕ½áÕß¹âÅÌ×ÊÁÏ/06_LinuxÇý¶¯Àý³Ì/07_gpioled_mutex
´´½¨gpioled_mutex.c£¬ÄÚÈÝÈçÏ£¨ÓÐÊ¡ÂÔ£© £º



µÚ 33 ÐУ¬¶¨Ò廥³âÌå lock¡£
µÚ 45~58 ÐУ¬ÔÚ open º¯ÊýÖе÷Óà mutex_lock_interruptible »òÕß mutex_lock »ñÈ¡ mutex£¬³É¹¦µÄ»°¾Í±íʾ¿ÉÒÔʹÓà LED µÆ£¬Ê§°ÜµÄ»°¾Í»á½øÈëÐÝÃß״̬£¬ºÍÐźÅÁ¿Ò»Ñù¡£
µÚ 114 ÐУ¬ÔÚ release º¯ÊýÖе÷Óà mutex_unlock º¯ÊýÊÍ·Å mutex£¬ÕâÑùÆäËûÓ¦ÓóÌÐò¾Í¿ÉÒÔ»ñÈ¡ mutex ÁË¡£
µÚ 138 ÐУ¬ÔÚÇý¶¯Èë¿Úº¯ÊýÖе÷Óà mutex_init ³õʼ»¯ mutex¡£
»¥³âÌåºÍ¶þÖµÐźÅÁ¿ÀàËÆ£¬Ö»²»¹ý»¥³âÌåÊÇרÃÅÓÃÓÚ»¥³â·ÃÎʵġ£
Ó¦ÓòâÊÔ³ÌÐòʹÓÃ38.1.2ÖеÄÓ¦ÓòâÊÔ³ÌÐò¼´¿É¡£
1¡¢±àÒëÇý¶¯³ÌÐò
Ìí¼ÓMakefileÎļþ£¬ÐÞ¸Äobj-mµÄֵΪ gpioled_mutex.o£¬ÄÚÈÝÈçÏ£º

Ê×ÏÈÎÒÃÇÔÚÖÕ¶ËÊäÈëÁ½¸öÃüÁÉèÖÃÁ½¸ö»·¾³±äÁ¿£©£º
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
È»ºóʹÓá°make¡±ÃüÁî½øÐбàÒ룬Éú³Égpioled_semaphore.koÇý¶¯Ä£¿éÎļþ¡£
2¡¢ÔËÐвâÊÔ
½«±àÒëºÃµÄgpioled_mutex.koÇý¶¯Ä£¿éÎļþ¿½±´µ½/lib/modules/4.1.15Ŀ¼Ï£¨¼ì²é¿ª·¢°å¸ùÎļþϵͳÖÐÓÐûÓС°/lib/modules/4.1.15¡±Õâ¸öĿ¼£¬Èç¹ûûÓеϰÐèÒª×ÔÐд´½¨Ò»Ï¡£¿ª·¢°åÖÐʹÓõÄÊǹâÅÌ×ÊÁÏÀïÃæÌṩµÄbusyboxÎļþϵͳ£¬¹âÅÌ×ÊÁϵġ°i.MX6ULÖÕ½áÕß¹âÅÌ×ÊÁÏ\08_¿ª·¢°åϵͳ¾µÏñ\03_Îļþϵͳ¾µÏñ\01_BusyboxÎļþϵͳ¡±Ä¿Â¼Ï£©¡£ÊäÈëÏÂÃæÃüÁî¼ÓÔØÄ£¿é£º
depmod
modprobe gpioled_mutex
Çý¶¯Ä£¿é¼ÓÔØ³É¹¦Èçͼ 3.1Ëùʾ£º

Çý¶¯Ä£¿é¼ÓÔØ³É¹¦ºó£¬Ê¹ÓÃgpioled_atomic_testÓ¦ÓòâÊÔ³ÌÐò½øÐвâÊÔ£¬²âÊÔÁ÷³ÌºÍÔ×Ó±äÁ¿²âÊÔÒ»Ñù¡£Ê¹ÓÃÏÂÃæµÄÃüÁî´ò¿ªLEDµÆ£º
./gpioled_atomic_test /dev/gpioled 1 &
È»ºó½ô½Ó×ÅÊäÈëLEDµÆ¹Ø±ÕÃüÁ
./gpioled_atomic_test /dev/gpioled 0 &
ÔËÐнá¹ûÈçÏ£º

¿ÉÒÔ¿´³öºÍÐźÅÁ¿µÄ²âÊÔ½á¹ûÒ»Ñù¡£
Ð¶ÔØÄ£¿éÃüÁ
rmmod gpioled_mutex