打开主菜单

Wiki-Orange Pi β

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

Orange Pi 3G-IoT 的硬件特性
下载Orange Pi 3G-IoT用户手册
 
(未显示同一用户的16个中间版本)
第17行: 第17行:
 
=== Orange Pi 3G-IoT 的硬件特性 ===
 
=== Orange Pi 3G-IoT 的硬件特性 ===
 
<br>
 
<br>
<table border="1" bordercolor="#d8d8d8"  cellspacing="0" cellpadding="0" style="width:800px; line-height:30px;">
+
<table border="1" bordercolor="#d8d8d8"  cellspacing="0" cellpadding="0" style="width:800px; line-height:20px;">
 
         <tr>
 
         <tr>
 
             <td style="padding:10px 0">主控芯片</td>
 
             <td style="padding:10px 0">主控芯片</td>
第151行: 第151行:
 
         </tr>
 
         </tr>
 
     </table>
 
     </table>
<br>
+
<br><br>
 +
<big>'''256MB DDR2 + 512MB EMMC规格接口详情视图:'''</big><br><br>
 +
[[Image:3G-iot-1.png]]<br><br>
 +
[[Image:3G-iot-2.png]]<br><br>
 +
<big>'''512MB DDR2 + 4GB EMMC规格接口详情视图:'''</big><br><br>
 +
[[Image:3G-iot-3.png]]<br><br>
 +
[[Image:3G-iot-4.png]]<br><br>
  
=== 40pin GPIO 定义 ===
+
=== GPIO 规格 ===
 
<br>
 
<br>
 
+
<div class="table-3g-iot">
<table style="min-width: 800px;text-align: center; line-height:35px;" border="1" bordercolor="#d8d8d8" cellspacing="0" cellpadding="0" >
+
      <table style="width: 800px; line-height:35px; text-align:center; border-color:#CCCCCC;" border="1" bordercolor="#d8d8d8" cellspacing="0" cellpadding="0">
        <tr>
 
            <td>OrangePi(4G-IOT)</td>
 
            <td></td>
 
            <td></td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #5a5a5a;">P01</td>
 
            <td style="background-color: #5a5a5a;">VIO28_PMU</td>
 
            <td></td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #5a5a5a;">P02</td>
 
            <td style="background-color: #5a5a5a;">DC5V</td>
 
            <td></td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #b1a0c6;">P03</td>
 
            <td style="background-color: #b1a0c6;">SDA1</td>
 
            <td style="background-color: #b1a0c6;">GPIO49</td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #5a5a5a;">P04</td>
 
            <td style="background-color: #5a5a5a;">DC5V</td>
 
            <td></td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #b1a0c6;">P05</td>
 
            <td style="background-color: #b1a0c6;">SCL1</td>
 
            <td style="background-color: #b1a0c6;">GPIO50</td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #5a5a5a;">P06</td>
 
            <td style="background-color: #5a5a5a;">GND</td>
 
            <td></td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #938a53;">P07</td>
 
            <td style="background-color: #938a53;">EINT87</td>
 
            <td style="background-color: #938a53;">GPIO87</td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #d99694;">P08</td>
 
            <td style="background-color: #d99694;">UTXD2</td>
 
            <td></td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #5a5a5a;">P09</td>
 
            <td style="background-color: #5a5a5a;">GND</td>
 
            <td></td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #d99694;">P10</td>
 
            <td style="background-color: #d99694;">URXD2</td>
 
            <td style="background-color: #d99694;">GPIO57</td>
 
        </tr>
 
 
         <tr>
 
         <tr>
             <td style="background-color: #c2d59a;">P11</td>
+
             <td width="119" style="font-weight:700;">PIN1</td>
             <td style="background-color: #c2d59a;">URXD1</td>
+
             <td width="216">VIO28 PMU</td>
             <td></td>
+
            <td width="68" style="font-weight:700;">&nbsp;</td>
 +
             <td width="166" style="font-weight:700;">PIN21</td>
 +
            <td width="219">GPIO24</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #938a53;">P12</td>
+
             <td style="font-weight:700;">PIN2</td>
             <td style="background-color: #938a53;">EINT8</td>
+
            <td>DC5V</td>
             <td style="background-color: #938a53;">EINT8</td>
+
             <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN22</td>
 +
            <td>GPIO109</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #c2d59a;">P13</td>
+
             <td style="font-weight:700;">PIN3</td>
             <td style="background-color: #c2d59a;">UTXD1</td>
+
            <td>SDA_1</td>
             <td></td>
+
            <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN23</td>
 +
             <td>GPIO25</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #5a5a5a;">P14</td>
+
             <td style="font-weight:700;">PIN4</td>
             <td style="background-color: #5a5a5a;">GND</td>
+
            <td>DC5V</td>
             <td></td>
+
            <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN24</td>
 +
             <td>GPIO139</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #c2d59a;">P15</td>
+
             <td style="font-weight:700;">PIN5</td>
             <td style="background-color: #c2d59a;">UCTS1</td>
+
            <td>SCL_1</td>
             <td></td>
+
            <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN25</td>
 +
             <td>GND</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #f9c090;">P16</td>
+
             <td style="font-weight:700;">PIN6</td>
             <td style="background-color: #f9c090;">EINT9</td>
+
            <td>GND</td>
             <td style="background-color: #f9c090;">EINT9</td>
+
             <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN26</td>
 +
            <td>EINT0/GPIO30/PWM B</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #5a5a5a;">P17</td>
+
             <td style="font-weight:700;">PIN7</td>
             <td style="background-color: #5a5a5a;">VIO28_PMU</td>
+
            <td>EINT4/GPIO26</td>
             <td></td>
+
            <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN27</td>
 +
             <td>SDA_0</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #f9c090;">P18</td>
+
             <td style="font-weight:700;">PIN8</td>
             <td style="background-color: #f9c090;">EINT11</td>
+
            <td>UTXD2</td>
             <td style="background-color: #f9c090;">EINT11</td>
+
             <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN28</td>
 +
            <td>SCL_0</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #92cddd;">P19</td>
+
             <td style="font-weight:700;">PIN9</td>
             <td style="background-color: #92cddd;">SPI2_MI</td>
+
            <td>GND</td>
             <td style="background-color: #92cddd;">EINT3</td>
+
             <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN29</td>
 +
            <td>SPI_CS</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #5a5a5a;">P20</td>
+
             <td style="font-weight:700;">PIN10</td>
             <td style="background-color: #5a5a5a;">GND</td>
+
            <td>URXD2</td>
             <td></td>
+
            <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN30</td>
 +
             <td>GND</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #92cddd;">P21</td>
+
             <td style="font-weight:700;">PIN11</td>
             <td style="background-color: #92cddd;">SPI2_MO</td>
+
            <td>URXD1</td>
             <td style="background-color: #92cddd;">EINT4</td>
+
             <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN31</td>
 +
            <td>SPI_CK</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #c2d59a;">P22</td>
+
             <td style="font-weight:700;">PIN12</td>
             <td style="background-color: #c2d59a;">URTS1</td>
+
            <td>EINT10/GPIO56</td>
             <td></td>
+
            <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN32</td>
 +
             <td>EINT15/GPIO90</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #92cddd;">P23</td>
+
             <td style="font-weight:700;">PIN13</td>
             <td style="background-color: #92cddd;">SPI2_CK</td>
+
            <td>UTXD1</td>
             <td style="background-color: #92cddd;">EINT6</td>
+
             <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN33</td>
 +
            <td>SPI_MO</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #92cddd;">P24</td>
+
             <td style="font-weight:700;">PIN14</td>
             <td style="background-color: #92cddd;">SPI2_CS</td>
+
            <td>GND</td>
             <td style="background-color: #92cddd;">EINT5</td>
+
             <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN34</td>
 +
            <td>GND</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #5a5a5a;">P25</td>
+
             <td style="font-weight:700;">PIN15</td>
             <td style="background-color: #5a5a5a;">GND</td>
+
            <td>EINT2/GPIO128/PW A</td>
             <td></td>
+
            <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN35</td>
 +
             <td>SPI_MI</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #92cddd;">P26</td>
+
             <td style="font-weight:700;">PIN16</td>
             <td style="background-color: #92cddd;">EINT12</td>
+
            <td>EINT12/GPIO58</td>
             <td></td>
+
            <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN36</td>
 +
             <td>GPIO145/PWMBL</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #528ed4;">P27</td>
+
             <td style="font-weight:700;">PIN17</td>
             <td style="background-color: #528ed4;">SDA2</td>
+
            <td>VIO28 PMU</td>
             <td style="background-color: #528ed4;">GPIO51</td>
+
             <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN37</td>
 +
            <td>EINT3/GPIO27</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #938a53;">P28</td>
