首页资源分类嵌入式开发嵌入式系统 > Tiny 4412用户手册

Tiny 4412用户手册

已有 460221个资源

下载专区


TI最新应用解决方案

工业电子 汽车电子 个人消费电子

上传者其他资源

文档信息举报收藏

标    签: 4412

分    享:

文档简介

基于ARM Crotex-A9四核架构的三星Exynos 4412的开发板资料

文档预览

Tiny4412 用户手册 版本:2013-12-02 (本手册适用于 Tiny4412 开发板) Copyright@2013 第- 1 -页 版权声明 本手册版权归属广州友善之臂计算机科技有限公司(以下简称“友善之臂”) 所有, 并保留一切权力。非经友善之臂同意(书面形式),任何单位及个人不得擅自 摘录本手册部分或全部,违者我们将追究其法律责任。 敬告: 在售开发板的手册会经常更新,请在 http://www.arm9.net 网站查看最近更新, 并下载最新手册,不再另行通知。 第- 2 -页 更新说明: 日期 说明 2013-12-02 1) 完善了 Linux 系统,升级包括: - 增加 支持 USB 3G 上网卡,支持上百种 3G 上网卡,如目前应用最多的 华为 E261 等 - 增加支持 USB 摄像头,首选罗技 720p 高清摄像头 C270,其他 UVC 摄像 头可自行测试。 - 增加经过 UI 优化的 Smplayer 播放器,核心采用 mplayer,支持格式最多! - 增加支持迷你USB WiFi无线上网卡( 基于RT8192CU 芯片) 2) 原标准版底板更名为“增强版”,原精简版底板更名为“标准版”。 3) Android 4.2.2更新如下: - 增加SD卡读写测试程序,并在用户手册中增加Android4.2下程序中读写SD卡的方法。 - 修正串口设备没有读写权限的问题。 2013-11-12 1) Android 4.2.2 更新如下: - 解决了LCD闪屏问题; - 增加了电阻屏支持(S70, w101等); - 增加界面Root权限的支持; - 增加支持 data 分区映象烧写,方便厂家预装应用; - 增加支持HDMI通过烧写时在FriendlyARM.ini中指定LCD-Type参数来更改分辨率; 2) Linux系统更新如下: - 增加了电阻屏支持(S70, w101等); 3) Superboot和MiniTools更新支持 Android Data 分区的烧写; 2013-10-10 1) Android升级至Android 4.2.2 2) 完美实现HDMI 1080P系统界面逐点输出 3) 增加 Linux 系统的支持,采用最新的Linux-3.5稳定内核,含 Qtopia2/Qtopia4/Qt 4.7 三 种图形界面,无缝切换 第- 3 -页 2013-09-10 增加底板 Tiny4412SDK 标准版 的说明,原底板更名为 增强版,推荐企业用户使用增 强版。 2013-09-09 增加USB摄像头的支持,最高支持720P摄像头预览,可指定分辨率,同时提供开源的 DEMO供开发参考。 2013-08-13 2013-08-13更新如下: 1) 增加USB下载工具-MiniTools的支持,简要特性如下:  无需串口连接: MiniTools 完全使用 USB 传输数据, 无需串口,让你的桌面更整 洁。  真正一键烧写: 无需从串口输入命令,再点选 USB 下载,并且要通过多个步骤才 能烧 写整个系统,较为繁琐;MiniTools 真正实现一键烧写,烧写文件可单选,也可 全选。  支持 32/64-bit 电脑: MiniTools 安装程序已经包含 32/64-bit 所需要的下载驱 动,通吃 所有 Windows 平台。  跨平台: MiniTools采用Qt4开发,可支持各种Windows和Linux发行版。  支持所有友善之臂开发板:只需要一次安装,支持目前在售的所有友善之 臂2440/6410/210/4412开发板的USB烧写。 2) Android下增加以太网的支持,支持DHCP自动获取IP地址,中途插拨网络也能自动重连 网络。 2013-08-05 2013-08-05更新如下: 1)将Android无操作时自动关屏的时间默认延长至3周; 2) 增加背光调节功能; 3) 增加支持中兴MF210联通3G模块, 支持开机自动3G拨号上网,支持短信息收发 ; 4) 增加完全开源的U-boot-Tiny4412; 5) 增加Superboot-4412: - 支持通过脚本指定烧写文件和启动参数 - 支持SD卡脱机快速烧写 第- 4 -页 - 支持烧写进度LCD显示 - 支持蜂鸣器和LED状态指示 - 支持烧写EXT3/EXT4文件系统 6) 优化了HDMI输出,默认输出分辨率为720P, 连接高清电视可即插即用;配合 HD700(1280x720)使用效果最佳,可与LCD完美同步显示; 7) 增加三星原厂资料,供用户参考; 8) 优化了GPU驱动, 2D/3D性能提升40%,配HD700高清屏,安兔兔跑分可达14960,流畅度 与Galaxy S3手机相当。 2013-07-09 本手册第一次发布 第- 5 -页 目录 TINY4412 用户手册...........................................................................................................................................- 1 第一章 TINY4412 开发板介绍 ........................................................................................................................ - 11 - 1.1 TINY4412 核心板介绍 ........................................................................................................................- 12 1.1.1 Tiny4412 核心板资源特性 ......................................................................................................- 12 1.1.2 Tiny4412 核心板引脚定义 ......................................................................................................- 13 1.1.3 Tiny4412 核心板接口说明 ......................................................................................................- 16 - 1.2 TINY4412SDK 底板介绍....................................................................................................................- 17 1.2.1 Tiny4412SDK 增强版 底板介绍 ...........................................................................................- 18 1.2.2 Tiny4412SDK 标准版 底板介绍 ...........................................................................................- 21 - 1.3 TINY4412 开发底板接口说明.............................................................................................................- 23 1.3.1 电源接口和插座.......................................................................................................................- 23 1.3.2 串口...........................................................................................................................................- 24 1.3.3 USB接口...................................................................................................................................- 25 1.3.4 网络接口...................................................................................................................................- 26 1.3.5 音频接口...................................................................................................................................- 26 1.3.6 用户按键...................................................................................................................................- 27 1.3.7 LCD接口...................................................................................................................................- 27 1.3.8 ADC输入 ..................................................................................................................................- 28 1.3.9 PWM控制蜂鸣器 .....................................................................................................................- 28 1.3.10 I2C-EEPROM ...........................................................................................................................- 29 1.3.11 SD卡..........................................................................................................................................- 29 1.3.12 GPIO/SDIO接口.......................................................................................................................- 29 1.3.13 CMOS CAMERA接口 .............................................................................................................- 30 1.3.14 CPLD-JTAG接口......................................................................................................................- 31 - 1.4 TINY4412 的软件特性 ........................................................................................................................- 31 1.4.1 Android 4.2.2 系统资源特性 ...................................................................................................- 31 1.4.2 Linux系统资源特性 .................................................................................................................- 33 - 第二章 准备工作..............................................................................................................................................- 37 2.1 开发板设置及连接..............................................................................................................................- 37 2.1.1 启动模式选择...........................................................................................................................- 37 2.1.2 外部接口连接...........................................................................................................................- 38 2.1.3 设置超级终端...........................................................................................................................- 38 2.2 制作用于安装系统的SD卡.................................................................................................................- 41 2.2.1 使用SD-Flasher工具烧写Superboot到SD卡 ...........................................................................- 42 2.2.2 恢复SD卡到原始状态..............................................................................................................- 45 2.2.3 注意事项...................................................................................................................................- 46 - 第- 6 -页 2.2.4 复制光盘的images目录到SD卡上 ..........................................................................................- 47 - 2.3 使用SD卡脱机烧写系统.....................................................................................................................- 47 2.3.1 Android系统烧写 .....................................................................................................................- 47 2.3.2 Linux系统烧写 .........................................................................................................................- 49 - 2.4 使用MINITOOLS快速刷系统 (仅支持带MICROUSB接口的底板).....................................................- 51 2.4.1 安装MiniTools工具 ..................................................................................................................- 52 2.4.2 使用USB烧写系统前的准备工作 ...........................................................................................- 53 2.4.3 使用MiniTools工具烧写系统 ..................................................................................................- 54 - 第三章 ANDROID使用指南 ..............................................................................................................................- 60 - 3.1 ANDROID的使用 ..................................................................................................................................- 60 3.1.1 Anroid下的按键 .......................................................................................................................- 60 3.1.2 Android日常开发常用命令 .....................................................................................................- 60 3.1.3 利用重力感应模块自动旋转屏幕...........................................................................................- 61 3.1.4 在程序中读写SD卡..................................................................................................................- 62 3.1.5 获取界面root权限 ....................................................................................................................- 62 3.1.6 播放mp3....................................................................................................................................- 64 3.1.7 调节音量大小...........................................................................................................................- 65 3.1.8 录音功能...................................................................................................................................- 65 3.1.9 使用以太网上网.......................................................................................................................- 66 3.1.10 更改以太网MAC地址..............................................................................................................- 66 3.1.11 ADB使用说明 ..........................................................................................................................- 68 3.1.12 预装应用到 /data/app ..............................................................................................................- 69 3.1.13 使用WiFi无线上网...................................................................................................................- 69 3.1.14 3G拨号上网及短信息收发......................................................................................................- 70 3.1.15 HDMI同步输出高清图像到电视 ............................................................................................- 72 3.1.16 播放高清视频...........................................................................................................................- 73 3.1.17 背光调节设置...........................................................................................................................- 74 3.1.18 使用USB摄像头 .......................................................................................................................- 75 3.1.19 串口助手...................................................................................................................................- 77 3.1.20 LED测试...................................................................................................................................- 78 3.1.21 PWM蜂鸣器测试 .....................................................................................................................- 79 3.1.22 ADC测试 ..................................................................................................................................- 80 3.1.23 I2C-EEPROM测试 ...................................................................................................................- 80 - 3.2 建立ANDROID编译环境 ......................................................................................................................- 81 3.2.1 安装Ubuntu12.04.2 64bit系统..................................................................................................- 81 3.2.2 设置Ubuntu系统.......................................................................................................................- 87 3.2.3 以root用户登录 ........................................................................................................................- 87 3.2.4 安装交叉编译器.......................................................................................................................- 90 3.2.5 解压安装Andorid4.2.2 源代码 ................................................................................................- 92 - 第- 7 -页 3.3 配置和编译LINUX内核 .......................................................................................................................- 92 3.4 从源代码开始创建ANDROID ..............................................................................................................- 93 3.5 制作安装或运行文件系统映像..........................................................................................................- 94 - 3.6 在ANDORID程序中访问硬件 ..............................................................................................................- 94 3.6.1 如何使用函数库(libfriendlyarm-hardware.so)? ....................................................................- 94 3.6.2 函数库(libfriendlyarm-hardware.so)接口说明 ........................................................................- 96 3.6.3 示例程序说明.........................................................................................................................- 101 - 第四章 LINUX使用指南 .................................................................................................................................- 102 - 4.1 LINUX图形界面简介 .........................................................................................................................- 102 4.1.1 主要界面说明.........................................................................................................................- 102 4.1.2 播放Mp3 .................................................................................................................................- 103 4.1.3 播放视频.................................................................................................................................- 103 4.1.4 SMPlayer播放器.....................................................................................................................- 104 4.1.5 图片浏览.................................................................................................................................- 106 4.1.6 计算器.....................................................................................................................................- 106 4.1.7 命令终端.................................................................................................................................- 107 4.1.8 文件浏览器.............................................................................................................................- 107 4.1.9 以太网络设置.........................................................................................................................- 108 4.1.10 无线网络设置.........................................................................................................................- 108 4.1.11 使用WiFi AP功能................................................................................................................... - 113 4.1.12 Ping测试 ................................................................................................................................. - 116 4.1.13 浏览器..................................................................................................................................... - 117 4.1.14 使用USB摄像头拍照 ............................................................................................................. - 118 4.1.15 使用 3G上网卡拨号上网....................................................................................................... - 118 4.1.16 LED测试.................................................................................................................................- 122 4.1.17 EEPROM读写测试.................................................................................................................- 123 4.1.18 PWM控制蜂鸣器 ...................................................................................................................- 124 4.1.19 串口助手.................................................................................................................................- 124 4.1.20 使用Com Ping来测试串口.....................................................................................................- 127 4.1.21 录音.........................................................................................................................................- 127 4.1.22 LCD测试.................................................................................................................................- 129 4.1.23 调节背光.................................................................................................................................- 129 4.1.24 A/D转换..................................................................................................................................- 130 4.1.25 按键测试.................................................................................................................................- 131 4.1.26 触摸笔测试.............................................................................................................................- 132 4.1.27 条码扫描.................................................................................................................................- 132 4.1.28 语言设置.................................................................................................................................- 133 4.1.29 设置时区-日期-时间-闹钟.....................................................................................................- 134 4.1.30 屏幕旋转.................................................................................................................................- 135 - 第- 8 -页 4.1.31 4.1.32 4.1.33 4.1.34 设置开机自动运行程序.........................................................................................................- 136 关于关机.................................................................................................................................- 137 看门狗.....................................................................................................................................- 138 启动QtE-4.7.0.........................................................................................................................- 139 - 4.2 通过串口终端操作开发板................................................................................................................- 140 4.2.1 播放mp3..................................................................................................................................- 141 4.2.2 如何中止程序的运行.............................................................................................................- 142 4.2.3 如何通过串口与PC互相传送文件 ........................................................................................- 142 4.2.4 控制板上的LED.....................................................................................................................- 144 4.2.5 测试板上的按键.....................................................................................................................- 145 4.2.6 串口测试.................................................................................................................................- 145 4.2.7 测试蜂鸣器.............................................................................................................................- 146 4.2.8 调节控制LCD背光.................................................................................................................- 147 4.2.9 测试I2C-EEPROM...............................................................................................................- 147 4.2.10 AD转换测试...........................................................................................................................- 148 4.2.11 使用WiFi无线网卡.................................................................................................................- 149 4.2.12 使用telnet上bbs ......................................................................................................................- 156 4.2.13 如何设置网络以访问互联网.................................................................................................- 157 4.2.14 如何设置MAC地址................................................................................................................- 159 4.2.15 如何使用Telnet登录开发板...................................................................................................- 161 4.2.16 使用ftp传递文件 ....................................................................................................................- 162 4.2.17 通过网页控制板上的LED .....................................................................................................- 162 4.2.18 设置并保存系统实时时钟.....................................................................................................- 163 4.2.19 如何掉电保存数据到Flash ....................................................................................................- 163 4.2.20 设置开机自动运行程序.........................................................................................................- 164 4.2.21 如何使用命令进行屏幕截图.................................................................................................- 164 4.2.22 查看开发板内存信息.............................................................................................................- 164 - 4.3 安装并设置FEDORA9 ........................................................................................................................- 164 4.3.1 图解安装Fedora 9.0................................................................................................................- 165 4.3.2 添加新用户.............................................................................................................................- 179 4.3.3 访问Windows系统中的文件..................................................................................................- 181 4.3.4 建立交叉编译环境.................................................................................................................- 186 - 4.4 解压安装源代码及其他工具............................................................................................................- 188 4.4.1 解压安装源代码.....................................................................................................................- 188 4.4.2 解压创建目标文件系统.........................................................................................................- 190 4.4.3 解压安装LogoMaker..............................................................................................................- 191 - 4.5 配置和编译内核................................................................................................................................- 192 4.6.1 配置和编译内核...........................................................................................................................- 192 - 4.6 制作目标板文件系统映象................................................................................................................- 192 - 第- 9 -页 4.7 嵌入式LINUX应用程序示例 .............................................................................................................- 193 4.7.1 Hello,World!............................................................................................................................- 193 4.7.2 LED测试程序.........................................................................................................................- 196 4.7.3 测试按键.................................................................................................................................- 197 4.7.4 PWM控制蜂鸣器编程示例 ...................................................................................................- 199 4.7.5 I2C-EEPROM编程示例 .........................................................................................................- 202 4.7.6 管道应用编程示例-网页控制LED........................................................................................- 204 - 4.8 编译QTOPIA-2.2.0 ..............................................................................................................................- 209 4.8.1 编译和运行x86 版本的Qtopia-2.2.0......................................................................................- 210 4.8.2 编译和运行arm版本的Qtopia-2.2.0 ...................................................................................... - 211 - 4.9 编译QTE-4.7.0 ...................................................................................................................................- 212 4.9.1 编译和运行arm版本的QtE-4.7.0...........................................................................................- 212 - 4.10 编译QTOPIA4(QT-EXTENDED-4.4.3)..................................................................................................- 214 4.10.1 编译和运行x86 版本的Qt-Extended-4.4.3 ............................................................................- 214 4.10.2 编译和运行arm版本的Qt-Extended-4.4.3 .............................................................................- 214 - 第五章 LINUX应用程序开发指南 .................................................................................................................- 216 - 第- 10 -页 第一章 Tiny4412 开发板介绍 (图:Tiny4412 核心板) Tiny4412 是高性能的 Cortex-A9 核心板,它们由广州友善之臂设计、生产和发行销售。采 用三星高性能的 Exynos 4412 四核处理器。 Exynos 4412 内部集成了 GPU 为 Mali-400 MP 的高性能图形引擎,支持 3D 图形流畅运行, 并可播放 1080P 大尺寸高清视频,流畅运行 Android 等高级操作系统,非常适合开发高端物联 网终端,广告多媒体终端,智能家居,高端监控系统,游戏机控制板等设备。 用户可以到我们网站浏览最新通知及下载更新最新的手册和系统网址:http://www.arm9.net 第- 11 -页 1.1 Tiny4412 核心板介绍 Tiny4412 核心板也是采用了 2.0mm 间距的双排针(P1, P2, P3, P4),引出了大部分 CPU 功能 引脚,尺寸为(74x55mm)。其中 P1 和 P2 排针为标配焊接,它们已经包含了大部分常用的功能; P3 和 P4 空焊,方便用户扩展开发使用。 Tiny4412 标配 1G DDR3 内存和 4GB 高速 eMMC 闪存。 1.1.1 Tiny4412 核心板资源特性 Item CPU 处理器 Description  Samsung ARM Cortex-A9 四核 Exynos 4412 Quad-core 处理器,运行主频 1.5GHz  内置 ARM Mali-400 双核 GPU  最高可支持 1080p@30fps 硬件解码视频流畅播放,格式可为 MPEG4, H.263, H.264 等  最高可支持 1080p@30fps 硬件编码(Mpeg-2/VC1)视频输入 DDR3 RAM 内存  Size: 1G  32bit 数据总线,单通道 FLASH 存储 接口资源  标配 4G eMMC  2 个 70 Pin 2.0mm space DIP connector  2 个 34 Pin 2.0mm space DIP connector 第- 12 -页 在板资源 电源供电 PCB 规格尺寸  4 x User Leds(Green)  2 x Power Led(Green)  Supply Voltage from 2V to 6V(支持睡眠唤醒模式)  8 层高密度电路板,采用沉金工艺生产  Size: 74 x 55 x 10 (mm) 1.1.2 Tiny4412 核心板引脚定义 各接口定义: 第- 13 -页 P1 第- 14 -页 P2 P3 第- 15 -页 P3 1.1.3 Tiny4412 核心板接口说明 1.1.3.1 用户LED LED 是开发中最常用的状态指示设备,本开发板具有 4 个用户可编程 LED,它们直接与 CPU 的 GPIO 相连接,低电平有效(点亮),详细的资源占用如下表。 LED1 LED2 LED3 LED4 GPIO 资源 GPJ_0 GPJ_1 GPJ_2 GPJ_3 1.1.3.2 Jtag口接口说明 目前大部分高端 CPU 都可以支持 SD 卡启动,JTAG 接口已经用途不大,并且芯片厂商提供 的 JTAG 接口资料和软件也更少,甚至是没有。但仍然有些用户钟情于 JTAG 调试开发,因电路 板尺寸有限,Tiny4412 特留出相应的 JTAG 测试点,有需要的用户可以自行引出使用,如下图 所示。 第- 16 -页 1.2 Tiny4412SDK 底板介绍 目前 Tiny4412SDK 有两款底板,分别为 增强版 和 标准版,可简单地通过版本号来分辨,Tiny4412SDK 1306 为增强版,Tiny4412SDK 1308 为标准版,如下图的版本号是 1308,所以该底板是标准版: 下面的章节分别介绍这两款底板: 第- 17 -页 1.2.1 Tiny4412SDK 增强版 底板介绍 1.2.1.1 Tiny4412SDK 增强版 底板硬件资源特性 LCD 显示  LCD1(背面): 45Pin, 0.5mm 间距,兼容 Mini2440/Mini6410/Mini210 LCD 显示屏,支持一线协议背光调节和电容触摸  LCD3(背面): 40Pin, 0.5mm 间距,兼容 Mini2440/Mini6410/Mini210 LCD 显示屏,支持一线触摸  LCD4(正面未引出): 44Pin, 兼容 Mini2440/Mini6410/Mini210 LCD 显示 屏,支持一线触摸和电容触摸  HDMI 高清接口(Type A) 第- 18 -页  LCD 可支持从 3.5 寸到 12.1 寸,支持高清屏 网络 标准接口资源 在板即用资源 外扩接口资源 PCB 规格尺寸  1 个 10/100M 自适应以太网 RJ45 接口(采用 DM9621)  2 个 DB9 式 RS232 串口(另有 4 个 TTL 电平串口)  1 个 micro USB Slave 2.0 接口  1 路 3.5mm 立体声音频输出接口,1 路在板麦克风输入  1 路 USB Host 2.0 接口  1 个标准 SD 卡座  5V 直流电压输入:接口座型号为 DC-23B  1 个 I2C-EEPROM 芯片(256byte),主要用于测试 I2C 总线  4 个用户按键(中断式资源引脚)  1 个 PWM 控制蜂鸣器  板载实时时钟备份电池  板载重力感应芯片  4 个串口座 : TTL 电平  1 个 GPIO 接口 (含 SDIO)  1 个 CMOS 摄像头接口  层数 : 2  Size: 180 x 140(mm) 第- 19 -页 软件支持  Linux Kernel 3.5  Android 4.2.2 1.2.1.2 Tiny4412SDK 增强版 布局及跳线 Tiny4412 增强版底板接口布局如下图所示。 第- 20 -页 1.2.2 Tiny4412SDK 标准版 底板介绍 1.2.2.1 Tiny4412SDK 标准版 底板硬件资源特性 LCD 显示  LCD1(背面): 45Pin, 0.5mm 间距,兼容 Mini2440/Mini6410/Mini210LCD 显示屏,支持一线协议背光调节和电容触摸  LCD4(正面未引出): 44Pin, 兼容 Mini2440/Mini6410/Mini210LCD 显示屏, 支持一线触摸和电容触摸  HDMI 高清接口(Type A)  LCD 可支持从 3.5 寸到 12.1 寸,支持高清屏 第- 21 -页 网络 标准接口资源 在板即用资源 外扩接口资源 PCB 规格尺寸 软件支持  1 个 10/100M 自适应以太网 RJ45 接口(采用 DM9621)  1 个 DB9 式 RS232 串口(另有 4 个 TTL 电平串口)  1 路 3.5mm 立体声音频输出接口,1 路在板麦克风输入  3 路 USB Host 2.0 接口  1 个标准 SD 卡座  5V 直流电压输入:接口座型号为 DC-23B  4 个用户按键(中断式资源引脚)  1 个 PWM 控制蜂鸣器  板载实时时钟备份电池  板载重力感应芯片  4 个串口座 : TTL 电平  1 个 GPIO 接口 (含 SDIO)  1 个 CMOS 摄像头接口  层数 : 2  Size: 180 x 140(mm)  Linux Kernel 3.5  Android 4.2.2 1.2.2.2 Tiny4412SDK 标准版 布局及跳线 Tiny4412 标准版底板接口布局如下图所示: 第- 22 -页 1.3 Tiny4412 开发底板接口说明 本小节详细介绍了开发板上每个接口或模块的引脚定义和占用的 CPU 资源,光盘中另有本 开发板的完整 PDF 格式原理图,以供参考使用。 更详细的接口和引脚说明,请参考光盘中的原理图,设计参考也应以原理图为准。 1.3.1 电源接口和插座 本开发板采用 5V 直流电源供电,提供了 2 个电源输入口,CN1 为附带的 5V 电源适配器插 座,白色的 CON5 为 4Pin 插座,方便板子放入封闭机箱时连接电源。 第- 23 -页 CON13 NO. 引脚定义 1 VDD5V 2 GND 3 GND 4 VDDIN 电源座型号及尺寸 说明:此种接法方便当采用引线连接时,电源开关 S1 也 是有效的。 1.3.2 串口 Exynos4412 本身总共有 4 个串口,其中 UART1 为四线的功能串口,UART0、2、3 为两线 串口。 在 1306 开发底板上,UART0 和 UART3 已经经过 RS232 电平转换,它们分别对应于 COM0 和 COM3,你可以通过附带的交叉串口线和 PC 互相通讯。 CON1,CON2,CON3, CON4 在开发板上的位置和原理图中的连接定义对应关系如下图所 示。 CON0 ~ 引脚定义(TTL) COM0 引脚定义(RS232) 第- 24 -页 CON4 1 RTSn 1 2 CTSn 2 3 TXD 3 4 RXD 4 5 5V 5 6 GND 6 7 8 9 COM3 1 2 3 4 5 6 7 8 9 引脚定义(RS232) NC RSRXD RSTXD NC GND NC RSCTSn RSRTSn NC NC RSRXD RSTXD NC GND NC NC NC NC 1.3.3 USB接口 1306 开发底板具有一个 USB Host(2.0)接口,1308 开发底板则带有 3 个,它和普通 PC 的 USB 接口是一样的,可以接 USB 摄像头、USB 键盘、USB 鼠标、优盘等常见的 USB 外设; 1306 开发底板还带有一个 microUSB(2.0)接口,主要用于 Android 系统下的 ADB 功能,用 于软件安装和程序调试,而 1308 并不带 microUSB 接口,而需要使用 ADB,需要设置通过网络 来连接 ADB。 microUSB 的接口定义如下: miniUSB 5 4 3 引脚定义 GND OTGID D+ 第- 25 -页 2 1 USB Host 的接口定义如下: USB Host 1 2 3 4 DVbus 引脚定义 5V DD+ GND 1.3.4 网络接口 本开发板的有线网络采用了 DM9621 网卡芯片,它可以自适应 10/100M 网络,RJ45 连接头 内部已经包含了耦合线圈,因此不必另接网络变压器,使用普通的网线即可连接本开发板至你 的路由器或者交换机。 1.3.5 音频接口 Exynos4412 支持 I2S/PCM/AC97 等音频接口,本开发板采用的是 I2S0 接口,它外接了 WM8960 作为 CODEC 解码芯片,可支持 HDMI 音视频同步输出,WM8960 芯片在 Tiny4412SDK 底板上。 音频系统的输出为开发板上的常用 3.5mm 绿色孔径插座。 为方便学习开发使用,我们直接在板上提供了麦克风输入,注意:本开发板并非专业的录 音设备,音频输入的处理电路佷简单,录音时尽量把音源靠近麦克风。 第- 26 -页 1.3.6 用户按键 本开发板总共有 4 个用户测试用按键,它们均从 CPU 中断引脚直接引出,属于低电平触发, 8 个按键的定义如下: 按键 对应的中断 可复用为 GPIO K1 K2 EINT26 EINT27 GPX3_2 GPX3_3 K3 EINT28 GPX3_4 K4 EINT29 GPX3_5 1.3.7 LCD接口 为了方便用户使用,Tiny4412SDK 带有三个 LCD 接口,其中一个是 45pin (LCD1),可连接 电容触摸屏。 LCD 接口座中包含了常见 LCD 所用的大部分控制信号(行场扫描、时钟和使能等),和完整 的 RGB 数据信号(RGB 输出为 8:8:8,即最高可支持 1600 万色的 LCD);为了用户方便试验, 还引出了 PWM 输出,和复位信号(nRESET),其中 LCD_PWR 是背光开关控制信号。 注意:因为采用了一线精准触摸,LCD1 座中并不包含 CPU 自带的四线电阻触摸引脚,而 是增设了 I2C 和中断脚(见 LCD1-41、42、43、44),这样设计是为了连接电容触摸屏。 LCD1 1 3 5 7 9 11 13 15 17 引脚说明 VDD_5V VD0 VD2 VD4 VD6 GND VD9 VD11 VD13 LCD1 2 4 6 8 10 12 14 16 18 引脚说明 VDD_5V VD1 VD3 VD5 VD7 VD8 VD10 VD12 VD14 第- 27 -页 19 VD15 20 GND 21 VD16 22 VD17 23 VD18 24 VD19 25 VD20 26 VD21 27 VD22 28 VD23 29 GND 30 PWM1/GPD0_1 31 XEINT10/GPH1_2 32 nRSTOUT 33 VDEN 34 VSYNC 35 HSYNC 36 VCLK 37 I2CSCL2 38 XEINT14/GPH1_6 39 I2CSDA2 40 XEINT15/GPH1_7 41 GND 注意:Exynos4412 总共有 3 路 I2C,此处使用的是 I2C2 说明:各个引脚和 CPU 的连接关系,请以原理图为准,此处定义标称仅供参考 1.3.8 ADC输入 Tiny4412 核心板带有 4 路 ADC 转换通道,其中 AIN0 连接到了开发底板的可调电阻 W1, 其它通道尚未在 Tiny4412SDK 底板上引出。 1.3.9 PWM控制蜂鸣器 本开发板的蜂鸣器 Buzzer 是通过 PWM0 控制的,原理图如下所示,其中 PWM0 对应 GPD0_0, 该引脚可通过软件设置为 PWM 输出,也可以作为普通的 GPIO 使用。 第- 28 -页 1.3.10 I2C-EEPROM 本开发板具有一个直接连接 CPU 之 I2C0 信号引脚的 EEPROM 芯片 AT24C08,它的容量有 256 byte,在此主要是为了供用户测试 I2C 总线而用,它并没有存储特定的参数。 注意:Exynos4412 总共有 8 路 I2C,此处使用了 I2C0 1.3.11 SD卡 Tiny4412 引出 2 路 SDIO 接口,在本开发底板中,SDIO2 被用作普通 SD 卡接口使用,该接 口可以支持 SDHC,也就是高速大容量卡。 1.3.12 GPIO/SDIO接口 GPIO 是一个 2.0mm 间距的 30Pin 插针座,见下图: 其中,前 20pin 是一个 SDIO 接口,一般用于连接 SD-WiFi 模块。 GPIO 接口的引脚定义如下: CON9 1 VDD3.3V 3 TXD2 5 I2CSCL 引脚定义 CON9 2 GND 4 RXD2 6 I2CSDA 引脚定义 第- 29 -页 7 SPIMOSI0 8 SPIMISO0 9 SPICLK0 10 SPICSn1 11 EINT13 12 EINT12 13 SD3_CLK 14 SD3_CMD 15 SD3_nCD 16 EINT11 17 SD3_D AT0 18 SD3_D AT1 19 SD3_D AT2 20 SD3_D AT3 21 SPIMISO1 22 EINT26 23 SPIMOSI1 24 EINT27 25 SPICLK1 26 EINT28 27 SPICSn1 28 EINT29 29 VDD5V 30 GND 说明:各个引脚和 CPU 的连接关系,请以原理图为准,此处定义标称仅供参考 1.3.13 CMOS CAMERA接口 Tiny4412 带有一个 CMOS 摄像头接口,它是一个 20 脚 2.0mm 间距的针座,用户可以直接 使用我们提供的 CAM130 摄像头模块;其实 CAM130 摄像头模块上面没有任何电路,它只是一 个转接板,它直接连接使用了型号为 ZT130G2 摄像头模块。 说明:CAMER 接口是一个复用端口,它可以通过设置相应的寄存器改为 GPIO 使用,下表 是它对应引脚的 GPIO 列表 CAMERA 1 3 5 7 9 11 引脚定义 I2CSDA0 XciFIELD CAM_CLK CAM_VSYNC CAM_DATA7 CAM_DATA5 CMOS CAMERA CAMERA 2 4 6 8 10 12 引脚定义 I2CSCL0 CAM_RESET/GPJ3_1 CAM_HREF CAM_PCLK CAM_DATA6 CAM_DATA4 第- 30 -页 13 CAM_DATA3 14 CAM_DATA2 15 CAM_DATA1 16 CAM_DATA0 17 VDD_3.3V 18 VDD_2.45-2.8V 19 VDD_1.8V 20 GND 说明:各个引脚和 CPU 的连接关系,请以原理图为准,此处定义标称仅供参考 1.3.14 CPLD-JTAG接口 该接口用于烧写 Tiny4412SDK 上的 CPLD(EPM240T100)的固件。 1.4 Tiny4412 的软件特性 1.4.1 Android 4.2.2 系统资源特性 交叉编译器 arm-linux-gcc-4.5.1-v6-vfp 和 Mini6410/Mini210 通用,编译内核时会自动探 测采用 armv7 指令集,支持硬浮点运算, 独家提供 Superboot-4412 提供 Superboot,和开源的 uboot 支持 SD 卡脱机快速烧写,速度极快 (1.8M/秒) Android 内核 版本: Linux-3.5 支持 EXT3/YAFFS2/CRAMFS/FAT32 等格 式的文件系统 第- 31 -页 看门狗驱动 RTC 驱动 4 个 LED 驱动 4 个用户按键驱动 SPI 驱动 I2C-EEPROM 驱动 PWM 控制蜂鸣器驱动 ADC 驱动(通道: AIN0) CPU 本身所带触摸屏控制器驱动 电容屏触摸驱动 LCD 背光驱动, 支持 127 级可调 LCD 驱动(高清 7",普屏 7") USB Host 驱动: 支持优盘,蓝牙等 USB Device 驱动: 支持 USB ADB/fastboot SD 卡驱动 4 个串口驱动 USB WiFi 驱动:内核自带,对某些类 型的卡支持不是太好 USB WiFi 驱动:可支持更多型号 USB 无线网卡,更加完善 音频驱动(WM8960:支持录音和放音, ALSA 接口,支持 D 类功放) 以太网络(DM9621) FIMC 驱动 JPEG 驱动 第- 32 -页 Android 系统 应用特性 MFC 多媒体驱动 HDMI 驱动 3D 加速 2D 加速 USB 转串口驱动 版本: Android 4.2.2 支持 2D/3D 加速 流畅运行各种 2D/3D 游戏 支持 WiFi 上网 支持 3G 上网和短信息收发 支持中兴 MF210 3G 模块 支持 HDMI 音视频同步输出 可设置分辨率,最大支持 1080p 支持背光 127 级可调,实现炫酷渐熄 效果 等等… 1.4.2 Linux系统资源特性 交叉编译器 arm-linux-gcc-4.5.1-v6-vfp 和 Mini6410 通用,编译内核时会自动探测采用 armv7 指令集,支持硬浮点运算, 独家提供 Superboot-4412 提供 Superboot,和开源的 uboot Superboot 专门为企业级用户定制 支持 SD 卡脱机快速烧写,速度极快 (1.8M/秒) Linux 内核 版本: Linux-3.5 完善的 BSP 支持 YAFFS2/CRAMFS/FAT32 等格式的 源代码, 内核自带 文件系统 看门狗驱动 源代码, 三星原厂 BSP 所带 第- 33 -页 RTC 驱动 源代码, 三星原厂 BSP 所带 4 个 LED 驱动 源代码, 友善之臂添加 8 个用户按键驱动 源代码, 友善之臂添加 SPI 驱动 源代码, 内核自带, 未经验证(2011.1.16) I2C-EEPROM 驱动 源代码, 三星原厂 BSP 所带 PWM 控制蜂鸣器驱动 源代码, 友善之臂添加 ADC 驱动(通道: AIN0) 源代码, 友善之臂添加 CPU 本身所带触摸屏控制器驱动 源代码, 三星原厂 BSP 所带(未采用,见一线触摸) 一线精准触摸驱动 源代码, 友善之臂添加 LCD 背光驱动, 支持 127 级可调 源代码, 友善之臂添加 LCD 驱动(4.3",5", 7"等): 支持旋转 源代码, 友善之臂移植,可根据启动参数"lcd="识 别,共用同一个内核 USB Host 驱动: 支持优盘,蓝牙等 源代码, 三星原厂 BSP 所带 USB Device 驱动: 支持 USB ADB 源代码, 三星原厂 BSP 所带 SD 卡驱动 源代码, 三星原厂 BSP 所带 4 个串口驱动 源代码, 三星原厂 BSP 所带 板载 SD WiFi 驱动(Marvell8686) 驱动模块, 友善之臂移植 USB WiFi 驱动:内核自带,对某些类 源代码, 内核自带,缺省系统并未包含此驱动(未 型的卡支持不是太好 采用) USB WiFi 驱动:可支持更多型号 USB 驱动模块,缺省系统已经包含此驱动(未启用) 无线网卡,更加完善 音频驱动(WM8960:支持录音和放音, 驱动模块, 友善之臂添加移植 ALSA 接口,支持 D 类功放) 以太网络(DM9000) 源代码, 友善之臂移植 FIMC 驱动 源代码, 三星原厂 BSP 所带 JPEG 驱动 源代码, 三星原厂 BSP 所带 第- 34 -页 图形系统 实用的程序 MFC 多媒体驱动 源代码, 三星原厂 BSP 所带 3D 加速 源代码, 三星原厂 BSP 所带 2D 加速 源代码, 三星原厂 BSP 所带 USB 转串口驱动: 源代码, 内核自带 3G 驱动: 友善之臂添加,实际就是 USB 源代码, 友善之臂移植 转串口驱动 Qtopia-2.2.0 提供平台源代码,分为 x86 和 arm 两个版本 QtEmbedded-4.7.0 提供平台 arm 版本源代码 Qt-Extended-4.4.3 手机版本的 Qtopia,也可称为 Qtopia4,提供平台 源代码 该部分的图形界面程序均为友善之臂独立自主开发,不提供源代码,但多数特性提供开源 的示例程序供开发者参考。 ADC 转换测试 LED 控制 Buttons 按键测试 I2C-EEPROM 读写测试 LCD 测试 Ping 测试 录音机 Web 浏览器 看门狗测试 网络设置(可保存参数) 背光控制 语言设置:可设置中英文 随手写:主要用于测试触摸笔的准确 性 MMC/SD 卡和优盘自动挂载和卸载 第- 35 -页 Qt4 切换器 Qtopia4 切换器 SMPlayer 播放器 第- 36 -页 第二章 准备工作 出厂之前,如果客户未加说明,开发板中已经烧写了缺省的 Android4.2.2 系统(对应光盘 /images/Android 文件夹中二进制文件:zImage、ramdisk-u.img、system.img,这样你拿到板子之 后即可上电开机运行系统,以便了解和测试整个硬件系统。 在开始之前,我们建议你先了解一下本章 1,2 节的内容,一般将来做参考。 2.1 开发板设置及连接 2.1.1 启动模式选择 Tiny4412 支持 SD 卡和 eMMC 两种启动模式,通过 S2 开头来进行切换启动模式,如下图所 示: 图示 说明 作用 S2 拨至 NAND 标识一侧时, 正常启动系统 系统将从 eMMC 启动。 S2 拨至 SDBOOT 标识一侧时, 用于烧写系统,或 系统将从 SD 卡启动; 者从 SD 卡启动系 统 一般开发板在日常使用时,S2 应拨向 NAND 那一侧,除非你需要烧写系统或者要从 SD 卡启动系统。 第- 37 -页 2.1.2 外部接口连接 初次使用 Tiny4412 开发板,可参照以下步骤连接开发板:  请使用我们提供的交叉串口线(蓝色头)连接开发板的串口 0(图中的 COM0)到 PC 机的串口  用我们提供的 5V 电源适配器连接到板上的 5V 输入插座(注意不要太用力,以免损坏电源插 座)  把音箱或者耳机的插头接入板上的绿色音频输出口  如果您有液晶屏,请按照数据线头的方向与开发板的 LCD 接口相连 (LCD 接口在背面) 2.1.3 设置超级终端 注意:有的用户使用 USB 转串口线来扩展串口,但注意有的 USB 转串口线是会出现乱码 的,这说明它的性能和功能并不好,我们的代理大部分都提供了这样的转接线,用户可以直接 联系代理购买可用的转接线。 另外,请务必使用随机附带的串口交叉线,如果你使用其它的串口线,请使用万用表检测 确定为交叉线即可。 为了通过串口连接开发板,必须使用一个模拟终端程序,几乎所有的类似软件都可以使用, 其中MS-Windows 自带的超级终端是最常用的选择,当你安装Windows9x 时需要自定义选择安 装该项,Windows2000 及更高版本则已经缺省安装,Windows7可以使用putty。 一般桌面版Linux系统也自带了类似的串口终端软件,叫minicom,它是基于命令行的程序, 对于初学者而言使用比较复杂一些,感兴趣的用户可以在网上找一下这方面的介绍。 在此着重介绍一下Windows 自带的超级终端程序并以WindowsXP 为例,或许其他Windows 版本的程序界面有所不同。超级终端程序通常位于"开始->程序->附件->通讯"中,选择运行该程 序,一般会跳出如图所示窗口,询问你是否要将Hypertrm作为默认的telnet程序,此时你不需要, 因此点“否”按钮。 接下来,会跳出如下窗口,点“取消” 第- 38 -页 此时系统提示“确认取消”,点“是”即可,接着点提示窗口的“确定”,进入下一步。 超级终端会要求你为新的连接取一个名字,如图所示,这里我取了”ttyS0”,Windows 系统 会禁止你取类似”COM1”这样的名字,因为这个名字被系统占用了。 第- 39 -页 当你命名完以后,又会跳出一个对话框,你需要选择连接开发板的串口,我这里选择了串 口 1,如图所示: 最后,最重要的一步是设置串口,注意必须选择无流控制,否则,或许你只能看到输出而 不能输入,另外板子工作时的串口波特率是 115200,如图所示。 第- 40 -页 当所有的连接参数都设置好以后,打开电源开关,终端会出现系统启动界面。 选择超级终端“文件”菜单下的“另存为…”,保存该连接设置,以便于以后再连接时就不 必重新执行以上设置了。 2.2 制作用于安装系统的SD卡 一般 Tiny4412 出厂时已经安装好 Android4.2.2 系统,以后要重新烧写系统,则需要 SD 卡 来烧写系统,无论是通过 USB 烧写,还是 SD 卡脱机烧写,都需要使用 SD 卡启动开发板来进 行。 制作用于安装系统的 SD 卡的本质是: 将 Tiny4412 的 Bootloade(r Superboot4412.bin)烧写到 SD 卡的第一个分区,这样以后 Tiny4412 就可以通过 SD 卡启动了,利用 Superboot 的 SD 卡脱机烧写功能,将系统烧写到 eMMC,达到 重新安装系统的目的。 第- 41 -页 2.2.1 使用SD-Flasher工具烧写Superboot到SD卡 本步骤将执行以下操作: SD-Flasher.exe 会对 SD 卡进行分区,第一个分区为 130M 用于存放 Superboot4412,剩下的 空间格式化为 FRIENDLYARM 分区,用于存放系统文件 images。 有些小于 256M 的 SD 卡是无法使用的,我们推荐使用至少 4G 的 SD 卡。 以下是详细步骤,基于 Windows7 环境: Step1: 打开光盘\tools\目录,解压 SD-Flasher-1327.7z 得到 SD-Flasher.exe 烧写软件,启动它, 请注意,你需要通过管理员身份来打开该软件才行,如图 启动 SD-Flasher.exe 软件时,会弹出“Select your Machine…”对话框,请在其中选择 “Mini4412/Tiny4412”项: 点 Next 后将弹出 SD-Flasher 主界面,点击一下 Scan,将列出你的 SD 卡,选中它,然后点 “ReLayout”对 SD 卡进行分割,注意,本操作会将 SD 卡内的数据清空然后重新分区。 第- 42 -页 分割完成后,再点一下“Scan”,你会看到 Available 已变为可用状态,表示已分割完成: Step2:点 按钮找到所要烧写的 Superboot4412.bin(默认位于光盘 images/ 目录下,如光 盘目录已移动过,注意不要放在中文目录下),如图 第- 43 -页 Step3:点“Fuse”,Superboot4412.bin 就会被安全地烧写到 SD 卡的无格式区中了,以后你再 使用 SD-Flasher 制作 SD 卡时,无需再执行 ReLayout 操作,FAT32 分区中的数据会得以保留。 Bootloader 被写入 SD 卡后是无法看到的,该如何检测呢? 第- 44 -页 方法是把 SD 卡插到已连接串口的开发板上,并把开发板上 S2 开关设置为“SDBOOT”模 式,开机后,串口上有信息输出,例如: 表示 Bootloader 已被写入 SD 卡,如果串口没有输出,说明没有烧写成功。 以下几种原因均有可能导致不行,并有解决方法: 1. 使用了笔记本自带的读卡器,建议使用外接的 usb 读卡器,注意,有的外接 usb 读卡器 也是不行的 2. 使用了山寨的 SD 卡,请使用正品,最好是 4G 或以上的 SDHC 3. 使用了 microSD+卡套,请使用普通的 SD 卡,因为卡套的方式非常容易导致接触不良 4. 因接触不良导致无法使用 SD 卡启动的可能性比较大,建议多插拔几次试试,这包括(1) 核心板和底板的接触,(2)SD 卡座本身的接触 2.2.2 恢复SD卡到原始状态 此功能需要在 Windows7 下操作。 SD-Flasher.exe 会分割并预留 130M 空间用于烧写 Superboot4412.bin,当你的 SD 不再用于 开发板时,你可能想恢复 SD 卡为原始状态,可参考上面章节的方法再次启动 SD-Flasher.exe, 通过界面上的“ReFormat!”功能恢复 SD 卡为原始状态: 要恢复时,先点“Scan”扫描一下 SD 卡,然后点击“ReFormat!”按钮,会跳出一个提示 第- 45 -页 框,如图,提示你 SD 卡中的所有数据将会丢失: 点“Yes”,开始恢复,这需要稍等一会,恢复完成后,再点一次“Scan”,这时 SD 卡的状 态为不可烧写,即恢复到原始的状态了,如下图所示: 2.2.3 注意事项 由于用户一般都会使用 SD 卡来存放一些其它的数据,因此,基于此考虑,SD-Flasher 软件 在 Vista/Winows7 中运行时,会把 SD 卡自动分割为普通的 FAT32 格式区(自动命名卷标为 “FriendlyARM)和无 格式区(占 130M)两部分,烧写软件将会依据卷标名称作为标志,把 bootloader 烧写到无格式区,这样就不会破坏普通 FAT32 格式区中的数据了。 实际上,Vista/Windows7 系统本身的安全性很高,普通用户是无法在 Vista/Windows7 系统 上强制烧写 SD 卡的,因此必须要先分割才能写入。 另外,烧写 Superboot4412.bin 请务止使用 Windows7 运行 SD-Flasher 来操作,如果使用 Windows XP,可能会烧写失败导致无法通过 SD 卡启动。 第- 46 -页 2.2.4 复制光盘的images目录到SD卡上 如需要使用 SD 卡脱机烧写系统功能,则可以将光盘上的 images 目录整个拷贝到 SD 卡的 根目录下: 2.3 使用SD卡脱机烧写系统 2.3.1 Android系统烧写 注:此步骤假设你的 SD 已经烧写了 Superboot4412.bin,并且从光盘中拷贝了相应的 烧写文件到 SD 卡上,拷贝方法是将光盘中整个 images 目录拷贝到 SD 卡的根目录 下,步骤可参考章节:2.2。 Step1: 把 SD 卡插入电脑,双击打开”images\FriendlyARM.ini”文件,将 FriendlyARM.ini 的 内容修改成如下内容(默认已经如此): #This line cannot be removed. by FriendlyARM(www.arm9.net) CheckOneButton=No Action = Install OS = Android LowFormat = No VerifyNandWrite = No LCD-Mode = No CheckCRC32=No 第- 47 -页 StatusType = Beeper | LED ################### Android #################### Android-BootLoader = Superboot4412.bin Android-Kernel = Android/zImage Android-CommandLine = console=ttySAC0,115200n8 androidboot.console=ttySAC0 ctp=2 skipcali=y vmalloc=512m Android-RamDisk =Android/ramdisk-u.img Android-RootFs-InstallImage = Android/system.img Android-UserData = Android/userdata.img 注意,使用 Tiny4412SDK 1308 底板的用户,在 Android-CommandLine 上还要加上 uhost0=y, 使用 Tiny4412SDK 1306 底板的用户则无需指定。 使用电阻屏的用户,需要在 Android-CommandLine 上,设置 ctp=0 及 skipcali=n。 底板的版本在这里查看: Step2:检查 SD 上至少存在如下文件,如果没有,从光盘中拷贝到 SD 卡(将光盘的 images 目录整个目录拷到 SD 卡的根目录即可): 文件名 说明 images\Superboot4412.bin Bootloader images\Android\zImage Android 内核(Linux Kernel 3.5) images\Android\ramdisk-u.img Android 根分区映象 第- 48 -页 images\Android\system.img image\Android\userdata.img images\FriendlyARM.ini Andorid 系统分区映象 Andorid Data 分区映象 系统烧写配置文件 Step3: 取出 SD 卡插到开发板的 SD 插槽上,参照下图将 S2 开关切换至 SD 卡启动,然后 上电开机,开始烧写系统时,LCD 和串口终端会有进度显示。 Step4: 系统烧写完成后,参照下图把开发板 S2 开关设置为“Nand”启动,然后重新开机即 可启动新的 Android 系统了。 2.3.2 Linux系统烧写 注:此步骤假设你的 SD 已经烧写了 Superboot4412.bin,并且从光盘中拷贝了相应的 烧写文件到 SD 卡上,拷贝方法是将光盘中整个 images 目录拷贝到 SD 卡的根目录 下,步骤可参考章节:2.2。 Step1: 把 SD 卡插入电脑,双击打开”images\FriendlyARM.ini”文件,将 FriendlyARM.ini 的 内容修改成如下内容(默认已经如此): #This line cannot be removed. by FriendlyARM(www.arm9.net) CheckOneButton=No Action = Install OS = Linux 第- 49 -页 LowFormat = No VerifyNandWrite = No LCD-Mode = No CheckCRC32=No StatusType = Beeper | LED ################### Linux #################### Linux-BootLoader = Superboot4412.bin Linux-Kernel = Linux/zImage Linux-CommandLine = root=/dev/mmcblk0p1 rootfstype=ext4 console=ttySAC0,115200 init=/linuxrc ctp=2 Linux-RamDisk = Linux/ramdisk-u.img Linux-RootFs-InstallImage = Linux/rootfs_qtopia_qt4.img 注意,使用 Tiny4412SDK 1308 底板的用户,在 Android-CommandLine 上还要加上 uhost0=y, 使用 Tiny4412SDK 1306 底板的用户则无需指定。 使用电阻屏的用户,需要在 Linux-CommandLine 上,设置 ctp=0 及 skipcali=n。 底板的版本在这里查看: Step2:检查 SD 上至少存在如下文件,如果没有,从光盘中拷贝到 SD 卡(将光盘的 images 目录整个目录拷到 SD 卡的根目录即可): 第- 50 -页 文件名 images\Superboot4412.bin images\Linux\zImage images\Linux\ramdisk-u.img Images\Linux\rootfs_qtopia_qt4.img images\FriendlyARM.ini 说明 Bootloader Linux Kernel 3.5 Linux 根分区映象 Linux 系统分区映象 系统烧写配置文件 Step3: 取出 SD 卡插到开发板的 SD 插槽上,参照下图将 S2 开关切换至 SD 卡启动,然后 上电开机,开始烧写系统时,LCD 和串口终端会有进度显示。 Step4: 系统烧写完成后,参照下图把开发板 S2 开关设置为“Nand”启动,然后重新开机即 可启动新的 Linux 系统了。 2.4 使用MiniTools快速刷系统 (仅支持带microUSB接口的底板) MiniTools 是友善之臂提供的全新 USB 下载工具,就像刷手机一样刷开发板,主要特性如 下:  无需串口连接: MiniTools 完全使用 USB 传输数据, 无需串口,让你的桌面更整洁。  真正一键烧写: 无需从串口输入命令,再点选 USB 下载,并且要通过多个步骤才能烧 写整个系统,较为繁琐;MiniTools 真正实现一键烧写,烧写文件可单选,也可全选。  支持 32/64-bit 电脑: MiniTools 安装程序已经包含 32/64-bit 所需要的下载驱动,通吃 第- 51 -页 所有 Windows 平台。  跨平台:MiniTools 采用 Qt4 开发,可支持各种 Windows 和 Linux 发行版。 和 SD 卡通过烧写不同,通过 MiniTools 工具,可直接通过 USB 数据线,把各个系统快速 方便地安装到开发板上,并快速启动,更加方便调试开发。 2.4.1 安装MiniTools工具 2.4.1.1 Windows系统下安装 双 击 光 盘 tools 目 录 下 的 MiniTools-Windows-YYYYMMDD.exe 安 装 文 件 , 即 可 运 行 MiniTools 工具的安装程序,按向导一步一步操作即可,安装过程中,会自动安装所需的 USB 下载驱动,期间会弹出是否安装无签名驱动的提示,要选择“始终安装该驱动程序”,在安装向 导完成后,需要重新插拨一下 USB 数据线,这时,Windows 会提示正在更新驱动程序,需要等 待 Windows 更新驱动完成,才能进行下一步操作。 MiniTools 安装完成后,会在桌面上创建如下图所示的快捷方式,双击它即可运行 MiniTools 工具: MiniTools 运行界面如下图所示: 第- 52 -页 2.4.1.2 Linux系统下安装 Linux 下的 MiniTools 使用静态编译的方式发行,我们在在 Fedora9/Fedora15/Ubuntu12.04 64bit 发行版本测试均可以正常使用,其他 Linux 发行版应该也没有问题,但要注意的是,必须 要使用 root 用户来运行 MiniTools,否则有可能会出现 USB 无法连接到开发板的情况,建议平 时就使用 root 用户来进行日常开发。 Linux 系统下的 MiniTools 安装比较简单,只需要用命令解压 A 光盘 tools 目录下的 MiniTools-Linux-YYYYMMDD.tgz 到本地即可,要启动 MiniTools,进入 MiniTools 目录,在命 令行下执行 ./start.sh 即可,如非 root 用户,需要先 su 切换到 root 用户,再执行。 2.4.2 使用USB烧写系统前的准备工作 只有 Superboot 才能配合使用 MiniTools 的 USB 下载功能,并且 Superboot 需要工作在 USB 下载模式才 第- 53 -页 行,因此,请先做以下准备工作: 1. 用 SD-Flasher 工具将 Superboot 烧写到 SD 卡中,方法参考章节 2.2.1 错误!未找到引用源。。 2. 将光盘中的 images/FriendlyARM.ini 文件拷贝到 SD 卡中的 images 目录下。 3. 编辑 SD 卡中的 images/FriendlyARM.ini 文件文件,增加以下内容: USB-Mode = yes 做好准备工具后,按以下步骤连接 PC 和开发板: 1. 将开发板上的 S2 开关切换到 SD 卡模式 2. 上电开机,开发板将进入 USB 下载模式,LCD 上会显示“USB Mode: Waiting...” 3. 用 USB 线连接电脑与开发板 4. 连接成功,LCD 上会显示"USB Mode: Connected" 至此,你可以使用 MiniTools 烧写系统了。 如何恢复为用 SD 卡烧写系统? 通过上述的准备工作,开发板从 SD 卡启动时,Superboot 将一直工作在 USB 下载模式,要恢复为 SD 卡 脱机烧写系统,只要修攺 SD 卡中的 images/FriendlyoARM.ini 文件,把 USB-Mode = yes 攺成 USB-Mode = no 即可。 2.4.3 使用MiniTools工具烧写系统 参照上一个章节将 Superboot 工作在 USB 下载模式,并用 USB 数据库连接 PC 和开发板,这时启动 MiniTools 的界面应如下所示: 第- 54 -页 在上面的 MiniTools 主界面上,左下角显示已成功连接开发板,主视图显示自动获取的开发板信息,左下 角有一个“快速启动”的按钮,可以在 USB 下载模式下,直接启动 NAND flash 里面的系统,而无需切换到 NAND Flash 启动模式。 要开始烧写系统,请在主界面的左侧,选择你要烧写的系统,比如 Android,将出现该系统的配置界面, 如下图所示: 第- 55 -页 烧写配置基本与 FriendlyARM.ini 配置文件相同,你可以参照 FriendlyARM.ini 手动填写界面上的配置, 不过,一个更方便的办法是点击界面上的“选择 images 目录”按钮,并将目录定位到光盘的 images 目录下, MiniTools 会自动所选目录下的 FriendlyARM.ini 配置内容,并填写到界面上。 另一个方法是将光盘的 images 目录拷贝到 MiniTools 的安装目录下(右击桌面上的 MiniTools 快捷方式, 选打开位置可定位到该目录),MiniTools 每次启动,就会自动加载安装目录中 images 目录下的 FriendlyARM.ini 配置文件内容到界面上,加载后的界面如下图所示: 第- 56 -页 使用 MiniTools,你可以全选烧写更新整个系统,也可以单选烧写其中某个部分,如只烧写 Kernel,或者 只烧写文件系统等,设置完成后,点击“开始烧写”按钮进行一键烧写,烧写界面如下图所示: 第- 57 -页 烧写完成后,点击左下角的“快速启动”按钮,可以直接从 NAND Flash 启动系统,而无需拨动 S2 和电 源开关。 无法连接开发板? 如果开发板的 LCD 上显示 USB Mode: Connected,而 MiniTools 上提示未连接开发板,则可能是 USB 下 载驱动未安装成功造成的,可以通过手动安装 USB 驱动解决,USB 驱动存放在 MiniTools 的安装目录下: 第- 58 -页 第- 59 -页 第三章 Android使用指南 Tiny4412 选用 Android4.2.2 作为软件平台(Linux 内核版本为 3.5),并将我们在 6410 和 210 平台上针对 Android 所开发的增值软件移植到了 Tiny4412 中,强大的软件结合 Exynos4412 强大 的硬件,满足你的项目需求的同时,也可让你专注于上层开发。 3.1 Android的使用 3.1.1 Anroid下的按键 关于 Android 下的按键布局 本开发板总共有 4 个用户按键,它们在 android 系统中的定义如下表所示: 按键编号 功能定义 K1 Back (返回键) K2 Home (回到首页,长按会列出后台程 序) K3 Menu (菜单键,长按可旋转屏幕) K4 OK (确定键) (注:Android 可通过修改配置重新定义按键的含义) 3.1.2 Android日常开发常用命令 3.1.2.1 进入Android系统命令行并获得root权限 进入 Android 系统的命令行下,可方便进行的一些配置。 如要使用 USB 连接方式进入命令行,可先在你的电脑上安装 Android SDK,可自行网上找安 装方法参考安装,安装后,输入 adb shell 即可进入 Android 系统命令行,在命令行下,是具 有 root 权限的,可执行所有命令。 也可以通过串口终端来进入 Andorid 命令行,这种方法最简单,无需安装 Android SDK,但 第- 60 -页 默认情况下是没有 root 权限的,输入 su 命令一次即可获得 root 权限。 3.1.2.2 让system分区可读写 Android 系统默认情况下,system 分区是只读 mount 的,因为无法进行往里写数据的,可 以用 adb 命令 adb remount 重新 mount 一下。 也可通过在板子上,输入以下命令重新 mount 一下 system 分区令其可读可写: # mount -o remount /dev/block/mmcblk0p2 /system 该命令只对当前启动有效,重启后会恢复为只读。 如想 system 分区一直处于可读写,可能过修改 Android 源代码中的以下文件: device/friendly-arm/tiny4412/fstab.tiny4412 将文件以下内容: /dev/block/mmcblk0p2 /system ext4 ro wait 改为 /dev/block/mmcblk0p2 /system ext4 rw wait 即可。 3.1.2.3 从PC上传文件到开发板上 使 用 Android SDK 中 的 adb 命 令 , 可 将 文 件 通 过 USB 上 传 到 开 发 板 上 , 如 要 将 sensors.tiny4412.so 传到开发板的/system/lib/hw/目录,只要执行以下命令即可: adb push sensors.tiny4412.so /system/lib/hw/ 注意,上传文件到 system 目录,需要参考上一个章节将 system 分区设置为可读可写才可 以。 3.1.3 利用重力感应模块自动旋转屏幕 Tiny4412SDK 带重力感应模块,无需设置,默认即可支持利用重力感应自动旋转屏幕,如果 要禁用此功能,进入 Android 的设置->Display(显示),关闭自动屏幕旋转选项即可。 第- 61 -页 3.1.4 在程序中读写SD卡 Google 在 Android 4.2 下增加了多用户的功能,为了安全性的考虑,要在程序中访问读写 SD 卡,不再像以往那样只要读写 /sdcard 目录就行。 参考 Google 官方的技术文档: http://source.android.com/devices/tech/storage/index.html 大概在 Android 4.2 开始,应用程序只能访问 SD 卡中的 Android/包名称 目录,在 Tiny4412 开发板上,外置 SD 卡会挂载到 /storage/sd_external 目录下,假设你的应用程 序的包名称为 com.FriendlyARM.sdcarddemo ,那么,你在程序可以通过以下路径读写 SD 卡 而无需申请操作权限: /storage/sd_external/Android/com.FriendlyARM.sdcarddemo。 初次运行程序时,SD 卡下的相关目录肯定是不存在的,可先通过以下代码创建: File file = new File("/storage/sd_external", "Android/com.FriendlyARM.sdcarddemo"); if (!file.exists()) { file.mkdirs(); } 3.1.5 获取界面root权限 系统集成了 su 和 SuperSU.apk 用于提升 root 权限,烧写系统后首次开机,需要先连网(可连接以太网线) 第- 62 -页 更新一下 su,以后开发板就是一个已 root 的 Android 设备了,更新 su 的方法如下: 1) 开机前连接以太网线或 WiFi,保存能连网; 2) 进入系统中,点击 SuperSU 图标,会弹出更新 su 的提示,点 Continue,如下所示: 3) 弹出以下提示表示更新 su 成功: 4) 现在打开 R.E.管理器 应用程序,试着挂载读写根分区,如果弹出如下提示,表示 root 成功了,点 Grant 即让 app 工作在 root 下: 第- 63 -页 如果不弹出 Superuser request 提示框,则重启一下一般就可以了。 3.1.6 播放mp3 Android 系统可以自动识别 SD 卡中的 mp3 文件,下面是播放 mp3 的界面。 第- 64 -页 3.1.7 调节音量大小 进入 Setting -> Sound 可调节音量大小,如下图所示: 3.1.8 录音功能 我们在 Android 中内置了 DroidRecord 录音软件,可以用它进行录音与回放,程序图标如下 面左边的图片所示,点击它即可启动录音程序,录音程序启动后,界面如右图所示: 第- 65 -页 请参考下图的步骤启动录音,以及回收录音: 3.1.9 使用以太网上网 本开发板支持在 Android4 下使用以太网上网,只要开机前插入网线开机即可,目前暂时只 支持 DHCP 方式上网,所以无需任何设置,中断拨插网线,网络也会重连。 使用以太网连接网络后,可登录 Google Play 下载应用,用优酷客户端看视频等等。 3.1.10 更改以太网MAC地址 以太网卡并没有存储能力,所以 MAC 地址需要驱动程序来设置,因为,在开发板出厂时, 他们的 MAC 地址是一样的,如果你在同一个局域网使用多块开发板,如果不设置一下 MAC 地 址,可能在网络通讯方面就会有问题,下面介绍两种为以太网设置 MAC 地址的方法: 3.1.10.1 在烧写系统时,在FriendlyARM.ini中指定Mac地址 只需要在 Linux-CommandLine 或者 Android-CommandLine 中加上参数 ethmac 即可指定 Mac 地址,如下所示: Android-CommandLine = console=ttySAC0,115200n8 androidboot.console=ttySAC0 ethmac=08:90:00:A0:02:99 这样烧写系统后开机,该板子会使用 MAC 地址:08:90:00:A0:02:99 第- 66 -页 MAC 地址是有一定的合法格式的,所以不能随意设置,保守点就是只更动后面 3 位,前面 的保持不同。 3.1.10.2 批量生产,通过用MiniTools更新系统参数来指定Mac地址 用上面的方法更攺一台板子的 MAC 地址是没有问题的,但如果有多台板子,效率就比较低 下 了 , 这 时 , 可 以 使 用 MiniTools 工 具 来 更 攺 Mac 地 址 , MiniTools 下 载 地 址 : http://www.arm9home.net/read.php?tid-24600.html 启动 MiniTools 后,选择你所用的文件系统,例如 Android, 在界面上保证只选中 Kernel CommandLine 一项,然后在上面填上 Kernel Command Line 参数,内容如下所示: console=ttySAC0,115200n8 androidboot.console=ttySAC0 ethmac=08:90:00:A0:02:99 在 Command Line 参数的 ethmac 一项中指定 Mac 地址,MiniTools 设定的效果图所下所示: 点击“开始烧写”按钮即完成设置,此操作不会重新烧写系统,只是会重新设置参数区的数据。 第- 67 -页 3.1.11 ADB 使用说明 3.1.11.1 通过USB 使用ADB Tiny4412 标准板底板带有 microUSB 接口,可直接像操作 Android 手机那样,通过 USB 使用 ADB 功 能。 如 ADB 无法连接,需要检查 FriendlyARM.ini 中的 Android-CommandLine 设置,如有 uhost0=y 设置项, 删除之,或改为 uhost0=n。 3.1.11.2 通过以太网使用ADB Tiny4412 精简板底板由于没有 microUSB 接口,如需使用 ADB 功能,可通过以太网来连接使用,使用方 法如下: 1) 在开机之前先插好网线开机,由于要输入命令,所以还要连接串口和设置超级终端。 2) 进入系统后,在超级终端中输入以下命令,看一下开发板的 IP 是多少: # su # ifconfig eth0 首先输入 su 得到 root 权限,然后输入 ifconfig eth0 后会得到 IP 地址, 最好设置一下路由器,给开发 板分配一个固定的 IP,下次就不需要再查看了。 3) 现在回到电脑上的,首先你需要安装好 Android SDK,然后输入以下命令,需要将开发板的 IP 地址 赋给环境变量 ADBHOST: # export ADBHOST=开发板的 IP 地址 # adb kill-server # adb start-server # adb devices 显示以下信息表示找到的开发板设备: List of devices attached: emulator-5554 device 现在,你可以使用 ADB 的其他命令来操作开发板了。 第- 68 -页 3.1.12 预装应用到 /data/app 将你要预装的应用 apk 文件放到 Android 源代码目录的 vendor/friendly-arm/exynos4412/rootdir/data/app/ 目录下,在编译 Android 源代码完成后,执行 gen-img.sh 会将你的应用打包到 userdata.img 中,将它烧写 到板子上即可实现应用的预装,在 data/app 目录下的应用是可以被用户删除的。 3.1.13 使用WiFi无线上网 本开发板可外接 USB WiFi 模块进行 WiFi 无线上网,在 Android 中连接 WiFi 的方法如下: 在开机进入 Android 系统后,进入 Settings,出现如图界面菜单 点 Wi-Fi, 再点一下右边的 ON/OFF 开关开启 WiFi,开启后会自动搜索附近的无线网接入点, 如图: 点你所要连接的无线网接入点,输入密码,如图 第- 69 -页 连接成功,如下图所示: 3.1.14 3G拨号上网及短信息收发 Tiny4412 目前支持中兴 MF210 模块(WCDMA)的 3G 拨号上网,使用官方提供的 RIL 驱动,因此功能稳定,可放心在项目当中使用,国内支持中国联通的 3G 上网和短信收发。 在 Android4 上无需进行任何设置,只要插上 MF210 模块开机,3G 就会自动连接上,右上 角会出现 3G 图标,如下图所示: 这时打开自带的 News& Weather 应用,可以上网看新闻啦: 第- 70 -页 打开信息应用,短信息功能也是好的: 需要注意的是,目前市场上的 MF210 可能有好几个版本,目前我们测试过的设备 ID 主要 有以下两款,其它的中兴 WCDMA 模块可能也支持,你可以自行测试一下: VID:19d2 PID: 0117 VID:19d2 PID: 2003 另外,由于中兴 MF210 模块的接口是 miniPCIe 接口,而 Tiny4412 底板并没有 miniPCIe 接口引出,因此需要通过友善之臂设计的转换器来连接开发板的 USB 接口使用,转接板如下图 所示: 第- 71 -页 内部电路板和相关连接口如下图所示,如你所见,有 SIM 卡插口,miniPCIe 接口和天线: 3.1.15 HDMI同步输出高清图像到电视 用 HDMI 线将本开发板与电视进行连接,开发板上的画面即可同步输出到电视上,如果你 播放视频,声音也会同步输出到电视上。 目前默认输出的分辨率是 1080P,如果你需要更改变分辨率,可在 MiniTools 烧写界面上 设置分辨率,如果是 SD 卡脱机烧写,可在 FriendlyARM.ini 文件中指定参数 LCD-Type,并且 烧写系统及开机时,都不要连接 LCD,仅仅连接 HDMI 接口的电视即可。 LCD-Type 支持以下值,每个值对应相关的分辨率及刷新频率: HDMI1080P60 HDMI1080P60D HDMI1080I60 HDMI1080I60D HDMI1080P30 第- 72 -页 HDMI1080P30D HDMI720P60 HDMI720P60D HDMI576P16X9 HDMI576P16X9D HDMI576P4X3 HDMI576P4X3D HDMI480P16X9 HDMI480P16X9D HDMI480P4X3 HDMI480P4X3D 带 D 结尾的 LCD-Type 值会将 Android 原生的分辨率调整为 HDMI 输出分辨率的 1/4 以获 得较好性能同时,保持按比例输出,例如: HDMI1080P60 表示 Android 原生分辨率和 HDMI 输出分辨率都是 1920x1080; HDMI1080P60D 表 示 Android 原 生 分 辨 率 是 960x540, HDMI 输 出 分 辨 率 为 1920x1080,即 960x540 图像插值输出为到 1920x1080。 3.1.16 播放高清视频 将要播放的视频拷贝到 SD 卡(注:视频要求是 mp4 格式,音频压缩使用 aac 格式,我们 提供了一些可用的测试视频存放在光盘的 Test Video 目录下),然后打开 Gallery 应用: Gallery 会列出所探测到的视频,如下图所示: 第- 73 -页 点击要播放的视频即可播放,如何连接了 HDMI 输出到电视,画面和声音将会同步在电视 上显示, Exynos4412 最高支持 1080p 高清硬解播放。 3.1.17 背光调节设置 在以上使用 Android 系统的过程中,或许你已经注意到了,当在一段时间内没有点击屏幕时, 背光会逐渐熄灭,在系统设置主界面中,点“Display”: 再点“Brightness”,打开背光设置窗口,在此你可以设置背光亮度, 第- 74 -页 回到 Display 界面点“Sleep”,在此窗口,你可以设置背光延时关闭的时间 最长可将 Screen timeout 设置为 3 周(默认值)。 3.1.18 使用USB摄像头 要使用摄像头功能,在开机之前,把 USB 摄像头连接到 USB HOST 接口上,在主界面中找 到“USB Camera”程序,打开它即可预览图像了, 点击图像可以拍照,USB 摄像头目前暂不支 持录像。 关于 USB 摄像头的二次开发说明: 1) 建议使用罗技C270摄像头,从技术上,只要返回图像格式为YVYV/YUY2的摄像头应该都能支持,我 们移植的HAL默认使用这种格式,如果你的摄像头返回的是其它格式,可通过修改 /system/build.prop文件,设置属性ro.kernel.android.cam_yuy2=n来支持,性能会略低于使用 第- 75 -页 YVYV/YUY2的摄像头; 2) 由于USB摄像头的图像是横屏的,且不支持旋转接口,HD700的屏使用内置的Camera应用预览摄像 头会有拉伸,所以需要使用 USB Camera 应用来预览,USB Camera预览时,点击图像即可拍照并存到SD 卡, S70和S700屏由于是横屏,则可以使用内置的Camera应用来预览和拍照,USB Camera是开源的; 3) USB摄像头分辨率默认指定为864x480,可在/system/build.prop中指定 ro.kernel.android.cam_def_size属性来更攺分辨率,C270支持的分辨率有: 1280x720,1184x656,960x720,960x544,864x480,800x448,544x288,352x288,320x176 4)USB摄像头所支持的分辨率列表,可通过 ro.kernel.android.cam_s_sizes 属性来指定; 5) /system/build.prop文件中USB摄像头相关的设定: # # USB Camera Preview and Picture Size (for Logitech C270 webcam) # ro.kernel.android.cam_def_size=544x288 # # USB Camera Supported Size (for Logitech C270 webcam) # ro.kernel.android.cam_s_sizes=1280x720,1184x656,960x720,960x544,864x480,800x448,640x480,5 44x288,352x288,320x176 # # USB Camera Using YUY2 ColorSpace (Set to n will support more usb camera model) # ro.kernel.android.cam_yuy2=y 6) 在 源 码 包 中 有 一 个 开 源 的 DEMO 可 供 参 考 , 位 于 Android 源 码 包 : device/friendly-arm/tiny4412/USBCamera 目录,支持 USB 摄像头预览和拍照,通过程序列表中的 USB Camera 可运行该示例,点击屏幕可进行拍照,并将照片存入 SD 卡。 第- 76 -页 3.1.19 串口助手 要使用串口助手功能,可在首页上点击 iTest 的图标启动 iTest 程序: 然后点击 Serial Port Assistant 启动串口助手,启动后,在左侧可设置串口的波特率等参数: 设置完成后,点击 Connect 按钮即可连接串口,连接成功后,可进行串口测试了,如下图所 示: 第- 77 -页 要发送数据到串口,可在 Send 左边的文本框进行输入,然后点发送即可。 点 Pause 是暂停消息的滚动,点 Clean 是清空接收到的消息。 注意事项: 1) 如果某个串口无法连接,在命令行用命令“fuser 文件名”测试一下设备是否被其他程序 占用。 2) 如没有占用仍无法打开,则用“ls –l 文件名”查看一下权限,可用命令“chmod 777 文件 名”更改一下设备文件的权限再试。 3) s3c2410_serial0 默认与 COM0 调试串口是相连的,因此,不要使用 s3c2410_serial0。 3.1.20 LED测试 要使用测试 LED,可在首页上点击 iTest 的图标启动 iTest 程序, 然后点击 LED Testing 将出现 LED 测试界面,如下图所示,直接点击按钮开关相应的 LED 即可: 第- 78 -页 3.1.21 PWM蜂鸣器测试 要使用测试 PWM,可在首页上点击 iTest 的图标启动 iTest 程序, 然后点击 PWM Testing 将 出现 PWM 测试界面,如下图所示: 在界面上,你可以手动输入频率,然后点 Start 令蜂鸣器发声,也可以通过+和-按钮调节频 率。 点击 Stop 将停止发声。 第- 79 -页 3.1.22 ADC测试 要进行 ADC 测试,即查看 A/D 转换的结果,可在首页上点击 iTest 的图标启动 iTest 程序, 然后点击 A/D Convert 将出现 ADC 的转换结果显示界面,如下图所示: 3.1.23 I2C-EEPROM测试 要进行 I2C-EEPROM 的读写测试,可在首页上点击 iTest 的图标启动 iTest 程序, 然后点击 IIC/EEPROM Testing 将出现 EEPROM 的测试界面,如下图所示: 先点击左侧的“Write Data below into EEPROM”按钮将左侧文本框中的文字写入到 EEPROM 中,然后再点击右侧的“Read EEPROM Data via IIC”的按钮可将 EEPROM 中的文字 第- 80 -页 进行读出,并存放在右边的文本框中。 你可以在文本框中更改你想要写入到 EEPROM 的文字。 3.2 建立Android编译环境 此处的 Android 编译环境,是指编译创建 Android 内核及基本系统所需要的开发,搭建编 译环境主要有以下几步: Step1: 安装 Ubuntu12.04.2 64bit,注意,是 Ubuntu12.04.2,不是 Ubuntu12.04,后面还 有一个小版本 2。 Step2: 在 Ubuntu12.04.2 上安装 Android 编译环境 Step3:从光盘中安装友善之臂提供的 Android 4.2.2 源代码、内核源代码、交叉编译器等, 用于编译内核和 Android4.2.2; Step4: 安装 fastboot 等相关的 Android 工具; 3.2.1 安装Ubuntu12.04.2 64bit系统 请 在 网 络 上 自 行 下 载 得 到 Ubuntu12.04.2 64bit 的 DVD 光 盘 映 象 , 下 载 地 址:http://releases.ubuntu.com/precise/,文件名为:ubuntu-12.04.2-desktop-amd64.iso,然后刻成 光盘。 小帖士:由于 Ubuntu 安装时会联网检查更新,需要访问境外服务器,速度比较慢,所以为了加 快安装速度,可先拨掉网线来安装系统,安装完再插上网线。  Step1:将 Ubuntu12.04.2 光盘插入光驱,开机进入 BIOS,设置为光盘启动,顺利的话将 进入 Ubuntu12.04.2 安装界面的语言选择界面,如下图所示,可按个人喜好选择语言, 这里我选择“简体中文”: 第- 81 -页  Step2:在出现的如下界面中,选“安装 Ubuntu(I)”: 第- 82 -页  Step3:在出现的如下界面中,选“继续”:  Step4:接下来是设置是否安装第三方软件和是否连网更新,什么都不选,点继续: 第- 83 -页  Step5:接下来是分区设置,在虚拟机安装,建议选择第一项,否则,请选择其他选项进 行分区,分区后,点“现在安装”: 第- 84 -页 第- 85 -页  Step6:按下来就是安装了,中途可以设置下时区、用户名等,按向导操作即可:  Step7:安装完,点重启即可: 第- 86 -页 重启后,现在可以插入网线了,进入你设置的用户名和密码登入系统即可。 3.2.2 设置Ubuntu系统 3.2.3 以root用户登录 由于做嵌入式开发经常需要使用一些系统级工具,例如 minicom 和 ifconfig,因此,为了开 发方便,推荐使用 root 用户来进行日常开发,Ubuntu 默认是不能通过 root 用户进行登录的,但 按以下步骤设置后就可以用 root 用户登录了。 以下步骤需要在命令行操作,因为先参考以下方法进入终端命令行模式,点左侧任务栏上 的第一个按钮,输入 term,终端工具将出现在搜索结果中,点击“终端”启动它: 第- 87 -页 首先,需要先设定一个 root 的密码,在终端上输入 sudo passwd root,按提示输入 root 用户 的密码两次即可,如下图所示: 接着,输入 su root,以 root 用户登录,由于命令提示符太长,这里输入 export PS1='[\u@\h \W]$' 重新设置了一下提示符,然后输入 cp -p /etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf.bak 备 份一下 lightgdm 配置: 第- 88 -页 接下来用 vi /etc/lightdm/lightdm.conf 命令用 vi 编辑器打开/etc/lightdm/lightdm.conf: 在文件末尾加入一行: greeter-show-manual-login=true 最后内容如下图所示: 保存重启,重启后,在登录界面上,点“登录”: 然后输入 root 回车,再输入密码即可以 root 用户登录系统了。 第- 89 -页 3.2.3.1 安装Android源代码编译所需的软件包 Ubuntu 默认安装后是不带软件开发相关的组件的,因此需要先安装一系列的软件开发组件, 请先保存你的电脑能正常访问互联网络。 第一步,先从 Tiny4412 光盘中拷贝 tools 目录下的 ubuntu 目录到 tmp 目录下备用,如果 你是从网上下载的 iso 文件,可以通过以下命令加载 iso,然后执行拷贝: # mkdir –p /mnt/iso # mount –o loop Tiny4412-20130707.iso /mnt/iso # cp /mnt/iso/tools/ubuntu /tmp/ -a (注:#号是提示符,无需输入) 第二步,安装 jdk6: # cd /tmp/ubuntu/jdk6/ # chmod 755 install-sun-java6.sh # ./install-sun-java6.sh 最后一步,通过执行 install-devel-packages.sh 脚本,联网安装软件开发相关的软件包: # cd /tmp/ubuntu/ # chmod 755 install-devel-packages.sh # ./ install-devel-packages.sh 中途会询问是否下载软件包,输入 Y 回车即可。 3.2.4 安装交叉编译器 我们使用的是 arm-linux-gcc-4.5.1(和 Mini210 相同),它在编译内核时会自动采用 armv7 指令集,支持硬浮点运算,下面是安装它的详细步骤。 Step1:将光盘 Android 目录中的 arm-linux-gcc-4.5.1-v6-vfp-YYYYMMDD.tgz 复制到/tmp 目 录,然后进入到该目录,执行解压命令: #cd /tmp #tar xvzf arm-linux-gcc-4.5.1-v6-vfp-YYYYMMDD.tgz –C / 注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,在此 是改变目录的意思。 执行该命令,将把 arm-linux-gcc 安装到/opt/FriendlyARM/toolschain/4.5.1 目录。 第- 90 -页 Step2:把编译器路径加入系统环境变量,运行命令 #gedit~/.bashrc 编 辑 ~/.bashrc 文 件 , 注 意 “ bashrc ” 前 面 有 一 个 “ . ”, 修 改 最 后 一 行 为 export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin,注意路径一定要写对,否则将不会有效。 如图,保存退出。 重新登录系统(不必重启机器,开始->logout 即可),使以上设置生效,在命令行输入 arm-linux-gcc –v,会出现如下信息,这说明交叉编译环境已经成功安装。 第- 91 -页 3.2.5 解压安装Andorid4.2.2 源代码 首先创建工作目录/opt/FriendlyARM/tiny4412/android 在命令行执行 #mkdir –p /opt/FriendlyARM/tiny4412/android 再从 Tiny4412 光盘中拷贝 Android 目录到 tmp 目录下备用,如果你是从网上下载的 iso 文 件,可以通过以下命令加载 iso,然后执行拷贝: # mkdir –p /mnt/iso # mount –o loop Tiny4412-20130707.iso /mnt/iso # cp /mnt/iso/Android /tmp/ -a (注:#号是提示符,无需输入) (1)解压安装 Android4 内核源代码 在工作目录/opt/FriendlyARM/tiny4412/android 中执行: #cd /opt/FriendlyARM/tiny4412/android #tar xvzf /tmp/Android/linux-3.5-YYYYMMDD.tgz 将创建生成 linux-3.5 目录,里面包含了完整的内核源代码 说明:YYYYMMDD 是发行更新日期标志,请以光盘中实际日期尾缀为准。 (2)解压安装 Android4.2.2 源代码包 在工作目录/opt/FriendlyARM/tiny4412/android 中执行: #cd /opt/FriendlyARM/tiny4412/android #tar xvzf /tmp/Android/android-4.2.2_r1-fs-YYYYMMDD.tar.gz 将创建 android-4.2.2_r1 目录。 说明:YYYYMMDD 是发行或更新日期标志,请以光盘中实际日期尾缀为准。 3.3 配置和编译Linux内核 编译 Linux3.5 内核: #cd /opt/FriendlyARM/tiny4412/android/linux-3.5 #cp tiny4412_android_defconfig .config ;注意 config 前面有个”.” 你可以执行 make menuconfig 对配置进行修改,修改完成后,输出 make 进行编译: # make 第- 92 -页 最后会在 arch/arm/boot 目录下生成 zImage,将它替换掉 SD 卡 images/Android/下的 zImage 烧写到 Tiny4412 即可。 3.4 从源代码开始创建Android 为了使用户能更方面地编译 Android 源代码,我们特意准备好了现成的源代码包,并且制作 了一些脚本用来编译源代码和创建烧写映象,这此脚本的作用如下: 脚本 作用 调用示例 setenv 设置 Android 编译相关的环境 . setenv ;注意“.”后面有一 变量 个空格 gen-img.sh 生成可用于 fastboot 和 SD 卡 ./gen-img.sh 烧写的系统映象文件 system.img 和 ramdisk-u.bin burn-img.sh 执行 USB 烧写:当 Tiny4412 ./burn-img.sh 开发板正处于 fastboot 下载模 式时,在连接 USB 线后,执 行该脚本会将系统映象文件 system.img 和 ramdisk-u.bin 通 过 USB 下载到 Tiny4412 开发 板上。 要编译 Android 源代码,只要在命令行执行以下命令即可: 编译 Android 4.2.2_r1 源代码: #cd /opt/FriendlyARM/tiny4412/android/ android-4.2.2_r1 #. setenv ;注意“.”后面有一个空格 # make (小帖士:在 make 后面加上-j 参数可利用 CPU 多核加速编译速度,例如 4 核的机器,可输 入 make –j4 来编译) 编译 Android 需要等待很长的时间,建议不要使用虚拟机编译,使用多核的 CPU 加真实的 Linux 系统会快很多。 第- 93 -页 3.5 制作安装或运行文件系统映像 编译成功后,执行以下命令生成系统映象文件 system.img 和 ramdisk-u.img: #./gen-img.sh 执行 gen-img.sh 下会在 Android 源代码当前目录下生成 system.img 和 ramdisk-u.img: 可将 system.img 和 ramdisk-u.img 拷到 SD 卡的 images/Android 目录下进行脱机烧写,也可 以执行 burn-img.sh 进行 fastboot USB 烧写。 3.6 在Andorid程序中访问硬件 为方便用户开发需要访问开发板硬件资源的 Android 应用程序,友善之臂为用户开发了一个 函数库(命名为 libfriendlyarm-hardware.so),用于访问 Tiny4412 上的硬件资源,目前支持的硬件 设备包括:串口设备、蜂鸣器设备、EEPROM、ADC 设备等。 iTest 应用程序是使用该函数库来进行开发的,你可以通过运行 Android 上的 iTest 应用程序 来了解这个函数库的功能。 本章节主要介绍如何在 Android 应用程序中使用 libfriendlyarm-hardware.so 函数库。 3.6.1 如何使用函数库(libfriendlyarm-hardware.so)? 友善之臂移植的 Android 内置了 libfriendlyarm-hardware.so 库,该库文件位于 Android 源代 码目录的以下路径: vendor/friendly-arm/exynos4412/rootdir/system/lib/libfriendlyarm-hardware.so 第- 94 -页 在开发板上位于 /system/lib/libfriendlyarm-hardware.so 目录下。 如果你是参考本文档的方法用 Eclipse 开发 Android 应用程序,可以通过以下方法使用 libfriendlyarm-hardware.so: 1) 定位到你的 Android 应用程序目录,在应用程序目录下创建 libs 目录,再进入 libs 目录 下创建 armeabi 目录,然后将 libfriendlyrm-hardware.so 库文件拷贝到 armeabi 目录下。 2) 再回到你的应用程序目录,进入 src 目录下分别创建 com\friendlyarm\AndroidSDK 三层 目 录 , 然 后 在 AndroidSDK 目 录 下 用 文 件 编 辑 器 新 增 一 个 源 代 码 文 件 并 命 名 为 HardwareControler.java,在该文件中输入以下代码: package com.friendlyarm.AndroidSDK; import android.util.Log; publicclass HardwareControler { /* Serial Port */ staticpublicnativeint openSerialPort( String devName, long baud, int dataBits, int stopBits ); /* LED */ staticpublicnativeint setLedState( int ledID, int ledState ); /* PWM */ staticpublicnativeint PWMPlay(int frequency); staticpublicnativeint PWMStop(); /* ADC */ staticpublicnativeint readADC(); staticpublicnativeint readADCWithChannel(int channel); staticpublicnativeint[] readADCWithChannels(int[] channels); /* I2C */ staticpublicnativeint openI2CDevice(); staticpublicnativeint writeByteDataToI2C(int fd, int pos, byte byteData); staticpublicnativeint readByteDataFromI2C(int fd, int pos); /* IO */ staticpublicnativeint write(int fd, byte[] data); staticpublicnativeint read(int fd, byte[] buf, int len); staticpublicnativeint select(int fd, int sec, int usec); staticpublicnativevoid close(int fd); 第- 95 -页 /* return 6410 or 210 */ staticpublicnativeint getBoardType(); static { try { System.loadLibrary("friendlyarm-hardware"); } catch (UnsatisfiedLinkError e) { Log.d("HardwareControler", "libfriendlyarm-hardware library not found!"); } } } 部署完毕后,启动 Eclipse,在 Eclipse 左侧右击你的项目列表,选择“Refresh”刷新一下项 目,这时,项目的相关的目录应该如下图红色标出的部分所示方为正确: 要使用 HardwareControler 的接口,首先需要在代码中加入如下代码导入 HardwareControler 类: import com.friendlyarm.AndroidSDK.HardwareControler; 然后直接调用 HardwareControler 类的接口即可,下个章节将逐个说明 HardwareControler 类 中的函数接口。 3.6.2 函数库(libfriendlyarm-hardware.so)接口说明 在应用层,可透过上一章节中的 HardwareControler 类来调用 libfriendlyarm-hardware.so 库中 的接口,下面中列出 HardwareControler 类中的接口的定义,这些接口都是类方法,因此不需要 第- 96 -页 创建 HardwareControler 对象实例: 3.6.2.1 串口通讯的接口说明 与串口相关的接口如下表所示: 接口名称 参数与返回值说明 int openSerialPort( 参数说明: String devName: 串口设备文件名,可选 devName, 的值有: long baud, /dev/s3c2410_seria int dataBits, l1 int stopBits ) /dev/s3c2410_seria l2 /dev/s3c2410_seria l3 /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 baud: 波特率 dataBits: 数据位 (取值 5~8,一 般用 8 ) stopBits: 停止位 (取值 1~2,一 般用 1 ) 功能说明 打开指定的串口设备,并返回文 件描述符。 int write( int fd, byte[] data) 返回值说明: 成功打开串口时,将返回串口的文 件描述符,用该描述符可进行 read、write 和 select 等操作, 如果打开失败,则返回 -1。 参数说明: fd: 要写入数据的文件描述符 data: 要写入的数据 向打开的设备或文件中写数据。 返回值说明: 成功返回写入的字节数,出错返回 -1。 int read( 参数说明: 从打开的设备或文件中读取数 第- 97 -页 int fd, byte[] buf, int len) fd: 要读出数据的文件描述符 buf: 存储数据的缓冲区 len: 要读取的字节数 据。 返回值说明: 成功返回读取的字节数,出错返回 -1,如果在调 read 之前已到达文 件末尾,则这次 read 返回 0。 int select( int fd, int sec, int usec) 参数说明: 查询打开的设备或文件是否有数 fd: 要查询的文件描述符 据可读。 sen: 阻塞等待数据多长时间(单 位:秒) usec: 阻 塞 等 待 数 据 多 长 时 间 (单位:纳秒,1 毫秒=1000 纳秒) void close(int fd) 返回值说明: 如果 fd 有数据可读,返回 1, 如 果没有数据可读,返回 0,出错时 返回-1。 参数说明: fd: 要关闭的文件描述符 关闭指定的文件描述符 返回值说明: 无 接口的使用说明: 先通过调用 openSerialPort 打开串口设备,然后可以在线程中、或者用 timer 通过调用 select 接口轮询串口设备是否有数据到来,如果有,则调用 read 接口读取数据。 要往串口中写入数据,调用 write 接口即可。 串口使用完毕后,需要调用 close 关闭串口。 3.6.2.2 开关LED的接口说明 LED 操作的接口如下表所示: 接口名称 参数与返回值说明 功能说明 第- 98 -页 int setLedState( int ledID, int ledState ) 参数说明: ledID: 指定要开关哪一个 LED (取值 0~3) ledState: 1 表示亮,0 表示灭 该接口用于开关 LED 灯。 返回值说明: 成功返回 0,失败返回-1 3.6.2.3 让PWM蜂鸣器发声和停止发声的接口说明 蜂鸣器操作的接口如下表所示: 接口名称 参数与返回值说明 int PWMPlay(int 参数说明: frequency); frequency: 要发声的频率 int PWMStop(); 返回值说明: 成功返回 0,失败返回-1 参数说明: 无 返回值说明: 成功返回 0,失败返回-1 功能说明 按指定的频率让蜂鸣器发声 让蜂鸣器停止发声 3.6.2.4 读取ADC的转换结果的接口说明 ADC 操作的接口如下表所示: 接口名称 参数与返回值说明 int readADC() 参数说明: 无 功能说明 读取 ADC 转换的结果 int readADCWithChannel(int channel) 返回值说明: 成功返回 ADC 转换的结果,失 败返回-1 参数说明: channel: 读取指定通道的 ADC 的值,可选参数有 0,1,4,5 读取指定通道的 ADC 转换的结 果 返回值说明: 第- 99 -页 int[] readADCWithChannels(int[] channels); 成功返回 ADC 转换的结果,失 败返回-1 参数说明: channels: 要通道的 ADC 频道 数组 一次性读取多个频道的结果, 性能好 返回值说明: 成功返回多个 ADC 结果(数组), 错误返回空 3.6.2.5 EEPROM数据的写入与读取的接口说明 EEPROM 操作的接口如下表所示: 接口名称 参数与返回值说明 int openI2CDevice(); 参数说明: 无 intwriteByteDataToI2C( int fd, int pos, byte byteData); 返回值说明: 成功打开 IIC 设备时,将返回 IIC 设备的文件描述符,如果打 开失败,则返回 -1。 参数说明: fd: 由 openI2CDevice 返回 的文件描述符 pos: 指定数据在 EEPROM 的 位置 (0~255) byteData: 要写入的数据 功能说明 打开 IIC 设备,并返回文件描 述符。打开设备后,可使用 writeByteDataToI2C 和 readByteDataFromI2C 函 数对 EEPROM 进行读写。 往 EEPROM 中写入数据 (每 次只能写一个 byte)。 注意,该函数是个耗时的函数 (约 10 毫秒),需要在工作线程 中调用它。 返回值说明: 成功返回写入的字节数,出错 返回-1。 int readByteDataFromI2C( int fd, int pos); 参数说明: fd: 由 openI2CDevice 返回 的文件描述符 pos: 指定数据在 EEPROM 的 位置 (0~255) 从打开的设备或文件中读取 数据。 注意,该函数是个耗时的函数 (约 10 毫秒),需要在工作线程 中调用它。 第- 100 -页 void close(int fd) 返回值说明: 成功返回读取的数据(可强, 出错返回-1,如果在调 read 之 前已到达文件末尾,则这次 read 返回 0。 返回值的类型是 int,你需要转 换成 byte。 参数说明: fd: 要关闭的文件描述符 关闭指定的文件描述符 返回值说明: 无 接口的使用说明: 先通过调用 openI2CDevice 打开 IIC 设备,然后需要创建一个新线程,在线程中调用 writeByteDataToI2C 将数据写入 EEPROM,或者调用 readByteDataFromI2C 从 EEPROM 读出数 据,为什么要创建新线程呢?因为 writeByteDataToI2C 和 readByteDataFromI2C 函数在读写之后 都会延时 10 毫秒左右,如果在 GUI 线程中调用会导致界面短暂阻塞。 EEPROM 可存储 256 个字节的数据,所以在读写时需要指定的位置范围是 0~255,每次只 能读写一个字节。 EEPROM 操作完毕后,需要调用 close 关闭文件描述符。 3.6.3 示例程序说明 在光盘的“Android”目录下,带有一个示例程序 LEDDemo,可在 Windows 用 Eclipse 打 开该工程来了解如何使用 libfriendlyarm-hardware.so。 用 miniUSB 线连接开发板后,在 Eclipse 可直接下载示例到开发板上运行并调试。 第- 101 -页 第四章 Linux使用指南 4.1 Linux图形界面简介 Tiny4412 的 Linux 预装了 Qtopia2.2.0、QtE4.7 和 Qt Extended 4.4.3 三套图形界面系统,通 过友善开发的工具可在三套系统之间无缝切换,非常方便,其中,Qtopia 2.2.0 是开机默认运行 的系统。 Qtopia 2.2.0 是奇趣公司基于 Qt/Embedded 2.3 库开发的 PDA 版(也是最终版)图形界面系统; 自从 Qtopia 2.2.0 之后,该公司就再也没有提供 PDA 版的图形系统了。最新版的 Qtopia 只有手 机版本(Qt Extended 4.4.3),而且 Qt 公司自从 2009.3 开始已经停止了所有 Qtopia PDA 版和手机 版图形系统的授权,但依然继续开发 Qt/Embedded (简称 QtE)库系统。 QtE 的最新版本请到 http://qt.nokia.com/查看,本开发板所移植的版本为 QtE-4.7.0。 Qt Extended 4.4.3 是奇趣公司手机桌面的最高版本,也是该系列产品的最终版,我们称之为 Qtopia4 4.1.1 主要界面说明 进入 Qtopia 系统后主界面如下图所示: 可以看到 Qtopia 系统界面上方有五个图标,它们代表了五类程序/文档,单击任何一个图标 都可以进入相应的子类界面,它们都是类似的。 另外点系统界面左下角的“开始”图标,也可以出现五个子类选择菜单,它们和系统界面 上方的图标是对应的。 五个子类界面分别如下图所示,根据标题名称,其意自明,其中“友善之臂”组中所有程 序均为友善之臂公司自主开发或移植而来,仅供测试使用,其他子类中程序或为系统自带。 第- 102 -页 4.1.2 播放Mp3 在子类“应用程序”中单击“音乐”图标,出现播放器界面,在“Audio”列表中选择一首 mp3 歌曲文件,再点上方的“播放”按钮,开始播放 Mp3 文件。 说明:Audio 列表中的音频文件对应“Documents”子类中的所有有效音频文件。 提示:也可以在“Documents”中直接点击相应的文件名开始播放。 4.1.3 播放视频 在子类“应用程序”中单击“视频”图标,出现播放器界面,在“Video”列表中选择一个 视频文件,再点上方的“播放”按钮,开始播放视频,这里的播放器是 Qtopia 本身自带的,借 助 210 的超强性能,可流畅播放 H.264/H.263/Mpeg4 等格式的视频。 说明:Video 列表中的音频文件对应“Documents”子类中的所有有效视频文件。 提示:也可以在“Documents”中直接点击相应的文件名开始播放。 第- 103 -页 4.1.4 SMPlayer播放器 Mplayer 是一款跨平台完全开源的播放器,依赖于各种开源的音视频解码库,可以播放很多 格式的视频文件,并且支持输出到多种显示设备,如 X11, Framebuffer,SDL,DFB 等,我们移 植改进的这个版本就是基于 Framebuffer。 另外,Mplayer 本身并不具备图形界面操作,但有很多前台界面可用,比如 SMPlayer, KMPlayerr,KPlayer 等,此处采用的就是 SMPlayer,它是基于 Qt4.x 库(我们采用的是最新的 QtE-4.8.5)开发的一个开源播放器界面,更多的说明可以到它们的官方网站查看。 Mplayer 的官方网址:http://www.mplayerhq.hu SMPlayer 的官方网址:http://smplayer.sourceforge.net/ 4.1.4.1 用SMPlayer播放视频 在“友善之臂”程序组中,点“SMPlayer”图标,即可打开播放器,如图 点“Open”或工具栏的 按钮开始选择要播放的文件,如图,找到“sdcard”目录 第- 104 -页 选择要播放的视频文件,用触摸笔双击或者点“open”按钮打开它,如图, 这时,影片就开始自动全屏播放了,如图 在播放过程中,可以单击屏幕,就退回到播放器界面,视频会暂停播放,并把此时的帧面 缩小显示到播放器中,如图。 第- 105 -页 此时,你可以进行调节音量,进度,缩放等操作,在此就不再一一截图说明了,点右上 角的 或者菜单的“Open-Quit”可以退出播放器,返回到 Qtopia2 系统中。 4.1.5 图片浏览 在子类“应用程序”中单击“图片”图标打开图片浏览器,首先映入眼帘的是“文档”组 中各个图片的缩略图,如果你插入了含有图片的 SD 卡或者优盘,其中的图片文件也会一并全部 显示出来。 Qtopia 2.2.0 系统的图片浏览器比以前的 Qtopia 1.7.0 有了很多改善,它可以对图片进行简单 的编辑,而且使用起来也更方便。 4.1.6 计算器 在子类“应用程序”中单击“计算器”图标,出现计算器界面,用户可以通过下拉列表选 择 Simple, Fraction, Scientific, Conversion 等类型的计算器,如图: 第- 106 -页 4.1.7 命令终端 “终端”是 Linux 系统中通常用到的交互操作界面,通过“终端”可以运行很多 Linux 命令, 查看系统信息等等。 有很多途径可以设置或打开一个“终端”: 在 Linux 系统启动的时候,可以把终端指向串口输出,这样就形成了串口终端,它的输入 和输出都是通过串口进行的,无需图形界面,这是嵌入式 Linux 开发中最常用的方式。 在系统启动的时候,也可以把终端输出指向图形显示设备(如 LCD 或者 CRT 等),而把键 盘设定为输入,这样就形成了一套独立的“输入输出系统”,它无需借助另外的 PC 即可操作。 当使用了图形显示设备,并且系统软件中增加了图形用户界面(GUI)时,就可以建立一个基 于 GUI 系统的“命令终端窗口”,这时既可以通过标准的实体硬件键盘进行交互,也可以通过虚 拟的“软键盘”进行交互,此处所讲的就是这种终端方式。 在子类“应用程序”中单击“终端”图标,出现命令终端窗口界面,此时可以接上 USB 键 盘(不要在启动之前接 USB 键盘,否则不能使用)或者使用屏幕下方的软键盘输入 Linux 命令, 你还可以点 Option 菜单中的某些选项进行设置,以改变显示的模式,如图。 4.1.8 文件浏览器 在“友善之臂”程序组中点“文件浏览器”图标打开它,如图: 通过文件浏览器,你可以浏览管理开发板中的目录及文件。 说明:Qtopia-2.2.0 原始版本是不带文件浏览器的,我们移植了 Qtopia-1.7.0 中自带的文件 第- 107 -页 管理器,它们的功能和界面是完全相同的。 4.1.9 以太网络设置 在子类“友善之臂”程序中,点“网络设置”图标打开相应的界面,如图: 在这里,你可以进行常见的网络参数设置:  静态的 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.10 无线网络设置 本章节介绍在 Linux 下如何进行无线网络设备,Tiny4412 支持市面上大部分 USB WiFi 无线网卡。 4.1.10.1 启动无线网络设备程序 在子类“友善之臂”程序中,找到“无线网络设置”图标并点击: 第- 108 -页 4.1.10.2 搜索无线AP(或无线路由器)并连接 启动无线网络设置程序时,将会自动搜索无线 AP(或无线路由器),并列出这些 AP 的 SSID 以及信号强度,如下图所示,如果搜索不到你的无线 AP(或无线路由器),可点击“Scan”按 钮重新搜索: 搜索到你的无线 AP 后,如果要进行 WiFi 连接,点击列表上的 ESSID 名称即可,点击后将 会弹出以下界面,提示你输入无线 AP 的密码: 第- 109 -页 输入无线 AP 的密码,如果没有密码则留空即可,点击“Connect”开始连接,连接过程过 界面如下所示: 连接完成后,所连接的无线 AP 后面会显示 Connected 字样,如下所示: 如果你启动了以太网,则有可能会弹出以下对话框,让你关闭以太网(ifconfig eth0 down), 否则一些网络程序可能会优先使用以太网而不是 WiFi,在下图中选择 Yes 关闭以太网,想恢复 第- 110 -页 以太网时,可启动友善之臂程序组下的“网络设置”程序 Save 一次即可,或在终端上输入 ifconfig eth0 up 开启: 点击“Net Detail”可查看网络的详细信息,如 IP 地址,DNS 等: 连接成功后,点击主界面上的“Close”按钮可将无线设备程序最小化在状态栏上,如下图所 示的状态栏上的 WIFI 小图标,可以通过点击这个小图标返回设置程序主界面: 第- 111 -页 试试打开浏览用 WiFi 上网: 4.1.10.3 断开无线连接 在无线网络设置程序主界面上点击“Disconnect”即可断开无线连接,如下图所示: 4.1.10.4 配置IP地址 在无线网络设置程序主界面上点击“Configure IP”按钮,将启动 IP 配置界面,如下图所示: 第- 112 -页 点击界面顶部的下拉框,可以选择使用 DHCP 自动分配 IP 地址、或者手动设置 IP 地址这 两种方式,如下图所示: 设置完成后,点 Save 保存即可。 4.1.11 使用WiFi AP功能 本开发板的 WiFi AP 功能是指,在开发板上提供无线接入点(Access Point)的功能,其它设备(例如手 机、笔记本)可通过 WiFi 与开发板进行连接(无需借助额外的无线路由器),支持一个或多个设备与开发板同 时连接,它们之间形成一个私有的局域网,多个设备之间可以相互通讯。 实现该功能需借助 RT8192 WiFi 模块。 注意,因为此处还未实现路由功能,所以不能用来上互联网。 要配置和开启 WiFi AP 功能,可在“友善之臂”程序组中找到如下所示的 WiFi AP 图标: 第- 113 -页 点击即可启动 WiFi AP 设置程序,界面如下图所示: 在界面上,可设置的项的含义在下表中列出: 设置项 功能 IP 设置 IP 地址的网段,可设置为 192.168.2.1 ~ 192.168.254.1 当有设置连接到开发板时,会自动用此网段分配一个 IP 地址, 例如开发板用的是 192.168.2.1,则用手机连接开发板时,手机的 IP 地址为 192.168.2.2 SSID Password Channel Opt Mode Auto start at boot 注意设置的 IP 地址不要与区域内的其它路由器冲突。 无线接入点名称 连接时使用的密码,最少 8 位,使用 WPA2 加密方式 默认为 8,注意,如果你所在的区域有无线路由器,Channel 不要与其相同,一 般的 D-LINK 等主流路由器使用的是 6,所以这里默认设置为 8 使用的 WiFi 协议,默认为 802.11g 下次开机是否自动开启 WiFi AP 模式 设置完成后,点 Apply 可保存设置,点 Start 即可启动 WiFi AP 模式,在下图的界面中,状态为 Working (192.168.2.1)表示当前已经工作在 WiFi AP 模式,开发板的 IP 地址为: 192.168.2.1: 这时,可以在手机上通过 WiFi 找到开发板,由于我设置的 SSID 为 arm9.net,所以可以在 WiFi 列表 第- 114 -页 中看到 arm9.net,点击并输入密码即可连接 (如连接不成功可多试几次): 连接成功后,手机上获取的 IP 地址等信息如下图所示,可以看到,开发板自动为手机分配的 IP 地址 是 192.168.2.2: 由于开发板的IP地址是 192.168.2.1,因此,你可以在手机浏览器上打开网址http://192.168.2.1,来访 问 开发板上Web Server公开的网页,如下图所示: 第- 115 -页 WiFi AP Setting 设置程序会将设置信息保存在以下的配置文件中,如感兴趣,你可以手动更改这些配 置文件: 配置文件 作用 /etc/hostapd.conf WiFi 无线的相关参数设置 /etc/udhcpd.conf DHCP 服务的参数配置,用于决定分配给其他设备的 IP 地址、DNS 等信息 /etc/rc.d/init.d/wifiapd 开启 WiFi AP 服务在脚本,开启和关闭 WiFi AP 服 务,并可以配置开发板的 IP 地址 /etc/init.d/rcS 要开机自动启动 WiFi AP 模式,只需在该文件加入 一行: /etc/rc.d/init.d/wifiapd start 即可 4.1.12 Ping测试 请连接好开发板附带的网线,并设置好有效的网关,DNS 等参数,就可以通过图形界面的 ping 程序来测试网络连通性了。在程序子类“友善之臂”中点“Ping 测试”图标,打开相应界 面,如下图: 第- 116 -页 因为已经设置好了 DNS,所以可支持字符域名和数字 IP 两种方式。默认的 ping 测试次数 为 4 次,当勾选上方的“ping forever”后,可以一直 ping,测试结果如下图。 重要提示:要 ping 互联网域名,必须要设置好正确有效的网关和 DNS,并且保证你的网络 确实可以连通互联网。 点“Start”按钮开始 ping,点“Stop”按钮停止 ping,要关闭“Ping 测试”界面,必须先 停止 ping。 说明:ping 是计算机系统中最常见的网络测试工具,不管是各个发行版本的 Linux 系统, 还是各种 MS Windows 系统,都可以在命令终端输入“ping”命令。以上的“Ping 测试”程序实 际就是调用命令行的 ping,把结果通过图形界面显示出来。 4.1.13 浏览器 在“友善之臂”程序组中,点“浏览器”打开它,点开界面下方的软键盘,在界面上方的 地址栏中输入一个网址,再点键盘上的“Ret”(回车)按钮,可以打开相应的网站。 说明:本开发板所用的网络浏览器为 Konqueror/Embedded,它是一个开发源代码的浏览器。 第- 117 -页 4.1.14 使用USB摄像头拍照 问:我需要准备什么型号的 USB 摄像头? 答:推荐罗技 C270 摄像头,其它 UVC 摄像头可自行测试是否支持。 把摄像头插到开发板的 USB Host 端口,然后在“友善之臂”程序组中,点击打开“USB 摄 像头”程序,你将会看到动态的预览界面,调节一下摄像头的对焦,拍好姿势,点下“Snap” 按钮就可以拍照了,拍摄的照片将会保存到“文档”组中。 本程序还可以调节亮度、对比度和伽马值;每个型号的摄像头在出厂时已经设定了最佳值 或者缺省值,程序开启时会读取它们并以此设定。 4.1.15 使用 3G上网卡拨号上网 在中国,有三种制式的 3G 无线网络:  WCDMA : 运营商为中国联通,这是最成熟的一种 3G 网,可世界通用  CDMA2000: 运营商为中国电信  TD-SCDMA: 运营商为中国移动,中国独有的一种 3G 网制式 对应这三种 3G 无线网,有不同的 3G Modem 可用,最常见的就是 USB 接口的 3G Modem, 通常称之为“USB 3G 上网卡”或“USB 上网卡”,我们开发的拨号程序,可以自动探测并支持 上百种 USB 上网卡 (在本节后面我们给出了一份支持的 3G 上网卡型号清单),如果你不知道买 什么网卡,我们推荐: 华为 E261。 下面以 HUAWEI E1750 为例介绍一下它的使用步骤,其他的请根据实际情况以此类推。 Step1:先准备一张可用的 3G SIM 卡,你可以到相应的运营商营业厅去办理 第- 118 -页 Step2:把 SIM 卡插入上网卡 Step3:把上网卡插到开发板上的 USB HOST 接口 Step4:开机并打开 3G 拨号程序,点击 Connect,这时会把检测到的型号自动列出来,如果 有多个,请选择一个合适的点 OK 继续 Step5:这时,开始连接 3G,连接成功会显示如图界面,为获取到的 IP 地址和 DNS 地址等 信息 Step6:把点“Minimize”拨号程序隐藏,就可以使用浏览器进行上网了。 第- 119 -页 4.1.15.1 开机自动进行 3G拨号 要开机自动连接 3G,可以连接成功的界面上选中“Auto 3G Connect”的复选框,然后重新 启动即可,下次开机后,3G 就会自动连接,并且,你可以使用“GPRS 短信”程序通过 USB 3G 卡收发短信。 4.1.15.2 支持的USB 3G网卡的型号清单 下面给出本开发板支持的 USB 3G 网卡的型号清单,我们推荐你选购经过友善之臂测试过 的型号: 经过友善之臂测试 OK 的 USB 3G 网卡型号: Huawei E169 (CDMA2000) Huawei E261 (WCDMA) Huawei E1750/E1550 (WCDMA) ZTE AC581 (CDMA2000) ZTE AC8710 (CDMA2000) ZTE MU351 (TD-SCDMA) 其它支持的 USB 3G 网卡型号: ZTE 6535-Z ZTE AC2710 (EVDO) ZTE AC2726 ZTE K3520-Z ZTE K3565 ZTE MF110 (Variant) ZTE MF112 ZTE MF620 (aka "Onda MH600HS") ZTE MF622 (aka "Onda MDC502HS") ZTE MF628 ZTE MF638 (aka "Onda MDC525UP") ZTE WCDMA Stick from BNSL HuaXing E600 (NXP Semiconductors "Dragonfly") Huawei E1612 Huawei E1690 Huawei E180 Huawei E270+ (HSPA+ modem) Huawei E630 Huawei EC168C (from Zantel) 第- 120 -页 Huawei K3765 Huawei K4505 Huawei R201 Huawei U7510 / U7517 Huawei U8110 (Android smartphone) Onda MW833UP A-Link 3GU AT&T USBConnect Quicksilver (made by Option, HSO driver) AVM Fritz!Wlan USB Stick N Alcatel One Touch X020 (aka OT-X020, aka MBD-100HU, aka Nuton 3.5G), works with Emobile D11LC Alcatel X200/X060S Alcatel X220L, X215S AnyDATA ADU-500A, ADU-510A, ADU-510L, ADU-520A Atheros Wireless / Netgear WNDA3200 BSNL Capitel BandLuxe C120 BandRich BandLuxe C170, BandLuxe C270 Beceem BCSM250 C-motech CGU-628 (aka "Franklin Wireless CGU-628A" aka "4G Systems XS Stick W12") C-motech CHU-629S C-motech D-50 (aka "CDU-680") Cricket A600 EpiValley SEC-7089 (featured by Alegro and Starcomms / iZAP) Franklin Wireless U210 Hummer DTM5731 InfoCert Business Key (SmartCard/Reader emulation) Kyocera W06K CDMA modem LG HDM-2100 (EVDO Rev.A USB modem) LG L-05A LG LDU-1900D EV-DO (Rev. A) LG LUU-2100TI (aka AT&T USBConnect Turbo) Motorola 802.11 bg WLAN (TER/GUSB3-E) MyWave SW006 Sport Phone/Modem Combination Nokia CS-10 Nokia CS-15 Novatel MC990D Novatel U727 USB modem Novatel U760 USB modem Novatel Wireless Ovation MC950D HSUPA 第- 121 -页 ONDA MT505UP (most likely a ZTE model) Olivetti Olicard 100 and others Olivetti Olicard 145 Option GlobeSurfer Icon 7.2 Option GlobeSurfer Icon 7.2, new firmware (HSO driver) Option GlobeTrotter EXPRESS 7.2 (aka "T-Mobile wnw Express II") Option GlobeTrotter GT MAX 3.6 (aka "T-Mobile Web'n'walk Card Compact II") Option GlobeTrotter HSUPA Modem (aka "T-Mobile Web'n'walk Card Compact III') Option iCON 210 Option iCON 225 HSDPA Philips TalkTalk (NXP Semiconductors "Dragonfly") Rogers Rocket Stick (a Sony Ericsson device) Royaltek Q110 - UNCONFIRMED! ST Mobile Connect HSUPA USB Modem Sagem F@ST 9520-35-GLR Samsung GT-B3730 Samsung SGH-Z810 USB (with microSD card) Samsung U209 Sierra Wireless AirCard 881U (most likely 880U too) Sierra Wireless Compass 597 Siptune LM-75 ("LinuxModem") Solomon S3Gm-660 Sony Ericsson MD300 Sony Ericsson MD400 Toshiba G450 UTStarcom UM175 (distributor "Alltel") UTStarcom UM185E (distributor "Alltel") Vertex Wireless 100 Series Vodafone (Huawei) K4605 Vodafone (ZTE) K3805-Z Voda fone MD950 (Wisue Technology) Zydas ZD1211RW WLAN USB, Sphairon HomeLink 1202 (Variant 1) Zydas ZD1211RW WLAN USB, Sphairon HomeLink 1202 (Variant 2) 4.1.16 LED测试 在“友善之臂”程序中点“LED 测试”图标,打开如下界面: 第- 122 -页 可以看到界面中只有“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.17 EEPROM读写测试 在“友善之臂”程序中点“I2C-EEPROM 测试”图标,点开任务栏上的“软键盘”按钮, 在“写入字符编辑区”输入一些 ASC 字符,点“Write Data below into EEPROM via IIC”按钮, 这时该按钮变为进度条,并指示正在写入的进度,如图 第- 123 -页 点“Read EEPROM Data via IIC”按钮,这时按钮变为进度条,并指示正在读取的进度。如 图。 4.1.18 PWM控制蜂鸣器 在“友善之臂”程序中点“PWM-蜂鸣器测试”图标,程序中默认的 PWM 输出为 1000Hz, 点“Start”按钮开始驱动蜂鸣器发声,此时可以通过点击“+”或者“-”按钮改变 PWM 输出 的频率,同时也可以听到蜂鸣器输出声音的改变。点“Stop”按钮中止 PWM 输出。 4.1.19 串口助手 提示:在使用该程序之前请连接好你需要测试的串口 第- 124 -页  4412 本身总共有 4 个串口 UART0、1、2、3,其中 UART0、1 为四线的功 能串口,UART2、 3 为两线串口。  在本开发板上, UART0 已经经过 RS232 电平转换,它对应于 COM0,你可 以通过附带的交叉串口线和 PC 互相通讯。。(本公司提供了型号为“OneCom”RS232 转换模块,如图),连接 PC 时请注意你使用的串口线类型(交叉或直连)。  本程序也支持市面上常见的 USB 转串口线,因为目前的笔记本大都没有串 口,为了方便开发,我们的很多代理都提供了类似的转接线。把 USB 转串口线接到 开发板的 USB Host 端口上,你就可以扩充开发板的串口了。它对应的设备名一般 为/dev/ttyUSB0,1,2,3 等,这意味着你可以通过 USB Hub 扩展多个 USB 转串口。 把串口扩展板接到开发板的 CON2/3/4 上,并使用交叉串口线连接至 PC 的串口。 在“友善之臂”程序组中点“串口助手”图标,打开相应的程序界面,如图: 从该程序窗口的标题可以看到,默认设置为“ttySAC1 1152008N1 [C]”,它表示默认端口的 设置: - 串口设备:/dev/ttySAC1,它对应 CPU 的第二个串口 UART1 - 波特率:115200 - 数据位:8 - 流控制:无 - 停止位:1 - [C]:表示字符模式,如果是[H]则表示 16 进制模式 上图中有两个“编辑框”区域,上面的“编辑框”是用于显示接收到的数据,它实际上是 不能编辑的;下面的“编辑框”可以通过 USB 键盘或者 Qtopia 的软键盘获取输入。 第- 125 -页 点 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 进制输入或者显示数据。 第- 126 -页 4.1.20 使用Com Ping来测试串口 友善之臂开发了另一个串口辅助程序是 Com Ping,该程序用于同时测试多个串口的通讯和稳定性,支持 板载的 4 个串口和 USB 转串口。 Com Ping 的使用方法与串口助手基本相同,不同的是: 1) 通过 Send Text 文本框来设置,需要发送什么内容到指定的串口 2) Invalidate 是时间简隔,即多长时间发送一次 Send Text 编辑框中的文字到串口 3) 和串口助理一样,支持 16 进制方式发送。 设置完串口后,点 Start 即开始自动与串口进行通讯,你可以继续设置其他串口,进行多个串口同时通讯。 另外,设置参数会在点击 Start 时自动保存,下次重新启动程序无需重新设置。 4.1.21 录音 在“友善之臂”程序组中,点击打开“录音机”程序,出现如下界面: 第- 127 -页 根据提示,点“REC”按钮开始录音,这时对着板上的麦克风说话,可以看到录音的波形, 点“STOP”按钮结束录音,如图: 此时可以点“PLAY”按钮播放刚才的录音,同时录制的音频文件将以“WAV”格式自动存 储到“文档”中: 第- 128 -页 说明:Qtopia 2.2.0 系统自带了一个录音程序,中文名为“语音便签”,但它不能正常使用板 上的麦克风进行录制,为了保持代码的原始性,我们没有对此做任何修改。 4.1.22 LCD测试 LCD 测试程序是为了检测 LCD 有无坏点而做,对于学习型开发板来讲,我们最大可容许不 超过 3 个坏点,在“友善之臂”程序组中,点击打开“LCD 测试”,如图: 本程序有自动和手动两种测试模式: Auto-loop 是自动循环模式,执行它将会按图中依次循环全屏显示红、黄、白、青、蓝、绿、 粉红、黑共八种颜色,此过程中,点击屏幕任何地方就可以返回。 Manual-control 是手动模式,执行之后,每点击一次触摸屏,就会切换到另一种颜色,直至 红、黄、白、青、蓝、绿、粉红、黑八色完成一个循环,然后返回。 4.1.23 调节背光 说明:以下内容仅对采用一线精准触摸的 LCD 驱动板有效 第- 129 -页 或许你已经注意到,当你拿到开发板时,上电开机,如果间隔一段时间没有点击触摸屏, LCD 将会“黑屏”,其实这是系统默认的背光管理发生了作用。在“设置”程序组中,点击打开 “电源管理”程序界面,如图: 在此可以看到,系统默认背光关闭的时间为 25 秒,你可以点右侧的上下调节按钮,选择其 他时间间隔。当“Light off”左侧的选框取消时,将会一直开背光。 需要说明的是,采用一线触摸的 LCD 驱动板还集成了背光调节功能,所以你在此还可以滑 动下面的滑块,对背光进行调节。借助此特性,当你设置背光为延时关闭时,可以看到到背光 是逐渐熄灭的,这就是我们所说的“渐熄效果”。 4.1.24 A/D转换 CPU 内部总共有 8 路 A/D 转换通道,但其转换器只有一个。在常见的设计中,一般 AIN4、 AIN5、AIN6、AIN7 被用作了四线电阻触摸的 YM、YP、XM、XP 通道(见 S3C6410 芯片手册); 本开发板引出了剩余的 AIN1-3,它们位于 CON6 接口,为了方便测试,其中 AIN0 直接和一个 可调电阻 W1 连接。 它们如何共用一个转换器呢?请看如下操作: 在“友善之臂”程序组中,点击打开“A/D 转换”,如图: 第- 130 -页 这时旋转板上的 W1 可调电阻,可以看到不断变化的转换结果,转换值最小时会接近 0,最 大时会接近 1024,如图: 如果你使用的是 ARM 本身自带的触摸屏接口,当你点击触摸屏时,A/D 转换器将会选择触 摸屏通道,这时转换结果会显示为“-1”,当触摸笔离开触摸屏,A/D 转换器又会选择板上的 AIN0 通道了。 4.1.25 按键测试 说明:在本开发板系统中,按键并没有任何专用功能,它仅仅为测试底层驱动而用。在“友 善之臂”程序组中,点击打开“Buttons”程序,此时按下开发板上的任意按键(可以是多个),相 应的按键图标就会变为蓝色,松开后恢复为灰色,如图。 第- 131 -页 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 扫描器,打开“应用程序”中的“文本编辑器”,使用扫描器扫描一些条码(诸如 快递单上、杂志等很多商品上都可以找到),可以看到条码数字被准确扫描到编辑器中了。 第- 132 -页 4.1.28 语言设置 Qtopia 2.2.0 自带了“语言”设置,但已经和 Qtopia 1.7.0 有所不同,它只有英文支持,因此 我们重新开发了一个“语言设置”,它位于“友善之臂”程序组,点击打开它。 目前仅有 3 种语言可以选择:英文、中文和日文。试试选择“英文”:点“English”可选项, 再点“OK”,会跳出一个提示信息,询问你是否要改变语言,如果“Yes”,Qtopia 系统就会重 新启动,如果“No”则返回,(注意:中文和日文版本只是翻译了程序名称),如图: 第- 133 -页 4.1.29 设置时区-日期-时间-闹钟 本开发板在出厂的时候日期是不准确的,不过你可以自己调整一下,因为 CPU 内置了实时时 钟(RTC),开发板上有备份电池,所以调整后的时间在关机后是可以”保存”的,当然这需要相应的驱 动支持了,调整时间的步骤如下: 点击任务栏右下角时间显示区域,会出现一个菜单,在其中选择“Set time…”,打开时间设 置界面,如图,在此界面你可以设置时区,调整日期和时间等。 你还可以在菜单中选择“Clock…”,将会出现钟表界面,如图 点其中的“Stop Watch”打开“秒表”程序,如图 第- 134 -页 另外你还可以设置闹钟,如图,闹钟时间到,从音频输出可以听过“嘀嘀”声,它会持续 一分钟,并出现如下界面,点“OK”可以结束闹钟声。 4.1.30 屏幕旋转 在“设置”程序组点“旋转”图标,进入相应的界面,如图,你可以选择 4 个界面旋转方 向,如图。 选择好你想要的方向,点“OK”返回,即可看到结果,如图。 说明:有时需要重新启动 Qtopia 系统才可以看到旋转的效果,因为这个程序是 Qtopia 自带 的,为保持其代码原始性,我们没有去修改它。另外,旋转的效果完全是 Qtopia 软件实现的, 与 LCD 的底层驱动无关。 旋转后,你可以发现,所有的“友善之臂”应用小程序也都自动做了调整,这是我们在各 个应用程序中编码实现的,这样做是为了让同一套代码可以适用于多种型号的 LCD 显示。 第- 135 -页 4.1.31 设置开机自动运行程序 “开机自动运行”可以让你设定任何 Qtopia 自带的程序或者用户自己的 Qtopia 程序为开机 后自动运行,它就像 Windows 系统中的“程序->启动”功能。 在“友善之臂”程序组中,点击“自动运行设置”图标打开它,如图: 图中左边一列”Program list”是要设定的程序名,它包含了所有的 Qtopia 程序(包括用户 Qtopia 程序),右边一列”Status”表明该程序的状态是否已经被设置为“开机自动运行”,这个状 态是唯一的,所有程序只能有一个被标识。 在左侧列表中选择一个程序,如“串口助手”,这时它的状态被标识为“Auto Start”,点“Save” 按钮,会跳出保存成功的提示,这时关闭该程序,再重新启动系统(复位或者点“设置->关机 ->Reboot),就可以看到开机后串口助手已经自动打开了执行了。 第- 136 -页 另外,要取消“开机自动运行”程序,可以点“Clean”,然后点“Close”,这时会出现如图 对话框,点“Yes”退出即可。 4.1.32 关于关机 在“设置”程序组中,有个“关机”图标,打开它,如图,其中有四个关机选项: Shutdown:按下此按钮,Linux 系统就会逐项关闭各个程序和服务,直到整个系统关闭,这 时 CPU 已经完全不工作了,此时整个系统的功耗是最低的。因为本开发板并无相应的硬件关机 电路,因此你仍然可以看到板上的电源灯在亮。 Reboot:这是“热”重启按钮,如果你使用的是 NOR FLASH 模式,系统会逐项关闭各个 应用和服务,重启后会停留在 Superboot 的菜单模式;如果你使用的是 NAND FLASH 模式,系 统会逐项关闭各个应用和服务,然后自动重启重新进入 Qtopia 系统。 注意:Reboot 和后面所介绍的“看门狗”是完全不同的功能,“看门狗”属于“冷”启动, 它不会逐项关闭各个应用和服务,而是直接复位重启。 Restart Server 是指重新启动 Qtopia 图形系统,此时并不会影响到基本的 Linux 系统; Terminates Server 是指关闭 Qtopia 图形系统,点击它之后图形界面就完全失效了,此时屏幕 上的显示是遗留在内存中的数据,并不是有效的图形系统界面。 第- 137 -页 在“设置”程序组中,还有个“亮度和电源”的图标,因为本开发板并没有相应的电源管 理电路,因此它们也是无效的。 说明:最原始的 Qtopia 2.2.0 源代码系统是无法有效执行“Shutdown”和“Reboot”的,我 们对此进行了改进。 4.1.33 看门狗 看门狗是嵌入式系统中最常见的功能之一,最新的内核中已经包含了它的驱动,现在我们 就在应用程序中启动它。 点“友善之臂”程序组,点击打开“看门狗”,如图: 注意,先不要点“Start”按钮,请看红色区域的提示: 一旦启动了看门狗,它就无法停止了,只有不停的去喂它,否则系统就会复位重启,我们 在此设定的倒数时间为 15 秒。 为了形象表示喂狗的动作,当喂狗时我们就丢给它一只骨头吃,如果一直点“Feed”按钮, 它就一直有骨头吃,这样系统也不会复位重启,如图: 第- 138 -页 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.7.0 系统运行的界面如下图,它是一个 CoverFlow 效果的简易程序管理器,你使用触 摸笔可以左右拖动,并点击其中一个 Cover 来运行它 第- 139 -页 点“Exit Embedded Demo”可以退出 QtE-4.7.0,并返回 Qtopia-2.2.0 4.2 通过串口终端操作开发板 说明:每个期望学习 Linux 的嵌入式爱好者都应该学会熟练使用终端控制台的操作,所有 平台的 Linux 指令都是相似的,超过 99%的命令是相同的。进行本小节的操作之前,请先按照 2.1.3 章节正确设置好超级终端。 下图是通过串口终端显示的 Linux 登录界面,实际可能与此不完全相同,但基本都是类似 的,根据提示,按下回车,就可以开始 Linux 控制台之旅了。 第- 140 -页 4.2.1 播放mp3 madplay 是我们移植的一个基于控制台下的 mp3 播放器。它有多种播放控制模式,最简单 的使用方法是: #madplay your.mp3 该命令将以缺省模式播放 your.mp3 文件(开发板中并无 your.mp3 文件,这里只是举例说明)。 可以运行“madplay -h”查看其使用帮助,下面是播放开发板中预装包含的一首 mp3 的截图: 第- 141 -页 需要说明的是:在 Linux-3.0.8 内核中,我们采用了 ALSA 接口的音频驱动,并且此处我们 移植的 madplay 也采用了此接口实现播放,并且开发板中已经内置了 ALSA 库。 4.2.2 如何中止程序的运行 要中止程序的运行,可以在终端控制台下同时按下 Ctrl+c,注意:先按 Ctrl,不要放开, 再按下 c 键即可。 例如:我们刚刚使用 madplay 命令播放了 mp3,如果要中止这个程序的运行,可以按下 Ctrl+c 键。 另外,如果程序是在后台运行,可以使用 kill 命令杀掉该进程 \ 4.2.3 如何通过串口与PC互相传送文件 注意:使用 USB 转串口,有可能是不能顺利的,我们认为这和 USB 转串口线的质量和性 能有关。 当通过串口终端登录系统之后,可以使用 rz 或者 sz 命令通过串口与 PC 互相传送文件,具 体操作如下。 (1)使用 sz 向 PC 发送文件 在超级终端窗口中,点鼠标右键,在弹出的菜单中选择“接收文件”开始设置接收文件目 录和协议,如图所示。 然后在终端的命令行输入“sz /root/Documents/viva-la-vida.mp3”命令,开始向 PC 传送位于 “/root/Documents/”目录的 viva-la-vida.mp3 文件(或者其他文件,改一下路径和文件名就可以了), 因为该文件比较大,所以需要多等几分钟,发送完毕,系统会自动保存文件到您设置的目录里 面,如图。 第- 142 -页 (2)使用 rz 命令下载文件到开发板 在串口终端输入“rz”命令,开始接收从 PC 传过来的文件。 然后在超级终端窗口中,点鼠标右键,在弹出的菜单中选择“发送文件”,设置好要发送的 文件和使用的协议,如图所示,开始向开发板发送文件。 点“发送”,开发板开始接收文件,如图所示。 第- 143 -页 接送完毕,将会在当前目录下得到同样文件名的文件,您可以使用 md5sum 命令验证该文 件是否和源文件相同。 4.2.4 控制板上的LED Led-player 和通过网页控制 LED 均为友善之臂早期为 SBC2410 开发的简易示例程序,因其 硬件无关性,所以可以方便的移植到其他系统。目前市面上有的书籍,部分 2410/2440/6410 开 发板厂商均采用了这个典型的管道应用示例。 (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 的使用方法如下: 第- 144 -页 [root@fa /]# led Usage: leds led_no 0|1 led_no 是要操作的 led(可为 0,1,2,3),0 和 1 分别代表关闭和点亮。 #led 2 1 将点亮 LED3 4.2.5 测试板上的按键 在命令行输入“buttons”命令,然后按开发板上的按键,可以显示对应的键值,如图 4.2.6 串口测试 说明: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,并在命令行输入: 第- 145 -页 #armcomtest –d /dev/ttySAC2 -o 下面是测试时的界面: 4.2.7 测试蜂鸣器 在命令行种输入:pwm_test 可以听到蜂鸣器的发出的声音,按“+”或者“-”可以改变输出的频率,如图。 按 ESC 键中止该测试。 第- 146 -页 4.2.8 调节控制LCD背光 提示: LCD 背光设备文件:/dev/backlight-1wire 采用一线触摸的 LCD 驱动板,还内置了背光调节电路及实现,背光的控制参数也是通过一 线协议和主板进行传输的,它可以支持 127 级背光调节,当发送数字”0”给背光设备文件时,将 会关闭背光: 在命令行种输入:echo 0 > /dev/backlight 可以关闭 LCD 背光 当发送 1-127 给背光设备时,可以调节背光的亮度;其中 127 时为最亮,一般为 15 左右时, 可以看到一些暗暗的画面,为 1-15 时,基本漆黑一片。当大于 127 时,将被视为 127 处理,也 就是最亮。 在命令行种输入:echo 15> /dev/backlight 可以看到些许的背光。 4.2.9 测试I2C-EEPROM 在命令行种输入:i2c –w 可以向板子的 24C08 器件中写入数据(0x00-0xff) 第- 147 -页 在命令行中输入:i2c –r 可以从板子的 24C08 器件中读出输出 4.2.10 AD转换测试 在命令行输入 adc-test 命令,可以进行 ADC 转换测试,调节开发板板上的可调电阻 W1, 可以看到从串口终端输出的转换结果。 第- 148 -页 4.2.11 使用WiFi无线网卡 为了方便在嵌入式 Linux 平台下使用 WiFi 无线网卡,我们曾基于在 Mini2440 开发板开发 了一套命令行的 USB WiFi kits 工具程序,现在我们已经把它移植到 4412 平台上。 下面介绍一下该工具集的使用步骤: 该工具集包含了无线网卡驱动程序,和下面将要使用的三个实用命令行程序:  scan-wifi–用来扫描附近的无线网络  start-wifi–用来开启连接无线网络  stop-wifi–停止使用无线网络 这三个程序被安装在开发板的/usr/sbin 目录下 1. 扫描附近的无线网络 执行扫描命令,以搜索附近的无线网络: #scan-wifi 如图 第- 149 -页 可见已经搜索到 3 个无线网络,无线网名称前的“63%”表示信号的强弱,带有密码的安全 网络会被标以“Security”。 2. 连接使用无线网 使用”start-wifi”命令可以自动连接到指定的无线网接入点,根据不同的无线网络特性,会有 不同的参数,在命令行输入”start-wifi”可以看到如下提示信息: 其中, mode – 表示无线网加密类型,可以为”wpa”, “wpa2”, “wep”或”none”, “none”表示没有不需要 密码的无线网络。 第- 150 -页 ssid – 表示要连接的无线网络的名称,如上面的“FriendlyARM4”, “NETGEAR”等,这个一 般需要根据实际情况而定。 password –表示加密的无线网所需的密码,将会以明文方式显示出来。 下面主要针对无安全加密和带安全加密的网络分别示例说明。 2.1 连接无需密码的开放无线网 Step1 首先使用”scan-wifi”扫描查找附近的无线网络,结果如图,这里的“FriendlyARM-Test”是 专门为测试而设立的一个无需密码的开放无线网接入点。 Step2 输入”start-wifi none FriendlyARM-Test”命令,开始自动连接该无线网络,如图。 稍等片刻,可以看到目标板已经自动分配到了 IP 地址:192.168.3.100,使用 ping 命令测试 一下该网络连接,如图。 第- 151 -页 此时也可以在 PC 浏览器上输入开发板的 ip 地址:192.168.3.100,查看开发板中的 web 服 务器,如图。 2.2 连接需要密码的安全无线网 连接使用带密码的无线网络的步骤和以上类似,只不过连接的时候需要事先知道无线网的 加密类型和密码,如果你不知道加密类型,只能在”wpa”, “wpa2”, “wep”这三个中猜选了,具体 步骤如下: Step1 设置无线路由的安全模式,这里使用的无线路由器型号为:TL-WR740N,打开设置页面, 如图 第- 152 -页 可以看到,此处有三种加密模式:  WPA-PSK/WPA2-PSK  WPA/WPA2  WEP 我们选择的是第一种”WPA”,它是为个人而设的一种常见安全加密模式,在此设定密码 为”test1234”,点保存,并重启启动路由器。 说明:关于如何设置无线路由器,我们在此并不作详细的介绍说明,大部分这种设备都有 配套的使用说明书,并且每个厂家会有所不同,请根据实际情况自行设定。 Step2 使用”scan-wifi”扫描查找附近的无线网络,结果如图,这里的“FriendlyARM-Test”是专门 为测试而设立的一个无需密码的开放无线网接入点,可见,它是被加密的无线网络。 第- 153 -页 Step3 输入”start-wifi wpa FriendlyARM-Test test1234”命令,开始自动连接该无线网络,如图。 稍等片刻,可以看到目标板已经自动分配到了 IP 地址:192.168.3.100,使用 ping 命令测试 一下该网络连接,如图。 第- 154 -页 此时也可以在 PC 浏览器上输入开发板的 ip 地址:192.168.3.100,查看开发板中的 web 服 务器,如图。 3. 断开无线网 要断开发板上的 WiFi 连接,可以使用在命令行输入“stop-wifi”命令,在此就不再截图说明 了。 第- 155 -页 4.2.12 使用telnet上bbs telnet 是一个经常被使用的远程登录工具,使用 telnet 功能,可以从开发板登录到其他提供 了 telnet 服务器的主机,如果您接入开发板的网络可以上互联网,则可以通过 telnet 命令登录外 部的 bbs。 首先,确认开发板的 IP 地址是否为 192.168.1.230,并且是否和局域网内其他主机相通,如 图为成功的信息。 然后设置路由 IP:route add default gw 192.168.1.1 最后使用 telnet 命令登录您要登录的主机,在此登录的是华南木棉 bbs。 第- 156 -页 4.2.13 如何设置网络以访问互联网 首先要确保你的网络环境可以正常登陆互联网,请记下你的网络环境所使用的网关 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 通外面的网络: 第- 157 -页 要能 ping 通外部网络的实名网址,还需要设置好域名解析服务器,先查看一下您当前网络 所使用的 DNS 服务器 IP 地址(可以询问您的网络管理员): 第- 158 -页 比如,我这里 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.14 如何设置MAC地址 开发板中所使用的 MAC 地址是“软”性的,因此你可以通过 ifconfig 命令对它进行重置, 以适应于在同一个网络环境中使用多片开发板的情况,具体操作如下: 首先使用 ifconfig 查看一下当前的 mac 地址,运行: #ifconfig ;注意后面不要跟任何内容 第- 159 -页 可以看到当前的 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 第- 160 -页 4.2.15 如何使用Telnet登录开发板 开发板开机正常运行后,其实已经启动了一个 Telnet 服务,因此用户也可以通过网络远程 登录开发板。 在 Windows 的命令行窗口输入“telnet 192.168.1.230”,如图出现登录界面,输入“root”(不 需要密码)进入系统。 第- 161 -页 4.2.16 使用ftp传递文件 开发板开机正常运行后,其实已经启动了一个 Telnet 服务,因此用户也可 无论在 Linux 系统还是 windows 系统中,一般安装后都自带一个命令行的 ftp 命令程序,使 用 ftp 可以登录远程的主机,并传递文件,这需要主机提供 ftp 服务和相应的权限;本开发板不 仅带有 ftp 命令,还在开机时启动了 ftp 服务。为了方便测试,我们可以从 PC 机的命令行窗口 登录开发板,并向开发板传递文件。 注意:请确保您执行 ftp 所在的目录有需要上传的文件,这里是 test.mp3 说明:登录开发板的 ftp 帐号为:plg 密码为:plg 传送完毕,您可以在串口终端看到目标板的/home/plg 目录下多了一个 test.mp3 文件。 4.2.17 通过网页控制板上的LED 在 web server 测试页面中点“网络控制 LED 测试”项,会出现 LED 测试控制页面,如图 第- 162 -页 您可以使用网页中的各个测试项目进行测试,其中的“LED 测试”将会通过 CGI 程序来控 制板上的 LED 灯,其中包括 2 种方式的显示类型和三种不同的显示速度。 如果要停止 web 服务器,则在命令提示符下输入以下命令: #/etc/rc.d/init.d/httpd stop 要重新启动则输入: #/etc/rc.d/init.d/httpd start 4.2.18 设置并保存系统实时时钟 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.19 如何掉电保存数据到Flash 由于本系统采用了可读写文件系统 yaffs2(在嵌入式系统中,专门管理 Flash 存储器的一种文 第- 163 -页 件系统),因此可以很方便的动态保存数据,掉电后不会丢失。开机后在串口终端运行以下命令: #cp / shanghaitan.mp3 /home/plg 此时将在/home/fa 目录下复制一个同样的文件,然后关机,重新开启系统,可以查看到 /home/plg 目录下的文件依然存在。 4.2.20 设置开机自动运行程序 借助启动脚本可以设置各种程序开机后自动运行,也可以设置其他系统设置,这有点类似 于 Windows 系统中的 Autobat 自动批处理文件,启动脚本的位于板子的/etc/init.d/rcS。 4.2.21 如何使用命令进行屏幕截图 使用 snapshot 命令可以对当前的 LCD 显示进行截图,并保存为 png 格式的图片。 #snapshot pic.png 执行该命令将把当前 LCD 显示进行抓图,并保存为 pic.png 文件。 4.2.22 查看开发板内存信息 本开发板配备了 512M DDR RAM,一般我们使用“cat /proc/meminfo”命令查看系统内存 信息,注意,你看到的内存大小可能少于 512M,是由于在 210 平台有一部分内存被用于 2D/3D 加速和其它多媒体驱动,类拟于 PC 集成显卡上的显存。 4.3 安装并设置Fedora9 本小节从在虚拟机/PC 机上安装 Fedora 9.0 开始,详细介绍了如何建立 Linux 开发环境。 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.is o,不保证长期有效),也可以在其他地方获取,它们都是一样的,安装时请务必参考我们手册提 供的步骤,这是我们经过严格测试的,以免遗漏一些开发时所需要的组件。 Linux 的发行版本众多,我们无法为此一一编写文档解释安装方法,请谅解。 为什么选择 Fedora 9: 第- 164 -页 根据我们的测试,Fedora 9 经过比较简单的安装和设置,依然可以使用 root 用户登录(大多 数开发均需要此用户权限),Fedora 10 及其以后的版本则需要经过稍微复杂的设置才能使用 root, 这不利于不了解 Linux 的初学者,Fedora 8 及其以前的版本则相对老了一些。并且按照我们手册 提供的步骤安装 Fedora 9,可以比较完美配合我们提供的开发软件包,不再需要其他补丁之类的 繁琐设置(ubuntu 就需要经常这样更新设置),因此我们认为 Fedora 9 是最适合初学者的开发平台。 另外,Linux 下的 Qtopia2.2.0 由于版本太旧,较新的 Fedora 由于编译器更新可能已法无法 成功编译 Qtopia2.2.0。 4.3.1 图解安装Fedora 9.0 Step1:将的安装光盘放到光驱中,将 BIOS 改为从光盘启动, 启动后系统将会出现如下界面, 按回车继续。 Step2:然后进入下一步, 检查安装盘, 一般不需要检测, 所以选择了 Skip(跳过) 第- 165 -页 Step3:过一会儿就进入安装图形化画面, 点击 Next 即可. Step4:选择安装过程用什麽语言, 这里选择的是英文 第- 166 -页 Step5:选键盘, 我们一般选美式键盘即可 Step6:开始设置网络 第- 167 -页 点“Edit”按钮,不要设置为 DHCP, 我们一般使用静态的 IP, 对照下面进行填写,分别输 入 IP 和子网掩码 点“OK”返回,开始设置机器名和网关以及 DNS 等 第- 168 -页 Step7:设置时区,如果你不使用虚拟机安装,“System clock uses UTC”选项可以去掉,如 图 Step8:设置 root 用户密码,必须是 6 位数以上。 第- 169 -页 Step9:设置分区,一般选择默认即可,注意要备份好硬盘数据 点“Next”会出现警告信息,告诉你继续执行会格式化分区中的所有数据,一般我们在 Vmware 虚拟机中使用,因此可以选“Write changes to disk”,之后开始进行格式化操作。 第- 170 -页 这是格式化的进程图: Step11:选择安装类型,选择如图,点“Next”开始定制。 第- 171 -页 Step12:在 Servers 项中,选择如图 Step13:开始安装系统,此过程时间会比较长,请耐心等待。 第- 172 -页 Step14:安装完毕,如图 Step15:接上一步,按“Reboot“按钮重启系统,出现第一次使用的界面,如图。 第- 173 -页 Step16:一些授权信息,不必理会,继续下一步 Step17:创建用户,在此我们不需要创建任何新的用户,点“Forward”继续 第- 174 -页 这时会出现提示信息让你确认,点“Continue”继续下一步。 Step18:设置日期和时间,不必理会,继续下一步 第- 175 -页 Step19:列出了本机的一些硬件信息,采用缺省设置,点“Finish” 出现提示信息,如图选择,进行下一步 第- 176 -页 Step20:出现登录界面,我们要以 root 用户进行登录,因此先输入 root 再输入刚才设定的密码 第- 177 -页 登录后会出现一个提示,以后如果你以 root 用户登录,每次都会出现这个提示,每次均点 “Continue”即可。 这是登录后的界面,它和 Windows 或者 Ubuntu 是十分类似的。 第- 178 -页 4.3.2 添加新用户 为了方便开发,我们通常创建一个普通权限的用户,步骤如下。 Step1:如图打开用户和组管理器: Step2:出现用户管理窗口 第- 179 -页 Step3:点工具栏的“Add User”按钮,添加新用户,并设置密码: 点“OK”返回,可以看到已经增加了 plg 用户,同时/home 目录下也增加了 plg 用户目录, 如图: 第- 180 -页 点 Add User 按钮,出现添加新用户窗口,按提示操作就可以了。 4.3.3 访问Windows系统中的文件 无论你使用的是虚拟机还是真实的 Fedora9 系统,都可以佷方便的访问 Windows 中的共享 文件,前提是两个系统之间的网络是互通的。 提示:要在虚拟机中使用网络,最简单的方式是设置“Guest”为“Bridges”方式的网络连 接,如图: 第- 181 -页 访问 Windows 系统中共享文件的步骤如下: Step1:在 Windows 中设置共享文件夹“share_f9”(示例) Step2:在 Fedora9 系统中如图操作: 第- 182 -页 打开如图窗口: 在 Service type 列表中选择 Windows share,如图: 第- 183 -页 输入所要共享 Windows 主机的 IP 地址和共享文件夹的名字: 点“Connect”,会出现如下提示窗口: 第- 184 -页 不必理会,直接点“Connect”即可,就可以看到 Windows 共享文件中的内容了,在此你可 以像操作其他目录一样来使用它。 如果你想在命令行使用这个目录,可以这样操作: 说明:在控制台下,TAB 键是一个很好使用的小技巧。 第- 185 -页 要想断开共享目录,只要在桌面的共享文件夹上用右键如图操作就可以了: 4.3.4 建立交叉编译环境 在 Linux 平台下,要为开发板编译内核,图形界面 Qtopia/Qt4,bootloader,还有其他一些 应用程序,均需要交叉编译工具链,我们使用的是 arm-linux-gcc-4.5.1,它默认采用 armv6 指令 集,支持硬浮点运算,下面是安装它的详细步骤。 第- 186 -页 Step1:将光盘 Linux 目录中的 arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz 复制到 Fedora9 某个 目录下如 tmp/,然后进入到该目录,执行解压命令: #cd /tmp #tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz –C / 注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,在此 是改变目录的意思。 执行该命令,将把 arm-linux-gcc 安装到/opt/FriendlyARM/toolschain/4.5.1 目录。 Step2:把编译器路径加入系统环境变量,运行命令 #gedit /root/.bashrc 编 辑 /root/.bashrc 文 件 , 注 意 “ bashrc ” 前 面 有 一 个 “ . ”, 修 改 最 后 一 行 为 export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin,注意路径一定要写对,否则将不会有效。 如图,保存退出。 重新登录系统(不必重启机器,开始->logout 即可),使以上设置生效,在命令行输入 arm-linux-gcc –v,会出现如下信息,这说明交叉编译环境已经成功安装。 第- 187 -页 4.4 解压安装源代码及其他工具 本小节将解压安装开发学习过程所用到的全部源代码以及其他一些小工具,这包括: - Linux 内核源代码 - Qtopia-2.2.0 平台源代码(分为 x86 和 arm 平台两个版本) - arm-qt-extended-4.4.3 平台源代码(也就是 Qtopia4, 分为 x86 和 arm 两个版本) - QtE-4.7.0 平台源代码(arm 版本) - busybox-1.17 源代码 - Linux 编程示例源代码 - 目标文件系统目录 - 图形界面的 Linux logo 制作工具 logomaker 注意:所有的源代码和工具都是通过解压方式安装的,所有的源代码均使用统一的编译器 arm-linux-gcc-4.5.1 编译 下面是详细的解压安装过程,并有简要的介绍。 4.4.1 解压安装源代码 首先创建工作目录/opt/FriendlyARM/tiny4412/linux 在命令行执行 #mkdir –p /opt/FriendlyARM/tiny4412/linux 后面步骤的所有源代码都会解压安装到此目录中: (1)准备好 Linux 源代码包 第- 188 -页 在 Fedora9 系统中/tmp 目录中创建一个临时目录/tmp/linux #mkdir /tmp/linux 把光盘中 linux 目录中的所有文件都复制到/tmp/linux 目录中 说明:这样做是为了统一下面的操作步骤,其实你可以使用其他目录,也可以直接从光盘 解压安装。 (2)解压安装 Linux 内核源代码 在工作目录/opt/FriendlyARM/tiny4412/linux 中执行: #cd /opt/FriendlyARM/tiny4412/linux #tar xvzf /tmp/linux/linux-3.5-20131010.tar.gz 将创建生成 linux-3.5 目录,里面包含了完整的内核源代码 说明:20131010 是我们的发行更新日期标志,请以光盘中实际日期尾缀为准。 (3)解压安装目标文件系统 执行以下命令: #cd /opt/FriendlyARM/tiny4412/linux #tar xvzf /tmp/linux/rootfs_qtopia_qt4-20131010.tgz 将创建生成 rootfs_qtopia_qt4 目录 说明:20131010 是我们的发行更新日期标志,请以光盘中实际日期尾缀为准。 (4)解压安装嵌入式图形系统 qtopia 源代码 在工作目录/opt/FriendlyARM/tiny4412/linux 中执行: #cd /opt/FriendlyARM/tiny4412/linux #tar xvzf /tmp/linux/x86-qtopia-20100420.tar.gz #tar xvzf /tmp/linux/arm-qtopia-20101105.tar.gz 将创建 x86-qtopia 和 arm-qtopia 两个目录,并内含相应的全部源代码。 说明:x86-qtopia 和 arm-qtopia 后面或许会有日期尾缀,它是我们的发行或更新日期标志, 请以光盘中实际日期尾缀为准。源代码包中也包含了嵌入式浏览器 konquor 的源代码。 另外,为了方便用户学习开发使用,此源代码包相比 Qt 公司的原始版本已经打过补丁,并 做了诸多改进,它们都是源代码方式,我们不再一一赘述,感兴趣者可自行比较。 (5)解压安装嵌入式图形系统 qt-extended-4.4.3 源代码 在工作目录/opt/FriendlyARM/tiny4412/linux 中执行: #cd /opt/FriendlyARM/tiny4412/linux #tar xvzf /tmp/linux/x86-qt-extended-4.4.3-20101003.tgz #tar xvzf /tmp/linux/arm-qt-extended-4.4.3-20101105.tgz 将创建 x86-qt-extended-4.4.3 和 arm-qt-extended-4.4.3 两个目录,并内含相应的全部源代码。 说明:x86-qt-extended-4.4.3 和 arm-qt-extended-4.4.3 后面或许会有日期尾缀,它是我们的发 行或更新日期标志,请以光盘中实际日期尾缀为准。 另外,为了方便用户学习开发使用,此源代码包相比 Qt 公司的原始版本已经打过补丁,并 做了一些改进,它们都是源代码方式,我们不再一一赘述,感兴趣者可自行比较。 第- 189 -页 (6)解压安装 QtE-4.7.0 源代码 在工作目录/opt/FriendlyARM/tiny4412/linux 中执行: #cd /opt/FriendlyARM/tiny4412/linux #tar xvzf /tmp/linux/x86-qte-4.6.1-20100516.tar.gz #tar xvzf /tmp/linux/arm-qte-4.7.0-20101105.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/tiny4412/linux 中执行: #cd /opt/FriendlyARM/tiny4412/linux #tar xvzf /tmp/linux/busybox-1.17.2-20101120.tgz 将创建 busybox-1.17.2 目录,内含相应版本的全部源代码。 说明:为了方便用户编译使用,我们做了一个缺省的配置文件 fa.config。 (8)解压安装 Linux 示例程序 执行以下命令: #cd /opt/FriendlyARM/tiny4412/linux #tar xvzf /tmp/linux/examples-tiny4412-20131010.tgz 将创建 examples 目录,并包含初学 linux 编程代码示例。 说明:20131010 是我们的发行更新日期标志,请以光盘中实际日期尾缀为准。examples 目 录中的代码均为友善之臂自主开发,并全部以源代码方式提供,它们都是一些基于命令行的小 程序。 4.4.2 解压创建目标文件系统 执行以下命令: #cd /opt/FriendlyARM/tiny4412/linux #tar xvzf /tmp/linux/rootfs_qtopia_qt4-20131010.tgz 将创建 rootfs_qtopia_qt4 目录,该目录和目标板上使用的文件系统内容是完全一致的。 说明:20131010 是我们的发行更新日期标志,请以光盘中实际日期尾缀为准,该文件系统 包含了前面你所看到的 qtopia-2.2.0,Qtopia4 和 QtE-4.7.0 测试软件等,busybox,还有常用的命 令行工具等,和之前的相比,它具有如下特性: 第- 190 -页 - 自动识别所接的输出显示模块是否接了触摸屏,以判断在第一次开机使用时是否要进行校 正。如果没有连接,会自动进入系统,使用鼠标即可;否则会先校正触摸屏。 - 自动识别普通或者高速 SD 卡(最大可支持 32G)和优盘 - 自动检测 USB 鼠标或触摸屏 - 支持 USB 鼠标和触摸屏共存 4.4.3 解压安装LogoMaker LogoMaker 是友善之臂开发的一个 Linux Logo 简易制作工具,网上有很多资料介绍如何使 用命令行的工具把 bmp, jpg, png 等格式的图片转换为 Linux Logo 文件,在此我们设计了一个图 形化的版本,它是基于 Fedora9 开发。 执行以下命令: #tar xvzf /tmp/linux/logomaker.tgz –C / 注意:C 是大写的,C 后面有个空格,C 是改变解压安装目录的意思 说明:执行以上命令,LogoMaker 将会被安装到/usr/sbin 目录下,它只有一个文件,安装完 之后在命令行输入 logomaker 可出现如下界面,在后面的章节我们会介绍它的使用方法: 第- 191 -页 4.5 配置和编译内核 4.6.1 配置和编译内核 Linux 内核与 Android 内核使用的是同一份源码,但是配置不同,使用以下命令编译内核。 #cd /opt/FriendlyARM/tiny4412/android/linux-3.5 #cp tiny4412_linux_defconfig .config ;注意 config 前面有个”.” 你可以执行 make menuconfig 对配置进行修改,修改完成后,输出 make 进行编译: #make 最后会在 arch/arm/boot 目录下生成 zImage,将它替换掉 SD 卡 images/Linux/下的 zImage 烧 写到 tiny4412 即可。 4.6 制作目标板文件系统映象 从 Tiny4412 光盘中找到 tools 目录下的 linux_tools.tgz,将这个文件在 Ubuntu 根目录下解 压,如果你是从网上下载的 iso 文件,可以通过以下命令加载 iso,然后解压: # mkdir –p /mnt/iso # mount –o loop Tiny4412-20130707.iso /mnt/iso # cd / # tar xvzf /mnt/iso/tools/linux_tools.tgz #cd /opt/FriendlyARM/tiny4412/linux/ # make_ext4fs -s -l 314572800 -a root -L linux rootfs_qtopia_qt4.img rootfs_qtopia_qt4 将生成的 rootfs_qtopia_qt4.img 替换掉 SD 卡 images/Linux/下的 rootfs_qtopia_qt4.img 烧写 到 Tiny4412 即可。 第- 192 -页 4.7 嵌入式Linux应用程序示例 本节内容通过嵌入式 Linux 开发最简单的例子,介绍了如何编写和编译 Linux 应用程序,并 下载到开发板运行起来。 如果你已经执行了 5.5.1 章节的步骤,就可以在/opt/FriendlyARM/tiny4412/examples 目录 下找到以下示例的源代码,实际可能更多一些,下面仅选几个典型的以作指引。 嵌入式 Linux 资源丰富,我们不可能介绍到每一个细节,本文旨在提供一些嵌入式 Linux 经常用到的方法,为你打开奇妙世界的大门。 注意:以下示例程序所使用的编译器为 arm-linux-gcc-4.5.1-v6-vfp,如果你使用了其他版本 的交叉编译器,编译完有可能无法在开发板上运行。 要检查交叉编译器的版本类型,可在终端运行命令:arm-linux-gcc –v,如图 4.7.1 Hello,World! 可以在/tmp/目录创建 hello.c 文件,内容为: #include int main(void) { printf("hello, FriendlyARM!\n"); } Step1:编译 Hello,World 进入源代码目录,并执行 make: 第- 193 -页 #cd /tmp/ #arm-linux-gcc hello.c –o hello 最后将生成 hello 可执行文件,使用 file 命令可以检查你生成的 hello 可执行文件是否为 ARM 体系和格式版本,能在开发板上正常运行的可执行文件一般输出为: hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped Step2: 把 Hello,World 下载到开发板运行 将编译好的可执行文件下载到目标板目前主要 3 种方式: 第一种:通过 ftp 传送文件到开发板(推荐使用) 第二种:复制到介质(如优盘) 第三种:通过串口传送文件到开发板 下面分别进行介绍: (1) 使用 ftp 传送文件(推荐使用) 说明:使用 ftp 登录目标板,把编译好的程序上传;然后修改上传后目标板上的程序的可执 行属性,并执行。 首先,在 PC 端执行,如图所示 然后,在目标板一端执行,如图所示 第- 194 -页 (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 方可为下一次做 好自动挂载的准备。 第- 195 -页 (3)通过串口传送文件到开发板 通过 5.3.5 章节我们学会了如何通过串口传送文件到开发板,你也可以通过相同的方法传送 hello 可执行程序,具体步骤在此不再详细描述,记得传送完毕把文件的属性改为可执行才能正 常运行。 #chmod +x hello 说明:有些用户使用 USB 转串口线,因为有些转接器性能是不太好的,所以有时会出现“传 输超时”或者根本无法传输到开发板的现象,因此我们建议使用 ftp 传送到开发板。 4.7.2 LED测试程序 程序清单 #include #include #include #include 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) { 第- 196 -页 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); } /*通过系统调用 ioctl 和输入的参数控制 led*/ ioctl(fd, on, led_no); /*关闭设备句柄*/ close(fd); return 0; } 你可以按照上面的 hello 程序的步骤编译出 led 可执行文件,然后下载到开发板运行它。 4.7.3 测试按键 程序清单 #include #include #include #include #include #include #include #include #include #include int main(void) { int buttons_fd; 第- 197 -页 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 可执行文件,然后下载到开发板运行 它 第- 198 -页 4.7.4 PWM控制蜂鸣器编程示例 程序清单 #include #include #include #include #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 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) { 第- 199 -页 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; } } 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) { 第- 200 -页 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 '+': if( freq < 20000 ) freq += 10; break; case '-': if( freq > 11 ) freq -= 10 ; break; case ESC_KEY: case EOF: 第- 201 -页 stop_buzzer(); exit(0); default: break; } } } 你可以按照上面的 hello 程序的步骤手编译出 buttons 可执行文件,然后下载到开发板运行 它 4.7.5 I2C-EEPROM编程示例 注意:以下程序还需同目录下 24cXX.c 程序的支持 #include #include #include #include #include #include #include #include #include #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) 第- 202 -页 { 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); 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"); 第- 203 -页 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)"); 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.7.6 管道应用编程示例-网页控制LED 原理说明 第- 204 -页 开机后我们可以通过网页发送命令控制开发板上的 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 #include #include #include #include #include #include #include #include #include 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: 第- 205 -页 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; } } 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); } 第- 206 -页 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); 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; } 第- 207 -页 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; } 使用 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*) 第- 208 -页 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" echo /bin/cat led-result.template exit 0 4.8 编译Qtopia-2.2.0 因为配置编译 Qtopia-2.2.0 的过程比较复杂,为了便于初学者学习和使用方便,我们把配置 和编译的步骤制作成一个 build 脚本,只要执行该脚本即可编译整个 Qtopia 平台和应其自带的 各个小程序;通过”run”脚本则可以运行它们,x86 和 arm 版本的步骤基本相同,而脚本内容则 有稍微不同,下面是详细的步骤。 第- 209 -页 4.8.1 编译和运行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.is o,不保证长期有效),也可以在其他地方获取,它们都是一样的,安装时请务必参考我们手册提 供的步骤,这是我们经过严格测试的,以免遗漏一些开发时所需要的组件。 Linux 的发行版本众多,我们无法为此一一编写文档解释安装方法,请谅解。 进入工作目录,执行以下命令 #cd /opt/FriendlyARM/tiny4412/linux/x86-qtopia #./build-all (该过程比较长,需要运行大概 30 分钟左右) 说明:./build-all 将自动编译完整的 Qtopia 和嵌入式浏览器,你还可以先后执行./build 和./build-konq 脚本命令分别编译它们,如果你没有顺利执行,请参考上面的红色字体说明。 要运行你刚刚编译出的 Qtopia 系统十分简单,在刚刚编译完的命令终端下输入如下命令: #./run;注意,“/”前面有个“.”,这表示在当前目录执行 这时你可以看到如下界面 第- 210 -页 按照提示点击运行就可以看到 Qtopia 系统了,如下, 注意:我们并没有制作 x86 版本的中文系统。 4.8.2 编译和运行arm版本的Qtopia-2.2.0 请确认你所使用的编译器版本为 arm-linux-gcc-4.5.1,运行平台为 Fedora 9,进入工作目录, 执行以下命令 #cd /opt/FriendlyARM/tiny4412/linux/arm-qtopia #./build-all (该过程比较长,需要运行大概 30 分钟左右) #./mktarget (制作适用于根文件系统的目标板二进制映象文件包,将生成 target-qtopia-konq.tgz) 第- 211 -页 说明:./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 脚本中,网上也有很多关于移植的 文章,但本质的步骤都是脚本所记录的那些,你可以使用记事本工具打开自行查看一下,只不 过其中没有那些嘻哈打诨的辞藻罢了。 4.9 编译QtE-4.7.0 4.9.1 编译和运行arm版本的QtE-4.7.0 和 Qtopia-2.2.0 十分类似,我们也为 QtE-4.7.0 的编译制作了现成的脚本 build-all,进入源代 第- 212 -页 码目录执行: #cd /opt/FriendlyARM/tiny4412/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 目录中的所有内容重 启。 关闭 qtopia-2.2.0 之后,在命令行输入 qt4 命令,即可启动刚刚解压安装的 QtE-4.7.0 了,如 图: 第- 213 -页 4.10编译Qtopia4(Qt-Extended-4.4.3) 4.10.1 编译和运行x86 版本的Qt-Extended-4.4.3 和 Qtopia-2.2.0 十分类似,我们也为 Qt-Extended-4.4.3(以下简称 Qtopia4)的编译制作了现成 的脚本 build,进入源代码目录执行: #cd /opt/FriendlyARM/tiny4412/linux/x86-qt-extended-4.4.3 #./build 这个过程将十分漫长,根据机器配置不同,会有不同的编译时间,请耐心等待。 要运行你刚刚编译出的 Qtopia4 系统十分简单,在刚刚编译完的命令终端下输入如下命令: #./run;注意,“/”前面有个“.”,这表示在当前目录执行 这时你可以看到如下界面,依提示点进去可以看到功能表格,如果你有兴趣,可以自行点 击看看里面的功能,在此不再赘述。 4.10.2 编译和运行arm版本的Qt-Extended-4.4.3 和 Qtopia-2.2.0 十分类似,我们也为 Qt-Extended-4.4.3 的编译制作了现成的脚本 build,进入 源代码目录执行: #cd /opt/FriendlyARM/tiny4412/linux/arm-qt-extended-4.4.3 #./build 第- 214 -页 这个过程将十分漫长,根据机器配置不同,会有不同的编译时间,请耐心等待。 当顺利执行完毕,再运行 mktarget 脚本,将会从编译好的目标文件目录中,提取出必要的 Qt-Extended-4.4.3 库文件和可执行二进制示例,并打包为 target-qtopia4.tgz,把它在开发板的 根目录下解压,就可以使用了,如下命令 #tar xvzf target-qtopia4.tgz–C / 这样,就会在/opt 目录下创建生成 Qtopia4.4.3 目录,它里面包含了运行所需要的所有库文 件和可执行程序。 使用说明:因为目标板中预装的 Linux 已经包含了 QtE-4.7.0,测试之前,你可以先删除原 有的,它位于/opt/Qtopia4.4.3 目录,把该目录使用 rm 命令完全删除就可以了。 要运行 Qtopia4,建议先停止正在运行的 Qtopia-2.2.0,点“设置”中的“关机”可出现如下 界面,点“Terminate Server”即可关闭 Qtopia-2.2.0 系统。 也可以使用其他的方法,比如在启动脚本/etc/init.d/rcS 中注释掉 qtopia 启动项,再重新系统 系统;或者使用 killall 命令杀死相关的进程(比较多;甚至是直接删除/opt 目录中的所有内容重 启。 关闭 qtopia-2.2.0 之后,在命令行输入“qtopia4 &”(这里的“&”表示后台运行)命令,即可 启动刚刚解压安装的 Qtopia4 了,如图: 第- 215 -页 第五章 Linux应用程序开发指南 Linux应用层的开发与 6410 平台基本相同,因此可参考Mini6410 的开发文档《Mini6410 之Qt和Qtopia编 程开发指南》,到这里下载:http://www.arm9home.net/read.php?tid-9360.html。 第- 216 -页

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。