|
|
(245 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | [[NanoPi M4|English]]
| |
− | ==介绍==
| |
− | [[File:NanoPi M4-01B.jpg|thumb|Overview]]
| |
− | [[File:NanoPi M4-A01.jpg|thumb|Front]]
| |
− | [[File:NanoPi M4-B01.jpg|thumb|Back]]
| |
− | *NanoPi M4是基于RK3399 SoC设计的一款尺寸和接口与树莓派B3+兼容的嵌入式开发板。它的尺寸只有85x56mm,接口丰富, 布局紧凑, 非常适合二次开发, 并方便嵌入到最终产品中去。
| |
− | *NanoPi M4除了有4个USB3.0 A型主口, 一个千兆以太网口, 一个HDMI 2.0 A型口, 一个3.5mm耳机输出, 和一个Type-C等标准接口外, 还板载2.4G & 5G双频WiFi蓝牙模组, 和丰富的扩展接口,包括双MIPI-CSI(其中一路可做DSI), PCIex2, USB2.0, eMMC Socket, I2C, UART,SPI, 八通道I2S,PWM,RTC, GPIO等。M4没有板载eMMC, 默认通过SD启动系统, 但也可通过eMMC Socket外扩eMMC, 实现eMMC启动。
| |
− | *NanoPi M4有4GB LPDDR3和2GB DDR3两个版本。支持运行Android 7.1和Lubuntu Desktop两种系统,它们均带有GPU和VPU加速处理。
| |
| | | |
− | ==硬件特性==
| + | {{BurnLinuxToExtDrive-Rockchip/zh|NanoPC-T4}} |
− | * 主控芯片: Rockchip RK3399
| + | {{BurnLinuxToExtDrive-Rockchip|NanoPC-T4}} |
− | ** CPU: big.LITTLE大小核架构,双Cortex-A72大核(up to 2.0GHz)+四Cortex-A53小核结构(up to 1.5GHz)
| + | |
− | ** GPU: Mali-T864 GPU,支持OpenGL ES1.1/2.0/3.0/3.1, OpenVG1.1, OpenCL, DX11, 支持AFBC(帧缓冲压缩)
| + | |
− | ** VPU: 支持4K VP9 and 4K 10bits H265/H264 视频解码,高达60fps, 双VOP显示等视频编解码功能
| + | |
− | * 电源管理单元: RK808-D PMIC, 搭配独立DC/DC, 支持动态调压, 软件关机, 按键开机, RTC唤醒, 睡眠唤醒等功能
| + | |
− | * 内存: 双通道4GB LPDDR3-1866, 或 双通道2GB DDR3-1866
| + | |
− | * Flash: 支持扩展eMMC模块
| + | |
− | * 有线网络: 原生千兆以太网
| + | |
− | * Wi-Fi/蓝牙: 802.11a/b/g/n/ac, Bluetooth 4.1 双频Wi-Fi蓝牙模块, 双天线
| + | |
− | * 视频输入: 1个或2个4线MIPI-CSI, 双ISP像素处理能力高达13MPix/s,支持双路摄像头数据同时输入
| + | |
− | * 视频输出
| + | |
− | ** HDMI: HDMI 2.0a, 支持4K@60Hz显示,支持HDCP 1.4/2.2
| + | |
− | ** LCD Interface: 一个4线MIPI-DSI
| + | |
− | * Audio Out: 3.5mm 双通道耳机接口, 或者通过HDMI输出
| + | |
− | * Audio In: 2.54mm排针形式(默认不焊)的麦克风接口
| + | |
− | * USB 3.0: 4个USB 3.0 Host A型接口
| + | |
− | * USB Type-C: 支持USB2.0 OTG 和 5V电源输入
| + | |
− | * microSD Slot x 1
| + | |
− | * 40Pin GPIO 扩展接口:
| + | |
− | ** 2 X 3V/1.8V I2C, up to 1 x 3V UART, 1 X 3V SPI, 1 x SPDIF_TX, up to 8 x 3V GPIOs
| + | |
− | ** 1 x 1.8V 8通道 I2S
| + | |
− | * 24Pin 扩展接口:
| + | |
− | ** 2个独立的原生USB 2.0 Host
| + | |
− | ** PCIe x2
| + | |
− | ** PWM x1, PowerKey
| + | |
− | * 调试串口: 4 Pin 2.54mm 调试串口, 3V电平, 波特率为1500000
| + | |
− | * LED: 1 x power LED and 1 x GPIO Controled LED
| + | |
− | * RTC电池座子: 2 Pin 1.27/1.25mm RTC备份电池接口
| + | |
− | * 供电电源: DC 5V/3A
| + | |
− | * PCB: 8 Layer, 85 mm x 56 mm
| + | |
− | * 环境工作温度: 0℃ to 80℃
| + | |
− | | + | |
− | ==接口布局和尺寸==
| + | |
− | ===接口布局===
| + | |
− | [[File:NanoPi M4-4GB-1807-IF-01.jpg |thumb|600px|NanoPi M4 Layout]]
| + | |
− | [[File:NanoPi M4-2GB-1807-IF-01.jpg |thumb|600px|NanoPi M4 Layout]]
| + | |
− | * '''40 Pin GPIO1 引脚定义'''
| + | |
− | ::{| class="wikitable"
| + | |
− | |-
| + | |
− | |'''Pin#''' || '''Assignment''' ||'''Pin#''' || '''Assignment'''
| + | |
− | |-
| + | |
− | |1 || VCC3V3_SYS ||2 || VDD_5V
| + | |
− | |-
| + | |
− | |3 || I2C2_SDA(3V) ||4 || VDD_5V
| + | |
− | |-
| + | |
− | |5 || I2C2_SCL(3V) ||6 || GND
| + | |
− | |-
| + | |
− | |7 || GPIO1_A0(3V) ||8 || GPIO4_C1/I2C3_SCL(3V)
| + | |
− | |-
| + | |
− | |9 || GND ||10 || GPIO4_C0/I2C3_SDA(3V)
| + | |
− | |-
| + | |
− | |11 || GPIO1_A1(3V) ||12 || GPIO1_C2(3V)
| + | |
− | |-
| + | |
− | |13 || GPIO1_A3(3V) ||14 || GND
| + | |
− | |-
| + | |
− | |15 || GPIO1_A4(3V) ||16 || GPIO1_C6(3V)
| + | |
− | |-
| + | |
− | |17 || VCC3V3_SYS ||18 || GPIO1_C7(3V)
| + | |
− | |-
| + | |
− | |19 || SPI1_TXD/UARM4_TX(3V) ||20 || GND
| + | |
− | |-
| + | |
− | |21 || SPI1_RXD/UARM4_RX(3V) ||22 || GPIO1_D0(3V)
| + | |
− | |-
| + | |
− | |23 || SPI1_CLK(3V) ||24 || SPI1_CSn0(3V)
| + | |
− | |-
| + | |
− | |25 || GND ||26 || GPIO4_C5/SPDIF_TX(3V)
| + | |
− | |-
| + | |
− | |27 || I2C2_SDA(1.8V) ||28 || I2C2_SCL(1.8V)
| + | |
− | |-
| + | |
− | |29 || I2S0_LRCK_RX(1.8V) ||30 || GND
| + | |
− | |-
| + | |
− | |31 ||I2S0_LRCK_TX(1.8V) ||32 || I2S_CLK(1.8V)
| + | |
− | |-
| + | |
− | |33 || I2S0_SCLK(1.8V) ||34 || GND
| + | |
− | |-
| + | |
− | |35 || I2S0_SDI0(1.8V) ||36 || I2S0_SDO0(1.8V)
| + | |
− | |-
| + | |
− | |37 || I2S0_SDI1SDO3(1.8V) ||38 || I2S0_SDI2SDO2(1.8V)
| + | |
− | |-
| + | |
− | |39 || GND ||40 || I2S0_SDI3SDO1(1.8V)
| + | |
− | |}
| + | |
− | | + | |
− | * '''24 Pin GPIO2 引脚定义'''
| + | |
− | ::{| class="wikitable"
| + | |
− | |-
| + | |
− | |'''Pin#''' || '''Assignment''' ||'''Pin#''' || '''Assignment'''
| + | |
− | |-
| + | |
− | |1 || VCC5V0_SYS ||2 || VCC5V0_SYS
| + | |
− | |-
| + | |
− | |3 || PCIE_RX1_P ||4 || PCIE_TX1P
| + | |
− | |-
| + | |
− | |5 || PCIE_RX1_N ||6 || PCIE_TX1N
| + | |
− | |-
| + | |
− | |7 || GND ||8 || GND
| + | |
− | |-
| + | |
− | |9 || PCIE_RX0_P ||10 || PCIE_TX0P
| + | |
− | |-
| + | |
− | |11 || PCIE_RX0_N ||12 || PCIE_TX0N
| + | |
− | |-
| + | |
− | |13 || GND ||14 || GND
| + | |
− | |-
| + | |
− | |15 || PCIE_REF_CLKP ||16 || HOST0_DM
| + | |
− | |-
| + | |
− | |17 || PCIE_REF_CLKN ||18 || HOST0_DP
| + | |
− | |-
| + | |
− | |19 || GND ||20 || GND
| + | |
− | |-
| + | |
− | |21 || PWR_KEY ||22 || HOST1_DM
| + | |
− | |-
| + | |
− | |23 || GPIO4_C6/PWM1(3V) ||24 || HOST1_DP
| + | |
− | |}
| + | |
− | | + | |
− | * '''MIPI-CSI接口引脚定义'''
| + | |
− | :: 0.5mm FPC 连接器
| + | |
− | :: MIPI-CSI2也可作为MIPI-DSI接口连接LCD显示屏
| + | |
− | ::{| class="wikitable"
| + | |
− | |-
| + | |
− | |'''Pin#''' || '''MIPI-CSI1''' || '''MIPI-CSI2''' || '''Description '''
| + | |
− | |-
| + | |
− | |1 || VCC5V0_SYS || VCC5V0_SYS || 5V Power ouput
| + | |
− | |-
| + | |
− | |2 || VCC5V0_SYS || VCC5V0_SYS || 5V Power ouput
| + | |
− | |-
| + | |
− | |3 || GND || GND || Return current path
| + | |
− | |-
| + | |
− | |4 || VCC_CSI_AF2.8V || VCC_CSI_AF2.8V || 2.8V Power for VCM
| + | |
− | |-
| + | |
− | |5 || VCC_CSI_1.2V || VCC_CSI_1.2V || 1.2V Power for image sensor core circuit
| + | |
− | |-
| + | |
− | |6 || VCC1V8_CAM || VCC1V8_CAM || 1.8V power for I/O circuit
| + | |
− | |-
| + | |
− | |7 || VCC_CSI_2.8V || VCC_CSI_2.8V || 2.8V power for image sensor analog circuit
| + | |
− | |-
| + | |
− | |8 || VCC_CSI_1.0V || VCC_CSI_1.0V || 1.0V Power for image sensor core circuit
| + | |
− | |-
| + | |
− | |9 || I2C1_SCL || I2C2_SCL || 1.8V I2C clock signal
| + | |
− | |-
| + | |
− | |10 || I2C1_SDA || I2C2_SDA || 1.8V I2C data signal
| + | |
− | |-
| + | |
− | |11 || MIPI_CSI0_RST || MIPI_CSI1_RST || reset camera module
| + | |
− | |-
| + | |
− | |12 || MIPI_CSI0_PWN || MIPI_CSI1_PWN || Power down camera module
| + | |
− | |-
| + | |
− | |13 || GND || GND || Return current path
| + | |
− | |-
| + | |
− | |14 || GPIO2_B3_CIF_CLKOUTA || GPIO2_B3_CIF_CLKOUTA || MCLK to camera module
| + | |
− | |-
| + | |
− | |15 || GND || GND || Return current path
| + | |
− | |-
| + | |
− | |16 || MIPI_RX0_D3P || MIPI_TX1/RX1_D3P || MIPI CSI positive differential data line transceiver output
| + | |
− | |-
| + | |
− | |17 || MIPI_RX0_D3N || MIPI_TX1/RX1_D3N || MIPI CSI negative differential data line transceiver output
| + | |
− | |-
| + | |
− | |18 || GND || GND || Return current path
| + | |
− | |-
| + | |
− | |19 || MIPI_RX0_D2P || MIPI_TX1/RX1_D2P || MIPI CSI positive differential data line transceiver output
| + | |
− | |-
| + | |
− | |20 || MIPI_RX0_D2N || MIPI_TX1/RX1_D2N || MIPI CSI negative differential data line transceiver output
| + | |
− | |-
| + | |
− | |21 || GND || GND || Return current path
| + | |
− | |-
| + | |
− | |22 || MIPI_RX0_D1P || MIPI_TX1/RX1_D1P || MIPI CSI positive differential data line transceiver output
| + | |
− | |-
| + | |
− | |23 || MIPI_RX0_D1N || MIPI_TX1/RX1_D1N || MIPI CSI negative differential data line transceiver output
| + | |
− | |-
| + | |
− | |24 || GND || GND || Return current path
| + | |
− | |-
| + | |
− | |25 || MIPI_RX0_CLKP || MIPI_TX1/RX1_CLKP || MIPI CSI positive differential clock line transceiver output
| + | |
− | |-
| + | |
− | |26 || MIPI_RX0_CLKN || MIPI_TX1/RX1_CLKN || MIPI CSI negative differential clock line transceiver output
| + | |
− | |-
| + | |
− | |27 || GND || GND || Return current path
| + | |
− | |-
| + | |
− | |28 || MIPI_RX0_D0P || MIPI_TX1/RX1_D0P || MIPI CSI positive differential data line transceiver output
| + | |
− | |-
| + | |
− | |29 || MIPI_RX0_D0N || MIPI_TX1/RX1_D0N || MIPI CSI negative differential data line transceiver output
| + | |
− | |-
| + | |
− | |30 || GND || GND || Return current path
| + | |
− | |}
| + | |
− | | + | |
− | * '''eMMC Socket接口引脚定义'''
| + | |
− | ::{| class="wikitable"
| + | |
− | |-
| + | |
− | |'''Pin#''' || '''Assignment''' ||'''Pin#''' || '''Assignment'''
| + | |
− | |-
| + | |
− | |1 || EMMC_D0 ||2 || EMMC_D1
| + | |
− | |-
| + | |
− | |3 || EMMC_D2 ||4 || EMMC_D3
| + | |
− | |-
| + | |
− | |5 || EMMC_D4 ||6 || EMMC_D5
| + | |
− | |-
| + | |
− | |7 || EMMC_D6 ||8 || EMMC_D7
| + | |
− | |-
| + | |
− | |9 || EMMC_STRB ||10 || GND
| + | |
− | |-
| + | |
− | |11 || EMMC_CMD ||12 || EMMC_CLKO
| + | |
− | |-
| + | |
− | |13 || N/C ||14 || GND
| + | |
− | |-
| + | |
− | |15 || N/C ||16 || VCC1V8_S3
| + | |
− | |-
| + | |
− | |17 || eMMC_RST ||18 || VCC3V3_S3
| + | |
− | |-
| + | |
− | |19 || GND ||20 || GND
| + | |
− | |}
| + | |
− | | + | |
− | * '''调试串口引脚定义'''
| + | |
− | :: 3V电平, 波特率1500000bps
| + | |
− | ::{| class="wikitable"
| + | |
− | |-
| + | |
− | |'''Pin#''' ||'''Assignment''' || '''Description '''
| + | |
− | |-
| + | |
− | |1 || GND || 0V
| + | |
− | |-
| + | |
− | |2 || VCC5V0_SYS || 5V power output
| + | |
− | |-
| + | |
− | |3 || UART2DBG_TX || output
| + | |
− | |-
| + | |
− | |4 || UART2DBG_RX || intput
| + | |
− | |}
| + | |
− | | + | |
− | *'''USB接口'''
| + | |
− | ::USB 3.0 接口具有2A过流保护功能.
| + | |
− | | + | |
− | *'''RTC'''
| + | |
− | ::我们实测的RTC备份电流为27uA.
| + | |
− | ::连接器型号: Molex 53398-0271
| + | |
− | :'''其他说明'''
| + | |
− | ::#只能从Type-C或40Pin GPIO接口的第2和第4脚给板子供电, 电压范围4.7~5.5V
| + | |
− | ::#板子原理图: [http://wiki.friendlyarm.com/wiki/images/d/dd/NanoPi-M4-2GB-1807-Schematic.pdf NanoPi-M4-2GB-1807-Schematic.pdf] [http://wiki.friendlyarm.com/wiki/images/7/7a/NanoPi-M4-4GB-1807-Schematic.pdf NanoPi-M4-4GB-1807-Schematic.pdf]
| + | |
− | | + | |
− | ===尺寸===
| + | |
− | [[File:NanoPi M4_1807_Drawing.png|frameless|800px|NanoPi M4 Dimensions]]
| + | |
− | | + | |
− | ::PCB dxf文件, 仅供做产品时结构设计使用: [http://wiki.friendlyarm.com/wiki/images/e/e4/NanoPi-M4-1807_Drawing%28dxf%29.zip NanoPi-M4-1807-Drawing(dxf).zip]
| + | |
− | | + | |
− | ==快速入门==
| + | |
− | ===准备工作===
| + | |
− | 要开启你的NanoPi-M4,请先准备好以下硬件:
| + | |
− | * NanoPi-M4主板
| + | |
− | * Type-C数据线
| + | |
− | * TF卡: Class10或以上的8GB microSD卡
| + | |
− | * USB转串口适配器(可选,用于调试或PC上进行操作)
| + | |
− | * 一个5V/3A或以更大功率的电源适配器
| + | |
− | * 一台支持HDMI输入的显示器或者电视(或选购LCD配件)
| + | |
− | * 一套USB键盘鼠标,同时连接更多USB的设备时还需要USB HUB
| + | |
− | * 一台电脑,需要联网,建议使用<b>Ubuntu 18.04 64位系统</b>
| + | |
− | | + | |
− | ===快速从SD卡启动===
| + | |
− | 首先访问[http://download.friendlyarm.com/{{#replace:{{#replace:{{BASEPAGENAME}}| |}}|/zh|}} 此处的下载地址]下载需要的固件文件:<br />
| + | |
− | * 您需要准备一张8G或以上容量的SDHC卡,该卡的已有数据将会被破坏,因此请先对SD卡上的数据进行备份。 <br />
| + | |
− | {| class="wikitable"
| + | |
− | |-
| + | |
− | | colspan=2 | Image Files
| + | |
− | |-
| + | |
− | | rk3399-friendlycore-bionic-4.4-arm64-YYYYMMDD.img.zip
| + | |
− | | FriendlyCore系统固件 (内置Qt 5.10.0),基于Ubuntu core
| + | |
− | |-
| + | |
− | | rk3399-lubuntu-desktop-xenial-4.4-armhf-YYYYMMDD.img.zip
| + | |
− | | LUbuntu桌面版固件,自带X Window图形界面
| + | |
− | |-
| + | |
− | | colspan=2 | Flash Utility:
| + | |
− | |-
| + | |
− | | win32diskimager.rar
| + | |
− | | Windows utility. Under Linux users can use "dd"
| + | |
− | |-
| + | |
− | |}
| + | |
− | *将固件和烧写工具分别解压,在Windows下插入SD卡(限8G及以上的卡),以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上, 选择你的SD卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。
| + | |
− | *当制作完成 SD 卡后,拔出 SD 卡插入卡槽,上电启动即可。<br />
| + | |
− | | + | |
− | | + | |
− | ===串口调试===
| + | |
− | 如果你想查看NanoPi-M4启动时更多详细的信息,或者更直接的对其进行控制,建议连接并使用调试串口。<br />
| + | |
− | * 使用准备好的USB转串口适配器和连接线(需另购),连接开发板:
| + | |
− | :{| class="wikitable"
| + | |
− | |-
| + | |
− | |'''Pin#''' ||'''开发板调试串口''' || '''USB转串口适配器'''
| + | |
− | |-
| + | |
− | |1 || GND || GND
| + | |
− | |-
| + | |
− | |2 || VCC5V0_SYS || NC (不需要连接) <br /> 注: Matrix USB2UART适配器,请将5V ON/OFF切换到OFF
| + | |
− | |-
| + | |
− | |3 || UART2DBG_TX || RX
| + | |
− | |-
| + | |
− | |4 || UART2DBG_RX || TX
| + | |
− | |}
| + | |
− | * 将USB转串口适配器连接到PC Linux,通常会识别为ttyUSB0,或使用以下命令来确定设备名字:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | dmesg | grep ttyUSB
| + | |
− | ls -l /dev/ttyUSB*
| + | |
− | </syntaxhighlight>
| + | |
− | * 在PC Linux安装minicom,运行minicom,配置串口设备和参数(1500000 Bps, 8N1, 流控无)
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | sudo apt-get install minicom
| + | |
− | minicom -s
| + | |
− | </syntaxhighlight>
| + | |
− | '''注意''': RK3399调试串口的波特率缺省是'''1500000''',有些适配器可能达不到此速率,还有可能因USB延长线或连接到USB hub出现异常(如乱码),需检查并更换。
| + | |
− | | + | |
− | ==Android7系统的使用==
| + | |
− | | + | |
− | [[File:rk3399-android7-home.png|thumb|rk3399-android7-home]]
| + | |
− | [[File:rk3399-android7-icons.png|thumb|rk3399-android7-icons]]
| + | |
− | | + | |
− | 我们为 '''NanoPi-M4''' 提供了完善的Android7.1 BSP,代码使用 gitlab.com 平台管理,完全开源,支持GPU加速和VPU硬件加速。
| + | |
− | ===使用MIPI摄像头进行拍照和录像===
| + | |
− | | + | |
− | NanoPi-M4在Android系统下,可以搭配 MIPI摄像头CAM1320 进行拍照和录像,操作比较简单,连接摄像头到NanoPi-M4的MIPI接口,开机进入 Android 系统,用系统自带的 Camera 应用即可完成拍照和录像,操作跟 Android 手机是一样的。<br />
| + | |
− | | + | |
− | NanoPi-M4板上共有两个MIPI接口可以连接两个摄像头分别对应前置摄像头和后置摄像头,其对应关系如下表所示:<br />
| + | |
− | ::{| class="wikitable"
| + | |
− | |-
| + | |
− | |接口位置 || 摄像头位置
| + | |
− | |-
| + | |
− | |MIPI-CSI1 || Android 后置摄像头
| + | |
− | |-
| + | |
− | |MIPI-CSI2 || Android 前置摄像头
| + | |
− | |}
| + | |
− | | + | |
− | ===HDMI显示设置===
| + | |
− | | + | |
− | 如果连接了HDMI显示设备,可进入 Android 的 Settings -> Display -> HDMI 进行设置。
| + | |
− | ::{| class="wikitable"
| + | |
− | |-
| + | |
− | |HDMI Resolution || 缺省为 Auto,可手动设置显示分辨率,最高可支持 4K 分辨率
| + | |
− | |- | + | |
− | |Screen Zoom || 用户可观察红色边框的显示,点击中间的4个箭头按钮来进行缩放调节
| + | |
− | |-
| + | |
− | |HDMI Rotation || 可进行横竖屏切换
| + | |
− | |}
| + | |
− | | + | |
− | {{FriendlyCoreGeneral/zh|NanoPi-M4}}
| + | |
− | ==如何编译系统==
| + | |
− | ===搭建编译环境===
| + | |
− | 搭建编译Android的环境建议使用64位的Ubuntu 16.04,安装需要的包即可。
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zip
| + | |
− | sudo apt-get install flex curl libncurses5-dev libssl-dev zlib1g-dev gawk minicom
| + | |
− | sudo apt-get install openjdk-8-jdk
| + | |
− | sudo apt-get install exfat-fuse exfat-utils device-tree-compiler liblz4-tool
| + | |
− | </syntaxhighlight>
| + | |
− | 更多说明可查看 https://source.android.com/source/initializing.html 。
| + | |
− | | + | |
− | ===安装交叉编译器===
| + | |
− | ====安装aarch64-linux-gcc 6.4====
| + | |
− | 首先下载并解压编译器:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | git clone https://github.com/friendlyarm/prebuilts.git
| + | |
− | sudo mkdir -p /opt/FriendlyARM/toolchain
| + | |
− | sudo tar xf prebuilts/gcc-x64/aarch64-cortexa53-linux-gnu-6.4.tar.xz -C /opt/FriendlyARM/toolchain/
| + | |
− | </syntaxhighlight>
| + | |
− | | + | |
− | 然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin:$PATH
| + | |
− | export GCC_COLORS=auto
| + | |
− | </syntaxhighlight>
| + | |
− | | + | |
− | 执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | . ~/.bashrc
| + | |
− | </syntaxhighlight>
| + | |
− | | + | |
− | 这个编译器是64位的,不能在32位的Linux系统上运行,安装完成后,你可以快速的验证是否安装成功:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | aarch64-linux-gcc -v
| + | |
− | Using built-in specs.
| + | |
− | COLLECT_GCC=aarch64-linux-gcc
| + | |
− | COLLECT_LTO_WRAPPER=/opt/FriendlyARM/toolchain/6.4-aarch64/libexec/gcc/aarch64-cortexa53-linux-gnu/6.4.0/lto-wrapper
| + | |
− | Target: aarch64-cortexa53-linux-gnu
| + | |
− | Configured with: /work/toolchain/build/aarch64-cortexa53-linux-gnu/build/src/gcc/configure --build=x86_64-build_pc-linux-gnu
| + | |
− | --host=x86_64-build_pc-linux-gnu --target=aarch64-cortexa53-linux-gnu --prefix=/opt/FriendlyARM/toolchain/6.4-aarch64
| + | |
− | --with-sysroot=/opt/FriendlyARM/toolchain/6.4-aarch64/aarch64-cortexa53-linux-gnu/sysroot --enable-languages=c,c++
| + | |
− | --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419 --with-cpu=cortex-a53
| + | |
− | ...
| + | |
− | Thread model: posix
| + | |
− | gcc version 6.4.0 (ctng-1.23.0-150g-FA)
| + | |
− | </syntaxhighlight>
| + | |
− | | + | |
− | ===编译Android7源代码===
| + | |
− | ====下载Android7源代码====
| + | |
− | NanoPi-M4 源代码托管在 gitlab 上,使用以下命令进行下载:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | git clone https://gitlab.com/friendlyelec/rk3399-nougat.git
| + | |
− | </syntaxhighlight>
| + | |
− | | + | |
− | ====编译并生成Image文件====
| + | |
− | 使用以下命令编译 Android7:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | cd rk3399-nougat
| + | |
− | ./build-nanopc-t4.sh -F -M
| + | |
− | </syntaxhighlight>
| + | |
− | | + | |
− | ====更新系统为自已编译的Image====
| + | |
− | 编译完成后,image文件会存放在Android7源代码目录的 rockdev/Image-nanopc_t4/ 子目录下,参考以下步骤更新到 NanoPi-M4上: <br />
| + | |
− | 1) 将 EFlasher 启动SD卡 通过读卡器插入电脑,电脑上的Ubuntu系统会自动挂载 SD卡的分区; <br />
| + | |
− | 2) 我们需要将 rockdev/Image-nanopc_t4/ 子目录下的所有文件,拷贝并覆盖到 SD卡 FRIENDLYARM 分区里的 nougat 目录; <br />
| + | |
− | 3) 将SD卡插入NanoPi-M4,重新烧写Andorid系统即可; <br />
| + | |
− | == 硬件资源访问==
| + | |
− | ===串口访问===
| + | |
− | | + | |
− | 如下表所示,仅 UART4 可供应用程序开发使用:
| + | |
− | | + | |
− | ::{| class="wikitable"
| + | |
− | |-
| + | |
− | |串口设备 || 串口资源占用情况
| + | |
− | |-
| + | |
− | |UART0 || 已被蓝牙占用
| + | |
− | |-
| + | |
− | |UART1 || 已被千兆以太网占用
| + | |
− | |-
| + | |
− | |UART2 || 已被作为调试串口
| + | |
− | |-
| + | |
− | |UART3 || 已被千兆以太网占用
| + | |
− | |-
| + | |
− | |UART4 || 空闲,设备名称为 /dev/ttyS4 (注:需使用20180618之后的ROM)
| + | |
− | |}
| + | |
− | | + | |
− | ===烧写系统到eMMC(需购买eMMC模块)===
| + | |
− | FriendlyELEC推出的基于RK3399的开发板,支持三种方式烧写系统到eMMC:
| + | |
− | * 方法1)SD卡脱机烧写,用SD卡启动开发板,通过EFlasher工具进行烧写 <b>(推荐使用此方法)</b>
| + | |
− | * 方法2)通过USB Type-C数据线,在Windows下用Rockchip提供的工具进行烧写
| + | |
− | * 方法3)通过USB Type-C数据线,在Linux下用Rockchip提供的工具进行烧写
| + | |
− | 建议采用第一种方法进行烧写。
| + | |
− | | + | |
− | ====使用SD卡脱机烧写====
| + | |
− | | + | |
− | 访问[http://download.friendlyarm.com/NanoPi-M4 此处的下载地址]下载SD卡脱机烧写所需的文件及工具:<br />
| + | |
− | {| class="wikitable"
| + | |
− | |-
| + | |
− | | colspan=2 | Image Files
| + | |
− | |-
| + | |
− | | rk3399-eflasher-YYYYMMDD-android.img.zip
| + | |
− | | Android7.1.2 系统固件
| + | |
− | |-
| + | |
− | | rk3399-eflasher-YYYYMMDD-friendly-core-arm64.img.zip
| + | |
− | | 64位FriendlyCore系统固件 (内置Qt 5.10.0),基于Ubuntu core 18.04构建
| + | |
− | |-
| + | |
− | | rk3399-eflasher-YYYYMMDD-lubuntu.img.zip
| + | |
− | | Lubuntu桌面版固件 (内置Qt 5.10.0)
| + | |
− | |-
| + | |
− | | colspan=2 | Flash Utility:
| + | |
− | |-
| + | |
− | | win32diskimager.rar
| + | |
− | | Windows utility. Under Linux users can use "dd"
| + | |
− | |}
| + | |
− | | + | |
− | 详细操作步骤如下:<br />
| + | |
− | * 准备一张8G或以上容量的SDHC卡;
| + | |
− | * 下载并解压 固件文件rk3399-eflasher-YYYYMMDD-XXXX.img.zip 和 工具win32diskimager;
| + | |
− | * 在Windows下以管理员身份运行 win32diskimager,在界面上选择你的SD卡盘符,选择解压后的EFlasher固件,点击 Write 按钮烧写到SD卡;
| + | |
− | * 或者在 Linux下使用 dd 命令将 rk3399-eflasher-YYYYMMDD-XXXX..img 写入 SD卡;
| + | |
− | * 将SD卡从电脑端弹出,插入NanoPi-M4的microSD卡槽;
| + | |
− | * 给NanoPi-M4连接好 12V/2A 的DC接口电源及HDMI显示设备,长按NanoPi-M4上的Power键直到板上的PWR灯亮,系统会从SD卡启动,稍等片刻(约15秒)后会在显示设备上看到EFlasher工具的界面;
| + | |
− | * 通过USB鼠标,或者触摸屏,在EFlasher工具界面上选择你要烧写的系统进行烧写;
| + | |
− | * 烧写完成后,轻按Power键关机,从NanoPi-M4端弹出SD卡;
| + | |
− | * 长按Power开机,会从eMMC启动你刚刚烧写的系统;
| + | |
− | | + | |
− | ====Windows下通过Type-C数据线进行烧写====
| + | |
− | | + | |
− | 访问[http://download.friendlyarm.com/NanoPi-M4 此处的下载地址]下载Windows下使用Type-C数据线烧写所需的文件及工具:<br />
| + | |
− | {| class="wikitable"
| + | |
− | |-
| + | |
− | | colspan=2 | Image Files
| + | |
− | |-
| + | |
− | | android-nougat-images.tgz
| + | |
− | | Android 7.1.2固件
| + | |
− | |-
| + | |
− | | core-qte-arm64-images.tgz
| + | |
− | | FriendlyCore固件,内置Qt5.10
| + | |
− | |-
| + | |
− | | lubuntu-desktop-images.tgz
| + | |
− | | Lubuntu桌面版固件,自带X Window图形界面
| + | |
− | |-
| + | |
− | | colspan=2 | Flash Utility:
| + | |
− | |-
| + | |
− | | AndroidTool_Release_v2.42.7z
| + | |
− | | Rockchip提供的Windows下通过Type-C数据线烧写系统的工具
| + | |
− | |-
| + | |
− | | DriverAssitant_v4.5.tgz
| + | |
− | | Rockchip提供的Windows下的USB驱动,使用AndroidTool烧写系统时需要安装此驱动
| + | |
− | |-
| + | |
− | |}
| + | |
− | | + | |
− | 详细操作步骤如下:<br />
| + | |
− | * 初次使用时,请先下载DriverAssitant_v4.5.tgz,解压后安装USB驱动;
| + | |
− | * 根据自己的需要下载images-for-eflasher下的系统固件并解压,如Android 7的固件文件是android-nougat-images.tgz,其中固件解压后的文件idbloader.img和info.conf,使用AndroidTool时可忽略。
| + | |
− | * 下载AndroidTool_Release_v2.42.7z 并解压,以管理员身份运行AndroidTool.exe
| + | |
− | * 可根据Android开发工具手册.pdf,导入分区配置即固件中的parameter.txt,然后指定各分区的烧写文件路径,如下图所示:
| + | |
− | [[File:AndroidTools_DI_01.png]]
| + | |
− | * 连接好12V/2A的DC接口电源及HDMI显示设备,连接Type-C数据线到PC,按住Recovery键再长按(1.5秒以上)Power键开机,AndroidTool会显示“发现一个LOADER设备”<br />a) 如果eMMC没有烧写过系统或eMMC的系统被擦除或损坏则会显示为MASKROM设备;<br />b) 您也可以按住BOOT键再长按Power键开机,同时持续按住BOOT键5秒以上强制进入MASKROM模式;<br />c) 如果显示“没有发现设备”,请先检查是否已成功安装驱动,检查Type-C数据线然后按上述方法重新开机,或按住Recovery键再按Reset键;<br />d) 另外,如果已成功启动系统,可通过串口、adb或ssh等方式在板子上运行reboot loader重启板子并进入LOADER模式。<br />
| + | |
− | * 点击执行即可下载固件到eMMC,请耐心等待,烧写成功结束后将自动重启。
| + | |
− | * 如果需要更换系统,例如eMMC已经安装了Linux而现在需要烧写Android,需要先对eMMC进行一些擦写操作:<br />
| + | |
− | 你需要在界面上选择 “升级固件”-〉界面上选择固件 “MiniLoaderAll.bin“,然后点击“擦除Flasher”。
| + | |
− | [[File:Rk-clean-emmc.png]]
| + | |
− | | + | |
− | ====Linux下通过Type-C数据线进行烧写====
| + | |
− | | + | |
− | 可访问[http://download.friendlyarm.com/NanoPi-M4 此处的下载地址]下载需要的固件文件及工具。<br />
| + | |
− | {| class="wikitable"
| + | |
− | |-
| + | |
− | | colspan=2 | Image Files
| + | |
− | |-
| + | |
− | | android-nougat-images.tgz
| + | |
− | | Android 7.1.2固件
| + | |
− | |-
| + | |
− | | core-qte-arm64-images.tgz
| + | |
− | | FriendlyCore固件,内置Qt5.10
| + | |
− | |-
| + | |
− | | lubuntu-desktop-images.tgz
| + | |
− | | LUbuntu桌面版固件,自带X Window图形界面
| + | |
− | |-
| + | |
− | | colspan=2 | Flash Utility:
| + | |
− | |-
| + | |
− | | Linux_Upgrade_Tool_1.27.rar
| + | |
− | | Rockchip提供的Linux下通过Type-C数据线更新系统的工具
| + | |
− | |-
| + | |
− | |}
| + | |
− | | + | |
− | Linux_Upgrade_Tool是Rockchip提供的Linux下的命令行工具,用于通过Type-C数据线来升级eMMC中的固件,同时还提供了如擦除eMMC、直接读/写eMMC等功能。
| + | |
− | * 安装upgrade_tool: 下载Linux_Upgrade_Tool_1.27.rar后解压即可获得upgrade_tool,然后复制并设置权限
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | sudo cp upgrade_tool /usr/local/sbin
| + | |
− | sudo chown root:root /usr/local/sbin/upgrade_tool
| + | |
− | sudo chmod 0755 /usr/local/sbin/upgrade_tool
| + | |
− | </syntaxhighlight>
| + | |
− | * 根据自己的需要下载images-for-eflasher下的系统固件并解压,如Lubuntu的固件文件是lubuntu-desktop-images.tgz
| + | |
− | * 参考“使用AndroidTool”,启动板子并进入LOADER或MASKROM模式;
| + | |
− | * 运行以下命令即可烧写Lubuntu系统并重启:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | sudo upgrade_tool ul MiniLoaderAll.bin
| + | |
− | sudo upgrade_tool di -p parameter.txt
| + | |
− | sudo upgrade_tool di uboot uboot.img
| + | |
− | sudo upgrade_tool di trust trust.img
| + | |
− | sudo upgrade_tool di resource resource.img
| + | |
− | sudo upgrade_tool di kernel kernel.img
| + | |
− | sudo upgrade_tool di boot boot.img
| + | |
− | sudo upgrade_tool di rootfs rootfs.img
| + | |
− | sudo upgrade_tool RD
| + | |
− | </syntaxhighlight>
| + | |
− | | + | |
− | * 如果想烧写Android 7到eMMC,可下载固件文件并解压后运行以下命令:
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | sudo upgrade_tool ul MiniLoaderAll.bin
| + | |
− | sudo upgrade_tool di -p parameter.txt
| + | |
− | sudo upgrade_tool di uboot uboot.img
| + | |
− | sudo upgrade_tool di trust trust.img
| + | |
− | sudo upgrade_tool di misc misc.img
| + | |
− | sudo upgrade_tool di resource resource.img
| + | |
− | sudo upgrade_tool di kernel kernel.img
| + | |
− | sudo upgrade_tool di boot boot.img
| + | |
− | sudo upgrade_tool di recovery recovery.img
| + | |
− | sudo upgrade_tool di system system.img
| + | |
− | sudo upgrade_tool RD
| + | |
− | </syntaxhighlight>
| + | |
− | | + | |
− | 如果固件中的MiniLoaderAll.bin版本不同,或烧写与eMMC中不同的系统,则可能会遇到无法成功启动的情况,需要擦除eMMC。<br />
| + | |
− | 先启动板子并进入LOADER,运行以下命令可删除eMMC,如程序显示"Download Boot Start"后超过10s无变化可按Reset键,然后再运行一次以下命令。
| + | |
− | <syntaxhighlight lang="bash">
| + | |
− | sudo upgrade_tool EF MiniLoaderAll.bin
| + | |
− | </syntaxhighlight>
| + | |
− | | + | |
− | 擦除成功结束后将显示"Erase flash ok."
| + | |
− | | + | |
− | == 查看瑞芯微原厂资料==
| + | |
− | *[http://opensource.rock-chips.com/images/6/60/Rockchip_RK3399_Datasheet_V1.6-20170301.pdf RK3399 datasheet V1.6]
| + | |
− | *[http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf RK3399TRM V1.4]
| + | |
− | | + | |
− | ==原理图、尺寸图==
| + | |
− | *原理图: [http://wiki.friendlyarm.com/wiki/images/d/dd/NanoPi-M4-2GB-1807-Schematic.pdf NanoPi-M4-2GB-1807-Schematic.pdf] [http://wiki.friendlyarm.com/wiki/images/7/7a/NanoPi-M4-4GB-1807-Schematic.pdf NanoPi-M4-4GB-1807-Schematic.pdf]
| + | |
− | *尺寸图:[http://wiki.friendlyarm.com/wiki/images/e/e4/NanoPi-M4-1807_Drawing%28dxf%29.zip NanoPi-M4-1807-Drawing(dxf).zip]
| + | |
− | | + | |
− | ==更新日志==
| + | |
− | ===2018-08-24===
| + | |
− | 首页发布
| + | |
可以通过使用TF卡启动eFlasher系统,将引导和系统分别安装到不同存储设备,但是由于CPU不支持直接从M.2和USB设备引导,所以虽然系统可以安装到M.2和USB设备,但是引导仍然需要安装到eMMC或者TF卡。
操作步骤如下:
You can use a TF card to boot the eFlasher system, allowing the boot and system to be installed on different storage devices. However, since the CPU doesn’t support booting directly from M.2 and USB devices, the system can be installed on M.2 and USB devices, but the boot must still be installed on eMMC or a TF card.
Steps are as follows: