“Orange Pi I96”的版本间的差异

来自Wiki-Orange Pi
跳转至: 导航搜索
应用程序的编译方法
第603行: 第603行:
 
进入 bin 目录下,查看内容<br><br>
 
进入 bin 目录下,查看内容<br><br>
 
[[Image:I96-54.png]]<br><br>
 
[[Image:I96-54.png]]<br><br>
pwd显示该路径,并将这个路径倒到全局
+
pwd显示该路径,并将这个路径倒到全局<br><br>
 
[[Image:I96-55.png]]<br><br>
 
[[Image:I96-55.png]]<br><br>
 
$ ll /etc/environment 发现该文件只能读,需要<br>
 
$ ll /etc/environment 发现该文件只能读,需要<br>

2022年6月27日 (一) 17:54的版本

介绍

什么是 Orange Pi i96

香橙派是一款开源的单板电脑,新一代的 arm 开发板,它可以运行 Android4.4、Ubuntu、Debian 等操作系统。Orange Pi i96 使用 RDA8810 系统级芯片,同时集成256MB LPDDR2 SDRAM 内存

Orange Pi 4 的用途

我们可以用它搭建:

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

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

Orange Pi i96 是为谁设计的

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

Orange Pi i96 的硬件特性

CPU RDA8810PL ARM Cortex-A5 32 位@up to 1.0 GHz
GPU Vivante GC860 3D GPU
内存 集成 256MB LPDDR2 SDRAM
板载存储 TF 卡/集成 500MB 8 位 1.8V 4K SLC Nand Flash
板载网络 RDA5991, WIFI+BT
摄像头 高达 2MP MIPI CSI-2 摄像头接口
电源 USB OTG 供电,电池供电(可选)
USB 端口 1 个 USB 2.0 HOST, 1 个 USB 2.0 OTG
Low-level peripherals 40 pin 接头
GPIO(1x3)口 UART, ground.
LED灯 电源指示灯
按键 电源按键(SW602)
支持的操作系统 Android4.4,Ubuntu,Debian 等操作系统.
外观规格介绍
产品尺寸 60mm×30mm
重量 30g

(顶层视图)

I96-1.png

(底层视图)
I96-2.png

接口详情图
I96-3.png

CSI 摄像头接口规格

CSI摄像头接口是一个可以通过适当的信号引脚映射来连接外部摄像头模块的24pin FPC接口。CSI接口的引脚定义如下所示。在香橙派上标有“CON1”的就是摄像头接口。

WinPlus-28.png

OrangePi-CSI接口引脚定义

CON1-P01 NC  
CON1-P02 GND  
CON1-P03 TWI2-SDA PE13
CON1-P04 VCC-CSI  
CON1-P05 TWI2-SCK PE12
CON1-P06 CSI-RESET# PE15
CON1-P07 CSI-VSYNC PE3
CON1-P08 CSI-STBY-EN PE15
CON1-P09 CSI-HSYNC PE2
CON1-P10 VDD1V8-CSI
CON1-P11 VCC-CSI
CON1-P12 CSI-D7 PE11
CON1-P13 CSI-MCLK PE1
CON1-P14 CSI-D6 PE10
CON1-P15 GND
CON1-P16 CSI-D5 PE9
CON1-P17 CSI-PCLK PE0
CON1-P18 CSI-D4 PE8
CON1-P19 CSI-D0 PE4
CON1-P20 CSI-D3 PE7
CON1-P21 CSI-D1 PE5
CON1-P22 CSI-D2 PE6
CON1-P23 GND
CON1-P24 AFVCC-CSI


快速入门

按照如下步骤,你可以在很短的时间内配置并使用你的香橙派开发板。启动你的香橙派开发板需要完成以下几步。

步骤1: 准备需要的配件

第一次使用香橙派开发板,你至少需要准备如下的一些配件:

编号 项目 最低要求及说明
1 TF卡 8 GB 容量或更大容量,class 10。建议使用品牌 TF 卡,它们更加可靠。
2 电源适配器 至少 5V/2A 高品质电源适配器,OTG 用作电源输入。
3 键盘鼠标 任何标准usb接口的键盘鼠标都可以。键盘和鼠标可能会需要较大的功率,所以可能需要使用一个 USB 集线器。
4 调试串口线 支持串口登录。
6 音频线(可选) 你可以选择一个 3.5 mm 接口的音频线来体验立体音效。

