調試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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...