+
             <td style="font-weight:700;">PIN18</td>
             <td style="background-color: #938a53;">SCL2</td>
+
            <td>EINT14/GPIO89</td>
             <td style="background-color: #938a53;">GPIO52</td>
+
             <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN38</td>
 +
            <td>EINT5/GPIO144/PWM B</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #528ed4;">P29</td>
+
             <td style="font-weight:700;">PIN19</td>
             <td style="background-color: #528ed4;">SPI_CS</td>
+
            <td>GPIO140</td>
             <td style="background-color: #528ed4;">GPIO65</td>
+
             <td style="font-weight:700;">&nbsp;</td>
 +
             <td style="font-weight:700;">PIN39</td>
 +
            <td>GND</td>
 
         </tr>
 
         </tr>
 
         <tr>
 
         <tr>
             <td style="background-color: #5a5a5a;">P30</td>
+
             <td style="font-weight:700;">PIN20</td>
             <td style="background-color: #5a5a5a;">GND</td>
+
             <td>GND</td>
            <td></td>
+
             <td style="font-weight:700;">&nbsp;</td>
        </tr>
+
             <td style="font-weight:700;">PIN40</td>
        <tr>
+
             <td>GPIO141</td>
            <td style="background-color: #528ed4;">P31</td>
 
            <td style="background-color: #528ed4;">SPI_CK</td>
 
            <td style="background-color: #528ed4;">GPIO66</td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #d99694;">P32</td>
 
            <td style="background-color: #d99694;">URTS2</td>
 
            <td style="background-color: #d99694;">GPIO60</td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #528ed4;">P33</td>
 
            <td style="background-color: #528ed4;">SPI_MO</td>
 
            <td style="background-color: #528ed4;">PA9</td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #5a5a5a;">P34</td>
 
            <td style="background-color: #5a5a5a;">GND</td>
 
            <td></td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #528ed4;">P35</td>
 
            <td style="background-color: #528ed4;">SPI_MI</td>
 
            <td style="background-color: #528ed4;">GPIO67</td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #d99694;">P36</td>
 
            <td style="background-color: #d99694;">UCTS2</td>
 
            <td style="background-color: #d99694;">GPIO59</td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #938a53;">P37</td>
 
            <td style="background-color: #938a53;">EINT_123</td>
 
            <td style="background-color: #938a53;">GPIO123</td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #938a53;">P38</td>
 
            <td style="background-color: #938a53;">SCL3</td>
 
            <td style="background-color: #938a53;">GPIO54</td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #5a5a5a;">P39</td>
 
             <td style="background-color: #5a5a5a;">GND</td>
 
            <td></td>
 
        </tr>
 
        <tr>
 
            <td style="background-color: #938a53;">P40</td>
 
             <td style="background-color: #938a53;">SDA3</td>
 
             <td style="background-color: #938a53;">GPIO53</td>
 
 
         </tr>
 
         </tr>
 
     </table>
 
     </table>
<br><br>
+
</div>
接口详情视图:<br><br>
+
<br>
[[Image:4G-Iot-1.png]]<br>
 
[[Image:4G-Iot-2.png]]<br><br>
 
  
 
== 快速入门 ==
 
== 快速入门 ==
 
=== 准备硬件与软件工具 ===
 
=== 准备硬件与软件工具 ===
 
硬件需求:<br>
 
硬件需求:<br>
* Orange Pi 4G-IoT 开发板<br>
+
* Orange Pi 3G-IoT 开发板<br>
 
* 一台编译用的主机,配置最好满足以下条件:<br>
 
* 一台编译用的主机,配置最好满足以下条件:<br>
 
   64 位 CPU<br>
 
   64 位 CPU<br>
第377行: 第316行:
 
   40GB 以上的空闲磁盘空间<br>
 
   40GB 以上的空闲磁盘空间<br>
 
   操作系统为 Ubuntu12.04 以上,最好为 Ubuntu14.04<br>
 
   操作系统为 Ubuntu12.04 以上,最好为 Ubuntu14.04<br>
   更详细的内容可以参考 Google 文档 https://source.android.com/source/building<br><br>
+
   更详细的内容可以参考 Google 文档 https://source.android.com/source/building<br>
 
软件需求:<br>
 
软件需求:<br>
* Orange Pi 4G-IoT SDK<br>
+
* Orange Pi 3G-IoT SDK<br>
* Orange Pi 4G-IoT 固件<br>
+
* Orange Pi 3G-IoT 固件<br>
 
* Android 烧录工具<br>
 
* Android 烧录工具<br>
 
以上软件均可以通过 Mega、百度云盘 的方式获取,详情参见中英文官网:<br>
 
以上软件均可以通过 Mega、百度云盘 的方式获取,详情参见中英文官网:<br>
http://www.orangepi.org/downloadresources/<br>
+
1)中文版资料的下载网址为
http://www.orangepi.cn/downloadresourcescn/<br><br>
+
'''http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3G-IoT-B.html'''
 +
 
 +
2)英文版资料的下载网址为
 +
'''http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3G-IoT-B.html'''
 +
<br>
 +
 
 
=== 开发板的供电方式 ===
 
=== 开发板的供电方式 ===
 
开发板的供电方式有两种:<br>
 
开发板的供电方式有两种:<br>
* DC (5V 2A)供电:插入 DC 适配器后即可开机。<br>
+
* Micro USB(5V 2A)供电:插入 Micro USB 适配器后即可开机。<br>
* 电池供电:常用 3.7V 电池,在背面有预留外接电池焊盘点 需要客户自己焊接 接上电池之后按开机键即可启动。<br>
+
* 电池供电:常用 4.2V 电池,在背面有预留外接电池焊盘点 需要客户自己焊接, 接上电池之后按开机键即可启动。<br>
  
 
=== 拆包说明 ===
 
=== 拆包说明 ===
 
收到产品后请将产品的天线从图 1 的位置放到图 2 的位置(或者放到板子外面的位置),不能贴在板子上面以免影响信号。<br><br>
 
收到产品后请将产品的天线从图 1 的位置放到图 2 的位置(或者放到板子外面的位置),不能贴在板子上面以免影响信号。<br><br>
[[Image:4G-Iot-3.png]]<br><br>
+
[[Image:3G-iot-5.png]]<br><br>
  
 
== Android 编译环境搭建 ==
 
== Android 编译环境搭建 ==
 
=== 获取 SDK 源码压缩包 ===
 
=== 获取 SDK 源码压缩包 ===
为方便客户快速进行开发,OrangePi 有提供不同版本的 SDK 初始压缩包。<br>
+
为方便客户快速进行开发,OrangePi 有提供不同版本的 SDK 初始压缩包。下载压缩包,分别对应 OrangePi_3G-IoT_Android4.4.tar.gz00, OrangePi_3G-IoT_Android4.4.tar.gz01, <br>
* '''Android6.0'''<br>
+
...OrangePi_3G-IoT_Android4.4.tar.gz00 总共8 个分卷压缩包。获取到分卷压缩包后,把所有的压缩包放在一个同一目录下,如:<br>
下载压缩包,分别对应 OrangePi_4G-IoT_Android6.0_V1.0.tar.gz.00, OrangePi_4G-IoT_Android6.0_V1.0.tar.gz.01, ...<br>
+
创建目录<br>
OrangePi_4G-IoT_Android6.0_V1.0.tar. gz.14 总共 15 个分卷压缩包。获取到分卷压缩包后,把所有的压缩包放在一个同一目录下,如:<br>
+
mkdir OrangePi_3G-IOT_Android4.4<br>
{| class="wikitable" style="width:800px;"
+
拷贝分卷压缩包<br>
|-
+
cp -rf OrangePi_3G-IoT_Android4.4.tar.gz* OrangePi_3G-IOT_Android4.4/ <br>
|创建目录<br>
+
合并压缩包<br>
mkdir OrangePi_4G-IOT_Android6.0<br>
+
cat OrangePi_3G-IoT_Android4.4.tar.gz*>OrangePi_3G-IOT_Android4.4.tar.gz <br>
拷贝分卷压缩包<br>
+
解压<br>
cp -rf OrangePi_4G-IoT_Android6.0_V1.0.tar.gz.* <br>
+
tar xzvf OrangePi_3G-IOT_Android4.4.tar.gz
OrangePi_4G-IOT_Android6.0/<br>
+
 
合并压缩包<br>
 
cat OrangePi_4G-IoT_Android6.0_V1.0.tar.gz.* ><br>
 
OrangePi_4G-IOT_Android6.0.tar.gz<br>
 
解压<br>
 
tar xzvf OrangePi_4G-IOT_Android6.0.tar.gz<br>
 
|}
 