I96-4.png

步骤2: 准备TF 卡

为了能够正常使用香橙派开发板,必须先在TF卡或者 Nand 上安装操作系统。以下将会详细说明如何在Windows和Linux环境下向TF卡写入操作系统镜像文件。
目前支持 T 卡启动 Android 和 Linux 发行版,仅支持 Nand 启动 Android 系统, 后续段落介绍 Nand 烧录方法。

1)Windows 平台 SD 卡制卡介绍

a.把TF卡插入电脑中,TF卡的容量必须比操作系统镜像大,通常需要 8GB或更大的容量。
b.格式化TF卡
i 下载TF卡格式化工具,例如TF Formatter,下载地址

https://www.sdcard.org/downloads/formatter_4/eula_Windows/

ii 解压下载的文件,并运行 setup.exe
iii 在“选项设置”选项里, 设置“格式化类型”选项为快速格式化,“逻辑大小调整”选项为“开启(ON)”

WinPlus-30.png

iv 确认插入的TF卡盘符和选择的盘符一致
v 点击“格式化”按钮
c.从下载页面下载操作系统镜像文件,页面地址如下:

http://www.orangepi.cn/downloadresourcescn/

d.解压下载的文件(除Android系统外的系统可用该方法来烧写,Android系统需要用其他的模式来烧写)
e.右键单击下载的文件,选择 “解压文件”写入镜像文件到TF卡i 下载镜像写入工具,例如 Win32Diskimager,下载页面:

http://sourceforge.net/projects/Win32diskimager/files/Archive/

ii选择已经解压的镜像文件路径

WinPlus-31.png

iii点击 “Write” 按钮,耐心等待镜像写入
iv镜像写入完成后,点击“Exit”按钮


2)Linux 平台 SD 卡制卡介绍

a.把 TF 卡插入电脑,TF卡的容量必须比操作系统镜像大,通常需要 8GB或更大
b.格式化 TF 卡
i运行 fdisk –l 命令确认 TF 卡的盘符
ii运行 umount /dev/sdx 卸载 TF 卡的所有分区
iii运行 sudo fdisk /dev/sdx 命令. 使用 o 命令去删除 TF 卡的所有分区,然后使用 n 命令去添加一个新的分区,最后使用 w 命令保存退出
iv运行 sudo mkfs.vfat /dev/sdx1 命令去格式化刚生成的 TF 卡分区为

FAT32 格式(根据你的 TF 卡盘符来替换 x )

c.从下载页面下载操作系统镜像文件,页面地址如下:

http://www.orangepi.cn/downloadresourcescn/

d.解压下载的文件右键单击下载的文件,选择 “解压文件”
e.写入镜像文件到 TF 卡
i运行 sudo fdisk –l 命令确认TF卡的盘符
ii确认镜像文件的hash key或者是md5 和下载页面提供的一致(可选)

sha1sum [path]/[imagename]

这将会输出一长串数字,应该和你下载的镜像页面的"SHA-1" 那一行匹配

iii运行 umount /dev/sdxx  命令卸载TF卡的所有分区
iv运行 sudo dd bs=4M if=[path]/[imagename] of=/dev/sdx 命令去写入镜像文件,耐心等待镜像写入。你可以使用 sudo pkill –USR1 –n –x dd 命令去查看烧写进度。

步骤3: 启动你的香橙派开发板

  • 将写好镜像的 TF 卡插入香橙派开发板左边缘底部的 TF 卡槽中

I96-6.png

  • 将 Orange Pi i96 开发板上的拨动开关调至下图,并接上跳线帽,采用 SD 卡启动。

I96-7.png

  • 将 USB 键盘或鼠标插入右边缘的 USB 接口,拨动开关为 USB 模式
  • 连接好 wifi 天线
  • 连接摄像头(可选)

I96-8.png

I96-9.png

  • 连接调试串口线,并参考本文的串口调试方法

Android 波特率为 921600, Linux 波特率为 921600。串口线使用 TTL 转 USB 串口线。

