“Orange Pi 4G-IoT”的版本间的差异

来自Wiki-Orange Pi
跳转至: 导航搜索
基于Windows 平台的使用
基于 Linux 平台的使用
第731行: 第731行:
  
 
=== 基于 Linux 平台的使用 ===
 
=== 基于 Linux 平台的使用 ===
 +
在 Linux 平台使用 putty 和 Windows 平台区别不太,下面主要说明有差异地方的操作步骤。所有操作都是基于 Ubuntu 14.04 系统。<br><br>
 +
* <big>'''安装并启动 Putty'''</big><br>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|$ sudo apt-get install putty<br>$ sudo putty
 +
|}
 +
* <big>'''配置 Putty'''</big><br>
 +
串口号可以通过 ls '''/dev/ttyUSB*''' 查看波特率需要设置为 921600 并且关闭流控<br><br>
 +
[[Image:4G-Iot-51.png]]<br><br>
 +
 
== GPIO 调试 ==
 
== GPIO 调试 ==
 
GPIO 调试有两种方法:<br><br>
 
GPIO 调试有两种方法:<br><br>

2022年6月22日 (三) 20:03的版本

介绍

什么 Orange Pi 4G-IoT

香橙派是一款开源的单板电脑,新一代的 ARM 开发板,它可以运行 Android6.0、Lunix等操作系统。香橙派开发板(Orange Pi 4G-IoT)使用MTK系列MT6737 CPU, 同时拥有 1GB DDR3 内存。

Orange Pi 4G-IoT 的用途

我们可以用它搭建:

  • 一台计算机
  • 一个无线网络服务器
  • 游戏机
  • 音乐播放器
  • 高清视频播放器
  • 扬声器
  • Android

当然还有其他更多的功能,因为Orange Pi是开源的

Orange Pi 4G-IoT 是为谁设计的

Orange Pi 4G-IOT 不仅仅是一款消费品,同时也是给任何想用技术进行创作创新的人设计的。它是一款非常简单、有趣、实用的工具,你可以用它去打造你身边的世界。

Orange Pi 4G-IoT 的硬件特性


OrangePi 4G-IoT 规格
基带部分
主控芯片 MT6737
处理器 四核 ARM® Cortex-A53,主频高达1.25GHz
图形处理器 ARM Mali-T720 MP1
内存 1GB DDR3
存储器 8GB EMMC Flash
网络部分
无线网络 WIFI / BT / FM / GPS 四合一
射频频率

GSM

WCDMA

TD-CDMA

CDMA2000

FDD-LTE

TDD-LTE

900/1800 (850/1900 可选)
B1/B8 (B2/B4/B5 可选)
/
/
B1/B3/B7/B20 (B2/B4/B17 可选)
B38/40/41B
显示部分
显示屏 HD
电容触摸 支持
相机部分
摄像头 13M (25pin ZIF 连接器)
传感器
加速传感器 支持
红外遥控 支持 (已适配 iDroid 遥控器)
指纹识别 支持
外部接口和按键
SIM卡 mini单SIM卡
TF卡 支持热插拔
音频

耳机

麦克风

用于音频输入/输出
用于音频输入
USB

USB Host × 3

Micro USB × 1

支持 OTG
仅用于烧录固件
LED 信号灯

电源指示灯

开机指示灯

红色 用于指示电源状态
绿色 用于指示开机状态
按键 电源键
HDMI 支持
预留接口

40pin 拓展口

1.8V, SPI × 2 , I2C × 3, UART × 2
电源

DC

Battery

5V 2A
通过焊盘连接
系统/软件
系统 Android 6.0/Android8.1
编程语言支持 C、C++、Kotlin、Java、Shell、Python等
外观规格
PCB 尺寸 55mm*85mm
重量 43g
Orange Pi™ 是深圳市迅龙软件有限公司的注册商标


40pin GPIO 定义


OrangePi(4G-IOT)
P01 VIO28_PMU
P02 DC5V
P03 SDA1 GPIO49
P04 DC5V
P05 SCL1 GPIO50
P06 GND
P07 EINT87 GPIO87
P08 UTXD2
P09 GND
P10 URXD2 GPIO57
P11 URXD1
P12 EINT8 EINT8
P13 UTXD1
P14 GND
P15 UCTS1
P16 EINT9 EINT9
P17 VIO28_PMU
P18 EINT11 EINT11
P19 SPI2_MI EINT3
P20 GND
P21 SPI2_MO EINT4
P22 URTS1
P23 SPI2_CK EINT6
P24 SPI2_CS EINT5
P25 GND
P26 EINT12
P27 SDA2 GPIO51
P28 SCL2 GPIO52
P29 SPI_CS GPIO65
P30 GND
P31 SPI_CK GPIO66
P32 URTS2 GPIO60
P33 SPI_MO PA9
P34 GND
P35 SPI_MI GPIO67
P36 UCTS2 GPIO59
P37 EINT_123 GPIO123
P38 SCL3 GPIO54
P39 GND
P40 SDA3 GPIO53



