ÈÕÆÚ£º2020-12-14
1 ±àдÇý¶¯³ÌÐò
2 ±àдӦÓòâÊÔ³ÌÐò
3 ÔËÐвâÊÔ
ÐźÅÁ¿¿ÉÒÔµ¼ÖÂÐÝÃߣ¬Òò´ËÐźÅÁ¿±£»¤µÄÁÙ½çÇøÃ»ÓÐÔËÐÐʱ¼äÏÞÖÆ£¬¿ÉÒÔÔÚÇý¶¯µÄ open º¯ÊýÉêÇëÐźÅÁ¿£¬È»ºóÔÚrelease º¯ÊýÖÐÊÍ·ÅÐźÅÁ¿¡£µ«ÊÇÐźÅÁ¿²»ÄÜÓÃÔÚÖжÏÖУ¬±¾½ÚʵÑéÎÒÃDz»»áÔÚÖжÏÖÐʹÓÃÐźÅÁ¿¡£
±¾ÊµÑéÀý³Ì·¾¶£ºi.MX6ULÖÕ½áÕß¹âÅÌ×ÊÁÏ/06_LinuxÇý¶¯Àý³Ì/06_gpioled_semaphore´´½¨gpioled_semaphore.cÎļþ£¬ÒòΪºÍÇ°ÃæµÄʵÑéÇý¶¯Îļþ²¿·ÖÊÇÏàͬ²»ÓÃÐ޸ĵģ¬ÏÂÃæÊDz¿·ÖÄÚÈÝ£º




µÚ 17 ÐУ¬ÒªÊ¹ÓÃÐźÅÁ¿±ØÐëÌí¼Ó
µÚ 34 ÐУ¬ÔÚÉ豸½á¹¹ÌåÖÐÌí¼ÓÒ»¸öÐźÅÁ¿³ÉÔ±±äÁ¿ sem¡£
µÚ 46~59ÐУ¬ÔÚ openº¯ÊýÖÐÉêÇëÐźÅÁ¿£¬¿ÉÒÔʹÓà down º¯Êý£¬Ò²¿ÉÒÔʹÓà down_interruptibleº¯Êý¡£Èç¹ûÐźÅÁ¿Öµ´óÓÚµÈÓÚ 1 ¾Í±íʾ¿ÉÓã¬ÄÇôӦÓóÌÐò¾Í»á¿ªÊ¼Ê¹Óà LED µÆ¡£Èç¹ûÐźÅÁ¿ÖµÎª 0 ¾Í±íʾӦÓóÌÐò²»ÄÜʹÓà LED µÆ£¬´ËʱӦÓóÌÐò¾Í»á½øÈëµ½ÐÝÃß״̬¡£µÈµ½ÐźÅÁ¿Öµ´óÓÚ 1 µÄʱºòÓ¦ÓóÌÐò¾Í»á»½ÐÑ£¬ÉêÇëÐźÅÁ¿£¬»ñÈ¡ LED µÆÊ¹ÓÃȨ¡£
µÚ 114 ÐУ¬ÔÚ release º¯ÊýÖе÷Óà up º¯ÊýÊÍ·ÅÐźÅÁ¿£¬ÕâÑùÆäËûÒòΪûÓеõ½ÐźÅÁ¿¶ø½øÈëÐÝÃß״̬µÄÓ¦ÓóÌÐò¾Í»á»½ÐÑ£¬»ñÈ¡ÐźÅÁ¿¡£
µÚ 138 ÐУ¬ÔÚÇý¶¯Èë¿Úº¯ÊýÖе÷Óà sema_init º¯Êý³õʼ»¯ÐźÅÁ¿ sem µÄֵΪ 1£¬Ï൱ÓÚ semÊǸö¶þÖµÐźÅÁ¿¡£
×ܽáһϣ¬µ±ÐźÅÁ¿ sem Ϊ 1 µÄʱºò±íʾ LED µÆ»¹Ã»Óб»Ê¹Óã¬Èç¹ûÓ¦ÓóÌÐò A ҪʹÓÃLED µÆ£¬Ïȵ÷Óà open º¯Êý´ò¿ª/dev/gpioled£¬Õâ¸öʱºò»á»ñÈ¡ÐźÅÁ¿ sem£¬»ñÈ¡³É¹¦ÒÔºó sem µÄÖµ¼õ 1 ±äΪ 0¡£Èç¹û´ËʱӦÓóÌÐò B ҲҪʹÓà LED µÆ£¬µ÷Óà open º¯Êý´ò¿ª/dev/gpioled ¾Í»áÒòΪÐźÅÁ¿ÎÞЧ(ֵΪ 0)¶ø½øÈëÐÝÃß״̬¡£µ±Ó¦ÓóÌÐò A ÔËÐÐÍê±Ï£¬µ÷Óà close º¯Êý¹Ø±Õ/dev/gpioledµÄʱºò¾Í»áÊÍ·ÅÐźÅÁ¿ sem£¬´ËʱÐźÅÁ¿ sem µÄÖµ¾Í»á¼Ó 1£¬±äΪ 1¡£ÐźÅÁ¿ sem ÔÙ´ÎÓÐЧ£¬±íʾÆäËûÓ¦ÓóÌÐò¿ÉÒÔʹÓà LED µÆÁË£¬´ËʱÔÚÐÝÃß״̬µÄÓ¦ÓóÌÐò A ¾Í»á»ñÈ¡µ½ÐźÅÁ¿ sem£¬»ñÈ¡³É¹¦ÒÔºó¾Í¿ªÊ¼Ê¹Óà LED µÆ¡£
Ó¦ÓòâÊÔ³ÌÐòʹÓÃ38.1.2ÖеÄÓ¦ÓòâÊÔ³ÌÐò¼´¿É¡£
1¡¢±àÒëÇý¶¯³ÌÐò
Ìí¼ÓMakefileÎļþ£¬ÐÞ¸Äobj-mµÄֵΪ gpioled_semaphore.o£¬ÄÚÈÝÈçÏ£º

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

