内核(2.6.14) + 根文件系统 + Qt4 移植 for S3C2410

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

内核(2.6.14) + 根文件系统+ Qt4 移植for S3C2410
/*********************************************************/
LarryChan 阿牛哥(亮) QQ:85307887
chenliang_43@ /mimimomoll
2008.5.7. 桂林电子科技大学正平科技馆机器人中心
衷心感谢所有对本文有所帮助的人。

本文仅供交流,无意侵权
/*********************************************************/
TARGET
CPU: S3C2410X
SDRAM: HY57V561620(32MB) × 2
FLASH: K9F1208(64MB)
NET: CS8900
HOST
Linux Realse Version: Fecora Core 6
CrossCompiler: gcc-4.1.1/arm-linux-gcc-3.4.1
一、内核移植(2.6.14)
1 修改linux2.6.14下面的makefile文件
找到ARCH和CROSS_COMPILE,修改
ARCH ?= arm
CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux- (此处为你交叉编译的路径)
2 设置flash分区
在arch/arm/machs3c2410/devs.c文件中添加头文件
#include <linux/mtd/partitions.h>
#include <linux/mtd/nand.h>
#include <asm/arch/nand.h>
然后建立分区表
/* 一个Nand Flash总共64MB, 按如下大小进行分区分区大小自己看着办*/
static struct mtd_partition partition_info[] ={
{ /* 1MB */
name: "bootloader",
size: 0x00100000,
offset: 0x0,
},{ /* 3MB */
name: "kernel",
size: 0x00300000,
offset: 0x00100000,
}, { /* 40MB */
name: "root",
size: 0x02800000,
offset: 0x00400000,
}, { /* 20MB */
name: "user",
size: 0x00f00000,
offset: 0x02d00000,
}
};
/*加入Nand Flash分区*/
struct s3c2410_nand_set nandset ={
nr_partitions: 4, /*指明partition_info中定义的分区数目*/
partitions: partition_info, /* partition table分区信息表*/
};
/*建立Nand Flash芯片支持*/
struct s3c2410_platform_nand superlpplatform={
tacls:0,
twrph0:30,
twrph1:0,
sets: &nandset,
nr_sets: 1,
};
tacls, twrph0, twrph1的意思见S3C2410手册的63,
这3个值最后会被设置到NFCONF中,见S3C2410手册66.
sets: 支持的分区集 nr_set:分区集的个数
/*加入Nand Flash芯片支持到Nand Flash驱动
另外,还要修改此文件中的s3c_device_nand结构体变量,添加对dev 成员的赋值*/
struct platform_device s3c_device_nand = {
.name = "s3c2410-nand",
/* Device name */
.id = -1,
/* Device ID */
.num_resources = ARRAY_SIZE(s3c_nand_resource),
.resource = s3c_nand_resource, /* Nand Flash Controller Re gisters */
/* Add the Nand Flash device */
.dev = {
.platform_data = &superlpplatform
}
};
指定启动时初始化
arch/arm/machs-3c2410/mach-smdk2410.c文件
找到platform_device *smdk2410_devices[] __initdata函数,在该函数体最后加上一条语句:
&s3c_device_nand,
禁用禁止Flash ECC校验(有不同说法)
修改drivers/mtd/nand/s3c2410.c
找到chip->eccmode = NAND_ECC_SOFT;
改为chip->eccmode = NAND_ECC_NONE;
支持启动挂载devfs
修改fs/Kconfig文件
找到menu "Pseudo filesystems" 添加
config DEVFS_FS
bool "/dev file system support (OBSOLETE)"
default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS
3 Yaffs2文件系统支持
下载yaffs2.tar.gz源码包,解压源码,并进入目录执行
#./patch-ker.sh c /linux-2.6.14.1/
注:假定内核源码在/linux-2.6.14.1/
4 编译配置内核,首先先load一个默认的内核/linux-2.6.14/arch/arm/ configs/smdk2410_defconfig,在这个配置文件上改
Loadable module support >
[*] Enable loadable module support
[*] Automatic kernel module loading
System Type >
[*] S3C2410 DMA support
Boot options >
Default kernel command string:
noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0, 115200
Floating point emulation >
[*] NWFPE math emulation
Device Drivers >
Memory Technology Devices (MTD) >
[*] MTD partitioning support
#支持MTD分区,这样我们在前面设置的分区才有意义
[*] Command line partition table parsing
#支持从命令行设置flash分区信息,灵活
RAM/ROM/Flash chip drivers >
<*> Detect flash chips by Common Flash Interface (C FI) probe
<*> Detect nonCFI AMD/JEDECcompatible flash chips
<*> Support for Intel/Sharp flash chips
<*> Support for AMD/Fujitsu flash chips
<*> Support for ROM chips in bus mapping
NAND Flash Device Drivers >
<*> NAND Device Support
<*> NAND Flash support for S3C2410/S3C2440 SoC
Character devices >
[*] Nonstandard serial port support
[*] S3C2410 RTC Driver
File systems >
<> Second extended fs support #去除对ext2的支持
Pseudo filesystems >
[*] /proc file system support
[*] Virtual memory file system support (former shm fs)
[*] /dev file system support (OBSOLETE)
[*] Automatically mount at boot (NEW)
#这里会看到我们前先修改fs/Kconfig的成果,devfs已经被支持上了
Miscellaneous filesystems >
<*> Compressed ROM file system support (cramfs) #支持c ramfs
<*> YAFFS2 file system support #支持y affs2
Network File Systems >
<*> NFS file system support
二、CS8900网卡驱动的移植
1 cs8900.c和cs8900.h放到/drivers/net/arm/
2 在cs8900.c中的cs8900_probe()函数中,memset (&priv,0,sizeof (c s8900_t));函数之后添加如下两条语句:
__raw_writel(0x2211d110,S3C2410_BWSCON);
__raw_writel(0x1f7c,S3C2410_BANKCON3);
添加头文件#include <asm/arch/regs-mem.h>
3 修改drivers/net/arm/目录下的Kconfig文件,在最后添加如下内容:
config ARM_CS8900
tristate "CS8900 support"
depends on NET_ETHERNET && ARM && ARCH_SMDK2410
help
4 修改drivers/net/arm/目录下的Makefile文件,在最后添加如下内容:
obj-$(CONFIG_ARM_CS8900) += cs8900.o
5 在/arch/arm/mach-s3c2410/mach-smdk2410.c文件中,找到smdk2410_ iodesc[]结构数组,添加如下如下内容:{vSMDK2410_ETH_IO, 0x19000000, SZ _1M, MT_DEVICE}
添加头文件#inlcude <asm/arch/smdk2410.h>
其实这个就是下面的那个头文件的链接/include/asm-arm/arch-s3c2410/s mdk2410.h
6 在include/asm-arm/arch-s3c2410/目录下创建smdk2410.h文件,其内容为:
#ifndef _INCLUDE_SMDK2410_H_
#define _INCLUDE_SMDK2410_H_
#include <linux/config.h>
#define pSMDK2410_ETH_IO 0x19000000
#define vSMDK2410_ETH_IO 0xE0000000
#define SMDK2410_ETH_IRQ IRQ_EINT9
#endif // _INCLUDE_SMDK2410_H_
7 编译内核,选中所装驱动
#make menuconfig
Device Drivers >
Network device support --->
Ethernet (10 or 100Mbit) --->
[*]Ethernet (10 or 100Mbit)
<*>CS8900 support
三、LCD驱动移植
1 在arch/arm/mach-s3c2410/mach-smdk2410.c中添加
//lcd
#include <asm/arch/regs-lcd.h>
#include <asm/arch-s3c2410/fb.h>
//-------------------------------------------lcd
static struct s3c2410fb_mach_info s3c2410_lcd_info __initdata = { .fixed_syncs = 0,
.regs = {
//对于寄存器的设置是关键,可参考S3C2410X的手册
//和LCD技术手册中对于LCD技术指标的描述来进行设置。

//其中,寄存器值的宏定义在regs-lcd.h文件中。

/*
.lcdcon1 = S3C2410_LCDCON1_TFT16BPP
| S3C2410_LCDCON1_TFT | S3C2410_LCDCON1_CLKVAL(1),
.lcdcon2 = S3C2410_LCDCON2_VBPD(32)
| S3C2410_LCDCON2_VFPD(9) | S3C2410_LCDCON2_VSPW(1),
.lcdcon3 = S3C2410_LCDCON3_HBPD(47)
| S3C2410_LCDCON3_HFPD(15),
.lcdcon4 = S3C2410_LCDCON4_MVAL(13)
| S3C2410_LCDCON4_HSPW(95),
.lcdcon5 = S3C2410_LCDCON5_FRM565
| S3C2410_LCDCON5_INVVLINE | S3C2410_LCDCON5_HWSWP
| S3C2410_LCDCON5_PWREN | S3C2410_LCDCON5_INVVFRAME,
*/
.lcdcon1 = S3C2410_LCDCON1_TFT16BPP
| S3C2410_LCDCON1_TFT | S3C2410_LCDCON1_CLKVAL(1),
.lcdcon2 = S3C2410_LCDCON2_VBPD(1)
| S3C2410_LCDCON2_VFPD(2) | S3C2410_LCDCON2_VSPW(1),
.lcdcon3 = S3C2410_LCDCON3_HBPD(6)
| S3C2410_LCDCON3_HFPD(2),
.lcdcon4 = S3C2410_LCDCON4_MVAL(13)
| S3C2410_LCDCON4_HSPW(4),
.lcdcon5 = S3C2410_LCDCON5_FRM565
| S3C2410_LCDCON5_INVVLINE | S3C2410_LCDCON5_HWSWP
| S3C2410_LCDCON5_PWREN | S3C2410_LCDCON5_INVVFRAME, },
.lpcsel = 0x0,
.gpccon = 0xaaaaaaaa,
.gpccon_mask = 0xffffffff,
.gpcup = 0xffffffff,
.gpcup_mask = 0xffffffff,
.gpdcon = 0xaaaaaaaa,
.gpdcon_mask = 0x0,
.gpdup = 0xffffffff,
.gpdup_mask = 0xffffffff,
.width = 640,
.height = 480,
.xres = {640,640,640},
.yres = {480,480,480},
.bpp = {16,16,16},
};
static void __init smdk2410_lcd_init(void)
{
set_s3c2410fb_info(&s3c2410_lcd_info);
}
3 在文件最后MACHINE_END之前添加
.init_machine = smdk2410_lcd_init,
4 编译内核,选中所装驱动
#make menuconfig
Device Drivers >
Graphics support --->
<*> support for frame buffer devices
<*> S3C2410 LCD framebuffer support
Logo configuration ---> //开机画面的选择,可据个人需要更改
[*]Bootup logo
[*]Standard 224-color linux logo
5 开机画面的选择
首先把要开机Logo图片(png格式)放在linux2.6.14文件中的 drivers/vi deo/logo中,终端选择进入drivers/video/logo目录,进行以下操作:(假设开机图片名为linux.png)
# pngtopnm linux.png > linuxlogo.pnm
# pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
# pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm
# mv linuxlogo224.ppm logo_linux_clut224.ppm //替换原来的启动文件
四、USB驱动移植
1 在arch/arm/mach-s3c2410/mach-smdk2410.c中紧接着LCD的部分添加
//usb
#include <asm/arch/usb-control.h>
#include <asm/arch/regs-clock.h>
#include <linux/device.h>
#include <linux/delay.h>
//-------------------------------------------------usb
struct s3c2410_hcd_info usb_s3c2410_info = {
.port[0] = {
.flags = S3C_HCDFLG_USED
}
};
int smdk2410_usb_init(void) /* USB */
{
unsigned long upllvalue = (0x78<<12)|(0x02<<4)|(0x0 3);
printk("USB Control, (c) 2006 s3c2410\n");
s3c_device_usb.dev.platform_data = &usb_s3c2410_inf o;
while(upllvalue!=__raw_readl(S3C2410_UPLLCON))
{ __raw_writel(upllvalue,S3C2410_UPLLCON);
mdelay(1);
}
return 0;
}
2 在smdk2410_map_io函数最后添加
smdk2410_usb_init();
3 编译内核,选中所装驱动,配置USB鼠标键盘
#make menuconfig
Device Drivers >
USB support --->
<*> Support for Host-side USB
<*> OHCI HCD support
--- USB Input Devices
<*> USB Human Interface Devices (full HID) support
[*] HID input layer support
五、配置U盘支持
因为要优盘用到了SCSI 命令,所以我们先增加SCSI 支持。