接口详情视图:

4G-Iot-1.png
4G-Iot-2.png

快速入门

准备硬件与软件工具

硬件需求:

  • Orange Pi 4G-IoT 开发板
  • 一台编译用的主机,配置最好满足以下条件:
 64 位 CPU
16GB 内存
40GB 以上的空闲磁盘空间
操作系统为 Ubuntu12.04 以上,最好为 Ubuntu14.04
更详细的内容可以参考 Google 文档 https://source.android.com/source/building

软件需求:

  • Orange Pi 4G-IoT SDK
  • Orange Pi 4G-IoT 固件
  • Android 烧录工具

以上软件均可以通过 Mega、百度云盘 的方式获取,详情参见中英文官网:
http://www.orangepi.org/downloadresources/
http://www.orangepi.cn/downloadresourcescn/

开发板的供电方式

开发板的供电方式有两种:

  • DC (5V 2A)供电:插入 DC 适配器后即可开机。
  • 电池供电:常用 3.7V 电池,在背面有预留外接电池焊盘点 需要客户自己焊接 接上电池之后按开机键即可启动。

拆包说明

收到产品后请将产品的天线从图 1 的位置放到图 2 的位置(或者放到板子外面的位置),不能贴在板子上面以免影响信号。

4G-Iot-3.png

Android 编译环境搭建

获取 SDK 源码压缩包

为方便客户快速进行开发,OrangePi 有提供不同版本的 SDK 初始压缩包。

  • Android6.0

下载压缩包,分别对应 OrangePi_4G-IoT_Android6.0_V1.0.tar.gz.00, OrangePi_4G-IoT_Android6.0_V1.0.tar.gz.01, ...
OrangePi_4G-IoT_Android6.0_V1.0.tar. gz.14 总共 15 个分卷压缩包。获取到分卷压缩包后,把所有的压缩包放在一个同一目录下,如:

创建目录

mkdir OrangePi_4G-IOT_Android6.0
拷贝分卷压缩包
cp -rf OrangePi_4G-IoT_Android6.0_V1.0.tar.gz.*
OrangePi_4G-IOT_Android6.0/
合并压缩包
cat OrangePi_4G-IoT_Android6.0_V1.0.tar.gz.* >
OrangePi_4G-IOT_Android6.0.tar.gz
解压
tar xzvf OrangePi_4G-IOT_Android6.0.tar.gz

  • Android8.1

下载压缩包,分别对应x00, x01, x02, x03 ...x10 总共 11 个分卷压缩包。获取到分卷压缩包后,把所有的压缩包放在一个同一目录下,如:

创建目录

mkdir OrangePi_4G-IOT_Android8.1
拷贝分卷压缩包 cp -rf x00 x01 x02 ... x10 合并压缩包
cat x*>OrangePi_4G-IOT_Android8.1.tar.gz
解压
tar xzvf OrangePi_4G-IOT_Android8.tar.gz

搭建编译环境

可以参考 Google 官方文档: http://source.android.com/source/initializing.html

  • 安装 JDK

Android6.0
Android6.0 系统编译依赖于 JAVA7。编译前需要安装 OpenJDK。安装命令如下。

sudo apt-get install openjdk-7-jdk

配置 JAVA 环境变量,比如安装路径为 /usr/lib/jvm/java-7-openjdk-amd64
可以在终端执行如下命令配置环境变量。

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

Android8.1
Android8.1 系统编译依赖于 JAVA8。编译前需要安装 OpenJDK。安装命令如下。

sudo apt-get install java-8-openjdk-amd64

配置 JAVA 环境变量,比如安装路径为 /usr/lib/jvm/java-8-openjdk-amd64 可以在终端执行如下命令配置环境变量。

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

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 提供了一系列的编译脚本。

  • Android6.0

目录为 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 为自动清除编译结果脚本
在 code/orangepi/scripts 目录下,我们执行自动编译脚本:

$ ./auto.sh IoT_bd6737m_35g_b_m0_op_smt_hd720_pcb_v2 v00 eng