I96-9.png

  • 下边缘的最右边是电源输入接口,连接一个至少 5V/2A 的电源适配器。比 2A 大也可以。避免使用较小功率的 GSM 手机充电器,即使上面标明了“5V 2A”,它也不一定能够输出 2A

I96-10.png

如果上述步骤都进行顺利的话,OrangePi i96 将会在几分钟内启动。LCD 屏上将显示Android的图形界面。首次启动时可能会需要很长的时间,请耐心等待。往后的启动时间将会很短。


步骤4:正确关闭你的香橙派开发板

你可以使用界面中的关机按键来安全关闭香橙派开发板。你也可以在 shell 里面输入命令来关闭系统:
sudo halt
or
sudo shutdown –h

这将安全地关闭香橙派开发板,如果直接使用电源按键关闭系统可能会损坏TF 卡或者是文件系统。系统关闭后可以长按 5 秒以上的电源案件进行断电。如果以上步骤能顺利进行,你的香橙派就可以关闭了。

初始化设置您的 Linux 系统

第一次在 Orange Pi i96 上使用 Linux, 需要进行基础的系统设置,如 wifi 设置, 音频设置,系统用户设置等。
1)串口设置 wifi

在使用串口方式登录系统后,输入登录密码,系统会提示使用 orangepi-config 工具进行基础设置,其中包括 wifi 设置。你可以在命令行使用如下命令进入设置界面:
sudo orangepi-config
> wifi settings

该设置包括 WIFI 状态设置,WIFI 搜网和连接到 AP 的功能。你可以使用该方法设置 wifi。

2)ssh 方式连接 wifi
该方法需要使用两个手机。可参考使用Orange Pi i96 默认连接到热点名为orangepi 的热点上,连接密码也是 orangepi。使用其中一个手机热点功能,将手机的热点名设置为 orangepi,
热点连接密码为 orangepi,这样系统启动后就会默认连接到 orangepi热点上。接着使用另外一个手机连接到前一个手机的热点上,并在该手机上使用 “WIFI 助手”工具查看 Orange Pi i96 的 IP 地址。
获得 Orange Pi i96 IP 地址之后,通过在 Linux 主机或者 Windows 主机上使用 SSH 进行远程登录。使用如下命令:
ssh orangepi@192.168.xxx.xxx
登录密码都是 orangepi
通过 ssh 登录系统之后,运行如下命令进行路由器连接
sudo orangepi-config

烧写 Android 系统到 Nand

Orange Pi i96 支持 Nand 启动 Android 系统,也支持更新 Nand 里的 Android系统

1)NAND 启动 Android 系统

首先通过短接跳线帽,切换系统的启动方式为 NAND

I96-11.png

连接电源,正常开机,OrangePi i96 将从 NAND 启动系统。具体开机操作,请操作步骤 2.

2)升级 NAND 里的 Android 系统
首先短接跳接帽为 NAND 启动,并拨动开关为 1234 UP, 5678 Down,如图

I96-12.png

3)Windows 上安装烧写工具
目前 Nand 烧录工具只支持 Windows 版本,请从 OrangePi 官网下载该工具, 连接为:http://www.orangepi.cn/downloadresourcescn/

I96-13.png

4)Windows 上安装 USB 驱动
解压下载后的工具包,安装 USB 驱动。路径为:

  • /OrangePi_2G-IOT_Toolschain/USB_Driver/USB-driver/

根据你的平台进行安装,32 位系统安装 x86 USB驱动。64 位系统安装 x64 驱动。

5)下载 NAND 版 Android 镜像
下载地址为:http://www.orangepi.cn/downloadresources/

I96-14.png

6)使用烧写工具
使用安装包中的烧录工具进行 NAND 烧录

  • /OrangePi_2G-IOT_Toolschain/OrangePi_2G-IOT_NandUpdate_Tools/OrangePi_2G-I OT_Update.e

I96-15.png

点击 “load BIN”,将从官网下载的 NAND 版Android 镜像导入到工具里。加载完成之后,点击 Download 按钮进行下载。此时,工具正等待 OrangePi i96 的下载连接。

7)下载镜像
准备好一个根 Android 数据线,先连接到Orange Pi i96 的OTG口,接着同时按下电源键 5s不放,将数据线一段连接到 Windows 主机。
此时下载器会显示连接成功并开始下载程序,预计花费 3 分钟。下载完毕之后,重新启动系统,系统就是运行更新后的 Android 系统。

