OLED显示模块与AT91RM9200的接口设计

技术分类: 电源技术  工业电子  消费电子设计  | 2007-03-01
来源:单片机及嵌入式系统应用 | 蒋三新 黄晓革

        OLED_write负责将要显示的数据显示到OLED屏上;oled_ioctl用于实现对OLED的各种控制命令;oled_open负责打开OLED显示屏;oled_release负责关闭OLED显示屏。这里主要介绍oled_write的具体实现,其他可根据实际需要,参照oled_write实现。实现oled_write的具体程序如下:
 
 实现oled
oled
        5驱动程序的编译

  驱动程序编写好后还需要对其进行编译。在Linux操作系统中对驱动一般有两种编译方式,即静态编译和动态编译。静态编译时,驱动程序直接编译到了内核中,在配置内核时可以自由裁剪。假定编写好的P13501的驱动程序为myoled.c,将其静态编译到内核的具体操作如下:

  ①将myoled.c复制到drivers/char目录下,并且修改drivers/char/Config.in文件。在其中添加如下代码:
dep_tristate my oled support' CONFIG_MY_OLED

  $CONFIG_ARCH_AT91RM9200

  其含义是:只要定义了CONFIG_ARCH_AT91RM92

00为y或m,在配置内核时(如"make menuconfig"),Character devices分类下,就会出现my oled support选项,它与CONFIG_MY_OLED的定义相对应。为把驱动程序链接到内核中,应把CONFIG_MY_OLED定义为y。

  ②在drivers/char目录下的Makefile中添加如下代码:

  obj-$(CONFIG_MY_OLED)+=myoled.o

  Makefile会根据obj-m和obj-y编译,并链接生成对应的代码。

  动态编译时将驱动编译成模块(module),然后动态加载和卸载设备驱动模块。用模块加载的方式,可在不重新启动系统的前提下,反复地调试和修改模块,可以方便、有效地对所编写的驱动进行调试。实际中在编写驱动的初始阶段,经常将其编译成模块,反复地加载和卸载模块,修改驱动程序的原码,直到整个驱动满足要求为止,再把它静态编译到内核中。

  动态编译时,方法如下:

  /usr/local/arm/2.95.3/bin/arm-linux-gcc-O2-DMODULE-D__KERNEL__-I/home/sum/linux-2.4.19/include-c myoled.c

  这里假设交叉编译器路径为:/usr/local/。内核的存放路径为:/home/sum/linux-2.4.19。如果编译时没有错误,那么完成后就会生成myoled.o文件。将其拷贝到嵌入式系统中一目录(例如:/home)下,就可以对其进行动态加载:

  insmod myoled.o

  生成设备号:

  mknod/dev/fftoled c 254 O

  这样,P13501的驱动程序就被动态加载到内核中,应用程序也就可以在OLED上进行显示输出。

  模块卸载时操作如下:

  rmmod myoled

  反复加载、卸载,即可完成对OLED驱动的调试。

  6 结论

  本文介绍了OLED显示模块P13501与AT91RM9200的接口电路设计,以及在嵌入式Linux下OLED驱动程序的编写、编译和加载。该电路和驱动已成功应用于一控制系统中系统参数的显示,效果良好;配合简单的矩阵扫描式键盘,还可以进行相关参数设置。由于Linux的众多特点以及OLED显示技术的众多优势,相信它们的结合在消费电子、工业控制,甚至生活的方方面面将具有广阔的应用前景。
 

1】【2
加载中

对文章的评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销