日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

S5PV210之beep驅(qū)動從linux2.6.35.7移植到linux3.0.8

發(fā)布者:幸福微風(fēng)最新更新時間:2024-12-31 來源: cnblogs關(guān)鍵字:S5PV210  linux2  6  7  移植  linux3 手機看文章 掃描二維碼
隨時隨地手機看文章

beep驅(qū)動從linux2.6.35.7內(nèi)核移植到linux3.0.8,修改的部分為:

  '='后面的為修改后的

  .ioctl  =  .unlocked_ioctl

  static int beep_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)

  = static int beep_ioctl(struct file *file, unsigned int cmd, unsigned long arg)

  beep_ioctl函數(shù)中struct inode *inode去掉,原因是beep測試程序中ioctl函數(shù)中參數(shù)個數(shù)與beep驅(qū)動相對應(yīng)。如果沒有去掉,測試程序能進入beep驅(qū)動中beep_ioctl函數(shù),但BEEP_START_CMD不能與驅(qū)動中beep_ioctl匹配。

 

1. beep測試程序為:

#include
#include
#include
#include   //O_RDWR定義在該文件中
#include

#define BEEP_MAGIC 'k'
#define BEEP_START_CMD _IO (BEEP_MAGIC, 1)
#define BEEP_STOP_CMD _IO (BEEP_MAGIC, 2)



int main()
{
    int i = 0;
    int dev_fd;
    dev_fd = open('/dev/beep',O_RDWR );
    if ( dev_fd == -1 ) {
        printf('Cann't open file /dev/beepn');
        exit(1);
    }
    printf('Start beepn');
    ioctl (dev_fd, BEEP_START_CMD,0);
    getchar();
    ioctl (dev_fd, BEEP_STOP_CMD,0);
    printf('Stop beep and Close devicen');
    close(dev_fd);
    return 0;
}

 

2. beep驅(qū)動程序:

/*
 * linux/drivers/char/mini210_beep.c
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
#include
#include
#include
#include
#include
//#include
//#include
#include
//#include
//#include
#include
#include

#include
#include
#include
#include
#include gpio.h>
#include
#include
#include
#include

#include
#include
#include

#include
#include
#include
#include

#define BUZZER_PMW_GPIO            S5PV210_GPD0(0)

static int beep_major = 0;

#define BEEP_MAGIC 'k'
#define BEEP_START_CMD _IO (BEEP_MAGIC, 1)
#define BEEP_STOP_CMD _IO (BEEP_MAGIC, 2)

/*
 * Open the device; in fact, there's nothing to do here.
 */
int beep_open (struct inode *inode, struct file *filp)
{
    return 0;
}

ssize_t beep_read(struct file *file, char __user *buff, size_t count, loff_t *offp)
{
    return 0;
}

ssize_t beep_write(struct file *file, const char __user *buff, size_t count, loff_t *offp)
{
    return 0;
}

void beep_stop( void )
{
    s3c_gpio_cfgpin(BUZZER_PMW_GPIO, S3C_GPIO_OUTPUT);
    gpio_set_value(BUZZER_PMW_GPIO, 0);

}

void beep_start( void )
{
    s3c_gpio_cfgpin(BUZZER_PMW_GPIO, S3C_GPIO_OUTPUT);
    gpio_set_value(BUZZER_PMW_GPIO, 1);
    
}

//static int beep_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
//unsigned long arg)
static int beep_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
    //add your src HERE!!!
    printk('beep_ioctl');
    switch ( cmd ) {
        case BEEP_START_CMD: {
            beep_start();    
            printk('start');
            break;
        }
        case BEEP_STOP_CMD: {
            printk('stop');
            beep_stop();    break;
        }
        default: {
            break;
        }
    }
    return 0;
    
}

static int beep_release(struct inode *node, struct file *file)
{
    return 0;
}

static void beep_setup_cdev(struct cdev *dev,int minor,
        struct file_operations *fops)
{
    int err, devno = MKDEV(beep_major, minor);
    
    cdev_init(dev, fops);
    dev->owner = THIS_MODULE;
    dev->ops = fops;
    err = cdev_add (dev, devno, 1);
    /* Fail gracefully if need be */
    if (err)
        printk (KERN_NOTICE 'Error %d adding beep%d', err, minor);
}

static struct file_operations beep_remap_ops = {
    .owner   = THIS_MODULE,
    .open    = beep_open,
    .release = beep_release,
    .read    = beep_read,
    .write   = beep_write,
    .unlocked_ioctl   = beep_ioctl,
    //.ioctl   = beep_ioctl,    
};

static struct cdev BeepDevs;

