Chinaunix首页 | 论坛 | 博客
  • 博客访问: 756922
  • 博文数量: 869
  • 博客积分: 201
  • 博客等级: 入伍新兵
  • 技术积分: 3376
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-21 19:42
文章分类

全部博文(869)

文章存档

2014年(4)

2013年(415)

2012年(453)

我的朋友

分类:

2012-06-12 23:30:55

原文地址:Linux-2.6.31 内核移植 作者:luozhiyong131

实现功能:

> 支持小页/大页NandFlash64M/256M

> 支持yaffs2 文件系统

> 支持320*240 LCD

> 支持DM9000网卡

> 支持UDA1341 声卡

> 支持 RTC

> 完善了触摸屏驱动

> 支持常用USB 设备

>支持常用USB 摄像头

>支持 CMOS 摄像头驱动移植

十一> LCD 背光

 

移植手册:  linux2.6.31移植V1.5.pdf  

补丁文件:  linux-2.6.31_TX2440A.rar   

 

编译:

# make distclean    

# cp TX2440A_config_256M_W35 .config 

# make zImage

 

编译完后,会在arch/arm/boot下生成zImage内核镜像文件

 

    [其它说明:

linux-2.6.31_TX2440A20110106已经添加了3.5寸、4.3寸、7寸屏的驱动

内核源码的根目录下有3个配置文件:

TX2440A_config_256M_W35  >3.5寸屏的配置文件

TX2440A_config_256M_W43  >4.3寸屏的配置文件

TX2440A_config_256M_Q70  >7.0寸屏的配置文件

编译内核之前,只需要LOAD相应的配置文件就可以生成对应该屏的内核。

 

图形化配置:

#make menuconfig       <进入图形化配置界面

在配置菜单中选择这一项:"Load an Alternate Configuration File" ,输入2440的默认配置文件:TX2440A_config_256M_W35 ,然后选择 OK配置完后,回到主菜单,选择这一项"Save an Alternate Configuration File" ,输入要保存的配置文件名称:.config (默认)或自己取名:TX2440A_config,退出,编译内核]

 

 内核移植步骤:

一、准备移植

二、支持NandFlash

启动时输出: S3C24XX NAND Driver, (c) 2004 Simtec Electronics

0x000000000000-0x000000100000 : "boot"

0x000000120000-0x000000520000 : "kernel"

0x000000520000-0x000010000000 : "yaffs2"

 

三、支持yaffs2文件系统

启动时(成功挂载文件系统)输出:

yaffs: dev is 32505858 name is "mtdblock2"

yaffs: passed flags ""

yaffs: Attempting MTD mount on 31.2, "mtdblock2"

yaffs: auto selecting yaffs2

yaffs_read_super: isCheckpointed 0

VFS: Mounted root (yaffs filesystem) on device 31:2.

Freeing init memory: 196K

 

四、LCD驱动的移植

启动时输出:

Console: switching to colour frame buffer device 40x30

fb0: s3c2410fb frame buffer device

 

五、DM9000驱动的移植

         启动时输出:

dm9000 Ethernet Driver, V1.31

Now use the default MAC address: 08:90:90:90:90:90

eth0: dm9000e at c881c000,c8820004 IRQ 62 MAC: 08:90:90:90:90:90

系统启动后,可能会出现这个错误

ifconfig: SIOCSIFFLAGS: Cannot assign requested address

原因是MAC地址没有设置或没有设置对,在文件系统的启动脚本中加上:

ifconfig eth0 down

ifconfig eth0 hw ether XX:XX:XX:XX:XX:XX <MAC 地址,随便设

ifconfig eth0 up

一般问题可以解决,如果还提示有错,再改一下MAC地址。

测试网卡的方法:连接好计算机和开发板之间的网线,如果网开发板网卡的灯亮起,说明已经连接到计算机;可以在计算机的命令行窗口下(开始->运行->cmd)使用PING命令测试网络:

ping 192.168.1.10 <开发板的 IP 地址

也可以在开发板的串口终端下 PING 计算机的网卡。

 

六、UDA1341声卡驱动的移植

         启动时会打印出以下信息:

         S3C24XX_UDA134X SoC Audio driver

         UDA134X SoC Audio Codec

         asoc: UDA134X <-> s3c24xx-i2s mapping ok

         ALSA device list:

             #0: S3C24XX_UDA134X (UDA134X)