在Device Drivers 菜单里面,选择SCSI device support
#make menuconfig
Device Drivers >
SCSI device support --->
[*] legacy /proc/scsi support
<*> SCSI disk support
然后选择<Exit>返回Device Drivers 菜单,再选择 USB support,按回车进入USB support菜单找到并选中
Device Drivers >
USB support --->
<*> USB Mass Storage support
[*] USB Mass Storage verbose debug
六、配置USB摄像头
#make menuconfig
Device Drivers >
Multimedia device --->
<*> Video for Linux
Video for Linux---> 选中其中两个选项然后选择<Exit>返回Device Drivers 菜单,再选择 USB support,按回车进入USB support菜单找到并选中
Device Drivers >
USB support --->
<*> USB OV511 Camera support
<*> USB SE401 Camera support
七、配置SD/MMC卡驱动 (不确定)
#make menuconfig
Device Drivers >
MMC/SD Card support --->
<*> MMC support
[*] MMC debugging
<*> MMC block device driver
八、根文件系统制作(Busybox1.9.2)
1 建一个目录rootfs用来装文件系统
2 # mkdir bin dev etc home lib mnt proc root sbin tmp usr var
# mkdir usr/bin usr/sbin
# mkdir mnt tmp var
# chmod 1777 tmp
# mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
# mkdir var/lib var/lock var/log var/run var/tmp
# chmod 1777 var/tmp
# mkdir home root boot
3 到系统 /dev 把所有的device打一个包,拷贝到 dev下面(最省事的做法);
或者使用mknod来自己建所需要的device,
举例:
# mknod -m 600 dev/console c 5 1
# mknod -m 666 dev/null c 1 3
4 应用程序定制
标准的Linux发行版本具有功能种类比较多的应用程序,这些应用程序占用的空间也很大,这对存储容量空间有限的开发板来说就不是理想的选择,在嵌入式开发过程中,经常用BusyBox来定制应用程序。

BusyBox具有shell的功能,它能提供系统所需要的大部分工具,包括编辑工具、网络工具、模块加载工具、压缩解压缩工具、查找工具、帐号密码管理工具和进程相关工具等。

目前BusyBox的最新版本是BusyBox-1.9.2版本,下载解压,切换到B usyBox的
根目录下,修改Makefile,找到ARCH和CROSS COMPILE修改如下:ARCH ?= arm
CROSS_COMPILE ?=/usr/local/arm/3.4.1/bin/arm-linux-
5 修改编译配置选项。

#make defconfig
#make menuconfig
在默认的选项前提之下,选项设置如下:
BusyBox Settings --->
Build Options ---> (采用静态编译)
[*] Build BusyBox as a static binary (no shared libs) Install optin--> [*] Don't use /usr //可以不选,选了则没有/usr 文件夹 Busybox Library Tuning ---> (2) MD5: Trade Bytes for Speed [*] Faster /proc scanning code (+100 bytes) [*] Support for /etc/networks [*] Support for /etc/networks [*] Additional editing keys [*] vi-style line editing commands [*] History saving [*] Tab completion [*] Username completion [*] Fancy shell prompts Linux Module Utilities ---> [ ] Support version 2.2.x to 2.4.x Linux kernels //不能选 [*] Support version 2.6.x Linux kernels Linux System Utilities ---> [*] Support for the old /etc/mtab file //不确定 Miscellaneous Utilities ---> [*] devfs(obsolete) //不确定 [*] Use devfs names for all device(obsolete) //不确定 Shell ---> Choose your default shell(ash)--> ---ash //下面的选项全部选择 6 编译 busybox make install 在 busybox/_install 目录下会生成我们需要的文件。

修改_install/bin/busybox 的属性。

为 4755 chmod 4755 ./_install/bin/busybox 必须要修改属性,否则在 busybox 中很多命令会受限 将编译好的 busybox 拷贝到/bin 下面。

拷贝时带上参数-arf 或者-dpR。

除了 busybox 外,所有其他的命令都是他的 link /sbin 下面也是 busybox 的 link, /usr/bin 下面也是 busybox 的 link, /usr/sbin 下面放着所有编译完的可执行文件,具体就不多说了 7 非常重要之/lib,务必重视 /lib 的库其实就是进行 busybox 编译的库,即交叉编译器的库,我们 这里使用的是 3.4.1(位置 /usr/local/arm/3.4.1)。

# cd /usr/local/arm/3.4.1/arm-linux/lib


# > > > > #
for file in libc libcrypt libdl libm libpthread libresolv libutil do cp $file-*.so rootfs/lib (复制到你做的文件系统的/lib 目录下) cp -d $file.so.[*0-9] rootfs/lib done cp -d ld*.so* rootfs/lib
8 系统配置文件的建立 系统配置文件放在/etc 目录下 (1)profile 文件 #Set search library path export LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH #Set user path PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH alias ll='ls -l' #Set PS1 USER=”`id –un`” LOGNAME=$USER PS1=’[\u@\h \W]\$ ’ PATH=$PATH export USER LOGNAME PS1 PATH (2)fstab 文件 proc /proc proc defaults 0 0 none /tmp ramfs defaults 0 0 mdev /dev ramfs defaults 0 0 sysfs /sys sysfs defaults 0 0 (3)inittab 文件 ::sysinit:/etc/init.d/rcS ::respawn:-/bin/sh ::ctrlaltdel:/bin/umount -a -r ::shutdown:/bin/umount -a -r ::shutdown:/sbin/swapoff -a (4)创建/etc/init.d 文件夹和 rcS,在 rcS 中添加 #! /bin/sh # 设置主机名,需要在 etc 建立文件 host ./etc/host hostname ${HOSTNAME} # mount all filesystem defined in “fstab” echo "# mount all..........." /bin/mount -a echo "# Starting mdev........." /bin/echo /sbin/mdev > /proc/sys/kernel/hotplug