* '''Android8.1'''<br>
 
下载压缩包,分别对应x00, x01, x02, x03 ...x10 总共 11 个分卷压缩包。获取到分卷压缩包后,把所有的压缩包放在一个同一目录下,如:<br>
 
{| class="wikitable"  style="width:800px;"
 
|-
 
|创建目录<br>
 
mkdir OrangePi_4G-IOT_Android8.1<br>拷贝分卷压缩包
 
cp -rf x00 x01 x02 ... x10 合并压缩包<br>
 
cat x*>OrangePi_4G-IOT_Android8.1.tar.gz<br>解压<br>
 
tar xzvf OrangePi_4G-IOT_Android8.tar.gz<br>
 
|}
 
  
 
=== 搭建编译环境 ===
 
=== 搭建编译环境 ===
 
可以参考 Google 官方文档: http://source.android.com/source/initializing.html<br>
 
可以参考 Google 官方文档: http://source.android.com/source/initializing.html<br>
 
* '''安装 JDK'''
 
* '''安装 JDK'''
'''Android6.0'''<br>
+
Android4.4 系统编译依赖于 JAVA6。编译前需要安装 OpenJDK,gcc4.4 版本安装命令如下。<br>
Android6.0 系统编译依赖于 JAVA7。编译前需要安装 OpenJDK。安装命令如下。<br>
+
sudo apt-get install openjdk-6-jdk sudo apt-get install gcc-4.4<br>
{| class="wikitable" style="width:800px;"
+
配置 JAVA 环境变量,比如安装路径为 /usr/lib/jvm/jdk1.6.0_31<br>
|-
 
| sudo apt-get install openjdk-7-jdk
 
|}
 
配置 JAVA 环境变量,比如安装路径为 /usr/lib/jvm/java-7-openjdk-amd64<br>
 
 
可以在终端执行如下命令配置环境变量。<br>
 
可以在终端执行如下命令配置环境变量。<br>
{| class="wikitable" style="width:800px;"
+
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_31<br>
|-
+
export PATH=$JAVA_HOME/bin:$PATH<br>
|export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64<br>
+
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH<br>
+
 
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
 
|}
 
'''Android8.1'''<br>
 
Android8.1 系统编译依赖于 JAVA8。编译前需要安装 OpenJDK。安装命令如下。<br>
 
{| class="wikitable" style="width:800px;"
 
|-
 
| sudo apt-get install java-8-openjdk-amd64
 
|}
 
配置 JAVA 环境变量,比如安装路径为 /usr/lib/jvm/java-8-openjdk-amd64 可以在终端执行如下命令配置环境变量。<br>
 
{| class="wikitable" style="width:800px;"
 
|-
 
|export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64<br>
 
export PATH=$JAVA_HOME/bin:$PATH<br>
 
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar<br>
 
|}
 
 
* '''安装软件包'''<br>
 
* '''安装软件包'''<br>
 
对于 Ubuntu12.04:<br>
 
对于 Ubuntu12.04:<br>
{| class="wikitable" style="width:800px;"
+
sudo apt-get update<br>
|-
+
sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev<br>
|sudo apt-get update<br>
+
libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev<br>
sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev<br>
+
libx11-dev lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev gcc-4.4<br>
libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev<br>
+
g++-4.4 g++-4.4-multilib g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc wine
libx11-dev lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev gcc-4.4<br>
+
 
g++-4.4 g++-4.4-multilib g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc wine
+
 
|}
 
 
对于 Ubuntu14.04:<br>
 
对于 Ubuntu14.04:<br>
{| class="wikitable" style="width:800px;"
+
sudo apt-get update<br>
|-
+
sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev<br>
|sudo apt-get update<br>
+
libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev<br>
sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev<br>
+
libx11-dev lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev g++-multilib g++-4.8-multilib mingw32 tofrodos python-markdown<br>
libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev<br>
+
libxml2-utils xsltproc libc6-dev-i386 lib32z1 lib32ncurses5 lib32bz2-1.0 lib32readline-gplv2-dev wine
libx11-dev lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev g++-multilib g++-4.8-multilib mingw32 tofrodos python-markdown<br>
+
 
libxml2-utils xsltproc libc6-dev-i386 lib32z1 lib32ncurses5 lib32bz2-1.0 lib32readline-gplv2-dev wine
 
|}
 
 
至此,我们可以开始进行 SDK 源码的编译。<br><br>
 
至此,我们可以开始进行 SDK 源码的编译。<br><br>
  
 
=== 编译 SDK 源码 ===
 
=== 编译 SDK 源码 ===
 +
<big>'''全部编译'''</big><br>
 
为方便客户进行开发,Orange Pi 提供了一系列的编译脚本。<br>
 
为方便客户进行开发,Orange Pi 提供了一系列的编译脚本。<br>
* '''Android6.0'''<br>
 
 
目录为 SDK/code/orangepi/scripts<br>
 
目录为 SDK/code/orangepi/scripts<br>
{| class="wikitable" style="width:800px;"
+
$ cd code/orangepi/scripts<br>
|-
+
$ ls anr_LM.sh auto.sh clean.sh  codegen.sh  init_project.sh  tar_img.sh
|$ cd code/orangepi/scripts<br>
+
 
$ ls anr_LM.sh auto.sh clean.sh  codegen.sh  init_project.sh  tar_img.sh
 
|}
 
 
auto.sh 为自动编译脚本<br>
 
auto.sh 为自动编译脚本<br>
clean.sh 为自动清除编译结果脚本<br><br>
+
clean.sh 为自动清除编译结果脚本<br>
 +
tar_img.sh 为打包脚本<br><br>
 
在 code/orangepi/scripts 目录下,我们执行自动编译脚本:<br>
 
在 code/orangepi/scripts 目录下,我们执行自动编译脚本:<br>
{| class="wikitable" style="width:800px;"
+
板子是:32g4g
|-
+
$ ./auto.sh IoT03_mt6572_emmc_b1258_32g4g_ry_smt_v1.1 v00 eng<br>
| $ ./auto.sh IoT_bd6737m_35g_b_m0_op_smt_hd720_pcb_v2 v00 eng
+
 
|}
+
板子是:4g2g
 +
$ ./auto.sh IoT03L_mt6572_lca_b1258_wg_4g2g_ry_smt_v1.1 v00 eng
 +
 
 
传入的三个参数含义如下:<br>
 
传入的三个参数含义如下:<br>
#$1 project_info [eg: IoT_bd6737m_35g_b_m0_op_smt_hd720_pcb_v2] <br>
+
#$1 project_info [eg: IoT03L_mt6572_lca_b1258_wg_4g2g_ry_smt_v1.1]<br>
#$2 version_info [eg: v00 v01 ...]<br>
+
#$2 version_info [eg: v00 v01 ...]<br>
 
#$3 compile_mode [eng:user userdebug eng]<br>
 
#$3 compile_mode [eng:user userdebug eng]<br>
 +
auto.sh带的三个参数含义,在脚本开头部分有详细说明。<br><br>
  
* '''Android8.1'''<br>
+
<big>'''模块编译'''</big><br>
目录为 SDK/code/orangepi/scripts<br>
+
最常用的修改了kernel部分的文件,可以采用如下命令:<br>
{| class="wikitable" style="width:800px;"
+
./mk  -o=TARGET_BUILD_VARIANT=[user/userdebug/eng] projName n K && ./mk -o=TARGET_BUILD_VARIANT=[user/userdebug/eng] projName r bootimage<br><br>
 +
比如:工程是 hexing72_cwet_kk<br>
 +
{| class="wikitable" style="width:800px;"
 
|-
 
|-
|$ cd code/orangepi/scripts<br>
+
| ./mk -o=TARGET_BUILD_VARIANT=eng || hexing72_cwet_kk || n  k  &&
$ ls anr_LM.sh auto.sh clean.sh codegen.sh  init_project.sh  tar_img.sh
 
|}
 
auto.sh 为自动编译脚本<br>
 
clean.sh 为自动清除编译结果脚本<br><br>
 
 
 
在 code/orangepi/scripts 目录下,我们执行自动编译脚本:<br>
 
{| class="wikitable" style="width:800px;"
 
 
|-
 
|-
| $ ./auto.sh IoT_k37mv1_bsp_ry_smt_hd720_pcb_v2 v00 eng
+
| ./mk -o=TARGET_BUILD_VARIANT=eng || hexing72_cwet_kk || r  bootimage
 
|}
 
|}
传入的三个参数含义如下:<br>
+
<br>
#$1 project_info [eg: IoT_k37mv1_bsp_ry_smt_hd720_pcb_v2]<br>
+
其中驱动部分修改编译,详细可以参考文档:MT6592_Driver_All_In_One_Part.pdf<br><br>
#$2 version_info [eg: v00 v01 ...]<br>
 
