天嵌 ARM开发社区

 找回密码
 注册
查看: 1900|回复: 1

PWM驱动求助(在线等)

[复制链接]
hello-henrry 发表于 2009-10-17 21:46:35 | 显示全部楼层 |阅读模式
麻烦朋友解释下LINUX的虚拟地址到物理地址的映射问题,我正在看一个蜂鸣器的驱动,
看到下面这个函数
static void PWM_Set_Freq( unsigned long freq )
{
        unsigned long tcon;
        unsigned long tcnt;
        unsigned long tcfg1;
        unsigned long tcfg0;

        struct clk *clk_p;
        unsigned long pclk;

        / / GPB0 as tout0, pwm output
        s3c2410_gpio_cfgpin(S3C2410_GPB0, S3C2410_GPB0_TOUT0);

        printk (KERN_INFO "\tS3C2410_TCON =0x%x\n",S3C2410_TCON);
        tcon = __raw_readl(S3C2410_TCON);
        tcfg1 = __raw_readl(S3C2410_TCFG1);
        tcfg0 = __raw_readl(S3C2410_TCFG0);

        //prescaler = 50
        tcfg0 &= ~S3C2410_TCFG_PRESCALER0_MASK;
        tcfg0 |= (50 - 1);

        //mux = 1/16
        tcfg1 &= ~S3C2410_TCFG1_MUX0_MASK;
        tcfg1 |= S3C2410_TCFG1_MUX0_DIV16;

        __raw_writel(tcfg1, S3C2410_TCFG1);
        __raw_writel(tcfg0, S3C2410_TCFG0);

        clk_p = clk_get(NULL, "pclk");
        pclk  = clk_get_rate(clk_p);
        tcnt  = (pclk/50/16)/freq;
       
        __raw_writel(tcnt, S3C2410_TCNTB(0));
        __raw_writel(tcnt/2, S3C2410_TCMPB(0));
                               
        tcon &= ~0x1f;
        tcon |= 0xb;                //disable deadzone, auto-reload, inv-off, update TCNTB0&TCMPB0, start timer 0
        __raw_writel(tcon, S3C2410_TCON);
       
        tcon &= ~2;                        //clear manual update bit
        __raw_writel(tcon, S3C2410_TCON);
}  

其中的          
        tcon = __raw_readl(S3C2410_TCON);
        tcfg1 = __raw_readl(S3C2410_TCFG1);
        tcfg0 = __raw_readl(S3C2410_TCFG0);

用到的虚拟地址S3C2410_TCON,S3C2410_TCFG0,S3C2410_TCFG1是怎么映射到实际的物理地址的,拜托知道的朋友解说解说,先谢谢了
xli10 发表于 2009-10-18 00:39:21 | 显示全部楼层
这个应该是有个定义寄存器的头文件,,在linux2.6.25.8内核中是在regs-gpio.h头文件中的,从你上面的程序看出应该是linux2.6.30以上的内核,在里面的我还没找到,,也在等,或者你要用的话也可以参linux2.6.25.8内核里的头文件内容。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-6-29 16:56 , Processed in 1.046875 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表