I96-16.png

注意! 如果一直无法下载,请确认短接帽和开关是否设置正确。

ADB 调试无屏模式下的 Android 系统

  • 设置 adb 模式: 将拨动开关拨动为 1234 “UP”,5678 为 “Down”,此时系统处于 adb 模式,该模式下 USB 口不能使用


I96-17.png

  • 将数据线一端连接 OragnePi i96 的 OTG 口,另外一端连接电脑,按下电源键, 系统启动进入 Android 系统。
  • 如果主机还未配置 adb,请在网上参考 Ubuntu 或 windows adb 配置教程。在主机终端上使用 adb 命令进行 adb 连接,如下:adb shell
  • 通过 adb 连接到 OrangePi i96 之后,可以参考网上 adb 调试方法使用OrangePi i96。
  • 推荐使用 Chrome 浏览器插件 Vysor,该工具可以通过 adb 进入 Android 屏幕,如图:

I96-18.png

I96-19.png

通用软件配置

1)更改默认账号
香橙派默认的登陆账号和密码为 orangepi/orangepi 或 root/orangepi,为了安全, 建议修改这个默认的 orangepi 账号成为你自己的账号,例如 zhangsan,步骤如下:

a.root 账号登陆
b.$ usermod -l zhangsan orangepi

修改 orangepi 的账号为 zhangsan
I96-20.png

c.$ groupmod -n zhangsan orangepi 

修改组
I96-21.png

d.$ mv /home/orangepi /home/zhangsan

把原来 orangepi 目录改掉
I96-22.png

e.$ usermod -d /home/orangepi orangepi

把这目录设置成 orangepi 用户的 home 目录
I96-23.png

f.$ cat /etc/passwd

I96-24.png

以上修改完后就可以使用新账号 zhangsan 登陆了。

2)配置系统源 配置系统源为国内源可以使更新,安装软件时速度更快,下面以 Ubuntu 为例

a.打开源文件

$ sudo vi /etc/apt/sources.list

b.编辑源文件

把源文件替换成自己喜欢的源,例如 Ubuntu 16.04 的中科大源为:
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
(注:在此源中xenial字样是版本代号,若是Ubuntu其他版本替换成相应版本代号即可,版本代号可在网上查到)

3)SSH方式登录系统
参考 5. 2) 中的通过 SSH 连接 wifi.

4)如何修改ext4 文件系统的大小

做好系统运行卡之后立即进行文件系统 rootfs 分区的扩展,这将大大提升系统的性能,避免空间不足带来的各种繁琐问题。
在PC机上扩展TF卡的文件系统rootfs分区:
用GParted调整分区的大小:
选择指定盘符,右键相应的盘符,选择“更改大小”调整成自己想要的大小,单击“调整大小”,关闭对话框单击“应用全部操作”,选择应用,完成扩容操作。
a.扩大文件系统

i启动到 Linux,umount /dev/sdb1 和/dev/sdb2,若提示磁盘忙的话使用 fuser将正在使用磁盘的程序破坏掉。(推荐使用另外的 Linux 启动盘来引导系统)
ii使用 fdisk /dev/sdb 调整分区大小,进去之后,输入 p,记下要扩大分区起始位置的大小。
iii输入 d 删除需要变化的分区(我的文件系统是/dev/sdb2,也就是第二个分区) iv 输入 n 建立新分区,注意分区起始位置和之前删除分区保持一致,结束输入你期望的大小。
v输入 w 保存分区表
vi使用下面命令检查文件系统(保证文件系统没有错误,为修改文件系统做准备):e2fsck -f /dev/sdb2
vii 调整分区大小:resize2fs /dev/sdb2
viii 可以挂载一个磁盘分区,看大小是否改变

b.缩小文件系统