#$3 compile_mode [eng:user userdebug eng]<br><br>
 
  
执行命令编译<br>
 
source build/envsetup.sh<br>
 
luncher >full_k37mv1_bsp-eng<br>
 
make -j4<br>
 
<big>'''模块编译'''</big><br>
 
如:单编译launcer<br>
 
mm  packages/apps/Launcher3/ 或者进入到packages/apps/Launcher3/下,执行mm。<br>
 
注意:有些模块由于依赖包的关系,需要mma<br><br>
 
 
=== 生成固件 ===
 
<br>
 
* '''Android6.0'''
 
编译完成后固件将汇总在 code/IoT_op_smt_hd720_pcb_v2 目录中,并打包形如 IoT_op_smt_hd720_pcb_v2_v00_eng_20180126140300.tar.gz 名字的压缩包。<br><br>
 
  
 +
== Android 固件烧录 ==
 +
'''Orange Pi 3G-IoT 开发板''' <br><br>
 +
烧录相关按键与接口如下:<br><br>
 +
[[Image:3G-iot-6.png]]<br><br>
 +
编译完成后固件将汇总在code/IoT03_b1258_32g4g_ry_smt_v1.1或code/IoT03L_b1258_wg_4g2g_ry_smt_v1.1 目录中,<br>
 +
并打包形如 IoT03L_b1258_wg_4g2g_ry_smt_v1.1_20180403182516_v00_eng.zip 名字的压缩包。<br><br>
 
<div style="background:#f1f1f1;border:1px solid #ddd;padding:5px;width:800px;  ">
 
<div style="background:#f1f1f1;border:1px solid #ddd;padding:5px;width:800px;  ">
$ tree IoT_op_smt_hd720_pcb_v2 IoT_op_smt_hd720_pcb_v2<br>
+
IoT03L_b1258_wg_4g2g_ry_smt_v1.1<br>
 
├── images<br>
 
├── images<br>
 
│ ├── boot.img<br>
 
│ ├── boot.img<br>
│ ├── cache.img<br>
 
 
│ ├── lk.bin<br>
 
│ ├── lk.bin<br>
 
│ ├── logo.bin<br>
 
│ ├── logo.bin<br>
│ ├── MT6737M_Android_scatter.txt<br>
+
│ ├── MT6572_Android_scatter.txt<br>
│ ├── preloader_bd6737m_35g_b_m0.bin<br>
+
│ ├── preloader_hexing72_cwet_lca.bin<br>
 +
│ ├── ramdisk.img<br>
 +
│ ├── ramdisk-recovery.img<br>
 
│ ├── recovery.img<br>
 
│ ├── recovery.img<br>
 
│ ├── secro.img<br>
 
│ ├── secro.img<br>
 
│ ├── system.img<br>
 
│ ├── system.img<br>
│ ├── trustzone.bin<br>
 
 
│ └── userdata.img<br>
 
│ └── userdata.img<br>
 
└── modem<br>
 
└── modem<br>
├── APDB_MT6735_S01_alps-mp-m0.mp1_W17.21<br>
+
├── APDB_MT6572_S01_MAIN2.1_W10.24<br>
├── _APDB_MT6735_S01_alps-mp-m0.mp1_W17.21.check<br>
+
├── _APDB_MT6572_S01_MAIN2.1_W10.24.check<br>
└── APDB_MT6735_S01_alps-mp-m0.mp1_W17.21_ENUM
+
├── APDB_MT6572_S01_MAIN2.1_W10.24_ENUM<br>
</div><br>
+
├── BPLGUInfoCustomAppSrcP_MT6572_S00_MOLY_WR8_W1315_MD_WG_MP_V47_1_wg_n<br>
除此之外,开发者也可通过 Linux_Pack_Firmware 对以上固件进行打包,生成统一固件 update.img。<br>
+
├── catcher_filter_1_wg_n.bin<br>
* '''Android8.1'''<br><br>
+
├── DbgInfo_WR8.W1315.MD.WG.MP_HEXING72_CWET_KK_HSPA_MOLY_WR8_W1315_MD_WG_MP
编译完成后固件将汇总在 code/IoT_ry_smt_hd720_pcb_v2 目录中,并打包形如 IoT_ry_smt_hd720_pcb_v2_v09_eng_20180504163653.tar.gz 名字的压缩包。<br>
+
_V47_2017_10_26_22_35_1_wg_n<br>
<div style="background:#f1f1f1;border:1px solid #ddd;padding:5px;width:800px;">
+
├── modem_1_wg_n.img<br>
$ tree IoT_op_smt_hd720_pcb_v2 IoT_op_smt_hd720_pcb_v2<br>
+
└── modem_1_wg_n.mak
├── images<br>
+
<br></div><br><br>
├── boot.img<br>
+
此后,请参照执行完 《OrangePi 3G-IoT Android 固件烧录指南》完成固件的烧录。<br>
├── cache.img<br>
+
我们提供已经编译且打包好的镜像分区文件,请根据自身的需求自行下载:<br>
│ ├── lk.bin<br>
+
http://www.orangepi.cn<br>
│ ├── logo.bin<br>
+
通过如下命令进行Android 4.4 镜像解压<br>
├── MT6737M_Android_scatter.txt<br>
+
$ rar x IoT03L_b1258_wg_4g2g_ry_smt_v1.1.rar<br>
│ ├── preloader_k37mv1_bsp.bin<br>
+
即可得到上文中固件清单中的文件。或者也可以参照Android 环境搭建及固件编译部分自行编译。<br>
│ ├── recovery.img<br>
 
│ ├── secro.img<br>
 
│ ├── system.img<br>
 
│ ├── trustzone.bin<br>
 
│ └── userdata.img<br>
 
└── modem<br>
 
├── APDB_MT6735_S01_alps-mp-m0.mp1_W18.04<br>
 
├── _APDB_MT6735_S01_alps-mp-m0.mp1_W18.04.check<br>
 
└── APDB_MT6735_S01_alps-mp-m0.mp1_W18.04_ENUM
 
</div>
 
<br>
 
  
== Android 固件烧录 ==
 
'''Orange Pi 4G-IoT 开发板''' 烧录相关按键与接口如下:<br><br>
 
[[Image:4G-Iot-4.png]]<br><br>
 
编译生成的固件清单如下:<br><br>
 
<div style="background:#f1f1f1;border:1px solid #ddd;padding:5px;width:800px;  ">
 
IoT_op_smt_hd720_pcb_v2<br>
 
├── images<br>
 
│ ├── boot.img<br>
 
│ ├── cache.img<br>
 
│ ├── lk.bin<br>
 
│ ├── logo.bin<br>
 
│ ├── MT6737M_Android_scatter.txt<br>
 
│ ├── preloader_bd6737m_35g_b_m0.bin<br>
 
│ ├── recovery.img<br>
 
│ ├── secro.img<br>
 
│ ├── system.img<br>
 
│ ├── trustzone.bin<br>
 
│ └── userdata.img<br>
 
└── modem<br>
 
├── APDB_MT6735_S01_alps-mp-m0.mp1_W17.21<br>
 
├── _APDB_MT6735_S01_alps-mp-m0.mp1_W17.21.check<br>
 
└── APDB_MT6735_S01_alps-mp-m0.mp1_W17.21_ENUM<br>
 
<br></div>
 
我们提供已经编译且打包好的镜像分区文件,请根据自身的需求自行下载:<br>
 
http://www.orangepi.org/downloadresources/<br>
 
通过如下命令进行Android6.0 镜像解压<br>
 
{| class="wikitable" style="width:800px;"
 
|-
 
| $ tar zxvf IoT_op_smt_hd720_pcb_v2_v00_eng_20180126140300.tar.gz
 
|}
 
即可得到上文中固件清单中的文件。或者也可以参照Android 环境搭建及固件编译部分自行编译。<br><br>
 
 
<big>'''主机操作系统支持:'''</big><br>
 
<big>'''主机操作系统支持:'''</big><br>
 
* Windows 10<br>
 
* Windows 10<br>
第611行: 第463行:
  
 
=== 烧录工具介绍 ===
 
=== 烧录工具介绍 ===
烧录工具为 Smart Phone Flash Tool请前往 OrangePi官方网站中 4G-IoT 版块下载。<br><br>
+
烧录工具为 '''Smart Phone Flash Tool'''请前往 OrangePi官方网站中 3G-IoT 版块下载。<br><br>
 
本工具有 Windows 和 Linux 版。请根据自己的主机环境选取合适的版本。界面如下:<br><br>
 
