嵌入式培訓機構四個月實訓課程筆記(完整版)-Linux ARM驅動編程第七天-內核函數接口(物聯技術666)

鏈接:https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd=1688
提取碼:1688

//**************************************************

#include <linux/module.h>??? /*module_init()*/

#include <linux/kernel.h>??????? /* printk() */

#include <linux/init.h>??????????? /* __init __exit */

#include <linux/fs.h>????????????? /* file_operation */

#include <asm/uaccess.h>????? /* copy_to_user, copy_from_user */

#include <linux/device.h>? ?????? /*class ,class_create ,device_create 等*/

#include <linux/errno.h>???????? /* Error number */

#include <linux/delay.h>???????? /* udelay */

#include <mach/regs-gpio.h>? /*S3C2410_GPGCON ,S3C2410_GPIO_IRQ*/

#include <linux/pci.h>???????????? ?????? /*S3C24XX_VA_GPIO*/

#include <linux/irq.h>???????????? //set_irq_type ,IRQ_TYPE_EDGE_FALLING

#include <linux/interrupt.h>?????? //request_irq , free_irq

#include <mach/irqs.h>??? ?????? //IRQ_EINT2

#include <linux/gpio.h>? ?????? //s3c2410_gpio_cfgpin();

#include <linux/workqueue.h>?????? //workqueue

#include <linux/kfifo.h>????????? //kfifo

#include <linux/slab.h>??????????

#include <linux/slab_def.h>??? //malloc

#include <linux/string.h>???????? //string

#include <linux/spinlock.h>???? //自旋鎖spin

#include <linux/mutex.h>??????? //互斥鎖mutex

#include <linux/poll.h>? ? ?????? //poll_wait()

#include <linux/sched.h>? ???? ? //wake_up_interruptible->TASK_INTERRUPTIBLE,current

#include <linux/timer.h>???????? //定時器

#include <linux/jiffies.h>???????? //內部計數器值

#include <linux/wait.h>?????????? //

#include <linux/kthread.h> ?????? //kthread_create()、kthread_run()

#include <linux/err.h>???????????? //IS_ERR()、PTR_ERR()

//**************************************************

I/O函數:

//***************************************************

寄存器地址映射:linux用的是虛擬地址,而裸機用的是物理地址,要像裸機一樣設置IO口必須轉換一下地址。

#include <mach/regs-gpio.h>?

#include <linux/pci.h>

#include <linux/gpio.h>?

#define GPGCON????? (*(volatile unsigned long *)S3C2410_GPGCON)?????

#define GPGDAT???? (*(volatile unsigned long *)S3C2410_GPGDAT)

#define GPGUP????? (*(volatile unsigned long *)S3C2410_GPGUP)??

同理,其他IO口也可以類似轉換。

//設置IO狀態

s3c2410_gpio_cfgpin(S3C2410_GPG(0),S3C2410_GPIO_INPUT);??????

s3c2410_gpio_cfgpin(S3C2410_GPG(1),S3C2410_GPIO_OUTPUT);

//IO置1或者清0

s3c2410_gpio_setpin(S3C2410_GPG(0), 0);

s3c2410_gpio_setpin(S3C2410_GPG(1), 1);

unsigned int s3c2410_gpio_getpin(unsigned int pin)

{

??? void __iomem *base = S3C24XX_GPIO_BASE(pin);

??? unsigned long offs = S3C2410_GPIO_OFFSET(pin);

??? return __raw_readl(base + 0x04) & (1<< offs);

}

s3c2410_gpio_getpin()的返回值是GPxDAT寄存器的值與所要讀取的GPIO對應的bit mask相與以后的值,0表示該GPIO對應的bit為0, 非0表示該bit為1,所以s3c2410_gpio_getpin(S3C2410_GPG(9))如果GPG9為低電平則返回的是0,如果是高電平則返回的是GPxDAT中的GPG9對應位的值為0x0100而不是0x0001,查處問題后修改也很簡單了。

//****************************************************

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696227.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696227.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696227.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【析】考慮同時取送和時間窗的車輛路徑及求解算法