i启动到 Linux,umount 掉/dev/sdb1 和/dev/sdb2,若提示磁盘忙的话使用 fuser将正在使用磁盘的程序破坏掉。(推荐使用另外的 Linux 启动盘来引导系统)。
ii使用 fsck 检查文件系统(保证文件系统没有错误,为修改文件系统做准备) e2fsck -f /dev/sdb2
iii修改文件系统的大小(使用 resize2fs) resize2fs /dev/sdb2 900M数字后面的“s”表示通过扇区数(按每扇区 512 字节算)来指定文件系统的大小。还可以指定 K(KB),M(MB),G(GB)等。
iv使用 fdisk /dev/sdb 调整分区大小,进去之后,输入 p,记下要扩大分区起始位置的大小。因为 fdisk 无法动态的修改分区大小,所以只能先删除分区,然后再重建一个小一点的分区(size 要计算好,必须要能容纳下我们在上一步调整后的文件系统)。
v输入 d 删除需要变化的分区(我的文件系统是/dev/sdb2,也就是第二个分区) vi 输入 n 建立新分区,注意分区起始位置和之前删除分区保持一致,结束输入你期望的大小。
另外,如果你修改的是可引导分区,注意它的可引导标志要保留, 否则可能导致系统无法 boot。

上述方法是使用 fdisk 和 resize2fs 来修改分区和文件系统,也可以使用 gparted。gparted 提供了图形界面,而且它在 resize 分区的同时会帮你 resize 文件系统,用起来更方便,不容易出错。目前官网的 Lubuntu 和 raspbian 暂不可用。

GPIO 及 WiringPi 的使用

目前 OrangePi i96 已经支持 WiringPi,开发者可以根据本节介绍实现在OrangePi i96 上使用 WiringPi,下图为 OrangePi i96 的 40 Pin 定义图。

I96-26.png

  • 在 OrangePi i96 上下载最新的 OrangePi 版 WiringPi 源码

在下载最新源码之前,请确保 OrangePi i96 已经成功连接上 wifi 或有线网络,如果未能连接上网络,请参考官方 OrangePi i96 用户手册。
在连接网络的情况下,安装必要的工具,开发者可以使用如下命令进行安装:

sudo apt-get install git gcc make
  • 下载最新的源码

开发者可以从 OrangePi 官网 github 上获得 OrangePi 版 WiringPi 最新源码,该项目由官方进行维护。
发者也可以使用如下命令进行下载:

git clone https://github.com/OrangePiLibra/WiringPi.git
  • 编译并安装 WiringPi

开发者在获得最新的源码后,对源码进行编译并安装,使用如下命令:
cd WiringOP/
./build OrangePi_i96
./build OrangePi_i96 install

  • 使用 gpio 命令测试 WiringPi

在安装好 WringPi 的 OrangePi i96 上,可以使用 gpio 命令对 40 Pin 的GPIO 进行测试。

  • 使用 "gpio readall" 命令打印所有的 WiringPi 管脚映射。从下图所示: OrangePi i96 的 40 Pin 引脚映射图。

BCM 栏数据代表硬件实际 GPIO 编号,OrangePi i96 共支持 4 组
GPIO,每组 32 个引脚,编号从第一组 PA 组开始编号。
PA0 对应 BCM 编号为0,PB0 对应 BCM 编号为 32,PC0 对应 BCM 编号为 64,PD0 对应 BCM 编号96, PE0 对应 BCM 编号 128
PF0 对应 BCM 编号为 160,PG0 对应 BCM 编号为 192...... PL0 对应 BCM 编号 352。

wPi 栏数据代表 wiringPi 定义的引脚,开发者在基于 wiringPi 的 C 库或gpio 命令中, pin 定义应使用这组数据。 如硬件 37 号引脚对应的wiringPi 引脚为 26,开发者通过使用 26 就能操作该引脚。
Name 栏代表硬件 Pin 脚定义的名字。
Mode 栏代表引脚的模式,可以为输入也可以是输出。V 栏代表当前引脚的电压值。
Physical 栏代码是实际的硬件编号。

I96-27.png

  • 使用 "gpio export pin mode" 导出一个 wiringPi GPIO 到 /sys/class/gpio 目录下,并设置 GPIO 模式为 mode。 例子如下:

根据上图可知,硬件管脚 29 对应的 WiringPi 管脚为 GPIO 25, 将其导出并设置为输出模式

  • 使用 “gpio unexport pin”取消 pin 导出到 /sys/class/gpio.例子: orangepi# gpio unexport 26
  • 使用 “gpio exports” 查看当前系统已经导出的 gpio 例子: orangepi# gpio exports
  • 使用命令 “gpio mode pin mode” 设置 wiringPi 引脚模式。

