
arm-linux驱动
文章平均质量分 78
zhaocj
这个作者很懒,什么都没留下…
展开
-
动态库的根文件系统的制作
在我的《u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统》这篇文章中已经介绍了根文件系统的制作,但它是静态库。在这篇文章中,我主要介绍带有动态库的根文件系统的制作。与上一篇内容重复的地方就不再赘述。 在使用menuconfig配置busybox的时候,只需要修改下列内容即可:Busybox Settings ---> Busybox原创 2012-11-29 21:11:59 · 4345 阅读 · 0 评论 -
基于S3C2440的Linux-3.6.6移植——ADC的移植
在linux-3.6.6中,系统已经有了关于s3c2440的ADC通用驱动程序文件——arch/arm/plat-samsung/adc.c,但还没有应用层文件,如果要想使ADC工作,并利用系统已有的驱动文件,那么就必须自己动手写一个应用层文件。 本文先介绍adc.c,然后给出一个通用的ADC应用层文件,并移植到开发板上。 先看adc.c文件中的初始化函数adc_init:st原创 2013-08-09 23:10:58 · 4000 阅读 · 1 评论 -
基于S3C2440的Linux-3.6.6移植——触摸屏应用
在linux-3.6.6中,集成了s3c2440触摸屏的应用层文件——/drivers/input/touchscreen/s3c2410_ts.c。因此我们只需要定义好平台设备,就可以实现触摸屏。 s3c2410_ts.c是基于input子系统的,而且它还应用了上一篇文章中介绍过的adc.c文件,因此要理解s3c2410_ts.c文件,还要先理解adc.c文件。下面就介绍s3c2410_原创 2013-08-11 22:09:26 · 3412 阅读 · 5 评论 -
基于S3C2440的Linux-3.6.6移植——SD卡的应用(二),SD卡的读写
上一篇文章介绍了SD卡的插入和拔出,下面就来看看SD卡的读写。SD卡在Linux中是块设备。该块设备驱动是在drivers/mmc/card/block.c文件中被定义的: module_init(mmc_blk_init); static int __init mmc_blk_init(void){ int res; if (perdev原创 2014-01-21 15:17:00 · 5304 阅读 · 1 评论 -
基于S3C2440的Linux-3.6.6移植——SD卡的应用(一),SD卡的插拔检测
在linux-3.6.6中,SD驱动很完整,无需添加任何代码,只需修改一下menuconfig配置即可使用。 在arch/arm/plat-samsung/devs.c文件内定义了SD平台设备:static struct resource s3c_sdi_resource[] = { [0] = DEFINE_RES_MEM(S3C24XX_PA_SDI,S3C24XX原创 2014-01-21 11:44:07 · 5149 阅读 · 4 评论 -
基于S3C2440的Linux-3.6.6移植——声卡驱动
Linux的ALSA声卡驱动较为复杂,它需要注册多个平台设备。在mach-zhaocj2440.c文件中的平台设备数组内一共有四个与ALSA相关的平台设备:&s3c_device_iis,&uda1340_codec,&mini2440_audio,&samsung_asoc_dma,mini2440_audio和uda1340_codec的定义在该文件内给出:/*本开发板原创 2014-03-05 11:12:35 · 8095 阅读 · 10 评论 -
基于S3C2440的Linux-3.6.6移植——DM9000网卡驱动移植
Linux-3.6.6很好的支持了DM9000,因此对于S3C2440芯片来说无需进行任何修改,甚至连menuconfig都已经默认配置了网卡驱动。但我们还需要设置网卡的MAC和IP等信息。有许多方法可以实现网卡的设置,在这里我们选择一种比较简单的方法——修改根文件系统的启动脚本文件rcS。在根文件etc/init.d/rcS文件中添加下列语句:/sbin/ifconfig lo 127.原创 2014-03-24 17:04:11 · 6389 阅读 · 2 评论 -
基于S3C2440的Linux-3.6.6移植——声卡移植
该版本的声卡驱动有缺陷,放音是不正常的,会断断续续,所以还需要修改。主要就是对sound/soc/samsung目录下dma.c文件进行修改。基于网上的资料,我整理如下: 首先把第63行的下列语句注释掉,因为要重新写该函数:static void audio_buffdone(void *data); 然后把dma_enqueue函数和audio原创 2014-05-09 07:12:49 · 2976 阅读 · 5 评论 -
基于S3C2440的Linux-3.6.6移植——QT的编译与安装
我PC上的系统是Fedora 17,32位的。它自带了Qt,版本是4.8.4,因此嵌入式Qt我也选择相同的版本。 从官网下载qt-everywhere-opensource-src-4.8.4.tar.gz。解压该文件:tar zxvf qt-everywhere-opensource-src-4.8.4.tar.gz进入该解压后的目录:原创 2014-07-23 16:05:11 · 4068 阅读 · 2 评论 -
基于S3C2440的Linux-3.6.6移植——tslib编译与安装
tslib是一个开源程序,最主要的用途是可以校正触摸屏。通常可以把它作为触摸屏的一个适配层,为上层的应用程序提供统一的接口。在这里,我们移植tslib,为以后移植和使用QT打下基础。 首先下载tslib-1.4.tar.gz文件,并完成解压、配置、编译和安装操作,命令如下:tar -zxvf tslib-1.4.tar.gzcd tslib原创 2014-07-07 17:24:13 · 5976 阅读 · 0 评论 -
基于S3C2440的Linux-3.6.6移植——LCD的应用
要想使LCD工作,需要修改arch/arm/mach-s3c24xx/Mach-zhaocj2440.c文件中的相关内容。zhaocj2440_lcd_cfg结构数组定义了各种LCD的时序及配置,我们需要在这个数组的末端添加针对自己开发板上的LCD的相关配置。static struct s3c2410fb_display zhaocj2440_lcd_cfg[] __initdata =原创 2013-06-26 19:40:39 · 3643 阅读 · 0 评论 -
基于S3C2440的linux-3.6.6移植——内核移植,建立自己的平台系统
1.在下面的网站内下载目前最新的稳定版本的linux内核——linux-3.6.6http://www.kernel.org/ 2.解压到当前目录tar –xvjf linux-3.6.6.tar.bz2 3.修改在根目录下的Makefile文件中的第195行和第196行:ARCH ?=armCROSS_COMPILE ?= arm-linux- 4.修原创 2012-11-21 19:31:45 · 5450 阅读 · 7 评论 -
基于S3C2440的Linux-3.6.6移植——sysfs文件系统的IIC应用
上一篇文章我们介绍了使用devfs访问IIC设备,下面再来介绍应用sysfs方法访问IIC。 在这里,系统要用到三个很重要的结构——i2c_client、i2c_driver和i2c_adapter。i2c_client指的是IIC设备,我的开发板上的IIC设备就是AT24C02的eeprom;i2c_driver指的是IIC的设备驱动;i2c_adapter指的是IIC的适配器,也就是2原创 2013-07-23 19:43:13 · 4082 阅读 · 1 评论 -
基于S3C2440的Linux-3.6.6移植——devfs文件系统的IIC应用
Linux-3.6.6提供了两种访问IIC的方法,一种是基于devfs的方法,另一种是基于sysfs的方法,文中介绍第一种方法,下一篇文章介绍第二种方法。 在arch/arm/plat-samsung/devs.c文件已经定义了IIC平台设备及其资源:static struct resource s3c_i2c0_resource[]= { [0]= DEFINE_RE原创 2013-07-22 19:05:57 · 3205 阅读 · 0 评论 -
基于S3C2440的Linux-3.6.6移植——按键驱动
对于s3c2440开发板上的几个按键功能,linux系统提供了很好的支持,只要把按键对应的IO端口配置好,按键就可以工作了。针对我的开发板,为了配置按键的IO端口,需要修改arch/arm/mach-s3c24xx目录下的mach-zhaocj2440.c文件中的zhaocj2440_buttons结构为:static struct gpio_keys_button zhaocj2440_原创 2013-04-13 20:54:48 · 6907 阅读 · 2 评论 -
基于S3C2440的Linux-3.6.6移植——PWM蜂鸣器驱动
Linux带有基于PWM蜂鸣器的通用驱动程序——Pwm-beeper.c(位于drivers/input/misc目录下),它是属于输入子系统的。因此要移植该驱动,只需要在自己的开发板程序文件中添加PWM蜂鸣器的平台设备及相关属性即可。 在arch/arm/mach-s3c24xx目录下的mach-zhaocj2440.c文件中的适当位置添加如下内容:/* beeper */sta原创 2013-04-24 11:38:27 · 9077 阅读 · 1 评论 -
基于S3C2440的Linux-3.6.6移植——定时器的应用
定时器是很重要的一个资源,在linux中使用的是TIMER4作为常规的定时器,我们可以通过查看中断资源来找到定时器中断:[root@zhaocj/]#cat /proc/interrupts…… 30: 20118 s3c S3C2410 Timer Tick……如上所示,系统内部的定时器的中断号为30。通过阅读arch/arm/mach-s3c24xx/i原创 2013-05-04 21:02:56 · 3397 阅读 · 3 评论 -
基于S3C2440的Linux-3.6.6移植——看门狗定时器的应用
尽管在linux系统中,对于S3C2440开发板来说,默认是已经配置了看门狗定时器,如:DeviceDrivers ---> [*] Watchdog Timer Support ---> S3C2410 Watchdog但看门狗定时器是没有打开的,所以我们会在启动系统的时候,看到如下信息提示:s3c2410-wdts3c2410-wdt: w原创 2013-05-19 21:10:04 · 3884 阅读 · 1 评论 -
基于S3C2440的Linux-3.6.6移植——UART驱动
s3c2440串口驱动是在drivers/tty/serial/Samsung.c下定义的。static int __init s3c24xx_serial_modinit(void){ int ret; //注册uart驱动 ret = uart_register_driver(&s3c24xx_uart_drv);原创 2013-06-13 15:21:23 · 4853 阅读 · 3 评论 -
基于S3C2440的linux-3.6.6移植——LED驱动
目前的linux版本的许多驱动都是基于设备模型,LED也不例外。 简单地说,设备模型就是系统认为所有的设备都是挂接在总线上的,而要使设备工作,就需要相应的驱动。设备模型会产生一个虚拟的文件系统——sysfs,它给用户提供了一个从用户空间去访问内核设备的方法,它在linux里的路径是/sys。如果要写程序访问sysfs,可以像读写普通文件一样来操作/sys目录下的文件。 对于基于s3原创 2012-12-08 20:24:05 · 4963 阅读 · 2 评论 -
基于S3C2440的Linux-3.6.6移植——解决LCD自动关闭
到目前为止,我们已经花了好多篇幅在LCD上,但还有一个问题,那就是LCD在开机10分钟后会自动关闭。 在Vt.c文件(drivers/tty/vt目录下)的第179行,定义了blankinterval变量:static int blankinterval = 10*60; 通过改变blankinterval的值,可以修改LCD关闭的时间,如果我们不想让LCD关闭,则只要把该变量原创 2013-07-09 15:45:58 · 2498 阅读 · 2 评论 -
基于S3C2440的Linux-3.6.6移植——实时时钟RTC
在arch/arm/plat-samsung/Devs.c文件内,系统定义了RTC平台设备及其资源:static struct resource s3c_rtc_resource[] = { [0]= DEFINE_RES_MEM(S3C24XX_PA_RTC,SZ_256), [1]= DEFINE_RES_IRQ(IRQ_RTC), [2]=原创 2013-07-12 19:54:33 · 3221 阅读 · 3 评论 -
基于S3C2440的Linux-3.6.6移植——启动LOGO的修改
如前文所述,系统的默认配置是启动时显示LOGO图像,即显示drivers/video/logo目录下的logo_linux_clut224.ppm图像。但这个LOGO是显示在LCD的左上角,而且还有一个恼人的光标在闪。本文就介绍如何去除光标,并且把LOGO显示在LCD的正中间,最后还给出如何添加自己的LOGO的方法。 一、LOGO显示在LCD的中间:1、修改drivers/video/原创 2013-06-29 18:38:05 · 2161 阅读 · 2 评论 -
基于S3C2440的Linux-3.6.6移植——LCD背光的控制
在我的开发板上,通过S3C2440的GPG4引脚可以控制LCD的背光,即置1时LCD点亮,清零时LCD关闭。 Linux系统把LCD背光定义成LED平台设备。在Mach-zhaocj2440.c文件内,它的定义为:static struct s3c24xx_led_platdata zhaocj2440_led_backlight_pdata = { .name原创 2013-07-05 17:06:43 · 3068 阅读 · 0 评论 -
基于S3C2440的Linux-3.6.6移植——基于UVC的USB摄像头移植及视频显示
基于UVC的USB摄像头的移植很简单,只需要在menuconfig中进行适当的配置即可,如下所示:Device Drivers ---> Multimedia support ---> [*] Video capture adapters---> [*]原创 2014-08-06 17:36:56 · 10880 阅读 · 5 评论