期刊&#xff1a;computer engineering and applications 計算機工程與應用![c 引言 1. 問題分析 1.1 問題描述 問題描述為&#xff1a; 若干運輸車輛從配送中心出發為客戶取送貨并最終返回配送中心&#xff0c;每位客戶僅由一輛車服務一次&#xff0c;車輛在配送過程中任…

rust實戰系列八:常量

在Rust中還可以用const關鍵字做聲明。如下所示: const GLOBAL: i32 0; 使用const聲明的是常量&#xff0c;而不是變量。因此一定不允許使用mut關鍵字修飾這 個變量綁定&#xff0c;這是語法錯誤。常量的初始化表達式也一定要是一個編譯期常量&#xff0c;不 能是運行期的值。它…

ChatGPT丨成像光譜遙感技術中的AI革命:ChatGPT應用指南

遙感技術主要通過衛星和飛機從遠處觀察和測量我們的環境&#xff0c;是理解和監測地球物理、化學和生物系統的基石。ChatGPT是由OpenAI開發的最先進的語言模型&#xff0c;在理解和生成人類語言方面表現出了非凡的能力。本課程重點介紹ChatGPT在遙感中的應用&#xff0c;人工智…

尾礦庫排洪系統結構仿真軟件WKStruc(可試用)

1、背景介紹 尾礦庫作為重大危險源之一&#xff0c;在國際災害事故排名中位列第18位&#xff0c;根據中國鉬業2019年8月刊《中國尾礦庫潰壩與泄漏事故統計及成因分析》的統計&#xff0c;在46起尾礦庫泄漏事故中&#xff0c;由于排洪設施導致的尾礦泄漏事故占比高達1/3&#x…

c#創建安裝windows服務

背景:最近在做設備數據對接采集時,遇到一些設備不是標準的Service-Client接口,導致采集的數據不夠準確;比如設備如果中途開關機后,加工的數量就會從0開始重新計數,因此需要實時監控設備的數據,進行疊加處理;考略到工廠設備比較多,實時監聽接口的數據為每秒3次,因此將…

外包干了三年,技術算是廢了。。。

先說一下自己的個人情況&#xff0c;大專生&#xff0c;17年通過校招進入湖南某軟件公司&#xff0c;干了接近5年的手工測試&#xff0c;今年年初&#xff0c;感覺自己不能夠在這樣下去了&#xff0c;長時間呆在一個舒適的環境會讓一個人墮落!而我已經在一個企業干了五年的手工…

LeetCode.106. 從中序與后序遍歷序列構造二叉樹

題目 106. 從中序與后序遍歷序列構造二叉樹 分析 前面講過根據前序和中序構建二叉樹&#xff1a;博客鏈接 這道題是告訴我們一顆二叉樹的后序和中序&#xff0c;讓我們根據后序和中序構造出整顆二叉樹。 拿到這道題&#xff0c;我們首先要知道中序的后序又怎樣的性質&#…

云上業務一鍵性能調優,應用程序性能診斷工具 Btune 上線

- 01 - 終于等來了預算&#xff0c;這就把服務遷移到最新的 CPU 平臺上去&#xff0c;這樣前端的同事立馬就能感受我們帶來的速度提升了。可是…… 這些性能指標怎么回事&#xff1f;不僅沒有全面提升&#xff0c;有些反而下降了。不應該這樣啊&#xff0c;這可怎么辦&#xf…

使用單一ASM-HEMT模型實現從X波段到Ka波段精確的GaN HEMT非線性仿真

來源&#xff1a;Accurate Nonlinear GaN HEMT Simulations from X- to Ka-Band using a Single ASM-HEMT Model 摘要&#xff1a;本文首次研究了ASM-HEMT模型在寬頻帶范圍內的大信號準確性。在10、20和30 GHz的頻率下&#xff0c;通過測量和模擬功率掃描進行了比較。在相同的頻…

day05-進程通信

1> 將互斥機制的代碼實現重新敲一遍 代碼&#xff1a; #include<myhead.h>int num520;//臨界資源//1.創建互斥鎖 pthread_mutex_t fastmutex;//定義任務函數 void *task1(void *arg){printf("1111111\n");//3.臨界區上面獲取鎖資源&#xff08;上鎖&#…

LeetCode每日刷題:101. 對稱二叉樹

題目&#xff1a; 解題思路&#xff1a;可以新寫一個函數&#xff0c;從root開始&#xff0c;root的left的頭結點將記為lefttree&#xff08;左子樹&#xff09;,root的lright的頭結點將記為righttree&#xff08;右子樹&#xff09;&#xff0c; 然后遞歸左子樹的root.left與右…

【鴻蒙 HarmonyOS 4.0】TypeScript開發語言

一、背景 HarmonyOS 應用的主要開發語言是 ArkTS&#xff0c;它由 TypeScript&#xff08;簡稱TS&#xff09;擴展而來&#xff0c;在繼承TypeScript語法的基礎上進行了一系列優化&#xff0c;使開發者能夠以更簡潔、更自然的方式開發應用。值得注意的是&#xff0c;TypeScrip…

Python:Keyboard Interrupt - 當代碼遇到“Ctrl+C“時發生了什么?

Python&#xff1a;Keyboard Interrupt - 當代碼遇到"CtrlC"時發生了什么&#xff1f; &#x1f308; 個人主頁&#xff1a;高斯小哥 &#x1f525; 高質量專欄&#xff1a;【Matplotlib之旅&#xff1a;零基礎精通數據可視化】 &#x1f4a1; 創作高質量博文&#x…

Web服務器集群: kylin 部署 Halo博客系統

目錄 一、實驗 1.環境 2. kylin 部署mysql數據庫 3. kylin 構建Java運行環境 4. 創建博客使用的數據庫 5. kylin 部署 halo博客系統 6. kylin 部署nginx 7. kylin 使用 SSL證書基于https訪問部署的博客系統 二、問題 1.mysql安裝報錯 2.查看mysql數據庫報錯 3.syste…

【k近鄰】 K-Nearest Neighbors算法k值的選擇

【k近鄰】 K-Nearest Neighbors算法原理及流程 【k近鄰】 K-Nearest Neighbors算法距離度量選擇與數據維度歸一化 【k近鄰】 K-Nearest Neighbors算法k值的選擇 【k近鄰】 Kd樹的構造與最近鄰搜索算法 【k近鄰】 Kd樹構造與最近鄰搜索示例 k近鄰算法&#xff08;K-Nearest Neig…

jdk動態代理與CGLib動態代理

jdk動態代理 目標對象 package com.study;/*** 目標對象&#xff08;被代理的對象&#xff09;**/ public class Target implements TargetInf{public String name;public Target() {}public Target(String name) {this.name name;}public String buyCola (String name){Sys…

【SQL注入】靶場SQLI DUMB SERIES-24通過二次注入重置用戶密碼

先使用已知信息admin/admin登錄進去查下題&#xff0c;發現可以修改密碼 猜測可能存在的SQL語句&#xff1a;UPDATE user SET password新密碼 WHERE user用戶名 and password舊密碼 假設我們知道有個admin用戶&#xff0c;但是不知道其密碼&#xff0c;如何可以將其密碼重置&…

雜題——1097: 蛇行矩陣

題目描述 蛇形矩陣是由1開始的自然數依次排列成的一個矩陣上三角形。 輸入格式 本題有多組數據&#xff0c;每組數據由一個正整數N組成。&#xff08;N不大于100&#xff09; 輸出格式 對于每一組數據&#xff0c;輸出一個N行的蛇形矩陣。兩組輸出之間不要額外的空行。矩陣三角…

如何在群輝7.2中使用Docker搭建容器魔方服務并遠程訪問【內網穿透】

文章目錄 1. 拉取容器魔方鏡像2. 運行容器魔方3. 本地訪問容器魔方4. 群輝安裝Cpolar5. 配置容器魔方遠程地址6. 遠程訪問測試7. 固定公網地址 本文主要介紹如何在群輝7.2版本中使用Docker安裝容器魔方&#xff0c;并結合Cpolar內網穿透工具實現遠程訪問本地網心云容器魔方界面…

shell中字符串的操作,和shell中數組的操作

獲取長度 rootubuntu:/home/test/Desktop# a"hello world" rootubuntu:/home/test/Desktop# echo ${#a} 11字符串切片 ${parameter:offset} 偏移量 $(parameter:offset:length} 偏移量&#xff1a;長度rootubuntu:/home/test/Desktop# echo ${a:1:2} el截取最后一個…