传入的三个参数含义如下:

  1. $1 project_info [eg: IoT_bd6737m_35g_b_m0_op_smt_hd720_pcb_v2]
  2. $2 version_info [eg: v00 v01 ...]
  3. $3 compile_mode [eng:user userdebug eng]
  • Android8.1

目录为 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 为自动清除编译结果脚本
在 code/orangepi/scripts 目录下,我们执行自动编译脚本:

$ ./auto.sh IoT_k37mv1_bsp_ry_smt_hd720_pcb_v2 v00 eng

传入的三个参数含义如下:

  1. $1 project_info [eg: IoT_k37mv1_bsp_ry_smt_hd720_pcb_v2]
  2. $2 version_info [eg: v00 v01 ...]
  3. $3 compile_mode [eng:user userdebug eng]

执行命令编译
source build/envsetup.sh
luncher >full_k37mv1_bsp-eng
make -j4
模块编译 如:单编译launcer
mm packages/apps/Launcher3/ 或者进入到packages/apps/Launcher3/下,执行mm。
注意:有些模块由于依赖包的关系,需要mma

生成固件


  • Android6.0

编译完成后固件将汇总在 code/IoT_op_smt_hd720_pcb_v2 目录中,并打包形如 IoT_op_smt_hd720_pcb_v2_v00_eng_20180126140300.tar.gz 名字的压缩包。

$ tree IoT_op_smt_hd720_pcb_v2 IoT_op_smt_hd720_pcb_v2
├── images
│ ├── boot.img
│ ├── cache.img
│ ├── lk.bin
│ ├── logo.bin
│ ├── MT6737M_Android_scatter.txt
│ ├── preloader_bd6737m_35g_b_m0.bin
│ ├── recovery.img
│ ├── secro.img
│ ├── system.img
│ ├── trustzone.bin
│ └── userdata.img
└── modem
├── APDB_MT6735_S01_alps-mp-m0.mp1_W17.21
├── _APDB_MT6735_S01_alps-mp-m0.mp1_W17.21.check
└── APDB_MT6735_S01_alps-mp-m0.mp1_W17.21_ENUM


除此之外,开发者也可通过 Linux_Pack_Firmware 对以上固件进行打包,生成统一固件 update.img。

  • Android8.1

编译完成后固件将汇总在 code/IoT_ry_smt_hd720_pcb_v2 目录中,并打包形如 IoT_ry_smt_hd720_pcb_v2_v09_eng_20180504163653.tar.gz 名字的压缩包。

$ tree IoT_op_smt_hd720_pcb_v2 IoT_op_smt_hd720_pcb_v2
├── images
│ ├── boot.img
│ ├── cache.img
│ ├── lk.bin
│ ├── logo.bin
│ ├── MT6737M_Android_scatter.txt
│ ├── preloader_k37mv1_bsp.bin
│ ├── recovery.img
│ ├── secro.img
│ ├── system.img
│ ├── trustzone.bin
│ └── userdata.img
└── modem
├── APDB_MT6735_S01_alps-mp-m0.mp1_W18.04
├── _APDB_MT6735_S01_alps-mp-m0.mp1_W18.04.check
└── APDB_MT6735_S01_alps-mp-m0.mp1_W18.04_ENUM


Android 固件烧录

Orange Pi 4G-IoT 开发板 烧录相关按键与接口如下:

4G-Iot-4.png

编译生成的固件清单如下:

IoT_op_smt_hd720_pcb_v2
├── images
│ ├── boot.img
│ ├── cache.img
│ ├── lk.bin
│ ├── logo.bin
│ ├── MT6737M_Android_scatter.txt
│ ├── preloader_bd6737m_35g_b_m0.bin
│ ├── recovery.img
│ ├── secro.img
│ ├── system.img
│ ├── trustzone.bin
│ └── userdata.img
└── modem
├── APDB_MT6735_S01_alps-mp-m0.mp1_W17.21
├── _APDB_MT6735_S01_alps-mp-m0.mp1_W17.21.check
└── APDB_MT6735_S01_alps-mp-m0.mp1_W17.21_ENUM


我们提供已经编译且打包好的镜像分区文件,请根据自身的需求自行下载:
http://www.orangepi.org/downloadresources/
通过如下命令进行Android6.0 镜像解压

$ tar zxvf IoT_op_smt_hd720_pcb_v2_v00_eng_20180126140300.tar.gz

即可得到上文中固件清单中的文件。或者也可以参照Android 环境搭建及固件编译部分自行编译。

