Orange Pi 3G-IoT-B
介绍
什么是 Orange Pi 3G-IoT
香橙派是一款开源的单板电脑,新一代的 ARM 开发板,它可以运行 Android4.4、Linux等操作系统。香橙派开发板(Orange Pi 3G-IOT)使用MTK系列MT6572 CPU。
Orange Pi 3G-IoT 的用途
我们可以用它搭建:
- 一台计算机
- 一个无线网络服务器
- 游戏机
- 音乐播放器
- 高清视频播放器
- 扬声器
- Android
当然还有其他更多的功能,因为Orange Pi 3G-IoT是开源的
Orange Pi 3G-IoT 是为谁设计的
Orange Pi 3G-IOT 不仅仅是一款消费品,同时也是给任何想用技术进行创作创新的人设计的。它是一款非常简单、有趣、实用的工具,你可以用它去打造你身边的世界。
Orange Pi 3G-IoT 的硬件特性
主控芯片 | MT6572 |
处理器 | 双核ARM® Cortex-A7,主频高达 1.2GHz |
图形处理器 | ARM Mali-400 |
内存+存储 | 版本A:256MB DDR2+512MB EMMC Flash 版本B:512MB DDR2+4GB EMMC Flash |
无线网络 | WIFI / BT / FM / GPS 四合一 |
射频频率
GSM WCDMA TD-CDMA CDMA2000
|
850/900/1800/1900 |
B1+B2+B5+B8 | |
/ | |
/ | |
显示屏 | FWVGA(FPC 转接到小板 zif) |
电容触摸 | 支持(FPC 转接到小板 共用屏 zif) |
摄像头 | MIPI 接口 |
SIM卡 | mini单SIM卡 |
TF卡 | 支持热插拔 |
音频
耳机 麦克风 |
用于音频输入/输出 |
用于音频输入 | |
USB | USB Host*1, Micro USB*1 |
LED 信号灯 | USB Host*1, Micro USB*1 |
按键 | 电源键(SW602) |
Low-level peripherals | 40pin 扩展口:GPIO 1.8V; 1 组SPI; 2 组 I2C; 2 组Uart; 16 个gpio |
电源 | Micro USB(5V 2A) 通过焊盘连接 |
系统 | Android 4.4 |
编程语言支持 | C、C++、Kotlin、Java、Shell、Pyhon 等 |
外观规格 | |
PCB 尺寸 | 52.4mm*68.8mm |
重量 | 24g |
Orange Pi™ 是深圳市迅龙软件有限公司的注册商标 |
256MB DDR2 + 512MB EMMC规格接口详情视图:
512MB DDR2 + 4GB EMMC规格接口详情视图:
GPIO 规格
PIN1 | VIO28 PMU | PIN21 | GPIO24 | |
PIN2 | DC5V | PIN22 | GPIO109 | |
PIN3 | SDA_1 | PIN23 | GPIO25 | |
PIN4 | DC5V | PIN24 | GPIO139 | |
PIN5 | SCL_1 | PIN25 | GND | |
PIN6 | GND | PIN26 | EINT0/GPIO30/PWM B | |
PIN7 | EINT4/GPIO26 | PIN27 | SDA_0 | |
PIN8 | UTXD2 | PIN28 | SCL_0 | |
PIN9 | GND | PIN29 | SPI_CS | |
PIN10 | URXD2 | PIN30 | GND | |
PIN11 | URXD1 | PIN31 | SPI_CK | |
PIN12 | EINT10/GPIO56 | PIN32 | EINT15/GPIO90 | |
PIN13 | UTXD1 | PIN33 | SPI_MO | |
PIN14 | GND | PIN34 | GND | |
PIN15 | EINT2/GPIO128/PW A | PIN35 | SPI_MI | |
PIN16 | EINT12/GPIO58 | PIN36 | GPIO145/PWMBL | |
PIN17 | VIO28 PMU | PIN37 | EINT3/GPIO27 | |
PIN18 | EINT14/GPIO89 | PIN38 | EINT5/GPIO144/PWM B | |
PIN19 | GPIO140 | PIN39 | GND | |
PIN20 | GND | PIN40 | GPIO141 |
快速入门
准备硬件与软件工具
硬件需求:
- Orange Pi 3G-IoT 开发板
- 一台编译用的主机,配置最好满足以下条件:
64 位 CPU
16GB 内存
40GB 以上的空闲磁盘空间
操作系统为 Ubuntu12.04 以上,最好为 Ubuntu14.04
更详细的内容可以参考 Google 文档 https://source.android.com/source/building
软件需求:
- Orange Pi 3G-IoT SDK
- Orange Pi 3G-IoT 固件
- Android 烧录工具
以上软件均可以通过 Mega、百度云盘 的方式获取,详情参见中英文官网:
http://www.orangepi.org/downloadresources/
http://www.orangepi.cn/downloadresourcescn/
开发板的供电方式
开发板的供电方式有两种:
- Micro USB(5V 2A)供电:插入 Micro USB 适配器后即可开机。
- 电池供电:常用 4.2V 电池,在背面有预留外接电池焊盘点 需要客户自己焊接, 接上电池之后按开机键即可启动。
拆包说明
收到产品后请将产品的天线从图 1 的位置放到图 2 的位置(或者放到板子外面的位置),不能贴在板子上面以免影响信号。
Android 编译环境搭建
获取 SDK 源码压缩包
为方便客户快速进行开发,OrangePi 有提供不同版本的 SDK 初始压缩包。下载压缩包,分别对应 OrangePi_3G-IoT_Android4.4.tar.gz00, OrangePi_3G-IoT_Android4.4.tar.gz01,
...OrangePi_3G-IoT_Android4.4.tar.gz00 总共8 个分卷压缩包。获取到分卷压缩包后,把所有的压缩包放在一个同一目录下,如:
创建目录
mkdir OrangePi_3G-IOT_Android4.4
拷贝分卷压缩包
cp -rf OrangePi_3G-IoT_Android4.4.tar.gz* OrangePi_3G-IOT_Android4.4/
合并压缩包
cat OrangePi_3G-IoT_Android4.4.tar.gz*>OrangePi_3G-IOT_Android4.4.tar.gz
解压
tar xzvf OrangePi_3G-IOT_Android4.4.tar.gz
搭建编译环境
可以参考 Google 官方文档: http://source.android.com/source/initializing.html
- 安装 JDK
Android4.4 系统编译依赖于 JAVA6。编译前需要安装 OpenJDK,gcc4.4 版本安装命令如下。
sudo apt-get install openjdk-6-jdk sudo apt-get install gcc-4.4
配置 JAVA 环境变量,比如安装路径为 /usr/lib/jvm/jdk1.6.0_31
可以在终端执行如下命令配置环境变量。
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_31
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
- 安装软件包
对于 Ubuntu12.04:
sudo apt-get update
sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev
libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev
libx11-dev lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev gcc-4.4
g++-4.4 g++-4.4-multilib g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc wine
对于 Ubuntu14.04:
sudo apt-get update
sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev
libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev
libx11-dev lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev g++-multilib g++-4.8-multilib mingw32 tofrodos python-markdown
libxml2-utils xsltproc libc6-dev-i386 lib32z1 lib32ncurses5 lib32bz2-1.0 lib32readline-gplv2-dev wine
至此,我们可以开始进行 SDK 源码的编译。
编译 SDK 源码
全部编译
为方便客户进行开发,Orange Pi 提供了一系列的编译脚本。
目录为 SDK/code/orangepi/scripts
$ cd code/orangepi/scripts
$ ls anr_LM.sh auto.sh clean.sh codegen.sh init_project.sh tar_img.sh
auto.sh 为自动编译脚本
clean.sh 为自动清除编译结果脚本
tar_img.sh 为打包脚本
在 code/orangepi/scripts 目录下,我们执行自动编译脚本:
板子是:32g4g $ ./auto.sh IoT03_mt6572_emmc_b1258_32g4g_ry_smt_v1.1 v00 eng
板子是:4g2g $ ./auto.sh IoT03L_mt6572_lca_b1258_wg_4g2g_ry_smt_v1.1 v00 eng
传入的三个参数含义如下:
- $1 project_info [eg: IoT03L_mt6572_lca_b1258_wg_4g2g_ry_smt_v1.1]
- $2 version_info [eg: v00 v01 ...]
- $3 compile_mode [eng:user userdebug eng]
auto.sh带的三个参数含义,在脚本开头部分有详细说明。
模块编译
最常用的修改了kernel部分的文件,可以采用如下命令:
./mk -o=TARGET_BUILD_VARIANT=[user/userdebug/eng] projName n K && ./mk -o=TARGET_BUILD_VARIANT=[user/userdebug/eng] projName r bootimage
比如:工程是 hexing72_cwet_kk
./mk -o=TARGET_BUILD_VARIANT=eng | hexing72_cwet_kk | n k && |
./mk -o=TARGET_BUILD_VARIANT=eng | hexing72_cwet_kk | r bootimage |
其中驱动部分修改编译,详细可以参考文档:MT6592_Driver_All_In_One_Part.pdf
Android 固件烧录
Orange Pi 3G-IoT 开发板 烧录相关按键与接口如下:
文件:3G-iot-6.png.png
编译完成后固件将汇总在code/IoT03_b1258_32g4g_ry_smt_v1.1或code/IoT03L_b1258_wg_4g2g_ry_smt_v1.1 目录中,
并打包形如 IoT03L_b1258_wg_4g2g_ry_smt_v1.1_20180403182516_v00_eng.zip 名字的压缩包。
IoT03L_b1258_wg_4g2g_ry_smt_v1.1
├── images
│ ├── boot.img
│ ├── lk.bin
│ ├── logo.bin
│ ├── MT6572_Android_scatter.txt
│ ├── preloader_hexing72_cwet_lca.bin
│ ├── ramdisk.img
│ ├── ramdisk-recovery.img
│ ├── recovery.img
│ ├── secro.img
│ ├── system.img
│ └── userdata.img
└── modem
├── APDB_MT6572_S01_MAIN2.1_W10.24
├── _APDB_MT6572_S01_MAIN2.1_W10.24.check
├── APDB_MT6572_S01_MAIN2.1_W10.24_ENUM
├── BPLGUInfoCustomAppSrcP_MT6572_S00_MOLY_WR8_W1315_MD_WG_MP_V47_1_wg_n
├── catcher_filter_1_wg_n.bin
├── DbgInfo_WR8.W1315.MD.WG.MP_HEXING72_CWET_KK_HSPA_MOLY_WR8_W1315_MD_WG_MP
_V47_2017_10_26_22_35_1_wg_n
├── modem_1_wg_n.img
└── modem_1_wg_n.mak
此后,请参照执行完 《OrangePi 3G-IoT Android 固件烧录指南》完成固件的烧录。
我们提供已经编译且打包好的镜像分区文件,请根据自身的需求自行下载:
http://www.orangepi.cn
通过如下命令进行Android 4.4 镜像解压
$ rar x IoT03L_b1258_wg_4g2g_ry_smt_v1.1.rar
即可得到上文中固件清单中的文件。或者也可以参照Android 环境搭建及固件编译部分自行编译。
主机操作系统支持:
- Windows 10
- Windows 7 (32/64 位)
- Windows 8 (32/64 位)
- Ubuntu10.04 / 12.04 / 14.04 (32/64 位)
烧录工具介绍
烧录工具为 Smart Phone Flash Tool请前往 OrangePi官方网站中 3G-IoT 版块下载。
本工具有 Windows 和 Linux 版。请根据自己的主机环境选取合适的版本。界面如下:
Windows 和 Linux 版的使用方法完全一样。本手册将以 Linux 版为例进行烧录说明。
镜像烧录方法
连不上电脑,则需要: $sudo apt-get remove modemmanager |
- 解压并打开烧录工具
$ unzip SP_Flash_Tool_v5.1644_Linux.zip $ cd SP_Flash_Tool_v5.1644_Linux |
如果你是第一次打开软件,可能会出现 警告显示 scatter file 文件未找到 :
这是正常的。后面我们将手动指定 Scatter File 的路径。点击 OK 后我们进入软件。
- 进入烧录模式
a.首先切换到 Download 标签页,显示如下:
b.我们点击 Scatter-loading File 一栏的最右侧的 choose并且选择 Scatter File 的路径,如下图
c.双击选择后,在下面的分区信息显示部分将会自动填充各个分区文件所在的路径,以及他们将要被烧录的绝对起始地址,如下图:
d.在分区信息显示部分的左上角有一个下拉菜单其中有三个选项
Format All + Download //擦除机器内的全部分区信息,并且重新下载选中分区
Firmware Upgrade //更新选中分区中有差异的部分
Download Only //无论是否有差异都重新下载
注意,一般情况下固件更新只需要选择 Firmware Upgrade,切勿选择 Format All +Download。
因为我们的每台机器在出厂的时候都有针对于进行各项参数的校准,在 Format All后会丢失校准信息。
如果不慎出现此情况请联系售后并根据指导通过机器码获取校准参数,并按照《4G-IOT 校准参数导入导出工具和说明》重新烧录校准参数。
e.戴上跳线帽,具体如下图所示:
f.接下来使用 USB 下载线,连接主机的 USB 与机器的 MircoUSB 接口。右上角红灯亮点击 Download 按钮进行下载
g.下载完成后界面如下
h.拔掉USB线。插上 Mirco USB 电源。。
等待5秒将会显示关机充电界面。
长按Power按键5秒后松开,会开机进入系统。
当更新的分区比较多时,第一次开机也会时间稍长(全分区更新的情况开机需要8min),请耐心等待。
Window 系统需要下载 SP_Flash_Tool_v5.1644_Win.zip,然后解压安装,就可以烧录固件了。操作方法和 Linux 的一样。
linux 编译环境搭建
获取linux 源码
- OrangePi 源码下载器
$ sudo apt-get install git
$ git clone https://github.com/orangepi-xunlong/OrangePi_Build.git
$ cd OrangePi_Build
$ ls
Build_OrangePi.sh lib README.md
- 运行下载器
$ ./Build_OrangePi.sh
输入 root 密码,然后回车
选择 0 Build system with kernel/uboot/rootfs,进入开发板型号选择界面。
选择 22 orangepi 3G-iot,回车后将会开始下载 Orange Pi 3G-iot 的 Linux 源码
下载的源码会存放在 OrangePi_Build 的同级目录下。
OrangePi 3G-IoT 的 Linux 源码目录结构如下所示
├── bootloader
├── build.sh -> scripts/build.sh 编译启动脚本
├── external
├── kernel
├── output
├── scripts
└── toolchain
6 directories, 1 file
编译linux 源码
- 执行编译启动脚本
$ cd OrangePi3G-iot $ ./build.sh
根据板子型号选择并回车
输入 root 密码并回车,然后选择需要执行的功能
其中各选项的功能如下:
- 0 Build Release Image 编译 ubuntu 和 debian 发行版
- 1 Build Rootfs 编译 Rootfs
- 2 Build Uboot 编译 preloader 和 lk
- 3 Build Linux 编译内核源码
以 A 板为例,选择 0 Build Release Image,会生成以下完整的固件包
output/images/
├── OrangePi_3g-iot-A_ubuntu_xenial_server_linux3.4.67_v1.1
│ ├── boot.img
│ ├── boot_nand.img
│ ├── boot_sd.img
│ ├── lk.bin
│ ├── logo.bin
│ ├── MT6572_Android_scatter.txt
│ ├── preloader_hexing72_cwet_lca.bin
│ ├── rootfs.img
└── OrangePi_3g-iot-A_ubuntu_xenial_server_linux3.4.67_v1.1.tar.gz
Linux 系统的烧录
目前 Linux 系统不支持 modem、LCD 屏。
只能通过串口登录系统,连接 wifi 后,可通过 ssh 登录。
前面的《安卓固件烧录》已经介绍了如何使用烧录工具了,这里不再赘述,直接打开烧录工具。
a.我们点击Scatter-loading File一栏的最右侧的choose并且选择Scatter File的路径,如下图
b.先断开板子与 PC 的连接,点击 Download 按钮
c.接下来使用 USB 下载线,连接主机的 USB 与机器的 MircoUSB 接口。烧录完成
d.启动系统。
将板子连接 5V 3A 的电源适配器。连接串口可以看到系统启动。
如果板载空间不够,可以将 rootfs 烧录到 TF 卡上。步骤如下。
e.烧录支持挂载TF卡rootfs的lk
点击下图框中内容
弹出窗口选择 lk_sd.bin。
点击 download,下载完成
f.烧录 rootfs 到 TF 卡中
准备一张 8G 以上,class10 的 TF 卡。格式化后。按照以下方法烧录 roofs.img
pv rootfs.img | sudo dd of=/dev/sdb bs=1M
sdb 是 TF 卡对应的设备文件
如果是在 windows 系统,也可以用 Win32DiskImager 软件烧录。
g.启动系统
将 tf 卡插入板子,上电即可启动。
串口调试工具
首先需要准备一根 USB 转 TTL 串口线,需要支持 921600 波特率。3G-iot 的调试串口为串口 1,已引出到 40pin,波特率为 921600 。按下图接好串口线,不同颜色的线对应的功能如下:
- 黑色——GND
- 绿色——RX
- 白色——TX
基于Windows 平台的使用
在使用 OrangePi 做项目开发过程中,为了获得更多的调试信息,OrangePi 默认支持串口信息调试。对于开发者而言,只需准备上面提到的材料,即可简单的获得串口调试信息。
不同的上位机使用的串口调试工具大同小异,基本可以参考下文的方法进行部署。使用 Windows 平台进行串口调试的工具很多,通常使用的工具是putty。本节以 putty 作为例子进行部署讲解。
- 安装 USB 驱动
下载最新版的驱动 PL2303_Prolific_DriverInstaller_v130.zip,下载解压
以管理员身份选择应用程序安装
等待安装完成
- 下载安装 Putty
Putty 可从下面的地址下载,请选择适合自己开发环境的版本。
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
直接双击下载的 putty.exe 即可打开 putty,软件界面如下图所示。
- 设备信息的获取
在 Windows7 中,我们可以通过设备管理器查看串口连接是否正常以及串口的设备号。如果设备没有正常识别,请检查驱动是否安装成功。
如果驱动安装有问题, 可以尝试使用 360 驱动大师扫描安装驱动。
- Putty配置
串行口设置成相应的端口号(COM4),关闭流控,速度设置成 921600
- 启动调试串口输出
OrangePi上电开机,putty将会自动打印串口log信息
基于 Linux 平台的使用
在 Linux 平台使用 putty 和 Windows 平台区别不太,下面主要说明有差异地方的操作步骤。所有操作都是基于 Ubuntu 14.04 系统。
- 安装并启动 Putty
$ sudo apt-get install putty
$ sudo putty
- 配置 Putty
串口号可以通过 ls /dev/ttyUSB* 查看波特率需要设置为 921600 并且关闭流控
其他设置
连接wifi 上网
配置无线,首先要知道 ssid 和 psk(账号,密码),输入对应的 wlan*,ssid,psk
$ sudo vi /etc/network/interfaces (添加如下内容)
auto wlan0
iface wlan0 inet dhcp wpa-ssid xxxx
wpa-psk xxxx
之后执行/etc/init.d/networking restart,无线即可连接上
GPIO 操作
MTK 用 ADB 修改和显示 GPIO 状态
获取 GPIO 的状态, cat /sys/devices/virtual/misc/mtgpio/pin
在 adb 下面直接执行 cat /sys/devices/virtual/misc/mtgpio/pin 命令则显示: pin: [mode] [pull_sel] [din] [dout] [pull en] [dir] [ies] [smt]
0:11101010
1:01101010
、、、、、、
22:1-100-10-1-1
、、、、、、、
42:00000110
每行分别对应:
IO 编号:模式,输入上拉选择,输入值,输出值,输入上拉使能,方向 direction, 输入翻转
修改 GPIO 的状态:
40pin GPIO 口,可通过原理图或手册获取,如 40pin 的第 37 个 pin 脚是 GPIO123,
echo -wdout123 1 > pin 即设置该 GPIO 输出高电平
echo -wdout123 0> pin 即设置该 GPIO 输出低电平
版本历史
版本 | 日期 | 作者 | 摘要 | 发布 | 备忘录 |
---|---|---|---|---|---|
1.1 | 2018-05-25 | 潘明敏 | 创建文档 | 2018-6-14 | |
1.2 | 2018-10-18 | 潘明敏 | GPIO 调试 | 2018-10-19 | |
1.4 | 2019-04-15 | Csy | Linux 源码编译及串口调试 | ||
1.5 | 2020-3-18 | Csy | Linux 固件烧录 |