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

2021-11-01  本文已影响0人  TL_6cdd

经过前面的学习,我们了解了驱动开发的框架,本章节将带领大家实验操作,写最简单的驱动-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个

上一篇 下一篇

猜你喜欢

热点阅读