本工具有 Windows 和 Linux 版。请根据自己的主机环境选取合适的版本。界面如下:<br><br>
 
[[Image:4G-Iot-5.png]]<br><br>
 
[[Image:4G-Iot-5.png]]<br><br>
第636行: 第488行:
 
<br>
 
<br>
 
如果你是第一次打开软件,可能会出现 警告显示 scatter file 文件未找到 :<br>
 
如果你是第一次打开软件,可能会出现 警告显示 scatter file 文件未找到 :<br>
[[Image:4G-Iot-30.png]]<br><br>
+
[[Image:3G-iot-7.png]]<br><br>
 
这是正常的。后面我们将手动指定 Scatter File 的路径。点击 OK 后我们进入软件。<br><br>
 
这是正常的。后面我们将手动指定 Scatter File 的路径。点击 OK 后我们进入软件。<br><br>
 
* <big>'''进入烧录模式'''</big><br>
 
* <big>'''进入烧录模式'''</big><br>
 
  a.首先切换到 Download 标签页,显示如下:
 
  a.首先切换到 Download 标签页,显示如下:
[[Image:4G-Iot-31.png]]<br><br>
+
[[Image:3G-iot-8.png]]<br><br>
 
  b.我们点击 Scatter-loading File 一栏的最右侧的 choose并且选择 Scatter File 的路径,如下图
 
  b.我们点击 Scatter-loading File 一栏的最右侧的 choose并且选择 Scatter File 的路径,如下图
[[Image:4G-Iot-32.png]]<br><br>
+
[[Image:3G-iot-9.png]]<br><br>
  c.双击选择后,在下面的分区信息显示部分将会自动填充各个分区文件所在的路径,以及他们将要被烧录的绝对起始地址,如下图:
+
  c.双击选择后,在下面的'''分区信息显示部分'''将会自动填充各个分区文件所在的路径,以及他们将要被烧录的绝对起始地址,如下图:
[[Image:4G-Iot-33.png]]<br><br>
+
[[Image:3G-iot-10.png]]<br><br>
 
  d.在分区信息显示部分的左上角有一个下拉菜单其中有三个选项<br>
 
  d.在分区信息显示部分的左上角有一个下拉菜单其中有三个选项<br>
 
   Format All + Download //擦除机器内的全部分区信息,并且重新下载选中分区<br>
 
   Format All + Download //擦除机器内的全部分区信息,并且重新下载选中分区<br>
第652行: 第504行:
 
因为我们的每台机器在出厂的时候都有针对于进行各项参数的校准,在 Format All后会丢失校准信息。<br>
 
因为我们的每台机器在出厂的时候都有针对于进行各项参数的校准,在 Format All后会丢失校准信息。<br>
 
如果不慎出现此情况请联系售后并根据指导通过机器码获取校准参数,并按照《4G-IOT 校准参数导入导出工具和说明》重新烧录校准参数。<br>
 
如果不慎出现此情况请联系售后并根据指导通过机器码获取校准参数,并按照《4G-IOT 校准参数导入导出工具和说明》重新烧录校准参数。<br>
  e.接下来使用 USB 下载线,连接主机的 USB 与机器的 MircoUSB  接口。右上角红灯亮。<br><span style="color:red;">此时不需要连接 DC 电源。</span><br>
+
  e.戴上跳线帽,具体如下图所示:<br>
  f.点击 Download 按钮进行下载 [[Image:4G-Iot-34.png]]<br>
+
[[Image:3G-iot-11.png]]<br><br>
 +
  f.接下来使用 USB 下载线,连接主机的 USB 与机器的 MircoUSB 接口。右上角红灯亮点击 Download 按钮进行下载 [[Image:4G-Iot-34.png]]<br>
 
  g.下载完成后界面如下
 
  g.下载完成后界面如下
 
[[Image:4G-Iot-35.png]]<br>
 
[[Image:4G-Iot-35.png]]<br>
  h.拔掉USB线。插上DC电源。
+
  h.拔掉USB线。插上 Mirco USB 电源。。
 
等待5秒将会显示关机充电界面。<br>
 
等待5秒将会显示关机充电界面。<br>
 
长按Power按键5秒后松开,会开机进入系统。<br>
 
长按Power按键5秒后松开,会开机进入系统。<br>
 
当更新的分区比较多时,第一次开机也会时间稍长(全分区更新的情况开机需要8min),请耐心等待。<br><br>
 
当更新的分区比较多时,第一次开机也会时间稍长(全分区更新的情况开机需要8min),请耐心等待。<br><br>
 
Window 系统需要下载 SP_Flash_Tool_v5.1644_Win.zip,然后解压安装,就可以烧录固件了。操作方法和 Linux 的一样。<br><br>
 
Window 系统需要下载 SP_Flash_Tool_v5.1644_Win.zip,然后解压安装,就可以烧录固件了。操作方法和 Linux 的一样。<br><br>
接下来请享用您自己的定制 4G 手机吧。: )
 
  
=== 常见问题 ===
+
== linux 编译环境搭建 ==
Android8.1 编译工具链使用了全新的 Jack server 来取代以往的编译器工具,所以编译时会出现问题。以下是 Android8.1 编译的常见问题。<br><br>
+
=== 获取linux 源码 ===
'''1)编译前要先配 Jack server'''<br>
+
* <big>'''OrangePi 源码下载器'''</big><br>
1.修改$HOME 路径下的.jack 文件:<br>
+
  $ sudo apt-get install git<br>
[[Image:4G-Iot-36.png]]<br><br>
+
  $ git clone https://github.com/orangepi-xunlong/OrangePi_Build.git<br>
2.修改$HOME 路径下的.jack-settings 文件:<br>
+
  $ cd OrangePi_Build<br>
[[Image:4G-Iot-37.png]]<br>
+
  $ ls<br>
(注:此处两个文件的 TCP 端口号必须是没有用过的,且两个文件的端口配置要相同!)<br><br>
+
  Build_OrangePi.sh lib README.md
3.code/prebuilts/sdk/tools/目录下,执行./jack-admin kill-server 和./jack-admin restart-server<br><br>
 
'''2)Failed to contact Jack server'''<br>
 
如果你在编译的过程中,出现了如下的问题:<br>
 
  FAILED: /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar<br>
 
  prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 2>&1 || (exit 0) ) && <br>
 
