{"id":17856,"date":"2025-10-06T10:39:35","date_gmt":"2025-10-06T05:09:35","guid":{"rendered":"https:\/\/fastbitlab.com\/?p=17856"},"modified":"2025-10-06T10:39:35","modified_gmt":"2025-10-06T05:09:35","slug":"use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts","status":"publish","type":"post","link":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/","title":{"rendered":"Use of Push Button with BeagleBone Black  Using Linux Kernel Interrupts"},"content":{"rendered":"<div class=\"boldgrid-section\">\n<div class=\"container\">\n<div class=\"row\" style=\"padding-top: 50px; padding-bottom: 50px;\">\n<div class=\"col-md-1 col-sm-12 col-xs-12 col-lg-1\">\n<p class=\"\">&nbsp;<\/p>\n<\/div>\n<div class=\"col-md-10 col-sm-6 col-xs-12 col-lg-10\">\n<h2 class=\"h1 color2-color\" style=\"width: 90%; text-align: left;\">Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts<\/h2>\n<div class=\"row bg-editor-hr-wrap\" style=\"margin-top: 2px; margin-right: -1px; margin-left: -32px; width: auto;\">\n<div class=\"col-md-12 col-xs-12 col-sm-12 col-lg-12\">\n<div>\n<p>&nbsp;<\/p>\n<hr class=\"bg-hr\" style=\"color: #080019;\">\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"\" style=\"font-size: 17px;\">In this project, it shows how to use a push button with the BeagleBone Black by writing a simple Linux interrupt driver.<\/p>\n<p class=\"\" style=\"font-size: 17px;\">It explains step by step how to test the GPIO pin, how to write the driver, and how it responds when the button is pressed. The goal is to help you understand the basics of GPIO, interrupts, and driver development on embedded Linux.<\/p>\n<h2 class=\"\" style=\"font-size: 26px;\"><span style=\"color: #333399;\">Prerequisites<\/span><\/h2>\n<p class=\"\" style=\"font-size: 17px;\">Before you start, make sure you have:<br \/>\n\u2022 BeagleBone Black (BBB) board<br \/>\n\u2022 Debian Linux running on the BeagleBone Black<br \/>\n\u2022 Kernel headers installed on your BBB<br \/>\n\u2022 Push button, Resistor (1k\u03a9) and jumper wires<br \/>\n\u2022 Basic knowledge of C programming<\/p>\n<h2 class=\"\" style=\"font-size: 26px;\"><span style=\"color: #333399;\">Hardware Setup<\/span><\/h2>\n<p class=\"\" style=\"font-size: 17px;\">\u2022 Connect one side of the push button to P8_16 (this is GPIO46).<br \/>\n\u2022 Connect the other side of the push button to 3.3V.<br \/>\n\u2022 Put a 1k\u03a9 resistor from P8_16 to GND (pull-down).<\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\"><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-17866 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2025\/10\/Img_1.jpg\" alt=\"\" width=\"613\" height=\"344\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1.jpg 1600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1-300x168.jpg 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1-1024x575.jpg 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1-768x431.jpg 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1-1536x862.jpg 1536w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1-800x450.jpg 800w\" sizes=\"(max-width: 613px) 100vw, 613px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<h1 class=\"\" style=\"font-size: 34px;\"><span style=\"color: #b30718;\">Steps To Run Project<\/span><\/h1>\n<h2 class=\"\" style=\"font-size: 26px;\"><span style=\"color: #000080;\">Step 1: Verify GPIO in sysfs<\/span><\/h2>\n<p class=\"\" style=\"font-size: 17px;\">Before writing a kernel driver, it\u2019s important to test the GPIO pin manually using the sysfs interface.<br \/>\nThis ensures your button is correctly connected and the pin is functional.<\/p>\n<p class=\"\" style=\"font-size: 17px;\">\u2022 Export the GPIO pin using command:<br \/>\n&nbsp; &nbsp;<em>echo 46 &gt; \/sys\/class\/gpio\/export<\/em><\/p>\n<p class=\"\" style=\"font-size: 17px;\">\u2022 Set the GPIO as input using command:<br \/>\n&nbsp; &nbsp;<em>echo in &gt; \/sys\/class\/gpio\/gpio46\/direction<\/em><\/p>\n<p class=\"\" style=\"font-size: 17px;\">\u2022 Read the GPIO value using command:<br \/>\n&nbsp; &nbsp;<em>cat \/sys\/class\/gpio\/gpio46\/value<\/em><\/p>\n<p class=\"\" style=\"font-size: 17px;\">\u2022 Test the button<\/p>\n<p class=\"mod-reset\" style=\"padding-left: 40px; font-size: 17px;\">Press and release the button while running the cat command repeatedly. We should see the value change between 0 (LOW) and 1 (HIGH), confirming that the GPIO pin is working correctly<\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"mod-reset\"><img decoding=\"async\" class=\"aligncenter wp-image-17879\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2025\/10\/Img_2.jpg\" alt=\"\" width=\"792\" height=\"445\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_2.jpg 1366w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_2-300x169.jpg 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_2-1024x576.jpg 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_2-768x432.jpg 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_2-800x450.jpg 800w\" sizes=\"(max-width: 792px) 100vw, 792px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<h2 class=\"\" style=\"font-size: 26px;\"><span style=\"color: #000080;\">Step 2: Creating Linux Driver Project<\/span><\/h2>\n<p class=\"\" style=\"font-size: 17px;\">On the host machine, create a project folder and add two files: main.c and Makefile. You can copy the driver code and Makefile content from ours Drive .<\/p>\n<h2 class=\"\" style=\"font-size: 26px;\"><span style=\"color: #000080;\">Step 3: Core Driver Implementation<\/span><\/h2>\n<p class=\"\" style=\"font-size: 17px;\">The key components of the Linux driver are shown below, along with how it initializes, uses a counter to handle button presses, and cleans up.<\/p>\n<h3 class=\"\" style=\"font-size: 20px;\"><span style=\"color: #800080;\">\u27a2 Driver Registration<\/span><\/h3>\n<p class=\"\"><img decoding=\"async\" class=\"aligncenter wp-image-17884 size-full\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2025\/10\/Img_3.jpg\" alt=\"\" width=\"677\" height=\"246\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_3.jpg 677w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_3-300x109.jpg 300w\" sizes=\"(max-width: 677px) 100vw, 677px\" \/><\/p>\n<p class=\"\" style=\"font-size: 17px;\">This part is where the driver registers with the kernel to handle interrupts for the GPIO pin.<br \/>\n\u201crequest_irq\u201d tells the kernel to call this function (button_isr) whenever the IRQ happens. The \u201cIRQF_TRIGGER_RISING\u201d makes sure the handler triggers when the button goes from LOW to HIGH. If registration fails, the driver releases the GPIO and returns an error.<\/p>\n<p class=\"\">&nbsp;<\/p>\n<h3 class=\"\" style=\"font-size: 20px;\"><span style=\"color: #993366;\">\u27a2 Interrupt Service Routine (ISR) with Button Press Count<\/span><\/h3>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17886 size-full aligncenter\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2025\/10\/Img_4.jpg\" alt=\"\" width=\"673\" height=\"174\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_4.jpg 673w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_4-300x78.jpg 300w\" sizes=\"(max-width: 673px) 100vw, 673px\" \/><\/p>\n<p class=\"\" style=\"font-size: 17px;\">This function is called every time the button is pressed. It increments a counter to keep track of how many times the button was pressed and prints the count in the kernel log. Returning IRQ_HANDLED tells the kernel that the interrupt was successfully handled.<\/p>\n<p class=\"\">&nbsp;<\/p>\n<h3 class=\"\" style=\"font-size: 20px;\"><span style=\"color: #993366;\">\u27a2 Initialization Function (button_init)<\/span><\/h3>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17885 size-full aligncenter\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2025\/10\/Img_5.jpg\" alt=\"\" width=\"548\" height=\"761\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_5.jpg 548w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_5-216x300.jpg 216w\" sizes=\"(max-width: 548px) 100vw, 548px\" \/><\/p>\n<p class=\"\" style=\"font-size: 17px;\">The initialization function runs when the driver is first loaded. In this step, the driver starts by showing a log message that it is being set up. It then checks if the GPIO number we are using is valid. After that, it requests control of the GPIO pin so no other program can use it. Once the pin is reserved, it is set as an input because we are connecting a button to it. The driver then changes the GPIO pin number into an IRQ number, which allows it to work with interrupts.<\/p>\n<p class=\"\" style=\"font-size: 17px;\">Finally, it registers the interrupt handler so that whenever the button is pressed (going from LOW to HIGH), the handler will run.<\/p>\n<p class=\"\">&nbsp;<\/p>\n<h3 class=\"\" style=\"font-size: 20px;\"><span style=\"color: #993366;\">\u27a2 Exit \/ Cleanup Function<\/span><\/h3>\n<p class=\"\" style=\"font-size: 17px;\">When you remove the driver using rmmod, this function cleans up and freeing interrupt and freeing the GPIO, so system stays clean.<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17890 aligncenter\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2025\/10\/Img_6.jpg\" alt=\"\" width=\"741\" height=\"138\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_6.jpg 1183w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_6-300x56.jpg 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_6-1024x190.jpg 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_6-768x143.jpg 768w\" sizes=\"(max-width: 741px) 100vw, 741px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2 class=\"\" style=\"font-size: 26px;\"><span style=\"color: #000080;\">Step 4: Build the Kernel Module<\/span><\/h2>\n<p class=\"\" style=\"font-size: 17px;\">\u2022 To build the module on the host machine, simply run make. This will generate main.ko (kernel<br \/>\nmodule file).<br \/>\n\u2022 To clean the build artifacts, simply run make clean.<\/p>\n<p class=\"\">&nbsp;<\/p>\n<h2 class=\"\" style=\"font-size: 26px;\"><span style=\"color: #000080;\">Step 5: Build and Run on Target (BeagleBone Black)<\/span><\/h2>\n<ul class=\"\" style=\"font-size: 17px;\">\n<li>Create folder on Target.<\/li>\n<li>In Host Transfer the main.ko file to the Target: scp main.ko debian@:\/home\/debian\/<\/li>\n<li>&nbsp;In the BBB Insert the module on the BBB: sudo insmod main.ko .<\/li>\n<li>Now you can see in the screen that Button is pressed when you press the button<\/li>\n<li>To remove the module: sudo rmmod main.ko.<\/li>\n<\/ul>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17894 aligncenter\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2025\/10\/Img_7.jpg\" alt=\"\" width=\"801\" height=\"450\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_7.jpg 1366w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_7-300x169.jpg 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_7-1024x576.jpg 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_7-768x432.jpg 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_7-800x450.jpg 800w\" sizes=\"(max-width: 801px) 100vw, 801px\" \/><\/p>\n<\/div>\n<\/div>\n<div class=\"row\">\n<div class=\"col-md-12 col-xs-12 col-sm-12 col-lg-12\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"boldgrid-section\">\n<div class=\"container\">\n<div class=\"row\">\n<div class=\"col-lg-12 col-md-12 col-xs-12 col-sm-12\">\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts &nbsp; &nbsp; In this project, it shows how to use a push button with the BeagleBone Black by writing a simple Linux interrupt driver. It explains step by step how to test the GPIO pin, how to write the driver, and how it [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":17866,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"0","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[8],"tags":[],"class_list":["post-17856","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts<\/title>\n<meta name=\"description\" content=\"&nbsp; Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts &nbsp; &nbsp; In this project, it shows how to use a push button with the\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts\" \/>\n<meta property=\"og:description\" content=\"&nbsp; Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts &nbsp; &nbsp; In this project, it shows how to use a push button with the\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/\" \/>\n<meta property=\"og:site_name\" content=\"FastBit EBA\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/fastbiteba\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-06T05:09:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"898\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"FastBitLab\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fastbiteba\" \/>\n<meta name=\"twitter:site\" content=\"@fastbiteba\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"FastBitLab\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/\"},\"author\":{\"name\":\"FastBitLab\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\"},\"headline\":\"Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts\",\"datePublished\":\"2025-10-06T05:09:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/\"},\"wordCount\":707,\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Img_1.jpg\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/\",\"name\":\"Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Img_1.jpg\",\"datePublished\":\"2025-10-06T05:09:35+00:00\",\"description\":\"&nbsp; Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts &nbsp; &nbsp; In this project, it shows how to use a push button with the\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/#primaryimage\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Img_1.jpg\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Img_1.jpg\",\"width\":1600,\"height\":898},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\",\"name\":\"FastBit EBA\",\"description\":\"Your Online Academy of Embedded Systems\",\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\",\"name\":\"FastBit EBA\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-EzNrEnyr.png\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-EzNrEnyr.png\",\"width\":640,\"height\":640,\"caption\":\"FastBit EBA\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/fastbiteba\\\/\",\"https:\\\/\\\/x.com\\\/fastbiteba\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/fastbit-embedded-brain-academy-b3167b124\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCa1REBV9hyrzGp2mjJCagBg\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\",\"name\":\"FastBitLab\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"caption\":\"FastBitLab\"},\"description\":\"The FastBit Embedded Brain Academy uses the power of internet to bring the online courses related to the field of embedded system programming, Real time operating system, Embedded Linux systems, etc at your finger tip with very low cost. Backed with strong experience of industry, we have produced lots of courses with the customer enrolment over 3000+ across 100+ countries.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts","description":"&nbsp; Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts &nbsp; &nbsp; In this project, it shows how to use a push button with the","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/","og_locale":"en_US","og_type":"article","og_title":"Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts","og_description":"&nbsp; Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts &nbsp; &nbsp; In this project, it shows how to use a push button with the","og_url":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/","og_site_name":"FastBit EBA","article_publisher":"https:\/\/www.facebook.com\/fastbiteba\/","article_published_time":"2025-10-06T05:09:35+00:00","og_image":[{"width":1600,"height":898,"url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1.jpg","type":"image\/jpeg"}],"author":"FastBitLab","twitter_card":"summary_large_image","twitter_creator":"@fastbiteba","twitter_site":"@fastbiteba","twitter_misc":{"Written by":"FastBitLab","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/#article","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/"},"author":{"name":"FastBitLab","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d"},"headline":"Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts","datePublished":"2025-10-06T05:09:35+00:00","mainEntityOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/"},"wordCount":707,"publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1.jpg","articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/","url":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/","name":"Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/#primaryimage"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1.jpg","datePublished":"2025-10-06T05:09:35+00:00","description":"&nbsp; Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts &nbsp; &nbsp; In this project, it shows how to use a push button with the","breadcrumb":{"@id":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/#primaryimage","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1.jpg","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2025\/10\/Img_1.jpg","width":1600,"height":898},{"@type":"BreadcrumbList","@id":"https:\/\/fastbitlab.com\/blog\/use-of-push-button-with-beaglebone-black-using-linux-kernel-interrupts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fastbitlab.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Use of Push Button with BeagleBone Black Using Linux Kernel Interrupts"}]},{"@type":"WebSite","@id":"https:\/\/fastbitlab.com\/blog\/#website","url":"https:\/\/fastbitlab.com\/blog\/","name":"FastBit EBA","description":"Your Online Academy of Embedded Systems","publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fastbitlab.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fastbitlab.com\/blog\/#organization","name":"FastBit EBA","url":"https:\/\/fastbitlab.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2026\/04\/logo-EzNrEnyr.png","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2026\/04\/logo-EzNrEnyr.png","width":640,"height":640,"caption":"FastBit EBA"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/fastbiteba\/","https:\/\/x.com\/fastbiteba","https:\/\/www.linkedin.com\/in\/fastbit-embedded-brain-academy-b3167b124\/","https:\/\/www.youtube.com\/channel\/UCa1REBV9hyrzGp2mjJCagBg"]},{"@type":"Person","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d","name":"FastBitLab","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","caption":"FastBitLab"},"description":"The FastBit Embedded Brain Academy uses the power of internet to bring the online courses related to the field of embedded system programming, Real time operating system, Embedded Linux systems, etc at your finger tip with very low cost. Backed with strong experience of industry, we have produced lots of courses with the customer enrolment over 3000+ across 100+ countries."}]}},"_links":{"self":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/17856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/comments?post=17856"}],"version-history":[{"count":11,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/17856\/revisions"}],"predecessor-version":[{"id":17911,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/17856\/revisions\/17911"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media\/17866"}],"wp:attachment":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media?parent=17856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/categories?post=17856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/tags?post=17856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}