打开主菜单

Wiki-Orange Pi β

更改

Orange Pi 3G-IoT-B

删除6,181字节, 2022年6月23日 (四) 17:54
无编辑摘要
=== 准备硬件与软件工具 ===
硬件需求:<br>
* Orange Pi 4G3G-IoT 开发板<br>
* 一台编译用的主机,配置最好满足以下条件:<br>
64 位 CPU<br>
更详细的内容可以参考 Google 文档 https://source.android.com/source/building<br><br>
软件需求:<br>
* Orange Pi 4G3G-IoT SDK<br>* Orange Pi 4G3G-IoT 固件<br>
* Android 烧录工具<br>
以上软件均可以通过 Mega、百度云盘 的方式获取,详情参见中英文官网:<br>
=== 开发板的供电方式 ===
开发板的供电方式有两种:<br>
* DC (5V Micro USB(5V 2A)供电:插入 DC Micro USB 适配器后即可开机。<br>* 电池供电:常用 34.7V 2V 电池,在背面有预留外接电池焊盘点 需要客户自己焊接 , 接上电池之后按开机键即可启动。<br>
=== 拆包说明 ===
收到产品后请将产品的天线从图 1 的位置放到图 2 的位置(或者放到板子外面的位置),不能贴在板子上面以免影响信号。<br><br>
[[Image:4G3G-Iotiot-35.png]]<br><br>
== Android 编译环境搭建 ==
=== 获取 SDK 源码压缩包 ===
为方便客户快速进行开发,OrangePi 有提供不同版本的 SDK 初始压缩包。<br>* '''Android6.0'''<br>下载压缩包,分别对应 OrangePi_4G初始压缩包。下载压缩包,分别对应 OrangePi_3G-IoT_Android6.0_V1IoT_Android4.04.tar.gz.00gz00, OrangePi_4GOrangePi_3G-IoT_Android6.0_V1IoT_Android4.04.tar.gz.01gz01, ...<br>OrangePi_4G...OrangePi_3G-IoT_Android6.0_V1IoT_Android4.04.tar. gz.14 总共 15 gz00 总共8 个分卷压缩包。获取到分卷压缩包后,把所有的压缩包放在一个同一目录下,如:<br>{| class="wikitable" style="width:800px;"|-| 创建目录<br> mkdir OrangePi_4GOrangePi_3G-IOT_Android6IOT_Android4.04<br> 拷贝分卷压缩包<br> cp -rf OrangePi_4GOrangePi_3G-IoT_Android6IoT_Android4.0_V1.04.tar.gz.* <br>OrangePi_4GOrangePi_3G-IOT_Android6IOT_Android4.04/<br> 合并压缩包<br> cat OrangePi_4GOrangePi_3G-IoT_Android6.0_V1IoT_Android4.04.tar.gz.* ><br>OrangePi_4GOrangePi_3G-IOT_Android6IOT_Android4.04.tar.gz<br> 解压<br> tar xzvf OrangePi_4GOrangePi_3G-IOT_Android6IOT_Android4.04.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>
* '''安装 JDK'''
'''Android6Android4.0'''<br>Android64 系统编译依赖于 JAVA6。编译前需要安装 OpenJDK,gcc4.0 系统编译依赖于 JAVA7。编译前需要安装 OpenJDK。安装命令如下。4 版本安装命令如下。<br>{| class="wikitable" style="width:800px;"|-| sudo apt-get install openjdk-76-jdk|}sudo apt-get install gcc-4.4<br>配置 JAVA 环境变量,比如安装路径为 /usr/lib/jvm/java-7-openjdk-amd64jdk1.6.0_31<br>
可以在终端执行如下命令配置环境变量。<br>
{| class="wikitable" style="width:800px;"|-| export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64<br>export PATH=$JAVA_HOME/bin:$PATH<br>export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/toolsjdk1.jar|}'''Android86.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-amd640_31<br> export PATH=$JAVA_HOME/bin:$PATH<br> export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar<br>|}
* '''安装软件包'''<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> libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev<br> 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>
{| 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> libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev<br> 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 源码 ===
<big>'''全部编译'''</big><br>
为方便客户进行开发,Orange Pi 提供了一系列的编译脚本。<br>
* '''Android6.0'''<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|}
auto.sh 为自动编译脚本<br>
clean.sh 为自动清除编译结果脚本<br>tar_img.sh 为打包脚本<br><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>|-| 板子是:4g2g $ ./auto.sh IoT_bd6737m_35g_b_m0_op_smt_hd720_pcb_v2 IoT03L_mt6572_lca_b1258_wg_4g2g_ry_smt_v1.1 v00 eng|}
传入的三个参数含义如下:<br>
#$1 project_info [eg: IoT_bd6737m_35g_b_m0_op_smt_hd720_pcb_v2IoT03L_mt6572_lca_b1258_wg_4g2g_ry_smt_v1.1] <br>#$2 version_info [eg: v00 v01 ...]<br>
#$3 compile_mode [eng:user userdebug eng]<br>
auto.sh带的三个参数含义,在脚本开头部分有详细说明。<br><br>
* <big>'''Android8.1模块编译'''</big><br>目录为 SDK最常用的修改了kernel部分的文件,可以采用如下命令:<br>./mk -o=TARGET_BUILD_VARIANT=[user/codeuserdebug/orangepieng] projName n K && ./scriptsmk -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>$ 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>{| classmk -o="wikitable" styleTARGET_BUILD_VARIANT="width:800px;"eng || hexing72_cwet_kk || n k &&
|-
| $ ./auto.sh IoT_k37mv1_bsp_ry_smt_hd720_pcb_v2 v00 mk -o=TARGET_BUILD_VARIANT=eng|| hexing72_cwet_kk || r bootimage
|}
传入的三个参数含义如下:<br>#$1 project_info [eg: IoT_k37mv1_bsp_ry_smt_hd720_pcb_v2]<br>#$2 version_info [eg: v00 v01 ..其中驱动部分修改编译,详细可以参考文档:MT6592_Driver_All_In_One_Part.]<br>#$3 compile_mode [eng:user userdebug eng]pdf<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>
[[Image:3G-iot-6.png.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; ">
$ tree IoT_op_smt_hd720_pcb_v2 IoT_op_smt_hd720_pcb_v2IoT03L_b1258_wg_4g2g_ry_smt_v1.1<br>
├── images<br>
│ ├── boot.img<br>
│ ├── cache.img<br>
│ ├── lk.bin<br>
│ ├── logo.bin<br>
│ ├── MT6737M_Android_scatterMT6572_Android_scatter.txt<br>│ ├── preloader_bd6737m_35g_b_m0preloader_hexing72_cwet_lca.bin<br>│ ├── ramdisk.img<br>│ ├── ramdisk-recovery.img<br>
│ ├── recovery.img<br>
│ ├── secro.img<br>
│ ├── system.img<br>
│ ├── trustzone.bin<br>
│ └── userdata.img<br>
└── modem<br>
├── APDB_MT6735_S01_alps-mp-m0APDB_MT6572_S01_MAIN2.mp1_W171_W10.2124<br>├── _APDB_MT6735_S01_alps-mp-m0_APDB_MT6572_S01_MAIN2.mp1_W171_W10.2124.check<br>└── APDB_MT6735_S01_alps-mp-m0.mp1_W17.21_ENUM</div><br>除此之外,开发者也可通过 Linux_Pack_Firmware 对以上固件进行打包,生成统一固件 update.img。<br>* '''Android8.1'''<br><br>编译完成后固件将汇总在 code/IoT_ry_smt_hd720_pcb_v2 目录中,并打包形如 IoT_ry_smt_hd720_pcb_v2_v09_eng_20180504163653├── APDB_MT6572_S01_MAIN2.tar1_W10.gz 名字的压缩包。<br><div style="background:#f1f1f1;border:1px solid #ddd;padding:5px;width:800px;">$ tree IoT_op_smt_hd720_pcb_v2 IoT_op_smt_hd720_pcb_v224_ENUM<br>├── imagesBPLGUInfoCustomAppSrcP_MT6572_S00_MOLY_WR8_W1315_MD_WG_MP_V47_1_wg_n<br>├── bootcatcher_filter_1_wg_n.imgbin<br>├── cacheDbgInfo_WR8.W1315.MD.img<br>│ ├── lkWG.bin<br>MP_HEXING72_CWET_KK_HSPA_MOLY_WR8_W1315_MD_WG_MP│ ├── logo.bin_V47_2017_10_26_22_35_1_wg_n<br>├── MT6737M_Android_scattermodem_1_wg_n.txtimg<br>│ ├── preloader_k37mv1_bsp└── modem_1_wg_n.bin<br>mak│ ├── recovery.img<br>│ ├── secro.img<br/div>│ ├── system.img<br>│ ├── trustzone.bin<br>│ └── userdata.img此后,请参照执行完 《OrangePi 3G-IoT Android 固件烧录指南》完成固件的烧录。<br>└── modem我们提供已经编译且打包好的镜像分区文件,请根据自身的需求自行下载:<br>├── APDB_MT6735_S01_alps-mp-m0http://www.mp1_W18orangepi.04cn<br>├── _APDB_MT6735_S01_alps-mp-m0.mp1_W18通过如下命令进行Android 4.04.check4 镜像解压<br>└── APDB_MT6735_S01_alps-mp-m0 $ rar x IoT03L_b1258_wg_4g2g_ry_smt_v1.mp1_W181.04_ENUMrar</divbr>即可得到上文中固件清单中的文件。或者也可以参照Android 环境搭建及固件编译部分自行编译。<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>
* Windows 10<br>
=== 烧录工具介绍 ===
烧录工具为 '''Smart Phone Flash Tool请前往 Tool'''请前往 OrangePi官方网站中 4G3G-IoT 版块下载。<br><br>
本工具有 Windows 和 Linux 版。请根据自己的主机环境选取合适的版本。界面如下:<br><br>
[[Image:4G-Iot-5.png]]<br><br>
<br>
如果你是第一次打开软件,可能会出现 警告显示 scatter file 文件未找到 :<br>
[[Image:4G3G-Iotiot-307.png]]<br><br>
这是正常的。后面我们将手动指定 Scatter File 的路径。点击 OK 后我们进入软件。<br><br>
* <big>'''进入烧录模式'''</big><br>
a.首先切换到 Download 标签页,显示如下:
[[Image:4G3G-Iotiot-318.png]]<br><br>
b.我们点击 Scatter-loading File 一栏的最右侧的 choose并且选择 Scatter File 的路径,如下图
[[Image:4G3G-Iotiot-329.png]]<br><br> c.双击选择后,在下面的分区信息显示部分将会自动填充各个分区文件所在的路径,以及他们将要被烧录的绝对起始地址,如下图双击选择后,在下面的'''分区信息显示部分'''将会自动填充各个分区文件所在的路径,以及他们将要被烧录的绝对起始地址,如下图:[[Image:4G3G-Iotiot-3310.png]]<br><br>
d.在分区信息显示部分的左上角有一个下拉菜单其中有三个选项<br>
Format All + Download //擦除机器内的全部分区信息,并且重新下载选中分区<br>
因为我们的每台机器在出厂的时候都有针对于进行各项参数的校准,在 Format All后会丢失校准信息。<br>
如果不慎出现此情况请联系售后并根据指导通过机器码获取校准参数,并按照《4G-IOT 校准参数导入导出工具和说明》重新烧录校准参数。<br>
e.接下来使用 USB 下载线,连接主机的 USB 与机器的 MircoUSB 接口。右上角红灯亮。戴上跳线帽,具体如下图所示:<br><span style="color[[Image:red;">此时不需要连接 DC 电源。3G-iot-11.png]]</spanbr><br> f.点击 接下来使用 USB 下载线,连接主机的 USB 与机器的 MircoUSB 接口。右上角红灯亮点击 Download 按钮进行下载 [[Image:4G-Iot-34.png]]<br>
g.下载完成后界面如下
[[Image:4G-Iot-35.png]]<br>
h.拔掉USB线。插上DC电源。拔掉USB线。插上 Mirco USB 电源。。
等待5秒将会显示关机充电界面。<br>
长按Power按键5秒后松开,会开机进入系统。<br>
当更新的分区比较多时,第一次开机也会时间稍长(全分区更新的情况开机需要8min),请耐心等待。<br><br>
Window 系统需要下载 SP_Flash_Tool_v5.1644_Win.zip,然后解压安装,就可以烧录固件了。操作方法和 Linux 的一样。<br><br>
接下来请享用您自己的定制 4G 手机吧。: )
 
=== 常见问题 ===
Android8.1 编译工具链使用了全新的 Jack server 来取代以往的编译器工具,所以编译时会出现问题。以下是 Android8.1 编译的常见问题。<br><br>
'''1)编译前要先配 Jack server'''<br>
1.修改$HOME 路径下的.jack 文件:<br>
[[Image:4G-Iot-36.png]]<br><br>
2.修改$HOME 路径下的.jack-settings 文件:<br>
[[Image:4G-Iot-37.png]]<br>
(注:此处两个文件的 TCP 端口号必须是没有用过的,且两个文件的端口配置要相同!)<br><br>
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>
修改:在 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>
Jack server installation not found<br>
解决方法:到 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>
[[Image:4G-Iot-52.png]]<br><br>
选择 0 Build system with kernel/uboot/rootfs,进入开发板型号选择界面。<br>
[[Image:4G-Iot-53.png]]<br><br>
选择 23 22 orangepi 4G3G-IoT,回车后将会开始下载 iot,回车后将会开始下载 Orange Pi 4G3G-IoT iot 的 Linux 源码<br>[[Image:4G3G-Iotiot-5413.png]]<br><br>
下载的源码会存放在 OrangePi_Build 的同级目录下。<br><br>
OrangePi 4G3G-IoT 的 Linux 源码目录结构如下所示<br>
<div style="background:#f1f1f1;border:1px solid #ddd;padding:5px; width:800px;">
├── external <br>
├── kernel<br>
├── output Store the output file, generate it after compiling the source code<br>
├── scripts<br>
└── toolchain<br>
=== 编译linux 源码 ===
* <big>'''执行编译启动脚本'''</big><br>
{| class="wikitable" style="width:800px;"|-| $ cd OrangePi4GOrangePi3G-IoT<br>iot $ ./build.sh|}
根据板子型号选择并回车<br><br>
[[Image:4G3G-Iotiot-3814.png]]<br><br>
输入 root 密码并回车,然后选择需要执行的功能<br><br>
[[Image:4G-Iot-39.png]]<br><br>
* '''2 Build Uboot &nbsp;&nbsp;&nbsp;&nbsp;编译 preloader 和 lk'''
* '''3 Build Linux &nbsp;&nbsp;&nbsp;&nbsp;编译内核源码'''<br>
选择 以 A 板为例,选择 0 Build Release Image,会生成以下完整的固件包<br><br>
<div style="background:#f1f1f1;border:1px solid #ddd;padding:5px;width:800px;">
output/images/<br>
├── OrangePi_4gOrangePi_3g-iot_ubuntu_xenial_server_linux3iot-A_ubuntu_xenial_server_linux3.184.19_v167_v1.1<br>
│ ├── boot.img<br>
│ ├── boot_nand.img<br>
│ ├── boot_sd.img<br>
│ ├── lk.bin<br>
│ ├── lk_emmc.bin<br>
│ ├── lk_sd.bin<br>
│ ├── logo.bin<br>
│ ├── MT6737M_Android_scatterMT6572_Android_scatter.txt<br>│ ├── preloader_bd6737m_35g_b_m0preloader_hexing72_cwet_lca.bin<br>
│ ├── rootfs.img<br>
└── trustzone.bin<br>└── OrangePi_4gOrangePi_3g-iot-iot_ubuntu_xenial_server_linux3A_ubuntu_xenial_server_linux3.184.19_v167_v1.1.tar.gz<br>
<br>
1 directory, 10 files
</div>
<br>
8,460
个编辑