(JACK_SERVER_VM_ARGUMENTS=\"-Dfile.encoding=UTF-8-XX:+TieredCompilation\" prebuilts/sdk/tools/jack-admin start-server 2>&1 || exit 0 ) &&<br>
 
(prebuilts/sdk/tools/jack-admin update server prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 4.8.ALPHA 2>&1 || exit 0 ) &&<br>
 
(prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-2.28.RELEASE.jar 2.28.RELEASE || exit 47; prebuilts/sdk/tools/jack-admin<br>
 
  update jack prebuilts/sdk/tools/jacks/jack-3.36.CANDIDATE.jar 3.36.CANDIDATE || exit 47; prebuilts/sdk/tools/jack-admin update jack<br>
 
  prebuilts/sdk/tools/jacks/jack-4.7.BETA.jar 4.7.BETA || exit 47 )"<br>
 
  Writing client settings in /home/user3/.jack-settings<br>
 
Installing jack server in "/home/user3/.jack-server"
 
  
 
<br>
 
<br>
修改:在 code/prebuilts/sdk/tools/目录下,执行./jack-admin kill-server 和./jack-admin restart-server,然后重新编译。<br><br>
 
'''3)Out of memory error'''<br>
 
1.首先停止 jack server 的运行;
 
2.去 prebuilts/sdk/tools 目录下执行 jack-admin kill-server 以杀死 Jack server;<br>
 
3.然后打开 jack-admin 文件,在文件中搜索 JACK_SERVER_COMMAND, 然 后 将 JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1
 
-Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp<br>
 
$LAUNCHER_JAR $LAUNCHER_NAME", 改为 JACK_SERVER_COMMAND="java -Xmx3g -XX:MaxJavaStackTraceDepth=-1<br>
 
-Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp<br>
 
$LAUNCHER_JAR $LAUNCHER_NAME"。也就是添加了-Xmx3g 选项。<br><br>
 
  
'''4)FAILED: setup-jack-server'''<br>
+
* <big>'''运行下载器'''</big><br>
Jack server installation not found<br>
+
$ ./Build_OrangePi.sh
解决方法:到 prebuilts/sdk/tools 目录下执行一下这个命令:./jack-admin install-server jack-launcher.jar jack-server-4.11.ALPHA.jar<br>
 
jack-launcher.jar,jack-server-4.11.ALPHA.jar 这两个文件的名字视 prebuilts/sdk/tools 目录下的文件名而定。<br><br>
 
  
'''5)测试问题'''<br>
 
遇到 sim 卡不能识别的时候,需要格式化烧录。<br><br>
 
 
== linux 编译环境搭建 ==
 
=== 获取linux 源码 ===
 
* <big>'''OrangePi 源码下载器'''</big><br>
 
{| class="wikitable" style="width:800px;"
 
|-
 
|$ sudo apt-get install git<br>
 
$ git clone https://github.com/orangepi-xunlong/OrangePi_Build.git<br>
 
$ cd OrangePi_Build<br>
 
$ ls<br>
 
Build_OrangePi.sh lib README.md<br>
 
|}
 
* <big>'''运行下载器'''</big><br>
 
{| class="wikitable" style="width:800px;"
 
|-
 
| $ ./Build_OrangePi.sh
 
|}
 
 
输入 root  密码,然后回车<br>
 
输入 root  密码,然后回车<br>
 
[[Image:4G-Iot-52.png]]<br><br>
 
[[Image:4G-Iot-52.png]]<br><br>
 
选择 0 Build system with kernel/uboot/rootfs,进入开发板型号选择界面。<br>
 
选择 0 Build system with kernel/uboot/rootfs,进入开发板型号选择界面。<br>
 
[[Image:4G-Iot-53.png]]<br><br>
 
[[Image:4G-Iot-53.png]]<br><br>
选择 23 orangepi 4G-IoT,回车后将会开始下载 Orange Pi 4G-IoT 的 Linux 源码<br>
+
选择 22 orangepi 3G-iot,回车后将会开始下载 Orange Pi 3G-iot 的 Linux 源码<br>
[[Image:4G-Iot-54.png]]<br><br>
+
[[Image:3G-iot-13.png]]<br><br>
 
下载的源码会存放在 OrangePi_Build 的同级目录下。<br><br>
 
下载的源码会存放在 OrangePi_Build 的同级目录下。<br><br>
OrangePi 4G-IoT 的 Linux 源码目录结构如下所示<br>
+
OrangePi 3G-IoT 的 Linux 源码目录结构如下所示<br>
  
 
<div style="background:#f1f1f1;border:1px solid #ddd;padding:5px; width:800px;">
 
<div style="background:#f1f1f1;border:1px solid #ddd;padding:5px; width:800px;">
第733行: 第543行:
 
├── external <br>
 
├── external <br>
 
├── kernel<br>
 
├── kernel<br>
├── output Store the output file, generate it after compiling the source code<br>
+
├── output<br>
 
├── scripts<br>
 
├── scripts<br>
 
└── toolchain<br>
 
└── toolchain<br>
第742行: 第552行:
 
=== 编译linux 源码 ===
 
=== 编译linux 源码 ===
 
* <big>'''执行编译启动脚本'''</big><br>
 
* <big>'''执行编译启动脚本'''</big><br>
{| class="wikitable" style="width:800px;"
+
$ cd OrangePi3G-iot
|-
+
$ ./build.sh
|$ cd OrangePi4G-IoT<br>
 
$ ./build.sh
 
|}
 
 
根据板子型号选择并回车<br><br>
 
根据板子型号选择并回车<br><br>
[[Image:4G-Iot-38.png]]<br><br>
+
[[Image:3G-iot-14.png]]<br><br>
 
输入 root  密码并回车,然后选择需要执行的功能<br><br>
 
输入 root  密码并回车,然后选择需要执行的功能<br><br>
 
[[Image:4G-Iot-39.png]]<br><br>
 
[[Image:4G-Iot-39.png]]<br><br>
第758行: 第565行:
 
* '''2 Build Uboot        &nbsp;&nbsp;&nbsp;&nbsp;编译 preloader 和 lk'''
 
* '''2 Build Uboot        &nbsp;&nbsp;&nbsp;&nbsp;编译 preloader 和 lk'''
 
* '''3 Build Linux        &nbsp;&nbsp;&nbsp;&nbsp;编译内核源码'''<br>
 
* '''3 Build Linux        &nbsp;&nbsp;&nbsp;&nbsp;编译内核源码'''<br>
选择 0 Build Release Image,会生成以下完整的固件包<br><br>
+
以 A 板为例,选择 0 Build Release Image,会生成以下完整的固件包<br><br>
 
<div style="background:#f1f1f1;border:1px solid #ddd;padding:5px;width:800px;">
 
<div style="background:#f1f1f1;border:1px solid #ddd;padding:5px;width:800px;">
 
output/images/<br>
 
output/images/<br>
├── OrangePi_4g-iot_ubuntu_xenial_server_linux3.18.19_v1.1<br>
+
├── OrangePi_3g-iot-A_ubuntu_xenial_server_linux3.4.67_v1.1<br>
 
│ ├── boot.img<br>
 
│ ├── boot.img<br>
 +
│ ├── boot_nand.img<br>
 +
│ ├── boot_sd.img<br>
 
│ ├── lk.bin<br>
 
│ ├── lk.bin<br>
│ ├── lk_emmc.bin<br>
 
│ ├── lk_sd.bin<br>
 
 
│ ├── logo.bin<br>
 
│ ├── logo.bin<br>
│ ├── MT6737M_Android_scatter.txt<br>
+
│ ├── MT6572_Android_scatter.txt<br>
│ ├── preloader_bd6737m_35g_b_m0.bin<br>
+
│ ├── preloader_hexing72_cwet_lca.bin<br>
 
│ ├── rootfs.img<br>
 
│ ├── rootfs.img<br>
└── trustzone.bin<br>
+
└── OrangePi_3g-iot-A_ubuntu_xenial_server_linux3.4.67_v1.1.tar.gz<br>
└── OrangePi_4g-iot_ubuntu_xenial_server_linux3.18.19_v1.1.tar.gz<br>
 
 
<br>
 
<br>
1 directory, 10 files
 
 
</div>
 
</div>
 
<br>
 
<br>
第779行: 第584行:
 
== Linux 系统的烧录 ==
 
== Linux 系统的烧录 ==
 
目前 Linux 系统不支持 modem、LCD 屏。<br>
 
目前 Linux 系统不支持 modem、LCD 屏。<br>
只能通过串口登录系统,连接 wifi 后,可通过 ssh 登录。<br><br>
+
只能通过串口登录系统,连接 wifi 后,可通过 ssh 登录。<br>
 +
烧录系统时,跳线帽接法如下。<br>
 +
[[Image:3G-iot-16.png]]<br><br>
 +
 
 +
=== 3G-IoT-A 的linux 固件烧录 ===
 +
通过烧录工具把 preloader、lk、boot.img 烧录到板载 nand flash 上。<br>
 +
<div style="border:1px solid #dddddd;background:#f1f1f1;padding:5px;">
 +
├── boot.img<br>
 +
├── boot_nand.img<br>
 +
├── boot_sd.img<br>
 +
├── lk.bin<br>
 +
├── logo.bin<br>
 +
├── MT6572_Android_scatter.txt<br>
 +
├── preloader_hexing72_cwet_lca.bin<br>
 +
└── rootfs.img
 +
</div><br><br>
 +
 
 
前面的《安卓固件烧录》已经介绍了如何使用烧录工具了,这里不再赘述,直接打开烧录工具。<br>
 
前面的《安卓固件烧录》已经介绍了如何使用烧录工具了,这里不再赘述,直接打开烧录工具。<br>
  a.'''我们点击Scatter-loading File一栏的最右侧的choose并且选择Scatter File的路径''',如下图
+
  a.我们点击Scatter-loading File一栏的最右侧的choose并且选择Scatter File的路径,如下图
[[Image:4G-Iot-60.png]]<br><br>
+
[[Image:3G-iot-17.png]]<br><br>
  b.'''先断开板子与 PC 的连接,点击 Download 按钮'''
+
  b.先断开板子与 PC 的连接,点击 Download 按钮  
[[Image:4G-Iot-61.png]]<br><br>
+
[[Image:3G-iot-18.png]]<br><br>
  c.'''接下来使用 USB 下载线,连接主机的 USB 与机器的 MircoUSB 接口'''。烧录完成
+
  c.接下来使用 USB 下载线,连接主机的 USB 与机器的 MircoUSB 接口。
[[Image:4G-Iot-62.png]]<br><br>
+
[[Image:3G-iot-19.png]]<br><br>
  d.'''启动系统'''。
+
  d.前面仅烧录了lk 和 kernel,由于 3G-iot-A 只有 512M 的板载存储,存在空间不足的问题,所以需要把 rootfs 烧录到 TF 卡上,准备一张 8G 以上,class10 的 TF 卡。格式化后。按照以下方法烧录 roofs.img<br>
将板子连接 5V 3A 的电源适配器。连接串口可以看到系统启动。<br>
+
pv rootfs.img | sudo dd of=/dev/sdb bs=1M
[[Image:4G-Iot-63.png]]<br><br>
+
sdb 是 TF 卡对应的设备文件<br>
如果板载空间不够,可以将 rootfs 烧录到 TF 卡上。步骤如下。<br><br>
+
如果是在 windows 系统,也可以用 Win32DiskImager 软件烧录。<br>
  e.'''烧录支持挂载TF卡rootfs的lk'''
+
e.将 tf 卡插入板子,上电即可启动。
点击下图框中内容<br>
+
[[Image:3G-iot-20.png]]<br><br>
[[Image:4G-Iot-64.png]]<br><br>
+
 
弹出窗口选择 lk_sd.bin。<br><br>
+
=== 3G- IoT -B 的 linux 固件烧录 ===
[[Image:4G-Iot-65.png]]<br><br>
+
该板子有 4G 的板载存储,所以可以直接将所有镜像烧到板载 EMMC 上。<br><br>
点击 download,下载完成<br>
+
a.我们点击 Scatter-loading File 一栏的最右侧的 choose 并且选择 Scatter File 的路径,如下图
  f.'''烧录 rootfs 到 TF 卡中'''
+
[[Image:3G-iot-21.png]]<br><br>
 +
b.先断开板子与 PC 的连接,点击 Download 按钮
 +
[[Image:3G-iot-22.png]]<br><br>
 +
c.接下来使用 USB 下载线,连接主机的 USB 与机器的 MircoUSB  接口。烧录完成
 +
[[Image:3G-iot-23.png]]<br><br>
 +
  d.启动系统。 将板子连接 5V2A 的电源适配器。连接串口可以看到系统启动。
 +
[[Image:3G-iot-24.png]]<br><br>
 +
'''如果板载空间不够,可以将 rootfs 烧录到 TF 卡上。步骤如下。'''
 +
a.烧录支持挂载 TF 卡 rootfs 的 boot.img 
 +
点击下图框中内容<br><br>
 +
[[Image:3G-iot-25.png]]<br><br>
 +
弹出窗口选择 boot_sd.img。<br><br>
 +
[[Image:3G-iot-26.png]]<br><br>
 +
下载完成<br>
 +
[[Image:3G-iot-27.png]]<br><br>
 +
  b.烧录 rootfs 到 TF 卡中
 
准备一张 8G 以上,class10 的 TF 卡。格式化后。按照以下方法烧录 roofs.img<br>
 
准备一张 8G 以上,class10 的 TF 卡。格式化后。按照以下方法烧录 roofs.img<br>
 
  pv rootfs.img | sudo dd of=/dev/sdb bs=1M
 
  pv rootfs.img | sudo dd of=/dev/sdb bs=1M
 
sdb 是 TF 卡对应的设备文件<br>
 
sdb 是 TF 卡对应的设备文件<br>
如果是在 windows 系统,也可以用 Win32DiskImager 软件烧录。<br><br>
+
如果是在 windows 系统,也可以用 Win32DiskImager 软件烧录。<br>
  g.启动系统
+
  c.启动系统
 
将 tf 卡插入板子,上电即可启动。<br><br>
 
将 tf 卡插入板子,上电即可启动。<br><br>
  
== 串口调试工具介绍 ==
+
== 串口调试工具 ==
首先需要准备一根 USB 转 TTL 串口线,需要支持 921600 波特率4G-IoT 的调试串口没有引出,需要用户自己飞线,如下图方框的焊点就是串口的 TXD和 RXD,需要将 GND、RXD、TXD 引出来。<br><br>
+
首先需要准备一根 USB 转 TTL 串口线,需要支持 921600 波特率。3G-iot 的调试串口为串口 1,已引出到 40pin,波特率为 921600 。按下图接好串口线,不同颜色的线对应的功能如下:<br>
[[Image:4G-Iot-41.png]]<br><br>
+
* 黑色——GND
接线方式:<br>
+
* 绿色——RX
 
+
* 白色——TX
板子 TXD 接 USB 转 TTL 的 RXD <br>
+
[[Image:3G-iot-15.png]]<br><br>
板子 RXD 接 USB 转 TTL 的 TXD <br>
 
板子 GND 接 USB 转 TTL 的 GND <br><br>
 
  
 
=== 基于Windows 平台的使用 ===
 
=== 基于Windows 平台的使用 ===
 
在使用 OrangePi 做项目开发过程中,为了获得更多的调试信息,OrangePi 默认支持串口信息调试。对于开发者而言,只需准备上面提到的材料,即可简单的获得串口调试信息。<br>
 
在使用 OrangePi 做项目开发过程中,为了获得更多的调试信息,OrangePi 默认支持串口信息调试。对于开发者而言,只需准备上面提到的材料,即可简单的获得串口调试信息。<br>
不同的上位机使用的串口调试工具大同小异,基本可以参考下文的方法进行部署。使用 Windows 平台进行串口调试的工具很多,通常使用的工具是putty。<br>
+
不同的上位机使用的串口调试工具大同小异,基本可以参考下文的方法进行部署。使用 Windows 平台进行串口调试的工具很多,通常使用的工具是putty。本节以 putty 作为例子进行部署讲解。<br><br>
本节以 putty 作为例子进行部署讲解。<br><br>
 
 
* <big>'''安装 USB 驱动'''</big><br>
 
* <big>'''安装 USB 驱动'''</big><br>
 
下载最新版的驱动 PL2303_Prolific_DriverInstaller_v130.zip,下载解压<br><br>
 
下载最新版的驱动 PL2303_Prolific_DriverInstaller_v130.zip,下载解压<br><br>
第827行: 第660行:
 
* <big>'''下载安装 Putty'''</big><br>
 
* <big>'''下载安装 Putty'''</big><br>
 
Putty 可从下面的地址下载,请选择适合自己开发环境的版本。<br>
 
Putty 可从下面的地址下载,请选择适合自己开发环境的版本。<br>
{| class="wikitable" style="width:800px;"
+
  https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html  
|-
+
 
| https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
 
|}
 
 
直接双击下载的 putty.exe 即可打开 putty,软件界面如下图所示。<br>
 
直接双击下载的 putty.exe 即可打开 putty,软件界面如下图所示。<br>
 
[[Image:4G-Iot-48.png]]<br><br>
 
[[Image:4G-Iot-48.png]]<br><br>
第846行: 第677行:
 
在 Linux 平台使用 putty 和 Windows 平台区别不太,下面主要说明有差异地方的操作步骤。所有操作都是基于 Ubuntu 14.04 系统。<br><br>
 
在 Linux 平台使用 putty 和 Windows 平台区别不太,下面主要说明有差异地方的操作步骤。所有操作都是基于 Ubuntu 14.04 系统。<br><br>
 
* <big>'''安装并启动 Putty'''</big><br>
 
* <big>'''安装并启动 Putty'''</big><br>
{| class="wikitable" style="width:800px;"
+
$ sudo apt-get install putty<br>$ sudo putty
|-
 
|$ sudo apt-get install putty<br>$ sudo putty
 
|}
 
 
* <big>'''配置 Putty'''</big><br>
 
* <big>'''配置 Putty'''</big><br>
 
串口号可以通过 ls '''/dev/ttyUSB*''' 查看波特率需要设置为 921600 并且关闭流控<br><br>
 
串口号可以通过 ls '''/dev/ttyUSB*''' 查看波特率需要设置为 921600 并且关闭流控<br><br>
 
[[Image:4G-Iot-51.png]]<br><br>
 
[[Image:4G-Iot-51.png]]<br><br>
  
== GPIO 调试 ==
+
== 其他设置 ==
GPIO 调试有两种方法:<br><br>
+
=== 连接wifi 上网 ===
1.Linux 下面有一个通用的 GPIO 操作接口,那就是我要介绍的“/sys/class/gpio”方式。<br>
+
配置无线,首先要知道 ssid 和 psk(账号,密码),输入对应的 wlan*,ssid,psk  <br>
GPIO 的配置文件在/sys/class/gpio 目录下,控制程序可以分为四个步骤:<br><br>
+
$ sudo vi /etc/network/interfaces (添加如下内容)<br><br>
①、配置 GPIO:<br>
+
auto wlan0<br>
在/sys/class/gpio 目录下可以看到文件 export,调用该文件以实现配置。该文件对所有 GPIO 编号,40pin GPIO 口,可通过原理图或手册获取。<br>
+
iface wlan0 inet dhcp wpa-ssid xxxx<br>
如 40pin 的第 37 个 pin 脚是 GPIO123 在终端输入: # echo 123 > /sys/class/gpio/export , 在此回到目录/sys/class/gpio 下,可以看到产生了<br>
+
wpa-psk xxxx<br>
一个新的目录./gpio123,里面包含了该 IO 口的输入输出设置等配置文件。注意:export 文件只有 root 写权限,执行上述命令或者以后用 C 编写的<br>
+
之后执行/etc/init.d/networking restart,无线即可连接上<br><br>
可执行文件要以 ROOT 身份执行。<br><br>
+
 
②、设置 GPIO 的方向(输入输出):<br>
+
=== GPIO 操作 ===
在终端输入:# echo "out" > /sys/class/gpio/gpio38/direction,即设置该 GPIO 为输出。<br><br>
+
<br>
③、设置 GPIO 的输出电平:<br>
+
MTK 用 ADB 修改和显示 GPIO 状态<br>
在终端输入:#echo 1 > /sys/class/gpio/gpio123/value,即设置 GPIO 输出高电平,输入 echo "0" > /sys/class/gpio/gpio123/value 设置 GPIO 输出低电平。<br>
+
获取 GPIO 的状态, cat /sys/devices/virtual/misc/mtgpio/pin<br>
④、关闭 GPIO:<br>
+
在 adb 下面直接执行 cat /sys/devices/virtual/misc/mtgpio/pin 命令则显示: pin: [mode] [pull_sel] [din] [dout] [pull en] [dir] [ies] [smt] <br>
在终端输入:#echo "38" > /sys/class/gpio/unexport,即删除 GPIO 配置文件,可以看到目录 gpio38 已经被删除.<br><br>
+
0:11101010<br>
2.MTK 用 ADB 修改和显示 GPIO 状态<br>
+
1:01101010<br>
获取 GPIO 的状态, cat /sys/devices/virtual/misc/mtgpio/pin<br><br>
+
、、、、、、<br>
在 adb 下面直接执行 cat /sys/devices/virtual/misc/mtgpio/pin 命令则显示:<br>
+
22:1-100-10-1-1<br>
pin:[mode] [pull_sel] [din] [dout] [pull en] [dir] [ies] [smt]<br><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>
 
42:00000110<br><br>
每行分别对应:<br><br>
+
每行分别对应:<br>
 
IO 编号:模式,输入上拉选择,输入值,输出值,输入上拉使能,方向 direction, 输入翻转<br><br>
 
IO 编号:模式,输入上拉选择,输入值,输出值,输入上拉使能,方向 direction, 输入翻转<br><br>
修改 GPIO 的状态:<br>
+
修改 GPIO 的状态:<br><br>
 
40pin GPIO 口,可通过原理图或手册获取,如 40pin 的第 37 个 pin 脚是 GPIO123, <br>
 
40pin GPIO 口,可通过原理图或手册获取,如 40pin 的第 37 个 pin 脚是 GPIO123, <br>
echo -wdout123 1> pin 即设置该 GPIO 输出高电平<br>
+
echo -wdout123 1 > pin 即设置该 GPIO 输出高电平<br>
echo -wdout123 0> pin 即设置该 GPIO 输出低电平<br><br>
+
echo -wdout123 0> pin 即设置该 GPIO 输出低电平<br><br>
  
 
== 版本历史 ==
 
== 版本历史 ==
第891行: 第714行:
 
! 版本 !! 日期 !! 作者 !! 摘要 !! 发布 !! 备忘录
 
! 版本 !! 日期 !! 作者 !! 摘要 !! 发布 !! 备忘录
 
|-
 
|-
| 1.1 || 2018-01-26 || Younix || 创建文档 || 2018-3-27 || -
+
| 1.1 || 2018-05-25 || 潘明敏 || 创建文档 || 2018-6-14 ||
|-
 
| 1.2 || 2018-05-10 || Pan || 增加 Android8.1|| 2018-5-18 || -
 
 
|-
 
|-
| 1.3 || 2018-10-18 || Pan || GPIO 定义及调试 || 2018-10-19 || -
+
| 1.2 || 2018-10-18 || 潘明敏 || GPIO 调试 || 2018-10-19 ||
 
|-
 
|-
| 1.4 || 2019-06-24 || Csy || Linux 源码编译及串口调试 || - || -
+
| 1.4 || 2019-04-15 || Csy || Linux 源码编译及串口调试 ||   ||  
 
|-
 
|-
| 1.5 || 2020-03-18 || Csy || 增加 Linux 系统烧录说明 || - || -
+
| 1.5 || 2020-3-18 || Csy || Linux 固件烧录 ||   ||
 
|}
 