例子: 设置 wiringPi 24 引脚为输出模式 orangepi# gpio mode 24 out
设置 wiringPi 26 引脚为输入模式 orangepi# gpio mode 26 in

  • 使用命令 "gpio write pin value" 向输出模式的 pin 写值。

例子: 设置 wiringPi 26 引脚为输出引脚:orangepi# gpio mode 26 out 向 wiringPi 26 引脚写 0:orangepi# gpio write 26 0向 wiringPi 26 引脚写 1:orangepi# gpio write 26 1

  • 使用命令 "gpio read pin" 读取输入模式 pin 的值。

例子:设置 wiringPi 26 引脚为输入引脚:orangepi# gpio mode 26 in 从 wiringPi 26 中读取值:orangepi# gpio read 26

I96-28.png

  • 更多 “gpio” 命令用法,请参考 "gpio -h" 获得。
  • 使用 WiringPi C 库

WiringPi 支持 C 库和 python 库,开发者可以使用 C 语言直接操作 GPIO 口,代码样例位于源码目录 /example/OrangePi/ 目录下。
开发者在 C 代码中使用 GPIO 的简单样例如下: 编写 GPIO 呼吸灯

I96-29.png
C 库调用 wiringPi 流程基本如下:

首先,为了调用 wiringPi C 库,开发者需要导入 <wiringPi.h> 头文件。
接着在使用 GPIO 之前,需要初始化 wiringPi,使用函数 wiringPiSetup() 进行初始化。
然后设置 pin 脚的模式,可以为 INPUT 或 OUTPUT 模式,注意 pin 脚的编号因以wiringPi 定义的为依据。
最后使用 digitalWrite() 和 digitalRead() 对 Pin 进行读写操作。

Android 及 Linux 源码编译

硬件:下图 Orange Pi 开发板一块,读卡器一个,TF卡一张和电源适配器一个

I96-30.png

软件:Linux主机硬盘空间至少 50G(可满足一次完全编译) Linux
主机中配置要求:
Python 的 2.7.3 版本;
GNU Make 的 3.81-3.82 版本;
JDK 1.6;
git 的 1.7 或更高版本;

JDK 的安装

  • 从官网上获得编译需要的 JDK
  • 解压获得 jdk-6u31-linux-x64.bin, 将其拷贝到 /opt 目录下
  • 修改 jdk-6u31-linux-x64.bin 的权限,使用如下命令:sudo chmod 755 jdk-6u31-linux-x64.bin
  • 安装 jdk1.6 ./jdk-6u31-linux-x64.bin
  • 配置多版本 java 共存机制,使用如下命令
sudo update-alternatives --install /user/bin/java java /opt/jdk1.6.0_31/bin/java 300
sudo update-alternatives --install /user/bin/javap javap /opt/jdk1.6.0_31/bin/javap 300
sudo update-alternatives --install /user/bin/javac javac /opt/jdk1.6.0_31/bin/javac 300
sudo update-alternatives --install /user/bin/jar jar /opt/jdk1.6.0_31/bin/jar 300
sudo update-alternatives --install /user/bin/javaws javaws /opt/jdk1.6.0_31/bin/javaws 300
sudo update-alternatives --install /user/bin/javapdoc javadoc /opt/jdk1.6.0_31/bin/javadoc 300
  • 切换 java 版本,java 版本选择 1.6。可以使用如下命令:
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config jar
sudo update-alternatives --config javap
sudo update-alternatives --config javaws
sudo update-alternatives --config javadoc
  • 确定 java 版本为 1.6,可以使用如下命令: java -version

I96-31.png

安装平台支持软件

$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

下载源码

官网目前提供了 Android 源码的下载,详细情况请访问官方英文网站:http://www.orangepi.org/downloadresources/
或者中文网站:http://www.orangepi.cn/downloadresourcescn/

下载分两种,一种为 MEGA 上下载,另一种为百度云。

1)如果从 MEGA 上下载,请按如下进行解压下载好压缩包
$cat OrangePi_2G-IOT* > tar.tar.gz
$ tar –xvzf tar.tar.gz
解压出来得到 trunk 目录,使用终端进入该目录
如果从百度云上下载,下载完后进行解压,即可获得 trunk 目录。

