林鼎鼎 2017-08-23 03:35 采纳率: 0%
浏览 871

为什么我这样点灯点不起来?

图片说明
RK3328芯片手册

 #include <linux/init.h>
#include <linux/module.h>
#include <asm/io.h>
#include <linux/ioport.h>

#define GPIO2_BASE  0xFF230000
#define GPIO2_MEM_SIZE  0x00010000
#define GPIO2_DIR   (volatile unsigned long *)ioremap(GPIO2_BASE + 4, 4)
#define GPIO2_OUT   (volatile unsigned long *)ioremap(GPIO2_BASE + 0, 4)
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
    unsigned int res;
    unsigned int set;

    printk(KERN_INFO "Hello, world\n");
    //request_mem_region(GPIO2_BASE, GPIO2_MEM_SIZE, "GPIO2_LED");

    res = __raw_readl(GPIO2_DIR);
    printk(KERN_INFO "Before set GPIO2_DIR value :%d\n", res);
    res = __raw_readl(GPIO2_OUT);
    printk(KERN_INFO "Before set GPIO2_OUT value :%d\n", res);

    //GPIO2_B7 output
    set = __raw_readl(GPIO2_DIR);
    set |= ~(1 << 23);
    set = 0;    //全out
    __raw_writel(set, GPIO2_DIR);

    //GPIO2_D2 = 1
    set = __raw_readl(GPIO2_OUT);
    set |= (1 << 23);
    set = 0xffffffff;   //全高电平
    __raw_writel(set, GPIO2_OUT);

    res = __raw_readl(GPIO2_DIR);
    printk(KERN_INFO "After set GPIO2_DIR value :%d\n", res);
    res = __raw_readl(GPIO2_OUT);
    printk(KERN_INFO "After set GPIO2_OUT value :%d\n", res);

//ERR:
    return 0;
}
static void hello_exit(void)
{
    printk(KERN_INFO "Goodbye, cruel world\n");
    //release_mem_region(GPIO2_BASE, GPIO2_MEM_SIZE);
}
module_init(hello_init);
module_exit(hello_exit);

这样写有问题吗?(实际上灯没被点亮)

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2018-06-04 15:41
    关注
    评论

报告相同问题?

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上