|}
 +
<br>
 +
<br>
 +
 +
== 下载Orange Pi 3G-IoT用户手册 ==
 +
<br>
 +
更多关于Orange Pi 3G-IoT的使用信息,请查看 [http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3G-IoT-B.html Orange Pi 3G-IoT用户手册](下载-产品使用说明书)<br><br>

2022年6月30日 (四) 10:11的最新版本

介绍

什么是 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、百度云盘 的方式获取,详情参见中英文官网:
1)中文版资料的下载网址为

http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3G-IoT-B.html 

2)英文版资料的下载网址为

http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3G-IoT-B.html


开发板的供电方式

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

  • 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. $1 project_info [eg: IoT03L_mt6572_lca_b1258_wg_4g2g_ry_smt_v1.1]
  2. $2 version_info [eg: v00 v01 ...]
  3. $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 开发板

烧录相关按键与接口如下:

 

编译完成后固件将汇总在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
$sudo /etc/init.d/udev retstart
然后重启电脑

Window 下根据相应的系统下载 MTK 驱动
解压 Driver_Auto_Installer_EXE_v5.1453.03.rar
然后安装。


  • 解压并打开烧录工具
$ unzip SP_Flash_Tool_v5.1644_Linux.zip

$ cd SP_Flash_Tool_v5.1644_Linux
$ sudo ./flash_tool.sh


