IT博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理 随笔:234 文章:154 评论:283 引用:0
图3-3
REGBANKLCD控制器的寄存器组,用来对LCD控制器的各项参数进行设置。而 LCDCDMA 则是LCD控制器专用的DMA信道,负责将视频资料从系统总线(System Bus)上取来,通过 VIDPRCS 从VD[23:0]发送给LCD屏。同时 TIMEGEN LPC3600 负责产生 LCD屏所需要的控制时序,例如VSYNC、HSYNC、VCLK、VDEN,然后从 VIDEO MUX 送给LCD屏。
TFT屏时序分析
图3-4是TFT屏的典型时序。其中VSYNC是帧同步信号,VSYNC每发出1个脉冲,都意味着新的1屏视频资料开始发送。而HSYNC为行同步信号,每个HSYNC脉冲都表明新的1行视频资料开始发送。而VDEN则用来标明视频资料的有效,VCLK是用来锁存视频资料的像数时钟。
并且在帧同步以及行同步的头尾都必须留有回扫时间,例如对于VSYNC来说前回扫时间就是(VSPW+1)+(VBPD+1),后回扫时间就是(VFPD +1);HSYNC亦类同。这样的时序要求是当初CRT显示器由于电子枪偏转需要时间,但后来成了实际上的工业标准,乃至于后来出现的TFT屏为了在时序上于CRT兼容,也采用了这样的控制时序。


图3-4
YFARM9-EDU-1采用的是Samsung公司的1款3.5寸TFT真彩LCD屏,分辩率为240*320,下图为该屏的时序要求。
图3-5

通过对比图3-4和图3-5,我们不难看出:
VSPW+1=2 -> VSPW=1
VBPD+1=2 -> VBPD=1
LINVAL+1=320-> LINVAL=319
VFPD+1=3 -> VFPD=2

HSPW+1=4 -> HSPW=3
HBPD+1=7 -> HBPW=6
HOZVAL+1=240-> HOZVAL=239
HFPD+1=31 -> HFPD=30
以上各参数,除了LINVAL和HOZVAL直接和屏的分辩率有关,其它的参数在实际操作过程中应以上面的为参考,不应偏差太多。
LCD控制器主要寄存器功能详解
(1)LCDCON1

LINECNT :当前行扫描计数器值,标明当前扫描到了多少行
CLKVAL :决定VCLK的分频比。LCD控制器输出的VCLK是直接由系统总线(AHB)的工作频率HCLK直接分频得到的。做为240*320的TFT屏,应保证得出的VCLK在5~10MHz之间
MMODE :VM信号的触发模式(仅对STN屏有效,对TFT屏无意义)
PNRMODE :选择当前的显示模式,对于TFT屏而言,应选择[11],即TFT LCD panel
BPPMODE :选择色彩模式,对于真彩显示而言,选择16bpp(64K色)即可满足要求
ENVID :使能LCD信号输出
VBPD , LINEVAL , VFPD , VSPW 的各项含义已经在前面的时序图中得到体现,这里不再赘述。
HBPD , HOZVAL , HFPD 的各项含义已经在前面的时序图中得到体现,这里不再赘述。

HSPW 的含义已经在前面的时序图中得到体现,这里不再赘述。
MVAL 只对 STN屏有效,对TFT屏无意义。

HSPW 的含义已经在前面的时序图中得到体现,这里不再赘述。
MVAL 只对 STN屏有效,对TFT屏无意义。

VSTATUS :当前VSYNC信号扫描状态,指明当前VSYNC同步信号处于何种扫描阶段
HSTATUS :当前HSYNC信号扫描状态,指明当前HSYNC同步信号处于何种扫描阶段
BPP24BL :设定24bpp显示模式时,视频资料在显示缓冲区中的排列顺序(即低位有效还是高位有效)。对于16bpp的64K色显示模式,该设置位无意义。
FRM565 :对于16bpp显示模式,有2中形式,一种是RGB=5:5:5:1,另一种是5:6:5。后一种模式最为常用,它的含义是表示64K种色彩的16bit RGB资料中,红色(R)占了5bit,绿色(G)占了6bit,兰色(B)占了5bit
INVVCLK , INVLINE , INVFRAME , INVVD :通过前面的时序图,我们知道,CPU的LCD控制器输出的时序默认是正脉冲,而LCD需要VSYNC(VFRAME)、VLINE(HSYNC)均为负脉冲,因此 INVLINE 和 INVFRAME 必须设为“1 ”,即选择反相输出。 INVVDEN , INVPWREN , INVLEND 的功能同前面的类似。
PWREN 为LCD电源使能控制。在CPU LCD控制器的输出信号中,有一个电源使能管脚LCD_PWREN,用来做为LCD屏电源的开关信号。
ENLEND 对普通的TFT屏无效,可以不考虑。

BSWP 和 HWSWP 为字节(Byte)或半字(Half-Word)交换使能。由于不同的GUI对FrameBuffer(显示缓冲区)的管理不同,必要时需要通过调整 BSWP 和 HWSWP 来适应GUI。

posted @ 2006-03-08 20:47 zz 阅读(1767) | 评论 (0)编辑 收藏
 
超级“寒”
有一次我问我同桌有没有面巾纸,她不知道为什么突然答:“我有卫生巾。”顿时全班鸦雀无声,我狂汗,说:“你自己留着吧,反正我也用不上……”

修?羞!
高中的时候,一次下课,同学们都抢着到外面买盒饭。一女生为了比别人先到,绕了个近道走,结果前面窨井盖没盖好,掉了下去!一会儿她撑着井沿往上爬,很是狼狈,一群初中小孩惊骇地从身边走过,她竟急中生智,一边爬一边说:“哎!真难修啊……”

posted @ 2006-03-07 00:12 zz 阅读(481) | 评论 (0)编辑 收藏
 
1: 创建文件系统映象, mount到建立的临时目录
#mkdir /root/temp
#dd if=/dev/zero of=ramdisk bs=1024 count=1024
#mkfs.ext2 -F ramdisk
#mount -o loop ramdisk /root/temp

2: 创建文件系统的各个目录, 并加入相关文件和目录
#cd /root/temp
#mkdir dev proc etc mnt usr bin sbin
注意: usr,bin,sbin,etc目录可以直接去busybox下copy

3: 用busybox编译生成所需文件
#cd busybox
#make distclean
#make menuconfig
#make dep
#make
#make install

4: copy busybox下_install和examples/bootfloppy/etc目录中的所有文件到temp中
#cp -rf _install/*   /root/temp
#cp -rf examples/bootfloppy/etc /root/temp
#umount /root/temp
posted @ 2006-03-04 09:28 zz 阅读(755) | 评论 (0)编辑 收藏
 
