我正在计划一个小爱好项目,在带有GPIO的SBC上运行Linux。我的想法是在GPIO引脚上产生PWM输出,并允许每个引脚作为/dev
中的文件提供,与GPIO引脚相同。我希望能够以与GPIO相同的方式使用PWM设备。
所以我想我想写一个设备驱动程序,它似乎符合要求。
唯一的问题是,由于我将通过/dev/GPIO
访问引脚,因此我的程序可以存在于用户空间中。 '可以存在于用户空间中'通常意味着' 存在于用户空间中'。
我确信这可以写成用户空间守护程序或内核空间设备驱动程序,或其他东西。
最好的办法是什么?
答案 0 :(得分:1)
这取决于SBC上微控制器的内置功能。如果您确定在其架构中已经没有建立PWM模块,那么我想您需要转换GPIO引脚才能执行此操作。
答案 1 :(得分:1)
解决此问题的最简单方法是通过“/ dev / mem”文件从用户空间直接访问设备。在这种情况下,您不需要在内核空间区域中编写任何驱动程序代码。使用“/ dev / mem”文件,您可以使用来自用户空间应用程序的物理地址直接访问您的设备。
用户空间应用程序中的初始设置将是:
此方法存在风险,因为通过“/ dev / mem”文件访问设备时不知道内存管理器。其他方法是在内核空间中为您的设备安装设备驱动程序,然后编写用户空间应用程序,这将是一个安全的设备访问。