前面两句不用管,只要后面的信息都打出来就OK了,可以在源码下把这两条警告给屏蔽掉。

􀂋 下面测试一下声卡,设备名称为:/dev/dsp

在开发板的串口终端上用命令: #cat /dev/dsp > /tmp/1.wav 进行录音,录完后Ctrl+C ,用命令:#cat /tmp/1.wav > /dev/dsp 进行放音,如果听到刚才的录音,就说明声卡好使了,再用 madplay 测试一下音质,一般都没什么问题。

 

七、SD 卡驱动移植

启动时输出:

s3c2440-sdi s3c2440-sdi: powered down.

s3c2440-sdi s3c2440-sdi: initialisation done.

s3c2440-sdi s3c2440-sdi: powered down.

 

􀂋 挂载SD

插入SD卡后,会提示:

mmc0: new SD card at address b368

mmcblk0: mmc0:b368 SD 970 MiB

mmcblk0: p1

那么SD卡的设备名称就是mmcblk0p1,将它挂载到/mnt/sd目录下:

#mount /dev/mmcblk0p1 /mnt/sd

进入/mnt/sd目录就可以查看SD卡中的内容了。

􀂋 卸载SD卡,用命令:

#umount /mnt/sd

 

八、RTC 驱动移植

S3C24XX RTC, (c) 2004,2006 Simtec Electronics

s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling

s3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0

􀂋 在终端下用busybox1.15.2自带的date命令来查看和设置时间

#date <输入命令

Thu Jan 1 00:01:36 UTC 1970 <显示的时间

#date -s 2009.10.22-16:30:10 <设置时间格式:年..-::

Thu Oct 22 16:30:10 UTC 2009

#hwclock -w <保存时间

􀂋 在文件系统的启动脚本中加入命令:hwclock -s

每次启动系统时就会自动同步硬件 RTC 时间:

s3c2410-rtc s3c2410-rtc: setting system clock to 2009-10-22 16:32:07 UTC

 

九、触摸屏驱动移植

启动时输出:

s3c2410 TouchScreen successfully loaded

input: s3c2410 TouchScreen as /class/input/input0

 

十、USB 设备驱动移植

U 盘的挂载:

插入 U 盘后会提示:

[root@TX2440A /dev]# usb 1-1.4: new full speed USB device using s3c2410-ohci

and address 3 <插入第三个 USB

usb 1-1.4: configuration #1 chosen from 1 choice

scsi0 : SCSI emulation for USB Mass Storage devices

scsi 0:0:0:0: Direct-Access Kingston DataTraveler G2 1.00 PQ: 0 ANSI: 2

sd 0:0:0:0: [sda] 7831552 512-byte logical blocks: (4.00 GB/3.73 GiB)

sd 0:0:0:0: [sda] Write Protect is off

sd 0:0:0:0: [sda] Assuming drive cache: write through

sd 0:0:0:0: Attached scsi generic sg0 type 0

sd 0:0:0:0: [sda] Assuming drive cache: write through

sda: sda1 <设备名称

sd 0:0:0:0: [sda] Assuming drive cache: write through

sd 0:0:0:0: [sda] Attached SCSI removable disk

 

U 盘的设备名称就是sda1,将它挂载到/mnt/udisk3目录下:

#mount /dev/sda1 /mnt/udisk3

进入/mnt/udisk3 目录就可以查看U盘中的内容了。

卸载U盘,用命令:

#umount /mnt/udisk3

 

十一、USB 摄像头驱动移植

插入 USB 摄像头(使用的是UVC摄像头),会提示:

usb 1-1.2: new full speed USB device using s3c2410-ohci and address 5

usb 1-1.2: configuration #1 chosen from 1 choice

uvcvideo: Found UVC 1.00 device Saturn USB 2.0 Camera. (0ac8:3313)

input: Saturn USB 2.0 Camera. as /class/input/input1

它的设备名称是:/dev/video0

十二、CMOS 摄像头驱动移植

 

十三、其他字符设备驱动移植.

 

十四、LCD背光驱动移植和开机LOGO的制作

测试背光驱动 执行 #echo 0 > /dev/TX2440-backlight 会使LCD背光熄灭。执行 #echo 1 > /dev/TX2440-backlight 会使LCD背光点亮。

 

十五、驱动程序在内核源码中的位置及设备名称

阅读(263) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册