说到LINUX 驱动移植,没有移植过的朋友,或刚刚进入LINUX领域的朋友,最好去看看《LINUX 设备驱动程序》第三版,有个理论或感性的认识。该版本是基于2.6.10的基础上描述的,经典读物,网上有电子版,但是建议花几十元买本书是值得的。
GPIO是嵌入式系统最简单、最常用的资源了,比如点亮LED,控制蜂鸣器,输出高低电平,检测按键,等等。GPIO分输入和输出,在Montavista linux-2.6.18中,有关GPIO的最底层的寄存器驱动,是在linux-2.6.18_pro500\arch\arm\mach-davinci 目录下的gpio.c,这个是寄存器级的驱动,搞过单片机MCU的朋友应该比较熟悉寄存器级的驱动。根据DM6446的芯片 DATASHEET,DM6446的GPIO分为3组BANK,BANK01组包括GPIO0~GPIO31,BANK23组包括 GPIO32~GPIO63,BANK45组包括GPIO64~GPIO70,由于硬件资源的原因,DM6446并不是GPIO管脚就是纯粹的GPIO 脚,GPIO管脚和其他一些标准接口复用相同的引脚,比如SPI和GPIO复用,I2C和GPIO复用等,到底是使用GPIO还是其他接口,在初始化的时候,都需要对PINMUX0和PINMUX1两个寄存器进行设置(见DM6446的芯片DATASHEET第3章),而软件设置则在Montavista linux-2.6.18_pro500\arch\arm\mach-davinci目录下mux_cfg.c和对应的mux.h里。本人这里使用 GPIO10、GPIO12、GPIO28,分别对应控制BUZZER、LED1、LED0,所以不需要对mux_cfg.c和mux.h进行修改。我们把这些GPIO应用归入linux字符设备来移植。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !