Firefly开源社区

标题: firefly-rk3288 第一个LED程序学习心得 [打印本页]

作者: z3j6w9    时间: 2017-5-6 13:07
标题: firefly-rk3288 第一个LED程序学习心得
本帖最后由 z3j6w9 于 2017-5-6 13:13 编辑

1.模块初始化和退出
sbusys_initcall(hello_init);
module_exit(hello_exit);
2.platform
首先要定义一个platform结构体
static struct platform_driver firefly_hello_driver = {
        .probe                = firefly_hello_probe,
        .remove                = firefly_hello_remove,
        .driver                = {
                .name        = "firefly_hello",
                .owner        = THIS_MODULE,
#ifdef CONFIG_OF
                .of_match_table        = of_firefly_hello_match,
#endif
        },

};
.probe :platform的入口函数
.remove:platform的退出函数
.of_match_table:用来match设备树的信息
static const struct of_device_id of_firefly_hello_match[] = {
        { .compatible = "firefly,hello_led" },
        { },
};
#endif

结构体中的compatible和dts中的compatible是对应的,驱动中通过函数of_get_named_gpio可以获得对应的gpio,使用方式如下
        gpio = of_get_named_gpio_flags(hello_node,"led", 0,&flag);
然后就可以对gpio进行设置
        gpio_direction_output(gpio, GPIO_HIGH);
3.dts配置
    firefly_hello{
        compatible = "firefly,hello_led";
        led = <&gpio8 GPIO_A2 GPIO_ACTIVE_LOW>;
        status = "okay";
    };
备注:
'status'属性用来表示节点的状态的,其实就是硬件的状态,用字符串表示。'okay'表示硬件正常工作,“disabled”表示硬件当前不可用,“fail”表示因为出错不可用,“fail-sss”表示因为某种原因出错不可用,sss表示具体的出错原因。实际中,基本只用'okay'和'disabled'。

作者: 暴走的阿Sai    时间: 2017-5-8 11:35
支持发帖分享
作者: wuzongqiang193    时间: 2017-9-22 23:45
Xiexie分享




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1