static int __init beep_init(void) {
    int result;
    dev_t dev = MKDEV(beep_major,0);
    char dev_name[]='beep';

    if (beep_major)
        result = register_chrdev_region(dev,1,dev_name);
    else{
        result = alloc_chrdev_region(&dev,0,1,dev_name);
        beep_major = MAJOR(dev);
    }
    if (result < 0) {
        printk(KERN_WARNING 'beep: unable to get major %dn', beep_major);    
        return result;
    }
    if (beep_major == 0)
        beep_major = result;
    
    beep_setup_cdev(&BeepDevs, 0, &beep_remap_ops);
    printk('beep device installed, with major %dn', beep_major);
    printk('The device name is: %sn', dev_name);
    return 0;

}
static void __exit beep_cleanup(void)
{
    cdev_del(&BeepDevs);
    unregister_chrdev_region(MKDEV(beep_major,0),1);
    printk('beep device uninstalledn');
}

module_init(beep_init);
module_exit(beep_cleanup);

MODULE_LICENSE('GPL');
MODULE_AUTHOR('mingli Inc.');
MODULE_DESCRIPTION('S5PV210 beep Driver');


關(guān)鍵字:S5PV210  linux2  6  7  移植  linux3 引用地址:S5PV210之beep驅(qū)動從linux2.6.35.7移植到linux3.0.8

上一篇:tiny210(s5pv210)移植u-boot(基于 2014.4 版本號)——移植u-boot.bin(打印串口控制臺)
下一篇:s5pv210 cpu運行debian

推薦閱讀最新更新時間:2025-07-04 08:02