mdev –s (5)host 文件 HOSTNAME=Hasotech (6)创建 mdev.conf 文件 (空文件) (7)复制主机/etc/下面的文件 passwd, group, shadow 文件到/etc # cp /etc/group . # cp /etc/passwd . # cp /etc/shadow . 修改 passwd 中用户使用的 shell 名称。

FC6 上默认的为 bash,而 vivi 只支持 ash。

root:x:0:0:root:/root:/bin/bash --> root:x:0:0:root:/root:/bin/ash (8)修改各文件和文件夹的权限 # chmod 755 /rootfs/etc/init.d/rcS # chmod 755 /rootfs/etc/host 9 yaffs 文件系统映像的制作 使用 mkyaffsimg 程序可以把一个目录做成一个 yaffs 映像文件, 然后使用 u sb 下载到 板子上。

进入文件系统目录层,使用以下命令。

#mkyaffsimg rootfs rootfs.img 这样就会在该目录下生成 rootfs.img 映像文件,下载到开发板运行即可。

10 cramfs 文件系统映像的制作(cramfs 压缩率比较高) 在 FTP 中下载 cramfs-1.1.tar.gz,解压到自己设定的目录下,如: tar xzvf cramfs-1.1.tar.gz –C /home/ 进入生成有 mkcramfs 文件的目录下(一定要进入此目录,否则会提示找不 到该命令) 输入命令:#./mkcramfs / rootfs rootfs.cramfs 在当前目录下即生成 rootfs.cramfs 映像文件。

到此 Linux 操作系统移植完 毕。


移植(Qtopia4.2.2) 九、Qt 移植(Qtopia4.2.2)
Qt 和 Qtopia 简介 (自己的理解,不对之处还请见谅) Qt 特点是“一次编写,处处编译”。

Qt 是在 PC 机上安装安装使用的;Qtopia Core 是基于嵌入式 Linux 的面向 单一应用的嵌入式产品开发平台,即要移植到开发板上使用的;Qt/E 是面向嵌 入式系统的 Qt 版本,而 Qtopia 最初是构建于 Qt/E 之上的类似桌面系统的应用 程序。

最初 Qtopia 和 Qt/E 是两种不同的程序,但从版本 4.1 以后,将 Qt/E 并入 了 Qtopia,改称为 Qtopia Core。

1