Linux下支持netfilter机制的配置工具就是iptables,它也就相当与一个应用程序,可以对netfilter进行配置(包过滤规则,NAT等等)。所以要实现netfilteriptables)就要从两方面来着手:1)内核支持netfilter2)用户层的iptables配置命令。
        1、编译内核,支持netfilter
    在宿主机上进入Linux内核目录,配置所需的内核模块:
cd  /usr/src/linux

make  menuconfig 
选中如下内核选项:
General setup --->
[*] Sysctl support
(在ROMFS文件系统中/proc/sys/net/ipv4/出现ip_forward
Networking options --->
[*] Network packet filtering (replaces ipchains)

IP: Netfilter Configuration --->(全部选择即可) 
这样在内核中就选择支持了netfilter。接下来只需编译并生成内核映像文件并烧写到嵌入式系统即可。如果烧写后重起成功进入Linux,则说明新的支持netfiter的内核已经正常运行。(注意,这里的内核选项只是一些支持netfilter/iptables的选项。这里假设原有内核已支持嵌入式系统的相关硬件,并能在嵌入式平台上运行)。 
        2、编译生成iptables命令 
        iptables工具包可以免费从网上获得。下载iptables工具包后,进入下载目录,进行编译生成可执行文件,编译方法具体可以参考iptables目录下的INSTALL文件:
cd /root/iptables

make KERNEL_DIR = /usr/src/linux
(指定内核目录)
make NO.SHARED_LIBS = 1
(静态链接编译生成可执行文件)
把生成的iptables可执行文件copyramdisk再下载到嵌入式系统中就可以运行。
        好了,重新启动板子后,就可以用iptables这个命令了。
posted @ 2006-03-04 09:26 zz 阅读(464) | 评论 (0)编辑 收藏
 
1 preparation
my board is s3c2410 SMDK2410
a>download kernel
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.7.tar.gz
decompress and no patch is needed
b>install the gcc compiler
ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2
2 modify kernel source
a>add your nand flash partition information
modify the arch/arm/mach-s3c2410/devs.c file
for example:

/***********add here*************/
#include <linux/mtd/partitions.h>
#include <asm/arch/nand.h>
#include <linux/mtd/nand.h>
/***********end add*************/

...

/*****************************add here***************************/
static struct mtd_partition partition_info[] ={
{
name: "loader",
size: 0x00020000,
offset: 0,
}, {
name: "param",
size: 0x00010000,
offset: 0x00020000,
}, {
name: "kernel",
size: 0x001c0000,
offset: 0x00030000,
}, {
name: "root",
size: 0x00200000,
offset: 0x00200000,
mask_flags: MTD_WRITEABLE,
}, {
name: "user",
size: 0x03af8000,
offset: 0x00400000,
}
};

struct s3c2410_nand_set nandset ={
nr_partitions: 5 ,
partitions: partition_info ,
};

struct s3c2410_platform_nand superlpplatform={
tacls:0,
twrph0:30,
twrph1:0,
sets: &nandset,
nr_sets: 1,
};
/********************************end add****************************/
struct platform_device s3c_device_nand = {
.name = "s3c2410-nand",
.id = 0xec,
.num_resources = ARRAY_SIZE(s3c_nand_resource),
.resource = s3c_nand_resource,
.dev = {
.platform_data = &superlpplatform //***********add here*****
}
};

b>add "&s3c_device_nand" to the __initdata in the arch/arm/mach-s3c2410/mach-smdk2410.c
c>disable the ecc
modify the drivers/mtd/nand/s3c2410.c
for example:
/**** chip->eccmode = NAND_ECC_SOFT; **/
chip->eccmode = NAND_ECC_NONE;

3 config the kernel
a>modify the MakeFile
for example:
##SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
## -e s/arm.*/arm/ -e s/sa110/arm/ \
## -e s/s390x/s390/ -e s/parisc64/parisc/ )
SUBARCH :=arm

##CROSS_COMPILE ?=
CROSS_COMPILE ?=/toolchain/bin/arm-linux- ##according to your situation
b>make menuconfig....
the following is my configuration
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.11.7
# Mon May 2 14:26:10 2005
#
CONFIG_ARM=y
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_IOMAP=y

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_BROKEN_ON_SMP=y

#
# General setup
#
CONFIG_LOCALVERSION=""
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_HOTPLUG is not set
# CONFIG_IKCONFIG is not set
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
# CONFIG_TINY_SHMEM is not set

#
# Loadable module support
#
CONFIG_MODULES=y
# CONFIG_MODULE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y

#
# System Type
#
# CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_CAMELOT is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_IOP3XX is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
CONFIG_ARCH_S3C2410=y
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_OMAP is not set
# CONFIG_ARCH_VERSATILE is not set
# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_H720X is not set

#
# S3C24XX Implementations
#
# CONFIG_ARCH_BAST is not set
# CONFIG_ARCH_H1940 is not set
CONFIG_ARCH_SMDK2410=y
# CONFIG_MACH_VR1000 is not set
# CONFIG_MACH_RX3715 is not set
CONFIG_CPU_S3C2410=y

#
# S3C2410 Setup
#
# CONFIG_S3C2410_DMA is not set
CONFIG_S3C2410_LOWLEVEL_UART_PORT=0

#
# Processor Type
#
CONFIG_CPU_32=y
CONFIG_CPU_ARM920T=y
CONFIG_CPU_32v4=y
CONFIG_CPU_ABRT_EV4T=y
CONFIG_CPU_CACHE_V4WT=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WBI=y

#
# Processor Features
#
CONFIG_ARM_THUMB=y
# CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set

#
# General setup
#
CONFIG_ZBOOT_ROM_TEXT=0
CONFIG_ZBOOT_ROM_BSS=0
# CONFIG_XIP_KERNEL is not set

#
# PCCARD (PCMCIA/CardBus) support
#
# CONFIG_PCCARD is not set

#
# PC-card bridges
#

#
# At least one math emulation must be selected
#
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_NWFPE_XP is not set
# CONFIG_FPE_FASTFPE is not set
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_MISC=y

#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_PM is not set
# CONFIG_PREEMPT is not set
# CONFIG_ARTHUR is not set
CONFIG_CMDLINE=""
CONFIG_ALIGNMENT_TRAP=y

#
# Parallel port support
#
# CONFIG_PARPORT is not set

#
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_CONCAT is not set
# CONFIG_MTD_REDBOOT_PARTS is not set
# CONFIG_MTD_CMDLINE_PARTS is not set
# CONFIG_MTD_AFS_PARTS is not set

#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
CONFIG_NFTL=y
# CONFIG_NFTL_RW is not set
# CONFIG_INFTL is not set

#
# RAM/ROM/Flash chip drivers
#
# CONFIG_MTD_CFI is not set
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set

#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set

#
# Self-contained MTD device drivers
#
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLKMTD is not set
# CONFIG_MTD_BLOCK2MTD is not set

#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set

#
# NAND Flash Device Drivers
#
CONFIG_MTD_NAND=y
# CONFIG_MTD_NAND_VERIFY_WRITE is not set
CONFIG_MTD_NAND_IDS=y
CONFIG_MTD_NAND_S3C2410=y
# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
# CONFIG_MTD_NAND_S3C2410_HWECC is not set
# CONFIG_MTD_NAND_DISKONCHIP is not set
# CONFIG_MTD_NAND_NANDSIM is not set

#
# Plug and Play support
#

#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_RAM is not set
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_CDROM_PKTCDVD is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_AS is not set
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_CFQ is not set

#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set

#
# Networking support
#
# CONFIG_NET is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set

#
# ATA/ATAPI/MFM/RLL support
#
# CONFIG_IDE is not set

#
# SCSI device support
#
# CONFIG_SCSI is not set

#
# Fusion MPT device support
#

#
# IEEE 1394 (FireWire) support
#

#
# I2O device support
#

#
# ISDN subsystem
#

#
# Input device support
#
CONFIG_INPUT=y

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set

#
# Input I/O drivers
#
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
# CONFIG_SERIO is not set

#
# Input Device Drivers
#
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set

#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_S3C2410=y
CONFIG_SERIAL_S3C2410_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set

#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set

#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
# CONFIG_S3C2410_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set

#
# Ftape, the floppy tape device driver
#
# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set

#
# I2C support
#
# CONFIG_I2C is not set

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set

#
# Digital Video Broadcasting Devices
#

#
# File systems
#
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
# CONFIG_JBD is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set

#
# XFS support
#
# CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set

#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set

#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
CONFIG_DEVFS_FS=y
CONFIG_DEVFS_MOUNT=y
# CONFIG_DEVFS_DEBUG is not set
# CONFIG_DEVPTS_FS_XATTR is not set
# CONFIG_TMPFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_NAND=y
# CONFIG_JFFS2_FS_NOR_ECC is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
CONFIG_CRAMFS=y
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y

#
# Native Language Support
#
# CONFIG_NLS is not set

#
# Profiling support
#
# CONFIG_PROFILING is not set

#
# Graphics support
#
# CONFIG_FB is not set

#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y

#
# Sound
#
# CONFIG_SOUND is not set

#
# Misc devices
#

#
# USB support
#
# CONFIG_USB is not set
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_USB_ARCH_HAS_OHCI is not set

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
#

#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set

#
# MMC/SD Card support
#
# CONFIG_MMC is not set

#
# Kernel hacking
#
CONFIG_DEBUG_KERNEL=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_FS is not set
CONFIG_FRAME_POINTER=y
# CONFIG_DEBUG_USER is not set
# CONFIG_DEBUG_WAITQ is not set
# CONFIG_DEBUG_ERRORS is not set
CONFIG_DEBUG_LL=y
# CONFIG_DEBUG_ICEDCC is not set
CONFIG_DEBUG_S3C2410_PORT=y
CONFIG_DEBUG_S3C2410_UART=0

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set

#
# Cryptographic options
#
# CONFIG_CRYPTO is not set

#
# Hardware crypto devices
#

#
# Library routines
#
# CONFIG_CRC_CCITT is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y

4 compile kernel
make
5 set linux command line
for example: noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 mac=00:0e:3a:aa:bb:cc
6 result
the result is as follows:
Uncompressing Linux........................................ done, booting the kernel.
Linux version 2.6.11.7 (root@localhost.localdomain) (gcc version 3.4.1) #7 Mon May 2 14:21:51 CST 2005
CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Machine: SMDK2410
ATAG_INITRD is deprecated; please update your bootloader.
Memory policy: ECC disabled, Data cache writeback
CPU S3C2410A (id 0x32410002)
S3C2410: core 200.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz
S3C2410 Clock control, (c) 2004 Simtec Electronics
Built 1 zonelists
Kernel command line: noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 mac=00:0e:3a:aa:bb:cc
irq: clearing subpending status 00000002
PID hash table entries: 512 (order: 9, 8192 bytes)
timer tcon=00000000, tcnt a2c1, tcfg 00000200,00000000, usec 00001eb8
Console: colour dummy device 80x30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 64MB = 64MB total
Memory: 63520KB available (961K code, 238K data, 56K init)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
Linux NoNET1.0 for Linux 2.6
S3C2410: Initialising architecture
NetWinder Floating Point Emulator V0.97 (double precision)
devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x1
JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc.
s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410
s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410
s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410
io scheduler noop registered
NFTL driver: nftlcore.c $Revision: 1.97 $, nftlmount.c $Revision: 1.40 $
S3C2410 NAND Driver, (c) 2004 Simtec Electronics
s3c2410-nand: mapped registers at c4880000
s3c2410-nand: timing: Tacls 10ns, Twrph0 40ns, Twrph1 10ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
NAND_ECC_NONE selected by board driver. This is not recommended !!
Scanning device for bad blocks
Creating 5 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00020000 : "loader"
0x00020000-0x00030000 : "param"
0x00030000-0x001f0000 : "kernel"
0x00200000-0x00400000 : "root"
0x00400000-0x03ef8000 : "user"
mice: PS/2 mouse device common for all mice
Reading data from NAND FLASH without ECC is not recommended
VFS: Mounted root (cramfs filesystem) readonly.
Mounted devfs on /dev
Freeing init memory: 56K
mount /etc as ramfs
re-create the /etc/mtab entries
Reading data from NAND FLASH without ECC is not recommended
/sbin/insmod: relocation error: /sbin/insmod: symbol query_module, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
mount: Mounting /dev/mtdblock/4 on /usr failed: No such device
console=/dev/console
init started: BusyBox v0.60.3 (2002.05.13-08:36+0000) multi-call binary
Starting pid 23, console /dev/console: '/etc/init.d/rcS'
mount: Mounting tmpfs on /dev/shm failed: No such file or directory
exec: /usr/etc/rc.local: No such file or directory
Waiting for enter to start '/bin/sh' (pid 26, terminal /dev/console)

Please press Enter to activate this console.
Starting pid 26, console /dev/console: '/bin/sh'


BusyBox v0.60.3 (2002.05.13-08:36+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

#

7 conclusion
the basic function is ok now , next the ecc should be corrected and many drivers should be added.(to be continued)

posted @ 2006-03-04 09:14 zz 阅读(4187) | 评论 (6)编辑 收藏
 
本文讨论的是比较流行的嵌入式开发组合ARM+uclinux,即目标开发板为三星S3C4510,完成sqlite在其uclinux上的移植。
 
   本文假设你已经具备正确编译uclinux的kernel的能力,即有能力完成make menuconfig;make dep;make lib_only;make user_only;make romfs;make image;make。而且还能将自己写的类似helloworld程序加到“用户自定义应用程序”中,即你能完成“uClinux- dist/Documentation/Adding-User-Apps-HOWTO”中所描述的“用户程序的订制”。

  大多数需要 移植sqlite到uclinux的开发者,应该已经具备上面的能力,而只是不清楚如何修改sqlite来完成其在uclinux下的编译。如果你还不能 完成上面的要求,那么请先做一定的准备工作,因为本范例所涉及到的内容主要是跟sqlite在uclinux下的移植有关,其他的在这个过程中出现的问 题,开发者需要自行处理。

  本范例使用的uclinux是uClinux-dist-20030522.tar.gz,你可以从http://www.uclinux.org得到适合你的软件包。

  交叉编译工具是arm-elf-tools-20030314.sh,你也可以在http://www.uclinux.org找到它。

  本范例使用的sqlite是sqlite-2.8.15.tar.gz,本文的方法也适合于2.8.x系列的sqlite;可能有部分内容不适用于3.0.x系列的sqlite,因为3.0.x中源代码有较大的变化。

  1、 下载sqlite:你可以到http://www.sqlite.org/download.html,下载sqlite-2.8.15.tar.gz软件包;

  2、 将下载的软件包解压缩到uClinux-dist/user目录下;

  命令:

$tar zxvf sqlite-2.8.15.tar.gz -C uClinux-dist/user/

  现在在uclinux的user目录下,你应该可以看到sqlite目录了。解压缩到这个user目录主要是要将sqlite编译成一个普通的用户应用程序。

  3、 用户应用程序的有关设置:

  按uClinux-dist/Documentation/Adding-User-Apps-HOWTO文档中说提到的,来添加sqlite作为一个用户应用程序,将其做成一个shell,这样就类似于uclinux自己的ps命令。

  编辑文件

uClinux-dist/user/Makefile
uClinux-dist/config/Configure.help
uClinux-dist/config/config.in

  我是在这些文件里查找“cpu”有关的项,然后在它的下面,加上自己的sqlite项,这个过程并不复杂。

   通过上面的修改后,你现在就可以运行uclinux的make menuconfig,选中“CustomizeVendor/User Settings”,再选中“Miscellaneous Applications”,可以看到它现在出现了一个新的“sqlite (NEW)”,这个就是我们刚添加进去的sqlite项。

  在稍后的make romfs中,uclinux会将你的sqlite编译进来,做成romfs的一部分,因为你在uClinux-dist/user/Makefile中 已经加上要编译sqlite项了。这样在移植后的uclinux的/bin中将会有sqlite命令可以让你来执行。

  好,现在我们就要对sqlite进行修改,来做移植工作。

  在下面的描述中,我们将对以下几个文件进行一定的添加、修改,从而来完成sqlite在uclinux下的编译:

sqlite/main.mk 修改
sqlite/Makefile 添加
sqlite/src/os.c 修改
sqlite/src/shell.c 修改


  对这几个文件进行修改时,请自己做好这些文件的备份,比如你可以将它们拷贝一份,改名成文件名后面带.bak。这个很重要,可以避免你在修改的过程出现问题而无法还原。

  一、修改sqlite/main.mk

  1、TCCX

  将

TCCX = $(TCC) $(OPTS) $(THREADSAFE) $(USLEEP) -I. -I$(TOP)/src

  修改为

TCCX = $(TCC) $(OPTS) $(THREADSAFE) $(USLEEP) -I. -I$(TOP)/src $(CFLAGS)

  即加上$(CFLAGS)标记。

  2、 LIBOBJ

  找到 # Object files for the SQLite library.

  将其中的tclsqlite.o去掉。即去掉tcl有关的东西。

  如果没有tclsqlite.o,那么不用处理它。

  3、 sqlite$(EXE)

  找到类似sqlite$(EXE)的一句,将:

sqlite$(EXE): $(TOP)/src/shell.c libsqlite.a sqlite.h
$(TCCX) $(READLINE_FLAGS) -o sqlite$(EXE) $(TOP)/src/shell.c \
libsqlite.a $(LIBREADLINE) $(THREADLIB)

  替换为:

shell.o: $(TOP)/src/shell.c sqlite.h
$(TCCX) $(READLINE_FLAGS) -c $(TOP)/src/shell.c

sqlite$(EXE): shell.o libsqlite.a
$(TCC) $(LDFLAGS) -o $@ shell.o \
libsqlite.a $(LIBREADLINE) $(THREADLIB) $(LDLIBS)

  即在sqlite$(EXE)上一行加上shell.o,及在其后加上$(LDLIBS)标记。这个是对/src/shell.c的编译方法的修改。

  4、romfs

  将:

install: sqlite libsqlite.a sqlite.h
mv sqlite /usr/bin
mv libsqlite.a /usr/lib
mv sqlite.h /usr/include

  替换为:

romfs: sqlite
$(ROMFSINST) /bin/sqlite

  即去掉make install项,加上make romfs项。 这个很重要,这将在romfs的/bin目录下生成sqlite。

  5、clean

  将:

clean:
rm -f *.o sqlite libsqlite.a sqlite.h opcodes.*
rm -f lemon lempar.c parse.* sqlite*.tar.gz
rm -f $(PUBLISH)
rm -f *.da *.bb *.bbg gmon.out
rm -rf tsrc

  替换为:

clean:
rm -f *.o sqlite libsqlite.a sqlite.h opcodes.* sqlite.gdb
rm -f $(PUBLISH)
rm -f *.da *.bb *.bbg gmon.out
rm -rf tsrc

distclean: clean
rm -f lemon lempar.c parse.* sqlite*.tar.gz
rm -f config.h


  即增加make distclean项。

 二、在sqlite下增加Makefile文件

  在sqlite目录下应该没有Makefile文件,而只是有一个sqlite/Makefile.linux-gcc文件。我们要移植sqlite到uclinux,那么就要自己写一个合适的Makefile。

  内容如下:

===========Makefile内容开始===========
#!/usr/make
#
# Makefile for SQLITE
#
# This is a template makefile for SQLite. Most people prefer to
# use the autoconf generated "configure" script to generate the
# makefile automatically. But that does not work for everybody
# and in every situation. If you are having problems with the
# "configure" script, you might want to try this makefile as an
# alternative. Create a copy of this file, edit the parameters
# below and type "make".
#

#### The toplevel directory of the source tree. This is the directory
# that contains this "Makefile.in" and the "configure.in" script.
#
TOP = .

#### C Compiler and options for use in building executables that
# will run on the platform that is doing the build.
#
BCC = gcc -g -O2
#BCC = /opt/ancic/bin/c89 -0

#### If the target operating system supports the "usleep()" system
# call, then define the HAVE_USLEEP macro for all C modules.
#
#USLEEP =
USLEEP = -DHAVE_USLEEP=1

#### If you want the SQLite library to be safe for use within a
# multi-threaded program, then define the following macro
# appropriately:
#
#THREADSAFE = -DTHREADSAFE=1
THREADSAFE = -DTHREADSAFE=0

#### Specify any extra linker options needed to make the library
# thread safe
#
#THREADLIB = -lpthread
THREADLIB =

#### Leave MEMORY_DEBUG undefined for maximum speed. Use MEMORY_DEBUG=1
# to check for memory leaks. Use MEMORY_DEBUG=2 to print a log of all
# malloc()s and free()s in order to track down memory leaks.
#
# SQLite uses some expensive assert() statements in the inner loop.
# You can make the library go almost twice as fast if you compile
# with -DNDEBUG=1
#
#OPTS = -DMEMORY_DEBUG=2
#OPTS = -DMEMORY_DEBUG=1
#OPTS = -DNDEBUG=1
OPTS = -DMEMORY_DEBUG=1

#### The suffix to add to executable files. ".exe" for windows.
# Nothing for unix.
#
#EXE = .exe
EXE =

#### C Compile and options for use in building executables that
# will run on the target platform. This is usually the same
# as BCC, unless you are cross-compiling.
#
TCC = $(CROSS)gcc
FLTFLAGS += -s 12000
#TCC = gcc -g -O0 -Wall
#TCC = gcc -g -O0 -Wall -fprofile-arcs -ftest-coverage
#TCC = /opt/mingw/bin/i386-mingw32-gcc -O6
#TCC = /opt/ansic/bin/c89 -O +z -Wl,-a,archive

#### Tools used to build a static library.
#
AR = $(CROSS)ar cr
#AR = /opt/mingw/bin/i386-mingw32-ar cr
RANLIB = $(CROSS)ranlib
#RANLIB = /opt/mingw/bin/i386-mingw32-ranlib

#### Extra compiler options needed for programs that use the TCL library.
#
#TCL_FLAGS =
#TCL_FLAGS = -DSTATIC_BUILD=1
#TCL_FLAGS = -I/home/drh/tcltk/8.4linux
#TCL_FLAGS = -I/home/drh/tcltk/8.4win -DSTATIC_BUILD=1
#TCL_FLAGS = -I/home/drh/tcltk/8.3hpux

#### Linker options needed to link against the TCL library.
#
#LIBTCL = -ltcl -lm -ldl
#LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl
#LIBTCL = /home/drh/tcltk/8.4win/libtcl84s.a -lmsvcrt
#LIBTCL = /home/drh/tcltk/8.3hpux/libtcl8.3.a -ldld -lm -lc

#### Compiler options needed for programs that use the readline() library.
#
READLINE_FLAGS =
#READLINE_FLAGS = -DHAVE_READLINE=1 -I/usr/include/readline

#### Linker options needed by programs using readline() must link against.
#
#LIBREADLINE =
#LIBREADLINE = -static -lreadline -ltermcap

#### Should the database engine assume text is coded as UTF-8 or iso8859?
#
# ENCODING = UTF8
ENCODING = ISO8859

# You should not have to change anything below this line
###############################################################################
include $(TOP)/main.mk
===========Makefile内容结束===========
注:

  1、 在uclinux下的sqlite的Makefile将不去用到TCL相关的库。

  2、 在uclinux下的sqlite的Makefile将不去用到readline()。

  在sqlite/README中有关于Makefile的一段描述:

The configure script uses autoconf 2.50 and libtool. If the configure script does not work out for you, there is a generic makefile named "Makefile.linux-gcc" in the top directory of the source tree that you can copy and edit to suite your needs. Comments on the generic makefile show what changes are needed.


  你可以用sqlite/Makefile.linux-gcc作为蓝本来修改适合你自己的Makefile。

  你如果有兴趣的话,可以把上面的Makefile的内容和sqlite/Makefile.linux-gcc内容diff对比一下,看看uclinux下的sqlite编译有哪些不同的地方。

  三、修改sqlite/src/os.c

  如果你的sqlite包中包括os.c文件那么就对其进行修改,没有os.c文件可能是你的sqlite版本比较新,那么无须修改。

  将所有你找到的:

if( s!=0 )


  用:

if( s!=0 && errno != ENOSYS )


  替换。
四、修改sqlite/src/shell.c

  1、struct previous_mode_data 结构定义项:

  将 int colWidth[100];

  用 int colWidth[20];

  替换。

  2、struct callback_data 结构定义项

  将:

int colWidth[100];
int actualWidth[100];
char outfile[FILENAME_MAX];


  用:

int colWidth[20];
int actualWidth[20];
char *outfilep;


  对应替换。

  再在结构下面增加:

#ifndef FILENAME_MAX
#define FILENAME_MAX 4095
#endif
char outfilename[FILENAME_MAX]; /* Filename for *out */


  即

struct callback_data
{
...
};
#ifndef FILENAME_MAX
#define FILENAME_MAX 4095
#endif
char outfilename[FILENAME_MAX]; /* Filename for *out */


  3、函数do_meta_command(...)

  找到类似这样的一句:

sqlite_exec(p->db, "PRAGMA database_list; ", callback, &data, &zErrMsg);


  在它的前面有一句

memcpy(&data, p, sizeof(data));


  现在在memcpy下面增加一行

data.cnt = 0;


  即将结构中cnt的值赋为0 ;

  现在代码会被修改成类似:

open_db(p);
memcpy(&data, p, sizeof(data));
data.cnt = 0;


  再继续。

  找到类似这样的一句:

strcmp(azArg[1],"stdout")==0


  在它的下面的括号中:

  将 strcpy(p->outfile,"stdout");

  用 p->outfilep = "stdout";

  来替换。

  再在它下面的5-6行处

  将:
strcpy(p->outfile,azArg[1]);


  用:

strcpy(outfilename,azArg[1]);
p->outfilep = outfilename;


  替换。

  再继续,找到类似这样的一句:

fprintf(p->out,"%9.9s: %s\n","output",


  将:

fprintf(p->out,"%9.9s: %s\n","output", strlen(p->outfile) ? p->outfile : "stdout");


  用:

fprintf(p->out,"%9.9s: %s\n","output", p->outfilep && strlen(p->outfilep) ? p->

想送免费的歌曲祝福吗 汽车生活方式大比拼
天堂II 混沌的年代 天堂II 混沌的年代
;outfilep : "stdout");


   替换。

  完成修改。

  上面的所有的对sqlite的修改完成后,你就可以make dep;make lib_only;make user_only;make romfs;make image了。

   如果你对sqlite的修改,在make user_only过程中出现错误的话,你可以忽略make dep;make lib_only命令,直接再次进行make user_only;make romfs;make image;就可以了,而不用重复make dep;make lib_only。

  make image会帮你生成romfs文件系统。现在在uClinux-dist/images下面就有编译生成的romfs文件系统了。这个就是我们需要的包含有sqlite的romfs了。

  在上面的过程中,你可以不用在“make image”后再去“make”生成kernel内核,因为你只需要生成romfs就可以了,它里面已经有sqlite了。

  现在你就可以把你生成的含有sqlite应用程序的romfs下载到开发板上运行一下。

Welcome to
____ _ _
/ __| ||_|
_ _| | | | _ ____ _ _ _ _
| | | | | | || | _ \| | | |\ \/ /
| |_| | |__| || | | | | |_| |/ \
| ___\____|_||_|_| |_|\____|\_/\_/
| |
|_|

GDB/ARMulator support by <davidm@snapgear.com>
For further information check:
http://www.uclinux.org/

Command: /bin/ifconfig eth0 up 10.0.0.2
Execution Finished, Exiting
init: Booting to single user mode

Sash command shell (version 1.1.1)
/> cd bin
/bin> ls -l sqlite
-rwxr-xr-x 1 0 0 327072 Jan 01 00:00 sqlite
/bin >cd /tmp
/tmp>sqlite test.sqlite
sqlite> create table my(name varchar(80), num smallint);
sqlite> insert into my values('yutao', 100);
sqlite> insert into my values('uclinux', 99);
sqlite> select * from my;
yutao|100
uclinux|99
sqlite> .tables
my
sqlite> .schema
create table my(name varchar(80), num smallint);
sqlite> .q
/tmp>ls –l test.sqlite


  你要保证你的/tmp是可写的目录。

  好,现在你的sqlite就已经在uclinux运行起来了,感觉如何呀,在uclinux也可以玩玩“select * from”,感觉很爽吧。



posted @ 2006-03-01 22:25 zz 阅读(260) | 评论 (0)编辑 收藏
 
硬件环境:SBC-2410X开发板(CPU:S3C2410X)
内核版本:2.6.11.1
运行环境:Debian2.6.8
交叉编译环境:gcc-3.3.4-glibc-2.3.3
注:本驱动移植是基于s3c2400 framebuffer 的驱动。

一、从网上将Linux内核源代码下载到本机上,并将其解压:
#tar jxf linux-2.6.11.1.tar.bz2
二、打开内核顶层目录中的Makefile文件,这个文件中需要修改的内容包括以下两个方面。
(1)指定目标平台。
 移植前:
  ARCH      ?= $(SUBARCH)
 移植后:
 ARCH            :=arm
(2)指定交叉编译器。
  移植前:
 CROSS_COMPILE  ?=
 移植后:
 CROSS_COMPILE   :=/opt/crosstool/arm-s3c2410-linux-gnu/gcc-3.3.4-glibc-2.3.3/bin/arm-s3c2410-linux-gnu-
注:这里假设编译器就放在本机的那个目录下。
三、添加并修改驱动程序源代码,这涉及到以下几个方面。
(1)、将开发板配带的LCD驱动程序s3c2400fb.c、s3c2400fb.h源程序放到drivers/video/目录下,并修改名字为s3c2410fb.c\s3c2400fb.h。
#cp s3c2400fb.c . drivers/video/s3c2410fb.c
(2)、 在s3c2410fb.c驱动程序里面添加:sbc_gpio_con_set()、sbc_gpio_pullup_set()、 sbc_gpio_function_set()的声明以及实现代码用以替代2.4.18代码中的write_gpio_bit()、 set_gpio_ctrl()函数,因为在2.4.18中这两个函数都是用指针的方式对CPU寄存器进行设置,而在2.6.11的驱动程序里面用了 __raw_writel()的方式对寄存器设置进行了封装。
在驱动程序移植过程中由于是基于S3C2400的驱动,所以主要的修改工作就是根据所用开发板的硬件修改相应的寄存器的设置。
主 要的修改有:s3c2410fb_mach_info结构,这个结果主要定义了所用显示屏的一些信息,如时钟、大小等;修改 c2400fb_activate_var函数中关于寄存器的设置,这个函数涉及到了S3C2410 LCD控制器的有关设置,这些寄存器的设置要根据所用的屏幕(TFT/CSTN)来进行设置;修改 s3c2400fb_set_controller_regs和s3c2400fb_lcd_init函数,这个函数涉及到了CPU与LCD的物理连接, 要根据LCD与CPU的具体连接来设置各个CPIO寄存器。
注:具体修改详见驱动程序。
(3)、修改arch/arm/mach-s3c2410/s3c2410.c,在s3c2410_iodesc结构中添加:IODESC_ENT(LCD)
注:以上添加的语句就是为了将CPU的LCD寄存器的物理地址映射到所指向的虚拟地址上去,上面的结构还定义了虚拟地址所占用的区间,并指定了该区间所指向的域(的属性)。
(4)、修改drivers/video目录下的Kconfig文件,在最后添加如下内容:
config FB_S3C2410
 tristate "S3C2410 LCD support"
 depends on FB && ARM && ARCH_S3C2410
 help
   This is a framebuffer device for the S3C2410 LCD Controller.   If you plan to use the LCD display with your S3C2410 system, say   Y here.
(5)、修改drivers/video目录下的Makefile文件,在最后添加如下内容:
obj-$(CONFIG_FB_S3C2410)        += s3c2410fb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o
四、配置、编译内核。在内核顶层目录当中键入:
  #make smdk2410_defconfig
由于2.6的内核默认就支持了S3C2410,所以就有一个默认的内核配置文件。里面只是包括了一个简单的配置,要使LCD驱动编译进内核,还要进行手工配置。
#make menuconfig

  Graphics support  --->    
       [*] Support for frame buffer devices
     [*] S3C2410 LCD support(BASED ON S3C2400)
将刚才添加的LCD驱动程序静态添加到内核当中。
最后进行内核编译。
#make
然后将镜像下载到开发板中去.
而且在LCD显示屏上的左上角会显示一个小企鹅的图标。查看设备文件。
[root@fa /]# ls -al /dev/fb/0
由此可见,LCD已经成功驱动,要测试驱动程序可以用 自己写(见附件test.c)在显示屏上显示任意颜色的线条。
问题解析
在LCD驱动程序移植的过程中,出现的问题主要就是由于寄存器设置不正确而造成的问题。
在 对驱动程序进行了函数替代以及改写了一些函数之后,将驱动程序编译进内核里,内核可以正确的编译连接并生成镜像文件,把镜像文件下载到开发板上,可以看到 drivers/video目录下看到系统注册的一个设备文件,但是在系统启动之后就是无法看见小企鹅的图标并且用测试程序去测试,LCD屏幕上也无法显 示任何有色的线条。通过多次查阅源代码,才发现原来就是CPU有关LCD的8个寄存器的设置以及对GPC和GPD寄存器的设置不正确。后来对这几个寄存器 进行了正确的设置就可以在系统启动之后看到小企鹅的图标。由于屏幕的背景是蓝色的,所以该图标的颜色显示不正确,但是用自己写的测试程序去画设置好的颜色 的线条,在屏幕上总能正确的显示出来,所以至于这个屏幕的颜色问题至今尚未解决。
posted @ 2006-03-01 21:47 zz 阅读(2473) | 评论 (0)编辑 收藏
 
 寂寞是人生的一种经历,是一种境界。匆匆地,我们经历着各种各样的生活,不经意间,你也许就会感觉或是深深的体味到一种忧郁和寂寞。学会生活,学会品味寂寞,走出寂寞,品味人生!成长的路上谁在与你同行……

                                                      ——————题记

(一)
我微笑着 冷漠地看着身边的每个人 那是一中歇斯底里的微笑 两种极端的交点 我已忘了怎样去哭 一个人坐在角落里 我面无表情地靠着冰冷的墙壁 汲取着手中热茶的唯一一点热量 看着嬉笑的人群 依旧微笑 我的悲伤没人发觉


(二)
 
血不断从手上的伤口中涌出来 我忘了痛 任新鲜的血液一滴滴地坠落在地板上 突然 我发现自己的血不是 鲜红色的 它的颜色与寂寞相同 我已忘了寂寞的颜色  打开门 我闻到了冬天的气息 而我的心却无法冬眠 在寒风中 赤裸的心灵被撕裂 痛到麻木 失去了感觉
 
(三)
 
我与寂寞同一国度 这或许是宿命 黑暗里我点起一支蜡烛 昏黄的火焰轻轻地跳动着 那是寂静的心跳 蜡烛然尽 黑暗吞噬了我 没有反抗 没有挣扎 我早已习惯了漆黑一片 独自走在深夜无人的街 我的世界仍然只有我自己 寒冷和无奈悄悄地蔓延 我与痛苦为伍
 
(四)
 
沸腾的白开水不停地冒着热气 我呆呆地看着它 思绪一点一点地飞离我的身体
我在想什么
我还能做什么
不断地问着自己 没有回答
我已经习惯了质疑自己
没有思想 却有呼吸 清晰地呼吸 我可以听得见自己心跳的声音 有力地一下一下 我到底还是活着的
 
(五)
 
打 开电脑 听见鼠标和键盘在宁静的夜里发出清脆的声音 qq上没有人 突然有人要求通过身份验证 在他的自我介绍一栏 我看见了一句颇有道理的话:"因为无聊所以上网 上了网却更寂寞!" 毫不犹豫地 我握着鼠标按下了"通过验证" 然后下线 关闭了电脑 躺在床上 双眼望着天花板 不停想着那句话 |原来 我早已习惯了无聊
 
(六)
 
我的生命没有意义 我的生活没有快乐 因为无奈 由于无情 没有目标 我以自己独特的方式活着 活在自己的世界中 走在路上 不去理会那些指点和冷眼 我依然从容坚定地向前走着 脸上还是挂着莫名的微笑 生命中的过客 何必念念不忘 那你是否也只是我的过客 想起你 我收起笑容 停下了脚步 抬头看看天 不是蓝色的 是寂寞的颜色 我无法强迫自己不去想你

(七)
 
窝在沙发上 用手不停地用力揉着太阳* 习惯性的偏头痛侵袭着我 桌上放着一杯冰水和止痛片 我没有去 碰她们 闭上眼睛 感受着疼痛带给我的压力 我已习惯了折磨自己 冰冷的手上忽然感觉到了温暖 原来是滚烫的泪水 我以为自己早已没有了眼泪
 
(八)
 
天使有翅膀 我没有 所以我不是天使
魔鬼有魔力 我没有 所以我不是魔鬼
我有的 是无奈 绝望和孤独的自由  
心底的希望和绝望激烈地斗争着 获胜的却是无奈 我已学会了接受无奈 想无奈妥协......
天使的缺点是太善良 魔鬼的缺点是太邪恶 我的缺点是太懦弱  

(九)
 
轻轻地闭上眼睛 使劲 贪婪地呼吸着没有你的空气 是自由 还是思念 我无法回答自己 原来没有你的空气如此地稀薄 我也学会了去适应空气的稀冷 笑过、哭过、吵过、闹过 如今我需要的 只是冷漠  

(十)
 
明 媚的阳光透过窗子 暖暖地照在我的身上 睁开眼睛 用手挡了挡刺眼的光线 蒙上被子 我准备继续被打断的美梦 美梦一旦被惊醒便无法在延续 气恼地从床上坐起身来 双手支着头 我的头发凌乱地垂了下来梦醒了 我对自己苦笑着摇摇头 带着绝望去接受现实 去迎接毫无意义的新的一天 我已习惯了一成不变的生活
 
(十一)
 
"背影是真的 人是假的 没什么执着 一百年前你不是你 我不是我 悲哀是真的 泪是假的 本来没因果 一百年后没有你也没有我" 恍惚之间我仿佛看见了你 伸出手 却只触碰到一片空白 我知道 一百年后你依然会是你 只是少了我的思念  
 
(十二)
 
风吹乱了我的头发 我不在意 慢慢地走在寒冬的街头 我麻木地移动着 有点模糊 隐隐约约看见你在我的前方 一步一步向前 你却离我越来越远 我拼命地向你狂奔 知道你在我的眼前消失 停下脚步大口大口地喘着粗气 我开始笑 笑自己的傻 笑自己的愚蠢
  
(十三)
 
房间里 书本堆满了整个桌子 我坐在堆积如山的书本面前 叹了口气 沉默了片刻 我突然站起来 伸手抓过那些令人乏味的破书 用力地朝四周的墙上扔去 然后把自己重重地摔在床上许久 我起身把那些书一本一本拾起来 重新放到桌子上 无可奈何地笑笑 把自己埋进了书堆
 
(十四)
 
趴在桌子上 我把脸深深地埋进自己的臂弯 眼泪竟这样涌了出来 我不断做着深呼吸 企图平抚心里的波动 可我控制不了自己
 
(十五)
 
我卸下了虚伪的微笑 摆出一张疲倦的脸 对你的眷恋依旧 只是我以学会了隐藏......
我的生活依然一如既往地平静 唯一的波动就是想你时的泪水 诱惑 我们的距离以光年计算

朋友 你是否也有寂寞的时候呢 请留下一点关于寂寞的感悟!

posted @ 2006-03-01 21:45 zz 阅读(670) | 评论 (2)编辑 收藏
 

1.在陷入情网的时候,有些人丢了头脑,另一些人丢了心。

When falling in love, some lose their head, others lose their heart.

2.幸福是良好的健康加上糟糕的记性

Happiness is good health and a bad memory.

3.唯有爱可以把黑暗囚在波港湾里。

 Love is the only thing that holds the dark at bay.

4.爱是两个人玩的双赢游戏。

Love is a game that two can play and both win.

5.爱不是从相互凝视之中获得的,倒是可以由同朝一个方向眺望而产生。这是生活给予我们的教训。

 Life has taught us that love does not consist in gazing at each other but in looking outward together in the same direction .

6.一位父亲能为他的孩子做的最要紧的事是爱他们的母亲。

The most important thing a father can do for his children is loving their mother.

7.爱是无尽的宽恕,是惯常的温柔目光

 Love is an act of endless forgiveness, a tender look which becomes a habit.

 8.人在爱中超越自我。

 To be in love is to surpass oneself.

9.男人的爱情门户在眼睛,女人则是在耳朵。

Love enters a man through his eyes; a woman through her ears.

10. (对女人来说) 有三类男人:智慧的情人,尊荣的情人,势利的情人。

 There are three classes of men: lovers of wisdom, lovers of honor, lovers of gain. 11.女人定规是要让人爱,而不是让人理解。

Women are meant to be loved, not to be understood.

12.没有丑女人,只有不懂得如何使自己显出美丽的女人。

There are no ugly women; there are only women who not know how to look pretty. 13.想要别人爱你的话,就要去爱别人,做一个可爱的人。

If you would be loved, love and be lovable.

14.如果有人爱你,你就该做个值得人爱的人。

 If you be loved, be worthy of love.

15.具备爱的无知和笨拙胜过缺乏爱的智慧和技巧。

Ignorance and bungling with love are better than wisdom and skill without love.

 16. 不成熟的爱说:“我爱你,因为我需要你。”成熟的爱说:“我需要你,因为我爱你。” Immature love says:“I love you because I need you。”Mature love says:“I need you because I love you"

17.爱不在深厚,乃在久长。

 Love me little, love me long.

18.没有信任就没有爱。 Where there is no trust, there is no love.

19.总结过去,放眼未来,把握现在。 Learn from the past, look to the future.Live in the present.

20.快乐起来吧!快乐才是明智的。

 Be happy. It is a way of being wise.

21.喜剧是悲剧加上时间。 Comedy is tragedy plus time.

22. 爱是春天有植物,用它的生机使一切散发出芬芳气息,即使是它所处身的废墟,也充满了希望。 Love is a springtime plant that perfumes everything with its hope, even the ruins to which it clings

 23.不要轻视那无论何时总显得快乐无忧的人,有些事情是你所不懂的,而他懂。

 Do not scorn the person who is perpetually happy. He does know something you don’t。

24.我是一个理想主义者,我不知道将往何处,但我正在赶路。

 I’m an idealist。I don’t know where I’m going, but I’m on my way。

25.我只晓得一个责任,那就是施爱。

I know of only one duty, and that is to love.

 26.对于人类生存问题,唯一令人满意的答案是:爱。

Love is the only satisfactory answer to the problem of human existence.

27.真理一从人的嘴里说出来就走了样。

Truth is fiction when spilled from the lips of a man.

28.一个对爱保持清醒的人无法去爱。 People who are sensible about love are incapable of it.

29.争吵总比寂寞好。 Contention is better than loneliness.

30.当面刺痛你的是你的好朋友。 Good friends stab you in the front.

31.如果有什么事情比被爱着更好的话,那就是爱着。

If there is anything better than being loved, it’s loving.

32.结婚是两个人的结合:其中一个总是忘了生日而另一个从来不会忘记。

Marriage is the alliance of two people, one of whom never remembers birthdays and the other who never forgets.

33.爱情就象一个砂漏,当脑子倒空的时候心就被填满了

Love is like an hourglass, with the heart filling up as the brain empties.

34.匮乏压抑了人的一些小欲望而强化了重大的欲望,就如风吹灭蜡烛而煽旺篝火。

Absence extinguishes small passions and increases great ones, as the wind blows out a candle,and fans a bonfire.

35. 我给你的忠告是:结婚吧!如果你找到一个好妻子,你是幸福的;如果妻子不贤,你则会成为哲学家。 My advice to you is to get married. If you find a good wife, you’ll be happy; if not, you’ll become a philosopher.

36.但愿坏习惯象心一样易碎。 If only bad habits could be broken as easily as hearts! 37.当爱被沾污时,金钱成了代用品。

 When love turns into dust, money becomes the substitution.

38.爱使人健全;奉献或接受皆然

 Love cures people; both the ones who give it, and the ones who receive it.

39.浪漫植根于幻觉之上,而当我们爱上某个人时,我们也爱上他为我们营造的幻觉。

Romance is built on illusion, and when we love someone, we love the illusion they have created for us.

40.恋爱与咳嗽无法掩藏。 Love and a cough cannot be hidden.

41.爱是一笔财富。 Love is wealth.

 42.爱情和理智不能并存。 It is impossible to love and be wise.

 43.男人喜欢追逐那些象弄湿了的香皂般令人难以捉摸的女人——哪怕是讨厌洗澡的男人。

Men like to pursue an elusive woman like a cake of wet soap——even men who hate baths. 4

4.世上没有女人的话,男人可以活得象神仙。

Were there no women, men might live like gods.

45.寻求男女平等的女性缺乏雄心壮志。

Women who seek to be equal with men lack ambition.

46.女性泪眼矇眬之时,视线受阻的是男性。

 When a female has tears in her eyes, the one who cannot see is the male

47.想象力比知识更重要。 Imagination is more important than knowledge.

48. 当你出生时,你啼哭而世界欣喜。善度你的一生,使得你离世的时候,世界哭泣而你欣喜。 When you were born, you cried and the world rejoiced. Live your life so that when you die, the world cries and you rejoice.

49.很早以前我就懂得,永远不要与猪争斗。因为你会弄得很脏,而猪就喜欢你这样。 I learned long ago, never to wrestle with a pig. You get dirty, and besides, the pig likes it.

posted @ 2006-03-01 21:41 zz 阅读(726) | 评论 (0)编辑 收藏
仅列出标题
共24页: First 16 17 18 19 20 21 22 23 24