|
firefly-rk3288 第一个LED程序学习心得
发表于 2017-5-6 13:07:52
浏览:8505
|
回复:2
打印
只看该作者
[复制链接]
楼主
本帖最后由 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'。
|
|