如果你是第一次打开软件,可能会出现 警告显示 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 登录。
烧录系统时,跳线帽接法如下。
 

3G-IoT-A 的linux 固件烧录

通过烧录工具把 preloader、lk、boot.img 烧录到板载 nand flash 上。

├── boot.img
├── boot_nand.img
├── boot_sd.img
├── lk.bin
├── logo.bin
├── MT6572_Android_scatter.txt
├── preloader_hexing72_cwet_lca.bin
└── rootfs.img



前面的《安卓固件烧录》已经介绍了如何使用烧录工具了,这里不再赘述,直接打开烧录工具。

a.我们点击Scatter-loading File一栏的最右侧的choose并且选择Scatter File的路径,如下图

 

b.先断开板子与 PC 的连接,点击 Download 按钮 

 

c.接下来使用 USB 下载线,连接主机的 USB 与机器的 MircoUSB 接口。

 

d.前面仅烧录了lk 和 kernel,由于 3G-iot-A 只有 512M 的板载存储,存在空间不足的问题,所以需要把 rootfs 烧录到 TF 卡上,准备一张 8G 以上,class10 的 TF 卡。格式化后。按照以下方法烧录 roofs.img
pv rootfs.img | sudo dd of=/dev/sdb bs=1M

sdb 是 TF 卡对应的设备文件
如果是在 windows 系统,也可以用 Win32DiskImager 软件烧录。

e.将 tf 卡插入板子,上电即可启动。

 

3G- IoT -B 的 linux 固件烧录

该板子有 4G 的板载存储,所以可以直接将所有镜像烧到板载 EMMC 上。

a.我们点击 Scatter-loading File 一栏的最右侧的 choose 并且选择 Scatter File 的路径,如下图

 

b.先断开板子与 PC 的连接,点击 Download 按钮

 

c.接下来使用 USB 下载线,连接主机的 USB 与机器的 MircoUSB  接口。烧录完成

 

d.启动系统。 将板子连接 5V2A 的电源适配器。连接串口可以看到系统启动。

 

如果板载空间不够,可以将 rootfs 烧录到 TF 卡上。步骤如下。

a.烧录支持挂载 TF 卡 rootfs 的 boot.img   

点击下图框中内容

 

弹出窗口选择 boot_sd.img。

 

下载完成
 

b.烧录 rootfs 到 TF 卡中

准备一张 8G 以上,class10 的 TF 卡。格式化后。按照以下方法烧录 roofs.img

pv rootfs.img | sudo dd of=/dev/sdb bs=1M

sdb 是 TF 卡对应的设备文件
如果是在 windows 系统,也可以用 Win32DiskImager 软件烧录。

c.启动系统

将 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 固件烧录



下载Orange Pi 3G-IoT用户手册


更多关于Orange Pi 3G-IoT的使用信息,请查看 Orange Pi 3G-IoT用户手册(下载-产品使用说明书)