主机操作系统支持:

  • Windows 10
  • Windows 7 (32/64 位)
  • Windows 8 (32/64 位)
  • Ubuntu10.04 / 12.04 / 14.04 (32/64 位)

烧录工具介绍

烧录工具为 Smart Phone Flash Tool请前往 OrangePi官方网站中 4G-IoT 版块下载。

本工具有 Windows 和 Linux 版。请根据自己的主机环境选取合适的版本。界面如下:

4G-Iot-5.png

Windows 和 Linux 版的使用方法完全一样。本手册将以 Linux 版为例进行烧录说明。

镜像烧录方法

常见问题

linux 编译环境搭建

获取linux 源码

编译linux 源码

Linux 系统的烧录

串口调试工具介绍

基于Windows 平台的使用

在使用 OrangePi 做项目开发过程中,为了获得更多的调试信息,OrangePi 默认支持串口信息调试。对于开发者而言,只需准备上面提到的材料,即可简单的获得串口调试信息。
不同的上位机使用的串口调试工具大同小异,基本可以参考下文的方法进行部署。使用 Windows 平台进行串口调试的工具很多,通常使用的工具是putty。
本节以 putty 作为例子进行部署讲解。

  • 安装 USB 驱动

下载最新版的驱动 PL2303_Prolific_DriverInstaller_v130.zip,下载解压

4G-Iot-45.png

以管理员身份选择应用程序安装

4G-Iot-46.png

等待安装完成

4G-Iot-47.png

  • 下载安装 Putty

Putty 可从下面的地址下载,请选择适合自己开发环境的版本。

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

直接双击下载的 putty.exe 即可打开 putty,软件界面如下图所示。
4G-Iot-48.png

  • 设备信息的获取

在 Windows7 中,我们可以通过设备管理器查看串口连接是否正常以及串口的设备号。如果设备没有正常识别,请检查驱动是否安装成功。
如果驱动安装有问题, 可以尝试使用 360 驱动大师扫描安装驱动。
4G-Iot-49.png

  • Putty配置

串行口设置成相应的端口号(COM4),关闭流控,速度设置成 921600

4G-Iot-50.png

  • 启动调试串口输出

OrangePi上电开机,putty将会自动打印串口log信息

基于 Linux 平台的使用

在 Linux 平台使用 putty 和 Windows 平台区别不太,下面主要说明有差异地方的操作步骤。所有操作都是基于 Ubuntu 14.04 系统。

  • 安装并启动 Putty
$ sudo apt-get install putty
$ sudo putty
  • 配置 Putty

串口号可以通过 ls /dev/ttyUSB* 查看波特率需要设置为 921600 并且关闭流控

4G-Iot-51.png

GPIO 调试

GPIO 调试有两种方法:

1.Linux 下面有一个通用的 GPIO 操作接口,那就是我要介绍的“/sys/class/gpio”方式。
GPIO 的配置文件在/sys/class/gpio 目录下,控制程序可以分为四个步骤:

①、配置 GPIO:
在/sys/class/gpio 目录下可以看到文件 export,调用该文件以实现配置。该文件对所有 GPIO 编号,40pin GPIO 口,可通过原理图或手册获取。
如 40pin 的第 37 个 pin 脚是 GPIO123 在终端输入: # echo 123 > /sys/class/gpio/export , 在此回到目录/sys/class/gpio 下,可以看到产生了
一个新的目录./gpio123,里面包含了该 IO 口的输入输出设置等配置文件。注意:export 文件只有 root 写权限,执行上述命令或者以后用 C 编写的
可执行文件要以 ROOT 身份执行。

②、设置 GPIO 的方向(输入输出):
在终端输入:# echo "out" > /sys/class/gpio/gpio38/direction,即设置该 GPIO 为输出。

③、设置 GPIO 的输出电平:
在终端输入:#echo 1 > /sys/class/gpio/gpio123/value,即设置 GPIO 输出高电平,输入 echo "0" > /sys/class/gpio/gpio123/value 设置 GPIO 输出低电平。
④、关闭 GPIO:
在终端输入:#echo "38" > /sys/class/gpio/unexport,即删除 GPIO 配置文件,可以看到目录 gpio38 已经被删除.

2.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-01-26 Younix 创建文档 2018-3-27 -
1.2 2018-05-10 Pan 增加 Android8.1 2018-5-18 -
1.3 2018-10-18 Pan GPIO 定义及调试 2018-10-19 -
1.4 2019-06-24 Csy Linux 源码编译及串口调试 - -
1.5 2020-03-18 Csy 增加 Linux 系统烧录说明 - -