接下来要进行的 Qt 移植就是指对 Qtopia Core 的移植,我们的版本是 Qtop ia4.2.2, 即对其库的移植。

移植的步骤是这样的, 首先在 PC 机上安装 Qtopia4. 2.2,然后把其中的库放入我们制作的根文件系统的/lib 之中,最后设置环境变 量。

以下为详细内容:
下载 Qtopia Core 4 的源代码,建议到 下载, qtopia -core-opensource-src-4.2.2.tar.gz,解压 # tar zxvf qtopia-core-opensource-src-4.2.2.tar.gz # cd qtopia-core-opensource-src-4.2.2 # ./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 4,8,12,16 -no-qt3support # gmake (这个过程最漫长...) # gmake install (需 root 权限) 设置 Qt 的环境变量,修改$HOME/.bash_profile 加入 # vi $HOME/.bash_profile 添加 PATH=/usr/local/Trolltech/QtopiaCore-4.2.2-arm/bin:/usr/local/Tro lltech/Qt-4.2.2/bin:$PATH 后面的是 Qt for X11 的环境变量设置,执行使立即生效 # source $HOME/.bash_profile # echo $PATH # which qmake //可查看已经添加成功 3 把 qtopia-core-opensource-src-4.2.2 的库放入制作的根文件系统的/ lib 之中 安装好的 Qtopia 在目录/usr/local/Trolltech/QtopiaCore-4.2.2-arm 下,进入其目录。

可以看到/lib 文件,其中包括一个 fonts 文件夹,里面是一 些字体,内容很多也很占空间(72M 左右),因为我们的目标板一般 flash 很小, 64M 左右,所以我们只选用很常用或者自己觉得好看的字体放入。

首先在/建立一个文件夹——Qtopia,里面存放入库和字体文件的 fonts 文 件夹, # cd /usr/local/Trolltech/QtopiaCore-4.2.2-arm # mkdir Qtopia 然后把/lib 下的文件复制到其中 # cp –arf /usr/local/Trolltech/QtopiaCore-4.2.2-arm/lib/* /usr /local/Trolltech/QtopiaCore-4.2.2-arm/Qtopia 删掉多余的字体文件 # cd /usr/local/Trolltech/QtopiaCore-4.2.2-arm/Qtopia/fonts 只留下 cour.pfa 和 cursor.pfa 最后把 Qtopia 拷贝到刚刚我们做好的文件系统的/lib 下面
2


# cp –arf /usr/local/Trolltech/QtopiaCore-4.2.2-arm/Qtopia fs/lib 4
/root
设置环境变量 在文件系统中,关键要设置环境变量,才能让 Qt4 的程序找到我们移植的 Qt 4 的库,真正跑起来。

设置环境变量可分两种,与 PC 机上一样,可以在命令行 下设置,还有一种方法是在/etc/profile 文件中设置,让开发板一启动就自动 设置,添加命令如下: PATH=/usr/bin:/usr/sbin:$PATH:./ export FRAMEBUFFER='/dev/fb/0' export TSDATAFILE='/mnt/yaffs/minigui/tsdata.dat' export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/lib/Qtopia:$LD_LIBRARY_P ATH export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0" 关键是 LD_LIBRARY_PATH,这个设置让系统知道 Qt 的库的位置,即/usr/li b/Qtopia,还有一个关键是 QWS_DISPLAY,因为我们在运行程序时,有一个参数 是 qws,例如:./analogclock –qws ,设置好 QWS_DISPLAY 后才能在显示屏上 显示按我们要求比例大小的图像。

