“Orange Pi 4G-IoT”的版本间的差异
(→版本历史) |
(→GPIO 调试) |
||
第704行: | 第704行: | ||
=== 基于 Linux 平台的使用 === | === 基于 Linux 平台的使用 === | ||
== GPIO 调试 == | == GPIO 调试 == | ||
+ | GPIO 调试有两种方法:<br><br> | ||
+ | 1.Linux 下面有一个通用的 GPIO 操作接口,那就是我要介绍的“/sys/class/gpio”方式。<br> | ||
+ | GPIO 的配置文件在/sys/class/gpio 目录下,控制程序可以分为四个步骤:<br><br> | ||
+ | ①、配置 GPIO:<br> | ||
+ | 在/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 身份执行。<br><br> | ||
+ | ②、设置 GPIO 的方向(输入输出):<br> | ||
+ | 在终端输入:# echo "out" > /sys/class/gpio/gpio38/direction,即设置该 GPIO 为输出。<br><br> | ||
+ | ③、设置 GPIO 的输出电平:<br> | ||
+ | 在终端输入:#echo 1 > /sys/class/gpio/gpio123/value,即设置 GPIO 输出高电平,输入 echo "0" > /sys/class/gpio/gpio123/value 设置 GPIO 输出低电平。 | ||
+ | ④、关闭 GPIO:<br> | ||
+ | 在终端输入:#echo "38" > /sys/class/gpio/unexport,即删除 GPIO 配置文件,可以看到目录 gpio38 已经被删除.<br><br> | ||
+ | 2.MTK 用 ADB 修改和显示 GPIO 状态<br> | ||
+ | 获取 GPIO 的状态, cat /sys/devices/virtual/misc/mtgpio/pin<br><br> | ||
+ | 在 adb 下面直接执行 cat /sys/devices/virtual/misc/mtgpio/pin 命令则显示:<br> | ||
+ | pin:[mode] [pull_sel] [din] [dout] [pull en] [dir] [ies] [smt]<br><br> | ||
+ | 0:11101010<br><br> | ||
+ | 1:01101010<br><br> | ||
+ | 、、、、、、<br><br> | ||
+ | 22:1-100-10-1-1<br><br> | ||
+ | 、、、、、、、<br><br> | ||
+ | 42:00000110<br><br> | ||
+ | 每行分别对应:<br><br> | ||
+ | IO 编号:模式,输入上拉选择,输入值,输出值,输入上拉使能,方向 direction, 输入翻转<br><br> | ||
+ | 修改 GPIO 的状态:<br> | ||
+ | 40pin GPIO 口,可通过原理图或手册获取,如 40pin 的第 37 个 pin 脚是 GPIO123, <br> | ||
+ | echo -wdout123 1> pin 即设置该 GPIO 输出高电平<br> | ||
+ | echo -wdout123 0> pin 即设置该 GPIO 输出低电平<br><br> | ||
+ | |||
== 版本历史 == | == 版本历史 == | ||
{| class="wikitable" style="width:800px;" | {| class="wikitable" style="width:800px;" |
2022年6月22日 (三) 19:37的版本
目录
介绍
什么 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 |
快速入门
准备硬件与软件工具
硬件需求:
- 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 的位置(或者放到板子外面的位置),不能贴在板子上面以免影响信号。
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 |
- Android8.1
下载压缩包,分别对应x00, x01, x02, x03 ...x10 总共 11 个分卷压缩包。获取到分卷压缩包后,把所有的压缩包放在一个同一目录下,如:
创建目录 mkdir OrangePi_4G-IOT_Android8.1 |
搭建编译环境
可以参考 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 |
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 |
- 安装软件包
对于 Ubuntu12.04:
sudo apt-get update sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev |
对于 Ubuntu14.04:
sudo apt-get update sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev |
至此,我们可以开始进行 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 project_info [eg: IoT_bd6737m_35g_b_m0_op_smt_hd720_pcb_v2]
- $2 version_info [eg: v00 v01 ...]
- $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 project_info [eg: IoT_k37mv1_bsp_ry_smt_hd720_pcb_v2]
- $2 version_info [eg: v00 v01 ...]
- $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 开发板 烧录相关按键与接口如下:
编译生成的固件清单如下:
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 版。请根据自己的主机环境选取合适的版本。界面如下:
Windows 和 Linux 版的使用方法完全一样。本手册将以 Linux 版为例进行烧录说明。
镜像烧录方法
常见问题
linux 编译环境搭建
获取linux 源码
编译linux 源码
Linux 系统的烧录
串口调试工具介绍
基于Windows 平台的使用
基于 Linux 平台的使用
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 系统烧录说明 | - | - |