Android 源码编译

Android 源码编译之前,请确保 java 已经安装,并且 Java 版本为 1.6. 如果未安装,或者 Java 版本不对,请参考前两节关于 Java 的安装与配置。
Java 安装成功之后,客户可以开始编译 Android 源码。

  • 源码选择

在命令行切换到 Android 源代码下 cd */trunk/

  • 导入开发变量

$ source build/envsetup.sh

  • 选择工程

$ lunch
目前 OrangePi i96 支持 T-Card 启动和 Nand 启动,不同的启动方式选择如下:
T 卡启动,请选择 slt-userdebug ,接着选择 NollecA9V2VV8810P_ext4 Nand 启动,请选择 etu-userdebug,接着选择 NollecA9V2VV8810P

  • 编译系统

Make -j

  • T 卡启动方式更新镜像

T 卡方式启动的 Android 源码编译,在编译完成之后,在 */trunk/out/target/product/slt**/ 目录下会生成对应的镜像, 使用如下命令进行更新:

sudo dd if=bootloader.img of=/dev/sdc bs=512 seek=256 count=4096 && sync
sudo dd if=modem.img of=/dev/sdc bs=512 seek=12544 count=8192 && sync 
sudo dd if=boot.img of=/dev/sdc bs=512 seek=20736 count=16384 && sync 
sudo dd if=recovery.img of=/dev/sdc bs=512 seek=37120 count=20480 && sync
sudo dd if=system.ext4.img of=/dev/sdc bs=512 seek=57600	count=512000 && sync sudo dd if=vendor.ext4.img of=/dev/sdc bs=512 seek=569600 count=512000 && sync

/dev/sdc 为 SD 卡在系统上的挂载编号

  • Nand 系统更新

编译完镜像之后,在目录*/trunk/out/target/product/etu**/ 目录下生成对应的镜像将生成的镜像使用 Nand 更新工具更新到系统里,具体更新步骤,请参考本文档关于 Android Nand 更新方法。

Linux 源码编译

OrangePi i96 的 Linux 源码已经更新到 github 上,客户可以从 github 上获得最新的源代码。Linux 源码的编译需要在 Linux 下进行,请先准备一台 Linux 电脑,推荐使用 Ubuntu 16.04 系统。准备好电脑之后,按如下步骤进行操作。

  • 下载 Linux 源码

Linux 源码已经同步到 github 上,请使用如下命令进行下载:
Github 链接:https://github.com/OrangePiLibra/OrangePi
客户也可以使用 git 命令进行同步,如下:git clone https://github.com/OrangePiLibra/OrangePi.git

  • 编译源码

客户在获得源码之后,进入源码目录,可使用如下命令:cd */OrangePi
进入目录之后,运行脚本:./Build_OrangePi.sh
输入 root 密码

I96-32.png

Root 密码输入成功之后,进入主界面,并按回车键

I96-33.png

在功能界面选择 “Build system with kernel/uboot/rootfs”,并按回车键

I96-34.png

继续在界面中选择 “OrangePi i96”, 并按回车键进行源码更新

I96-35.png

至此,系统会更新 OrangePi i96 的源代码及相关编译脚本。该操作会花费40 分钟左右,请耐心等待。更新完最新的代码之后,系统会在和 OrangePi 同级的目录下生成 OrangePi_i96 目录。该目录包含 Linux 源码和编译脚本,如下图:

I96-36.png

  • 编译 Linux

在获得最新的 Linux 源码后,进入 OrangePi_i96 目录,运行如下命令:./build.sh
该脚本是一个客户化界面的自动脚本,客户可以根据界面提供的选项,选择要编译的板子,这里选择 “OrangePi i96”

I96-37.png

如果是第一次运行该脚本,系统会自动安装必须的开发工具,请确保网络的联通。

I96-38.png

安装完工具之后,需要输入 root 密码,正确输入 root 密码并按回车

I96-39.png

输入完密码之后,系统会进入编译主界面,客户可以根据需求进行选择。

I96-40.png

该版本目前只支持 Linux 内核的全编译、Linux 内核单独编译和 Linux 模块编译三个选项,选择对应的选项后,系统会进行自动编译。