5 测试代码 进入/usr/local/Trolltech/QtopiaCore-4.2.2-arm/examples/tutorial/t1 # cd /usr/local/Trolltech/QtopiaCore-4.2.2-arm/examples/tutorial/
t1 # qmake -project # qmake # make 生成二进制文件 t1,通过适合的方式拷贝到文件系统中,执行 ./t1 –q ws 可以显示 helloworld
十、Qt4 编程(fc6—使用 KDevelop 联合开发) 编程(fc6— 联合开发) (fc6
1 Qt/X11 的安装 下载 Qtopia Core 4 的源代码,建议到 下载, qt-x11 -opensource-src-4.2.2.tar.gz,解压 # tar xvzf qt-x11-opensource-src-4.2.2.tar.gz # cd qt-x11-opensource-src-4.2.2 # ./configure # make # su –c “make install” 设置 Qt 的环境变量,修改$HOME/.bash_profile 加入 # vi $HOME/.bash_profile 添加


PATH=/usr/local/Trolltech/Qt-4.2.2/bin:/usr/local/Trolltech/Qtopi aCore-4.2.2-arm/bin: $PATH 执行使立即生效 # source $HOME/.bash_profile # echo $PATH # which qmake //可查看已经添加成功 fc6 下使用 KDevelop 开发 Qt4 在安装 fc6 时使用全部安装,特别是开发软件的安装,就默认带 KDev elop3.3.4 (1) 启动 KDevelop KDE/C++ (2) 选择工程 | 新建工程 | 显示全部工程模版 | QMakeProject | Qt4 Application | 输入工程名 | 默认下一步 (3) 工程 | 工程选项 | C++特点设置 | Qt | 选定 Enable Qt options | 选择 Qt4 | 选择 Qt4 的路径(即 QMake Binary 和 Designer Binary) (4) 分别执行“构建”“编译”“执行”3 步 使用 KDevelop 开发 Qt4,完全要靠输入代码完成,工作量大,一些工作易重 复或加大工作量,所以推荐下面这种方法:KDevelop 与 Qt4 的 Qt Designer 联 合开发 3 KDevelop 与 Qt4 的 Qt Designer 联合开发(推荐) (1)用 Qt Designer 设计出.ui 文件,比如工程文件位置为/root/hello/h ello.ui (2)进入工程目录进行编译 # cd /root/hello //生成 ui_hello.h 头文件,以备后面开发之用,我们写的程序依靠此文 件 # uic –o ui_hello.h hello.ui # qmake –project # qmake (3)启动 KDevelop KDE/C++, 选择 Project | Import Existing Proje ct 选择我们刚才在生成的/root/hello/hello.pro 文件,把文件导入 KDevelo p (4)书写 main.cpp 文件及需要的其他文件完成编辑工作。

main.cpp 和其 他文件的书写很有讲究,这里不再详述,请参考 Qt4 的帮助文档。

2
PS: PS:vivi 设置
1 SBC2410x 的 VIVI 已经被友善之臂自动加入了 USB 功能,这个小功能省 去了我们很多麻烦。

所以建议大家先把板子的 USB 驱动装上。

重新分区 分区名称 分区大小


vivi 128k param 64k kernel 3M root 40M user 15M 在 vivi 命令行下输入如下命令 part show 然后输入: part del <name> 参数 name 为各个显示分区的名字,一直到把所有分区都删除为止,然后依 次输入: part add vivi 0x0 0x20000 0 part add param 0x20000 0x10000 0 part add kernel 0x00100000 0x00300000 0 part add root 0x00400000 0x02800000 0 part add user 0x02d00000 0x00f00000 0 part save 现在分区就已经完毕了。

vivi 的分区一定要与内核里的分区设置一致,即与 arch/arm/machs3c2410/ devs.c 里 static struct mtd_partition partition_info[]分区一致,至少是 kernel 后的地址一致,这个需特别注意。

2 设置启动参数 执行: param show 就可以见到你现在的所有 VIVI 参数,其中 linux command line 为传递给 l inux 内核的启动参数。

因 2.4 与 2.6 在参数方面有变动,所以输入如下命令: param set linux_cmd_line “noinitrd root=/dev/mtdblock3 init=/linu xrc console=ttySAC0,115200” param save
衷心感谢所有对本文有所帮助的人。

本文仅供交流,无意侵权
特别感谢 1 kenn lijing 2 Jisong 裴智松 大连东软信息学院 QQ: 165179274 2 WeiBing /logs/4384745.html#cmt 3 Kevin 随风 Email: zhang8083@ QQ: 21744485


/u2/63560/showart_511924.html 4 jiuzhuaxiong /u2/63379/showart_515773. html /2007/09/29/10920.html 5 桂林电子科技大学 杨谋刚硕士论文 6 刘溯奇 / 7 linux_mig_release.pdf





相关文档
最新文档