Çý¶¯Ä£¿é¼ÓÔØ³É¹¦ºó£¬Ê¹ÓÃgpioled_atomic_testÓ¦ÓòâÊÔ³ÌÐò½øÐвâÊÔ£¬²âÊÔÁ÷³ÌºÍÔ×Ó±äÁ¿²âÊÔÒ»Ñù¡£Ê¹ÓÃÏÂÃæµÄÃüÁî´ò¿ªLEDµÆ£º
./gpioled_atomic_test /dev/gpioled 1 &
È»ºó½ô½Ó×ÅÊäÈëLEDµÆ¹Ø±ÕÃüÁ
./gpioled_atomic_test /dev/gpioled 0 &
×¢ÒâÁ½¸öÃüÁî¶¼ÊÇÔËÐÐÔÚºǫ́£¬µÚÒ»ÌõÃüÁîÏÈ»ñÈ¡µ½ÐźÅÁ¿£¬Òò´Ë¿ÉÒÔ²Ù×÷ LED µÆ£¬½«LED µÆ´ò¿ª£¬²¢ÇÒÕ¼ÓÐ 25S¡£µÚ¶þÌõÃüÁîÒòΪ»ñÈ¡ÐźÅÁ¿Ê§°Ü¶ø½øÈëÐÝÃß״̬£¬µÈ´ýµÚÒ»ÌõÃüÁîÔËÐÐÍê±Ï²¢ÊÍ·ÅÐźÅÁ¿ÒÔºó²ÅÓµÓÐ LED µÆÊ¹ÓÃȨ£¬½« LED µÆ¹Ø±Õ£¬ÔËÐнá¹ûÈçͼ 3.2Ëùʾ£º

¿ÉÒÔ¿´µ½ÓÐÁ½´ÎÔËÐнá¹û¡£
Ð¶ÔØÄ£¿éÃüÁ
rmmod gpioled_semaphore