328
- 1 - Mini6410 用 户 手 册 版本:2010-09-23 (本手册正在不断更新中,建议您到网站下载最新版本) copyright@2010

Mini6410 um chinese

  • Upload
    chandra

  • View
    2.040

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mini6410 um chinese

第 - 1 - 页

Mini6410 用 户 手 册 版本:2010-09-23

(本手册正在不断更新中,建议您到网站下载 新版本)

copyright@2010

Page 2: Mini6410 um chinese

第 - 2 - 页

版 权 声 明

本手册版权归属广州友善之臂计算机科技有限公司(以下简称“友善之

臂”)所有, 并保留一切权力。非经友善之臂同意(书面形式),任何单位及个人不

得擅自摘录本手册部分或全部,违者我们将追究其法律责任。

敬告:

在售开发板的手册会经常更新,请在 http://www.arm9.net网站查看 近更

新,并下载 新手册,不再另行通知。

Page 3: Mini6410 um chinese

第 - 3 - 页

更新说明: 日期 说明 2010-09-23 主要更新简介:

1- Mini6410 升级内存至 256M(今后作为标配), 同时售价增加 30 元 2- Superboot 升级: 可以自动探测 128M/256M 内存,可以烧写超过内存大小的 image 文件,

比如你可以把 ubuntu 制作成 ubi 格式的映像烧写到 Nand Flash 中运行,运行效果比在 SD 卡

中要好很多 3- u-boot 升级: 根据不同的情况,根目录下分别有如下四种配置,你可以使用这些配置编

译出你所需要的 U-boot.bin - mini6410_sd_config-ram128 : 支持从 SD 卡启动,适用于 RAM 为 128M 的 Mini6410 - mini6410_nand_config-ram128 : 支持从 Nand Flash 启动,适用于 RAM 为 128M 的

Mini6410 - mini6410_sd_config-ram256 : 支持从 SD 卡启动,适用于 RAM 为 256M 的 Mini6410 - mini6410_nand_config-ram128 : 支持从 Nand Flash 启动,适用于 RAM 为 256M 的

Mini6410 4- Nboot 升级: 根据不同的内存版本,有两个源代码包(分别带 ram128 或 ram256 尾 )。 5- WinCE 中增加了 TCPMP 播放器,支持 Mpeg4/H.263/H.264 硬解码,效果流畅,完美发

挥 6410 的多媒体 MFC 特性。 6- WINCE 中增加了 SD WiFi 的使用方法(5.1.16 章节) 7- 增加了串口触摸屏控制器配件及相应的驱动和使用说明,可以在大尺寸触摸屏上实现精

准触摸,支持 Linux/WinCE/Android/Ubuntu 8- 首家移植提供 QtE-4.7.0,内含一键式移植脚本 build 和 mktarget

(Nokia 于 2010-9-21 日正式发布 Qt-4.7.0) 2010-09-03 本次更新简介:

- 增加了 GPRS Modem 拨号上网,及短信单发、群发实用程序,基于 Qtopia-2.2.0 - 修正了接 LCD2VGA 模块时,无法输出 800x600 和 640x480 的 bug 使用 GPRS Modem 拨号上网和发送短信的说明分别见 4.1.17 和 4.1.18 章节

2010-08-14 本次更新简介: - 升级到 Android 2.1 - 增加 Android 系统中 CMOS 摄像头驱动及使用说明 - 增加 Android 系统中 SD-WiFi 驱动及使用说明 - Superboot 升级为 1031 版本,增加了[i]选项中 Nand Flash 实际容量显示

2010-08-04 本次更新简介:

Page 4: Mini6410 um chinese

第 - 4 - 页

- U-boot 中加入了关闭了背光处理,这样开机时就不会在 LCD 上出现彩条了 - Linux 内核中完善了 4 个串口驱动,现在可以使用 Qtopia 的串口助手进行测试了 - 采用了 新的 QtE-4.6.3 - 修正了无法通过 NFS 启动 Linux 的问题 - WindowsCE6 中增加了 OpenGL 示例(只有可执行程序,且运行于 800x480 分辨率的 LCD) - WindowsCE6 增加了英文,简体中文,繁体中文示例工程,images\WindowsCE6 目录中有

相应的映像文件 2010-06-29 本手册第一次发布

Page 5: Mini6410 um chinese

第 - 5 - 页

目 录

Mini6410 用 户 手 册....................................................................................................................................- 1 - 第一章 Mini6410 开发板介绍........................................................................................................................... - 11 - 

1.1 Mini6410 开发板简介........................................................................................................................... - 11 - 1.1.1 Mini6410 开发板外观................................................................................................................- 12 - 1.1.2 Mini6410 开发板硬件资源特性................................................................................................- 12 - 1.1.3 机械尺寸图 ...............................................................................................................................- 14 - 1.1.4 Linux系统资源特性...................................................................................................................- 14 - 1.1.5 WindowsCE 6.0 系统资源特性 .................................................................................................- 16 - 1.1.6 Android系统资源特性 ...............................................................................................................- 17 - 1.1.7 Ubuntu系统特性 ........................................................................................................................- 17 - 

1.2 布局及跳线 ...........................................................................................................................................- 18 - 1.2.1 跳线说明 ...................................................................................................................................- 18 - 1.2.2 接口布局 ...................................................................................................................................- 18 - 

1.3 接口定义及资源说明 ..........................................................................................................................- 19 - 1.3.1 系统内存分配图 .......................................................................................................................- 19 - 1.3.2 电源接口和插座 .......................................................................................................................- 20 - 1.3.3 串口 ...........................................................................................................................................- 20 - 1.3.4 USB接口 ....................................................................................................................................- 21 - 1.3.5 网络接口 ...................................................................................................................................- 22 - 1.3.6 音频接口 ...................................................................................................................................- 22 - 1.3.7 电视输出口 ...............................................................................................................................- 23 - 1.3.8 JTAG接口 ...................................................................................................................................- 23 - 1.3.9 用户LED....................................................................................................................................- 24 - 1.3.10 用户按键 .................................................................................................................................- 24 - 1.3.11 双LCD接口 .............................................................................................................................- 25 - 1.3.12 ADC输入 ..................................................................................................................................- 26 - 1.3.13 PWM控制蜂鸣器.....................................................................................................................- 26 - 1.3.14 红外接收 .................................................................................................................................- 27 - 1.3.15 I2C-EEPROM...........................................................................................................................- 27 - 1.3.16 SD卡 .........................................................................................................................................- 27 - 1.3.17 SDIO-II/SD-WiFi接口 .............................................................................................................- 28 - 1.3.18 CMOS CAMERA接口 .............................................................................................................- 28 - 1.3.19 GPIO接口 .................................................................................................................................- 29 - 1.3.20 系统总线接口 .........................................................................................................................- 30 - 

第二章 Mini6410 快速上手体验.......................................................................................................................- 32 - 2.1 开发板设置及连接 ..............................................................................................................................- 32 - 

2.1.1 启动模式选择 ...........................................................................................................................- 32 - 2.1.2 外部接口连接 ...........................................................................................................................- 33 - 2.1.3 设置超级终端 ...........................................................................................................................- 33 - 

Page 6: Mini6410 um chinese

第 - 6 - 页

2.2 烧写BIOS到SD卡 ................................................................................................................................- 36 - 2.2.1 BIOS简介 ...................................................................................................................................- 37 - 2.2.1 基于WindowsXP烧写BIOS ......................................................................................................- 39 - 2.2.2 基于Windows7 烧写BIOS ........................................................................................................- 41 - 

2.3 体验快速安装、更新、恢复和运行系统...........................................................................................- 45 - 2.3.1 快速安装WindowsCE系统 .......................................................................................................- 45 - 2.3.2 快速更新为Android系统 ..........................................................................................................- 46 - 2.3.3 快速恢复为Linux系统 ..............................................................................................................- 46 - 2.3.4 在SD卡中直接运行Ubuntu系统(500M) ..................................................................................- 46 - 2.3.5 关于配置文件FriendlyARM.ini................................................................................................- 47 - 

2.4 BIOS菜单功能介绍 ..............................................................................................................................- 51 - 2.2.1 安装USB下载驱动....................................................................................................................- 52 - 2.2.2 功能主菜单说明 .......................................................................................................................- 58 - 

第三章 安装和更新或运行系统 .......................................................................................................................- 59 - 3.1 使用USB一键安装系统.......................................................................................................................- 59 - 

3.1.1 一键安装Linux系统(yaffs2 或UBIFS格式) .............................................................................- 60 - 3.1.2 一键安装WinCE系统................................................................................................................- 67 - 3.1.3 一键安装Android(yaffs2 或UBIFS格式).................................................................................- 73 - 

3.2 使用SD卡脱机快速安装系统 .............................................................................................................- 79 - 3.2.1 快速安装Linux(yaffs2 格式)....................................................................................................- 79 - 3.2.2 快速安装Linux(UBIFS格式) .....................................................................................................- 80 - 3.2.3 快速安装WindowsCE6 .............................................................................................................- 81 - 3.2.4 快速安装Android(yaffs格式) ...................................................................................................- 81 - 3.2.5 快速安装Android(UBIFS格式) ...............................................................................................- 82 - 3.2.6 快速安装Ubuntu(UBIFS格式) .................................................................................................- 82 - 

3.3 从SD卡直接运行各个系统 .................................................................................................................- 83 - 3.3.1 直接运行SD卡中的Linux.........................................................................................................- 83 - 3.3.2 直接运行SD卡中的WindowsCE ..............................................................................................- 83 - 3.3.3 直接运行SD卡中的Android .....................................................................................................- 84 - 3.3.4 直接运行SD卡中的Ubuntu ......................................................................................................- 84 - 

第四章 Linux开发指南......................................................................................................................................- 85 - 4.1 初试Linux之图形界面Qtopia 2.2.0 和Qt4 系统 (预装).....................................................................- 85 - 

4.1.1 触摸屏校正 ...............................................................................................................................- 86 - 4.1.2 主要界面说明 ...........................................................................................................................- 86 - 4.1.3 播放Mp3....................................................................................................................................- 87 - 4.1.4 播放视频 ...................................................................................................................................- 88 - 4.1.5 图片浏览 ...................................................................................................................................- 88 - 4.1.6 自动装载SD卡和优盘 ..............................................................................................................- 89 - 4.1.7 计算器 .......................................................................................................................................- 90 - 4.1.8 命令终端 ...................................................................................................................................- 90 - 4.1.9 文件浏览器 ...............................................................................................................................- 91 - 

Page 7: Mini6410 um chinese

第 - 7 - 页

4.1.10 网络设置 .................................................................................................................................- 91 - 4.1.11 Ping测试 ...................................................................................................................................- 92 - 4.1.12 浏览器 .....................................................................................................................................- 93 - 4.1.13 LED测试...................................................................................................................................- 94 - 4.1.14 EEPROM读写测试 ..................................................................................................................- 94 - 4.1.15 PWM控制蜂鸣器.....................................................................................................................- 95 - 4.1.16 串口助手 .................................................................................................................................- 96 - 4.1.17 使用GPRS Modem拨号上网 ..................................................................................................- 98 - 4.1.18 使用GPRS Modem单发和群发短信 ....................................................................................- 101 - 4.1.19 录音 .......................................................................................................................................- 103 - 4.1.20 使用USB摄像头拍照............................................................................................................- 103 - 4.1.21 CMOS摄像头预览拍照 .........................................................................................................- 103 - 4.1.22 LCD测试 ................................................................................................................................- 104 - 4.1.23 背光控制 ...............................................................................................................................- 105 - 4.1.24 A/D转换..................................................................................................................................- 105 - 4.1.25 按键测试 ...............................................................................................................................- 105 - 4.1.26 触摸笔测试 ...........................................................................................................................- 106 - 4.1.27 条码扫描 ...............................................................................................................................- 106 - 4.1.28 语言设置 ...............................................................................................................................- 107 - 4.1.29 设置时区-日期-时间-闹钟 ...................................................................................................- 108 - 4.1.30 屏幕旋转 ...............................................................................................................................- 109 - 4.1.31 设置开机自动运行程序 ....................................................................................................... - 110 - 4.1.32 关于关机 ............................................................................................................................... - 111 - 4.1.33 看门狗 ...................................................................................................................................- 112 - 4.1.34 启动QtE-4.7.0........................................................................................................................- 113 - 

4.2 通过串口终端操作开发板 ................................................................................................................ - 114 - 4.2.1 播放mp3 ...................................................................................................................................- 115 - 4.2.2 如何中止程序的运行 ............................................................................................................. - 116 - 4.2.3 使用优盘/移动硬盘 ............................................................................................................... - 116 - 4.2.4 使用SD卡 ................................................................................................................................- 118 - 4.2.5 如何通过串口与PC互相传送文件......................................................................................... - 119 - 4.2.6 控制板上的LED......................................................................................................................- 121 - 4.2.7 测试板上的按键 ......................................................................................................................- 122 - 4.2.8 串口测试 .................................................................................................................................- 123 - 4.2.9 测试蜂鸣器 .............................................................................................................................- 124 - 4.2.10 控制LCD的背光 ...................................................................................................................- 125 - 4.2.11 测试I2C-EEPROM .............................................................................................................- 125 - 4.2.12 AD转换测试...........................................................................................................................- 126 - 4.2.13 测试TV-OUT.........................................................................................................................- 127 - 4.2.14 测试多媒体播放 ...................................................................................................................- 127 - 4.2.15 CMOS摄像头动态预览 .........................................................................................................- 128 - 

Page 8: Mini6410 um chinese

第 - 8 - 页

4.2.16 使用telnet上bbs......................................................................................................................- 128 - 4.2.17 如何设置网络以访问互联网 ...............................................................................................- 130 - 4.2.18 如何设置MAC地址 ..............................................................................................................- 132 - 4.2.19 如何使用Telnet登录开发板..................................................................................................- 134 - 4.2.20 使用ftp传递文件 ...................................................................................................................- 135 - 4.2.21 通过网页控制板上的LED....................................................................................................- 135 - 4.2.22 如何挂接使用网络文件系统NFS ........................................................................................- 136 - 4.2.23 设置并保存系统实时时钟 ....................................................................................................- 137 - 4.2.24 如何掉电保存数据到Flash...................................................................................................- 137 - 4.2.25 设置开机自动运行程序 ........................................................................................................- 138 - 4.2.26 如何使用命令进行屏幕截图 ...............................................................................................- 139 - 4.2.27 查看开发板内存信息 ...........................................................................................................- 139 - 

4.3 安装并设置Fedora9 ...........................................................................................................................- 141 - 4.3.1 图解安装Fedora 9.0 ................................................................................................................- 141 - 4.3.2 添加新用户 .............................................................................................................................- 155 - 4.3.3 访问Windows系统中的文件 ..................................................................................................- 158 - 4.3.4 配置网络文件系统NFS服务 ..................................................................................................- 163 - 4.3.5 建立交叉编译环境 .................................................................................................................- 166 - 

4.4 解压安装源代码及其他工具 ............................................................................................................- 169 - 4.4.1 解压安装源代码 .....................................................................................................................- 169 - 4.4.2 解压创建目标文件系统 .........................................................................................................- 171 - 4.4.3 解压安装文件系统映像工具 .................................................................................................- 171 - 4.4.4 解压安装LogoMaker ...............................................................................................................- 172 - 

4.5 配置和编译U-boot .............................................................................................................................- 174 - 4.5.1 配置编译支持NAND启动的U-boot.......................................................................................- 174 - 4.5.2 配置编译支持SD卡启动的U-boot .........................................................................................- 174 - 4.5.3 U-boot使用说明 .......................................................................................................................- 175 - 

4.6 配置和编译内核 ................................................................................................................................- 175 - 4.7 配置和编译busybox...........................................................................................................................- 176 - 4.8 制作目标板文件系统映象 ................................................................................................................- 177 - 

4.8.1 制作yaffs2 文件系统映像 ......................................................................................................- 177 - 4.8.2 制作ubifs文件系统映像 .........................................................................................................- 178 - 4.8.3 制作ext3 文件系统映像..........................................................................................................- 178 - 

4.9 嵌入式Linux应用程序示例 ...............................................................................................................- 178 - 4.9.1 Hello,World! .............................................................................................................................- 179 - 4.9.2 LED测试程序...........................................................................................................................- 183 - 4.9.3 测试按键 .................................................................................................................................- 184 - 4.9.4 PWM控制蜂鸣器编程示例 .....................................................................................................- 186 - 4.9.5 I2C-EEPROM编程示例 ...........................................................................................................- 189 - 4.9.6 串口编程示例 .........................................................................................................................- 192 - 4.9.7 UDP网络编程 ..........................................................................................................................- 198 - 

Page 9: Mini6410 um chinese

第 - 9 - 页

4.9.8 数学函数库调用示例 .............................................................................................................- 203 - 4.9.9 线程编程示例 .........................................................................................................................- 204 - 4.9.10 管道应用编程示例-网页控制LED ......................................................................................- 206 - 4.9.11 基于C++的Hello,World......................................................................................................... - 211 - 

4.10 嵌入式Linux驱动程序示例 ..............................................................................................................- 212 - 4.10.1 Hello,Module- 简单的嵌入式Linux驱动程序模块 ...........................................................- 212 - 4.10.2 LED驱动程序.........................................................................................................................- 217 - 4.10.3 按键驱动程序 .......................................................................................................................- 220 - 

4.11 编译Qtopia-2.2.0 ..............................................................................................................................- 226 - 4.11.1 解压安装源代码....................................................................................................................- 226 - 4.11.2 编译和运行x86 版本的Qtopia-2.2.0 ....................................................................................- 226 - 4.11.3 编译和运行arm版本的Qtopia-2.2.0 .....................................................................................- 227 - 

4.12 编译QtE-4.7.0 ..................................................................................................................................- 229 - 4.12.1 解压安装源代码 ...................................................................................................................- 229 - 4.12.2 编译和运行arm版本的QtE-4.7.0..........................................................................................- 229 - 

第五章 WindowsCE 6.0 开发指南 ..................................................................................................................- 231 - 5.1 体验WindowsCE6 ..............................................................................................................................- 231 - 

5.1.1 触摸屏校正 .............................................................................................................................- 231 - 5.1.2 查看系统信息 .........................................................................................................................- 232 - 5.1.3 设置实时时钟并保存 .............................................................................................................- 233 - 5.1.4 用户存储空间 .........................................................................................................................- 233 - 5.1.5 使用优盘和SD卡 ....................................................................................................................- 234 - 5.1.6 播放mp3 ..................................................................................................................................- 234 - 5.1.7 测试LED..................................................................................................................................- 235 - 5.1.8 测试按键 .................................................................................................................................- 235 - 5.1.9 测试PWM控制蜂鸣器 ............................................................................................................- 236 - 5.1.10 录音测试 ...............................................................................................................................- 236 - 5.1.11 串口助手 ................................................................................................................................- 237 - 5.1.12 CMOS摄像头预览拍照 ......................................................................................................- 239 - 5.1.13 硬解码播放器 .......................................................................................................................- 239 - 5.1.14 TV-OUT测试 ..........................................................................................................................- 240 - 5.1.15 设置网络参数以连接互联网 ...............................................................................................- 241 - 5.1.16 使用SD无线网卡 ..................................................................................................................- 242 - 5.1.17 与PC同步(基于Windows7)...................................................................................................- 244 - 

5.2 建立WindowsCE 6.0 开发环境 .........................................................................................................- 247 - 5.2.1 安装Visual Studio 2005 及补丁 ..............................................................................................- 249 - 5.2.2 安装Windows CE 6.0 及补丁 .................................................................................................- 264 - 5.2.3 安装第三方软件腾讯QQ........................................................................................................- 286 - 5.2.4 安装BSP及内核工程示例 ......................................................................................................- 293 - 

5.3 配置和编译WindowsCE 6.0 内核及Bootloader................................................................................- 296 - 5.3.1 编译缺省内核示例工程 .........................................................................................................- 297 - 

Page 10: Mini6410 um chinese

第 - 10 - 页

5.3.2 在BSP中修改LCD类型及串口输出功能 ..............................................................................- 301 - 5.3.3 在BSP中配置使用串口触摸屏 ..............................................................................................- 302 - 5.3.4 关于BootLoader ......................................................................................................................- 304 - 5.3.5 创建SDK .................................................................................................................................- 306 - 5.3.6 安装SDK .................................................................................................................................- 307 - 

第六章 Android开发指南 ................................................................................................................................- 311 - 6.1 安装和使用Android ........................................................................................................................... - 311 - 

6.1.1 安装Android ............................................................................................................................ - 311 - 6.1.2 旋转屏幕显示 .........................................................................................................................- 312 - 6.1.3 播放mp3 ..................................................................................................................................- 313 - 6.1.4 使用SD-WiFi上网 ...................................................................................................................- 314 - 6.1.5 使用CMOS摄像头 ..................................................................................................................- 317 - 

6.2 建立Android开发环境 .......................................................................................................................- 319 - 6.2.1 关于开发平台和交叉编译器 .................................................................................................- 319 - 6.2.2 解压安装源代码 .....................................................................................................................- 319 - 

6.3 配置和编译U-boot .............................................................................................................................- 320 - 6.4 配置和编译Linux内核.......................................................................................................................- 321 - 6.5 从源代码开始创建Android ...............................................................................................................- 321 - 6.6 制作安装或运行文件系统映像 ........................................................................................................- 322 - 

6.6.1 制作yaffs2 格式的文件系统映像...........................................................................................- 322 - 6.6.2 制作UBIFS格式文件系统映像 ..............................................................................................- 323 - 6.6.3 制作ext3 格式的文件系统映像..............................................................................................- 323 - 

第七章 嵌入式Ubuntu安装及使用说明 .........................................................................................................- 324 - 7.1 安装运行Ubuntu ................................................................................................................................- 324 - 

7.1.1 把Ubuntu安装到开发板中运行 .............................................................................................- 324 - 7.1.2 使用SD卡运行Ubuntu ............................................................................................................- 324 - 

7.2 建立Ubuntu开发环境 ........................................................................................................................- 326 - 7.2.1 关于开发平台和交叉编译器 .................................................................................................- 326 - 7.2.2 解压安装内核源代码 .............................................................................................................- 326 - 

7.3 制作安装或运行文件系统映像 ........................................................................................................- 327 - 7.3.1 制作UBIFS格式文件系统映像 ..............................................................................................- 327 - 7.3.2 创建EXT3 格式的Ubuntu系统映像文件...............................................................................- 328 - 

7.4 更多信息 ............................................................................................................................................- 328 - 

Page 11: Mini6410 um chinese

第 - 11 - 页

第一章 Mini6410 开发板介绍

1.1 Mini6410 开发板简介

Mini6410 是一款十分精致的低价高品质一体化 ARM11 开发板,由广州友善之臂设计、

生产和发行销售。它采用三星 S3C6410 作为主处理器,在设计上承袭了 Mini2440“精于心,

简于形”的风格,而且布局更加合理,接口更加丰富,十分适用于开发 MID、汽车电子、工

业控制、导航系统、媒体播放等终端设备;也可适用于 高校教学、嵌入式培训、个人研究学

习和 DIY 等。 具体而言,Mini6410 具有双 LCD 接口、4 线电阻触摸屏接口、100M 标准网络接口、

标准 DB9 五线串口、Mini USB 2.0-OTG 接口、USB Host 1.1、3.5mm 音频输出口、在板麦克

风、标准 TV-OUT 接口、弹出式 SD 卡座、红外接收等常用接口;另外还引出 4 路 TTL 串口、

CMOS Camera 接口、40pin 总线接口、30pin GPIO 接口(可复用为 SPI、I2C、中断等,另含 3路 ADC、1 路 DAC)、SDIO2 接口(可接 SD WiFi)、10pin Jtag 接口等;在板的还有蜂鸣器、

I2C-EEPROM、备份电池、AD 可调电阻、8 按键(可引出)、4LED 等;所有这些,都极大地

方便了开发者的评估和使用,再加上我们按照 Mini6410 尺寸专门定制的 4.3"LCD 模块,真正

做到让您“一手掌握所有”! 我们还充分地发挥了 6410 支持 SD 卡启动这一特性,使用我们精心研制的 Superboot,

无需连接电脑,只要把目标文件拷贝到 SD 卡中(可支持高达 32G 的高速大容量卡),你就可

以 在 开 发 板 上 极 快 极 简 单 地 自 动 安 装 各 种 嵌 入 式 系 统

(WindowsCE6/Linux/Android/Ubuntu/uCos2 等);甚至无需烧写,就可以在 SD 卡上直接运行它

们,这一切,简直太酷了! 用户可以到我们网站浏览 新通知及下载更新 新的手册和系统网址:

http://www.arm9.net

Page 12: Mini6410 um chinese

第 - 12 - 页

1.1.1 Mini6410 开发板外观

1.1.2 Mini6410 开发板硬件资源特性

CPU 处理器 - Samsung S3C6410A,ARM1176JZF-S 核,主频 533MHz, 高 667Mhz

DDR RAM 内存 - 在板标配 256M DDR RAM(可选 128M)

- 32bit 数据总线

FLASH 存储 - 在板 128M/256M/1GB Nand Flash, 掉电非易失

LCD 显示 - 板上集成 4 线电阻式触摸屏接口,可以直接连接四线电阻触摸屏

Page 13: Mini6410 um chinese

第 - 13 - 页

- 支持黑白、4 级灰度、16 级灰度、256 色、4096 色 STN 液晶屏,尺寸从 3.5 寸到 12.1 寸,

屏幕分辨率可以达到 1024x768 象素;

- 支持黑白、4 级灰度、16 级灰度、256 色、64K 色、真彩色 TFT 液晶屏,尺寸从 3.5 寸到

12.1 寸,屏幕分辨率可以达到 1024x768 象素;

- 标准配置为 4.3” 真彩 LCD,分别率 480x272,带触摸屏;

标准接口资源

- 1 个 100M 以太网 RJ45 接口(采用 DM9000 网卡芯片)

- 1 个 DB9 式 RS232 五线串口(另有 4 个 TTL 电平串口,见下)

- 1 个 mini USB Slave-OTG 2.0 接口

- 1 路 3.5mm 立体声音频输出接口,1 路在板麦克风输入

- 1 路 TV-OUT 输出接口

- 1 路 USB Host 1.1 接口

- 1 个标准 SD 卡座

- 1 路红外接收头

- 5V 直流电压输入

在板即用资源

- 1 个 I2C-EEPROM 芯片(256byte),主要用于测试 I2C 总线

- 4 个 用户 LED(绿色)

- 8 个侧立按键(中断式资源引脚,带引出座)

- 1 个可调电阻,用于 ADC 转换测试

- 1 个 PWM 控制蜂鸣器

- 板载实时时钟备份电池

外扩接口资源

- 4 个串口座(TTL 电平, 2.0mm 间距,直插式卡座)

- 10pin 2.0mm 间距 JTAG 接口

- 双 LCD 接口(41pin 迷你座,可兼容 mini2440 LCD 接口,和 40pin 2.0mm 双排座)

- 20pin 2.0mm 间距 SDIO 接口(可接 SD WiFi,其中还包含 1 路 SPI 和 I2C 接口)

- 20pin 2.0mm 间距 CMOS 摄像头接口

- 30pin 2.0mm 间距 GPIO 接口

- 40pin 2.0mm 间距系统总线接口

Page 14: Mini6410 um chinese

第 - 14 - 页

- 10pin 2.0mm 间距贴片按键引出座(含 8 路中断式按键引脚,电源和地)

PCB 规格尺寸

- 6 层高密度电路板,采用沉金工艺生产

- 110 x 110(mm)

操作系统支持

- Linux2.6.28.6 + Qtopia-2.2.0 + QtE-4.7.0

- WindowsCE.NET 6.0(R3)

- Android 2.1

- Ubuntu-0910

1.1.3 机械尺寸图

如下图为 Mini6410 的定位孔坐标图,单位为 mm

1.1.4 Linux 系统资源特性

内核版本

Page 15: Mini6410 um chinese

第 - 15 - 页

- Linux 2.6.28.6 引导程序(BootLoader) - U-boot-1.6.1: 提供完整的源代码,根据配置文件不同,分为 Nand 和 SD 启动两个版本 - Superboot: 不提供源代码,仅烧写在 SD 卡中运行使用 支持的文件系统

- yaffs2 : 可读写的文件系统,推荐使用 - UBIFS: 可读写的文件系统,推荐使用 - cramfs: 压缩的只读文件系统,不在线更新数据时推荐使用 - Ext2/3: 标准 PC Linux 所采用的文件系统 - Fat32: 支持长文件名 - NFS: Linux 系统专有的网络文件系统,开发驱动程序及应用程序时方便使用 - UBIFS: 专门针对 Flash 设备而发展的一种文件系统,主要提供了卷管理的功能 驱动程序(以下驱动均以源代码方式提供)

- 4 串口标准驱动 - DM9000 驱动程序 - 音频驱动(WM9714) - RTC 驱动(可掉电保存时间) - 4 个用户 LED 灯驱动 - USB Host 驱动 - LCD 驱 动 ( 支 持 3.5”, 4.3”, 7” , 8”, LCD2VGA1024x768, LCD2VGA800x600,

LCD2VGA640x480, EZVGA800x600 等显示驱动) - 四线触摸屏驱动 - 免驱的万能 USB 摄像头驱动 - USB 键盘和鼠标驱动、优盘、移动硬盘 - SD 卡驱动,可支持高速 SD 卡, 大容量可达 32G - I2C-EEPROM - LCD 背光驱动 - 看门狗驱动(看门狗复位相当于冷复位) - 多媒体驱动(包括 Jpeg,fimc,MFC, 2D/3D 加速,TVENC,TVSCALER 等) - CMOS Camera 驱动 - Spi 驱动 基本应用及服务测试程序

- busybox1.13(Linux 工具集,包含常用 Linux 命令等) - Telnet、Ftp、inetd(网络远程登录工具及服务) - boa(web server) - madplay(基于控制台的 mp3 播放器) - snapshot(基于控制台的抓图软件) - ifconfig、ping、route 等(常用网络工具命令) 图形系统

- Qtopia-2.2.0 : 提供平台源代码,分为 x86 和 arm 两个版本 - QtE-4.7.0 : 提供平台源代码,为 arm 版本

Page 16: Mini6410 um chinese

第 - 16 - 页

实用的 Qtopia 测试程序

说明:以下图形界面程序均为友善之臂独立自主开发,不提供源代码 - ADC 转换测试 - LED 控制 - Buttons 按键测试 - I2C-EEPROM 读写测试 - LCD 测试 - Ping 测试 - 万能免驱 USB 摄像头动态预览并拍照 - 录音机 - Web 浏览器 - 看门狗测试 - 网络设置(可保存参数) - 背光控制 - 语言设置:可设置中英文 - 随手写:主要用于测试触摸笔的准确性 - MMC/SD 卡和优盘自动挂载和卸载 - Qt4 切换器 交叉编译器 - arm-none-linux-gnueabi-4.4.1

1.1.5 WindowsCE 6.0 系统资源特性

版本

- WindowsCE Embedded 6.0 BSP 特性

- 支持快速开机启动(15 秒以内) - 通过 USB 可以烧写普通的 bmp 文件作为开机画面 - 通过修改 Nboot 头文件可以方便的自定义进度条的颜色、位置、长宽,以及开机图片的

位置、背景 - CMOS 摄像头驱动 - LED 驱动 - 8 按键驱动 - PWM 控制蜂鸣器驱动 - LCD 驱 动 ( 支 持 3.5”, 4.3”, 7” , 8”, LCD2VGA1024x768, LCD2VGA800x600,

LCD2VGA640x480, EZVGA800x600 等显示驱动,修改方法十分简单) - RTC 驱动 - DM9000 网卡驱动 - 大容量高速 SD 卡驱动 - 触摸屏驱动

Page 17: Mini6410 um chinese

第 - 17 - 页

- 音频输入与输出驱动:基于 WM9714 芯片 - 优盘、USB 键盘、USB 鼠标等驱动 - 串口驱动: 目前仅有 COM2,3,4 经过测试 - 多媒体驱动(包括 Jpeg,fimc,2D/3D 加速,MFC, TVENC,TVSCALER 等) 应用软件特性 - 超级播放器 TCPMP,完美支持硬解码,可流畅播放 H.264/263, MPEG4 视频 - 方便使用的串口助手 - 按键测试程序 - LED 测试程序 - PWM 测试程序 - 录音测试程序 - OpenGL 测试程序 - 小画笔:可用来测试触摸屏的准确性 - 开机自动运行设置程序:可十分方便的把用户程序设置为开机自动运行

1.1.6 Android 系统资源特性

所用 Linux 内核版本 - Linux-2.6.28.6 Bootloader - U-boot-1.6 支持的文件系统 - FAT32: 支持 FAT32/FAT 格式的优盘和 SD 卡,SDHC 卡 - YAFFS2: 支持通过 USB 下载或 SD 卡安装 YAFFS2 文件系统映像 - UBIFS: 支持通过 USB 下载或 SD 卡安装 UBIFS 文件系统映像 - EXT2/3: 支持从 SD 卡运行 EXT3 文件系统映像 Android 系统版本及特性 - Android 2.1 - 支持 SD-WiFi 无线上网 - 支持 GPS 定位 - 支持 CMOS 摄像头

1.1.7 Ubuntu 系统特性

所用 Linux 内核版本 - Linux-2.6.28.6 Bootloader - Superboot: 支持从 SD 卡直接加载内核和文件系统运行 支持的文件系统

Page 18: Mini6410 um chinese

第 - 18 - 页

- FAT32: 支持 FAT32/FAT 格式的优盘和 SD 卡,SDHC 卡 - EXT2/3: 支持从 SD 卡运行 EXT3 文件系统映像 - UBIFS: 支持 SD 卡安装 UBIFS 文件系统映像

1.2 布局及跳线

1.2.1 跳线说明

本开发板上没有任何跳线选择,这样的设计更加易于方便使用。

1.2.2 接口布局

Mini6410 接口布局如下图所示,它在十分紧凑的 110 x 110mm 面积上精致安排了开

发者常用的各种常用接口,并且还引出了供开发测试需要的富余的 IO 口和总线接口。 说明:下图中带有橙色原点的位置均为相应接口座的第一脚位置。

Page 19: Mini6410 um chinese

第 - 19 - 页

1.3 接口定义及资源说明

本小节详细介绍了开发板上每个接口或模块的引脚定义和占用的 CPU 资源,光盘中

另有本开发板的完整原理图和封装库(分为 pdf 格式和 Protel99SE 格式),以供参考使用。

1.3.1 系统内存分配图

以下表格摘自 S3C6410 数据手册 2.2 Address Size(MB) Description

0x0000_0000 0x07FF_FFFF 128MB 启动镜像区 0x0800_0000 0x0BFF_FFFF 64MB 内部 ROM

Page 20: Mini6410 um chinese

第 - 20 - 页

0x0C00_0000 0x0FFF_FFFF 128MB Stepping Stone(8KB) 0x1000_0000 0x17FF_FFFF 128MB 0x1800_0000 0x1FFF_FFFF 128MB DM9000AEP 0x2000_0000 0x27FF_FFFF 128MB 0x2800_0000 0x2FFF_FFFF 128MB 0x3000_0000 0x37FF_FFFF 128MB 0x3800_0000 0x3FFF_FFFF 128MB 0x4000_0000 0x47FF_FFFF 128MB 0x4800_0000 0x4FFF_FFFF 128MB 0x5000_0000 0x5FFF_FFFF 256MB 0x6000_0000 0x6FFF_FFFF 256MB

128M DDR RAM

1.3.2 电源接口和插座

本开发板采用 5V 直流电源供电,提供了 2 个电源输入口,CN1 为附带的 5V 电源适

配器插座,白色的 CON8 为 4Pin 插座,方便板子放入封闭机箱时连接电源。 CON5 引脚定义

1 VDD5V 2 GND 3 GND 4 VDDIN

说明:此种接法方便当采用引线连接时,电源开关 S1 也是有效的。

1.3.3 串口

S3C6410 本身总共有 4 个串口 UART0、1、2、3,其中 UART0 和 1 为五线功能串口,,

其他两个为三线串口。 在本开发板上,五线的 UART0 已经经过 RS232 电平转换,它对应于 COM0,你可以

通过附带的交叉串口线和 PC 互相通讯。 为了方便开发,我们把这 4 个串口通过 CON1-4 分别从 CPU 直接引出,其中 UART1

为五线引出。 CON1,CON2,CON3, CON4 在开发板上的位置和原理图中的连接定义对应关系如

下图所示。

Page 21: Mini6410 um chinese

第 - 21 - 页

CON1,3,4 引脚定义(TTL) CON2 引脚定义(TTL) COM0 引脚定义(RS232) 1 TXD 1 RTSn 1 NC 2 RXD 2 CTSn 2 RSRXD 3 5V 3 TXD 3 RSTXD 4 GND 4 RXD 4 NC 5 5V 5 GND GND 6 NC 7 RSCTSn 8 RSRTSn 9 NC 说明:NC 代表悬空

1.3.4 USB 接口

本开发板具有两种 USB 接口,一个是 USB Host(1.1),它和普通 PC 的 USB 接口是一

样的,可以接 USB 摄像头、USB 键盘、USB 鼠标、优盘等常见的 USB 外设;另外一种是

miniUSB(2.0),它同时具备 OTG 功能,我们一般使用它来下载程序到目标板,当开发板装载

了 WinCE 系统时,它可以通过 ActiveSync 软件和 Windows 系统进行同步,当开发板装载了

Linux 系统时,目前尚无相应的驱动和应用。 miniUSB 的接口定义如下:

miniUSB 引脚定义

5 GND

4 OTGID

3 D+

2 D-

1 Vbus

USB Host 的接口定义如下:

Page 22: Mini6410 um chinese

第 - 22 - 页

USB Host 引脚定义

1 5V

2 D-

3 D+

4 GND

1.3.5 网络接口

本开发板采用了 DM9000 网卡芯片,它可以自适应 10/100M 网络,RJ45 连接头内部

已经包含了耦合线圈,因此不必另接网络变压器,使用普通的网线即可连接本开发板至你的

路由器或者交换机。

1.3.6 音频接口

S3C6410 支持 I2S/PCM/AC97 等音频接口,本开发板采用的是 AC97 接口,它外接了

WM9714 作为 CODEC 解码芯片。 音频系统的输出为开发板上的常用 3.5mm 绿色孔径插座,为方便学习开发使用,我

们直接在板上提供了麦克风输入,注意:本开发板并非专业的录音设备,音频输入的处理电

路佷简单,录音时尽量把音源靠近麦克风。

Page 23: Mini6410 um chinese

第 - 23 - 页

1.3.7 电视输出口

S3C6410 带有 2 路电视输出接口,本开发板把其中一路 DACOUT0 经过放大输出,

你可以直接使用 AV 线把它接到普通电视上使用,另一路则直接从 CPU 引出到 CON6 的第 30脚。

注意:当使用 DACOUT0 时,需要把电视机设置为 CVBS 输入模式

1.3.8 JTAG 接口

当开发板从贴片厂下线,里面是没有任何程序的,这时我们一般可以通过 JTAG 接口

烧写第一个程序,但 S3C6410 可以支持 SD 卡启动,也就是说可以把 Bootloader 烧写到 SD卡中启动系统,从这个意义上来讲,JTAG 已经变得无从重要。

JTAG 接口在开发中另一个 常见的用途是单步调试,不管是市面上常见的 JLINK 还

是 ULINK,以及其他的仿真调试器, 终都是通过 JTAG 接口连接的。标准的 JTAG 接口是

4 线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线,加上电

源和地,一般总共 6 条线就够了;为了方便调试,大部分仿真器还提供了一个复位信号。 因此,标准的 JTAG 接口是指是否具有上面所说的 JTAG 信号线,并不是 20Pin 或者

10Pin 等这些形式上的定义表现。这就如同 USB 接口,可以是方的,也可以扁的,还可以是

其他形式的,只要这些接口中包含了完整的 JTAG 信号线,都可以称为标准的 JTAG 接口。

本开发板提供了包含完整 JTAG 标准信号的 10 Pin JTAG 接口,各引脚定义如图。 说明:对于打算致力于 Linux 或者 WinCE 开发的初学者而言,JTAG 接口基本是没有

任何意义和用途的,因为大部分开发板都已经提供了完善的 BSP,这包括 常用的串口和网

络以及 USB 通讯口,当系统装载了可以运行的 Linux 或者 WinCE 系统,用户完全可以通过

这些高级操作系统本身所具备的功能进行各种调试,这时是不需要 JTAG 接口的;即使你可

以进行跟踪,但鉴于操作系统本身结构复杂,接口繁多,单步调试犹如大海捞针,毫无意义

可言。想一想你手头使用的 PC 机就知道了,或许你从没有见过甚至听过有谁会在 PC 主板上

插一个仿真器,来调试 PCI 这样接口的 WindowsXP 或者 Linux 驱动。这就是为什么你经常见

到或者听到那么多人在讲驱动“移植”,因为大部分人都是参考前辈的实现来做驱动的。

Page 24: Mini6410 um chinese

第 - 24 - 页

JTAG 接口定义 2 4 6 8 10

3.3V nRESET TDO GND GND 1 3 5 7 9

3.3V nTRST TDI TMS TCK

1.3.9 用户 LED

LED 是开发中 常用的状态指示设备,本开发板具有 4 个用户可编程 LED,它们直

接与 CPU 的 GPIO 相连接,低电平有效(点亮),详细的资源占用如下表。

LED4 LED3 LED2 LED1

GPIO GPK7 GPK6 GPK5 GPK4

1.3.10 用户按键

本开发板总共有 8 个用户测试用按键,它们均从 CPU 中断引脚直接引出,属于低电

平触发,这些引脚也可以复用为 GPIO 和特殊功能口,为了方便用户把它们引出作为其他用

途,这 8 个引脚也通过 CON12 引出,8 个按键和 CON12 的定义如下:

CON12 1 2 3 4 5 6 7 8 按键 K1 K2 K4 K4 K5 K6 K7 K8

Page 25: Mini6410 um chinese

第 - 25 - 页

对应的中断 EINT0 EINT1 EINT2 EINT3 EINT4 EINT5 EINT19 EINT20可复用为

GPIO GPN0 GPN1 GPN2 GPN3 GPN4 GPN5 GPL11 GPL12

说明:CON12.9 为电源(3.3V),CON12.10 为地(GND)

1.3.11 双 LCD 接口

为了方便用户使用,本开发板带有 2 个 LCD 接口座:LCD2 和 LCD3。其中,LCD2是 0.5mm 间距的 41Pin 座,它和 Mini2440 的 LCD 接口座兼容;LCD3 为 2.0mm 间距的 40Pin插针座,因为 LCD2.41 为 GND,所以 LCD3 虽然缺少一个脚,但并不会影响使用。

LCD 接口座中包含了常见 LCD 所用的大部分控制信号(行场扫描、时钟和使能等),和完整的 RGB 数据信号(RGB 输出为 8:8:8,即 高可支持 1600 万色的 LCD);为了用户

方便试验,还引出了 PWM 输出,和复位信号(nRESET),其中 LCD_PWR 是背光开关控制信

号。 另外,37、38、39、40 为四线触摸屏接口,它们可以直接连接普通的四线电阻触摸

屏使用,如图。

LCD2 & LCD3 引脚说明 LCD2 & LCD3 引脚说明

1 5V 2 5V 3 VD0 4 VD1 5 VD2 6 VD3 7 VD4 8 VD5 9 VD6 10 VD7 11 GND 12 VD8 13 VD9 14 VD10 15 VD11 16 VD12 17 VD13 18 VD14 19 VD15 20 GND 21 VD16 22 VD17 23 VD18 24 VD19 25 VD20 26 VD21 27 VD22 28 VD23

Page 26: Mini6410 um chinese

第 - 26 - 页

29 GND 30 GPE0/LCD_PWR 31 PWM1/GPF15 32 nRESET 33 VDEN/VM 34 VSYNC 35 HSYNC 36 VCLK 37 TSXM 38 TSXP 39 TSYM 40 TSYP

41 GND

1.3.12 ADC 输入

本开发板总共引出 4 路 A/D(模数转换)转换通道,其中 AIN0 连接到了开发板上的可

调电阻 W1;AIN1,2,3 则通过 CON6 接口座的 27, 28, 29 引脚引出(见 1.3.19 一节)。S3C6410的 AD 转换可以配置为 10-bit/12-bit,详见数据手册第 39 章。

为了方便操作,W1 特意放置在靠近电路板边缘的地方,但使用 4.3”LCD 的时候,即

使上面加了屏,也不会被遮住,如图。

1.3.13 PWM 控制蜂鸣器

本开发板的蜂鸣器 Buzzer 是通过 PWM 控制的,原理图如下所示,其中 PWM0 对应

GPF14,该引脚可通过软件设置为 PWM 输出,也可以作为普通的 GPIO 使用。

Page 27: Mini6410 um chinese

第 - 27 - 页

1.3.14 红外接收

本开发板带有一个红外遥控接收头,采用了接收头型号为 IRM3638(或兼容),它连接

使用了 EINT12 作为接收引脚,如图。

1.3.15 I2C-EEPROM

本开发板具有一个直接连接 CPU 之 I2C 信号引脚的 EEPROM 芯片 AT24C08,它的

容量有 256 byte,在此主要是为了供用户测试 I2C 总线而用,它并没有存储特定的参数。

1.3.16 SD 卡

S3C6410 带有 2 路 SDIO 接口,其中 SDIO0 通常被用作普通 SD 卡使用,本开发板通

过 CON7 把它引出为标准的弹出式 SD 卡座,如图,该接口可以支持 SDHC,也就是高速大

容量卡。

Page 28: Mini6410 um chinese

第 - 28 - 页

1.3.17 SDIO-II/SD-WiFi 接口

S3C6410 的另一路 SDIO 接口通过 CON9 座引出,它是一个 2.0 间距的 20Pin 插针座,

为了配合 SDIO 使用,该接口中还包含了 1 路 SPI,1 路 I2C,4 个 GPIO,其定义如下表。

CON9 引脚定义 CON9 引脚定义

1 VDD/3.3V 2 GND 3 GPK8 4 GPK13 5 I2CSCL 6 I2CSDA 7 SPI0_MOSI0 8 SPI0_MISO0 9 SPI0_CLK0 10 SPI0_CS 11 GPP10/WiFi_IO 12 GPP11/WiFi_PD 13 SD1_CLK 14 SD1_CMD 15 SD1_nCD 16 SD1_nWP 17 SD1_DAT0 18 SD1_DAT1 19 SD1_DAT2 20 SD1_DAT3

1.3.18 CMOS CAMERA 接口

S3C6410 带有 CMOS 摄像头接口,在开发板上通过 CON10 接口引出。它是一个 20

Page 29: Mini6410 um chinese

第 - 29 - 页

脚 2.0mm 间距的针座,用户可以直接使用我们提供的 CAM130 摄像头模块;其实 CAM130摄像头模块上面没有任何电路,它只是一个转接板,它直接连接使用了型号为 ZT130G2 摄像

头模块,它们的定义如下图所示。 说明:CAMERA 接口是一个复用端口,它可以通过设置相应的寄存器改为 GPIO 使

用,下表是它对应引脚的 GPIO 列表

CON10 引脚定义 CON10 引脚定义

1 CAMSDA(实接 I2CSDA) 2 CAMSCL(实接 I2CSCL)3 GPK2 4 CAMRSTn 5 CAMCLK 6 CAMHREF 7 CAMVSYNC 8 CAMPCLK 9 CAMDATA7 10 CAMDATA6 11 CAMDATA5 12 CAMDATA4 13 CAMDATA3 14 CAMDATA2 15 CAMDATA1 16 CAMDATA0 17 3.3V 18 2.45-2.8V 19 1.8V 20 GND

1.3.19 GPIO 接口

GPIO 是通用输入输出口的简称,本开发板带有一个 30 Pin 2.0mm 间距的 GPIO 接口,

标称为 CON6,如图。 实际上,CON6 不仅包含了很多富余的 GPIO 引脚,还包含了一些其他 CPU 引脚,

如 AD 输入、DAC 等。你所看到的图中的 SPI 接口、I2C 接口、中断等,它们其实也是 GPIO,

不过是以特殊功能接口来标称定义的,这些都可以通过相应的 CPU 寄存器来设置更改它们的

用途,详细的接口资源见下表。

Page 30: Mini6410 um chinese

第 - 30 - 页

CON6 引脚定义 说明 CON6 引脚定义 说明 1 3.3V 电源脚 2 GND 地 3 GPE1 未使用,可作为 GPIO 等 4 GPE2 未使用,可作为 GPIO 等

5 GPE3 未使用,可作为 GPIO 等 6 GPE4 未使用,可作为 GPIO 等

7 GPM0 未使用,可作为 GPIO 等 8 GPM1 未使用,可作为 GPIO 等

9 GPM2 未使用,可作为 GPIO 等 10 GPM3 未使用,可作为 GPIO 等

11 GPM4 未使用,可作为 GPIO 等 12 GPM5 未使用,可作为 GPIO 等

13 GPQ1 未使用,可作为 GPIO 等 14 GPQ2 未使用,可作为 GPIO 等

15 GPQ3 未使用,可作为 GPIO 等 16 GPQ4 未使用,可作为 GPIO 等

17 GPQ5 未使用,可作为 GPIO 等 18 GPQ6 未使用,可作为 GPIO 等

19 SPI1_CLK 未使用,可作为 GPIO 等 20 SPI1_MISO 未使用,可作为 GPIO 等

21 SPI1_CS 未使用,可作为 GPIO 等 22 SPI1_MOSI 未使用,可作为 GPIO 等

23 EINT6 未使用,可作为 GPIO 等 24 EINT9 未使用,可作为 GPIO 等

25 EINT11 未使用,可作为 GPIO 等 26 EINT16 未使用,可作为 GPIO 等

27 AIN1 模拟输入通道 1,

输入电压范围 0-0.3.3V

28 AIN2 模拟输入通道 2,

输入电压范围 0-0.3.3V

29 AIN3 模拟输入通道 3,

输入电压范围 0-0.3.3V

30 DACOUT1

说明:DACOUT1 是另一路 TV 输出,一般需要接放大器才能输出到电视。

1.3.20 系统总线接口

本开发板上的系统总线接口为 CON5,它总共包含 16 条数据线(D0-D15)、8 条地址线

(A0-A6, A24)、还有一些控制信号线(片选、读写、复位等),CON5 可以向外提供 5V 电压输

出;实际上,很少有用户通过总线扩展外设。下面是 CON5 的详细引脚定义说明。

CON5 引脚定义 CON5 引脚定义

1 5V 2 GND 3 EINT17 4 EINT18 5 NC 6 NC 7 nCS4 8 nCS5

Page 31: Mini6410 um chinese

第 - 31 - 页

9 GND 10 GND 11 LnOE 12 LnWE 13 nWAIT 14 nRESET 15 GND 16 GND 17 ADDR0 18 ADDR1 19 ADDR2 20 ADDR3 21 ADDR4 22 ADDR5 23 ADDR6 24 ADDR19 25 DATA0 26 DATA1 27 DATA2 28 DATA3 29 DATA4 30 DATA5 31 DATA6 32 DATA7 33 DATA8 34 DATA9 35 DATA10 36 DATA11 37 DATA12 38 DATA13 39 DATA14 40 DATA15

说明:NC 代表没有连接

Page 32: Mini6410 um chinese

第 - 32 - 页

第二章 Mini6410 快速上手体验

本手册主要按照从感性到理性的顺序安排各个章节及内容,因此或许一开始你会看到

很多关于“如何操作”的步骤,请不要忽视这些看起来很简单的操作,我们一般都在其中穿

插必要的说明,比如相关驱动程序源代码的位置等,这样是为了让你在以后的开发中有个大

概的印象。 出厂之前,如果客户未加说明,开发板中已经烧写了缺省的 Linux 系统(对应光盘

/images/Linux 文件夹中二进制文件: u-boot、zImage、root-qtopia-qt4.img,不同型号的显

示模块,有不同尾 的烧写文件),这样你拿到板子之后即可上电开机运行系统,以便了解和

测试整个硬件系统。

注意:对于 7”LCD 套餐,我们默认烧写的是 WinCE 系统,里面包含了我们移植开发

的 TCPMP 播放器,可以支持完美支持硬解码,播放 Mpeg4, H.263/264 视频。

在开始之前,我们建议你先了解一下本章 1,2 节的内容,一般将来做参考。

2.1 开发板设置及连接

2.1.1 启动模式选择

本开发板的启动模式选择,是通过拨动开关 S2 来决定的,根据开发板上 S2 开关旁边

的标识: S2 拨至 SDBOOT 标识一侧时,系统将从 SD 卡启动; S2 拨至 NAND 标识一侧时,系统将从 Nand Flash 启动。 出厂缺省设置为 Nand 启动,因为里面已经预装了 Linux 系统,这样开机就可以使用

了。 说明:6410 芯片本身支持多种启动方式: NOR Flash,普通的 Nand Flash,OneNand,

SD/MMC Card,甚至是 Modem(详见 6410 数据手册 Table 3-1),我们基于以下原因仅设置了

“普通 Nand Flash”和“SD/MMC”这两种启动模式选择。 基于简单易用的原则,如果提供多种启动模式,势必需要更多的设置开关,和更繁杂

的设置;这会让人感到很混乱,不方便使用。并且多位的拨动开关,耐用性不太好,来回拨

动的次数多了,很容易损坏。 从另一方面来讲,6410 本身仅支持 大 1MB 的 NOR Flash(虽然市面有一些开发板声

称支持 2MB,但那是不可能的,这是由 6410 芯片本身特性所决定的),并且目前并没有很简

单的方式在线烧写 NOR Flash;既然 bootloader 或者裸机程序可以直接烧写或者复制到 SD 卡

上使用,我们认为 NOR Flash 已经没有存在的必要了。

Page 33: Mini6410 um chinese

第 - 33 - 页

需要注意的是,免费版的 H-JTAG 软件目前并不支持 ARM11,也谈不上通过它来烧

写 NOR Flash。

2.1.2 外部接口连接

请使用我们提供的交叉串口线(蓝色头)连接开发板的串口 0 和 PC 机的串口 用我们提供的交叉网线将开发板的网络接口与 PC 相连(如不需要连网,该步并不是

必须) 用我们提供的 5V 电源适配器连接到板上的 5V 输入插座(注意不要太用力,以免损

坏电源插座) 把音箱或者耳机的插头接入板上的绿色音频输出口 如果您有液晶屏,请按照数据线头的方向与开发板的 LCD 接口相连

2.1.3 设置超级终端

注意:有的用户使用 USB 转串口线来扩展串口,但注意有的 USB 转串口线是会出现

乱码的,这说明它的性能和功能并不好,我们的代理大部分都提供了这样的转接线,用户可

以直接联系代理购买可用的转接线。 另外,请务必使用随机附带的串口交叉线,或许其他线是不能正常通讯的,请使用万

用表检测确定为交叉线即可。 为了通过串口连接开发板,必须使用一个模拟终端程序,几乎所有的类似软件都可以

使用,其中MS-Windows 自带的超级终端是 常用的选择,当你安装Windows9x 时需要自定

义选择安装该项,Windows2000 及更高版本则已经缺省安装。 一般桌面版Linux系统也自带了类似的串口终端软件,叫minicom,它是基于命令行的

程序,对于初学者而言使用比较复杂一些,感兴趣的用户可以在网上找一下这方面的介绍。 在此着重介绍一下Windows 自带的超级终端程序并以WindowsXP 为例,或许其他

Windows 版本的程序界面有所不同。 超级终端程序通常位于"开始->程序->附件->通讯"中,

选择运行该程序,一般会跳出如图所示窗口,询问你是否要将Hypertrm作为默认的telnet程序,

此时你不需要,因此点“否”按钮。

接下来,会跳出如下窗口,点“取消”

Page 34: Mini6410 um chinese

第 - 34 - 页

此时系统提示“确认取消”,点“是”即可,接着点提示窗口的“确定”,进入下一步。

超级终端会要求你为新的连接取一个名字,如图所示,这里我取了”ttyS0”,Windows

系统会禁止你取类似”COM1”这样的名字,因为这个名字被系统占用了。

Page 35: Mini6410 um chinese

第 - 35 - 页

当你命名完以后,又会跳出一个对话框,你需要选择连接开发板的串口,我这里选择

了串口 1,如图所示:

后, 重要的一步是设置串口,注意必须选择无流控制,否则,或许你只能看到

输出而不能输入,另外板子工作时的串口波特率是 115200,如图所示。

Page 36: Mini6410 um chinese

第 - 36 - 页

当所有的连接参数都设置好以后,打开电源开关,终端会出现系统启动界面。 选择超级终端“文件”菜单下的“另存为…”,保存该连接设置,以便于以后再连接时就不必

重新执行以上设置了。

2.2 烧写 BIOS 到 SD 卡

完全空白的 SD 卡是不能直接启动 6410 开发板的,必须先在 PC 上使用特殊的烧写软

件把 BIOS(也可以称为 bootloader)写入 SD 卡才可以,并且写入的这个 BIOS 是无法在电脑上

直接看到的。三星公司已经提供了这样烧写程序:IROM_SD_Fusing_tool.exe,你可以在光盘

中找到它的源代码,目前大部分 6410 开发板均使用这个软件,但这个烧写软件有很多的局限

性和不安全性,因此我们另外开发了一个更强大更安全的 SD-Flasher.exe,在此做一个简单的

对比: 对比项 IROM_SD_Fusing_tool.exe SD-Flasher.exe

出品 三星 友善之臂

运行平台 仅支持 WindowsXP 可以支持 WindowsXP/Vista/Windows7

支持的 SD 卡种类 针对普通卡和高速卡,有两个版本,易混淆,

效率低

同时支持普通卡和高速卡,统一,高效

自动扫描 SD 卡 不支持,需手工选择,容易造成误选为硬盘

从而破坏主机数据

支持,更加安全

批量烧写 不支持,每次只能烧写一个 SD 卡 支持,通过连接读卡器,可以批量烧写

烧写模式 强制烧写 在 WindowsXP 下,为强制烧写

Page 37: Mini6410 um chinese

第 - 37 - 页

在 Vista/Windows7 下,为安全烧写(需先分割)

磁盘分割(见注释 1) 不支持 支持(需为 Vista/Windows7 系统)

注释 1:一般市场上买到的 SD 卡为全盘 FAT32 格式,如果卡中存放了很多数据,强

制烧写就有可能会不知不觉中破坏这些数据;基于此原因考虑,我们在 Vista/Winows7 中,先

把 SD 卡自动分割为普通的 FAT32 格式区(自动命名卷标为“FriendlyARM)和无格式区(占130M)两部分,烧写软件将会依据卷标名称作为标志,把 bootloader 烧写到无格式区,这样就

不会破坏普通 FAT32 格式区中的数据了。 实际上,Vista/Windows7 系统本身的安全性很高,普通用户是无法在 Vista/Windows7

系统上强制烧写 SD 卡的,因此必须要先分割才能写入;另一方面,鉴于使用 WindowsXP 的

用户可能会嫌麻烦不想升级为 Windows7,根据一些网上的调查数据,这部分人还是占很大数

量的,“嫌麻烦”也表明这部分用户凡事都希望尽快搞定,因此我们并没有在 WindowsXP 中

采用“先分割,再烧写”这种更加安全的做法,而是根据习惯,采用了和三星一样的“强制

烧写”的模式。

2.2.1 BIOS 简介

U-boot 三星公司为 6410 系统提供了带有 USB 下载功能的 U-boot,我们在此基础上增强和改

进了它的功能,并把它完全开源出来,以供广大嵌入式爱好者学习研究使用,主要特性如下: 1. 增加了下载菜单,类似 Superboot 的 USB 下载菜单 2. 增加了 SD 卡启动配置 3. 支持直接下载烧写 yaffs2 文件系统映像 4. 支持烧写 WindowsCE BootLoader 之 Nboot 5. 支持烧写 WindowsCE 映像的功能 6. 支持烧写单文件映像文件,就是通常所说的裸机程序 7. 支持返回原始 shell 说明:大部分声称完全开源 Bootloader 的 6410 开发板,也都是从三星提供的 U-boot

稍作改动而来的,所有开源的 U-boot 目前均无法烧写到 SDHC 卡(超过 2G 的大容量 SD 卡)中使用。

关于 U-boot 的详细说明可以参考 4.5 章节,下面我们主要介绍 Superboot

Superboot 除了完全开源的 U-boot,我们还为企业用户设计了功能超强的 Superboot,它需要被

烧写入 SD 卡中使用,关于它的 USB 下载功能,如果你使用过 mini2440,那么在 mini6410开发板上,你也会得心应手,因为它们的功能菜单和命令都几乎是完全相同的,你甚至不用

重新安装 USB 下载驱动和 dnw 下载软件。

当然了,Superboot 还支持更加强大易用的 SD 卡直接安装或运行系统,这样你只需

Page 38: Mini6410 um chinese

第 - 38 - 页

要简单的修改一下配置文件,无需连接电脑,当然也无需 USB 和 dnw,你就可以快速而简单

的烧写或运行各种系统,这对于喜欢外出做演示、培训教学、或者大批量生产的人来说,都

十分有用,因为它只需一张 SD 卡就可以了。

另外,你不用担心你使用的是 WindowsXP,还是 Vista,还是 Windows7,甚至是 64-bit的 Windows7,我们提供的 SD-Flasher 程序都可以畅通无阻的运行使用;你也不必担心你使用

的是小容量的 SD 卡,还是高速大容量的 SDHC 卡,Superboot 都可以安得其所。

鉴于我们汉语的一些谐音简称,你可以把“Superboot”称为连 SB 都会使用的

bootloader;在下面的介绍中,基于习惯,我们把它称为 bios。

需要说明的是,Superboot 是由友善之臂精心研制开发的,我们并不提供它的源代码,

任何企业或个人都可以免费使用它。 对于 6410 上各个常见版本的 Bootloader,这里有个简单的对比列表:

对比项 Superboot U-Boot U-Boot 设计者或移植改进者 友善之臂 友善之臂 其他厂商

简单易用的下载菜单 支持 支持 有的支持

自动识别 128M/256M DDR RAM 支持 不支持 不支持

烧写大于内存容量的映像文件 支持 不支持 不支持

USB 下载 StepLoader,如 Nboot 等 支持 支持 支持

USB 下载 Linux 内核 支持 支持 支持

USB 下载 Yaffs2 文件系统映像 支持 支持 有的支持

USB 下载 UBIFS 文件系统映像

(一般 Android 系统用)

支持 不支持 不支持

USB 下载 EBOOT.nb0 不需要,所以不支持 不需要,所以不支持 支持

USB 下载 WindowsCE 映像 NK.bin 支持 不支持 不支持

USB 下载 WindowsCE 映像 NK.nb0 不需要,所以不支持 支持 不支持

USB 下载 WindowsCE 开机图片 支持(直接使用 bmp 文

件,不需要转换)

不支持 有的可以支持,但需要手

工转换

USB 下载烧写裸机程序 支持 支持 支持

启动参数设置 支持 支持 支持

2G 以内普通 SD 卡 支持 支持 支持

高速大容量 SD 卡(FAT32 格式) 支持 不支持 不支持

SD 卡脱机烧写 StepLoader 如 Nboot 等 支持 不支持 不支持

SD 卡脱机烧写 Linux 内核 支持 不支持 不支持

SD 卡脱机烧写 Yaffs2 映像 支持 不支持 不支持

SD 卡脱机烧写 UBIFS 映像

(一般 Android 系统用)

支持 不支持 不支持

SD 卡脱机烧写 WindowsCE 映像 NK.bin 支持 不支持 不支持

SD 卡脱机烧写 WindowsCE 开机图片 支持(直接使用 bmp 文

件,不需要转换)

不支持 不支持

SD 卡脱机烧写裸机程序 支持 不支持 不支持

Page 39: Mini6410 um chinese

第 - 39 - 页

SD 卡直接运行 Linux 全系统 支持 不支持 不支持

SD 卡直接运行 WindowsCE 全系统 支持 不支持 不支持

SD 卡直接运行 Ubuntu 全系统 支持 不支持 不支持

SD 卡直接运行 Android 全系统 支持 不支持 不支持

SD 卡直接运行裸机程序 支持 不支持 不支持

SD 快速读取和烧写系统(见注释 1) 支持 不支持 不支持

注释 1:因为技高一筹,我们通过 SD 卡烧写系统的速度无与伦比,可以达到 1.8MB/s

2.2.1 基于 WindowsXP 烧写 BIOS

注意:有用户反映有些笔记本自带的 SD 读卡器无法正常烧写,我们尚未遇到过这样

的情况,因此无法得知原因,在这种情况下,你可以使用普通的 USB 读卡器试试。 另外,SD-Flasher.exe 会分割 130M 空间作为空白区域,因此有些小于 256M 的 SD 卡

是无法使用的,我们推荐使用至少 4G 的 SD 卡,因为稍后拷贝的安装文件比较大(1.5GB) Step1: 打开光盘\tools\中的 SD-Flasher.exe 烧写软件,如图,请注意,此时软件中的

“ReLayout”按钮是失效的,因为我们特意在 WindowsXP 系统中关闭了此功能。

Step2: 点 按钮找到所要烧写的 superboot,如图

Page 40: Mini6410 um chinese

第 - 40 - 页

(3)把 FAT32格式的 SD卡插入笔记本的卡座,也可以使用USB读卡器连接普通的 PC,

准备就绪,点“Scan”,找到的 SD 卡就会被列出,如图

(4)再点“Fuse”,superboot 就会被烧写到 SD 卡中了。

Page 41: Mini6410 um chinese

第 - 41 - 页

Superboot 被写入 SD 卡后是无法看到的,该如何检测呢?很简单,把 SD 卡插到开发

板上,并把开发板上 S2 开关设置为“SDBOOT”模式,开机后,就可以看到板上的 LED1 在

不停的闪烁,这就说明 Superboot 已经正常运行了。

2.2.2 基于 Windows7 烧写 BIOS

注意:有用户反映有些笔记本自带的 SD 读卡器无法正常烧写,我们尚未遇到过这样

的情况,因此无法得知原因,在这种情况下,你可以使用普通的 USB 读卡器试试,。 另外,SD-Flasher.exe 会分割 130M 空间作为空白区域,因此有些小于 256M 的 SD 卡

是无法使用的,我们推荐使用至少 4G 的 SD 卡,因为稍后拷贝的安装文件比较大(1.5GB)

Step1: 打开光盘\tools\中的 SD-Flasher.exe 烧写软件,请注意,你需要通过管理员身

份来打开该软件才行,如图

打开后,如下图所示,请注意,此时软件中的“ReLayout”按钮是有效的,我们将使

Page 42: Mini6410 um chinese

第 - 42 - 页

用它来分割 SD 卡,以便以后可以安全地读写。

Step2:点 按钮找到所要烧写的 superboot,如图

Step3: 把 FAT32 格式的 SD 卡插入笔记本的卡座,也可以使用 USB 读卡器连接普通

的 PC,请务必先备份卡中的数据,点“Scan”,找到的 SD 卡就会被列出,如图,可以看到

此时 SD 卡是不能被烧写的(红色圈处)

Page 43: Mini6410 um chinese

第 - 43 - 页

Step4: 再点“ReLayout”,会跳出一个提示框,如图,提示你 SD 卡中的所有数据将

会丢失,点“Yes”,开始自动分割,这需要稍等一会。

分割完毕,回到 SD-Flasher 主界面,此时再点“Scan”,就可以看到 SD 卡卷标已经

变为“FriendlyARM”,并且可以使用了,如图。

Page 44: Mini6410 um chinese

第 - 44 - 页

Step5: 点“Fuse”,superboot 就会被安全地烧写到 SD 卡的无格式区中了,以后你也

可以在 WindowsXP 中烧写这张卡,不必担心 FAT32 区域中的数据被破坏。

Superboot 被写入 SD 卡后是无法看到的,该如何检测呢?很简单,把 SD 卡插到开发

板上,并把开发板上 S2 开关设置为“SDBOOT”模式,开机后,就可以看到板上的 LED1 在

不停的闪烁,这就说明 Superboot 已经正常运行了。

Page 45: Mini6410 um chinese

第 - 45 - 页

2.3 体验快速安装、更新、恢复和运行系统

要使用 SD 卡脱机安装或者运行各种系统,需要先向已经烧好 Superboot 的 SD 卡中

拷贝一些必要的系统文件等,这其中包含一个名为“FriendlyARM.ini”的配置文件,通过它,

你可以选择系统类型及相关文件。 下面我们就先体验一些极速安装或运行系统的简单步骤(基于 4.3”套餐,如果你使用

了其他 LCD 套餐,以下步骤可能会有所不同,请自行调动顺序)。

2.3.1 快速安装 WindowsCE 系统

说明:开发板出厂时内置的系统为 Linux,为了证明我们确实更新了系统,现在特意

为它安装 WindowsCE 6,在后面的步骤,你还可以把它恢复到 Linux,请不必担心。 Step1: 把 光 盘 中 的 ”images” 文 件 夹 拷 贝 到 SD 卡 中 , 双 击 打

开”images\FriendlyARM.ini”文件,找到”OS=Linux”,并改为”OS=CE6”,保存修改,取出 SD卡插到开发板上。

注意:此处是把整个”images”文件夹拷贝到 SD 卡的根目录下,拷完后 SD 卡的内容

大概是这样的:

Step2: 把开发板 S2 开关设置为”SDBOOT”,并插入 SD 卡 Step3: 屏住呼吸,上电开机,这时你可以听到开发板上蜂鸣器“滴”的一声,同时板

上的 LED4 开始点亮并闪烁 Step4: 静听秒表跳动的声音,可以注意到 LED3,2,1 逐个开始闪烁亮起,直到听到蜂

鸣器“滴滴”两声,所有 LED 满格亮起,随后不停的跑马跳动,就说明系统已经烧写完毕,

整个过程不到 20 秒。 Step5: 把开发板 S2 开关设置为”NAND”启动,这时重启系统就可以看到 WindowsCE

Page 46: Mini6410 um chinese

第 - 46 - 页

已经被安装好了。

2.3.2 快速更新为 Android 系统

或许你对时下流行的 Android 更感兴趣,安装它也很容易,接上面的步骤,如下: Step1: 把 SD 卡插入电脑,双击打开”images\FriendlyARM.ini”文件 Step2: 找到”OS=CE6”,并改为”OS=Android”,保存修改,取出 SD 卡插到开发板上。 Step3: 上电开机,同样的“滴”一声开始,同样的“滴滴”两声结束,更新完毕,整

个过程不到 1 分钟。 Step4: 把开发板 S2 开关设置为”NAND”启动,这时重启系统就可以看到 Android 已

经被安装好了。 注意:如果你听到急促的“滴滴”声,或者看四个 LED 并行闪烁,那说明你可能拼

写出错了。

2.3.3 快速恢复为 Linux 系统

或许你已经试玩了一下 Android,那确实看起来很花哨,但作为学习开发,它毕竟还

是以 Linux 为基础的,所以,我们还是先恢复到古老而传统的 Linux 上吧,如下: Step1: 把 SD 卡插入电脑,双击打开”images\FriendlyARM.ini”文件 Step2: 找到”OS=Android”,并改为”OS=Linux”,保存修改,取出 SD 卡插到开发板上。 Step3: 上电开机,同样的“滴”一声开始,同样的“滴滴”两声后更新完毕,因为我

们制作的 Linux 包含了 Qtopia-2.2.0 和 QtE-4.7.0 两个系统,所以映像文件比较大,烧写时间

比较长,整个过程 1 分钟左右。 Step4: 把开发板 S2 开关设置为”NAND”启动,这时重启系统就可以看到 Linux 已经

被安装好,并且出现了校正界面。 注意:如果你听到急促的“滴滴”声,或者看四个 LED 并行闪烁,那说明你可能拼

写出错了

2.3.4 在 SD 卡中直接运行 Ubuntu 系统(500M)

说明:因为 Ubuntu 运行时会占用比较多的内存,有两种方式可以达到比较好的效果: 把 Ubuntu 烧写到 Nand Flash 中运行,这需要使用 1GB 版本的 6410 平台 使用配置为 256M 内存的 6410 板,这样通过 SD 卡运行也会达到以上效果 如果你的配置为“256M 内存+1GB Nand Flash”,无论烧写或运行,效果都和上面是一样的

在 SD 卡上执行运行 Ubuntu 的步骤如下:

Page 47: Mini6410 um chinese

第 - 47 - 页

Step1: 把 SD 卡插入电脑,双击打开”images\FriendlyARM.ini”文件 Step2: 找到 ”OS=Linux” ,并改为 ”OS=Ubuntu” ,;找到 ”Action=Install” ,并改

为”Action=Run”;保存修改,取出 SD 卡插到开发板上。 Step3: 上电开机,现在你就可以玩一玩 Ubuntu 了,你可以修改里面的设置并保存,

它们不会丢失,除非你的卡丢失了;它们一般也不会破坏 NAND 里面的内容,除非有特殊的

软件是专门针对 NAND 操作的。 注意:如果你听到急促的“滴滴”声,或者看四个 LED 并行闪烁,那说明你可能拼

写出错了

2.3.5 关于配置文件 FriendlyARM.ini

所有上面这些步骤,用起来太酷太简单了,这都是拜功能强大的 Superboot 所赐,现

在你可以了解的更多一些,这其中的关键就是配置文件“FriendlyARM.ini”,它的内容如下: FriendlyARM.ini 配置文件内容

#This line cannot be removed. by FriendlyARM(www.arm9.net)

#Notice: for the image filename include "ram128", "ram256" or "-s"

#

# "ram128" means it is for the board with 128M RAM

# "ram256" means it is for the board with 256M RAM

# "-s" means it is for the LCD module with RS232 touchpanel controller.

CheckOneButton=No

Action=install

OS= Linux

VerifyNandWrite=No

StatusType = Beeper| LED

CheckOneButton=No

Action=install

OS= linux

VerifyNandWrite=No

StatusType = Beeper| LED

Page 48: Mini6410 um chinese

第 - 48 - 页

#################### Linux #####################

Linux-BootLoader = Linux/u-boot_nand-ram256.bin

Linux-Kernel = Linux/zImage_n43

Linux-CommandLine = root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200

Linux-RootFs-InstallImage = linux/rootfs_qtopia_qt4.img

Linux-RootFs-RunImage = linux/rootfs_qtopia_qt4.ext3

################### WindowsCE6 #################

WindowsCE6-Bootloader= WindowsCE6\NBOOT_N43-RAM256.nb0

WindowsCE6-BootLogo = WindowsCE6\bootlogo.bmp

WindowsCE6-InstallImage = WindowsCE6\NK_n43.bin

WindowsCE6-RunImage = WindowsCE6\NK_n43.bin

################### Android ####################

Android-BootLoader = Android/u-boot_nand-ram256.bin

Android-Kernel = Android/azImage_n43

Android-CommandLine = root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc console=ttySAC0,115200

Android-RootFs-InstallImage = Android/rootfs_android.ubi

Android-RootFs-RunImage = Android/rootfs_android.ext3

################### Ubuntu #####################

Ubuntu-BootLoader = Ubuntu/u-boot_nand-ram256.bin

Ubuntu-Kernel = Ubuntu/uzImage_n43

Ubuntu-CommandLine = root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc console=ttySAC0,115200

Ubuntu-RootFs-InstallImage = Ubuntu/rootfs_ubuntu.ubi

Ubuntu-RootFs-RunImage = Ubuntu/rootfs_ubuntu.ext3

############### UserBin part #################

UserBin-Image=WindowsCE/NK.nb0

userBin-StartAddress=50100000 上面每项名称所代表的意思是很明显的,相信大部分人都可以看懂,如果你还不明白,

可以看看如下的详细注释: 定义项(不分大小写) 说明: 不同配置的套餐,可能会有不同的默认设置

CheckOneButton 当为"yes"时,需要在开机或复位之前按下板上的任意一个按键才执行后面的步骤;

当为"No"时,开机或者复位之后将自动执行后面的步骤,一般批量烧写时可设置为

"No"

默认为“No”

Action 设置将要执行的动作,可以为:Install/Run/Null,分别代表:

Install - 安装到 Nand Flash;

Page 49: Mini6410 um chinese

第 - 49 - 页

Run – 直接从 SD 卡运行

Null - 无动作; 设置为空时,也表示 NULL

默认为“Install”

OS 选择所要安装或运行的系统,可以为:Linux/WindowsCE6/Ubuntu/Android/UserBin ;

其中 UserBin 是指裸机程序或者单文件映像,如 uCos2, Rt-Thread 等

默认为“Linux”

VerifyNandWrite 当为“yes”时,烧写完毕将会执行校验,这样会更安全;

当为“No”时,烧写完毕不执行校验,这样会更快;

默认为“No”,一般是不会有问题的。

StatusType 烧写过程状态提示,可以为“LED”“Beeper”,或者它们的组合(组合符号为“|”);

默认为“LED|Beeper”

定义安装或运行 Linux 系统所用的文件映像或参数,可以包含目录,目录分割符号可以为“/”或“\” Linux-BootLoader 指定 Linux 系统所用的 Bootloader 文件映像名

如:Linux-BootLoader=Linux/u-boot_nand-ram256.bin (默认)

Linux-Kernel 指定 Linux 系统所用的内核文件映像名

如:Linux-BootLoader=Linux/zImage_n43(默认)

Linux-CommandLine 设定 Linux 启动参数,针对不同的启动或烧写方式,需要设置不同的参数。

当使用 yaffs2 文件系统时,推荐参数为(默认):

Linux-CommandLine = root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc

console=ttySAC0,115200

当使用 UBIFS 文件系统时,推荐参数为:

Linux-CommandLine = root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs

init=/linuxrc console=ttySAC0,115200

当需要在 SD 中直接运行时,保留默认参数即可 Linux-RootFs-InstallImage 指定安装 Linux 所用的文件系统映像名,可以为 yaffs2/UBIFS 格式。

我们这样定义:

“img”结尾的映像文件代表 yaffs2 格式;

“ubi”结尾的影响文件代表 UBIFS 格式;

“ext3”结尾的映像文件代表 EXT3 格式(仅适用于从 SD 卡运行)

如:Linux-RootFs-RunImage=Linux/root-qtopia-qt4.img(默认)

Linux-RootFs-RunImage 指定从 SD 卡中运行 Linux 所用的文件系统映像名。

如:Linux-RootFs-RunImage=Linux/root-qtopia-qt4.ext3(默认)

定义安装或运行 WindowsCE6 所用的文件映像,可以包含目录,目录分割符号可以为“/”或“\” WindowsCE6-Bootloader 指定 WindowsCE6 系统所用的 Bootloader 文件映像名

如:WindowsCE6\NBOOT_N43-RAM256.nb0(默认) WindowsCE6-BootLogo 指定 WindowsCE6 启动画面所用的文件名,将被烧写到 Nand Flash 中,该文件为

普通的 bmp 格式, 大可为 2M

如:WindowsCE6-BootLogo=WinowsCE6\BootLogo.bmp(默认) WindowsCE6-InstallImage 指定安装 WindowsCE6 所用的内核文件映像名,需要为 NK.bin 格式

如:WindowsCE6-InstallImage=WindowsCE6\NK_N43.bin(默认)

Page 50: Mini6410 um chinese

第 - 50 - 页

WindowsCE6-RunImage 指定从 SD 卡中运行 WindowsCE 时所用的文件系统映像,需要为 Nk.bin 格式。

如:WindowsCE6-RunImage=WindowsCE6\NK_N43.bin(默认) 定义安装或运行 Ubuntu 所用的文件映像,可以包含目录,目录分割符号可以为“/”或“\” 注意: 可以使用带有压缩特性 UBIFS 格式把 Ubuntu 烧写到 1GB 的 Nand Flash 中运行;也可以使用 ext3 格式的系统映像文

件直接复制到 SD 卡中运行。 Ubuntu-BootLoader 指定 Ubuntu 系统所用的 Bootloader 文件映像名

如:Linux-BootLoader=Linux/u-boot_nand-ram256.bin (默认)

Ubuntu-Kernel 指定 Ubuntu 系统所用的内核文件映像名

如:Ubuntu-BootLoader=Ubuntu/uzImage_N43(默认)

Ubuntu-CommandLine 设定 Ubuntu 启动参数,针对不同的启动方式,需要设置不同的参数。

当使用 UBIFS 文件系统时,推荐参数为:

Linux-CommandLine = root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs

init=/linuxrc console=ttySAC0,115200(默认)

当需要在 SD 中直接运行时,保留默认参数即可

Ubuntu-RootFs-RunImage 指定从 SD 卡中运行 Ubuntu 所用的文件系统映像名,一般该文件的大小是固定的

如:Ubuntu-RootFs-RunImage = Ubuntu/rootfs_ubuntu.ext3 (默认)

定义安装或运行 Android 所用的文件映像,可以包含目录,目录分割符号可以为“/”或“\” Android-BootLoader 指定 Android 系统所用的 Bootloader 文件映像名

如:Android-BootLoader=Android/ u-boot_nand-ram256.bin (默认)

Android-Kernel 指定 Ubuntu 系统所用的内核文件映像名

如:Android-BootLoader=Android/azImage_N43(默认)

Android-CommandLine 设定 Android 启动参数,针对不同的启动或烧写方式,需要设置不同的参数。

当使用 yaffs2 文件系统时,推荐参数为(默认):

Android-CommandLine = root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc

console=ttySAC0,115200

当使用 UBIFS 文件系统时,推荐参数为:

Android-CommandLine = root=ubi0:FriendlyARM-root ubi.mtd=2

rootfstype=ubifs init=/linuxrc console=ttySAC0,115200

当需要在 SD 中直接运行时,保留默认参数即可

Android-RootFs-InstallImage 指定安装 Android 所用的文件系统映像名,可以为 yaffs2/UBIFS 格式。

我们这样定义:

“img”结尾的映像文件代表 yaffs2 格式;

“ubi”结尾的影响文件代表 UBIFS 格式;

“ext3”结尾的映像文件代表 EXT3 格式(仅适用于从 SD 卡运行)

如:Android-RootFs-InstallImage = Android/rootfs_android.ubi (默认)

Android-RootFs-RunImage 指定从 SD 卡中运行 Ubuntu 所用的文件系统映像名,一般该文件的大小是固定的

如:Android-RootFs-RunImage = Android/rootfs_android.ext3 默认)

定义安装或运行单文件系统(裸机程序)所用的文件映像,可以包含目录,目录分割符号可以为“/”或“\”注意:一般单文件系统需要指定执行时的内存地址,比如 NK.nb0 也是单文件系统,它的执行地址是 UserBin-Image 指定安装或者运行单文件系统的映像文件名,可以为 bin, nb0 等格式;

Page 51: Mini6410 um chinese

第 - 51 - 页

当 Action 定义为”Install”时,它将被烧写到 Nand Flash 的 Block0 开始

的地方。 UserBin-StartAddress 当 Action 定义为”Run”时,被指定的 SD 卡中的单文件系统映像将被加

载到指定的该内存地址执行 其他说明: 1. 你可以使用”#”字符来作为注释开头,Superboot 将不会执行”#”后面的内容;事实

上,你可以直接使用任何关键字以外的字符串注释,而不需要”#”,它只是一种阅读习惯的标

志而已。 2. 为了防止 Superboot 程序被非法拷贝使用,我们规定配置文件的第一行内容不能被

更改,也不能被删除,第一行的内容是: #This line cannot be removed. by FriendlyARM(www.arm9.net) 注意: 后的”)”后面不能有空格以及其他字符。

2.4 BIOS 菜单功能介绍

使用 Superboot 作为 SD 卡中的 bootloader 启动系统时,在以下情况可以进入 USB 下

载模式: 1. SD 卡中“images\FriendlyARM.ini”配置文件不存在或该文件名拼写错误 2. 当配置文件存在,且“CheckOneButtons=Yes”时,重启开发板没有按下任意一个

按键也会进入 USB 下载模式 此时串口将会出现下载所需的功能菜单,同时开发板上的 LED1 会不停的闪烁。菜单

如下图所示(因版本更新,可能会有稍微不同的输出信息,请以实际为准)

Page 52: Mini6410 um chinese

第 - 52 - 页

2.2.1 安装 USB 下载驱动

注意:此处安装的 USB 驱动仅在 BIOS 菜单模式下有用,它需要配合 dnw.exe 软件使

用,进入 Linux 或者 WinCE 系统都不会使用到该驱动。如果你以前使用过本公司出品的

mini2440/micro2440,则不需要重新安装它,因为它们使用的 USB 下载驱动都是完全相同的。 说明:安装 USB 下载驱动不需要连接开发板,该安装是独立进行的;该驱动也可以安

装到 Windows7 系统中使用,但不支持 64-bit 版本的 Windows7 双击运行光盘中的“windows 平台工具\usb 下载驱动\ FriendlyARM USB Download

Driver Setup_20090421.exe”安装程序,开始安装 USB 下载驱动。

出现如图安装界面:

Page 53: Mini6410 um chinese

第 - 53 - 页

点“下一步”继续:

此时会跳出警告信息提示:

Page 54: Mini6410 um chinese

第 - 54 - 页

点“仍然继续”,USB 下载驱动会很快安装完毕,如图:

下面我们检测一下 USB 驱动: 首先设置开发板的拨动开关 S2 为 SDBOOT 启动,连接好附带的 USB 线和电源(可以

不必连接串口线)。 打开电源开关 S1,如果您是第一次使用,WindowsXP 系统会提示您发现了新的 USB

Page 55: Mini6410 um chinese

第 - 55 - 页

设备,并出现如图界面,在此选择“否,暂时不(T)”,点“下一步”继续。

出现如图提示,选择“自动安装软件”,点“下一步”继续

出现如图警告界面,点“仍然继续”

Page 56: Mini6410 um chinese

第 - 56 - 页

至此,第一次使用 USB 下载驱动的步骤就结束了。

此时打开光盘中的 dnw.exe 下载软件,可以看到 USB 连接 OK,如图。

Page 57: Mini6410 um chinese

第 - 57 - 页

在计算机设备管理器中,你也可以看到相关的 USB 下载驱动信息,如图:

Page 58: Mini6410 um chinese

第 - 58 - 页

2.2.2 功能主菜单说明

功能[f]:对 Nand Flash 进行格式化,实际上就是擦除整片 Nand Flash。 功能[v]:通过 USB 下载 Linux BootLoader 到 Nand Flash 的 bootloader 分区,如 U-boot 功能[k]:通过 USB 下载 Linux 内核到 Nand Flash 的 kernel 分区 功能[y]:通过 USB 下载 yaffs2 文件系统映象到 Nand Flash 的 root 分区 功能[u]:通过 USB 下载 UBIFS 文件系统映象到 Nand Flash 的 root 分区 功能[a]:通过 USB 下载用户程序到 Nand Flash 中,一般这样的用户程序为 bin 格式的

单系统映像文件,如 uCos2 或者裸机程序等 功能[n]:通过 USB 下载 WinCE 之启动程序 Nboot 到 Nand Flash 的 Block0 功能[l]:通过 USB 下载 WinCE 启动时的开机 Logo(bmp 格式的图片) 功能[w]:通过 USB 下载 WinCE 发行映象 NK.bin 到 Nand Flash 功能[b]:启动系统,如果烧入了 Linux 或者 Wince,执行该命令将自动辨认识别启动

系统。 功能[s]:设置 Linux 启动参数 功能[i]:Superboot 的版本信息,并显示开发板 Nand Flash 实际容量大小。

Page 59: Mini6410 um chinese

第 - 59 - 页

第三章 安装和更新或运行系统

我们曾经在 2440 开发板上首创了基于 USB 的下载安装嵌入式操作系统的方式,而

6410 可以支持从 SD 卡启动,这意味着可以做更有趣、更酷的事情。比如让 BootLoader 支持

FAT32 格式的文件系统,这样我们就可以从 SD 卡中直接读取映像文件,而不需要通过 USB下载,从而做到脱机安装或者运行各种系统。

在前面的章节,你或许已经体验过这种安装方式了,可以真真切切地体会到它极快,

极简单的优势,当然我们还可以做的更酷一些,因为时间关系,我们将在以后改进升级。 其实有很多 mini2440 的用户已经习惯了 USB 下载安装,特别是当开发测试的时候,

可能不需要来回插拔 SD 卡,所以,我们在 6410 的 Superboot 中也保留了此功能,它所使用

的驱动和下载软件 dnw.exe 和 mini2440 是完全一样的,下面我们还是从 USB 一键下载安装系

统开始介绍。

3.1 使用 USB 一键安装系统

使用 Superboot 作为 SD 卡中的 bootloader 启动系统时,在以下情况可以进入 USB 下

载模式: 1. SD 卡中“images\FriendlyARM.ini”配置文件不存在或该文件名拼写错误 2. 当配置文件存在,且“CheckOneButtons=Yes”时,重启开发板没有按下任意一个

按键也会进入 USB 下载模式 此时串口将会出现下载所需的功能菜单,同时开发板上的 LED1 会不停的闪烁。菜单

如下图所示(因版本更新,可能会有稍微不同的输出信息,请以实际为准)

Page 60: Mini6410 um chinese

第 - 60 - 页

3.1.1 一键安装 Linux 系统(yaffs2 或 UBIFS 格式)

注意:本小节假定您已经安装好了 USB 驱动,并把开发板设置 SD 启动;因版本更

新,以下截图有可能和实际稍微不同,请以实际为准。 说明:安装 Linux 所需要的二进制文件位于光盘的 images\Linux 目录中,该目录中

有详细的文件说明。 安装 Linux 系统主要有以下步骤: (1)对 Nand Flash 进行格式化,对应命令[f] (2)安装 Bootloader,对应命令[v] (3)安装内核文件,对应命令[k] (4)安装目标文件系统(yaffs2 或 ubifs 格式),对应命令[y]或[u] 下面以在 4.3”LCD 套餐上安装 UBIFS 格式的 Linux 系统为例,介绍详细的安装步骤: Step1 : 格式化 Nand Flash 提示:格式化将会擦除 Nand Flash 里面的所有数据 连接好串口,打开超级终端,上电启动开发板,进入 BIOS 功能菜单,选择功能号[f]

开始对 Nand Flash 进行分区,如图所示。 说明:有的 Nand Flash 分区时会出现坏区报告提示,因为 supervivi 会对坏区做检测

记录,因此这将不会影响板子的正常使用。 提示:普通的 Nand Flash 并不能保证所有扇区都是完好的,如果有坏区,系统软件会

对它们做检测处理,而不会影响整个软件系统的使用。保证完全无坏区的 Nand Flash 另有型

Page 61: Mini6410 um chinese

第 - 61 - 页

号,而且订货周期长,价格昂贵,一般场合很少用到;其他品牌的 Nand Flash 也与此类似。

Step2: 安装 Bootloader 根据不同的开发板硬件配置,我们提供了不同的 u-boot 烧写文件(源代码中有相应的

配置项): u-boot_sd-ram128.bin : 支持 SD 启动,适用于 DDR RAM 内存容量为 128M 的配置 u-boot_sd-ram256.bin : 支持 SD 启动,适用于 DDR RAM 内存容量为 256M 的配置 u-boot_nand-ram128.bin : 支持 NAND 启动,适用于 DDR RAM 内存容量为 128M 的配置 u-boot_nand-ram256.bin : 支持 NAND 启动,适用于 DDR RAM 内存容量为 256M 的配置

此处安装的 Bootloader 具体文件名为 U-boot_nand-ram256.bin(以下简称 U-boot.bin),它将被下载烧写到 Nand Flash 的 Block 0 位置,也就是起始位置;关于 U-boot 的配置和编译

等,可以参考本手册 4.5 章节。 (1) 打开 DNW 程序,接上 USB 电缆,如果 DNW 标题栏提示[USB:OK],说明 USB

连接成功,这时根据菜单选择功能号[v]开始下载 U-boot.bin

Page 62: Mini6410 um chinese

第 - 62 - 页

(2)点击“USB Port->Transmit/Restore”选项,并选择打开文件 Superboot.bin(该文件位

于光盘的 images/linux 目录)开始下载。

(4)下载完毕,U-boot.bin 会被自动烧写入 Nand Flash 分区中,并返回到主菜单。

Page 63: Mini6410 um chinese

第 - 63 - 页

Step3: 安装 Linux 内核 不同的 LCD 型号套餐,需要使用不同的内核文件,在后面的步骤我们把 Linux 内核

统称为 zImage,如下为光盘中的内核文件(位于 images/linux 目录)说明: zImage_t35 – 适用于统宝 3.5”LCD,分辨率为 240x320

zImage_n43 – 适用于 NEC4.3”LCD,分辨率为 480x272

zImage_a70 – 适用于 7 寸真彩屏,分辨率为 800x480

zImage_L80 – 适用于 Sharp 8”(或兼容)LCD,分辨率为 640x480

zImage_VGA1024x768 – 适用于分辨率输出为 1024x768 的 VGA 模块转接板

zImage_VGA800x600 – 适用于分辨率输出为 800x600 的 VGA 模块转接板

zImage_VGA640x480 – 适用于分辨率输出为 640x480 的 VGA 模块转接板

zImage_EZVGA800x600 – 适用于简易 VGA 转接板,输出分辨率为 800x600

(1)在 BIOS 主菜单中选择功能号[k],开始下载 Linux 内核 zImage

Page 64: Mini6410 um chinese

第 - 64 - 页

(2)点击“USB Port->Transmit”选项,并选择打开相应的内核文件 zImage(该文件位于

光盘的 images/Linux 目录)开始下载。

(3) 下载完毕,BIOS 会自动烧写内核到 Nand Flash 分区中,并返回到主菜单,如图:

Page 65: Mini6410 um chinese

第 - 65 - 页

Step4: 安装目标文件系统 说明:我们提供的目标文件系统包含 Qtopia-2.2.0 和 QtE-4.7.0 两种嵌入式图形系统,

并且包含了一些多媒体示例文件,因此映像文件比较大。 运行于 SD 卡中的 Superboot 可以支持 yaffs2 和 ubifs 两种格式的文件系统映像烧写,

根据文件系统的压制类型和是否支持串口触摸屏控制器,我们分别制作了以下几种映像文件,

请根据自己的实际情况选择: rootfs_qtopia_qt4.img : 支持 ARM 本身触摸屏接口,采用 yaffs2 格式压制的文件系统映像,

可以使用[y]命令烧写到 Nand Flash 中运行使用 rootfs_qtopia_qt4.ubi : 支持 ARM 本身触摸屏接口,采用 UBIFS 格式压制的文件系统映像,

可以使用[u]命令烧写到 Nand Flash 中运行使用 rootfs_qtopia_qt4.ext3 : 支持 ARM 本身触摸屏接口,采用 EXT3 格式压制的文件系统映像,

可以直接复制到 SD 中运行使用 rootfs_qtopia_qt4-s.img : 支持专业串口触摸屏控制器, 采用 yaffs2 格式压制的文件系统映

像,可以使用[y]命令烧写到 Nand Flash 中运行使用 rootfs_qtopia_qt4-s.ubi: 支持专业串口触摸屏控制器, 采用 UBIFS 格式压制的文件系统映像,

可以使用[u]命令烧写到 Nand Flash 中运行使用 rootfs_qtopia_qt4-s.ext3: 支持专业串口触摸屏控制器, 采用 EXT3 格式压制的文件系统映像,

可以直接复制到 SD 中运行使用 下面以烧写 UBIFS 格式的文件系统映像为例,介绍一下烧写的步骤,对于烧写 yaffs2

格式的文件系统,你只要更改一下命令和烧写的文件名就可以了,不再赘述。 (1)在 BIOS 主菜单中选择功能号[u],开始下载 UBIFS 根文件系统映象文件

Page 66: Mini6410 um chinese

第 - 66 - 页

(2) 点击“ USB Port->Transmit/Restore ”选项,并选择打开相应的文件系统映象文件

rootfs-qtopia-qt4.ubi(该文件位于光盘的 images/Linux 目录)开始下载。

(3)下载完毕,BIOS 会自动烧写文件系统映像到 Nand Flash 分区中,同时 Linux 启动参数也被修

改,以便启动 UBIFS 系统。

Page 67: Mini6410 um chinese

第 - 67 - 页

注意:下载完毕,请拔下 USB 连接线,如果不取下来,有可能在复位或者启动系统

的时候导致您的电脑死机。 在 BIOS 主菜单中选择功能号[b],将会启动系统。 如果您把开发板的启动模式设置为 Nand Flash 启动,则系统会在上电后自动启动。

3.1.2 一键安装 WinCE 系统

使用 Superboot 作为 SD 卡中的 bootloader 启动系统时,在以下情况可以进入 USB 下

载模式: 1. SD 卡中“images\FriendlyARM.ini”配置文件不存在或该文件名拼写错误 2. 当配置文件存在,且“CheckOneButtons=Yes”时,重启开发板没有按下任意一个

按键也会进入 USB 下载模式 此时串口将会出现下载所需的功能菜单,同时开发板上的 LED1 会不停的闪烁。菜单

如下图所示(因版本更新,可能会有稍微不同的输出信息,请以实际为准) 注意:本小节假定您已经安装好了 USB 驱动,并把开发板设置 SD 启动;因版本更

新,以下截图有可能和实际稍微不同,请以实际为准

Page 68: Mini6410 um chinese

第 - 68 - 页

说明:安装 WinCE6 所需要的二进制文件位于光盘的“\images\WindowsCE6”目录中,

以下简称 WinCE6 安装 WinCE6 主要有以下步骤: (1)格式化 Nand Flash,对应命令[f] (2)安装 Bootloader ,对应命令[n] (3)安装 BootLogo(bmp 格式),对应命令[l] (4)安装 WindowsCE 内核映象,对应命令[w] 提示:请先连接好串口,打开超级终端,上电启动开发板,进入 BIOS 功能菜单,下

面以 4.3”LCD 套餐为例,介绍详细的安装步骤: Step1 : 格式化 Nand Flash 提示:格式化将会擦除 Nand Flash 里面的所有数据 连接好串口,打开超级终端,上电启动开发板,进入 BIOS 功能菜单,选择功能号[f]

开始对 Nand Flash 进行分区,如图所示。 说明:有的 Nand Flash 分区时会出现坏区报告提示,因为 Supervivi 会对坏区做检测

记录,因此这将不会影响板子的正常使用。 普通的 Nand Flash 并不能保证所有扇区都是完好的,如果有坏区,系统软件会对它们

做检测处理,而不会影响整个软件系统的使用。保证完全无坏区的 Nand Flash 另有型号,而

且订货周期长,价格昂贵,一般场合很少用到;其他品牌的 Nand Flash 也与此类似。

Page 69: Mini6410 um chinese

第 - 69 - 页

Step2: 安装 Bootloader 在 WinCE 系统中,我们使用的 Bootloader 为 Nboot,因为 Nboot 并不能自动识别 LCD

类型,根据不同型号的 LCD,和不同容量的内存配置,有不同的映像文件(源代码中有相应的

配置项)。本手册第五章介绍了如何修改 LCD 类型,及如何编译 Nboot。 (1)打开 DNW 程序,接上 USB 电缆,如果 DNW 标题栏提示[USB:OK],说明 USB

连接成功,这时根据菜单选择功能号[n]开始下载 Nboot(在此为统称).nb0

Page 70: Mini6410 um chinese

第 - 70 - 页

(2)点击“USB Port->Transmit”选项,并选择打开文件 Nboot_n43.nb0(该文件位于光

盘的\images\WindowsCE6 目录)开始下载。 因为 Nboot 需要加载开机画面,因此针对不同的 LCD 型号和内存容量,有不同的

Nboot 烧写文件,如下说明: 适用于 128M 内存大小的 6410 开发板平台

NBOOT_T35-RAM128.nb0 : 适合于统宝 3.5"LCD,带开机 LOGO 显示和进度条 NBOOT_N43-RAM128.nb0 : 适合于 NEC 4.3"LCD,带开机 LOGO 显示和进度条 NBOOT_A70-RAM128.nb0 : 适合于群创 7"LCD,带开机 LOGO 显示和进度条 NBOOT_L80-RAM128.nb0 : 适合于 Sharp 8"LCD(或兼容),带开机 LOGO 显示和进度条 NBOOT_EZVGA-RAM128.nb0 : 适用于简易 VGA 转接板,建议使用 CRT 显示器,在有

些液晶显示器上可能会显示不完整,带开机 LOGO 显示和进度条 NBOOT_VGA640x480-RAM128.nb0 : 适用于分辨率输出为 640x480 的专业 LCD2VGA

转接板(由本公司设计生产) NBOOT_VGA800x600-RAM128.nb0 : 适用于分辨率输出为 800x600 的专业 LCD2VGA

转接板(由本公司设计生产) NBOOT_VGA1024x768-RAM128.nb0 : 适 用 于 分 辨 率 输 出 为 1024x768 的 专 业

LCD2VGA 转接板(由本公司设计生产)

适用于 256M 内存大小的 6410 开发板平台 NBOOT_T35-RAM256.nb0 : 适合于统宝 3.5"LCD,带开机 LOGO 显示和进度条 NBOOT_N43-RAM256.nb0 : 适合于 NEC 4.3"LCD,带开机 LOGO 显示和进度条 NBOOT_A70-RAM256.nb0 : 适合于群创 7"LCD,带开机 LOGO 显示和进度条 NBOOT_L80-RAM256.nb0 : 适合于 Sharp 8"LCD(或兼容),带开机 LOGO 显示和进度条 NBOOT_EZVGA-RAM256.nb0 : 适用于简易 VGA 转接板,建议使用 CRT 显示器,在有

些液晶显示器上可能会显示不完整,带开机 LOGO 显示和进度条 NBOOT_VGA640x480-RAM256.nb0 : 适用于分辨率输出为 640x480 的专业 LCD2VGA

转接板(由本公司设计生产) NBOOT_VGA800x600-RAM256.nb0 : 适用于分辨率输出为 800x600 的专业 LCD2VGA

转接板(由本公司设计生产) NBOOT_VGA1024x768-RAM256.nb0 : 适 用 于 分 辨 率 输 出 为 1024x768 的 专 业

LCD2VGA 转接板(由本公司设计生产)

Page 71: Mini6410 um chinese

第 - 71 - 页

(4)下载完毕,BIOS 会自动把 Nboot_n43.nb0 烧写到 Nand Flash 的 Block 0 Step3: 下载烧写 BootLogo Bootlogo 是开机上电后由 Nboot 加载显示的,它必须是 24bit 真彩 bmp 图片(一般 bmp

都是真彩的),并且不能大于 2M,分辨率为 1024x768 的 24 位真彩图片刚好为 2M。 (1)在 BIOS 主菜单中选择功能号[l],开始下载 bmp 图片作为 BootLogo(光盘中已经准

备好一个 BootLogo.bmp 图片) (2) 点击“USB Port->Transmit/Restore”选项,并选择文件 bootlogo.bmp

(3) 下载完毕,BIOS 会自动烧写 bootlogo.bmp 到 Nand Flash 中,并返回到主菜单。

Step3: 安装 wince 内核映象 (1)在 BIOS 主菜单中选择功能号[w],开始下载 WINCE 内核

Page 72: Mini6410 um chinese

第 - 72 - 页

(2) 点击“USB Port->Transmit/Restore”选项,并选择打开相应的内核文件 NK.bin(该

文件位于光盘的“\images\WindowsCE6”目录)开始下载。 光盘中的 WindowsCE 内核文件说明: NK_t35.bin – 适用于统宝 3.5”LCD,分辨率为 240x320

NK_n43.bin – 适用于 NEC4.3”LCD,分辨率为 480x272

NK_a70.bin – 适用于 7 寸真彩屏,分辨率为 800x480

NK_L80.bin – 适用于 Sharp 8”(或兼容)LCD,分辨率为 640x480

NK_VGA1024x768.bin – 适用于分辨率输出为 1024x768 的 VGA 模块转接板

NK_VGA800x600.bin – 适用于分辨率输出为 800x600 的 VGA 模块转接板

NK_VGA640x480.bin – 适用于分辨率输出为 640x480 的 VGA 模块转接板

NK_EZVGA800x600.bin – 适用于简易 VGA 转接板,输出分辨率为 800x600

下载完毕,BIOS 会开始格式化 Nand Flash,并依次创建分区烧写 WinCE 内核文件,

Page 73: Mini6410 um chinese

第 - 73 - 页

烧写完毕,会自动启动 WinCE 系统,整个过程串口信息如下图:

3.1.3 一键安装 Android(yaffs2 或 UBIFS 格式)

注意:本小节假定您已经安装好了 USB 驱动,并把开发板设置 SD 启动;因版本更

新,以下截图有可能和实际稍微不同,请以实际为准。 说明:安装 Android 所需要的二进制文件位于光盘的 images/Android 目录中。 安装 Android 系统主要有以下步骤: (1)对 Nand Flash 进行格式化,对应命令[f] (2)安装 Bootloader,对应命令[v] (3)安装内核文件,对应命令[k] (4)安装目标文件系统(yaffs2 或 ubifs 格式),对应命令[y]或[u] 下面以在 4.3”LCD 套餐上安装 UBIFS 格式的 Android 系统为例,介绍详细的安装步

骤: Step1 : 格式化 Nand Flash 提示:格式化将会擦除 Nand Flash 里面的所有数据 连接好串口,打开超级终端,上电启动开发板,进入 BIOS 功能菜单,选择功能号[f]

开始对 Nand Flash 进行分区,如图所示。 说明:有的 Nand Flash 分区时会出现坏区报告提示,因为 Supervivi 会对坏区做检测

记录,因此这将不会影响板子的正常使用。 普通的 Nand Flash 并不能保证所有扇区都是完好的,如果有坏区,系统软件会对它们

做检测处理,而不会影响整个软件系统的使用。保证完全无坏区的 Nand Flash 另有型号,而

且订货周期长,价格昂贵,一般场合很少用到;其他品牌的 Nand Flash 也与此类似。

Page 74: Mini6410 um chinese

第 - 74 - 页

Step2: 安装 Bootloader 根据不同的开发板硬件配置,我们提供了不同的 u-boot 烧写文件(源代码中有相应的

配置项): u-boot_sd-ram128.bin : 支持 SD 启动,适用于 DDR RAM 内存容量为 128M 的配置 u-boot_sd-ram256.bin : 支持 SD 启动,适用于 DDR RAM 内存容量为 256M 的配置 u-boot_nand-ram128.bin : 支持 NAND 启动,适用于 DDR RAM 内存容量为 128M 的配置 u-boot_nand-ram256.bin : 支持 NAND 启动,适用于 DDR RAM 内存容量为 256M 的配置

此处安装的 Bootloader 具体文件名为 u-boot_nand-ram256.bin (以下简称 U-boot.bin),它将被下载烧写到 Nand Flash 的 Block 0 位置,也就是起始位置;关于 U-boot 的配置和编译

等,可以参考本手册第六章。 (1) 打开 DNW 程序,接上 USB 电缆,如果 DNW 标题栏提示[USB:OK],说明 USB

连接成功,这时根据菜单选择功能号[v]开始下载 U-boot.bin

Page 75: Mini6410 um chinese

第 - 75 - 页

(2)点击“USB Port->Transmit/Restore”选项,并选择打开文件 Superboot.bin(该文件位

于光盘的 images/Android 目录)开始下载。

(4)下载完毕,U-boot.bin 会被自动烧写入 Nand Flash 分区中,并返回到主菜单。

Page 76: Mini6410 um chinese

第 - 76 - 页

Step3: 安装 Android 内核 不同的 LCD 型号套餐,需要使用不同的内核文件,在后面的步骤我们把 Android 内

核统称为 azImage,如下为光盘中的内核文件(位于 images/Android 目录)说明: azImage_n43 – 适用于 NEC4.3”LCD,分辨率为 480x272 azImage_a70 – 适用于 7 寸真彩屏,分辨率为 800x480 (1)在 BIOS 主菜单中选择功能号[k],开始下载内核 azImage

(2)点击“USB Port->Transmit”选项,并选择打开相应的内核文件 azImage(该文件位

于光盘的 images/Android 目录)开始下载。

Page 77: Mini6410 um chinese

第 - 77 - 页

(3) 下载完毕,BIOS 会自动烧写内核到 Nand Flash 分区中,并返回到主菜单。 Step4: 安装目标文件系统 运行于 SD 卡中的 Superboot 可以支持 yaffs2 和 ubifs 两种格式的文件系统映像烧写,

根据文件系统的压制类型和是否支持串口触摸屏控制器,我们分别制作了以下几种映像文件,

请根据自己的实际情况选择: rootfs_android.img : 支持 ARM 本身触摸屏接口,采用 yaffs2 格式压制的文件系统映像,可

以使用[y]命令烧写到 Nand Flash 中运行使用 rootfs_android.ubi : 支持 ARM 本身触摸屏接口,采用 UBIFS 格式压制的文件系统映像,可

以使用[u]命令烧写到 Nand Flash 中运行使用 rootfs_android.ext3 : 支持 ARM 本身触摸屏接口,采用 EXT3 格式压制的文件系统映像,可

以直接复制到 SD 中运行使用 rootfs_android -s.img : 支持专业串口触摸屏控制器, 采用 yaffs2 格式压制的文件系统映像,

可以使用[y]命令烧写到 Nand Flash 中运行使用 rootfs_android -s.ubi: 支持专业串口触摸屏控制器, 采用 UBIFS 格式压制的文件系统映像,可

以使用[u]命令烧写到 Nand Flash 中运行使用 rootfs_android -s.ext3: 支持专业串口触摸屏控制器, 采用 EXT3 格式压制的文件系统映像,可

以直接复制到 SD 中运行使用 说明:UBIFS 文件系统具有一定的压缩性,因为映像文件要比 yaffs2 小一些。下面以

烧写 UBIFS 格式的文件系统映像为例,介绍一下烧写的步骤,对于烧写 yaffs2 格式的文件系

统,你只要更改一下命令和烧写的文件名就可以了,不再赘述。 (1)在 BIOS 主菜单中选择功能号[u],开始下载 UBIFS 根文件系统映象文件

Page 78: Mini6410 um chinese

第 - 78 - 页

(2) 点击“ USB Port->Transmit/Restore ”选项,并选择打开相应的文件系统映象文件

rootfs_android.ubi(该文件位于光盘的 images/Android 目录)开始下载。

(3)下载完毕,BIOS 会自动烧写文件系统映像到 Nand Flash 分区中,同时内核启动参数也被修改,

以便启动 UBIFS 系统。

Page 79: Mini6410 um chinese

第 - 79 - 页

注意:下载完毕,请拔下 USB 连接线,如果不取下来,有可能在复位或者启动系统

的时候导致您的电脑死机。 在 BIOS 主菜单中选择功能号[b],将会启动系统。 如果您把开发板的启动模式设置为 Nand Flash 启动,则系统会在上电后自动启动。

3.2 使用 SD 卡脱机快速安装系统

要通过 SD 卡脱机烧写系统,必须先使用 SD-Flasher 工具把 Superboot 烧写到 SD 中(见2.2 章节),并把必要的系统文件复制到 SD 卡的 images 目录中才可以,其实你只要把光盘中

的 images 目录直接复制到 SD 卡就可以了,里面已经包含了各个系统的安装文件,如果你打

算烧写自己制作生成的文件,可以使用替换同名文件的方法,或者更改配置文件中的相应文

件名。 Superboot 可以支持普通 SD 卡高速大容量 SDHC 卡启动系统。下面我们以使用光盘

中的现成文件为例,介绍如何快速烧写各个系统。 注意:请先把光盘中的 images 目录复制到已经烧写好 Superboot 的 SD 卡中,以下安

装过程不需要连接串口线和 USB,只要一张 SD 卡和电源就可以了。

3.2.1 快速安装 Linux(yaffs2 格式)

Step1: 打开 SD 卡中 images 目录下的配置文件 FriendlyARM.ini,修改安装 Linux 系

统相关的定义: 定义项 修改为(所有定义均不分大小写) Action Install OS Linux

Page 80: Mini6410 um chinese

第 - 80 - 页

Linux-Kernel Linux/zImage_n43(或自己编译出的内核映像) Linux-CommandLine root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200 Linux-RootFs-InstallImage linux/rootfs_qtopia_qt4.img 说明:特别注意红色部分不要写错;zImage 后面的尾 代表不同型号的 LCD,以下是 images/Linux 目录下各个内核映像

文件的说明:

zImage_t35 – 适用于统宝 3.5”LCD,分辨率为 240x320

zImage_n43 – 适用于 NEC4.3”LCD,分辨率为 480x272

zImage_a70 – 适用于 7 寸真彩屏,分辨率为 800x480

zImage_L80 – 适用于 Sharp 8”(或兼容)LCD,分辨率为 640x480

zImage_VGA1024x768 – 适用于分辨率输出为 1024x768 的 VGA 模块转接板

zImage_VGA800x600 – 适用于分辨率输出为 800x600 的 VGA 模块转接板

zImage_VGA640x480 – 适用于分辨率输出为 640x480 的 VGA 模块转接板

zImage_EZVGA800x600 – 适用于简易 VGA 转接板,输出分辨率为 800x600 Step2: 把开发板 S2 开关设置为”SDBOOT”,并插入 SD 卡 Step3:上电开机,这时你可以听到开发板上蜂鸣器“滴”的一声,同时板上的 LED4

开始点亮并闪烁 Step4: 静听秒表跳动的声音,可以注意到 LED3,2,1 逐个开始闪烁亮起,直到听到蜂

鸣器“滴滴”两声,所有 LED 满格亮起,随后不停的跑马跳动,就说明系统已经烧写完毕。

3.2.2 快速安装 Linux(UBIFS 格式)

Step1: 打开 SD 卡中 images 目录下的配置文件 FriendlyARM.ini,修改安装 Linux 系

统相关的定义: 定义项 修改为(所有定义均不分大小写) Action Install OS Linux Linux-Kernel Linux/zImage_n43 (或自己编译出的内核映像) Linux-CommandLine root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc

console=ttySAC0,115200 Linux-RootFs-InstallImage linux/rootfs_qtopia_qt4.ubi 说明:特别注意红色部分不要写错;zImage 后面的尾 代表不同型号的 LCD,以下是 images/Linux 目录下各个内核映像

文件的说明:

zImage_t35 – 适用于统宝 3.5”LCD,分辨率为 240x320

zImage_n43 – 适用于 NEC4.3”LCD,分辨率为 480x272

zImage_a70 – 适用于 7 寸真彩屏,分辨率为 800x480

zImage_L80 – 适用于 Sharp 8”(或兼容)LCD,分辨率为 640x480

zImage_VGA1024x768 – 适用于分辨率输出为 1024x768 的 VGA 模块转接板

zImage_VGA800x600 – 适用于分辨率输出为 800x600 的 VGA 模块转接板

zImage_VGA640x480 – 适用于分辨率输出为 640x480 的 VGA 模块转接板

Page 81: Mini6410 um chinese

第 - 81 - 页

zImage_EZVGA800x600 – 适用于简易 VGA 转接板,输出分辨率为 800x600 Step2: 把开发板 S2 开关设置为”SDBOOT”,并插入 SD 卡 Step3:上电开机,这时你可以听到开发板上蜂鸣器“滴”的一声,同时板上的 LED4

开始点亮并闪烁 Step4: 静听秒表跳动的声音,可以注意到 LED3,2,1 逐个开始闪烁亮起,直到听到蜂

鸣器“滴滴”两声,所有 LED 满格亮起,随后不停的跑马跳动,就说明系统已经烧写完毕。

3.2.3 快速安装 WindowsCE6

说明:以下步骤以安装 4.3”LCD 套餐系统为例 Step1: 打开SD卡中 images目录下的配置文件FriendlyARM.ini,修改安装WindowsCE

系统相关的定义: 定义项 修改为(所有定义不分大小写) Action Install OS WindowsCE6 (也可以为”CE6”或”Wince6”) WindowsCE6-Bootloader WindowsCE6\nboot_n43.nb0 WindowsCE6-BootLogo WindowsCE6\bootlogo.bmp(或自定义的 bmp 文件) WindowsCE6-InstallImage WindowsCE6\NK_N43.bin (或自己编译出的内核映像) 说明:烧写文件的尾 代表不同型号的 LCD,更详细的文件说明见“光盘\images\WindowsCE6\”目录下的说明文件

Step2: 把开发板 S2 开关设置为”SDBOOT”,并插入 SD 卡 Step3:上电开机,这时你可以听到开发板上蜂鸣器“滴”的一声,同时板上的 LED4

开始点亮并闪烁 Step4: 静听秒表跳动的声音,可以注意到 LED3,2,1 逐个开始闪烁亮起,直到听到蜂

鸣器“滴滴”两声,所有 LED 满格亮起,随后不停的跑马跳动,就说明系统已经烧写完毕。

3.2.4 快速安装 Android(yaffs 格式)

Step1: 打开 SD 卡中 images 目录下的配置文件 FriendlyARM.ini,修改安装 Android系统相关的定义: 定义项 修改为(所有定义均不分大小写) Action Install OS Android Android-Kernel Android/azImage_n43( 或 azImage_a70 或 自己编译出的内核映像) Android-CommandLine root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200 Android-RootFs-InstallImage Android/rootfs_android.img 说明:azImage 后面的尾 代表不同型号的 LCD,请特别注意红色部分不要写错

Step2: 把开发板 S2 开关设置为”SDBOOT”,并插入 SD 卡 Step3:上电开机,这时你可以听到开发板上蜂鸣器“滴”的一声,同时板上的 LED4

开始点亮并闪烁

Page 82: Mini6410 um chinese

第 - 82 - 页

Step4: 静听秒表跳动的声音,可以注意到 LED3,2,1 逐个开始闪烁亮起,直到听到蜂

鸣器“滴滴”两声,所有 LED 满格亮起,随后不停的跑马跳动,就说明系统已经烧写完毕。

3.2.5 快速安装 Android(UBIFS 格式)

Step1: 打开 SD 卡中 images 目录下的配置文件 FriendlyARM.ini,修改安装 Android系统相关的定义: 定义项 修改为(所有定义均不分大小写) Action Install OS Android Android-Kernel Android/azImage_n43 (或自己编译出的内核映像) Android-CommandLine root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc

console=ttySAC0,115200 Android-RootFs-InstallImage Android/rootfs_android.ubi 说明:特别注意红色部分不要写错;azImage 后面的尾 代表不同型号的 LCD,更详细的说明见“光盘\images\Android”

目录下的说明文件。 Step2: 把开发板 S2 开关设置为”SDBOOT”,并插入 SD 卡 Step3:上电开机,这时你可以听到开发板上蜂鸣器“滴”的一声,同时板上的 LED4

开始点亮并闪烁 Step4: 静听秒表跳动的声音,可以注意到 LED3,2,1 逐个开始闪烁亮起,直到听到蜂

鸣器“滴滴”两声,所有 LED 满格亮起,随后不停的跑马跳动,就说明系统已经烧写完毕。

3.2.6 快速安装 Ubuntu(UBIFS 格式)

注意:安装 Ubuntu 需占用 500M 多 Flash 存储空间,因此必须使用 Nand Flash 容量

为 1GB 的开发板平台。 Step1: 打开 SD 卡中 images 目录下的配置文件 FriendlyARM.ini,修改安装 Ubuntu 系

统相关的定义: 定义项 修改为(所有定义均不分大小写) Action Install OS Ubuntu Android-Kernel Ubuntu/uzImage_n43 (或自己编译出的内核映像) Android-CommandLine root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc

console=ttySAC0,115200 Android-RootFs-InstallImage Ubuntu/rootfs_ ubuntu.ubi 说明:特别注意红色部分不要写错;azImage 后面的尾 代表不同型号的 LCD,更详细的说明见“光盘\images\Ubuntu”

目录下的说明文件。 Step2: 把开发板 S2 开关设置为”SDBOOT”,并插入 SD 卡 Step3:上电开机,这时你可以听到开发板上蜂鸣器“滴”的一声,同时板上的 LED4

Page 83: Mini6410 um chinese

第 - 83 - 页

开始点亮并闪烁 Step4: 静听秒表跳动的声音,可以注意到 LED3,2,1 逐个开始闪烁亮起,直到听到蜂

鸣器“滴滴”两声,所有 LED 满格亮起,随后不停的跑马跳动,就说明系统已经烧写完毕。

3.3 从 SD 卡直接运行各个系统

要通过 SD 卡脱机运行系统,必须先使用 SD-Flasher 工具把 Superboot 烧写到 SD 中(见2.2 章节),并把必要的系统文件复制到 SD 卡的 images 目录中才可以,其实你只要把光盘中

的 images 目录直接复制到 SD 卡就可以了,里面已经包含了各个系统的运行文件,如果你打

算运行自己制作生成的文件,可以使用替换同名文件的方法,或者更改配置文件中的相应文

件名。 Superboot 可以支持普通 SD 卡高速大容量 SDHC 卡启动系统。下面我们以使用光盘

中的现成文件为例,介绍如何快速通过 SD 卡运行各个系统。 注意:请先把光盘中的 images 目录复制到已经烧写好 Superboot 的 SD 卡中,以下安

装过程不需要连接串口线和 USB,只要一张 SD 卡和电源就可以了。 以下步骤以 4.3”LCD 套餐为例。

3.3.1 直接运行 SD 卡中的 Linux

Step1: 打开 SD 卡中 images 目录下的配置文件 FriendlyARM.ini,修改运行 Linux 系

统相关的定义: 定义项 修改为(所有定义均不分大小写) Action Run OS Linux Linux-Kernel Linux/zImage_n43( 或自己编译出的内核映像) Linux-RootFs-RunImage Linux/rootfs_qtopia_qt4.ext3

说明:特别注意红色部分不要写错;此时无需关心 CommandLine 参数;zImage 后面的尾 代表不同型号的 LCD,

更详细的说明见“光盘\images\Linux”目录下的说明文件。 Step2: 把开发板 S2 开关设置为”SDBOOT”,并插入 SD 卡,上电开机即可。

3.3.2 直接运行 SD 卡中的 WindowsCE

Step1: 打开 SD 卡中 images 目录下的配置文件 FriendlyARM.ini,修改运行 WinCE6系统相关的定义: 定义项 修改为(所有定义均不分大小写) Action Run OS WindowsCE6(也可以为”CE6”或”WinCE6”)

Page 84: Mini6410 um chinese

第 - 84 - 页

WindowsCE6-InstallImage WindowsCE6\NK_n43.bin (或自己编译出的内核映像) 说明:直接从 SD 卡运行 WinCE6 不需要指定 Bootloader,目前从 SD 卡启动尚不支持开机画面;NK 的尾 代表不同型

号的 LCD,更详细的说明见“光盘\images\WindowsCE6”目录下的说明文件,另外,该目录下还有个”en”目录,它里面

存放的是英文版的烧写文件。 Step2: 把开发板 S2 开关设置为”SDBOOT”,并插入 SD 卡,上电开机即可。

3.3.3 直接运行 SD 卡中的 Android

说明:因为内存容量的限制,目前使用 128M DDR RAM 配置的开发板,从 SD 卡直

接运行 ext3 格式的 Android 系统,一般无法顺利执行,需要使用 256M DDR RAM 配置的开

发板则没有这样的问题,因此建议把 Android 烧写到 Nand Flash 中运行。 Step1: 打开 SD 卡中 images 目录下的配置文件 FriendlyARM.ini,修改运行 Android

系统相关的定义: 定义项 修改为(所有定义均不分大小写) Action Run OS Android Android-Kernel Android/azImage_n43( 或 azImage_a70 或 自己编译出的内核映像) Android-RootFs-RunImage Android/rootfs_android.ext3

说明:特别注意红色部分不要写错;此时无需关心 CommandLine 参数;azImage 后面的尾 代表不同型号的 LCD,

更详细的说明见“光盘\images\Android”目录下的说明文件 Step2: 把开发板 S2 开关设置为”SDBOOT”,并插入 SD 卡,上电开机即可。

3.3.4 直接运行 SD 卡中的 Ubuntu

说明:使用 256M DDR RAM 内存配置的开发板,从 SD 卡运行 Ubuntu 速度会更快一

些。 Step1: 打开 SD 卡中 images 目录下的配置文件 FriendlyARM.ini,修改运行 Ubuntu 系

统相关的定义: 定义项 修改为(所有定义均不分大小写) Action Run OS Ubuntu Ubuntu-Kernel Ubuntu/uzImage_n43( 或自己编译出的内核映像) Ubuntu-RootFs-RunImage Ubuntu/rootfs_ubuntu.ext3

说明:特别注意红色部分不要写错;此时无需关心 CommandLine 参数;uzImage 后面的尾 代表不同型号的 LCD,

更详细的说明见“光盘\images\Ubuntu”目录下的说明文件 Step2: 把开发板 S2 开关设置为”SDBOOT”,并插入 SD 卡,上电开机即可。

Page 85: Mini6410 um chinese

第 - 85 - 页

第四章 Linux 开发指南

在一切开始之前,我们建议初学者先按照本章 4.1 和 4.2 步骤测试本开发板的各项功

能,它们的操作都很简单,对于 4.1 一节的内容,你甚至只看目录就可以逐项验证,对于 4.2一节,则需要使用一条串口线连接到电脑的串口终端来操作。这些都是为了先让你获取一个

感性的认识,并熟悉一些常见的命令和设置,为以后做开发做好准备。 可以说我们所做的各项图形界面测试程序,都十分易于操作,我们正是考虑了用户的

体验,让你觉得使用起来很自然,其中有很多都是我们精心设计的,比如 USB 摄像头动态预

览并拍照、串口助手、按键测试、屏幕旋转后的效果、Qtopia-2.2.0 和 QtE-4.7.0 的无缝切换

等。这些不仅仅涉及到技术的实现,而且与用户体验密切相关,希望对你的学习和开发起到

抛砖引玉的作用。

4.1 初试 Linux 之图形界面 Qtopia 2.2.0 和 Qt4 系统 (预装)

说明:Qtopia 2.2.0 是 Qt 公司基于 Qt/Embedded 2.3 库开发的 PDA 版(也是 终版)图形界面系统;自从 Qtopia 2.2.0 之后,Qt 公司就再也没有提供 PDA 版的图形系统了。 新版

的 Qtopia 只有手机版本,而且 Qt 公司自从 2009.3 开始已经停止了所有 Qtopia PDA 版和手机

版图形系统的授权,但依然继续开发 Qt/Embedded (简称 QtE)库系统。 QtE的 新版本请到 http://qt.nokia.com/查看,本开发板所移植的版本为QtE-4.7.0。 要编译 Qtopia-2.2.0,请参考 4.12 章节 要编译 QtE-4.7.0,请参考 4.13 章节 出厂之前,本开发板一般都预装了 Linux+Qtopia 2.2.0+QtE-4.7.0 图形界面,它包含了

很多实用的小程序,拿到开发板后,你只要接上电源并开机就可以进行各项功能测试了,这

不需要和电脑进行任何连接。 注意:本小节内容的介绍均基于开发板 + 4.3” LCD 的屏幕截图 现在让我们先睹为快吧,下面是开机时的界面:

Page 86: Mini6410 um chinese

第 - 86 - 页

4.1.1 触摸屏校正

说明:如果按照下面的步骤没有校正准确,可以先删除开发板触摸屏参数文件

/etc/pointercal,再重启系统;或者重新安装整个系统。 在两种情况下可以出现触摸屏校正界面: 1. 如果你重新安装了 Linux 系统,重启系统时首先出现如下触摸校正界面,依屏幕

提示点击屏幕任何地方开始进行校正;然后依照屏幕提示,使用触摸屏逐步点击“十”型交

叉点即可。

2. 进入系统后,点“开始->设置”切换到“设置”界面,再点“重校正”图标也会

出现校正界面;然后依照屏幕提示,使用触摸屏逐步点击“十”字型交叉点即可。

4.1.2 主要界面说明

进入 Qtopia 系统后主界面如下图所示:

Page 87: Mini6410 um chinese

第 - 87 - 页

可以看到 Qtopia 系统界面上方有五个图标, 它们代表了五类程序/文档,单击任何一

个图标都可以进入相应的子类界面,它们都是类似的。 另外点系统界面左下角的“开始”图标,也可以出现五个子类选择菜单,它们和系统

界面上方的图标是对应的。 五个子类界面分别如下图所示,根据标题名称,其意自明,其中“友善之臂”组中所

有程序均为友善之臂公司自主开发或移植而来,仅供测试使用,其他子类中程序或为系统自

带。

4.1.3 播放 Mp3

在子类“应用程序”中单击“音乐”图标,出现播放器界面,在“Audio”列表中选

择一首 mp3 歌曲文件,再点上方的“播放”按钮,开始播放 Mp3 文件。 说明:Audio 列表中的音频文件对应“Documents”子类中的所有有效音频文件。 提示:也可以在“Documents”中直接点击相应的文件名开始播放。

Page 88: Mini6410 um chinese

第 - 88 - 页

4.1.4 播放视频

在子类“应用程序”中单击“视频”图标,出现播放器界面,在“Video”列表中选

择一个视频文件,再点上方的“播放”按钮,开始播放视频。 说明:Video 列表中的音频文件对应“Documents”子类中的所有有效视频文件。 提示:也可以在“Documents”中直接点击相应的文件名开始播放。

4.1.5 图片浏览

在子类“应用程序”中单击“图片”图标打开图片浏览器,首先映入眼帘的是“文档”

组中各个图片的缩略图,如果你插入了含有图片的 SD 卡或者优盘,其中的图片文件也会一

并全部显示出来。

Page 89: Mini6410 um chinese

第 - 89 - 页

Qtopia 2.2.0 系统的图片浏览器比以前的 Qtopia 1.7.0 有了很多改善,它可以对图片进

行简单的编辑,而且使用起来也更方便。

4.1.6 自动装载 SD 卡和优盘

在任何界面状态下,插入普通或者高速 SD 卡(实测 大容量为 32G)或者 USB 移动存

储器,稍等片刻,即可在任务栏右下角出现移动存储的图标出现,本系统支持二者同时挂载,

点移动存储器的图标,出现如图所示,这时可以像在 Windows 中一样安全移除它们。 MMC/SD 卡或者优盘中的所有文件会在“文档”组中全部显示出来,并且支持中文

文件名显示,它是不显示目录名称的,如果你的文件太多,那么其列表也是相当可观的。 说明:支持 MMC/SD 卡或者优盘自动挂载是通过友善之臂开发的一个 Qtopia 2.2.0 插

件实现的,目前它仅识别 MMC/SD 卡或优盘的第一个分区,并且格式为常见的

VFAT/FAT32/FAT16,如果你的优盘或者 SD 卡不能识别,请检查是否为 VFAT/FAT32/FAT16格式。

此时点“应用程序”组的“系统信息”->“Storage”可以看到 SD 卡或优盘的容量信

息,如图:

Page 90: Mini6410 um chinese

第 - 90 - 页

4.1.7 计算器

在子类“应用程序”中单击“计算器”图标,出现计算器界面,用户可以通过下拉列

表选择 Simple, Fraction, Scientific, Conversion 等类型的计算器,如图:

4.1.8 命令终端

“终端”是 Linux 系统中通常用到的交互操作界面,通过“终端”可以运行很多 Linux命令,查看系统信息等等。

有很多途径可以设置或打开一个“终端”: 在 Linux 系统启动的时候,可以把终端指向串口输出,这样就形成了串口终端,它的

输入和输出都是通过串口进行的,无需图形界面,这是嵌入式 Linux 开发中 常用的方式。 在系统启动的时候,也可以把终端输出指向图形显示设备(如 LCD 或者 CRT 等),

而把键盘设定为输入,这样就形成了一套独立的“输入输出系统”,它无需借助另外的 PC 即

可操作。 当使用了图形显示设备,并且系统软件中增加了图形用户界面(GUI)时,就可以建立

一个基于 GUI 系统的“命令终端窗口”,这时既可以通过标准的实体硬件键盘进行交互,也

可以通过虚拟的“软键盘”进行交互,此处所讲的就是这种终端方式。

Page 91: Mini6410 um chinese

第 - 91 - 页

在子类“应用程序”中单击“终端”图标,出现命令终端窗口界面,此时可以接上

USB键盘(不要在启动之前接USB键盘,否则不能使用)或者使用屏幕下方的软键盘输入Linux命令,你还可以点 Option 菜单中的某些选项进行设置,以改变显示的模式,如图。

4.1.9 文件浏览器

在“友善之臂”程序组中点“文件浏览器”图标打开它,如图:

通过文件浏览器,你可以浏览管理开发板中的目录及文件。 说明:Qtopia-2.2.0 原始版本是不带文件浏览器的,我们移植了 Qtopia-1.7.0 中自带的

文件管理器,它们的功能和界面是完全相同的。

4.1.10 网络设置

在子类“友善之臂”程序中,点“网络设置”图标打开相应的界面,如图:

Page 92: Mini6410 um chinese

第 - 92 - 页

在这里,你可以进行常见的网络参数设置:

静态的 IP 地址 – 出厂缺省为 192.168.1.230 子网掩码 – 出厂缺省为 255.255.255.0 网关 – 出厂缺省为 192.168.1.1 DNS 解析服务器 IP – 出厂缺省为 192.168.1.1,和网关地址相同 网卡的 MAC 地址 – 此地址由驱动程序通过软件设定,是可以修改的,本开发板

出厂时所有 MAC 地址都是相同的,为 08:90:90:90:90:90 点“Save”按钮可以保存以上参数,并马上生效,重新启动开发板也可以保留此次的

更改设定,与该设置程序相对应的参数文件为/etc/eth0-setting 说明:/etc/eth0-setting 参数文件在系统重装后是不存在的,点“Save”按钮会自动生

成;开发板出厂之前需经过测试,因此这个文件是存在的。另外,命令终端的 ifconfig 程序

所作的 IP 地址更改对该配置文件没有影响。 其实,Qtopia 本身带有一个网络设置的程序,但配置界面有些复杂,有用户反应其设

置也不能有效,为了保持 Qtopia 系统的代码原始性,我们对此并没有深入研究,所以另外自

己开发了上面介绍的“网络设置”程序。

4.1.11 Ping 测试

请连接好开发板附带的网线,并设置好有效的网关,DNS 等参数,就可以通过图形

界面的 ping 程序来测试网络连通性了。在程序子类“友善之臂”中点“Ping 测试”图标,打

开相应界面,如下图:

Page 93: Mini6410 um chinese

第 - 93 - 页

因为已经设置好了 DNS,所以可支持字符域名和数字 IP 两种方式。默认的 ping 测试

次数为 4 次,当勾选上方的“ping forever”后,可以一直 ping,测试结果如下图。 重要提示:要 ping 互联网域名,必须要设置好正确有效的网关和 DNS,并且保证你

的网络确实可以连通互联网。 点“Start”按钮开始 ping,点“Stop”按钮停止 ping,要关闭“Ping 测试”界面,必

须先停止 ping。 说明:ping 是计算机系统中 常见的网络测试工具,不管是各个发行版本的 Linux 系

统,还是各种 MS Windows 系统,都可以在命令终端输入“ping”命令。以上的“Ping 测试”

程序实际就是调用命令行的 ping,把结果通过图形界面显示出来。

4.1.12 浏览器

在“友善之臂”程序组中,点“浏览器”打开它,点开界面下方的软键盘,在界面上

方的地址栏中输入一个网址,再点键盘上的“Ret”(回车)按钮,可以打开相应的网站。 说明:本开发板所用的网络浏览器为 Konqueror/Embedded,它是一个开发源代码的

浏览器。

Page 94: Mini6410 um chinese

第 - 94 - 页

4.1.13 LED 测试

在“友善之臂”程序中点“LED 测试”图标,打开如下界面:

可以看到界面中只有“Stop led-player”按钮有效,这是因为系统启动的时候开启了

led-player 服务,开机后你所见到的“流水灯”效果就是这个服务控制的,要单独控制某个

LED,需要先关闭这个服务,释放 LED 资源。 点“Stop led-player”按钮,这时它变为“Start led-player”,同时板上所有灯关闭、“LED

Control”框中所有按钮由灰色变为有效(如下图)。 这时点“All On”按钮可以点亮所有 LED,点“All Off”可以关闭所有 LED,勾选左

边任意一个框可以点亮相应的 LED,取消勾选左边任意一个框可以熄灭相应的 LED。 当关闭“LED 测试”界面时,会重新开启 led-player 服务。

4.1.14 EEPROM 读写测试

在“友善之臂”程序中点“I2C-EEPROM 测试”图标,点开任务栏上的“软键盘”

按钮,在“写入字符编辑区”输入一些 ASC 字符,点“Write Data below into EEPROM via IIC”按钮,这时该按钮变为进度条,并指示正在写入的进度,如图

Page 95: Mini6410 um chinese

第 - 95 - 页

点“Read EEPROM Data via IIC”按钮,这时按钮变为进度条,并指示正在读取的进

度。如图。

4.1.15 PWM 控制蜂鸣器

在“友善之臂”程序中点“PWM-蜂鸣器测试”图标,程序中默认的 PWM 输出为

1000Hz,点“Start”按钮开始驱动蜂鸣器发声,此时可以通过点击“+”或者“-”按钮改

变 PWM 输出的频率,同时也可以听到蜂鸣器输出声音的改变。点“Stop”按钮中止 PWM 输

出。

Page 96: Mini6410 um chinese

第 - 96 - 页

4.1.16 串口助手

提示:在使用该程序之前请连接好你需要测试的串口 开发板上的 CON1,2,3,4 分别对应 CPU 的 UART0,1,2,3,其中 UART0 已经转换为

RS232 电平,并通过 DB9 插座 COM0 输出,它在启动时已经被设置为 console 终

端,因此不能直接使用该程序测试。其他三个串口 CON2,3,4 需要增加 RS232 转

换才可以和 PC 的串口连接使用。(本公司提供了型号为“OneCom”RS232 转换

模块,如图),连接 PC 时请注意你使用的串口线类型(交叉或直连)。 本程序也支持市面上常见的 USB 转串口线,因为目前的笔记本大都没有串口,

为了方便开发,我们的很多代理都提供了类似的转接线。把 USB 转串口线接到

开发板的 USB Host 端口上,你就可以扩充开发板的串口了。它对应的设备名一

般为/dev/ttyUSB0,1,2,3 等,这意味着你可以通过 USB Hub 扩展多个 USB 转串口。

把串口扩展板接到开发板的 CON2/3/4 上,并使用交叉串口线连接至 PC 的串口,如

图。

在“友善之臂”程序组中点“串口助手”图标,打开相应的程序界面,如图:

Page 97: Mini6410 um chinese

第 - 97 - 页

从该程序窗口的标题可以看到,默认设置为“ttySAC1 115200 8N1 [C]”,它表示默认

端口的设置: - 串口设备:/dev/ttySAC1,它对应 CPU 的第二个串口 UART1 - 波特率:115200 - 数据位:8 - 流控制:无 - 停止位:1 - [C]:表示字符模式,如果是[H]则表示 16 进制模式 上图中有两个“编辑框”区域,上面的“编辑框”是用于显示接收到的数据,它实际

上是不能编辑的;下面的“编辑框”可以通过 USB 键盘或者 Qtopia 的软键盘获取输入。 点 Connect 按钮,以打开开发板串口/dev/ttySAC1,在窗口下面的编辑框输入一些字

符,点 Send 按钮,就可以向与它相连的串口设备发送数据了,下图显示的是通过 Windows超级终端接收的数据截图(注意:与此终端对应的串口也应该设置为 115200 8N1)。

点 Disconnect 断开连接,再点 Setting…按钮进入端口设置界面,如图,在此列出了

常见的一些串口设置参数项: Comm Port:可以选择 CPU 自带的/dev/ttySAC0,1,2,3 三个串口;也可以选择 USB 转

串口对应的/dev/ttyUSB0,1,2,3 Speed:可以选择各种常见的波特率 Data:可以选择数据位是 8 位/7 位,常见的是 8 位 Hex:此项表示采用 16 进制输入或者显示数据。

Page 98: Mini6410 um chinese

第 - 98 - 页

4.1.17 使用 GPRS Modem 拨号上网

你可以使用常见的 GPRS Modem 连接开发板进行拨号上网,本公司所提供的型号的

为:GM2403,它主要采用了 Wavecom 公司的工业级 Q2403A 模块,支持 GSM GPRS 双频通

讯网络 900M/1800M,更详细的资料可以参考该 Modem 的数据手册。 你可以通过串口或者 USB 转串口连接 Modem,下面分别进行说明。 (1) 通过开发板串口连接

通过串口连接 GPRS Modem 拨号上网时,需要使用四线线串口(也有人称为五线

串口,其中有一条是“地”):TXD,RXD,CTS 和 RTS,Mini6410 开发板的第

一个串口就是四线的,但它已经被用作 console 终端,因此不便于使用;开发板的

第二个串口也是四线的,它对应于板上的 CON2 引出座(设备名是/dev/ttySAC1),是 TTL 电平,我们需要先把它转换为 RS232 电平才可以连接 Modem,你可以使

用我们提供的串口转接板(型号:OneCom2),也可以自行制作一个,如下图

Page 99: Mini6410 um chinese

第 - 99 - 页

注意:我们的拨号程序在打开串口设备时,会设置 CTS 和 RTS,因此它们是必须

的;使用带有 CTS/RTS 信号的串口,可以让数据传输更加有完整保障。 (2) 通过 USB 转串口连接

如果你没有上面那种转接板,也可以使用 USB 转串口,我们配置的内核,支持大

部分 USB 转串口,它们大都具备全功能的串口,当然也包含了 CTS 和 RTS,如

图。

说明:当插入使用 USB 转串口时,一般会在/dev 目录下出现/dev/ttyUSB0 设备,

也可能是 ttyUSB1 等,请根据实际情况自行查看。

接下来,在“友善之臂”程序中点“GPRS 拨号上网”图标,首先出现一个设置窗口,

如图,如果你使用的是开发板上的 CON2 接转接板,就选/dev/ttySAC1;如果你使用的是 USB转串口,就选/dev/ttyUSB0 或根据实际情况选择。

在此,我们选择的是/dev/ttySAC1,点 OK 继续,出图如图界面。

Page 100: Mini6410 um chinese

第 - 100 - 页

拨号界面很简单,点“Connect”开始拨号,成功后,会显示分配到的 IP 地址,以及

DNS,如图。

此时点“Disconnect”可以断开链接,点“Minimize”可以把窗口 小化,我们点

“Minimize”把它缩小到任务栏,再打开浏览器,就可以实现无线拨号上网了。

Page 101: Mini6410 um chinese

第 - 101 - 页

4.1.18 使用 GPRS Modem 单发和群发短信

连接和设置方式同上,点“友善之臂”程序组中的“GPRS 短信”图标,打开程序界

面如图。

如果连接成功,此时“Status”显示“Ready”,有时会出现“Device Initing…”的提

示,这样的情况下,一般是不正常关机或者 Modem 上次连接后没有断开等情况导致的,也有

可能是线路连接不好,我们推荐使用 USB 转串口连接 Modem。 (1)短信单发 在“To:”右边的编辑框中输入要接收短信的手机号,在”Input”下面的编辑框中输入

要发送的内容,点“Send”就可以发出去了。 如果发送成功,在国内,一般你会收到网络服务商如中国移动自动返回的一些广告信

息;可以看到“Status”的显示为“Get SMS OK”,如图。

当然,你也可以使用自己的手机向开发板发送短信,它也是可以收到的,如图:

Page 102: Mini6410 um chinese

第 - 102 - 页

关于手机号码的格式: 在中国,你可以使用“+8613800138000”或者“13800138000”; 在国外,必须要添加国家区号,比如“+4423645789”,“+”后面的号码首先代表国

家代号,然后才是手机号码。 注意:因为没有中文输入法,因此是无法直接输入中文的,但你可以采用复制粘贴的

方式添加中文。 (2)短信群发 要群发短信,必须要有一个电话本文件“phonebook.txt”,这个名字是固定的,并且

必须放在 SD 卡的根目录下才可以,内容如下: Mindee

13800138000

张三

13800138000

李四

+8613800138000

其中姓名一行也可以不要,如下: 13800138000

13800138000

+8613800138000

插入 SD 卡到开发板,待自动识别后,点“Import PhoneBook”按钮,就可以导入电

话本了,此时,点“Send”就可以实现群发短信了,如图:

Page 103: Mini6410 um chinese

第 - 103 - 页

注意:本短信发送程序是无法保存接收到的短信的,收到的短信一般会自动存储到

SIM 卡,如果 SIM 卡满了,你可以点“Clean SIM”把这些短信完全清除掉,就又可以正常

使用了。

4.1.19 录音

音频驱动的录音功能暂时没有开发完,我们将在以后升级时完善。

4.1.20 使用 USB 摄像头拍照

问:我需要准备什么型号的 USB 摄像头? 答:你能买到的任何型号, 新的内核已经包含了 USB 摄像头万能驱动 把摄像头插到开发板的 USB Host 端口,然后在“友善之臂”程序组中,点击打开“USB

摄像头”程序,你将会看到动态的预览界面,调节一下摄像头的对焦,拍好姿势,点下“Snap”按钮就可以拍照了,拍摄的照片将会保存到“文档”组中。

本程序还可以调节亮度、对比度和伽马值;每个型号的摄像头在出厂时已经设定了

佳值或者缺省值,程序开启时会读取它们并以此设定。 注意:虽然内核中已经包含了万能驱动,但各个型号的摄像头输出格式却不尽相同,

受条件所限,我们不可能收集到所有型号的摄像头,本程序基本可以支持市面上常见的各种

型号摄像头,如果你的不支持,可以邮件和我们联系。

4.1.21 CMOS 摄像头预览拍照

本程序需要使用本公司提供的 CMOS 摄像头模块 CAM130,该模块也可以用于

Page 104: Mini6410 um chinese

第 - 104 - 页

mini2440 开发板,开机之前,把摄像头模块插到开发板的 CAMERA 接口上,在“友善之臂”

程序组中找到“CMOS 摄像头”,点击打开它,点 Snap 按钮可以对当前的动态预览进行拍照,

拍照后 Snap 按钮变为 Continue,点击它可以继续动态预览,同时照片会保存到“文档”组中

(实际位于开发板的/root/Documents/image/jpeg 目录中),在“文档”点击刚刚拍摄的照片,会

自动使用 Qtopia 的“图片”程序打开。 使用 CMOS 摄像头动态预览如图。

4.1.22 LCD 测试

LCD 测试程序是为了检测 LCD 有无坏点而做,对于学习型开发板来讲,我们 大可

容许不超过 3 个坏点,在“友善之臂”程序组中,点击打开“LCD 测试”,如图:

本程序有自动和手动两种测试模式: Auto-loop 是自动循环模式,执行它将会按图中依次循环全屏显示红、黄、白、青、

蓝、绿、粉红、黑共八种颜色,此过程中,点击屏幕任何地方就可以返回。 Manual-control 是手动模式,执行之后,每点击一次触摸屏,就会切换到另一种颜色,

直至红、黄、白、青、蓝、绿、粉红、黑八色完成一个循环,然后返回。

Page 105: Mini6410 um chinese

第 - 105 - 页

4.1.23 背光控制

在“友善之臂”程序组中,点击打开“背光控制”程序界面,如图:

按照提示,在屏幕上蓝色区域部分,任意点击一下,即可关闭 LCD 背光。注意:这

里仅仅是关闭了背光,系统各个程序仍在执行之中(如果对着灯光斜视 LCD,你会看到这个程

序的深暗界面)。在蓝色区域再点击一下,背光又会被点亮了。

4.1.24 A/D 转换

因驱动尚未完成,ADC 转换测试目前是不可用的。

4.1.25 按键测试

说明:在本开发板系统中,按键并没有任何专用功能,它仅仅为测试底层驱动而用。

在“友善之臂”程序组中,点击打开“Buttons”程序,此时按下开发板上的任意按键(可以是

多个),相应的按键图标就会变为蓝色,松开后恢复为灰色,如图。

Page 106: Mini6410 um chinese

第 - 106 - 页

4.1.26 触摸笔测试

要测试校正后触摸笔的准确性,可以在 LCD 上任意地方画线,对比笔针所到之处画

线是否有偏移,是否有抖动,这可以通过“随手写”程序来测试,该程序是由友善之臂开发

的一个简易画图程序。 在“友善之臂”程序组中打开“随手写”,打开后它出现一个浅黄色的画图区,用触

摸笔可以在上面任意涂画(画笔颜色为黑色,宽度为 1 pixel);点 File->Save 可以把所画保存为

png 格式的图片文件(保存位置: “Documents”,在板子中的位置:/Documents/image/png/),文件以 001 起始,总共可以保存 999 个文件。

可以看到书写比较流畅,也没有毛刺出现,这说明触摸笔是很准确的。

4.1.27 条码扫描

本开发板支持 USB 接口的条码扫描器(英文名称:Barcode Scanner),它其实是一个

HID 设备,等同于 USB 键盘。因此,在任何适合 USB 键盘输入的地方,都可以直接使用这

种条码扫描器。 需要注意的是,目前必须在图形界面启动之后插入 USB 扫描器才能正常使用,不能

在开机之前就插入。 接上 USB 扫描器,打开“应用程序”中的“文本编辑器”,使用扫描器扫描一些条码

(诸如快递单上、杂志等很多商品上都可以找到),可以看到条码数字被准确扫描到编辑器中

了。

Page 107: Mini6410 um chinese

第 - 107 - 页

4.1.28 语言设置

Qtopia 2.2.0 自带了“语言”设置,但已经和 Qtopia 1.7.0 有所不同,它只有英文支持,

因此我们重新开发了一个“语言设置”,它位于“友善之臂”程序组,点击打开它。

目前仅有 3 种语言可以选择:英文、中文和日文。试试选择“英文”:点“English”

可选项,再点“OK”,会跳出一个提示信息,询问你是否要改变语言,如果“Yes”,Qtopia系统就会重新启动,如果“No”则返回,(注意:中文和日文版本只是翻译了程序名称),如

图:

Page 108: Mini6410 um chinese

第 - 108 - 页

4.1.29 设置时区-日期-时间-闹钟

本开发板在出厂的时候日期是不准确的,不过你可以自己调整一下,因为 CPU 内置了

实时时钟(RTC),开发板上有备份电池,所以调整后的时间在关机后是可以”保存”的,当然这需

要相应的驱动支持了,调整时间的步骤如下: 点击任务栏右下角时间显示区域,会出现一个菜单,在其中选择“Set time…”,打开

时间设置界面,如图,在此界面你可以设置时区,调整日期和时间等。

你还可以在菜单中选择“Clock…”,将会出现钟表界面,如图

Page 109: Mini6410 um chinese

第 - 109 - 页

点其中的“Stop Watch”打开“秒表”程序,如图

另外你还可以设置闹钟,如图,闹钟时间到,从音频输出可以听过“嘀嘀”声,它会

持续一分钟,并出现如下界面,点“OK”可以结束闹钟声。

4.1.30 屏幕旋转

在“设置”程序组点“旋转”图标,进入相应的界面,如图,你可以选择 4 个界面旋

转方向,如图。

选择好你想要的方向,点“OK”返回,即可看到结果,如图。 说明:有时需要重新启动 Qtopia 系统才可以看到旋转的效果,因为这个程序是 Qtopia

Page 110: Mini6410 um chinese

第 - 110 - 页

自带的,为保持其代码原始性,我们没有去修改它。另外,旋转的效果完全是 Qtopia 软件实

现的,与 LCD 的底层驱动无关。 旋转后,你可以发现,所有的“友善之臂”应用小程序也都自动做了调整,这是我们

在各个应用程序中编码实现的,这样做是为了让同一套代码可以适用于多种型号的 LCD 显

示。

4.1.31 设置开机自动运行程序

“开机自动运行”可以让你设定任何 Qtopia 自带的程序或者用户自己的 Qtopia 程序

为开机后自动运行,它就像 Windows 系统中的“程序->启动”功能。 在“友善之臂”程序组中,点击“自动运行设置”图标打开它,如图:

图中左边一列”Program list”是要设定的程序名,它包含了所有的 Qtopia 程序(包括用

户 Qtopia 程序),右边一列”Status”表明该程序的状态是否已经被设置为“开机自动运行”,这

个状态是唯一的,所有程序只能有一个被标识。 在左侧列表中选择一个程序,如“串口助手”,这时它的状态被标识为“Auto Start”,

点“Save”按钮,会跳出保存成功的提示,这时关闭该程序,再重新启动系统(复位或者点“设

Page 111: Mini6410 um chinese

第 - 111 - 页

置->关机->Reboot),就可以看到开机后串口助手已经自动打开了执行了。

另外,要取消“开机自动运行”程序,可以点“Clean”,然后点“Close”,这时会出

现如图对话框,点“Yes”退出即可。

4.1.32 关于关机

在“设置”程序组中,有个“关机”图标,打开它,如图,其中有四个关机选项: Shutdown:按下此按钮,Linux 系统就会逐项关闭各个程序和服务,直到整个系统关

闭,这时 CPU 已经完全不工作了,此时整个系统的功耗是 低的。因为本开发板并无相应的

硬件关机电路,因此你仍然可以看到板上的电源灯在亮。 Reboot:这是“热”重启按钮,如果你使用的是 NOR FLASH 模式,系统会逐项关闭

各个应用和服务,重启后会停留在 Supervivi 的菜单模式;如果你使用的是 NAND FLASH 模

式,系统会逐项关闭各个应用和服务,然后自动重启重新进入 Qtopia 系统。 注意:Reboot 和后面所介绍的“看门狗”是完全不同的功能,“看门狗”属于“冷”

启动,它不会逐项关闭各个应用和服务,而是直接复位重启。 Restart Server 是指重新启动 Qtopia 图形系统,此时并不会影响到基本的 Linux 系统; Terminates Server 是指关闭 Qtopia 图形系统,点击它之后图形界面就完全失效了,此

时屏幕上的显示是遗留在内存中的数据,并不是有效的图形系统界面。

Page 112: Mini6410 um chinese

第 - 112 - 页

在“设置”程序组中,还有个“亮度和电源”的图标,因为本开发板并没有相应的电

源管理电路,因此它们也是无效的。 说明: 原始的 Qtopia 2.2.0 源代码系统是无法有效执行“Shutdown”和“Reboot”

的,我们对此进行了改进。

4.1.33 看门狗

看门狗是嵌入式系统中 常见的功能之一,S3C2440 芯片本身就带有看门狗, 新的

内核中已经包含了它的驱动,现在我们就在应用程序中启动它。 点“友善之臂”程序组,点击打开“看门狗”,如图:

注意,先不要点“Start”按钮,请看红色区域的提示: 一旦启动了看门狗,它就无法停止了,只有不停的去喂它,否则系统就会复位重启,

我们在此设定的倒数时间为 15 秒。 为了形象表示喂狗的动作,当喂狗时我们就丢给它一只骨头吃,如果一直点“Feed”

按钮,它就一直有骨头吃,这样系统也不会复位重启,如图:

Page 113: Mini6410 um chinese

第 - 113 - 页

4.1.34 启动 QtE-4.7.0

为了方便用户使用,我们实现了在同一个文件系统中让Qtopia-2.2.0和QtE-4.7.0共存,

在 Qtopia-2.2.0 系统中,通过点一个普通的应用程序图标就可以启动 QE-4.7.0;当关闭

QtE-4.7.0 程序时,又可以返回到 Qtopia-2.2.0,如图 说明:此处为 QtE-4.6.3 的截图,实际上为 QtE-4.7.0,它们的图标是一样的。

QtE-4.7.0 系统运行的界面如下图,它是一个 CoverFlow 效果的简易程序管理器,你

使用触摸笔可以左右拖动,并点击其中一个 Cover 来运行它

Page 114: Mini6410 um chinese

第 - 114 - 页

点“Exit Embedded Demo”可以退出 QtE-4.7.0,并返回 Qtopia-2.2.0

到此为止,我们就介绍完了大部分和硬件相关的基于图形界面的测试,系统里面还有

其他一些小程序,那些都是系统自带的,如果你有兴趣可以自己尝试一下。

4.2 通过串口终端操作开发板

说明:每个期望学习 Linux 的嵌入式爱好者都应该学会熟练使用终端控制台的操作,

所有平台的 Linux 指令都是相似的,超过 99%的命令是相同的。进行本小节的操作之前,请

先按照 2.1.3 章节正确设置好超级终端。 下图是通过串口终端显示的 Linux 登录界面,实际可能与此不完全相同,但基本都是

类似的,根据提示,按下回车,就可以开始 Linux 控制台之旅了。

Page 115: Mini6410 um chinese

第 - 115 - 页

4.2.1 播放 mp3

madplay 是我们移植的一个基于控制台下的 mp3 播放器。它有多种播放控制模式,

简单的使用方法是: #madplay your.mp3 该命令将以缺省模式播放 your.mp3 文件(开发板中并无 your.mp3 文件,这里只是举例

说明)。可以运行“madplay -h”查看其使用帮助,下面是播放开发板中预装包含的一首 mp3的截图:

Page 116: Mini6410 um chinese

第 - 116 - 页

4.2.2 如何中止程序的运行

要中止程序的运行,可以在终端控制台下同时按下 Ctrl+c,注意:先按 Ctrl,不要放

开,再按下 c 键即可。 例如:我们刚刚使用 madplay 命令播放了 mp3,如果要中止这个程序的运行,可以按

下 Ctrl+c 键。 另外,如果程序是在后台运行,可以使用 kill 命令杀掉该进程

4.2.3 使用优盘/移动硬盘

插入优盘之后,系统会自动创建一个/udisk 目录,并自动挂载优盘到上面,此时在串

口会出现类似如下信息:

Page 117: Mini6410 um chinese

第 - 117 - 页

实际上优盘设备对应的设备名为/dev/udisk。进入/udisk 目录,就可以看到里面的文件

了。注意:如果你的优盘无法识别,请检查一下它是不是 FAT32/VFAT 格式的

Page 118: Mini6410 um chinese

第 - 118 - 页

4.2.4 使用 SD 卡

和使用优盘一样,SD 卡也是自动识别挂载的,插入 SD 卡之后可以在串口看到如下

信息:

系统会会自动创建/sdcard 目录,并把 SD 设备挂载到上面,如图:

Page 119: Mini6410 um chinese

第 - 119 - 页

4.2.5 如何通过串口与 PC 互相传送文件

注意:使用 USB 转串口,有可能是不能顺利的,我们认为这和 USB 转串口线的质量

和性能有关。 当通过串口终端登录系统之后,可以使用 rz 或者 sz 命令通过串口与 PC 互相传送文

件,具体操作如下。 (1)使用 sz 向 PC 发送文件 在超级终端窗口中,点鼠标右键,在弹出的菜单中选择“接收文件”开始设置接收文

件目录和协议,如图所示。

然后在终端的命令行输入“sz /root/Documents/viva-la-vida.mp3”命令,开始向 PC 传送位于

“/root/Documents/”目录的 viva-la-vida.mp3 文件(或者其他文件,改一下路径和文件名就可以了),因为该文件比较大,所以需要多等几分钟,发送完毕,系统会自动保存文件到您设置的目录

里面,如图。

Page 120: Mini6410 um chinese

第 - 120 - 页

(2)使用 rz 命令下载文件到开发板 在串口终端输入“rz”命令,开始接收从 PC 传过来的文件。 然后在超级终端窗口中,点鼠标右键,在弹出的菜单中选择“发送文件”,设置好要

发送的文件和使用的协议,如图所示,开始向开发板发送文件。

点“发送”,开发板开始接收文件,如图所示。

Page 121: Mini6410 um chinese

第 - 121 - 页

接送完毕,将会在当前目录下得到同样文件名的文件,您可以使用 md5sum 命令验证

该文件是否和源文件相同。

4.2.6 控制板上的 LED

测试程序名称: led-player leds 备注 源代码文件名 led-player.c led.c 源代码在光盘中的位置 解压 Linux\examples.tgz 可得 开发板上对应的设备名 /dev/leds 对应的内核驱动源代码 Linux-2.6.28.6/drivers/char/mini6410_leds.c 其他:

程序名称: leds.cgi 备注 源代码或者源代码包的名称 Leds.cgi 在开发板中 源代码或者源代码包的位置 位于开发板中的/www 目录中 说明:

leds.cgi 是一个 shell 脚本文件,它并不是二进制程序,该脚本通过 leds.html 被调用,

其中使用的是 普通的网页设计技术。 解压光盘中的 root_default.tgz 也可以在其中的 www 目录得到 leds.cgi 和 leds.html 文件,

它们都是脚本,本身就是源代码,使用任何文本编辑器(如 Windows 的“记事本”)都可以

打开。

说明:Led-player 和通过网页控制 LED 均为友善之臂早期为 SBC2410 开发的简易示

例程序,因其硬件无关性,所以可以方便的移植到其他系统。目前市面上有的书籍,部分

2410/2440/6410 开发板厂商均采用了这个典型的管道应用示例。

Page 122: Mini6410 um chinese

第 - 122 - 页

(1) LED 服务器 开机进入系统后,将会自动运行运行一个 LED 服务程序(/etc/rc.d/init.d/leds),它其实

是调用了 led-player 的一个脚本,led-player 开始运行后,将会在/tmp 目录下创建一个

led-control 管道文件,向该管道发送不同的参数可以改变 led 的闪烁模式: #echo 0 0.2 > /tmp/led-control 运行该命令后,4 个用户 led 将会以每个间隔 0.2 秒的时间运行跑马灯。 #echo 1 0.2 >/tmp/led-control 运行该命令后,4 个用户 led 将会以间隔 0.2 秒的时间运行累加器。 #/etc/rc.d/init.d/leds stop 运行该命令后,4 个用户 led 将会停止闪动。 #/etc/rc.d/init.d/leds start 运行该命令后,4 个用户 led 将会重新开始闪动。

(2)单独控制 LED /bin/leds 是一个可以控制单个 led 的实用程序,要使用 leds 必须先停止 led-player,如

下命令: #/etc/rc.d/init.d/leds stop 该命令将停止 led-player 对 led 的操纵。led 的使用方法如下: [root@fa /]# led Usage: leds led_no 0|1 led_no 是要操作的 led(可为 0,1,2,3),0 和 1 分别代表关闭和点亮。 #led 2 1 将点亮 LED3

4.2.7 测试板上的按键

测试程序名称: buttons 备注 测试程序源代码文件名 Buttons_test.c 测试程序源代码位置 解压 linux\examples.tgz 可得 开发板上对应的设备名 /dev/buttons 对应的内核驱动源代码 Linux-2.6.28/drivers/char/mini6410_buttons.c 其他:

在命令行输入“buttons”命令,然后按开发板上的按键,可以显示对应的键值,如图

Page 123: Mini6410 um chinese

第 - 123 - 页

4.2.8 串口测试

说明:armcomtest 是友善之臂为了方便测试而开发的 linux 下的简易实用串口终端程

序,它使用标准的系统调用,和硬件无关。一般 Linux 系统系统启动后,串口 0,1,2 对应的设

备名分别为/dev/ttySAC0,1,2,3 测试串口 2 需要借助另一台带有串口的 PC,使用我们提供的串口线和扩展小板(选购

配件),连接好COM2和另一台PC的串口,并如前所述设置该PC的超级终端为波特率 115200,无流控制,其他默认。

在命令行下输入: #armcomtest –d /dev/ttySAC1 -o 这时如果输入字符会在另一台 PC 的超级终端出现,反之亦然。 如果要测试串口 3,则需要连接扩展小板的 COM3,并在命令行输入: #armcomtest –d /dev/ttySAC2 -o 下面是测试时的界面:

Page 124: Mini6410 um chinese

第 - 124 - 页

4.2.9 测试蜂鸣器

在命令行种输入:pwm_test 可以听到蜂鸣器的发出的声音,按“+”或者“-”可以改变输出的频率,如图。 按 ESC 键中止该测试。

Page 125: Mini6410 um chinese

第 - 125 - 页

4.2.10 控制 LCD 的背光

提示: LCD 背光设备文件:/dev/backlight 在命令行种输入:echo 0 > /dev/backlight 可以关闭 LCD 背光。 在命令行种输入:echo 1 > /dev/backlight 可以打开 LCD 背光。

4.2.11 测试 I2C-EEPROM

在命令行种输入:i2c –w 可以向板子的 24C08 器件中写入数据(0x00-0xff)

Page 126: Mini6410 um chinese

第 - 126 - 页

在命令行中输入:i2c –r 可以从板子的 24C08 器件中读出输出

4.2.12 AD 转换测试

因驱动尚未完成,目前该测试尚无法进行。

Page 127: Mini6410 um chinese

第 - 127 - 页

4.2.13 测试 TV-OUT

进入/usr/bin 目录,注意不是“/user/bin”,运行 tv-test 命令可以进行 TV-OUT 测试,

程序将自动播放/usr/bin/TestVectors/wanted.264 文件,并输出至电视,如图 #cd /usr/bin #tv-test

4.2.14 测试多媒体播放

进入/usr/bin 目录,注意不是“/user/bin”,运行以下命令可以进行多媒体播放测试,

它有不同的测试项,你可以逐个试试: #cd /usr/bin #multimedia-test 如图,是播放 H.264 高清解码的画面

Page 128: Mini6410 um chinese

第 - 128 - 页

4.2.15 CMOS 摄像头动态预览

把 CAM130 摄像头模块插到开发板的 CAMERA 接口上,打开电源进入命令行终端,

在命令行输入 camtest 命令,可以看到 CMOS 摄像头的动态预览画面。

4.2.16 使用 telnet 上 bbs

telnet 是一个经常被使用的远程登录工具,使用 telnet 功能,可以从开发板登录到其

他提供了 telnet 服务器的主机,如果您接入开发板的网络可以上互联网,则可以通过 telnet命令登录外部的 bbs。

首先,确认开发板的 IP 地址是否为 192.168.1.230,并且是否和局域网内其他主机相

通,如图为成功的信息。

Page 129: Mini6410 um chinese

第 - 129 - 页

然后设置路由 IP:route add default gw 192.168.1.1 后使用 telnet 命令登录您要登录的主机,在此登录的是华南木棉 bbs。

Page 130: Mini6410 um chinese

第 - 130 - 页

4.2.17 如何设置网络以访问互联网

首先要确保你的网络环境可以正常登陆互联网,请记下你的网络环境所使用的网关 IP地址,比如在我这里是 192.168.1.1,然后使用 route 进行设置:

# route add default gw 192.168.1.1 这时你就可以直接访问互联网上的数字 IP 地址了,比如 ping 一下华南木棉的 BBS(其 IP

地址为 202.112.17.137): #ping 202.112.17.137 如图所示表示可以 ping 通外面的网络:

Page 131: Mini6410 um chinese

第 - 131 - 页

要能 ping 通外部网络的实名网址,还需要设置好域名解析服务器,先查看一下您当

前网络所使用的 DNS 服务器 IP 地址(可以询问您的网络管理员):

Page 132: Mini6410 um chinese

第 - 132 - 页

比如,我这里 DNS 服务器的 IP 为“202.96.128.86”,则在开发板中这样设置: #rm /etc/resolv.conf ;首先删除以前的配置文件 #touch /etc/resolv.conf ;重新生成一个 resolv.conf 文件 #echo nameserver 202.96.128.86 >> /etc/resolv.conf ;使用实际的DNS服务器 IP配置

resolv.conf 文件 可以这里主要是修改/etc/resolv.conf 文件,当然你也可以直接使用 vi 进行修改。 全部过程如下图所示:

4.2.18 如何设置 MAC 地址

开发板中所使用的 MAC 地址是“软”性的,因此你可以通过 ifconfig 命令对它进行

重置,以适应于在同一个网络环境中使用多片开发板的情况,具体操作如下: 首先使用 ifconfig 查看一下当前的 mac 地址,运行: #ifconfig ;注意后面不要跟任何内容

Page 133: Mini6410 um chinese

第 - 133 - 页

可以看到当前的 mac 地址为“08:90:90:90:90:90”,这是在网卡驱动中默认的

mac 地址,它已经被写死到内核中,除非更改网卡的驱动源代码并重新编译得到新内核。要

在运行的系统中动态更改 mac 地址,先关闭当前网络,并使用 ifconfig 重置 mac 地址: #ifconfig eth0 down #ifconfig eth0 hw ether 00:11:AA:BB:CC:DD ;提示:a,b,c,d,e,f 可以为小写 再开启网络,并使用 ifconfig 查看设置以后的 mac 地址,使用 ping 检验网络是否依然

可通: #ifconfig eth0 up #ifconfig #ping 192.168.1.1

Page 134: Mini6410 um chinese

第 - 134 - 页

4.2.19 如何使用 Telnet 登录开发板

说明:6410 系统所用的部分程序和 2440 效果是相同的,以下截图使用了 mini2440的截图,仅供参考,请以实际情况为准。

开发板开机正常运行后,其实已经启动了一个 Telnet 服务,因此用户也可以通过网络

远程登录开发板。 在 Windows 的命令行窗口输入“telnet 192.168.1.230”,如图出现登录界面,输入“root”

(不需要密码)进入系统。

Page 135: Mini6410 um chinese

第 - 135 - 页

4.2.20 使用 ftp 传递文件

说明:6410 系统所用的部分程序和 2440 效果是相同的,以下截图使用了 mini2440的截图,仅供参考,请以实际情况为准。

开发板开机正常运行后,其实已经启动了一个 Telnet 服务,因此用户也可 无论在 Linux 系统还是 windows 系统中,一般安装后都自带一个命令行的 ftp 命令程

序,使用 ftp 可以登录远程的主机,并传递文件,这需要主机提供 ftp 服务和相应的权限;本

开发板不仅带有 ftp 命令,还在开机时启动了 ftp 服务。为了方便测试,我们可以从 PC 机的

命令行窗口登录开发板,并向开发板传递文件。 注意:请确保您执行 ftp 所在的目录有需要上传的文件,这里是 test.mp3 说明:登录开发板的 ftp 帐号为:plg 密码为:plg 传送完毕,您可以在串口终端看到目标板的/home/plg 目录下多了一个 test.mp3 文件。

4.2.21 通过网页控制板上的 LED

说明:6410 系统所用的部分程序和 2440 效果是相同的,以下截图使用了 mini2440的截图,仅供参考,请以实际情况为准。

在 web server 测试页面中点“网络控制 LED 测试”项,会出现 LED 测试控制页面,

如图

Page 136: Mini6410 um chinese

第 - 136 - 页

您可以使用网页中的各个测试项目进行测试,其中的“LED 测试”将会通过 CGI 程

序来控制板上的 LED 灯,其中包括 2 种方式的显示类型和三种不同的显示速度。 如果要停止 web 服务器,则在命令提示符下输入以下命令: #/etc/rc.d/init.d/httpd stop 要重新启动则输入: #/etc/rc.d/init.d/httpd start

4.2.22 如何挂接使用网络文件系统 NFS

在进行该测试之前,请先在 PC 端搭建好 NFS 服务器系统,然后在命令行输入以下命

令(假定服务器的 IP 地址为 192.168.1.111): #mount –t nfs –o nolock 192.168.1.111:/opt/FriendlyARM/mini6410/root_qtopia_qte

/mnt 挂接成功,您就可以进入/mnt 目录进行操作了,如下图所示。 取消挂接的命令如下: #umount /mnt

Page 137: Mini6410 um chinese

第 - 137 - 页

4.2.23 设置并保存系统实时时钟

Linux 中更改时间的方法一般使用 date 命令,为了把 S3C2440 内部带的时钟与 linux 系统时钟同

步,一般使用 hwclock 命令,下面是它们的使用方法: (1) date -s 042916352007 #设置时间为 2007-04-29 16:34 (2) hwclock -w #把刚刚设置的时间存入 S3C2440 内部的 RTC (3).开机时使用 hwclock -s 命令可以恢复 linux系统时钟为RTC, 一般把该语句放入

/etc/init.d/rcS 文件自动执行。 注意:我们提供的系统已经把 hwclock –s 命令写入 rcS 文件。

4.2.24 如何掉电保存数据到 Flash

由于本系统采用了可读写文件系统 yaffs2(在嵌入式系统中,专门管理 Flash 存储器的

一种文件系统),因此可以很方便的动态保存数据,掉电后不会丢失。开机后在串口终端运行

以下命令: #cp / shanghaitan.mp3 /home/plg 此时将在/home/fa 目录下复制一个同样的文件,然后关机,重新开启系统,可以查看

到/home/plg 目录下的文件依然存在。

Page 138: Mini6410 um chinese

第 - 138 - 页

4.2.25 设置开机自动运行程序

借助启动脚本可以设置各种程序开机后自动运行,也可以设置其他系统设置,这有点

类似于 Windows 系统中的 Autobat 自动批处理文件,启动脚本的位于板子的/etc/init.d/rcS,内

容如下(实际内容可能与此不完全一致): #! /bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin: runlevel=S prevlevel=N umask 022 export PATH runlevel prevlevel # # Trap CTRL-C &c only in this shell so we can interrupt subprocesses. # trap ":" INT QUIT TSTP /bin/hostname FriendlyARM /bin/mount -n -t proc none /proc /bin/mount -n -t sysfs none /sys /bin/mount -n -t usbfs none /proc/bus/usb /bin/mount -t ramfs none /dev echo /sbin/mdev > /proc/sys/kernel/hotplug /sbin/mdev -s /bin/hotplug # mounting file system specified in /etc/fstab mkdir -p /dev/pts mkdir -p /dev/shm /bin/mount -n -t devpts none /dev/pts -o mode=0622 /bin/mount -n -t tmpfs tmpfs /dev/shm /bin/mount -n -t ramfs none /tmp /bin/mount -n -t ramfs none /var mkdir -p /var/empty mkdir -p /var/log mkdir -p /var/lock mkdir -p /var/run mkdir -p /var/tmp

Page 139: Mini6410 um chinese

第 - 139 - 页

/sbin/hwclock -s syslogd /etc/rc.d/init.d/netd start echo " " > /dev/tty1 echo "Starting networking..." > /dev/tty1 sleep 1 /etc/rc.d/init.d/httpd start echo " " > /dev/tty1 echo "Starting web server..." > /dev/tty1 sleep 1 /etc/rc.d/init.d/leds start echo " " > /dev/tty1 echo "Starting leds service..." > /dev/tty1 echo " " sleep 1 /sbin/ifconfig lo 127.0.0.1 /etc/init.d/ifconfig-eth0 ;设置开机静态 IP 地址,这是一个脚本,你可以使用 vi 打开并

编辑 #/bin/qtopia & echo " " > /dev/tty1 echo "Starting Qtopia, please waiting..." > /dev/tty1

4.2.26 如何使用命令进行屏幕截图

使用 snapshot 命令可以对当前的 LCD 显示进行截图,并保存为 png 格式的图片。 #snapshot pic.png 执行该命令将把当前 LCD 显示进行抓图,并保存为 pic.png 文件。

4.2.27 查看开发板内存信息

本开发板配备了 128M DDR RAM,但有用户反映在系统中只查看到大约68M总内存,

这是因为多媒体驱动“吃掉”了不少内存空间,下面我们对此简单说明一下: 一般我们使用“cat /proc/meminfo”命令系统内存信息,该信息仅说明了整个 Linux

软件系统所能分配到的内存总量,它的结果如下图所示,总共为 70M 左右。

Page 140: Mini6410 um chinese

第 - 140 - 页

实际上,6410 内部的多媒体协处理器也会用到一些内存,运行“dmeg”命令可以看

到详细的内存分配,如图:

在 u-boot 启动系统之前,也可以查看到实际的内存大小,如图:

Page 141: Mini6410 um chinese

第 - 141 - 页

4.3 安装并设置 Fedora9

本小节从在虚拟机/PC 机上安装 Fedora 9.0 开始,详细介绍了如何建立 Linux 开发环

境。 我们的软件开发和测试全部基于Fedora9 平台做开发,所有的配置和编译脚本也基于

此平台,我们没有在其他平台上测试过。如果你对Linux开发佷熟悉,相信你会根据错误提示

逐步找到原因并解决,它们一般是你选用的平台缺少了某些库文件或者工具等原因造成的;

否则,我们建议初学者使用和我们一致的平台,即Fedora 9(全称为: Fedora-9-i386-DVD.iso),你 可 以 在 其 官 方 网 站 下 载

(ftp://download.fedora.redhat.com/pub/fedora/linux/releases/9/Fedora/i386/iso/Fedora-9-i386-DVD.iso ,不保证长期有效),也可以在其他地方获取,它们都是一样的,安装时请务必参考我们

手册提供的步骤,这是我们经过严格测试的,以免遗漏一些开发时所需要的组件。 Linux 的发行版本众多,我们无法为此一一编写文档解释安装方法,请谅解。 我们为什么选择 Fedora 9: 根据我们的测试,Fedora 9 经过比较简单的安装和设置,依然可以使用 root 用户登录

(大多数开发均需要此用户权限),Fedora 10 及其以后的版本则需要经过稍微复杂的设置才能

使用 root,这不利于不了解 Linux 的初学者,Fedora 8 及其以前的版本则相对老了一些。并且

按照我们手册提供的步骤安装 Fedora 9,可以比较完美配合我们提供的开发软件包,不再需

要其他补丁之类的繁琐设置(ubuntu 就需要经常这样更新设置),因此我们认为 Fedora 9 是

适合初学者的开发平台。

4.3.1 图解安装 Fedora 9.0

Step1: 将的安装光盘放到光驱中,将 BIOS 改为从光盘启动, 启动后系统将会出现

Page 142: Mini6410 um chinese

第 - 142 - 页

如下界面,按回车继续。

Step2:然后进入下一步, 检查安装盘, 一般不需要检测, 所以选择了 Skip(跳过)

Step3:过一会儿就进入安装图形化画面, 点击 Next 即可.

Page 143: Mini6410 um chinese

第 - 143 - 页

Step4:选择安装过程用什麽语言, 这里选择的是英文

Step5:选键盘, 我们一般选美式键盘即可

Page 144: Mini6410 um chinese

第 - 144 - 页

Step6:开始设置网络

点“Edit”按钮,不要设置为 DHCP, 我们一般使用静态的 IP, 对照下面进行填写,

分别输入 IP 和子网掩码

Page 145: Mini6410 um chinese

第 - 145 - 页

点“OK”返回,开始设置机器名和网关以及 DNS 等

Step7:设置时区,如果你不使用虚拟机安装,“System clock uses UTC”选项可以去

掉,如图

Page 146: Mini6410 um chinese

第 - 146 - 页

Step8:设置 root 用户密码,必须是 6 位数以上。

Step9:设置分区,一般选择默认即可,注意要备份好硬盘数据

Page 147: Mini6410 um chinese

第 - 147 - 页

点“Next”会出现警告信息,告诉你继续执行会格式化分区中的所有数据,一般我们

在 Vmware 虚拟机中使用,因此可以选“Write changes to disk”,之后开始进行格式化操作。

这是格式化的进程图:

Page 148: Mini6410 um chinese

第 - 148 - 页

Step11:选择安装类型,选择如图,点“Next”开始定制。

Step12:在 Servers 项中,选择如图

Page 149: Mini6410 um chinese

第 - 149 - 页

Step13:开始安装系统,此过程时间会比较长,请耐心等待。

Step14:安装完毕,如图

Page 150: Mini6410 um chinese

第 - 150 - 页

Step15:接上一步,按“Reboot“按钮重启系统,出现第一次使用的界面,如图。

Step16:一些授权信息,不必理会,继续下一步

Page 151: Mini6410 um chinese

第 - 151 - 页

Step17:创建用户,在此我们不需要创建任何新的用户,点“Forward”继续

这时会出现提示信息让你确认,点“Continue”继续下一步。

Page 152: Mini6410 um chinese

第 - 152 - 页

Step18:设置日期和时间,不必理会,继续下一步

Step19:列出了本机的一些硬件信息,采用缺省设置,点“Finish”

Page 153: Mini6410 um chinese

第 - 153 - 页

出现提示信息,如图选择,进行下一步

Step20:出现登录界面,我们要以 root 用户进行登录,因此先输入 root

Page 154: Mini6410 um chinese

第 - 154 - 页

再输入刚才设定的密码

登录后会出现一个提示,以后如果你以 root 用户登录,每次都会出现这个提示,每次

均点“Continue”即可。

Page 155: Mini6410 um chinese

第 - 155 - 页

这是登录后的界面,它和 Windows 或者 Ubuntu 是十分类似的。

4.3.2 添加新用户

为了方便开发,我们通常创建一个普通权限的用户,步骤如下。 Step1:如图打开用户和组管理器:

Page 156: Mini6410 um chinese

第 - 156 - 页

Step2:出现用户管理窗口

Step3:点工具栏的“Add User”按钮,添加新用户,并设置密码:

Page 157: Mini6410 um chinese

第 - 157 - 页

点“OK”返回,可以看到已经增加了 plg 用户,同时/home 目录下也增加了 plg 用户

目录,如图:

点 Add User 按钮,出现添加新用户窗口,按提示操作就可以了。

Page 158: Mini6410 um chinese

第 - 158 - 页

4.3.3 访问 Windows 系统中的文件

无论你使用的是虚拟机还是真实的 Fedora9 系统,都可以佷方便的访问 Windows 中的

共享文件,前提是两个系统之间的网络是互通的。 提示:要在虚拟机中使用网络, 简单的方式是设置“Guest”为“Bridges”方式的

网络连接,如图:

访问 Windows 系统中共享文件的步骤如下: Step1:在 Windows 中设置共享文件夹“share_f9”(示例)

Page 159: Mini6410 um chinese

第 - 159 - 页

Step2:在 Fedora9 系统中如图操作:

打开如图窗口:

Page 160: Mini6410 um chinese

第 - 160 - 页

在 Service type 列表中选择 Windows share,如图:

输入所要共享 Windows 主机的 IP 地址和共享文件夹的名字:

Page 161: Mini6410 um chinese

第 - 161 - 页

点“Connect”,会出现如下提示窗口:

不必理会,直接点“Connect”即可,就可以看到 Windows 共享文件中的内容了,在

此你可以像操作其他目录一样来使用它。

Page 162: Mini6410 um chinese

第 - 162 - 页

如果你想在命令行使用这个目录,可以这样操作: 说明:在控制台下,TAB 键是一个很好使用的小技巧。

要想断开共享目录,只要在桌面的共享文件夹上用右键如图操作就可以了:

Page 163: Mini6410 um chinese

第 - 163 - 页

4.3.4 配置网络文件系统 NFS 服务

使用本开发板做开发,NFS 服务并不是必须的,因为 NFS 主要是用于通过网络远程

共享文件,我们使用常见的 ftp 或者 SD 卡,基本上也可以达到同样的目的。 NFS 服务对于没有接触过 Linux 的人来讲可能比较难以理解,另外,每个人的网络环

境也不尽相同,因此设置和使用并没有严格的标准,这就导致初学者比较难以掌握,所以我

们并不推荐使用,在此提供的步骤仅供参考;事实上,网络上有很多爱好者根据自己的情况

记录了经验总结,你也可以自己搜索看看,关键词是“mini2440 nfs”,它们都是大同小异的,

并且可以适用于 6410 系统。

Step1:设置共享目录 以 root 身份登录 Fedora9,在命令行运行: #gedit /etc/exports 编辑 nfs 服务的配置文件(注意:第一次打开时该文件是空的),添加以下内容: /opt/FriendlyARM/mini6410/linux/root_qtopia_qt4 *(rw,sync,no_root_squash) 其中: /opt/FriendlyARM/mini6410/linux/root_qtopia_qt4 表示将要共享的的目录,它可以作

为开发板的根文件系统通过 nfs 挂接; * 表示所有的客户机都可以挂接此目录 rw 表示挂接此目录的客户机对该目录有读写的权力 no_root_squash 表示允许挂接此目录的客户机享有该主机的 root 身份 说明:实际上该目录目前尚不存在,执行完 4.4 章节的内容之后才会有,在此只是先

设置它。

Page 164: Mini6410 um chinese

第 - 164 - 页

Step2: 启动 NFS 服务 可以通过命令行和图形界面两种方式启动 NFS 服务,我们建立 NFS 服务的目的是通

过网络对外提供目录共享服务,但默认安装的 Fedora 系统开启了防火墙,这会导致 NFS 服务

无法正常使用。因此先关闭防火墙,在命令行输入“lokkit”命令,打开防火期设置界面:

选择其中(*)Disabled,然后选择“OK”退出,这样就永久的关闭了防火墙。 下面是启动 NFS 服务的方法和步骤: (1)通过命令启动和停止 nfs 服务 在命令行下运行: #/etc/init.d/nfs start 这将启动 nfs 服务,可以输入以下命令检验 nfs 该服务是否启动。 # mount -t nfs localhost: /opt/FriendlyARM/mini6410/root_qtopia_qt4 /mnt/ 如 果 没 有 出 现 错 误 信 息 , 您 将 可 以 浏 览 到 /mnt 目 录 中 的 内 容 和

/opt/FriendlyARM/mini6410/root_qtopia_qt4 是一致的。 使用这个命令可以停止 nfs 服务: #/etc/init.d/nfs stop (2)通过图形界面启动 NFS 服务 为了在每次开机时系统都自动启动该服务,可以输入 # serviceconf 打开系统服务配置窗口,在左侧一栏找到 nfs 服务选项框,并选中它,然后点工具栏

的“Enable”启动它,如图。

Page 165: Mini6410 um chinese

第 - 165 - 页

Step3: 通过 NFS 启动系统 当 NFS 服务设置好并启动后,我们就可以把 NFS 作为根文件系统来启动开发板了。

通过使用 NFS 作为根文件系统,开发板的“硬盘”就可以变得很大,因为您使用的是主机的

硬盘,这是使用 Linux 作为开发经常使用的方法。 设置开发板为 SDBOOT 启动,注意需要进入菜单模式(见 2.4 章节),连接好电源,串

口线,网线;打开串口终端,输入以下命令(不需要加引号): console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.111:/opt/FriendlyARM/mini6410/root_qtopia_qt4 ip=192.168.1.70:192.168.1.111:192.168.1.111:255.255.255.0:mini6410.arm9.net:eth0:off

各参数的含义如下: nfsroot 是开发主机的 IP 地址,如果你使用了虚拟机,该地址是虚拟机中 Fedora9 的

IP 地址,总之,它是直接提供 NFS 服务的 Linux 系统 IP 地址。 “ip=”后面: 第一项(192.168.1.70)是目标板的临时 IP(注意不要和局域网内其他 IP 冲突); 第二项(192.168.1.111)是开发主机的 IP; 第三项(192.168.1.111)是目标板上网关(GW)的设置; 第四项(255.255.255.0)是子网掩码; 第五项是开发主机的名字(一般无关紧要,可随便填写) eth0 是网卡设备的名称。 由于该命令比较长,容易输入错误,我们已经把它写入了光盘的 nfs.txt 文件中,这样

您直接复制过来就可以了,如图,回车后,该启动参数将被自动保存在 NAND 中。

Page 166: Mini6410 um chinese

第 - 166 - 页

然后输入 b,按回车就可以通过 nfs 启动系统了。

4.3.5 建立交叉编译环境

在 Linux 平台下,要为开发板编译内核,图形界面 Qtopia/Qt4,bootloader,还有其他

一些应用程序,均需要交叉编译工具链,我们使用的是 arm-linux-gcc-4.4.1,下面是安装它的

Page 167: Mini6410 um chinese

第 - 167 - 页

详细步骤。 Step1:将光盘 Linux 目录中的 arm-linux-gcc-4.4.1.tgz 复制到 Fedora9 某个目录下如

tmp/,然后进入到该目录,执行解压命令: #cd /tmp #tar xvzf arm-linux-gcc-4.4.1.tgz –C / 注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,

在此是改变目录的意思。 执行该命令,将把 arm-linux-gcc 安装到/usr/loca/arm/4.4.1 目录。 解压过程如图所示:

Step2:把编译器路径加入系统环境变量,运行命令 #gedit /root/.bashrc 编辑/root/.bashrc 文件,注意“bashrc”前面有一个“.”,修改 后一行为 export

PATH=$PATH:/usr/local/arm/4.4.1/bin,注意路径一定要写对,否则将不会有效。 如图,保存退出。

Page 168: Mini6410 um chinese

第 - 168 - 页

重新登录系统(不必重启机器,开始->logout 即可),使以上设置生效,在命令行输入

arm-linux-gcc –v,会出现如下信息,这说明交叉编译环境已经成功安装。

Page 169: Mini6410 um chinese

第 - 169 - 页

4.4 解压安装源代码及其他工具

本小节将解压安装开发学习过程所用到的全部源代码以及其他一些小工具,这包括: - Linux 内核源代码 - Qropia-2.2.0 平台源代码(分为 x86 和 arm 平台两个版本) - QtE-4.7.0 平台源代码(arm 版本) - busybox-1.13 源代码 - Linux 编程示例源代码 - U-boot 源代码 - 目标文件系统目录 - 目标文件系统映象制作工具(包括 yaffs2 和 UBIFS) - 图形界面的 Linux logo 制作工具 logomaker 注意:所有的源代码和工具都是通过解压方式安装的,所有的源代码均使用统一的编

译器 arm-linux-gcc-4.4.1 编译 下面是详细的解压安装过程,并有简要的介绍。

4.4.1 解压安装源代码

首先创建工作目录/opt/FriendlyARM/mini6410/linux 在命令行执行 #mkdir –p /opt/FriendlyARM/mini6410/linux 后面步骤的所有源代码都会解压安装到此目录中: (1)准备好 Linux 源代码包 在 Fedora9 系统中/tmp 目录中创建一个临时目录/tmp/linux #mkdir /tmp/linux 把光盘中 linux 目录中的所有文件都复制到/tmp/linux 目录中 说明:这样做是为了统一下面的操作步骤,其实你可以使用其他目录,也可以直接从

光盘解压安装。 (2)解压安装 U-boot 源代码 在工作目录/opt/FriendlyARM/mini6410/linux 中执行: #cd /opt/FriendlyARM/mini6410/linux #tar xvzf /tmp/linux/u-boot-mini6410-20100622.tar.gz 将创建生成 u-boot-mini6410 目录,里面包含了完整的 U-boot 源代码 说明:20100622 是我们的发行更新日期标志,请以光盘中实际日期尾 为准。 (3)解压安装 Linux 内核源代码

Page 170: Mini6410 um chinese

第 - 170 - 页

在工作目录/opt/FriendlyARM/mini6410/linux 中执行: #cd /opt/FriendlyARM/mini6410/linux #tar xvzf /tmp/linux/linux-2.6.28.6-mini6410-20100721.tar.gz 将创建生成 linux-2.6.28.6 目录,里面包含了完整的内核源代码 说明:20100721 是我们的发行更新日期标志,请以光盘中实际日期尾 为准。 (4)解压安装目标文件系统 执行以下命令: #cd /opt/FriendlyARM/mini6410/linux #tar xvzf /tmp/linux/ rootfs_qtopia_qt4-20100720.tgz 将创建生成 linux-2.6.28.6 目录,里面包含了完整的内核源代码 说明:20100720 是我们的发行更新日期标志,请以光盘中实际日期尾 为准。 (5)解压安装嵌入式图形系统 qtopia 源代码 在工作目录/opt/FriendlyARM/mini6410/linux 中执行: #cd /opt/FriendlyARM/mini6410/linux #tar xvzf /tmp/linux/x86-qtopia-20100420.tar.gz #tar xvzf /tmp/linux/arm-qtopia-20100419.tar.gz 将创建 x86-qtopia 和 arm-qtopia 两个目录,并内含相应的全部源代码。 说明:x86-qtopia 和 arm-qtopia 后面或许会有日期尾 ,它是我们的发行或更新日期

标志,请以光盘中实际日期尾 为准。源代码包中也包含了嵌入式浏览器 konquor 的源代码。 另外,为了方便用户学习开发使用,此源代码包相比 Qt 公司的原始版本已经打过补

丁,并做了诸多改进,它们都是源代码方式,我们不再一一赘述,感兴趣者可自行比较。 (6)解压安装 QtE-4.7.0 源代码 在工作目录/opt/FriendlyARM/mini6410/linux 中执行: #cd /opt/FriendlyARM/mini6410/linux #tar xvzf /tmp/linux/x86-qte-4.6.1-20100516.tar.gz #tar xvzf /tmp/linux/arm-qte-4.7.0-20100802.tar.gz 将创建 x86-qte-4.6.1 和 arm-qte-4.7.0 两个目录,并内含相应的全部源代码。 说明:x86-qte 和 arm-qte 压缩包后面或许会有日期尾 ,它是我们的发行或更新日期,

请以光盘中实际日期尾 为准。其中 x86-qte-4.6.1 主要是创建 Creator 开发平台,版本稍微低

一些不会影响开发。 (7)解压安装 busybox 源代码 Busybox是一个轻型的linux命令工具集,在此使用的是busybox-1.13.3 版本。用户可以

从其官方网站下载 新版本(http://www.busybox.net)。 在工作目录/opt/FriendlyARM/mini6410/linux 中执行: #cd /opt/FriendlyARM/mini6410/linux #tar xvzf /tmp/linux/busybox-1.13.3-mini6410.tar.gz 将创建 busybox-1.13.3 目录,内含相应版本的全部源代码。

Page 171: Mini6410 um chinese

第 - 171 - 页

说明:为了方便用户编译使用,我们做了一个缺省的配置文件 fa.config。 (8)解压安装 Linux 示例程序 执行以下命令: #cd /opt/FriendlyARM/mini6410/linux #tar xvzf /tmp/linux/ examples-mini6410-20100722.tgz 将创建 examples 目录,并包含初学 linux 编程代码示例。 说明:20100722 是我们的发行更新日期标志,请以光盘中实际日期尾 为准。examples

目录中的代码均为友善之臂自主开发,并全部以源代码方式提供,它们都是一些基于命令行

的小程序。

4.4.2 解压创建目标文件系统

根据触摸屏的连接配置方式,为了方便用户使用,我们制作了 2 个目标文件系统压缩

包: rootfs_qtopia_qt4-20100917.tgz rootfs_qtopia_qt4-s-20100917.tgz

其中:带“-s”的表示适合于采用专业串口触摸屏控制器的 LCD 套餐,它适合于大

尺寸的四线电阻触摸屏,会达到更好的效果;不带“-s”的表示采用了 ARM 本身触摸屏控制

器。这两个文件的唯一不同之处在于“/etc/friendlyarm-ts-input.conf”配置文件的定义。 执行以下命令: #cd /opt/FriendlyARM/mini6410/linux #tar xvzf /tmp/linux/ rootfs_qtopia_qt4-20100917.tgz # tar xvzf /tmp/linux/ rootfs_qtopia_qt4-s-20100917.tgz 将创建 rootfs_qtopia_qt4 和 rootfs_qtopia_qt4-s 两个目录,该目录和目标板上使用的文

件系统内容是完全一致的。 说明:20100917 是我们的发行更新日期标志,请以光盘中实际日期尾 为准,该文

件系统包含了前面你所看到的 qtopia-2.2.0 和 QtE-4.7.0 测试软件等,busybox,还有常用的命

令行工具等,和之前的相比,它具有如下特性: - 自动识别 NFS 启动或本地启动 - 自动识别所接的输出显示模块是否接了触摸屏,以判断在第一次开机使用时是否要

进行校正。如果没有连接,会自动进入系统,使用鼠标即可;否则会先校正触摸屏。 - 自动识别普通或者高速 SD 卡( 大可支持 32G)和优盘 - 自动检测 USB 鼠标或触摸屏

4.4.3 解压安装文件系统映像工具

要把目标文件系统全部写入开发板中,一般还需要先把目标文件系统目录制作成单个

的映像文件以便烧写或者复制,Linux 内核启动时,一般会根据命令行参数挂在不同格式的系

Page 172: Mini6410 um chinese

第 - 172 - 页

统,比如 yaffs2, ubifs, ext2, nfs 等。它们一般都是命令行方式的小程序。 针对 64M 或 128M/256M/512M/1GB 的 mini2440/mcro2440,分别有 2 套制作工具:

mkyaffs2image 和 mkyaffs2image-128M。其中 mkyaffs2image 是制作适用于 64M 版本文件系

统 映 象 的 工 具 , 它 沿 用 了 以 前 的 名 字 ; mkyaffs2image-128M 是 制 作 适 用 于

128M/256M/512M/1GB 版本文件系统映象的工具,为了便于区分,我们把它命名为此。 对于 6410 系统而言,我们没有制作 64M 版本,因此可以沿用 2440 系统所用的

mkyaffs2image-128M UBIFS 是近两年流行的另一种针对嵌入式系统的存储器文件系统格式, UBIFS 官方

使用的工具比较复杂,并且参数和步骤都很多,为了方便使用,我们也专门设计了 mkubimage 另外还有 mkext3image,它用来把目标文件系统制作成单个的 EXT3 映像文件,这样

就可以在普通的 FAT32/FAT 格式的 SD 卡中安装使用各种类 Linux 系统了,只需要相应的单

个系统映像文件复制到 SD 卡中就可以,这不再需要很复杂的步骤。 我们把这些小工具统称为 mktools,下面是它的安装步骤: 执行以下命令: #tar xvzf /tmp/linux/mktools.tar.gz –C / 将会在/usr/sbin 目录下创建生成 mkyaffs2image, mkyaffs2image-128M, mkubimage,

mkext3image 注意:C 是大写的,C 后面有个空格,C 是改变解压安装目录的意思 说明:如果你以前安装过 mini2440 使用的 mkyaffs2image 系列工具,它们将会被覆盖,

请不必担心,它们功能都是相同的。

4.4.4 解压安装 LogoMaker

LogoMaker 是友善之臂开发的一个 Linux Logo 简易制作工具,网上有很多资料介绍

如何使用命令行的工具把 bmp, jpg, png 等格式的图片转换为 Linux Logo 文件,在此我们设计

了一个图形化的版本,它是基于 Fedora9 开发。 执行以下命令: #tar xvzf /tmp/linux/logomaker.tgz –C / 注意:C 是大写的,C 后面有个空格,C 是改变解压安装目录的意思 说明: 执行以上命令,LogoMaker 将会被安装到/usr/sbin 目录下,它只有一个文件,

安装完之后在命令行输入 logomaker 可出现如下界面,在后面的章节我们会介绍它的使用方

法:

Page 173: Mini6410 um chinese

第 - 173 - 页

Page 174: Mini6410 um chinese

第 - 174 - 页

4.5 配置和编译 U-boot

三星已经为 6410 移植好了 U-boot,并且支持 USB 下载,Nand 启动等,它是开源的,

仅此而已。我们在此基础上对 U-boot 做了诸多改进: - 增加了下载菜单,类似 Superboot 的 USB 下载菜单 - 增加了 SD 卡启动配置 - 支持直接下载烧写 yaffs2 文件系统映像 - 支持烧写 WindowsCE BootLoader 之 Nboot - 支持烧写 WindowsCE 映像的功能 - 支持烧写单文件映像文件,就是通常所说的裸机程序 - 支持返回原始 shell - 增加了对 256M DDR RAM 的支持 下面我们就介绍一下它的配置和编译以及使用方法。

4.5.1 配置编译支持 NAND 启动的 U-boot

说明:根据开发板不同的内存(DDR RAM)容量,需要使用不同的 U-boot 配置项。 要编译适合于 128M 内存的 U-boot,请按照以下步骤: 进入 U-boot 源代码目录,执行: #cd /opt/FriendlyARM/mini6410/linux/u-boot-mini6410 #make mini6410_nand_config-ram128;make 将会在当前目录配置并编译生成支持 Nand 启动的 U-boot.bin,使用 SD 卡或者 USB

下载到 Nand Flash 即可使用,详见第三章,光盘中 images/linux 目录中已经提供了编译好的

该文件,为了便于区分,我们把它重新命名为 u-boot_nand-ram128.bin 要编译适合于 256M 内存的 U-boot,请按照以下步骤: 进入 U-boot 源代码目录,执行: #cd /opt/FriendlyARM/mini6410/linux/u-boot-mini6410 #make mini6410_nand_config-ram256;make 将会在当前目录配置并编译生成支持 Nand 启动的 U-boot.bin,使用 SD 卡或者 USB

下载到 Nand Flash 即可使用,详见第三章,光盘中 images/linux 目录中已经提供了编译好的

该文件,为了便于区分,我们把它重新命名为 u-boot_nand-ram256.bin

4.5.2 配置编译支持 SD 卡启动的 U-boot

说明:根据开发板不同的内存(DDR RAM)容量,需要使用不同的 U-boot 配置项。 要编译适合于 128M 内存的 U-boot,请按照以下步骤: 进入 U-boot 源代码目录,执行: #cd /opt/FriendlyARM/mini6410/linux/u-boot-mini6410

Page 175: Mini6410 um chinese

第 - 175 - 页

#make mini6410_sd_config-ram128;make 将会在当前目录配置并编译生成支持 SD 启动的 U-boot.bin,使用 SD-Flasher.exe 工具

把它烧写到 SD 卡中,设置开发板从 SD 卡启动即可使用了,可以参考 2.2 章节的步骤,只需

把其中的 Superboot.bin 改为 U-boot.bin 就可以了。光盘中 images/linux 目录中已经提供了编

译好的该文件,为了便于区分,我们把它重新命名为 u-boot_sd-ram128.bin 要编译适合于 256M 内存的 U-boot,请按照以下步骤: 进入 U-boot 源代码目录,执行: #cd /opt/FriendlyARM/mini6410/linux/u-boot-mini6410 #make mini6410_sd_config-ram256;make 将会在当前目录配置并编译生成支持 SD 启动的 U-boot.bin,使用 SD-Flasher.exe 工具

把它烧写到 SD 卡中,设置开发板从 SD 卡启动即可使用了,可以参考 2.2 章节的步骤,只需

把其中的 Superboot.bin 改为 U-boot.bin 就可以了。光盘中 images/linux 目录中已经提供了编

译好的该文件,为了便于区分,我们把它重新命名为 u-boot_sd-ram256.bin

4.5.3 U-boot 使用说明

未完

4.6 配置和编译内核

为了方便用户能够编译出和光盘烧写文件完全一致的内核,我们针对不同的 LCD 输

出分别做了相应的内核配置文件: config_mini6410_t35 –适用于统宝 3.5”LCD,分辨率为 240x320 config_mini6410_n43 –适用于 NEC4.3”LCD,分辨率为 480x272 config_mini6410_l80 –适用于 Sharp 8”(或兼容)LCD,分辨率为 640x480 config_mini6410_a70 –适用于 7 寸真彩屏,分辨率为 800x480 config_mini6410_vga1024x768 –适用于分辨率输出为 1024x768 的 VGA 模块转接板 config_mini6410_vga800x600 –适用于分辨率输出为 800x600 的 VGA 模块转接板 config_mini6410_vga640x480 –适用于分辨率输出为 640x480 的 VGA 模块转接板 config_mini6410_ezvga800x600 –适用于简易 VGA 转接板,输出分辨率为 800x600 如下命令缺省了配置文件 config_n43 来编译内核 #cp config_mini6410_n43 .config ;注意:n43 后面有个空格,然后有个“.”开头

的 config #make zImage ;开始编译内核,也可以直接使用 make 命令

Page 176: Mini6410 um chinese

第 - 176 - 页

编译结束后,会在 arch/arm/boot 目录下生成 linux 内核映象文件 zImage,你可以使

用第三章节介绍的方法把 zImage 下载到开发板测试。 光盘 images/linux 目录中已经提供好了编译好的内核文件,根据不同类型的 LCD 型

号,分别有:zImage_n43, zImage_a70 等

4.7 配置和编译 busybox

一般从官方网站下载的 busybox 源代码,需要根据所需重新配置一下,才可以编译使

用,我们已经做好了一个缺省的配置文件:fa.config,无论是 2440 和 6410 我们均使用了此配

置,通过它编译出的 busybox 可以满足绝大部分的需要,进入 busybox 源代码目录,执行: #cp fa.config .config #make 稍等一会,即可在当前目录编译生成 busybox 目标文件,它和开发板预装的是一样的,

一般 busybox 是不需要更新的。

Page 177: Mini6410 um chinese

第 - 177 - 页

4.8 制作目标板文件系统映象

请确认你已经按照 4.4.4 一节的步骤安装了 mktools 系列工具,它们是将把同一个目

标文件系统目录压制为不同格式的映像文件,以用来安装烧写到 Nand Flash 或者复制到 SD卡中运行。

还请确认你已经做好了 4.4.2 的准备工作,也就是准备了目标文件系统目录。

4.8.1 制作 yaffs2 文件系统映像

进入工作目录/opt/FriendlyARM/mini6410/linux,执行以下命令: #mkyaffs2image-128M rootfs_qtopia_qt4 rootfs_qtopia_qt4.img 将把 rootfs_qtopia_qt4 目录压制为 yaffs2 格式的 rootfs_qtopia_qt4.img 映像文件,它和

光盘中/images/Linux/目录下的同名文件是相同的,使用 SD 卡或者 USB 下载可以把它烧写到

Nand Flash 中,烧写步骤详见第三章。 说明:你也可以使用该命令工具把 rootfs_qtopia_qt4-s 目录压制为 yaffs2 映像文件,

在此不再赘述。

Page 178: Mini6410 um chinese

第 - 178 - 页

4.8.2 制作 ubifs 文件系统映像

进入工作目录/opt/FriendlyARM/mini6410/linux,执行以下命令: #mkyaffs2image-128M rootfs_qtopia_qt4 rootfs_qtopia_qt4.ubi 将把 rootfs_qtopia_qt4 目录压制为 UBIFS 格式的 rootfs_qtopia_qt4.ubi 映像文件,它和

光盘中/images/Linux/目录下的同名文件是相同的,使用 SD 卡或者 USB 下载可以把它烧写到

Nand Flash 中,烧写步骤详见第三章。 说明:你也可以使用该命令工具把 rootfs_qtopia_qt4-s 目录压制为 ubifs 映像文件,在

此不再赘述

4.8.3 制作 ext3 文件系统映像

进入工作目录/opt/FriendlyARM/mini6410/linux,执行以下命令: #mkyaffs2image-128M rootfs_qtopia_qt4 rootfs_qtopia_qt4.ext3 将把 rootfs_qtopia_qt4 目录压制为 EXT3 格式的 rootfs_qtopia_qt4.ext3 映像文件,它

和光盘中/images/Linux/目录下的同名文件是相同的,参考 3.3 章节的说明,把它复制到 SD 卡

就可以直接使用它运行系统了。 说明:你也可以使用该命令工具把 rootfs_qtopia_qt4-s 目录压制为 ext3 映像文件,在

此不再赘述

4.9 嵌入式 Linux 应用程序示例

本节内容通过嵌入式 Linux 开发 简单的例子,介绍了如何编写和编译 Linux 应用程

序,并下载到开发板运行起来。 如果你已经执行了 4.4.1 章节的步骤,就可以在/opt/FriendlyARM/mini6410/examples

目录下找到以下示例的源代码,实际可能更多一些,下面仅选几个典型的以作指引。 嵌入式 Linux 资源丰富,我们不可能介绍到每一个细节,本文旨在提供一些嵌入式

Linux 经常用到的方法,为你打开奇妙世界的大门。 注意:以下示例程序所使用的编译器为 arm-linux-gcc-4.4.1 with EABI,如果你使用了

其他版本的交叉编译器,编译完有可能无法在开发板上运行。 要检查交叉编译器的版本类型,可在终端运行命令:arm-linux-gcc –v,如图

Page 179: Mini6410 um chinese

第 - 179 - 页

声明:以下 Linux 示例程序均为友善之臂原创,我们发现有的开发板厂商或者个人修

改了 copyright 说明,据为己有,虽然国内对这种抄袭行为基本没有法律约束,但我们对这种

无耻的盗窃行为予以鄙视,并敬告大家要尊重原厂家的辛苦劳动。

4.9.1 Hello,World!

Hello,World 源代码位于位于/opt/FriendlyARM/mini6410/linux/examples/hello 目录,

其源代码如下: #include <stdio.h> int main(void) { printf("hello, FriendlyARM!\n"); }

Step1:编译 Hello,World 进入源代码目录,并执行 make: #cd /opt/FriendlyARM/mini6410/linux/examples/hello #make 后将生成 hello 可执行文件,使用 file 命令可以检查你生成的 hello 可执行文件是否

为 ARM 体系和格式版本,能在开发板上正常运行的可执行文件一般如图所示:

Page 180: Mini6410 um chinese

第 - 180 - 页

Step2: 把 Hello,World 下载到开发板运行 将编译好的可执行文件下载到目标板目前主要四种方式: 第一种:通过 ftp 传送文件到开发板(推荐使用) 第二种:复制到介质(如优盘) 第三种:通过串口传送文件到开发板 第四种:通过 NFS(网络文件系统)直接运行 下面分别进行介绍:

(1) 使用 ftp 传送文件(推荐使用) 说明:使用 ftp 登录目标板,把编译好的程序上传;然后修改上传后目标板上的程序

的可执行属性,并执行。 首先,在 PC 端执行,如图所示

Page 181: Mini6410 um chinese

第 - 181 - 页

然后,在目标板一端执行,如图所示

(2) 使用优盘 说明:先把编译好的可执行程序复制到优盘,再把优盘插到目标板上并挂载它,然后

把程序拷贝到目标板的可执行目录/bin 步骤: 1. 复制程序到优盘 把优盘插到 PC 的 USB 接口,执行以下命令把程序复制到优盘 #mount /dev/sda1 /mnt ;挂接优盘 #cp hello /mnt ;复制刚才编译好的程序到优盘 #umount /mnt ;卸载优盘 2. 把程序从优盘拷贝到目标板并执行 把优盘插入到开发板的 USB Host 接口,优盘会自动挂载到/udisk 目录,执行以下命

令就可以运行 hello 程序了。 #cd /udisk #./hello ;执行 hello 程序 注意:如果此时强制拔出优盘,需要退回到根目录,再执行 umount /udisk 方可为下

一次做好自动挂载的准备。

Page 182: Mini6410 um chinese

第 - 182 - 页

(3)通过串口传送文件到开发板 通过 4.2.5 章节我们学会了如何通过串口传送文件到开发板,你也可以通过相同的方

法传送 hello 可执行程序,具体步骤在此不再详细描述,记得传送完毕把文件的属性改为可执

行才能正常运行。 #chmod +x hello 说明:有些用户使用 USB 转串口线,因为有些转接器性能是不太好的,所以有时会

出现“传输超时”或者根本无法传输到开发板的现象,因此我们建议使用 ftp 传送到开发板。

(4)通过网络文件系统 NFS 执行 Linux 中 常用的方法就是采用 NFS 来执行各种程序,这样可以不必花费很多时间下

载程序,虽然在此下载 hello 程序用不了多久,一旦您的应用程序变得越来越大,您就会发现

使用 NFS 运行的方便所在。 如同前面所讲述的那样,请先按照 4.3.4 一节搭建好 NFS 服务器系统,然后在命令行

输入以下命令(假定服务器的 IP 地址为 192.168.1.111): #mount –t nfs –o nolock

192.168.1.111:/opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4 /mnt 挂接成功,您就可以进入/mnt 目录进行操作了,在您的 PC Linux 终端把 hello 复制到

opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4 目录,然后在开发板的串口终端执行 #cd /mnt #./hello

Page 183: Mini6410 um chinese

第 - 183 - 页

4.9.2 LED 测试程序

程序源代码说明 驱动源代码所在目录 /opt/FriendlyARM/mini6410/linux/linux-2.6.28.6/drivers/char 驱动程序名称 mini6410_leds.c 设备类型 misc 设备名 /dev/leds 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/leds 测试程序名称 led.c 测试程序可执行文件名称 led 测试程序在开发板中的位置 说明:LED 驱动已经被编译到缺省内核中,因此不能再使用 insmod 方式加载。 程序清单 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/ioctl.h> int main(int argc, char **argv) { int on; int led_no; int fd; /* 检查 led 控制的两个参数,如果没有参数输入则退出。*/ if (argc != 3 || sscanf(argv[1], "%d", &led_no) != 1 || sscanf(argv[2],"%d", &on) != 1 || on < 0 || on > 1 || led_no < 0 || led_no > 3) { fprintf(stderr, "Usage: leds led_no 0|1\n"); exit(1); } /*打开/dev/leds 设备文件*/ fd = open("/dev/leds0", 0); if (fd < 0) { fd = open("/dev/leds", 0); } if (fd < 0) { perror("open device leds"); exit(1);

Page 184: Mini6410 um chinese

第 - 184 - 页

} /*通过系统调用 ioctl 和输入的参数控制 led*/ ioctl(fd, on, led_no); /*关闭设备句柄*/ close(fd); return 0; }

你可以按照上面的 hello 程序的步骤编译出 led 可执行文件,然后下载到开发板运行

它。

4.9.3 测试按键

程序源代码说明 驱动源代码所在目录 /opt/FriendlyARM/mini6410/linux/linux-2.6.28.6/drivers/char 驱动程序名称 Mini6410_buttons.c 设备类型 misc 设备名 /dev/buttons 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/buttons 测试程序源代码名称 buttons_test.c 测试程序可执行文件名称 buttons 测试程序在开发板中的位置 说明:按键驱动已经被编译到缺省内核中,因此不能再使用 insmod 方式加载。 程序清单 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/select.h> #include <sys/time.h> #include <errno.h> int main(void) { int buttons_fd;

Page 185: Mini6410 um chinese

第 - 185 - 页

char buttons[6] = {'0', '0', '0', '0', '0', '0'}; buttons_fd = open("/dev/buttons", 0); if (buttons_fd < 0) { perror("open device buttons"); exit(1); } for (;;) { char current_buttons[6]; int count_of_changed_key; int i; if (read(buttons_fd, current_buttons, sizeof current_buttons) != sizeof current_buttons) { perror("read buttons:"); exit(1); } for (i = 0, count_of_changed_key = 0; i < sizeof buttons / sizeof buttons[0]; i++) { if (buttons[i] != current_buttons[i]) { buttons[i] = current_buttons[i]; printf("%skey %d is %s", count_of_changed_key? ", ": "", i+1, buttons[i] == '0' ? "up" : "down"); count_of_changed_key++; } } if (count_of_changed_key) { printf("\n"); } } close(buttons_fd); return 0; }

你可以按照上面的 hello 程序的步骤手编译出 buttons 可执行文件,然后下载到开发板

运行它

Page 186: Mini6410 um chinese

第 - 186 - 页

4.9.4 PWM 控制蜂鸣器编程示例

程序源代码说明 驱动源代码所在目录 /opt/FriendlyARM/mini6410/linux/linux-2.6.28.6/drivers/char 驱动程序名称 Mini6410_pwm.c 设备类型 misc 设备名 /dev/pwm 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/pwm 测试程序源代码名称 pwm_test.c 测试程序可执行文件名称 Pwm_test 测试程序在开发板中的位置 说明:PWM 控制蜂鸣器驱动已经被编译到缺省内核中,因此不能再使用 insmod 方式加载

程序清单 #include <stdio.h> #include <termios.h> #include <unistd.h> #include <stdlib.h> #define PWM_IOCTL_SET_FREQ 1 #define PWM_IOCTL_STOP 2 #define ESC_KEY 0x1b static int getch(void) { struct termios oldt,newt; int ch; if (!isatty(STDIN_FILENO)) { fprintf(stderr, "this problem should be run at a terminal\n"); exit(1); } // save terminal setting if(tcgetattr(STDIN_FILENO, &oldt) < 0) { perror("save the terminal setting"); exit(1); } // set terminal as need

Page 187: Mini6410 um chinese

第 - 187 - 页

newt = oldt; newt.c_lflag &= ~( ICANON | ECHO ); if(tcsetattr(STDIN_FILENO,TCSANOW, &newt) < 0) { perror("set terminal"); exit(1); } ch = getchar(); // restore termial setting if(tcsetattr(STDIN_FILENO,TCSANOW,&oldt) < 0) { perror("restore the termial setting"); exit(1); } return ch; } static int fd = -1; static void close_buzzer(void); static void open_buzzer(void) { fd = open("/dev/pwm", 0); if (fd < 0) { perror("open pwm_buzzer device"); exit(1); } // any function exit call will stop the buzzer atexit(close_buzzer); } static void close_buzzer(void) { if (fd >= 0) { ioctl(fd, PWM_IOCTL_STOP); close(fd); fd = -1; } }

Page 188: Mini6410 um chinese

第 - 188 - 页

static void set_buzzer_freq(int freq) { // this IOCTL command is the key to set frequency int ret = ioctl(fd, PWM_IOCTL_SET_FREQ, freq); if(ret < 0) { perror("set the frequency of the buzzer"); exit(1); } } static void stop_buzzer(void) { int ret = ioctl(fd, PWM_IOCTL_STOP); if(ret < 0) { perror("stop the buzzer"); exit(1); } } int main(int argc, char **argv) { int freq = 1000 ; open_buzzer(); printf( "\nBUZZER TEST ( PWM Control )\n" ); printf( "Press +/- to increase/reduce the frequency of the BUZZER\n" ) ; printf( "Press 'ESC' key to Exit this program\n\n" ); while( 1 ) { int key; set_buzzer_freq(freq); printf( "\tFreq = %d\n", freq ); key = getch(); switch(key) { case '+':

Page 189: Mini6410 um chinese

第 - 189 - 页

if( freq < 20000 ) freq += 10; break; case '-': if( freq > 11 ) freq -= 10 ; break; case ESC_KEY: case EOF: stop_buzzer(); exit(0); default: break; } } }

你可以按照上面的 hello 程序的步骤手编译出 buttons 可执行文件,然后下载到开发板

运行它

4.9.5 I2C-EEPROM 编程示例

程序源代码说明 驱动源代码所在目录 /opt/FriendlyARM/mini6410/linux/linux-2.6.28.6/drivers/i2c/busses驱动程序名称 I2c-s3c2410.c 设备类型 字符设备 设备名 /dev/i2c/0 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/i2c 测试程序源代码名称 eeprog.c 24cXX.c 测试程序可执行文件名称 i2c 测试程序在开发板中的位置 说明:I2C 驱动已经被编译到缺省内核中,因此不能再使用 insmod 方式加载。 程序清单 注意:以下程序还需同目录下 24cXX.c 程序的支持 #include <stdio.h> #include <fcntl.h> #include <getopt.h>

Page 190: Mini6410 um chinese

第 - 190 - 页

#include <unistd.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include "24cXX.h" #define usage_if(a) do { do_usage_if( a , __LINE__); } while(0); void do_usage_if(int b, int line) { const static char *eeprog_usage = "I2C-24C08(256 bytes) Read/Write Program, ONLY FOR TEST!\n" "FriendlyARM Computer Tech. 2009\n"; if(!b) return; fprintf(stderr, "%s\n[line %d]\n", eeprog_usage, line); exit(1); } #define die_if(a, msg) do { do_die_if( a , msg, __LINE__); } while(0); void do_die_if(int b, char* msg, int line) { if(!b) return; fprintf(stderr, "Error at line %d: %s\n", line, msg); fprintf(stderr, " sysmsg: %s\n", strerror(errno)); exit(1); } static int read_from_eeprom(struct eeprom *e, int addr, int size) { int ch, i; for(i = 0; i < size; ++i, ++addr) { die_if((ch = eeprom_read_byte(e, addr)) < 0, "read error"); if( (i % 16) == 0 ) printf("\n %.4x| ", addr);

Page 191: Mini6410 um chinese

第 - 191 - 页

else if( (i % 8) == 0 ) printf(" "); printf("%.2x ", ch); fflush(stdout); } fprintf(stderr, "\n\n"); return 0; } static int write_to_eeprom(struct eeprom *e, int addr) { int i; for(i=0, addr=0; i<256; i++, addr++) { if( (i % 16) == 0 ) printf("\n %.4x| ", addr); else if( (i % 8) == 0 ) printf(" "); printf("%.2x ", i); fflush(stdout); die_if(eeprom_write_byte(e, addr, i), "write error"); } fprintf(stderr, "\n\n"); return 0; } int main(int argc, char** argv) { struct eeprom e; int op; op = 0; usage_if(argc != 2 || argv[1][0] != '-' || argv[1][2] != '\0'); op = argv[1][1]; fprintf(stderr, "Open /dev/i2c/0 with 8bit mode\n"); die_if(eeprom_open("/dev/i2c/0", 0x50, EEPROM_TYPE_8BIT_ADDR, &e) < 0, "unable to open eeprom device file " "(check that the file exists and that it's readable)");

Page 192: Mini6410 um chinese

第 - 192 - 页

switch(op) { case 'r': fprintf(stderr, " Reading 256 bytes from 0x0\n"); read_from_eeprom(&e, 0, 256); break; case 'w': fprintf(stderr, " Writing 0x00-0xff into 24C08 \n"); write_to_eeprom(&e, 0); break; default: usage_if(1); exit(1); } eeprom_close(&e); return 0; }

4.9.6 串口编程示例

程序源代码说明 驱动源代码所在目录 /opt/FriendlyARM/mini6410/linux/linux-2.6.28.6/drivers/serial/ 驱动程序名称 S3c2440.c 设备名 /dev/ttySAC0,1,2 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/comtest 测试程序源代码名称 comtest.c 测试程序可执行文件名称 armcomtest 测试程序在开发板中的位置 说明:测试程序编译后可得到 x86 版本和 arm 版本,其源代码是完全一样的 程序清单 说明:comtest 程序是友善之臂早期开发的一个串口测试程序,它其实是一个十分简易的串

口终端程序,类似于 linux 中的 minicom,该程序与硬件无关,因此相同的代码不仅适用于

任何 Arm-linux 开发板平台,也可以在 PC linux 上运行使用,方法都是完全一样的。通过该

程序你可以了解串口编程的一些常见关键设置,对于 linux 下串口编程很有帮助和借鉴意

义,该程序虽然十分短小,但设计极为严谨巧妙,我们对此就不详细解释了,下面是它的

完整源代码: 注:本程序版权归属友善之臂所有,任何单位或个人转载或复制均需注明出处,且

Page 193: Mini6410 um chinese

第 - 193 - 页

不得用于商业用途。 # include <stdio.h> # include <stdlib.h> # include <termio.h> # include <unistd.h> # include <fcntl.h> # include <getopt.h> # include <time.h> # include <errno.h> # include <string.h> static void Error(const char *Msg) { fprintf (stderr, "%s\n", Msg); fprintf (stderr, "strerror() is %s\n", strerror(errno)); exit(1); } static void Warning(const char *Msg) { fprintf (stderr, "Warning: %s\n", Msg); } static int SerialSpeed(const char *SpeedString) { int SpeedNumber = atoi(SpeedString); # define TestSpeed(Speed) if (SpeedNumber == Speed) return B##Speed TestSpeed(1200); TestSpeed(2400); TestSpeed(4800); TestSpeed(9600); TestSpeed(19200); TestSpeed(38400); TestSpeed(57600); TestSpeed(115200); TestSpeed(230400); Error("Bad speed"); return -1; }

Page 194: Mini6410 um chinese

第 - 194 - 页

static void PrintUsage(void) { fprintf(stderr, "comtest - interactive program of comm port\n"); fprintf(stderr, "press [ESC] 3 times to quit\n\n"); fprintf(stderr, "Usage: comtest [-d device] [-t tty] [-s speed] [-7] [-c] [-x] [-o] [-h]\n"); fprintf(stderr, " -7 7 bit\n"); fprintf(stderr, " -x hex mode\n"); fprintf(stderr, " -o output to stdout too\n"); fprintf(stderr, " -c stdout output use color\n"); fprintf(stderr, " -h print this help\n"); exit(-1); } static inline void WaitFdWriteable(int Fd) { fd_set WriteSetFD; FD_ZERO(&WriteSetFD); FD_SET(Fd, &WriteSetFD); if (select(Fd + 1, NULL, &WriteSetFD, NULL, NULL) < 0) { Error(strerror(errno)); } } int main(int argc, char **argv) { int CommFd, TtyFd; struct termios TtyAttr; struct termios BackupTtyAttr; int DeviceSpeed = B115200; int TtySpeed = B115200; int ByteBits = CS8; const char *DeviceName = "/dev/ttyS0"; const char *TtyName = "/dev/tty"; int OutputHex = 0; int OutputToStdout = 0;

Page 195: Mini6410 um chinese

第 - 195 - 页

int UseColor = 0; opterr = 0; for (;;) { int c = getopt(argc, argv, "d:s:t:7xoch"); if (c == -1) break; switch(c) { case 'd': DeviceName = optarg; break; case 't': TtyName = optarg; break; case 's': if (optarg[0] == 'd') { DeviceSpeed = SerialSpeed(optarg + 1); } else if (optarg[0] == 't') { TtySpeed = SerialSpeed(optarg + 1); } else TtySpeed = DeviceSpeed = SerialSpeed(optarg); break; case 'o': OutputToStdout = 1; break; case '7': ByteBits = CS7; break; case 'x': OutputHex = 1; break; case 'c': UseColor = 1; break; case '?': case 'h': default: PrintUsage(); } }

Page 196: Mini6410 um chinese

第 - 196 - 页

if (optind != argc) PrintUsage(); CommFd = open(DeviceName, O_RDWR, 0); if (CommFd < 0) Error("Unable to open device"); if (fcntl(CommFd, F_SETFL, O_NONBLOCK) < 0) Error("Unable set to NONBLOCK mode"); memset(&TtyAttr, 0, sizeof(struct termios)); TtyAttr.c_iflag = IGNPAR; TtyAttr.c_cflag = DeviceSpeed | HUPCL | ByteBits | CREAD | CLOCAL; TtyAttr.c_cc[VMIN] = 1; if (tcsetattr(CommFd, TCSANOW, &TtyAttr) < 0) Warning("Unable to set comm port"); TtyFd = open(TtyName, O_RDWR | O_NDELAY, 0); if (TtyFd < 0) Error("Unable to open tty"); TtyAttr.c_cflag = TtySpeed | HUPCL | ByteBits | CREAD | CLOCAL; if (tcgetattr(TtyFd, &BackupTtyAttr) < 0) Error("Unable to get tty"); if (tcsetattr(TtyFd, TCSANOW, &TtyAttr) < 0) Error("Unable to set tty"); for (;;) { unsigned char Char = 0; fd_set ReadSetFD; void OutputStdChar(FILE *File) { char Buffer[10]; int Len = sprintf(Buffer, OutputHex ? "%.2X " : "%c", Char); fwrite(Buffer, 1, Len, File); }

Page 197: Mini6410 um chinese

第 - 197 - 页

FD_ZERO(&ReadSetFD); FD_SET(CommFd, &ReadSetFD); FD_SET( TtyFd, &ReadSetFD); # define max(x,y) ( ((x) >= (y)) ? (x) : (y) ) if (select(max(CommFd, TtyFd) + 1, &ReadSetFD, NULL, NULL, NULL) < 0) { Error(strerror(errno)); } # undef max if (FD_ISSET(CommFd, &ReadSetFD)) { while (read(CommFd, &Char, 1) == 1) { WaitFdWriteable(TtyFd); if (write(TtyFd, &Char, 1) < 0) { Error(strerror(errno)); } if (OutputToStdout) { if (UseColor) fwrite("\x1b[01;34m", 1, 8, stdout); OutputStdChar(stdout); if (UseColor) fwrite("\x1b[00m", 1, 8, stdout); fflush(stdout); } } } if (FD_ISSET(TtyFd, &ReadSetFD)) { while (read(TtyFd, &Char, 1) == 1) { static int EscKeyCount = 0; WaitFdWriteable(CommFd); if (write(CommFd, &Char, 1) < 0) { Error(strerror(errno)); } if (OutputToStdout) { if (UseColor) fwrite("\x1b[01;31m", 1, 8, stderr); OutputStdChar(stderr);

Page 198: Mini6410 um chinese

第 - 198 - 页

if (UseColor) fwrite("\x1b[00m", 1, 8, stderr); fflush(stderr); } if (Char == '\x1b') { EscKeyCount ++; if (EscKeyCount >= 3) goto ExitLabel; } else EscKeyCount = 0; } } } ExitLabel: if (tcsetattr(TtyFd, TCSANOW, &BackupTtyAttr) < 0) Error("Unable to set tty"); return 0; }

4.9.7 UDP 网络编程

程序源代码说明 驱动源代码所在目录 /opt/FriendlyARM/mini6410/linux/linux-2.6.32.2/drivers/net/ 驱动程序名称 dm9000.c 该驱动的主设备号 无 设备名 eth0 (网络设备并不在/dev 目录中出现) 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/udptak 测试程序源代码名称 udptalk.c 测试程序可执行文件名称 udptalk.c 说明:测试程序编译后可得到 x86 版本和 arm 版本,其源代码是完全一样的 程序原理分析

TCP/IP 提供了无连接的传输层协议:UDP(User Datagram Protocol,即用户数据报协议)。UDP与 TCP 有很大的区别,因为无连接的 socket 编程与面向连接的 socket 编程也有很大的差异。由于不用

建立连接,因此每个发送个接收的数据报都包含了发送方和接收方的地址信息。

Page 199: Mini6410 um chinese

第 - 199 - 页

在发送和接收数据之前,先要建立一个数据报方式的套接字,该 socket的类型为SOCK_DGRAM,

用如下的调用产生: sockfd=socket(AF_INET, SOCK_DGRAM, 0); 由于不需要建立连接,因此产生 socket 后就可以直接发送和接收了。当然,要接收数据报也必

须绑定一个端口,否则发送方无法得知要发送到哪个端口。Sendto 和 recvfrom 两个系统调用分别用于发

送和接收数据报,其调用格式为: int sendto(int s, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen); int recvfrom(int, s, void *buf, int len, unsigned int flags, struct sockaddr *from, int fromlen); 其中 s 为所使用的 socket,msg 和 buf 分别为发送和接收的缓冲区指针,len 为缓冲区的长度,flags

为选项标志,此处还用不到,设为 0 即可。to 和 from 就是发送的目的地址和接收的来源地址,包含了

IP 地址和端口信息。tolen 和 fromlen 分别是 to 和 from 这两个 socket 地址结构的长度。这两个函数的返

回值就是实际发送和接收的字节数,返回-1 表示出错。 使用无连接方式通信的基本过程如图所示。

UDP 通信的基本过程

上图描述的是通信双方都绑定自己地址端口的情形,但在某些情况下,也可能有一方不用绑定

地址和端口。不绑定的一方的地址和端口由内核分配。由于对方无法预先知道不绑定的一方的端口和 IP地址(假设主机有多个端口,这些端口分配了不同的 IP 地址),因此只能由不绑定的一方先发出数据报,

对方根据收到的数据报中的来源地址就可以确定回送数据报所需要的发送地址了。显然,在这种情况下

对方必须绑定地址和端口,并且通信只能由非绑定方发起。 与 read()和 write()相似,进程阻塞在 recvfrom()和 sendto()中也会发生。但与 TCP 方式不同的是,

接收到一个字节数为 0 的数据报是有可能的,应用程序完全可以将 sendto()中的 msg 设为 NULL,同时

将 len 设为 0。 程序清单

Page 200: Mini6410 um chinese

第 - 200 - 页

/* * udptalk :Example for Matrix V ;说明:本程序同样适用于 mini2440 * * Copyright (C) 2004 capbily - friendly-arm * [email protected] */ #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #define BUFLEN 255 int main(int argc, char **argv) { struct sockaddr_in peeraddr, /*存放谈话对方 IP 和端口的 socket 地址*/

localaddr;/*本端 socket 地址*/ int sockfd; char recmsg[BUFLEN+1]; int socklen, n; if(argc!=5){ printf("%s <dest IP address> <dest port> <source IP address> <source port>\n", argv[0]); exit(0); } sockfd = socket(AF_INET, SOCK_DGRAM, 0); if(sockfd<0){ printf("socket creating err in udptalk\n"); exit(1); } socklen = sizeof(struct sockaddr_in); memset(&peeraddr, 0, socklen); peeraddr.sin_family=AF_INET; peeraddr.sin_port=htons(atoi(argv[2])); if(inet_pton(AF_INET, argv[1], &peeraddr.sin_addr)<=0){ printf("Wrong dest IP address!\n"); exit(0); }

Page 201: Mini6410 um chinese

第 - 201 - 页

memset(&localaddr, 0, socklen); localaddr.sin_family=AF_INET; if(inet_pton(AF_INET, argv[3], &localaddr.sin_addr)<=0){ printf("Wrong source IP address!\n"); exit(0); } localaddr.sin_port=htons(atoi(argv[4])); if(bind(sockfd, &localaddr, socklen)<0){ printf("bind local address err in udptalk!\n"); exit(2); } if(fgets(recmsg, BUFLEN, stdin) == NULL) exit(0); if(sendto(sockfd, recmsg, strlen(recmsg), 0, &peeraddr, socklen)<0){ printf("sendto err in udptalk!\n"); exit(3); } for(;;){ /*recv&send message loop*/ n = recvfrom(sockfd, recmsg, BUFLEN, 0, &peeraddr, &socklen); if(n<0){ printf("recvfrom err in udptalk!\n"); exit(4); }else{ /*成功接收到数据报*/ recmsg[n]=0; printf("peer:%s", recmsg); } if(fgets(recmsg, BUFLEN, stdin) == NULL) exit(0); if(sendto(sockfd, recmsg, strlen(recmsg), 0, &peeraddr, socklen)<0){ printf("sendto err in udptalk!\n"); exit(3); } } }

测试 将 udptalk.c 编 译 好 后 就 可 以 运 行 了 ,

/opt/FriendlyARM/mini6410/linux/examples/udptalk 目录下的 Makefile 指定了两个编译目标可

Page 202: Mini6410 um chinese

第 - 202 - 页

执行文件,一个用于在主机端的 x86-udptalk,一个是用于开发板的 arm-udptalk,运行 make命令将把这两个程序一起编译出来。可以把 arm-udptalk 使用上面介绍的方法下载到开发板中

(预装的 Linux 不含该程序),假设主机的 IP 地址为 192.168.1.108,开发板的 IP 地址为

192.168.1.230。 在主机的终端上输入: #./x86-udptalk 192.168.1.230 2000 192.168.1.108 2000 在开发板上的终端输入 #arm-udptalk 192.168.1.108 2000 192.168.1.230 2000 则运行结果分别如图所示:

在主机上运行 x86-udptalk

Page 203: Mini6410 um chinese

第 - 203 - 页

在开发板上运行 arm-udptalk

4.9.8 数学函数库调用示例

程序源代码说明 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/math 测试程序源代码名称 mathtest.c 测试程序可执行文件名称 mathtest 程序清单 注意:使用数学函数的关键是要包含其头文件 math.h,并且在编译的时候加入数学函数库

libm。 #include <stdio.h> #include <stdlib.h> #include <math.h> ;注意:一定要包含此头文件 int main(void) { double a=8.733243;

Page 204: Mini6410 um chinese

第 - 204 - 页

printf("sqrt(%f)=%f\n", a, sqrt(a)); return 0; } Makefile 内容: CROSS=arm-linux- all: mathtest #注意:该处包含了数学函数库 libm, 红色部分 mathtest: $(CROSS)gcc -o mathtest main.c -lm clean: @rm -vf mathtest *.o *~

你可以按照上面的 hello 程序的步骤手工编译出 mathtest 可执行文件,然后下载到开

发板运行它

4.9.9 线程编程示例

程序源代码说明 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/pthread 测试程序源代码名称 pthread_test.c 测试程序可执行文件名称 pthread_test 程序清单 注意:使用线程的关键是要包含其头文件 pthread.h,并且在编译的时候加入线程库

libpthread。 #include<stddef.h> #include<stdio.h> #include<unistd.h> #include"pthread.h" ;注意:一定要包含此头文件 void reader_function(void); void writer_function(void); char buffer; int buffer_has_item=0; pthread_mutex_t mutex; main()

Page 205: Mini6410 um chinese

第 - 205 - 页

{ pthread_t reader; pthread_mutex_init(&mutex,NULL); pthread_create(&reader,NULL,(void*)&reader_function,NULL); writer_function(); } void writer_function(void) { while(1) { pthread_mutex_lock(&mutex); if(buffer_has_item==0) { buffer='a'; printf("make a new item\n"); buffer_has_item=1; } pthread_mutex_unlock(&mutex); } } void reader_function(void) { while(1) { pthread_mutex_lock(&mutex); if(buffer_has_item==1) { buffer='\0'; printf("consume item\n"); buffer_has_item=0; } pthread_mutex_unlock(&mutex); } } Makefile 内容 CROSS=arm-linux- all: pthread #注意:该处包含了线程库 libphread, 红色部分

Page 206: Mini6410 um chinese

第 - 206 - 页

pthread: $(CROSS)gcc -static -o pthread main.c -lpthread clean: @rm -vf pthread *.o *~

你可以按照上面的 hello 程序的步骤手工编译出 pthread 可执行文件,然后下载到开发

板运行它

4.9.10 管道应用编程示例-网页控制 LED

程序源代码说明 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/led-player 测试程序源代码名称 led-player.c 测试程序可执行文件名称 led-player 原理说明

开机后我们可以通过网页发送命令控制开发板上的 LED 闪烁模式,其实这是进程间通信共享资

源的一个典型例子,进程间通信就是 IPC(InterProcess Communication),进程间通信的目的一般有: (1)数据传输 (2)共享数据 (3)通知事件 (4)资源共享 (5)进程控制. Linux 支持多种 IPC 机制,信号和管道是其中的两个。关于更详细的进程间通信的介绍,一般 Linux

编程的书上都有介绍,在此我们不多说了。 通过网页来控制 LED 的闪烁模式就是通过管道机制来实现的,其中 LED 是共享资源,led-player

是一个后台程序,它启动的时候就创建了一个命名管道/tmp/ led-control(当然该管道也可以通过命令

mknod 来创建,那样程序就要改写了,有兴趣的可以自己试试), 并一直监测输入该管道的数据,根据

不同的参数(模式 type 和周期 period)来改变 LED 的显示模式;leds.cgi 是一个网关程序,它接收从网页

发送过来的字符形式指令(ping 代表跑马灯模式或者乒乓模式,counter 代表计数器模式,stop 代表停止

模式,slow 代表周期为 0.25m,normal 代表周期为 0.125m,fast 代表周期为 0.0625m),并对这些指令进

行赋值转换为实际数字,然后调用 echo 命令输送到管道/tmp/ led-control 以此实现对 LED 的控制,以下

是各自的程序清单。 程序清单 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>

Page 207: Mini6410 um chinese

第 - 207 - 页

#include <sys/select.h> #include <sys/time.h> #include <string.h> static int led_fd; static int type = 1; static void push_leds(void) { static unsigned step; unsigned led_bitmap; int i; switch(type) { case 0: if (step >= 6) { step = 0; } if (step < 3) { led_bitmap = 1 << step; } else { led_bitmap = 1 << (6 - step); } break; case 1: if (step > 255) { step = 0; } led_bitmap = step; break; default: led_bitmap = 0; } step++; for (i = 0; i < 4; i++) { ioctl(led_fd, led_bitmap & 1, i); led_bitmap >>= 1; } }

Page 208: Mini6410 um chinese

第 - 208 - 页

int main(void) { int led_control_pipe; int null_writer_fd; // for read endpoint not blocking when control process exit double period = 0.5; led_fd = open("/dev/leds0", 0); if (led_fd < 0) { led_fd = open("/dev/leds", 0); } if (led_fd < 0) { perror("open device leds"); exit(1); } unlink("/tmp/led-control"); mkfifo("/tmp/led-control", 0666); led_control_pipe = open("/tmp/led-control", O_RDONLY | O_NONBLOCK); if (led_control_pipe < 0) { perror("open control pipe for read"); exit(1); } null_writer_fd = open("/tmp/led-control", O_WRONLY | O_NONBLOCK); if (null_writer_fd < 0) { perror("open control pipe for write"); exit(1); } for (;;) { fd_set rds; struct timeval step; int ret; FD_ZERO(&rds); FD_SET(led_control_pipe, &rds); step.tv_sec = period; step.tv_usec = (period - step.tv_sec) * 1000000L; ret = select(led_control_pipe + 1, &rds, NULL, NULL, &step);

Page 209: Mini6410 um chinese

第 - 209 - 页

if (ret < 0) { perror("select"); exit(1); } if (ret == 0) { push_leds(); } else if (FD_ISSET(led_control_pipe, &rds)) { static char buffer[200]; for (;;) { char c; int len = strlen(buffer); if (len >= sizeof buffer - 1) { memset(buffer, 0, sizeof buffer); break; } if (read(led_control_pipe, &c, 1) != 1) { break; } if (c == '\r') { continue; } if (c == '\n') { int tmp_type; double tmp_period; if (sscanf(buffer,"%d%lf", &tmp_type, &tmp_period) == 2) { type = tmp_type; period = tmp_period; } fprintf(stderr, "type is %d, period is %lf\n", type, period); memset(buffer, 0, sizeof buffer); break; } buffer[len] = c; } } } close(led_fd); return 0; }

Page 210: Mini6410 um chinese

第 - 210 - 页

使用 make 指令可以直接编译出 led-player 可执行文件,它被作为一个服务器放置在

开发板的/sbin 目录中。 Leds.cgi 网关程序源代码(该程序在开发板上的位置:/www/leds.cgi),可见该网关程序

其实就是一个 shell 脚本,它被网页 leds.html 调用为一个执行“action”,该脚本清单如下: Leds.cgi 脚本清单 #!/bin/sh type=0 period=1 case $QUERY_STRING in *ping*) type=0 ;; *counter*) type=1 ;; *stop*) type=2 ;; esac case $QUERY_STRING in *slow*) period=0.25 ;; *normal*) period=0.125 ;; *fast*) period=0.0625 ;; esac /bin/echo $type $period > /tmp/led-control echo "Content-type: text/html; charset=gb2312"

Page 211: Mini6410 um chinese

第 - 211 - 页

echo /bin/cat led-result.template exit 0

4.9.11 基于 C++的 Hello,World

程序源代码说明 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/c++ 测试程序源代码名称 cplus.c++ 测试程序可执行文件名称 cplus 程序清单 #include <iostream> #include <cstring> using namespace std; class String { private: char *str; public: String(char *s) { int lenght=strlen(s); str = new char[lenght+1]; strcpy(str, s); } ~String() { cout << "Deleting str.\n"; delete[] str; } void display() { cout << str <<endl; } }; int main(void) {

Page 212: Mini6410 um chinese

第 - 212 - 页

String s1="I like FriendlyARM."; cout << "s1="; s1.display(); return 0; double num, ans; cout << "Enter num:"; }

你可以按照上面的 hello 程序的步骤手工编译出 cplus 可执行文件,然后下载到开发板

运行它

4.10 嵌入式 Linux 驱动程序示例

上一节我们介绍了一个简单的 Linux 程序 Hello,World,它是运行于用户态的应用程

序,现在我们先从一个运行于内核态的 Hello, World 程序开始,介绍驱动程序的编写和使用。

4.10.1 Hello,Module- 简单的嵌入式 Linux 驱动程序模块

程序源代码说明 源代码所在目录 /opt/FriendlyARM/mini6410/linux/linux-2.6.28.6/drivers/char 源代码文件名称 Mini6410_hello_module.c 该驱动的主设备号 无 设备名 无 测试程序源代码目录 无 测试程序名称 无 测试程序可执行文件名称 无 说明:该驱动装载后不会在 dev 下创建任何设备节点。 程序清单 #include <linux/kernel.h> #include <linux/module.h> static int __init mini6410_hello_module_init(void) { printk("Hello, Mini6410 module is installed !\n"); return 0; }

Page 213: Mini6410 um chinese

第 - 213 - 页

static void __exit mini6410_hello_module_cleanup(void) { printk("Good-bye, Mini6410 module was removed!\n"); } module_init(mini6410_hello_module_init); module_exit(mini6410_hello_module_cleanup); MODULE_LICENSE("GPL");

(1)把 Hello,Module 加入内核代码树,并编译 一般编译 2.6 版本的驱动模块需要把驱动代码加入内核代码树,并做相应的配置,如

下步骤(注意:实际上以下步骤均已经做好,你只需要打开检查一下直接编译就可以了): Step1:编辑配置文件 Kconfig,加入驱动选项,使之在 make menuconfig 的时候出现 打开 linux-2.6.28.6/drivers/char/Kconfig 文件,添加如图所示:

保存退出,这时在 linux-2.6.28.6 目录位置运行一下 make menuconfig 就可以在 Device

Drivers Character devices 菜单中看到刚才所添加的选项了,按下空格键将会选择为<M>,此意为要把该选项编译为模块方式;再按下空格会变为<*>,意为要把该选项编译到内核中,

在此我们选择<M>,如图,如果没有出现,请检查你是否已经装载了缺省的内核配置文件,

见 4.5.1 章节。

Page 214: Mini6410 um chinese

第 - 214 - 页

Step2:通过上一步,我们虽然可以在配置内核的时候进行选择,但实际上此时执行

编译内核还是不能把 mini6410_hello_module.c 编译进去的,还需要在 Makefile 中把内核配置

选项和真正的源代码联系起来,打开 linux-2.6.28.6/drivers/char/Makefile,如图添加并保存退

出:

Page 215: Mini6410 um chinese

第 - 215 - 页

Step3:这时回到 linux-2.6.28.6 源代码根目录位置,执行 make modules,就可以生成

我们所需要的内核模块文件 mini6410_hello_module.ko 了,注意:执行 make modules 之前,

必须先执行 make zImage,只需一次就可以了。 至此,我们已经完成了模块驱动的编译。

Page 216: Mini6410 um chinese

第 - 216 - 页

(2)把 Hello, Module 下载到开发板并安装使用 在此使用 rz 命令把编译出的 mini6410_hello_module.ko 下载到板子中,并把它移动到

/lib/modules/2.6.28.6-FriendlyARM 目录然后在板子中现在执行 #modprobe mini6410_hello_module 可以看到该模块已经被装载了(注意:使用 modprobe 命令加载模块不需要加“ko”尾

) 再执行以下命令,可以看到该模块被卸载 #rmmod mini6410_hello_module 注 意 : 要 能 够 正 常 卸 载 模 块 , 必 须 把 模 块 放 入 开 发 板 的

/lib/modules/2.6.28.6-FriendlyARM 目录 另外需要注意的是:因为我们的内核有时会升级更新,如果内核版本已经改变,请依

照具体的内核版本重新建立一个模块存放目录,在此为/lib/modules/2.6.28.6-FriendlyARM 整个过程如下图:

Page 217: Mini6410 um chinese

第 - 217 - 页

4.10.2 LED 驱动程序

在上一小节,我们介绍了 简单的 Hello,Module 驱动程序模块,它只是从串口输出一

些信息,并未对应板上的硬件进行操作,在嵌入式 Linux 系统中,大部分的硬件都需要类似

的驱动才能操作,比如触摸屏、网卡、音频等,在这里我们介绍的是一些简单典型的例子,

实际上复杂的驱动都有参考代码,不必从头写驱动。从本小节开始,我们将介绍一些和硬件

密切相关的驱动,它们才是真正的嵌入式 Linux 驱动。 要写实际的驱动,就必须了解相关的硬件资源,比如用到的寄存器,物理地址,中断等,

在这里,LED 是一个很简单的例子,它用到了如下硬件资源。 开发板上所用到的 4 个 LED 的硬件资源

LED 对应的 IO 寄存器名称 对应的 CPU 引脚 LED1 GPK4 R23 LED2 GPK5 R22 LED3 GPK6 R24 LED4 GPK7 R25

要操作所用到的 IO 口,就要设置它们所用到的寄存器,我们需要调用一些现成的函

数或者宏,在此用到的是 readl 和 writel,它们将直接对相应的寄存器执行读取和写入的操作。

在下面的驱动程序清单中,你可以看到它们被调用的情况。除此之外,你可能还需要调用一

些和设备驱动密切相关的基本函数,如注册设备 misc_register,填写驱动函数结构

file_operations,以及像 Hello,Module 中那样的 module_init 和 module_exit 函数等。 有些函数并不是必须的,随着你对 Linux 驱动开发的进一步了解和阅读更多的代码,你

Page 218: Mini6410 um chinese

第 - 218 - 页

自然明白。 程序源代码说明 驱动源代码所在目录 /opt/FriendlyARM/mini6410/linux/linux-2.6.28.6/drivers/char 驱动程序名称 Mini6410_leds.c 设备号 Led 属于 misc 设备,设备自动生成 设备名 /dev/leds 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/leds 测试程序名称 led.c 测试程序可执行文件名称 led 说明:LED 驱动已经被编译到缺省内核中,因此不能再使用 insmod 方式加载。 程序清单 #include <linux/miscdevice.h> #include <linux/delay.h> #include <asm/irq.h> //#include <mach/regs-gpio.h> #include <mach/hardware.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #include <linux/mm.h> #include <linux/fs.h> #include <linux/types.h> #include <linux/delay.h> #include <linux/moduleparam.h> #include <linux/slab.h> #include <linux/errno.h> #include <linux/ioctl.h> #include <linux/cdev.h> #include <linux/string.h> #include <linux/list.h> #include <linux/pci.h> #include <asm/uaccess.h> #include <asm/atomic.h> #include <asm/unistd.h> #include <plat/gpio-cfg.h> #include <plat/regs-clock.h> #include <plat/regs-gpio.h> #include <plat/gpio-bank-e.h>

Page 219: Mini6410 um chinese

第 - 219 - 页

#include <plat/gpio-bank-k.h> #define DEVICE_NAME "leds" static int sbc2440_leds_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) { switch(cmd) { unsigned tmp; case 0: case 1: if (arg > 4) { return -EINVAL; } tmp = readl(S3C64XX_GPKDAT); tmp &= ~(1 << (4 + arg)); tmp |= ( (!cmd) << (4 + arg) ); writel(tmp, S3C64XX_GPKDAT); //printk (DEVICE_NAME": %d %d\n", arg, cmd); return 0; default: return -EINVAL; } } static struct file_operations dev_fops = { .owner = THIS_MODULE, .ioctl = sbc2440_leds_ioctl, }; static struct miscdevice misc = { .minor = MISC_DYNAMIC_MINOR, .name = DEVICE_NAME, .fops = &dev_fops, }; static int __init dev_init(void)

Page 220: Mini6410 um chinese

第 - 220 - 页

{ int ret; { unsigned tmp; tmp = readl(S3C64XX_GPKCON); tmp = (tmp & ~(0xffffU<<16))|(0x1111U<<16); writel(tmp, S3C64XX_GPKCON); tmp = readl(S3C64XX_GPKDAT); tmp |= (0xF << 4); writel(tmp, S3C64XX_GPKDAT); } ret = misc_register(&misc); printk (DEVICE_NAME"\tinitialized\n"); return ret; } static void __exit dev_exit(void) { misc_deregister(&misc); } module_init(dev_init); module_exit(dev_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("FriendlyARM Inc.");

4.10.3 按键驱动程序

程序源代码说明 驱动源代码所在目录 /opt/FriendlyARM/mini6410/linux/linux-2.6.28.6/drivers/char 驱动程序名称 Mini6410_buttons.c 该驱动的主设备号 Misc 设备,设备号将自动生成 设备名 /dev/buttons 测试程序源代码目录 /opt/FriendlyARM/mini6410/linux/examples/buttons 测试程序源代码名称 buttons_test.c

Page 221: Mini6410 um chinese

第 - 221 - 页

测试程序可执行文件名称 buttons 说明:按键驱动已经被编译到缺省内核中,因此不能再使用 insmod 方式加载。 开发板所用到的按键资源 按键 对应的 IO 寄存器名称 对应的中断 K1 GPN0 EINT0 K2 GPN1 EINT1 K3 GPN2 EINT2 K4 GPN3 EINT3 K5 GPN4 EINT4 K6 GPN5 EINT5 K7 GPL11 EINT19 K8 GPL12 EINT20 程序清单 #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/init.h> #include <linux/delay.h> #include <linux/poll.h> #include <linux/irq.h> #include <asm/irq.h> #include <asm/io.h> #include <linux/interrupt.h> #include <asm/uaccess.h> #include <mach/hardware.h> #include <linux/platform_device.h> #include <linux/cdev.h> #include <linux/miscdevice.h> #include <plat/gpio-cfg.h> #include <plat/regs-clock.h> #include <plat/regs-gpio.h> #include <plat/gpio-bank-n.h> #define DEVICE_NAME "buttons" struct button_irq_desc { int irq; int number;

Page 222: Mini6410 um chinese

第 - 222 - 页

char *name; }; static struct button_irq_desc button_irqs [] = { {IRQ_EINT( 0), 0, "KEY0"}, {IRQ_EINT( 1), 1, "KEY1"}, {IRQ_EINT( 2), 2, "KEY2"}, {IRQ_EINT( 3), 3, "KEY3"}, {IRQ_EINT( 4), 4, "KEY4"}, {IRQ_EINT( 5), 5, "KEY5"}, {IRQ_EINT(19), 6, "KEY6"}, {IRQ_EINT(20), 7, "KEY7"}, }; static volatile char key_values [] = {'0', '0', '0', '0', '0', '0', '0', '0'}; static DECLARE_WAIT_QUEUE_HEAD(button_waitq); static volatile int ev_press = 0; static irqreturn_t buttons_interrupt(int irq, void *dev_id) { struct button_irq_desc *button_irqs = (struct button_irq_desc *)dev_id; int down; int number; unsigned tmp; udelay(0); number = button_irqs->number; switch(number) { case 0: case 1: case 2: case 3: case 4: case 5: tmp = readl(S3C64XX_GPNDAT); down = !(tmp & (1<<number)); break; case 6: case 7: tmp = readl(S3C64XX_GPLDAT); down = !(tmp & (1 << (number + 5))); break; default: down = 0;

Page 223: Mini6410 um chinese

第 - 223 - 页

} if (down != (key_values[number] & 1)) { key_values[number] = '0' + down; ev_press = 1; wake_up_interruptible(&button_waitq); } return IRQ_RETVAL(IRQ_HANDLED); } static int s3c64xx_buttons_open(struct inode *inode, struct file *file) { int i; int err = 0; for (i = 0; i < sizeof(button_irqs)/sizeof(button_irqs[0]); i++) { if (button_irqs[i].irq < 0) { continue; } err = request_irq(button_irqs[i].irq, buttons_interrupt, IRQ_TYPE_EDGE_BOTH, button_irqs[i].name, (void *)&button_irqs[i]); if (err) break; } if (err) { i--; for (; i >= 0; i--) { if (button_irqs[i].irq < 0) { continue; } disable_irq(button_irqs[i].irq); free_irq(button_irqs[i].irq, (void *)&button_irqs[i]); } return -EBUSY; }

Page 224: Mini6410 um chinese

第 - 224 - 页

ev_press = 1; return 0; } static int s3c64xx_buttons_close(struct inode *inode, struct file *file) { int i; for (i = 0; i < sizeof(button_irqs)/sizeof(button_irqs[0]); i++) { if (button_irqs[i].irq < 0) { continue; } free_irq(button_irqs[i].irq, (void *)&button_irqs[i]); } return 0; } static int s3c64xx_buttons_read(struct file *filp, char __user *buff, size_t count, loff_t *offp) { unsigned long err; if (!ev_press) { if (filp->f_flags & O_NONBLOCK) return -EAGAIN; else wait_event_interruptible(button_waitq, ev_press); } ev_press = 0; err = copy_to_user((void *)buff, (const void *)(&key_values), min(sizeof(key_values), count)); return err ? -EFAULT : min(sizeof(key_values), count); }

Page 225: Mini6410 um chinese

第 - 225 - 页

static unsigned int s3c64xx_buttons_poll( struct file *file, struct poll_table_struct *wait) { unsigned int mask = 0; poll_wait(file, &button_waitq, wait); if (ev_press) mask |= POLLIN | POLLRDNORM; return mask; } static struct file_operations dev_fops = { .owner = THIS_MODULE, .open = s3c64xx_buttons_open, .release = s3c64xx_buttons_close, .read = s3c64xx_buttons_read, .poll = s3c64xx_buttons_poll, }; static struct miscdevice misc = { .minor = MISC_DYNAMIC_MINOR, .name = DEVICE_NAME, .fops = &dev_fops, }; static int __init dev_init(void) { int ret; ret = misc_register(&misc); printk (DEVICE_NAME"\tinitialized\n"); return ret; } static void __exit dev_exit(void) { misc_deregister(&misc); }

Page 226: Mini6410 um chinese

第 - 226 - 页

module_init(dev_init); module_exit(dev_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("FriendlyARM Inc.");

4.11 编译 Qtopia-2.2.0

因为配置编译 Qtopia-2.2.0 的过程比较复杂,为了便于初学者学习和使用方便,我们

把配置和编译的步骤制作成一个 build 脚本,只要执行该脚本即可编译整个 Qtopia 平台和应

其自带的各个小程序;通过”run”脚本则可以运行它们,x86 和 arm 版本的步骤基本相同,而

脚本内容则有稍微不同,下面是详细的步骤。

4.11.1 解压安装源代码

见 4.4.1 章节

4.11.2 编译和运行 x86 版本的 Qtopia-2.2.0

敬告:我们的软件开发和测试全部基于Fedora9 平台做开发,所有的配置和编译脚本

也基于此平台,我们没有在其他平台上测试过。如果你对Linux开发佷熟悉,相信你会根据错

误提示逐步找到原因并解决,它们一般是你选用的平台缺少了某些库文件或者工具等原因造

成 的 ; 否 则 , 我 们 建 议 初 学 者 使 用 和 我 们 一 致 的 平 台 , 即 Fedora 9( 全 称 为 : Fedora-9-i386-DVD.iso) , 你 可 以 在 其 官 方 网 站 下 载

(ftp://download.fedora.redhat.com/pub/fedora/linux/releases/9/Fedora/i386/iso/Fedora-9-i386-DVD.iso ,不保证长期有效),也可以在其他地方获取,它们都是一样的,安装时请务必参考我们

手册提供的步骤,这是我们经过严格测试的,以免遗漏一些开发时所需要的组件。 Linux 的发行版本众多,我们无法为此一一编写文档解释安装方法,请谅解。

进入工作目录,执行以下命令 #cd /opt/FriendlyARM/mini6410/linux/x86-qtopia #./build-all (该过程比较长,需要运行大概 30 分钟左右) 说明:./build-all 将自动编译完整的 Qtopia 和嵌入式浏览器,你还可以先后执行./build

和./build-konq 脚本命令分别编译它们,如果你没有顺利执行,请参考上面的红色字体说明。 要运行你刚刚编译出的 Qtopia 系统十分简单,在刚刚编译完的命令终端下输入如下

命令: #./run ;注意,“/”前面有个“.”,这表示在当前目录执行 这时你可以看到如下界面

Page 227: Mini6410 um chinese

第 - 227 - 页

按照提示点击运行就可以看到 Qtopia 系统了,如下, 注意:我们并没有制作 x86 版本的中文系统。

4.11.3 编译和运行 arm 版本的 Qtopia-2.2.0

请确认你所使用的编译器版本为 arm-linux-gcc-4.4.1,运行平台为 Fedora 9,进入工作

目录,执行以下命令 #cd /opt/FriendlyARM/mini6410/linux/arm-qtopia #./build-all (该过程比较长,需要运行大概 30 分钟左右) #./mktarget (制作适用于根文件系统的目标板二进制映象文件包,将生成

target-qtopia-konq.tgz)

Page 228: Mini6410 um chinese

第 - 228 - 页

说明:./build-all 将自动编译完整的 Qtopia 和嵌入式浏览器,并且编译生成的系统支

持 Jpeg、GIF、PNG 等格式的图片,您还可以先后执行./build 和./build-konq 脚本命令分别编

译它们。如果你没有顺利执行,请参考上一节开头的红色字体说明。 你可以删除开发板中原有的 Qtopia 系统,只要把/opt 目录下的所有文件都删除就可以

了。然后把刚刚生成的 target-qtopia-konq.tgz 通过优盘或者其他方式解压到开发板的根目录,

假定我们已经通过 ftp 把它传到了/home/plg 目录下,然后在开发板命令终端执行: #tar xvzf /home/plg/target-qtopia-konq.tgz –C / 其中”C”是 Change 的意思,”C”后面的“/”代表要解压到根目录下,执行完毕,重启

开发板,就可以看到所有的界面都已经变为英文的,并且”FriendlyARM”标签下只有一个浏览

器程序,这就是你自己编译得到的整个 Qtopia 系统了,如下图: 注意:新系统可能会使用预装系统的触摸屏校正参数/etc/pointercal,你也可以在删除

旧系统的时候,一并删除它,这样开机后就会进入校正界面了。

上面的过程看似很简单,其实所有的秘密都在 build-all 脚本中,网上也有很多关于移

植的文章,但本质的步骤都是脚本所记录的那些,你可以使用记事本工具打开自行查看一下,

只不过其中没有那些嘻哈打诨的辞藻罢了。

Page 229: Mini6410 um chinese

第 - 229 - 页

4.12 编译 QtE-4.7.0

4.12.1 解压安装源代码

见 4.4.1 章节

4.12.2 编译和运行 arm 版本的 QtE-4.7.0

注意,请务必使用我们光盘中提供的交叉编译器 arm-linux-gcc-4.4.1,并基于 Fedora9平台,Fedora9 的安装步骤见 4.3.1,我们不能保证所制作的脚本可以在其他平台环境下顺利

执行,对此我们也不提供支持。 和 Qtopia-2.2.0 十分类似,我们也为 QtE-4.7.0 的编译制作了现成的脚本 build-all,进

入源代码目录执行: #cd /opt/FriendlyARM/mini6410/linux/arm-qte-4.7.0 #./build-all 这个过程将十分漫长,根据机器配置不同,会有不同的编译时间,请耐心等待。 当顺利执行完毕,再运行 mktarget 脚本,将会从编译好的目标文件目录中,提取出必

要的 QtE-4.7.0 库文件和可执行二进制示例,并打包为 target-qte-4.7.0.tgz,把它在开发板的

根目录下解压,就可以使用了,如下命令 #tar xvzf target-qte-4.7.0.tgz –C / 这样,就会在/usr/local/目录下创建生成 Trolltech 目录,它里面包含了运行所需要的所

有库文件和可执行程序。 使用说明:因为目标板中预装的 Linux 已经包含了 QtE-4.7.0,测试之前,你可以先删

除原有的,它位于/usr/local/Trolltech 目录,把该目录使用 rm 命令完全删除就可以了。 要运行 QtE-4..6.3,建议先停止正在运行的 Qtopia-2.2.0,点“设置”中的“关机”可

出现如下界面,点“Terminate Server”即可关闭 Qtopia-2.2.0 系统。

也可以使用其他的方法,比如在启动脚本/etc/init.d/rcS 中注释掉 qtopia 启动项,再重

新系统系统;或者使用 killall 命令杀死相关的进程(比较多;甚至是直接删除/opt 目录中的所

Page 230: Mini6410 um chinese

第 - 230 - 页

有内容重启。 关闭 qtopia-2.2.0 之后,在命令行输入 qt4 命令,即可启动刚刚解压安装的 QtE-4.7.0

了,如图:

Page 231: Mini6410 um chinese

第 - 231 - 页

第五章 WindowsCE 6.0 开发指南

5.1 体验 WindowsCE6

WindowsCE6 的烧写文件位于光盘“\images\WindowsCE6”目录中。 请按照第三章的方法和步骤下载烧写您所需要的系统 (此示例中烧写的是

NK_T43.bin,它适用于 4.3”LCD),安装完毕,请把开发板的 S2 开关设置为 Nand Flash 启动

系统,系统启动时的画面如图。

5.1.1 触摸屏校正

缺省安装的 wince 系统的触摸屏校正参数一般适用于 NEC 4.3”LCD,但因为每个触摸

屏的物理特性不同,有时可能不太准确,特别是不同尺寸的时候,这时就需要重新校正,如

下步骤。

Page 232: Mini6410 um chinese

第 - 232 - 页

请先接上 USB 鼠标,点开始->设置->控制面板,找到“笔针”图标,双击打开“笔

针属性”窗口,点“校准”选项卡的“再校准”按钮,开始重新校正。

根据系统提示,使用五点校正法用触摸笔开始校正,校正完毕,将会跳出如下窗口,

这时随便点一个位置即可返回“笔针属性”窗口,点“OK”保存退出。

如果您想保存本次校准的参数,请点“开始->挂起”,然后再重新开机就可以了。

5.1.2 查看系统信息

点“开始”->“设置”->“控制面板”->“系统”,可以打开查看系统信息,如图。

也可以在桌面右键点“我的设备”-> “属性”(触摸笔常按不放,可以实现右键效果)。

Page 233: Mini6410 um chinese

第 - 233 - 页

5.1.3 设置实时时钟并保存

点任务栏右下角的时间,出现时间设置窗口,根据提示进行设置就可以了,设置完毕,

点“OK”退出,设置时间不需要点“挂起”保存。

5.1.4 用户存储空间

打开“我的设备”可以看到一个名为“NandFlash”的磁盘驱动器,可以把要保存的

数据放在里面,该目录里面的内容掉电不会丢失,如图。

Page 234: Mini6410 um chinese

第 - 234 - 页

5.1.5 使用优盘和 SD 卡

在 wince 中使用优盘和使用标准的 windows 使用优盘类似,当 WINCE 系统启动以后,

把优盘插入 USB Host 接口,这时板子给优盘供电,优盘的指示灯会闪烁,等待几秒系统就自

动加载优盘了,这时可以双击桌面的“我的设备”图标,打开资源管理器,可以看到优盘的

盘符:硬盘,双击硬盘即可进入优盘进行数据读写了。把 SD/MMC 卡插入板上的 SD 插槽,

资源管理器中就可以看到 SD 卡的盘符:Storage Card,双击打开进入该目录,就可以对

SD/MMC 卡进行读写了。

5.1.6 播放 mp3

使用 wince 自带的 MediaPlayer 播放器可以播放 mp3,如图

Page 235: Mini6410 um chinese

第 - 235 - 页

5.1.7 测试 LED

打开桌面的“友善之臂”程序组,并找到“LED-Test”,双击运行它,如图,你可以

通过点界面上的按钮来控制板上 4 个 LED 的亮灭。

5.1.8 测试按键

打开桌面的“友善之臂”程序组,并找到“Buttons”,双击运行它,如图,此时按下

开发板上的按键,可以看到程序界面上相应的图标变为蓝色。

Page 236: Mini6410 um chinese

第 - 236 - 页

5.1.9 测试 PWM 控制蜂鸣器

打开桌面的“友善之臂”程序组,并找到“PWM-Buzzer”,双击运行它,如图,点“Start”按钮可以测试蜂鸣器,点“Stop”可以停止蜂鸣器发出声音。

5.1.10 录音测试

打开桌面的“友善之臂”程序组,并找到“PWM-Buzzer”,双击运行它,如图

Page 237: Mini6410 um chinese

第 - 237 - 页

根据提示,点“录音”按钮开始录音,这时对着板上的麦克风说话,程序开始录音,

点“停止”按钮结束录音,如图:

此时可以点“播放”按钮会循环播放刚才的录音。 说明:该录音程序并不保存录音结果。

5.1.11 串口助手

说明:本开发板提供的 BSP 包含三个串口的标准驱动,分别是 COM2,3,4,而 COM1的普通串口功能驱动尚不可用,要测试这三个串口,需要使用串口扩展小板,如下图所示,

使用它分别连接开发板的 CON2,3,4 端口即可。

在“友善之臂”程序组点击运行“SerialPort”,运行界面如左下图,

Page 238: Mini6410 um chinese

第 - 238 - 页

点“设置”按钮,打开设置窗口,设置串口号为 COM2,波特率为 115200,其他设

置如图(右上),点确定返回主窗口。 同时,连接好扩展板的 COM2 到 PC 一端,并在 PC 端把相应的串口作相同的设置。 在主窗口中点“打开端口”按钮,此时该按钮会变为“关闭端口”,在“发送区”输

入一些字符,点“发送”按钮,如左下图,这时会在 PC 端的串口终端接收到从开发板发送

来的字符,如右下图:

然后,在串口调试助手的主窗口点“接收”按钮(该按钮会改变为“不接收”),在

PC 端的串口终端输入一些字符(通过超级终端是无法看到的),在输入的同时,我们看到输入

的字符会在开发板串口调试助手的接收区显示,如图:

Page 239: Mini6410 um chinese

第 - 239 - 页

我们还可以使用同样的方法测试 COM3,4,在此就不作详细的说明了。

5.1.12 CMOS 摄像头预览拍照

未完

5.1.13 硬解码播放器

大部分 6410 开发板演示多媒体播放采用的是 "钢铁侠""史瑞克""刺客联盟“那些老片

子, 并且没有声音输出,因为那是三星提供的测试程序,采用的是特殊格式的高清片,仅仅

是用来测试视频解码的,无法直接正常播放普通影片,现在我们在 6410 平台上实现了更为强

大通用的硬解码播放器,它可以支持 720x480 30fps或 720x576 25fps硬解码播放Mpeg4, H264, H263 等视频,效果非凡! (目前我们也首家实现了 Linux 平台的硬解码播放器)。

和同名其他版本的播放器相比,此版本的优势在于: - 可以自动识别 Mpeg4, H264, H263 格式的影片,并自动切换为硬解码播放,也就是

说,如果你的 6410 平台驱动中没有硬解码驱动支持,也是可以播放的,只是在播放效果不够

好 - 播放某些影片时没有花屏的现象 - 采用 DirectDraw 技术绘制 终画面,效果更佳 该播放器现在已经集成到默认安装的 WinCE 系统中,为了方便用户的测试,我们专

门提供了 2 个测试视频,它们在“光盘 B\测试视频”目录中,你可以把它拷贝到 SD 卡中使

用,其中一个是 H.264 格式编码的视频,另一个采用 MPEG4 格式。 打开桌面的“超级播放器”程序,如图 注意:新安装的 wince 系统在第一次打开此程序时会比较慢

点“文件”->“打开文件”找到 SD 卡或你自己的其他视频文件,如图

Page 240: Mini6410 um chinese

第 - 240 - 页

选中文件,就可以观看硬解码播放的电影了。

使用注意事项:因为 6410 大仅支持 720x480 的硬解码播放,所以在 7 寸全屏时会

稍微有点卡,此时可以点“选项”->"缩放“->"100%"和“选项"->"画面比例"-"原始",再点全屏按

钮即可,当使用 4.3”LCD 或其他分辨率的 LCD 播放时,请自行根据实际情况选择缩放,直

至达到 佳效果。

5.1.14 TV-OUT 测试

打开桌面的“友善之臂”程序组,并找到“multimedia-test”,双击运行它,如图。

此时把电视输入设置为 CVBS,并与目标板之间使用黄色的视频线连接好,点“TV”,

Page 241: Mini6410 um chinese

第 - 241 - 页

则 LCD 上的输出消失,画面转到了 TV,如图。

在这个画面上,再点击打开“TV”测试程序,选“LCD”即可恢复到 LCD 显示。

5.1.15 设置网络参数以连接互联网

只有正确设置了 IP 地址和网关以及 DNS 等参数,才可以使用开发板连接使用互联网

或者局域网。 设置网络参数的步骤和标准的 Windows 系统十分相似,点“开始”->“控制面板”,

找到网络设置选项,并找到相应的网卡 DM9CE1 如图。

双击打开 DM9CE1 图标,如图,在这里,你可以设置静态的 IP 地址,也可以设置动

态获取 IP 的方式,按照你所在的网络环境实际参数填写即可,如图为缺省的设置参数。

Page 242: Mini6410 um chinese

第 - 242 - 页

确定网络设置参数无误,就可以打开浏览器上互联网了。

5.1.16 使用 SD 无线网卡

开机之前,把 SD-WiFi 模块先接到开发板的 SDIO 排针座上,也就是 CON9,如图。

系统启动后,SD WiFi 模块上的绿色灯会不停闪烁,如果附近有无线网接入点,系统

会自动出现无线网设置窗口,如图

Page 243: Mini6410 um chinese

第 - 243 - 页

选中一个无线网络,点连接,开始设置无线网,根据自己的实际情况,选择加密类型,

并输入密码,如图。

点“确定”返回,设置窗口会出现连接提示信息,连接成功,如图所示。

Page 244: Mini6410 um chinese

第 - 244 - 页

5.1.17 与 PC 同步(基于 Windows7)

注意:在 Windows 7 系统中,无需安装 ActiveSync 软件!但需要保证你所用的

Windows7 能够上互联网,因为安装“Windows Mobile 设备中心”会自动从网络下载文件。 在 Windows 7 系统中,开发板与 PC 的同步是通过“Windows Mobile 设备中心”(下

称“同步中心”)来实现并管理的,它类似于以前的 ActiveSync,它的界面如图所示。

“同步中心”并非在 Windows 7 中自带,而是首次连接移动设备时通过互联网下载安

装的,下面是详细的步骤。 说明:如果开发板安装了 WinCE6,用户依然可以通过 Windows XP 系统的 ActiveSync

与之相连,具体步骤可以参考老版本的用户手册,在此介绍的步骤仅适用于 Windows 7 系统。

安装 Windows Mobile 设备中心实现 PC 同步

Page 245: Mini6410 um chinese

第 - 245 - 页

当开发板中安装并运行 WinCE6 系统后,第一次和基于 Windows 7 系统的 PC 通过

USB 连接时,会弹出如图窗口

很快,就会在桌面上出现如下提示窗口

此时要保证你的网络是和互联网连通的,系统会自动下载并安装配置相关的软件,如图

安装完毕,出现如下界面开始自动配置

出现“软件许可协议”窗口,点“接受”继续

Page 246: Mini6410 um chinese

第 - 246 - 页

之后,很快就和开发板设备连接成功了,如图

点“不设置就进行连接”按钮,继续,出现如图界面

此时,点“文件管理”之“浏览设备上的内容”就会像打开目录一样打开开发板的根目录,如果

开发板上插了优盘或者 SD 卡,也会像优盘一样出现相应的图标。

Page 247: Mini6410 um chinese

第 - 247 - 页

在此,我们打开“\”文件夹,它表示了整个开发板的目录内容,如下图,这时,你就可以通过拖

放向开发板中复制文件了,当然也可以从开发板中读取文件。

5.2 建立 WindowsCE 6.0 开发环境

注意:以下软件和步骤均基于 Microsoft Windows 7 系统(旗舰版),其他 Windows系统未经测试。建议把安装软件复制到硬盘安装(ISO 光盘映象文件可借助虚拟光驱)

Page 248: Mini6410 um chinese

第 - 248 - 页

Windows CE 6.0 的安装过程十分繁琐,并且对开发主机的要求比较高(否则会很慢),

我们建议用户特别是初学者务必按照我们介绍的步骤安装开发环境。 这里是我们采用的开发主机的关键配置,仅供参考: CPU:Intel Core Duo E8400 内存:DDR2 4GB 硬盘空间:500GB 安装所需的软件列表如下(本公司并不提供 Windows Embedded 6.0 CE 6 的安装文件,

用户可以到微软网站自行下载它的试用版): Visual Studio 2005

(试用版下载地址: http://download.microsoft.com/download/e/1/4/e1405d9e-47e3-404c-8b09-489437b27fb0/En_vs_2005_Pro_90_Trial.img )

Visual Studio 2005 Service Pack 1(文件名:VS80sp1-KB926601-X86-ENU.exe) 下载地址: http://www.microsoft.com/downloads/details.aspx?familyid=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc&displaylang=en

Visual Studio 2005 Service Pack 1 Update for Windows Vista (文件名:VS80sp1-KB932232-X86-ENU.exe) 下载地址: http://www.microsoft.com/downloads/details.aspx?FamilyID=90E2942D-3AD1-4873-A2EE-4ACC0AACE5B6&displaylang=en )

Visual Studio 2005 Service Pack 1 ATL Security Update (文件名:VS80sp1-KB971090-X86-INTL.exe) 下载地址: http://www.microsoft.com/downloads/details.aspx?familyid=7C8729DC-06A2-4538-A90D-FF9464DC0197&displaylang=en

Windows Embedded CE 6.0 试用版下载地址: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7e286847-6e06-4a0c-8cac-ca7d4c09cb56

Page 249: Mini6410 um chinese

第 - 249 - 页

Windows Embedded CE 6.0 Platform Builder Service Pack 1 下载地址: http://www.microsoft.com/downloads/details.aspx?FamilyId=BF0DC0E3-8575-4860-A8E3-290ADF242678&displaylang=en

Windows Embedded CE 6.0 R2 下载地址: http://www.microsoft.com/downloads/details.aspx?FamilyId=F41FC7C1-F0F4-4FD6-9366-B61E0AB59565&displaylang=en

Windows Embedded CE 6.0 R3 下载地址: http://www.microsoft.com/downloads/details.aspx?FamilyID=BC247D88-DDB6-4D4A-A595-8EEE3556FE46&amp;displaylang=ja&displaylang=en

腾讯 QQ(第三方软件) 下载地址: http://www.microsoft.com/downloads/details.aspx?FamilyID=527042f7-bb5b-4831-a6ad-5081808824ec&displaylang=en

WesttekFileViewers6.exe(office 文件浏览器,亦属于第三方软件) 下载地址: http://www.microsoft.com/downloads/details.aspx?FamilyID=d2fd14eb-7d5c-428b-951c-343f910047c1&displaylang=en

以上列表顺序基本也说明了这些软件的安装顺序:先安装 Visual Studio 2005 及补丁,

再安装 Windows CE 6.0 及补丁, 后安装第三方软件。 说明:Windows CE 6.0 所使用的 Platform Builder 和以往的 Windows CE 5.0/4.2 等均

不同,它并不是独立的开发平台软件,而是作为 VS2005 的一个插件来安装使用的,因此必

须先安装 VS2005,以后所有的内核配置编译等开发都基于 VS2005 进行。 下面是详细的步骤。

5.2.1 安装 Visual Studio 2005 及补丁

Step1:打开 Visual Studio 2005 文件夹,找到 setup.exe,双击运行开始安装。

Page 250: Mini6410 um chinese

第 - 250 - 页

Step2:出现如图界面,点“Install Visual Studio 2005”,继续

Page 251: Mini6410 um chinese

第 - 251 - 页

Step3:出现如图界面,稍等片刻,点“Next”继续

Page 252: Mini6410 um chinese

第 - 252 - 页

Step4:出现如图界面,注意点选红色框的,并输入序列号,点“Next”继续

Page 253: Mini6410 um chinese

第 - 253 - 页

Step5:出现如图界面,选择安装类型,在此选择完全安装,即“Full”,点“Next”继续

Page 254: Mini6410 um chinese

第 - 254 - 页

Step6:出现如图界面,开始正式安装 Visual Studio 2005,此过程较长,请耐心等待。

Page 255: Mini6410 um chinese

第 - 255 - 页

Step7:Visual Studio 2005 安装完毕,出现如下画面,点“Finish”结束安装。

Page 256: Mini6410 um chinese

第 - 256 - 页

Page 257: Mini6410 um chinese

第 - 257 - 页

接着会出现如图界面,点“Exit”退出即可。

Page 258: Mini6410 um chinese

第 - 258 - 页

Step8:现在开始安装第一个补丁文件 Visual Studio 2005 Service Pack 1,双击运行

VS80sp1-KB926601-X86-ENU.exe 开始安装,出现如图界面

Step9:须稍等片刻,出现如图画面,点“OK”开始正式安装

Page 259: Mini6410 um chinese

第 - 259 - 页

Step10:接受安装许可协议,点“I accept”继续

Step11:出现安装过程界面,此过程较长,请耐心等待

Step12:安装完毕,出现如下界面,点“OK”结束本补丁的安装

Page 260: Mini6410 um chinese

第 - 260 - 页

Step13:接下来安装第二个补丁 Visual Studio 2005 Service Pack 1 Update for Windows Vista,双击运行 VS80sp1-KB932232-X86-ENU.exe,依次出现如图界面

Step14:稍等片刻,出现如图界面,点“OK”继续

Step15:出现安装许可协议界面,点“I accept”继续

Page 261: Mini6410 um chinese

第 - 261 - 页

Step16:出现安装过程界面,此过程较长,请耐心等待

Step17:安装完毕,出现如下界面,点“OK”结束本补丁的安装

Step18:接下来安装第三个补丁 Visual Studio 2005 Service Pack 1 ATL Security Update,双击运

行 VS80sp1-KB971090-X86-INTL.exe,依次出现如图界面

Page 262: Mini6410 um chinese

第 - 262 - 页

Step19:稍等片刻,出现如图界面,点“OK”继续

Step20:出现安装许可协议界面,点“I accept”继续

Page 263: Mini6410 um chinese

第 - 263 - 页

Step21:出现安装过程界面,此过程较长,请耐心等待

Step22:安装完毕,出现如下界面,点“OK”结束本补丁的安装

至此,基于 Windows7 平台的 Visual Studio 2005 及其补丁已经完全安装完毕。

Page 264: Mini6410 um chinese

第 - 264 - 页

5.2.2 安装 Windows CE 6.0 及补丁

接下来开始安装 Windows CE 6.0 的 Platform Builder,注意:在 Windows 7 系统上安

装 Windows CE 6.0 及其补丁需要管理员的权限来安装,请不要双击运行安装文件执行安装,

否则到后面无法安装成功,请按照如下步骤启动安装文件。 Step1:点“开始”->“程序”->“附件”,找到“命令行提示符”,然后点右键出现菜

单,点“以管理员身份运行”,如图

Step2:出现命令行窗口,进入相应的安装目录,并输入安装程序名“Windows Embedded

CE 6.0.msi”,开始安装,如图

Page 265: Mini6410 um chinese

第 - 265 - 页

Step3:出现如图界面,点“Next”继续

Page 266: Mini6410 um chinese

第 - 266 - 页

Step4:输入产品密钥,点“Next”继续

Page 267: Mini6410 um chinese

第 - 267 - 页

Step5:出现安装许可协议界面,选择“I accept”,点“Next”继续

Step6:选择及设置如图,点“Next”继续

Page 268: Mini6410 um chinese

第 - 268 - 页

Step7:出现如图界面,选择如图,点“Next”继续

Page 269: Mini6410 um chinese

第 - 269 - 页

Step8:出现如图界面,点“Install”继续

Page 270: Mini6410 um chinese

第 - 270 - 页

Step9:开始正式安装,如图,此过程时间较长,请耐心等待

Step10:安装结束,出现如图界面,点“Finish”结束安装。

Page 271: Mini6410 um chinese

第 - 271 - 页

Step11:接下来安装Windows CE 6.0的第一个补丁“Windows Embedded CE 6.0 Platform Builder Service Pack 1.msi”,按照本小节开头 Step1 的方法以管理员的身份进入命令行窗口,并进入

相应的目录,输入“Windows Embedded CE 6.0 Platform Builder Service Pack 1.msi”开始安装,

如图

Page 272: Mini6410 um chinese

第 - 272 - 页

Step12:出现如图界面,点“Next”继续

Page 273: Mini6410 um chinese

第 - 273 - 页

Step13:出现如图界面,选“I accept”,并点“Next”继续

Step14:出现如图界面,点“Next”继续

Page 274: Mini6410 um chinese

第 - 274 - 页

Step15:开始正式安装,如图,此过程时间较长,请耐心等待

Page 275: Mini6410 um chinese

第 - 275 - 页

Step16:安装结束,出现如图界面,点“Finish”结束安装。

Step17:接下来安装 Windows CE 6.0 的第二个补丁“Windows Embedded CE 6.0 R2.msi”,按

照本小节开头 Step1 的方法以管理员的身份进入命令行窗口,并进入相应的目录,输入

“Windows Embedded CE 6.0 R2.msi”开始安装,如图 说明:有的用户可能会下载到单独的 Windows Embedded CE 6.0 R2.msi”安装文件,大小为

50MB 左右,但此补丁似乎是不完整的,在安装时可能会遇到缺少“help.cab”文件的问题,

导致无法顺利安装,因此我们建议用户使用我们提供的 R2 补丁,它总共 122 个文件,大概

1.01GB。

Page 276: Mini6410 um chinese

第 - 276 - 页

Step18:出现如图界面,点“Next”继续

Page 277: Mini6410 um chinese

第 - 277 - 页

Step19:出现如图界面,选“I accept”,并点“Next”继续

Page 278: Mini6410 um chinese

第 - 278 - 页

Step20:出现如图界面,不用做任何改动,点“Next”继续

Page 279: Mini6410 um chinese

第 - 279 - 页

Step21:出现如图界面,点“Next”继续

Page 280: Mini6410 um chinese

第 - 280 - 页

Step22:开始正式安装,此过程时间较长,请耐心等待

Step23:安装结束,出现如图界面,点“Finish”结束安装

Page 281: Mini6410 um chinese

第 - 281 - 页

Step24:现在开始安装 Windows CE 6.0 的第三个补丁 R3,按照本小节开头 Step1 的方法以管

理员的身份进入命令行窗口,并进入相应的目录,输入“Windows Embedded CE 6.0 R2.msi”开始安装,如图 说明:有的用户可能会下载到单独的 Windows Embedded CE 6.0 R3”安装文件,它其实是一

个光盘映象文件,为了用户使用方便,我们把它提取出来,做成普通的目录文件方式,它总

共有 166 个文件,大小大概是 1.14GB

Page 282: Mini6410 um chinese

第 - 282 - 页

Step25:出现如图界面,点“Next”继续

Page 283: Mini6410 um chinese

第 - 283 - 页

Step26:出现如图界面,选“I accept”,并点“Next”继续

Page 284: Mini6410 um chinese

第 - 284 - 页

Step27:出现如图界面,点“Next”继续

Page 285: Mini6410 um chinese

第 - 285 - 页

Step28:开始正式安装,此过程时间较长,请耐心等待

Step29:安装结束,出现如图界面,点“Finish”结束安装

Page 286: Mini6410 um chinese

第 - 286 - 页

5.2.3 安装第三方软件腾讯 QQ

在 Windows CE 6.0 R3 补丁中,微软还正式提供了可选的第三方的软件,分别有腾讯

QQ 和 File Viewers,我们已经把它们放入资料光盘,用户也可以在微软网站下载到它们,地

址如下: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bc247d88-ddb6-4d4a-a595-8eee3556fe46#filelist (此地址有可能会失效,请用户到微软网站自行查询)

我们后面的例子中,实际中用到腾讯 QQ,因此我们只安装 QQ,其他软件用户可以

自行安装测试。 说明:

Step1:进入 QQ 安装目录,双击运行 setup.exe 开始安装,如图

Page 287: Mini6410 um chinese

第 - 287 - 页

Step2:出现如图界面,点“Next”继续

Page 288: Mini6410 um chinese

第 - 288 - 页

Step3:使用缺省配置,不作任何改动,点“Next”继续

Page 289: Mini6410 um chinese

第 - 289 - 页

Step4:出现如图界面,选择“I accpet”,点“Next”继续

Page 290: Mini6410 um chinese

第 - 290 - 页

Step5:出现如图界面,点“Next”继续

Page 291: Mini6410 um chinese

第 - 291 - 页

Step6:出现如图界面,稍等片刻

Page 292: Mini6410 um chinese

第 - 292 - 页

Step7:出现如图界面,点“Close”结束安装

Page 293: Mini6410 um chinese

第 - 293 - 页

5.2.4 安装 BSP 及内核工程示例

Mini6410 的BSP和示例工程等文件只有一个安装文件Mini6410-WinCE6-Suite-1030 (尾 1030 是年周日期版本标识,请以光盘为准),其中包含所有的BSP源代码以及内核工程

示例、SDK工程示例,用户可以在 http://www.arm9.net网站点“下载”查找 新的版本,下面

是详细的安装过程。 Step1:找到 Mini6410-WinCE6-Suite-1030 可执行安装文件,并双击运行

Page 294: Mini6410 um chinese

第 - 294 - 页

Step2:保持各项设置不变,点“Install”继续

Step3:出现安装过程界面,因为安装的文件很小,安装会很快结束

Page 295: Mini6410 um chinese

第 - 295 - 页

Step4:安装结束,出现如图界面,点“Close”结束安装

安装完毕,会在 WinCE600\PLATFORM 目录下创建 SMDK6410 BSP 目录,如图

Page 296: Mini6410 um chinese

第 - 296 - 页

并在 WinCE600\OSDesigns 目录下创建内核示例工程文件目录,如图可以看到有 3 个目录,

它们分别是代表了三个语言版本: Mini6410 – 简体中文 Mini6410-en – 英文(English) Mini6410-tw – 繁体中文

至此,Windows CE 6.0 的开发环境就已经完全创建了。

5.3 配置和编译 WindowsCE 6.0 内核及 Bootloader

因为 Windows CE6 的内核配置比较复杂,佷容易因配置不对而导致无法编译通过,

众所周知 Windows CE 平台的编译是十分耗时的,因此我们特意制作了内核工程示例,以便

供用户参考,用户按照下面的步骤直接打开编译就可以了,光盘中 images\ WindowsCE6 目录

Page 297: Mini6410 um chinese

第 - 297 - 页

中有相应的编译好的内核映象文件。

5.3.1 编译缺省内核示例工程

现在,我们启动 VS2005 来编译刚刚安装的 mini6410 BSP,第一次启动 VS2005 时有

些事项要注意一下,如下步骤: Step1:点“开始”->“程序”->“Microsoft Visual Studio 2005”-> “Microsoft Visual

Studio 2005”(下称 VS2005),如图

Step2:这时会出现如下提示窗口,请先不要点“Continue”,在这里微软建议你采用

管理员身份运行该程序,因此点“Exit Visual Studio”退出。

Step3:我们先把 VS2005 设置为管理员执行权限,点“开始”->“程序”->“VS2005”

->“VS2005”,然后右键出现如图菜单,点“属性”

Page 298: Mini6410 um chinese

第 - 298 - 页

Step4:出现如图窗口,点“兼容性”选项卡,并作如图勾选,点“确定”返回。

Step5:这时再点“开始”->“程序”->“VS2005”->“VS2005”,又会出现刚才的提

示窗口,如图,点“Contonue”继续,此时将以管理员身份运行 VS2005

Page 299: Mini6410 um chinese

第 - 299 - 页

Step6:出现如图界面,这是 VS2005 的工作界面,在此就不再对该界面赘述了,请用

户参考常用的 VS2005 资料即可

Step7:点 File->Open->Project/Solution…,如图

Step8:出现文件选择窗口,找到 mini6410 的缺省内核项目文件 (路径为:

C:\WINCE600\OSDesigns\Mini6410),点“Open”打开它,如图

Page 300: Mini6410 um chinese

第 - 300 - 页

Step9:稍等片刻,mini6410 的缺省内核项目被载入工作区,出现如图界面

Step10:点“Build->Advanced Build Commands->Clean Sysgen”开始编译内核,如图,

此过程较长,请耐心等待

Page 301: Mini6410 um chinese

第 - 301 - 页

Step11:编译完毕,结果如图所示,此时会生成内核映象文件 NK.bin 和 NK.nb0,路

径如下: C:\WINCE600\OSDesigns\Mini6410\Mini6410\RelDir\Mini6410_ARMV4I_Release

5.3.2 在 BSP 中修改 LCD 类型及串口输出功能

说明:我们提供的 BSP 目前支持以下型号的液晶屏:

NEC 4.3”LCD 带触摸 统宝 3.5”LCD 带触摸 群创 7”LCD 带触摸 Sharp 8”LCD(或兼容)带触摸

Page 302: Mini6410 um chinese

第 - 302 - 页

LCD2VGA 转接模块:分别有 1024x768,800x600, 640x480 三种分辨率 EZVGA: 一种简易的 VGA 转接板,支持 800x600(或以内)分辨率输出

通过修改\SMDK6410\SRC\INC\options.h 头文件中 LCD_TYPE 的定义,可以选择相应

的 LCD 类型: #define LCD_N43 – 默认适用于 NEC4.3”LCD //#define LCD_T35 //#define LCD_L80 //#define LCD_A70 //#define LCD_VGA1024768 //#define LCD_VGA800600 //#define LCD_VGA640480 //#define LCD_EZVGA 在 options.h 文件中,用户也可以修改串口的输出功能:作为普通串口功能或者调试

输出(仅限于串口 1),如下定义: // --- by customer #define KITL_NONE - 默认设置 //#define KITL_SERIAL_UART0 //#define KITL_SERIAL_UART1 这里缺省的定义是作为普通串口功能(目前 COM1 作为普通串口尚有问题),如果要把

串口 1 作为调试信息输出使用,则应该定义为: //#define KITL_NONE #define KITL_SERIAL_UART0 //#define KITL_SERIAL_UART1

5.3.3 在 BSP 中配置使用串口触摸屏

为了达到更好的触摸效果,我们特意设计了串口触摸屏控制器模块,它采用专业的触

摸屏控制芯片 ADS7843(或兼容),配合一个单片机,构成一个独立的四线电阻触摸屏采集电

路,可以实现更好的数据采集,去抖处理, 后通过串口把处理过的数据发送出去,因此需

要占用开发板的一个串口(在此默认为 后一个,即第四个串口,在 WinCE 中的具体设备名

为 COM4)来接收数据,具体的连接使用方法,可以参考文档“串口触摸屏控制器使用说明.pdf”。

Page 303: Mini6410 um chinese

第 - 303 - 页

我们已经把串口控制器的驱动程序做成 dll 文件(文件名为 touchcom.dll)放入 BSP 中,

但还需要在编译之前修改相关的设置,才可以让编译出的 WinCE 内核支持串口触摸屏控制

器,可以按照下面的步骤修改 BSP 中的相关设置。 打开“C:\WINCE600\PLATFORM\SMDK6410\ SMDK6410.bat”,找到如下定义项,大

概在 12,13 行: set BSP_NOTOUCH= set BSP_NOTOUCHCOM=1

可以看出,默认的设置采用了 ARM 本身自带的触摸屏控制器,修改为: set BSP_NOTOUCH=1 set BSP_NOTOUCHCOM=

保存修改,并重新编译 WinCE 系统,即可得到支持串口触摸屏控制器。 为了和不支持串口触摸屏控制器的 WinCE 系统内核文件区分开来,我们为其加上“-s”

尾 ,如光盘中的 NK_A70-s.bin 等。 为了测试触摸效果,你可以使用系统中自带的一个“小画笔”软件,在“根目录

\FriendlyARM“文件夹中可以找到,文件名为“Painter”,测试效果如图,可以看到书写十分

平滑,没有抖动。

Page 304: Mini6410 um chinese

第 - 304 - 页

5.3.4 关于 BootLoader

在 Mini2440 系统中,WindowsCE5/6 所用的 Bootloader 为 Nboot,它是用 ADS 软件

来编译的;而在 Mini6410 中,我们依然把 Bootloader 命名为 Nboot,但它的源代码是和 BSP放在一起的,需要通过 VS2005 来编译。

Nboot 源代码位置:C:\WINCE600\PLATFORM\SMDK6410\SRC\BOOTLOADER 该目录下包含了两个 Nboot:

nbootRAM128:适用于内存为 128M 的开发板平台 nbootRAM256:适用于内存为 256M 的开发板平台

这 2 个 Nboot 将会一起编译出来。 在功能上来讲,Mini6410 所用的 Nboot 和 Mini2440 很相似,它们都是一个十分简单

的 bootloader,其大小不超过 8K(Mini2440 的 Nboot 不超过 4K),一般被烧写到 Nand Flash 的

Block 0 位置用来启动 WinCE 内核,Nboot 原由三星提供,我们对此做了很多改进,目前有如

下特色功能: 支持开机画面快速显示 支持加载 WinCE 内核的动态进度条 快速启动 WinCE

需要注意的是,Nboot 并不具备烧写功能,它只能读取已经烧写处理好的文件:开机

画面(BootLogo)和 WinCE 内核。 Nboot 具有佷方便的定制性,你可以通过头文件定义修改开机画面的显示位置、背景,

以及进度条的颜色、位置、长宽等,这些定义位于 options.h 文件中,该头文件是和 BSP 共

用的,它位于 SMDK6410\SRC\INC 文件夹中。 #define KITL_NONE //#define KITL_SERIAL_UART0 //#define KITL_SERIAL_UART1 //通过更改定义,选择相应的 LCD 型号, 此处默认选择为 NEC 4.3”LCD #define LCD_N43 //#define LCD_T35 //#define LCD_L80 //#define LCD_A70 //#define LCD_VGA1024768 //#define TOUCH_SCREEN_WIDTH 1024 //#define TOUCH_SCREEN_HEIGHT 768 //设置开机背景色 #define BACKGROUND_R 0x00 #define BACKGROUND_G 0x00 #define BACKGROUND_B 0x7F

Page 305: Mini6410 um chinese

第 - 305 - 页

//设置进度条的颜色 #define PROGRESS_BAR_R 0xFF #define PROGRESS_BAR_G 0xFF #define PROGRESS_BAR_B 0x00 //设置开机图片的位置 #define LOGO_POS_TOP 0 #define LOGO_POS_LEFT 0 //设置启动条的位置和长宽 #define PROGRESS_BAR_TOP 240 #define PROGRESS_BAR_LEFT 50 #define PROGRESS_BAR_WIDTH 400 #define PROGRESS_BAR_HEIGHT 4

编译 Nboot 其实,在上面的步骤中,我们已经编译好了 Nboot,可用的目标文件为:Nboot.nb0,

它的格式和 ADS 编译出的 bin 格式是一样的,因此我们需要把它烧写到开发板中。该文件位

于:C:\WINCE600\OSDesigns\mini6410\mini6410\RelDir\Samsung_SMDK6410_Release 目录中。 编译一次 WinCE 内核所花的时间是很久的,但你可以单独编译 Nboot,在如图浏览

栏中,找到 Nboot 的源代码目录,右键点击“Build”即可单独编译了。

你可以把生成的 Nboot.nb0 通过 USB 下载或者 SD 卡把它烧写到 Nand Flash 中使用,

详见第三章的步骤。

Page 306: Mini6410 um chinese

第 - 306 - 页

5.3.5 创建 SDK

SDK 适用于:当开发主机只安装了 VS2005,但没有安装 Windows CE 6.0 的 Platform Builder 插件时,这时开发人员想通过 VS2005 开发 min64140 的应用程序,就需要一个 SDK,

它类似于 Embedded Visual C++所需的 SDK。 当你编译完缺省内核,此时可以通过 VS2005 平台创建相应的 SDK,注意:这里的

SDK 仅适用于 VS2005 开发环境,它不能安装到 EVC,也不能安装到 VS2008,下面是创建

SDK 的详细步骤。 Step1:运行 VS2005 并打开已经编译过的缺省内核示例工程 mini6410,找到如图位置,

并右键点击“Mini6410-CE6-SDK”出现菜单,点 Build 开始创建 SDK

Step2:稍等片刻,SDK 创建完毕,如图所示

Step3:在 C:\WINCE600\OSDesigns\mini6410\mini6410\SDKs\mini6410sdk 目录下,可

以看到已经生成 Mini6410-CE6-SDK.msi 安装文件

Page 307: Mini6410 um chinese

第 - 307 - 页

5.3.6 安装 SDK

要通过 VS2005 为 mini6410 开发应用程序,需要先安装刚才生产的 SDK,步骤如下 Step1:双击运行 Mini6410- SDK.msi,出现如下界面,点“Next”继续

Step2:如图选择“I accept”,点“Next”继续

Page 308: Mini6410 um chinese

第 - 308 - 页

Step3:出现如图界面,输入用户名和公司名,点“Next”继续

Step4:出现如图界面,点“Complete”继续

Page 309: Mini6410 um chinese

第 - 309 - 页

Step5:出现如图界面,点“Next”继续

Step6:出现如图界面,点“Install”继续

Step7:出现如图安装进度界面,稍等片刻

Page 310: Mini6410 um chinese

第 - 310 - 页

Step8:出现安装结束界面,点“Finish”结束

至此,SDK 已经安装完毕。

Page 311: Mini6410 um chinese

第 - 311 - 页

第六章 Android 开发指南

Android 目前对于我们来讲是一个全新的系统,我们在第一版的软件中主要解决了

Android 所使用的 UBIFS 文件系统的快速烧写问题,并提供了通过 SD 卡运行 Android 的方法,

它们的使用步骤都十分简单,目前光盘中 新版本为 Android-2.1。 Android 所用的 BootLoader 与内核和传统的 Linux 系统差别不是很大,编译的方法和

步骤基本没有区别,只是配置文件稍微不同。Android 的主要奥妙之处在于它的文件系统部分,

我们所指的 Android 系统也将是它,所以本节中所指的 Android 系统实际就是 Android 系统所

用的目标文件系统。 进行本节之前,建议你先了解并掌握本手册 4.3-4.9 的内容。

6.1 安装和使用 Android

6.1.1 安装 Android

说明:使用内存容量为 128M 的开发板时,通过 SD 卡直接运行 ext3 格式的 Android有时可能会无法顺利运行;使用内存容量为 256M 的开发板则没有问题,因此我们建议把

Android 烧写到 Nand Flash 中运行。 你可以使用USB下载或者 SD卡安装Android到开发板中,详细步骤见本手册第三章。 你也可以不必安装它,把光盘中的必要文件拷贝到 SD 卡中即可运行体验它,步骤如

下: Step1: 使用 SD-Flasher.exe 工具,把 Superboot 烧写到 SD 卡中,见本手册 2.2.1 或者

2.2.2 章节说明 Step2: 把光盘中的 image 目录复制到 SD 卡中 Step3: 打开 SD 卡 \images\FriendlyARM.ini 配置文件,修改 ”Action=Run”,修

改”OS=Android” Step4: 把开发板 S2 设置为 SDBOOT,并插入 SD 卡,开机上电,即可运行 Android

了。 第一次运行,会先出现触摸屏校正界面,依次点击“十”字形中心位置直到结束,这

时 Android 系统开始启动,第一次启动会慢一些,请耐心等待,直到出现如下界面。 注意:有些开发板先使用模拟器提取文件系统,这样 Android 的第一次运行已经交给

模拟器了,所以通过模拟器提取的 Android 系统在开发板上运行时会显的快一些。而我们是

使用的脚本提取制作 Android 系统的,这样能够保证 原始的数据,而且制作过程更加透明,

方便,更加利于用户理解底层的内容。

Page 312: Mini6410 um chinese

第 - 312 - 页

这时你可以尝试运行各个小程序或者设置,我们就不再一一介绍了。 说明:通过 SD 卡运行 Android 系统,实际上只用到了 2 个文件: - azImage : 内核文件,对于不同型号的 LCD,分别有不同的内核文件 - rootfs_android.ext3 : EXT3 格式的文件系统映像文件,制作方法见后面的章节 关于按键布局 本开发板总共有 8 个用户按键,它们在 android 系统中的定义如下表所示:

按键编号 功能定义 按键编号 功能定义 K6 上 K8 OK K5 下 K7 Cancel K4 左 K3 右 K2 Menu(长按 menu 可旋转屏幕显示) K1 Home

6.1.2 旋转屏幕显示

正如前面你所见到的,Android 2.1 在启动后是竖屏显示的,要切换为横屏显示,可以

长按开发板的 Menu 按键(也就是 K2)即可,切换后的显示效果如图。

Page 313: Mini6410 um chinese

第 - 313 - 页

6.1.3 播放 mp3

Android 系统可以自动识别 SD 卡中的 mp3 文件,当你播放 mp3 时,可能会听不到声音,这时请尝

试点击“暂停”按钮,再重新播放,一般就可以听到声音了,我们目前尚不清楚原因,在以后的更新中,

我们会尽量解决这个问题,感兴趣的用户,也可以自己查看一下原因。下面是播放 mp3 的界面。

Page 314: Mini6410 um chinese

第 - 314 - 页

6.1.4 使用 SD-WiFi 上网

开机之前,把 SD-WiFi 模块先接到开发板的 SDIO 排针座上,也就是 CON9,如图。

然后开机进入 Android 系统,按 Menu(K2)键点 Setting,出现如图界面菜单

Page 315: Mini6410 um chinese

第 - 315 - 页

点 Wireless & network,出现如图菜单,点一下“Wi-Fi”,会开启 SD-WiFi 模块,这

时右边的方框勾号会变为绿色,如图

再点下面的“Wi-Fi settings”,系统会自动搜索附近的无线网接入点,如图

Page 316: Mini6410 um chinese

第 - 316 - 页

点你所要连接的无线网接入点,输入密码,如图

连接成功,如图

Page 317: Mini6410 um chinese

第 - 317 - 页

这时按 Home 按键返回 Android 主界面,点浏览器,输入网址,就可以上网浏览了,

如图。

6.1.5 使用 CMOS 摄像头

Mini6410 使用的 CMOS 摄像头和 mini2440 是可以共用的,因为它们的摄像头接口定

义是完全相同的,开机之前,把 CAM130 模块接到开发板的 CMOS 摄像头接口上(在 mini6410上是 CON10),如图。

Page 318: Mini6410 um chinese

第 - 318 - 页

在主界面中找到“Camera”程序,并点击打开它,如图

这时可以看到如图所示界面,看起来窗口比较小

长按 Menu 键(对应开发板的 K2),可以旋转画面,如图

Page 319: Mini6410 um chinese

第 - 319 - 页

6.2 建立 Android 开发环境

说明:此处的 Android 开发环境,是指编译创建 Android 内核及基本系统所需要的开

发环境,而不是指 Android 应用程序所需的开发环境;因时间原因,我们将在以后增加 Android应用开发环境方面的说明,请留意我们网站的更新。

6.2.1 关于开发平台和交叉编译器

Android 开发环境和标准的 Linux 基本相同,主要就是安装 Fedora9 开发平台,以及

安装交叉编译器和 mktools 工具链,它所使用的编译器和标准 Linux 是相同的,详细步骤见本

手册 4.3 章节。 注意:编译安装 Android 整个系统至少需要 5G 的硬盘空间!

6.2.2 解压安装源代码

首先创建工作目录/opt/FriendlyARM/mini6410/android 在命令行执行 #mkdir –p /opt/FriendlyARM/mini6410/android 后面步骤的所有源代码都会解压安装到此目录中,目前它里面是空的。 (1)准备好 Android 源代码包 在 Fedora9 系统中/tmp 目录中创建一个临时目录/tmp/android #mkdir /tmp/android 把光盘中 Android 目录中的所有文件都复制到/tmp/Android 目录中 说明:这样做是为了统一下面的操作步骤,其实你可以使用其他目录,也可以直接从

Page 320: Mini6410 um chinese

第 - 320 - 页

光盘解压安装。 (2)解压安装 u-boot 源代码 在工作目录/opt/FriendlyARM/mini6410/android 中执行: #cd /opt/FriendlyARM/mini6410/android #tar xvzf /tmp/android/u-boot-mini6410-20100730.tar.gz 将创建生成 u-boot-mini6410 目录,里面包含了完整的内核源代码 说明:20100622 是发行更新日期标志,请以光盘中实际日期尾 为准。 (3)解压安装 Android 内核源代码 在工作目录/opt/FriendlyARM/mini6410/android 中执行: #cd /opt/FriendlyARM/mini6410/android #tar xvzf /tmp/android/android-kernel-2.6.28-20100812.tar.gz 将创建生成 linux-2.6.28.6-android 目录,里面包含了完整的内核源代码 说明:20100812 是发行更新日期标志,请以光盘中实际日期尾 为准。 (4)解压安装 Android 系统源代码包 在工作目录/opt/FriendlyARM/mini6410/android 中执行: #cd /opt/FriendlyARM/mini6410/android #tar xvzf /tmp/android/android-2.1-fs-20100812.tar.gz 将创建 Android-2.1 目录。 说明:20100812 是发行或更新日期标志,请以光盘中实际日期尾 为准;源代码包

中也包含了编译创建 Android-2.1 系统所需的所有源代码和脚本。 (5)解压 Android 系统 通过从源代码编译的方式创建文件系统需要很久的时间,有时你可能不需要从头编

译,rootfs_android 就是我们已经编译好的 android 系统包。 在工作目录/opt/FriendlyARM/mini6410/android 中执行: #cd /opt/FriendlyARM/mini6410/android #tar xvzf /tmp/android/ rootfs_android-20100812.tar.gz 将创建 rootfs_android 目录。 说明:,20100812 是发行或更新日期标志,请以光盘中实际日期尾 为准。

6.3 配置和编译 U-boot

说明:Android 所用的 U-boot 其实和标准 Linux 是一样的,根据开发板不同的内存

(DDR RAM)容量,需要使用不同的 U-boot 配置项。 要编译适合于 128M 内存的 U-boot,请按照以下步骤: 进入 U-boot 源代码目录,执行: #cd /opt/FriendlyARM/mini6410/linux/u-boot-mini6410 #make mini6410_nand_config-ram128;make

Page 321: Mini6410 um chinese

第 - 321 - 页

将会在当前目录配置并编译生成支持 Nand 启动的 U-boot.bin,使用 SD 卡或者 USB下载到 Nand Flash 即可使用,详见第三章,光盘中 images/linux 目录中已经提供了编译好的

该文件,为了便于区分,我们把它重新命名为 u-boot_nand-ram128.bin 要编译适合于 256M 内存的 U-boot,请按照以下步骤: 进入 U-boot 源代码目录,执行: #cd /opt/FriendlyARM/mini6410/linux/u-boot-mini6410 #make mini6410_nand_config-ram256;make 将会在当前目录配置并编译生成支持 Nand 启动的 U-boot.bin,使用 SD 卡或者 USB

下载到 Nand Flash 即可使用,详见第三章,光盘中 images/Android 目录中已经提供了编译好

的该文件,为了便于区分,我们把它重新命名为 u-boot_nand-ram256.bin

6.4 配置和编译 Linux 内核

Android 所用的 Linux 内核和标准的 Linux 内核有所不同,但使用的方法和步骤是相

似的;如果你对配置 Linux 内核不熟悉,建议你使用我们提供的缺省内核配置。 要编译适用于 N43 型号 LCD 的内核,请这样使用缺省内核配置: #cd /opt/FriendlyARM/mini6410/android/ linux-2.6.28.6-android #cp config_android_n43 .config ;注意 config 前面有个”.” #make 后会在 arch/arm/boot 目录下生成 zImage,我们把它重新命名为 azImage_n43 放入

光盘中,以便区分 要编译适用于 A70 型号 LCD 的内核,请这样使用缺省内核配置: #cd /opt/FriendlyARM/mini6410/android/ linux-2.6.28.6-android #cp config_android_a70 .config ;注意 config 前面有个”.” #make 后会在 arch/arm/boot 目录下生成 zImage,我们把它重新命名为 azImage_n70 放入

光盘中,以便区分。

6.5 从源代码开始创建 Android

正如你所看到的,Android 系统十分庞大,很多初学者都不能顺利的成功编译它,而

且编译一次所需的时间很长(1.5-4 小时,甚至更长),为了方便大家使用,我们特意准备好了

现成的源代码包,并且制作了 3 个脚本分别用来编译和创建 Andoid 系统:build-android、genrootfs.sh 和 genrootfs-s.sh

在命令行执行: #cd /opt/FriendlyARM/mini6410/android/Android-2.1 #./build-android 就开始编译 Android-2.1 系统,你需要等待很长的时间,建议开发 Android 系统不要

使用虚拟机编译,使用多核的 CPU 加真实的 Linux 系统会快一些。

Page 322: Mini6410 um chinese

第 - 322 - 页

然后,再执行脚本: #./genrootfs.sh 就可以从编译完的 Android 系统提取出我们需要的目标文件系统了, 后会生成

rootfs_dir 目录,如图,它和上面提到的 rootfs_android 内容是完全相同的。 提示:使用 genrootfs-s.sh 脚本,可以编译出适用于串口触摸屏控制器的 LCD 套餐。

至此,我们已经从源代码开始,创建了在开发板上运行运行 Android 所需的所有核心

系统文件:Bootloader, 内核和文件系统

6.6 制作安装或运行文件系统映像

要在开发板上安装 Android 系统,还需要把上面生成的各部分文件烧写到 Nand Flash中才可以。其中,Bootloader 和内核已经是单文件映像形式,它们都可以很方便的通过 USB下载烧写,或者复制到 SD 卡中;而文件系统部分则是一个目录,这就需要 mktools 系列工具

先把它制作成单个映像文件,才能方便使用。根据你想要选用的不同文件系统格式,下面分

别介绍它们的制作方法 说明:你可以使用通过源代码方式编译生成的 android 系统来制作映像文件,也可以

使用解压我们已经编译好的 android 文件系统包来制作以下的映像文件;下面的步骤基于前

者。

6.6.1 制作 yaffs2 格式的文件系统映像

使用 mkyaffs2image-128M 工具,可以把目标文件系统目录制作成 yaffs2 格式的映像

文件,当它被烧写入 Nand Flash 中启动时,整个根目录将会以 yaffs2 文件系统格式存在,缺

省的 Android 内核已经支持该文件系统,在命令行输入: #cd /opt/FriendlyARM/mini6410/android/Android-2.1 #mkyaffs2image-128M rootfs_dir rootfs_android.img 将会在当前目录下生成 rootfs_android.img 文件,你可以参考第三章的步骤方法,通

Page 323: Mini6410 um chinese

第 - 323 - 页

过 USB 或者 SD 把它烧写到 Nand Flash 中。 提示:如果你使用了串口触摸屏控制器,则需要使用 rootfs_android-s 目标文件系统包。

6.6.2 制作 UBIFS 格式文件系统映像

使用 mkubimage 工具,可以把目标文件系统目录制作成 UBIFS 格式的映像文件,当

它被烧写入 Nand Flash 中启动时,整个根目录将会以 UBIFS 文件系统格式存在,缺省的

Android 内核已经支持该文件系统,在命令行输入: #cd /opt/FriendlyARM/mini6410/android/Android-2.1 #mkubimage rootfs_dir rootfs_android.ubi 稍等片刻,将会在当前目录下生成 rootfs_android.ubi 文件,你可以参考第三章的步骤

方法,通过 USB 或者 SD 把它烧写到 Nand Flash 中。 注意:UBIFS 格式文件系统具有一定的压缩性,因此制作出的映像会比 yaffs2 格式的

小一些,这样也可以烧写的更快一些。 提示:如果你使用了串口触摸屏控制器,则需要使用 rootfs_android-s 目标文件系统包。

6.6.3 制作 ext3 格式的文件系统映像

使用 mkext3image 工具,可以把目标文件系统目录制作成 EXT3 格式的映像文件,

把它拷贝到 SD 卡中,这样你就可以在 SD 卡中直接运行它了,而不必烧写入 Nand Flash 中,

缺省的 Android 内核已经支持该文件系统,缺省的配置文件 FriendlyARM.ini 也已经支持启动

ext3 映像文件,在命令行输入: #cd /opt/FriendlyARM/mini6410/android/Android-2.0 #mkext3image rootfs_dir rootfs_android.ext3 稍等片刻,将会在当前目录下生成 rootfs_android.ext3 文件,一般你把它直接复制到

SD 卡中的 images/Android/目录中,并覆盖掉同名文件就可以使用它了;当然你也可以改为其

他名字,同时修改配置文件 FriendlyARM.ini 中“Android-RootFs-RunImage =”的定义为你的

文件名就可以了。 注意:EXT3 格式文件系统是可以保存数据的,使用 mkext3image 工具制作的映像文

件一般比实际目录容量要大 30%,目的就是为了保存一些常用的配置文件,对于小于 64M 的

目标文件系统,则以 64M 为基本容量计算,也就是说, 小的 ext3 文件映像为 64M x 1.3 = 83.2M。

提示:如果你使用了串口触摸屏控制器,则需要使用 rootfs_android-s 目标文件系统包。

Page 324: Mini6410 um chinese

第 - 324 - 页

第七章 嵌入式 Ubuntu 安装及使用说明

本开发板所用的Ubuntu为 0910版本,它是使用ARMV6 指令编译器编译的 终版本,

也就是说,2010 年以后发布的 ARM 版 Ubuntu 都是 ARMV7 指令编译器,它们是不能在 6410上运行使用的;因为 S3C6410 高支持 ARMV6 指令集。

Ubuntu 系统比较大(600M 多),一般不把它烧写到 Nand Flash 中使用,而是通过 SD卡运行;大部分人的做法是先在 Linux 下把 SD 卡格式化为 ext2/3 格式,再把系统文件拷贝

到 SD 卡中,并修改相应的内核启动参数,从而实现从 SD 卡运行 Ubuntu;其中的很多步骤

对于初学者来讲比较难以理解,而且不易操作;我们的做法是在 Linux 下使用一个命令把

Ubuntu 系统制作成 EXT3 映像文件,然后把它复制到普通的 FAT32/FAT 格式的 SD 卡就可以

了,并且光盘中已经有做好的映像文件。 另外,在 6410 上运行 Ubuntu 基本只能说明“这件事是可以做到的”,Ubuntu 本来是

为桌面系统设计的,虽然它可以运行,但我们认为它目前并不是一个实用的嵌入式系统,所

以,本章节的内容主要介绍制作在 6410 上运行 Ubuntu 的基本系统步骤,并不涉及更多的细

节,感兴趣的可以自行研究看看。 需要特别说明的是,自从 Superboot-20100917 开始,已经支持通过 SD 卡脱机烧写把

Ubuntu 安装到 1GB Nand Flash 中,因此可以达到更好的运行效果。 对于采用内存(DDR RAM)为 256M 的开发板,也可以直接从 SD 卡运行 EXT3 映像

文件,效果也不错。而使用内存为 128M 的开发板,运行速度比较慢。

7.1 安装运行 Ubuntu

7.1.1 把 Ubuntu 安装到开发板中运行

请参考 3.2.6 章节

7.1.2 使用 SD 卡运行 Ubuntu

我们提供了方便的工具和方法,可以让你使用 SD 卡快速简单地运行完整的 Ubuntu系统,或许你已经在前面的章节体验过了,在此我们再简单介绍一下。

Step1: 使用 SD-Flasher.exe 工具,把 Superboot 烧写到 SD 卡中,见本手册 2.2.1 或者

2.2.2 章节说明 Step2: 把光盘中的 image 目录复制到 SD 卡中 Step3: 打开 SD 卡 \images\FriendlyARM.ini 配置文件,修改 ”Action=Run”,修

Page 325: Mini6410 um chinese

第 - 325 - 页

改”OS=Ubuntu” Step4: 把开发板 S2 设置为 SDBOOT,并插入 SD 卡,开机上电,即可运行 Ubuntu

了。 第一次运行,会先出现触摸屏校正界面,依次点击“十”字形中心位置直到结束,这

时 Ubuntu 系统开始启动,如下界面。

我们配置的 Ubuntu 系统,使用了 XFCE 窗口管理器,而不是 GNOME 系统,因为

GNOME 太庞大了,整个系统几乎无法运行。进入系统之后,你可能看不到有趣的的应用程

序,大部分都是基本设置,如果使用触摸笔不太方便,你也可以接 USB 鼠标试试,整个系统

运行的很慢,你需要很大的耐心去体验才行。如果过段时间不动,系统会进入屏保状态,就

像 PC 一样。 使用 XFCE 窗口管理器的 Ubuntu 桌面如图所示,可以看到,它可以自动识别到 SD

卡,并在桌面上显示出来。

这是它的一些设置菜单截图。

Page 326: Mini6410 um chinese

第 - 326 - 页

说明:通过 SD 卡运行 Ubuntu 系统,实际上只用到了 2 个文件: - uzImage : 内核文件,对于不同型号的 LCD,分别有不同的内核文件 - rootfs_ubuntu.ext3 : EXT3 格式的文件系统映像文件,制作方法见后面的章节 提示:如果你使用了串口触摸屏控制器,则需要指定 rootfs_ubuntu-s.ext3

7.2 建立 Ubuntu 开发环境

说明:此处的 Ubuntu 开发环境,仅是指编译创建相应内核及 Bootloader 需要的开发

环境,而不是指整个 Ubuntu 文件系统。

7.2.1 关于开发平台和交叉编译器

Ubuntu 开发环境和标准的 Linux 基本相同,主要就是安装 Fedora9 开发平台,以及

安装交叉编译器和 mktools 工具链,它所使用的编译器和标准 Ubuntu 是相同的,详细步骤见

本手册 4.3 章节。

7.2.2 解压安装内核源代码

首先创建工作目录/opt/FriendlyARM/mini6410/ubuntu 在命令行执行 #mkdir –p /opt/FriendlyARM/mini6410/ubuntu 后面步骤的所有源代码都会解压安装到此目录中,目前它里面是空的。 (1)准备好 Ubuntu 系统文件包 在 Fedora9 系统中/tmp 目录中创建一个临时目录/tmp/ubuntu #mkdir /tmp/ubuntu 把光盘中 Ubuntu 目录中的所有文件都复制到/tmp/ubuntu 目录中 说明:这样做是为了统一下面的操作步骤,其实你可以使用其他目录,也可以直接从

光盘解压安装。

Page 327: Mini6410 um chinese

第 - 327 - 页

(2)解压安装 u-boot 源代码 在工作目录/opt/FriendlyARM/mini6410/ubuntu 中执行: #cd /opt/FriendlyARM/mini6410/ubuntu #tar xvzf /tmp/ubuntu/ubuntu-kernel-2.6.28-20100622.tar.gz 将创建生成 u-boot-mini6410 目录,里面包含了完整的内核源代码 说明:20100622 是发行更新日期标志,请以光盘中实际日期尾 为准。 (3)解压安装内核源代码 在工作目录/opt/FriendlyARM/mini6410/ubuntu 中执行: #cd /opt/FriendlyARM/mini6410/ubuntu #tar xvzf /tmp/ubuntu/ ubuntu-kernel-2.6.28-20100622.tar.gz 将创建生成 linux-2.6.28.6-ubuntu 目录,里面包含了完整的内核源代码 说明:20100622 是发行更新日期标志,请以光盘中实际日期尾 为准。 (4)解压安装 ARM 版 Ubuntu 目标文件系统 在工作目录/opt/FriendlyARM/mini6410/ubuntu 中执行: #cd /opt/FriendlyARM/mini6410/ubuntu #tar xvzf /tmp/ubuntu/rootfs-ubuntu-0910-20100917.tar.gz #tar xvzf /tmp/ubuntu/rootfs-ubuntu-s-0910-20100917.tar.gz 将创建 rootfs-ubuntu-0910 和 rootfs-ubuntu-0910-s 目录。 说明:20100622 是发行或更新日期标志,请以光盘中实际日期尾 为准;源代码包

中也包含了编译创建 ubuntu 系统所需的所有源代码和脚本。rootfs-ubuntu-0910-s 适合于带串

口触摸屏控制器的 LCD 套餐。

7.3 制作安装或运行文件系统映像

7.3.1 制作 UBIFS 格式文件系统映像

使用 mkubimage 工具,可以把目标文件系统目录制作成 UBIFS 格式的映像文件,当

它被烧写入Nand Flash中启动时,整个根目录将会以UBIFS文件系统格式存在,缺省的Ubuntu内核已经支持该文件系统,在命令行输入:

#cd /opt/FriendlyARM/mini6410/ubuntu1 #mkubimage rootfs-ubuntu-0910 rootfs-ubuntu-0910.ubi 稍等片刻,将会在当前目录下生成 rootfs-ubuntu-0910.ubi 文件,你可以参考第三章的

步骤方法,通过 USB 或者 SD 把它烧写到 Nand Flash 中。 注意:UBIFS 格式文件系统具有一定的压缩性,因此制作出的映像会比 yaffs2 格式的

小一些,这样也可以烧写的更快一些。 提示:如果你使用了串口触摸屏控制器,则需要使用 rootfs-ubuntu-0910-s 目标文件系

统包。

Page 328: Mini6410 um chinese

第 - 328 - 页

7.3.2 创建 EXT3 格式的 Ubuntu 系统映像文件

使用 mkext3image 工具,可以把目标文件系统目录制作成 EXT3 格式的映像文件,

把它拷贝到 SD 卡中,这样你就可以在 SD 卡中直接运行它了,而不必烧写入 Nand Flash 中,

缺省的 Ubuntu 内核已经支持该文件系统,缺省的配置文件 FriendlyARM.ini 也已经支持启动

ext3 映像文件,在命令行输入: #cd /opt/FriendlyARM/mini6410/ubuntu #mkubimage rootfs-ubuntu-0910 rootfs-ubuntu-0910.ext3 稍等片刻,将会在当前目录下生成 rootfs-ubuntu-0910.ext3 文件,一般你把它直接复

制到 SD 卡中的 images/Ubuntu/目录中,并覆盖掉同名文件就可以使用它了;当然你也可以改

为其他名字,同时修改配置文件 FriendlyARM.ini 中“Ubuntu-RootFs-RunImage =”的定义为

你的文件名就可以了。 注意:EXT3 格式文件系统是可以保存数据的,使用 mkext3image 工具制作的映像文

件一般比实际目录容量要大 30%,目的就是为了保存一些常用的配置文件,对于小于 64M 的

目标文件系统,则以 64M 为基本容量计算,也就是说, 小的 ext3 文件映像为 64M x 1.3 = 83.2M。

提示:如果你使用了串口触摸屏控制器,则需要使用 rootfs-ubuntu-0910-s 目标文件系

统包。

7.4 更多信息

未完 结束语 本手册详细地向您介绍了如何开发和使用 Linux 或者 WindowsCE,这些都是一些基础性的东

西,实际上,使用任何开发板都有一个类似的过程;我们相信,只要有兴趣,并且耐心的按

照本手册去做了,您一定会掌握它,并体会到其中的乐趣;俗话说“师父领进门,修行在个

人”,在技术不断更新和变革的今天,我们每个人都需要不断的学习和补充,我们希望能和您

一起成长。