調試exynos4412—ARM嵌入式Linux—LEDS/GPIO驅動之二

来源:http://www.cnblogs.com/-4412/archive/2016/02/22/5206728.html
-Advertisement-
Play Games

我們在前面的devicenode_linux_module.c文件上添加代碼,首先將文件名devicenode_linux_module.c改為leds.c。 先處理一下編譯文件Makefile,如下圖所示,將devicenode_linux_module改為leds。


 /**

****************************************************************************** * @author    暴走的小哥哥 * @version   V1.0.0 * @date       2016-02-19 ****************************************************************************** * <  Beijing university of posts and telecommunications > ******************************************************************************* ****************************************************************************** * platform exynos4412 ******************************************************************************* **/ 1工具

1.1硬體工具

1)iTOP4412開發板

2)U盤或者TF卡

3)PC機

4)串口

1.2軟體工具

1)虛擬機Vmware

2)Ubuntu12.04.2

3)超級終端(串口助手)

2驅動MakeFile文件的編寫

我們在前面的devicenode_linux_module.c文件上添加代碼,首先將文件名devicenode_linux_module.c改為leds.c。

先處理一下編譯文件Makefile,如下圖所示,將devicenode_linux_module改為leds。

3編寫驅動調用LED管腳

接著修改leds.c文件。

首先添加需要的頭文件,如下圖所示,分別是申請GPIO、配置函數、配置參數、GPIO巨集定義等的頭文件。然後將設備節點名稱由hello_ctl123修改為hello_ctl

然後需要修改的就是probe函數,一般說來GPIO的初始化都是在probe中。如下圖所示,調用配置函數以及配置函數。

然後就是修改一下ioctl函數,在Linux中對GPIO的控制一般是使用ioctl,雖然write函數也可以實現類似的功能,但是ioctl函數的效率高一些。如下圖所示,根據應用傳入的參數給GPIO賦值。

如上圖所示,先對於參數做一個簡單的判斷,然後給led賦值。

34編寫應用調用LED管腳

接著再來看一下應用,如下圖所示,應用比較簡單,調用延時函數,首先將Led點亮三秒,然後再滅掉三秒,再點亮。

在Ubuntu系統下新建leds文件夾,將寫好的leds和編譯腳本拷貝到leds文件夾下,使用Makefile命令編譯驅動,使用

“arm-none-linux-gnueabi-gcc -o invoke_leds invoke_leds.c -static”命令編譯應用。如下圖所示。

將上圖中的文件invoke_leds和leds.ko拷貝到U盤。

啟動開發板,將U盤插入開發板,使用命令“ mount /dev/sda1 /mnt/udisk/”載入U盤符,

使用命令“ insmod /mnt/udisk/leds.ko ”載入驅動leds.ko,

使用命令“./mnt/udisk/invoke_leds”運行小應用invoke_leds,如下圖所示。

經過上面的操作可觀察到led小燈會一亮一滅一亮,中間大概間隔三秒鐘。

 

本人文字水平有限,所以就一步一步的寫和截圖,希望這種形式對大家有所幫助!

本文只對系統預設的led進行控制,如果想要調用復用的leds,例如和wifi,camera復用

請參考本人博客:調試exynos4412—ARM嵌入式Linux—LEDS/GPIO驅動之三


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • group by 這個關鍵字,這個語句太平凡了~基本上只要有報表的地方,就會有它的身影。 常規用法就是 INSERT INTO #TypeValue ( TypeID, Col2 ) VALUES (1 , N'名稱1'),(1 , N'名稱2'),(2 , N'名稱3'),(2, N'名稱3'),
  • oracle的資料庫操作都會被記錄在redo log中,用來進行undo(回滾)或在資料庫異常的時候redo(重做)。redo log又分為online(線上日誌)和archive(歸檔日誌)兩部分。 oracle預設有3個線上日誌文件,通常它們是按順序寫滿一個再寫下一個,而寫滿的線上日誌文件會被整
  • 運行配置和移植工具中的Net Configuration Assistant,進行監聽程式配置。刪除配置,然後重新配置。 切記 一定是先刪除配置,再重新配置,而不是新建配置。 或者 打開Net Manager檢查“服務命名”的主機名和“監聽程式”的主機是否與本機ip一致,如果不一致請修改成本機ip,
  • 網路協議分析 1. 網路模型 2. 協議分析 2.1協議架構 2. 2 乙太網協議格式 2. 3 IP協議格式 2. 4 TCP協議格式 2. 5 UDP協議格式
  • ## 下麵命令都是以root用戶執行 ## 查看內核版本 uname -a # Debian 3.2.0-4 x86_64 ## 版本太低了
  • 1.配置email及name git config --global user.email "[email protected]" git config --global user.name "jaxGu" 2.生成密鑰: $ ssh-keygen -t rsa -C “guxuelon
  • 原文鏈接:http://blog.csdn.net/johnnycode/article/details/40624403 本學習主要針對 Centos 7.0.1406 版本進行學習整理! 如果你使用 VirtualBox 配置 Centos 那麼請參考我的這篇文章 Centos 7 學習之靜態I...
  • Linux(Fedora)下NodeJs升級最新版本(制定版本) 首先安裝n模塊: npm install -g n 升級node.js到最新穩定版 n stable 升級node.js到制定版本 n v0.10.26
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...