美文网首页
迅为IMX6ULL开发板Linux驱动初探-最简单的设备驱动-h

迅为IMX6ULL开发板Linux驱动初探-最简单的设备驱动-h

作者: TL_6cdd | 来源:发表于2021-11-01 10:23 被阅读0次

    经过前面的学习,我们了解了驱动开发的框架,本章节将带领大家实验操作,写最简单的驱动-helloworld。

    Linux 设备驱动会以内核模块的形式出现,因为 linux 内核的整体架构就非常庞大,包含的组件也非常多,如果把所有的功能都编译到 linux 内核中会使得内核非常臃肿,为了解决这个问题,更方便地新增和删除功能,linux 提供了这样的机制,这种机制被称为模块。为了大家对模块有一个感性的认识,我们先来看一个最简单的驱动-helloworld。

    驱动分为四个部分:

     头文件

     驱动模块的入口函数和出口函数

     声明信息

     功能实现

    我们在 windows 上面新建一个 helloworld.c 文件,这里使用 sourceinsight 来编辑文件,大家也可以用其他编译器来编写程序。

    第一步 包含头文件

    #include //包含宏定义的头文件

    #include //包含初始化加载模块的头文件

    第二步 驱动模块的入口函数和出口函数

    module_init();

    module_exit();

    第三步 声明模块拥有开源许可证

    MODULE_LICENSE("GPL");

    第四步 功能实现:内核模块加载的时候打印 hello world! ,内核模块卸载的时候打印 gooodbye!

    注意:内核打印函数不能用 printf,因为内核没有办法使用 C 语言库。

    static int hello_init(void){

    printk("hello world! \n");

    return 0;

    }

    static void hello_exit(void){

    printk("gooodbye! \n");

    }

    完整的一个最简单的 Linux 内核模块,如下图所示:

    此时,我们需要有一个感性认识,代码中的某些陌生元素都是 linux 内核为了字符设备定义的,以实现驱动与内核接口而定义的。Linux 对各类设备的驱动都定义了类似的数据结构和函数。

    核心板参数

    尺寸:38mm*42mm

    PCB:6层

    CPU:iMX6ULLARM Cortex-A7架构 单核

    iMX6ULL 商业级        内存:512M 存储:8G EMMC

    iMX6ULL 工业级        内存:256M 存储:512M FLASH

    工作电压:5V~16V 电压供电

    系统支持:Linux-QT系统;Ubuntu core系统;Youcto系统;Buildroot系统;

    商业级运行温度:-20℃ ~ +80℃

    工业级运行温度:-40℃ ~ +80℃

    引脚间距:1.27mm

    引角扩展:i.MX6功能全部引出,146PIN脚

    连接方式:邮票孔

    底板参数

    尺寸:12*19cm

    PCB:2层

    POWER:5V~16V电压供电

    SWITCH:电源开关

    EEPROM 存储:256字节,掉电后数据不丢失

    4G模块:1个 全网通 (选配)

    WIFI蓝牙模块:WIFI/蓝牙二合一模块,工作频段 2.4GHz,支持 IEEE802.11bgn 等标准,支持蓝牙 4.0 协议。

    LVDS接口:1路(一个是标准HDMI 座(CON3),另一个是 30pin 的 FPC 座(J18), 两个接口实际上是同一路 LVDS 信号,用来连接迅为电子的 LVDS 屏幕)

    RGB接口:1路

    CAN:2 路 CAN 总线接口

    RS485:1 路 RS485 总线接口

    MIC:支持录音输入

    PHONE:支持耳机输出

    USB OTG:1路

    USB HOST:2路

    USB-UART:1路

    mini HDMI:1个(一路标准MINI-HDMI 接口,i.MX6ULL处理器本身没有支持HDMI,通过一个 RGB 转 HDMI 的芯片扩展出HDMI接口,通过该接口来连接HDMI显示器。 )

    网口:2路百兆以太网,RJ45 接口

    TF卡槽:1个标准TF卡接口

    SIM卡槽:1个标准SIM卡接口

    T&H接口:温湿度传感器接口

    TTL/RS485接口:TTL/RS485接口二选一

    BUZZER:1个蜂鸣器

    IRDA:1个红外一体化接收头

    ADC电位器:支持

    DIP SWITCH:8位拨码开关

    JTAG:1个(可以通过下载/调试器来调试 i.MX6ULL 处理器)

    CAMERA接口:1个 支持500万摄像头

    TTL串口接口:20PIN (gpio引出:两个ad,一个spi,一路ttl。一路i2c,5个gpio,5v,3.3v电源)

    GPIO接口:20PIN(包括:两路ADC,一路SPI,5个GPIO,一路TTL串口,一路I2C接口。)

    重力加速度传感器:支持

    红外接收模块:支持

    光环境传感器:支持

    实时时钟:断电后系统时间不丢失

    LED:2个

    按键:3个

    相关文章

      网友评论

          本文标题:迅为IMX6ULL开发板Linux驱动初探-最简单的设备驱动-h

          本文链接:https://www.haomeiwen.com/subject/whrzaltx.html