I96-41.png

系统编译完成之后,会提示生成的内核镜像和模块位置。

I96-42.png

  • 更新 Linux 内核和模块

通过编译完上面的步骤之后,客户可以将新的内核和模块更新到开发板上运行。在更新之前,请按第二章“烧写 Linux 镜像”的教程在 SD 卡上烧写一个 Linux 发行版镜像。
烧写完成之后,将 SD 卡重新插入到电脑上,此时,电脑会将 SD 卡识别为两个分区,第一个为 BOOT 分区,里面存储着 uboot,kernel 和 Ramdisk 等文件。第二个为 rootfs 分区,该分区包含根文件系统。
新编译生成的内核位置上面已经给出,将生成的 zImage 文件拷贝到 SD 卡的第一个分区,替换里面的 zImage 文件,至此,新内核更新完成。
同时,新编译生成的模块位置也已经给出,SD 卡第二分区,也就是 Rootfs 分区,将该分区目录下 rootfs/lib/modules/3.xxx 目录删除,该操作可能需要 root 权限, 可使用如下命令:
sudo rm -rf */rootfs/lib/modules/3.xxx
新生成的模块拷贝到 rootfs 分区,使用如下命令:
sudo cp -rf */OrangePi_i96/output/lib/modules/3.xxx*/rootfs/lib/modules/ sync
至此,内核和模块更新完成。
将烧录好的 SD 卡插入 OrangePi,将板子上跳线帽连接图下图,开机即可进入 Linux 系统。

I96-43.png

Orange Pi 驱动程序开发

为帮助开发者更加熟悉 Orange Pi,本手册主要描述如何在开发板上使用简单设备驱动模块和应用程序。
硬件:下图Orange Pi开发板一块,读卡器一个,TF卡一张和电源适配器一个

I96-44.png

4.1设备驱动和应用程序的编写

1)应用程序(app.c):
I96-45.png

2)驱动程序(OrangePi_misc.c)
I96-46.png

I96-47.png

4.2设备驱动的编译

OrangePi_misc.c 拷贝到源码目录下

  • /OrangePi_i96/kernel/driver/misc

进入*/OrangePi_i96/kernel/driver/misc
修改当前文件的Makefile(如下图所示)

I96-48.png

和Makefile同级的文件夹下有Kconfig,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单,在内核配置make menuconfig时候,从Kconfig中读取配置菜单,
用户配置后保存到.config中。在内核编译时,主Makefile调用这个.config,就知道用户对内核的配置情况。
所以Kconfig就是对应着内核的配置菜单。加入要添加新的驱动到内核源码中, 可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就可以在menuconfig里面选择我们驱动是否被编译。

I96-49.png

回到源码目录下 /OrangePi_i96
$ ./build.sh
参考本文档 Linux 编译步骤,对模块进行编译和更新。将新生产的模块文件更新到 Linux 系统上生对应.ko文件,这就是刚刚的OrangePi_misc.c经过编译之后产生的模块。
插上U盘(注意此时SD卡已经烧好镜像) 如果此时SD卡挂载到系统的/dev/sdc 目录下,SD 将会挂载 rootfs,将 ko 文件更新到系统中/tru具体更新方法,请参考本文档 Linux 编译章节

I96-50.png

应用程序的编译方法

查询是否有下面这个交叉编译器,没有下载安装 $ arm-linux-gnueabihf-gcc -v

I96-51.png

编译应用程序,发现所需要的交叉编译器arm-linux-gnueabihf-gcc,网上下载并安装

I96-52.png

解压并进入解压之后的目录

I96-53.png

进入 bin 目录下,查看内容

I96-54.png

pwd显示该路径,并将这个路径倒到全局

I96-55.png

$ ll /etc/environment 发现该文件只能读,需要
$ chmod 755 /etc/environment
修改权限

I96-56.png

把路径加入全局环境变量中

I96-57.png

有了交叉编译器,编译应用程序

$ arm-linux-gnueabihf-gcc app.c –o aq
之后在目录下产生一个aq的应用程序,将应用程序aq复制到开发板文件系统 (rootfs的/home/orangepi/下)
$ cp aq /media/*/home/orangepi/

驱动和程序的运行方式