iOS8歷經(jīng)6個月終于突破75%普及率 iOS7仍占22%
? ??3月4日消息,據(jù)國外媒體報道,蘋果周二更新了各個版本iOS的采用率數(shù)據(jù)。其中,iOS 8在截至2015年3月2日的數(shù)據(jù)統(tǒng)計中首次突破了75%的占比,不過這個普及速度相比過去幾個版本則慢了不少。 iOS 8(包括8.1)一共用了6個月時間才最終突破75%的市場占有率,iOS 7目前還剩下22%,更早版本的iOS則剩下約3%。 ? iOS 8的普及速度要慢于iOS 7和iOS 6的事實最早是由第三方廣告網(wǎng)追蹤平臺注意到并提出的。最終蘋果官方的數(shù)據(jù)也證實了這一點——iOS 8在發(fā)布后的首個月里僅獲得了不足1%的市場份額。 ? 對于用戶不愿意升級至iOS 8的原因,市場一直存在多個解釋,其中包括了新系統(tǒng)
[手機便攜]
I.MX6Q(TQIMX6Q/TQE9)學(xué)習(xí)筆記——新版BSP之UART移植
我們在內(nèi)核啟動時候已經(jīng)配置系統(tǒng)了UART,但是tqimx6q這塊開發(fā)板上引出了imx6q的5路TTL接口,其中,uart1和uart2轉(zhuǎn)成232接口,本文將配置這5路Uart接口。 DTS配置 由于內(nèi)核中已經(jīng)有imx6q的uart控制器驅(qū)動,因此,我們只需要配置各端口的pinctrl即可。根據(jù)tqimx6q的原理圖,我們對我們的DTS作如下修改: ... &uart1 { pinctrl-names = default ; pinctrl-0 = &pinctrl_uart1_2 ; status = okay ; }; &uart2 { pinctrl-names = default
[單片機]
安兔兔7月跑分榜單:驍龍835旗艦稱霸全場
? ? 隨著智能手機的不斷發(fā)展,曲面屏、雙攝以及各種先進的黑科技都被應(yīng)用在了手機上,手機的性能也是有了飛一般的發(fā)展。雖說近幾年跑分已經(jīng)不再是大家關(guān)注的焦點,但是處理器的性能還是最重要的指標(biāo)之一。 安兔兔跑分   近日安兔兔發(fā)布了7月份手機行性能排行TOP10,打眼一瞧已經(jīng)被驍龍835霸屏了。從第一名的一加5開始,努比亞Z17、HTC U11、三星S8+、小米6,前五名手機全部搭載了這款年度最強芯。再看后五名,第五、第十名的iPhone 7/Plus使用的是自家芯片,索尼Xperia XZ Premium、三星S8,也全部搭載了驍龍835芯片。 一加5   回過頭來看看我們的冠軍,一加5。這款手機作為年度國產(chǎn)最強機,不跟隨、更強勁是
[手機便攜]
中國研制出超強電池:充電7秒續(xù)航35公里
  何種材料更適合用作電動車“超強電池”,長期以來科學(xué)家并未找到理想材料。中科院上海硅酸鹽所黃富強研究團隊發(fā)現(xiàn),石墨烯是超級電容器電極的最佳選擇,其研究已于12月18日被《科學(xué)》期刊發(fā)表。?   據(jù)新華網(wǎng)消息,12月18日,記者從中科院上海硅酸鹽所獲悉,該所科學(xué)家已研制出一種高性能超級電容器電極材料——氮摻雜有序介孔石墨烯。該材料具有極佳的電化學(xué)儲能特性,可用作電動車的“超強電池”:充電只需7秒鐘,即可續(xù)航35公里。相關(guān)研究成果已于12月18日發(fā)表在世界頂級期刊《科學(xué)》上。   超級電容器,是介于傳統(tǒng)電容器和電池之間的一種電化學(xué)儲能裝置。由于具有功率密度高、循環(huán)壽命長、安全可靠等特點,現(xiàn)已廣泛應(yīng)用于混合電動汽車、大功率
[汽車電子]
ARM+FPGA開發(fā)板的強勁圖形系統(tǒng)體驗——米爾基于NXP i.MX 8M Mini+Artix-7開發(fā)板
ARM+FPGA開發(fā)板的強勁圖形系統(tǒng)體驗——米爾基于NXP i.MX 8M Mini+Artix-7開發(fā)板 關(guān)鍵詞:NXP、Xilinx、i.MX 8M Mini、Artix-7、ARM+FPGA、圖像處理、異構(gòu)處理器 本篇測評由優(yōu)秀測評者“qinyunti”提供。 01 ARM+FPGA異核架構(gòu)開發(fā)板簡單介紹 MYD-JX8MMA7的這款A(yù)RM+FPGA異核架構(gòu)開發(fā)板, 擁有2個GPU核,一個用來做3D數(shù)據(jù)處理,另一個用來做2D和 3D加速。3D GPU核支持: ? OpenGL ES 1.1,2.0 ? Open VG 1.1 ? 2D GPU核支持 ? 多圖層混合 基于ARM+FPG
[嵌入式]
ARM+FPGA開發(fā)板的強勁圖形系統(tǒng)體驗——米爾基于NXP i.MX <font color='red'>8</font>M Mini+Artix-<font color='red'>7</font>開發(fā)板
夏普發(fā)布AQUOS R7新機 采用驍龍8移動平臺
最近,夏普發(fā)布了AQUOS R7,這是其首款采用驍龍8移動平臺的旗艦手機。 夏普AQUOS R7擁有6.6英寸Pro IGZO OLED屏幕,提供1260 x 2730像素的分辨率、2000尼特亮度、1 Hz至240 Hz的可變刷新率、10位色和杜比視界支持。 像前身的AQUOS R6型號一樣,R7繼續(xù)采用中央打孔的屏幕設(shè)計。另外,它配備了超聲波屏內(nèi)指紋掃描儀。 其機身正面放置了一個1260萬像素的自拍相機。它的后置攝像頭配置有4720萬像素的1英寸攝像頭,帶有LED閃光燈和f/1.9光圈,帶有對PD自動對焦的支持。 AQOUS R7內(nèi)部配備12 GB內(nèi)存和256 GB存儲空間,以及5000mAh的電池。目前還沒有
[手機便攜]
STM32的重映射功能,以ZET6的TIM3_CH2通道從PA7->PB5為例
還需要先提的是,重映射有的可能只適用于與部分STM32芯片。 TIM3_CH2 默認(rèn)是接在 PA7,可以通過重映射功能,把 TIM3_CH2映射到 PB5 上 重映射控制是由復(fù)用重映射和調(diào)試 IO 配置寄存器(AFIO_MAPR) 控制。 TIM3_REMAP 是由 這 2 個位控制的。TIM3_REMAP 重映射控制表如下: 默認(rèn)條件下,TIM3_REMAP 為 00,是沒有重映射的,所以TIM3_CH1~TIM3_CH4 分別是接在 PA6、PA7、PB0 和 PB1 上的。 而我們想讓 TIM3_CH2 映射到 PB5 上,則需要設(shè)置TIM3_REMAP =10,即部分重映射,這里需要注
[單片機]
STM32的重映射功能,以ZET<font color='red'>6</font>的TIM3_CH2通道從PA<font color='red'>7</font>->PB5為例
51單片機學(xué)習(xí)——7--8*8LED點陣顯示
原理 點陣簡介 點陣的外部 點陣的內(nèi)部結(jié)構(gòu) 和矩陣按鍵相似,將每一行或每一列的LED陽極或陽極并聯(lián)一起。如左圖,如果我們想讓某個led燈點亮,就讓某一行輸出高電平,某一列輸出低電平。 我們通過74HC595向led點陣輸入段選數(shù)據(jù),即控制每一列哪些燈亮 通過P0口輸入位選數(shù)據(jù),即控制哪一列顯示 74HC595 通過控制14,11,12引腳來輸入數(shù)據(jù)。 14:DS(SER)對應(yīng)網(wǎng)絡(luò)標(biāo)號的P3^4 11:SHCP(SRCLK)對應(yīng)網(wǎng)絡(luò)標(biāo)號中的P3^6 12:STCP(RCLK)對應(yīng)網(wǎng)絡(luò)標(biāo)號中的P3^5 上升沿就是數(shù)字電路中,數(shù)字電平從低電平(數(shù)字“0”)變?yōu)楦唠娖剑〝?shù)字“1”)的那一瞬間(時刻)叫作上升沿。
[單片機]
51單片機學(xué)習(xí)——<font color='red'>7</font>--<font color='red'>8</font>*<font color='red'>8</font>LED點陣顯示
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved