分类: 嵌入式
2011-09-16 22:43:09
实现功能:
一> 支持小页/大页NandFlash—64M/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背光点亮。
十五、驱动程序在内核源码中的位置及设备名称