### 基于TX2440开发板的Qtopia4.2.4手机平台移植手册
#### 一、概述
本手册旨在详细介绍如何基于TX2440开发板移植Qtopia 4.2.4手机平台,包括所需环境配置、编译流程以及常见问题解决方法等内容。Qtopia是一款开源的嵌入式Linux图形界面框架,适用于构建用户界面丰富的设备,如智能手机和平板电脑等。本手册所涉及的操作系统平台为Linux RedHat 9.0,而开发板则选用了ARM TX2440。
#### 二、环境配置
##### 1. 交叉编译器
- **版本**:arm-linux-gcc4.1.2,支持EABI。
- **来源**:OpenMoko提供的交叉编译器。
- **注意事项**:在尝试使用4.3.2版本和3.4.1版本的交叉编译器过程中,发现前者虽能正常编译但在运行时会出现段错误;后者则导致部分程序无法正常运行。最终确定使用4.1.2版本可以有效避免这些问题。
##### 2. 操作系统平台
- **版本**:Linux RedHat 9.0。
- **说明**:RedHat 9.0是一个稳定且兼容性良好的发行版,适合用于开发环境搭建。
##### 3. 开发板平台
- **型号**:ARM TX2440A。
- **内存**:64MB NAND Flash + 64MB SDRAM。
#### 三、移植步骤
##### 1. 文件系统大小考虑
- **根文件系统大小**:约70MB。
- **内存限制**:如果使用的是64MB的NAND Flash和64MB的SDRAM,则可能无法容纳整个系统。因此,推荐采用挂载NFS的方式启动Qtopia。
- **参考资料**:《NFS服务器配置》。
- **其他选项**:自行裁剪Qtopia,使其大小减小至60MB以下。
##### 2. 触摸屏校正程序
- **程序**:tslib-1.4。
- **移植参考**:《tslib-1.4移植手册》。
- **位置**:根文件系统的`/usr/local`目录下。
##### 3. 编译目录设置
- **安装目录**:编译Qtopia时,不建议在源码目录下直接编译。应创建专门的源代码目录与编译目录。
- **命令**:
- 创建源代码目录:`mkdir qtopia`;将源码包解压并重命名为`source`。
- 创建编译目录:`mkdir target`;在该目录下执行`../source/configure`即可编译`source`目录下的源码。
- 创建安装目录:`mkdir –p /usr/local/qtopia`。此目录需同时存在于虚拟机及根文件系统中,作为QPE的启动目录。
##### 4. 修改QtopiaCore宏定义
- **目录**:`source/qtopiacore/qconfig-qpe.h`。
- **操作**:
- 注释掉关于鼠标光标的宏定义,确保程序运行时触摸屏中央会出现光标。
- 将修改后的`qconfig-qpe.h`文件复制到`global`目录。
- 在`qtopiacore/qt/src/corelib/global/qfeatures.h`文件中,注释掉关于`QT_NO_QWS_CURSOR`的定义。
- 同样,在`qtopiacore/qt/src/corelib/global/qglobal.h`中,注释掉相应的定义。
##### 5. 源码包中头文件名称修改
- **目录**:`src/libraries/qtopiabase`。
- **操作**:
- 复制`custom-linux-cassiopeia-g++.h`文件为`custom-linux-arm-g++.h`。
- 复制`custom-linux-cassiopeia-g++.cpp`文件为`custom-linux-arm-g++.cpp`。
##### 6. 时区问题解决
- **解决方案一**:在根文件系统上创建`/usr/share/zoneinfo`目录,并将虚拟机目录下相应文件夹中的所有文件拷贝过去。
- **解决方案二**:修改源代码,使得QPE指向自定义的时区文件夹。具体来说,在`src/libraries/qtopia/qtimezone.cpp`文件的第114行修改`/usr/share/zoneinfo`路径为实际存放时区信息的路径。
#### 四、总结
通过上述步骤,我们可以成功地基于TX2440开发板移植Qtopia 4.2.4手机平台。需要注意的是,在实际操作过程中可能会遇到各种细节问题,例如交叉编译器的选择、文件系统的优化以及软件包的适配等。此外,对于时区问题的处理也是不可忽视的一个环节,正确地配置时区信息可以确保系统时间的准确性,从而避免因时间错误引发的一系列问题。希望本手册能够为从事嵌入式开发的技术人员提供有价值的指导。