打开主菜单

Wiki-Orange Pi β

更改

Orange Pi I96

添加18,726字节, 2022年6月27日 (一) 17:27
无编辑摘要
=== ADB 调试无屏模式下的 Android 系统 ===
* 设置 adb 模式: 将拨动开关拨动为 1234 “UP”,5678 为 “Down”,此时系统处于 adb 模式,该模式下 USB 口不能使用
<br>
[[Image:I96-17.png]]<br><br>
* 将数据线一端连接 OragnePi i96 的 OTG 口,另外一端连接电脑,按下电源键, 系统启动进入 Android 系统。
* 如果主机还未配置 adb,请在网上参考 Ubuntu 或 windows adb 配置教程。在主机终端上使用 adb 命令进行 adb 连接,如下:adb shell
* 通过 adb 连接到 OrangePi i96 之后,可以参考网上 adb 调试方法使用OrangePi i96。
* 推荐使用 Chrome 浏览器插件 Vysor,该工具可以通过 adb 进入 Android 屏幕,如图:
[[Image:I96-18.png]]<br><br>[[Image:I96-19.png]]<br><br>
=== 通用软件配置 ===
'''1)更改默认账号'''<br>
香橙派默认的登陆账号和密码为 orangepi/orangepi 或 root/orangepi,为了安全, 建议修改这个默认的 orangepi 账号成为你自己的账号,例如 zhangsan,步骤如下:
a.root 账号登陆
b.$ usermod -l zhangsan orangepi
修改 orangepi 的账号为 zhangsan<br>
[[Image:I96-20.png]]<br><br>
c.$ groupmod -n zhangsan orangepi
修改组<br>
[[Image:I96-21.png]]<br><br>
d.$ mv /home/orangepi /home/zhangsan
把原来 orangepi 目录改掉<br>
[[Image:I96-22.png]]<br><br>
e.$ usermod -d /home/orangepi orangepi
把这目录设置成 orangepi 用户的 home 目录<br>
[[Image:I96-23.png]]<br><br>
f.$ cat /etc/passwd
[[Image:I96-24.png]]<br><br>
以上修改完后就可以使用新账号 zhangsan 登陆了。<br><br>
 
'''2)配置系统源'''
配置系统源为国内源可以使更新,安装软件时速度更快,下面以 Ubuntu 为例
a.打开源文件
$ sudo vi /etc/apt/sources.list
b.编辑源文件
把源文件替换成自己喜欢的源,例如 Ubuntu 16.04 的中科大源为:<br>
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe<br>
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe<br>
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe<br>
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe<br>
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe<br>
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe<br>
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe<br>
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe<br>
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe<br>
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe<br>
(注:在此源中xenial字样是版本代号,若是Ubuntu其他版本替换成相应版本代号即可,版本代号可在网上查到)<br><br>
 
'''3)SSH方式登录系统'''<br>
参考 5. 2) 中的通过 SSH 连接 wifi.<br><br>
 
'''4)如何修改ext4 文件系统的大小'''<br><br>
 
做好系统运行卡之后立即进行文件系统 rootfs 分区的扩展,这将大大提升系统的性能,避免空间不足带来的各种繁琐问题。<br>
在PC机上扩展TF卡的文件系统rootfs分区:<br>
用GParted调整分区的大小:<br>
选择指定盘符,右键相应的盘符,选择“更改大小”调整成自己想要的大小,单击“调整大小”,关闭对话框单击“应用全部操作”,选择应用,完成扩容操作。<br>
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 暂不可用。<br><br>
 
=== GPIO 及 WiringPi 的使用 ===
目前 OrangePi i96 已经支持 WiringPi,开发者可以根据本节介绍实现在OrangePi i96 上使用 WiringPi,下图为 OrangePi i96 的 40 Pin 定义图。<br><br>
[[Image:I96-26.png]]<br><br>
 
* 在 OrangePi i96 上下载最新的 OrangePi 版 WiringPi 源码<br>
在下载最新源码之前,请确保 OrangePi i96 已经成功连接上 wifi 或有线网络,如果未能连接上网络,请参考官方 OrangePi i96 用户手册。<br>
在连接网络的情况下,安装必要的工具,开发者可以使用如下命令进行安装:<br>
sudo apt-get install git gcc make
* 下载最新的源码<br>
开发者可以从 OrangePi 官网 github 上获得 OrangePi 版 WiringPi 最新源码,该项目由官方进行维护。<br>
发者也可以使用如下命令进行下载:<br>
git clone https://github.com/OrangePiLibra/WiringPi.git
* 编译并安装 WiringPi<br>
开发者在获得最新的源码后,对源码进行编译并安装,使用如下命令:<br>
cd WiringOP/<br>
./build OrangePi_i96<br>
./build OrangePi_i96 install<br>
* 使用 gpio 命令测试 WiringPi<br>
在安装好 WringPi 的 OrangePi i96 上,可以使用 gpio 命令对 40 Pin 的GPIO 进行测试。<br>
* 使用 "gpio readall" 命令打印所有的 WiringPi 管脚映射。从下图所示: OrangePi i96 的 40 Pin 引脚映射图。<br>
'''BCM 栏数据'''代表硬件实际 GPIO 编号,OrangePi i96 共支持 4 组<br>
GPIO,每组 32 个引脚,编号从第一组 PA 组开始编号。<br>
PA0 对应 BCM 编号为0,PB0 对应 BCM 编号为 32,PC0 对应 BCM 编号为 64,PD0 对应 BCM 编号96, PE0 对应 BCM 编号 128<br>
PF0 对应 BCM 编号为 160,PG0 对应 BCM 编号为 192...... PL0 对应 BCM 编号 352。<br><br>
'''wPi 栏数据'''代表 wiringPi 定义的引脚,开发者在基于 wiringPi 的 C 库或gpio 命令中, pin 定义应使用这组数据。 如硬件 37 号引脚对应的wiringPi 引脚为 26,开发者通过使用 26 就能操作该引脚。<br>
'''Name 栏'''代表硬件 Pin 脚定义的名字。<br>
'''Mode 栏'''代表引脚的模式,可以为输入也可以是输出。V 栏代表当前引脚的电压值。<br>
'''Physical 栏'''代码是实际的硬件编号。<br><br>
[[Image:I96-27.png]]<br><br>
 
* 使用 "gpio export pin mode" 导出一个 wiringPi GPIO 到 /sys/class/gpio 目录下,并设置 GPIO 模式为 mode。 例子如下:<br>
根据上图可知,硬件管脚 29 对应的 WiringPi 管脚为 GPIO 25, 将其导出并设置为输出模式
* 使用 “gpio unexport pin”取消 pin 导出到 /sys/class/gpio.例子: orangepi# gpio unexport 26<br>
* 使用 “gpio exports” 查看当前系统已经导出的 gpio 例子: orangepi# gpio exports<br>
* 使用命令 “gpio mode pin mode” 设置 wiringPi 引脚模式。<br>
例子: 设置 wiringPi 24 引脚为输出模式 orangepi# gpio mode 24 out<br>
设置 wiringPi 26 引脚为输入模式 orangepi# gpio mode 26 in<br>
* 使用命令 "gpio write pin value" 向输出模式的 pin 写值。<br>
例子: 设置 wiringPi 26 引脚为输出引脚:orangepi# gpio mode 26 out 向 wiringPi 26 引脚写 0:orangepi# gpio write 26 0向 wiringPi 26 引脚写 1:orangepi# gpio write 26 1<br>
* 使用命令 "gpio read pin" 读取输入模式 pin 的值。<br>
例子:设置 wiringPi 26 引脚为输入引脚:orangepi# gpio mode 26 in 从 wiringPi 26 中读取值:orangepi# gpio read 26
[[Image:I96-28.png]]<br><br>
* 更多 “gpio” 命令用法,请参考 "gpio -h" 获得。<br>
* 使用 WiringPi C 库<br>
WiringPi 支持 C 库和 python 库,开发者可以使用 C 语言直接操作 GPIO 口,代码样例位于源码目录 /example/OrangePi/ 目录下。<br>
开发者在 C 代码中使用 GPIO 的简单样例如下: 编写 GPIO 呼吸灯<br><br>
[[Image:I96-29.png]]<br><br>
 
C 库调用 wiringPi 流程基本如下:<br><br>
首先,为了调用 wiringPi C 库,开发者需要导入 <wiringPi.h> 头文件。<br>
接着在使用 GPIO 之前,需要初始化 wiringPi,使用函数 wiringPiSetup() 进行初始化。<br>
然后设置 pin 脚的模式,可以为 INPUT 或 OUTPUT 模式,注意 pin 脚的编号因以wiringPi 定义的为依据。<br>
最后使用 digitalWrite() 和 digitalRead() 对 Pin 进行读写操作。<br><br>
 
== Android 及 Linux 源码编译 ==
'''硬件:'''下图 Orange Pi 开发板一块,读卡器一个,TF卡一张和电源适配器一个<br><br>
[[Image:I96-30.png]]<br><br>
'''软件:'''Linux主机硬盘空间至少 50G(可满足一次完全编译) Linux<br>
主机中配置要求:<br>
Python 的 2.7.3 版本;<br>
GNU Make 的 3.81-3.82 版本;<br>
JDK 1.6;<br>
git 的 1.7 或更高版本;<br>
=== 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 共存机制,使用如下命令<br>
sudo update-alternatives --install /user/bin/java java /opt/jdk1.6.0_31/bin/java 300<br>
sudo update-alternatives --install /user/bin/javap javap /opt/jdk1.6.0_31/bin/javap 300<br>
sudo update-alternatives --install /user/bin/javac javac /opt/jdk1.6.0_31/bin/javac 300<br>
sudo update-alternatives --install /user/bin/jar jar /opt/jdk1.6.0_31/bin/jar 300<br>
sudo update-alternatives --install /user/bin/javaws javaws /opt/jdk1.6.0_31/bin/javaws 300<br>
sudo update-alternatives --install /user/bin/javapdoc javadoc /opt/jdk1.6.0_31/bin/javadoc 300
* 切换 java 版本,java 版本选择 1.6。可以使用如下命令:<br>
sudo update-alternatives --config java<br>
sudo update-alternatives --config javac<br>
sudo update-alternatives --config jar<br>
sudo update-alternatives --config javap<br>
sudo update-alternatives --config javaws<br>
sudo update-alternatives --config javadoc
* 确定 java 版本为 1.6,可以使用如下命令: java -version
[[Image:I96-31.png]]<br><br>
 
=== 安装平台支持软件 ===
$ sudo apt-get install git gnupg flex bison gperf build-essential \ <br>
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ <br>
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ <br>
libgl1-mesa-dev g++-multilib mingw32 tofrodos \<br>
python-markdown libxml2-utils xsltproc zlib1g-dev:i386<br><br>
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so<br>
 
=== 下载源码 ===
官网目前提供了 Android 源码的下载,详细情况请访问官方英文网站:http://www.orangepi.org/downloadresources/<br>
或者中文网站:http://www.orangepi.cn/downloadresourcescn/<br><br>
下载分两种,一种为 MEGA 上下载,另一种为百度云。<br><br>
1)如果从 MEGA 上下载,请按如下进行解压下载好压缩包<br>
$cat OrangePi_2G-IOT* > tar.tar.gz<br>
$ tar –xvzf tar.tar.gz<br>
解压出来得到 trunk 目录,使用终端进入该目录<br>
如果从百度云上下载,下载完后进行解压,即可获得 trunk 目录。<br><br>
=== Android 源码编译 ===
 
Android 源码编译之前,请确保 java 已经安装,并且 Java 版本为 1.6. 如果未安装,或者 Java 版本不对,请参考前两节关于 Java 的安装与配置。<br>
Java 安装成功之后,客户可以开始编译 Android 源码。<br>
* 源码选择<br>
在命令行切换到 Android 源代码下 cd */trunk/<br>
* 导入开发变量<br>
$ source build/envsetup.sh<br>
* 选择工程<br>
$ lunch<br>
目前 OrangePi i96 支持 T-Card 启动和 Nand 启动,不同的启动方式选择如下:<br>
T 卡启动,请选择 slt-userdebug ,接着选择 NollecA9V2VV8810P_ext4 Nand 启动,请选择 etu-userdebug,接着选择 NollecA9V2VV8810P<br>
* 编译系统<br>
Make -j<br>
* T 卡启动方式更新镜像<br>
T 卡方式启动的 Android 源码编译,在编译完成之后,在 */trunk/out/target/product/slt**/ 目录下会生成对应的镜像, 使用如下命令进行更新:<br>
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 系统更新<br>
编译完镜像之后,在目录*/trunk/out/target/product/etu**/ 目录下生成对应的镜像将生成的镜像使用 Nand 更新工具更新到系统里,具体更新步骤,请参考本文档关于 Android Nand 更新方法。<br><br>
 
=== Linux 源码编译 ===
 
OrangePi i96 的 Linux 源码已经更新到 github 上,客户可以从 github 上获得最新的源代码。Linux 源码的编译需要在 Linux 下进行,请先准备一台 Linux 电脑,推荐使用 Ubuntu 16.04 系统。准备好电脑之后,按如下步骤进行操作。<br>
* 下载 Linux 源码<br>
Linux 源码已经同步到 github 上,请使用如下命令进行下载:<br>
Github 链接:https://github.com/OrangePiLibra/OrangePi<br>
客户也可以使用 git 命令进行同步,如下:git clone https://github.com/OrangePiLibra/OrangePi.git<br>
* 编译源码<br>
客户在获得源码之后,进入源码目录,可使用如下命令:cd */OrangePi <br>
进入目录之后,运行脚本:./Build_OrangePi.sh<br>
输入 root 密码<br><br>
[[Image:I96-32.png]]<br><br>
Root 密码输入成功之后,进入主界面,并按回车键<br><br>
[[Image:I96-33.png]]<br><br>
在功能界面选择 “Build system with kernel/uboot/rootfs”,并按回车键<br><br>
[[Image:I96-34.png]]<br><br>
继续在界面中选择 “OrangePi i96”, 并按回车键进行源码更新<br><br>
[[Image:I96-35.png]]<br><br>
至此,系统会更新 OrangePi i96 的源代码及相关编译脚本。该操作会花费40 分钟左右,请耐心等待。更新完最新的代码之后,系统会在和 OrangePi 同级的目录下生成 OrangePi_i96 目录。该目录包含 Linux 源码和编译脚本,如下图:<br><br>
[[Image:I96-36.png]]<br><br>
* 编译 Linux<br>
在获得最新的 Linux 源码后,进入 OrangePi_i96 目录,运行如下命令:./build.sh <br>
该脚本是一个客户化界面的自动脚本,客户可以根据界面提供的选项,选择要编译的板子,这里选择 “OrangePi i96”<br><br>
[[Image:I96-37.png]]<br><br>
如果是第一次运行该脚本,系统会自动安装必须的开发工具,请确保网络的联通。<br><br>
[[Image:I96-38.png]]<br><br>
安装完工具之后,需要输入 root 密码,正确输入 root 密码并按回车<br><br>
[[Image:I96-39.png]]<br><br>
输入完密码之后,系统会进入编译主界面,客户可以根据需求进行选择。<br><br>
[[Image:I96-40.png]]<br><br>
该版本目前只支持 Linux 内核的全编译、Linux 内核单独编译和 Linux 模块编译三个选项,选择对应的选项后,系统会进行自动编译。<br><br>
[[Image:I96-41.png]]<br><br>
系统编译完成之后,会提示生成的内核镜像和模块位置。<br><br>
[[Image:I96-42.png]]<br><br>
 
* 更新 Linux 内核和模块<br>
通过编译完上面的步骤之后,客户可以将新的内核和模块更新到开发板上运行。在更新之前,请按第二章“烧写 Linux 镜像”的教程在 SD 卡上烧写一个 Linux 发行版镜像。<br>
烧写完成之后,将 SD 卡重新插入到电脑上,此时,电脑会将 SD 卡识别为两个分区,第一个为 BOOT 分区,里面存储着 uboot,kernel 和 Ramdisk 等文件。第二个为 rootfs 分区,该分区包含根文件系统。<br>
新编译生成的内核位置上面已经给出,将生成的 zImage 文件拷贝到 SD 卡的第一个分区,替换里面的 zImage 文件,至此,新内核更新完成。<br>
同时,新编译生成的模块位置也已经给出,SD 卡第二分区,也就是 Rootfs 分区,将该分区目录下 rootfs/lib/modules/3.xxx 目录删除,该操作可能需要 root 权限, 可使用如下命令:<br>
sudo rm -rf */rootfs/lib/modules/3.xxx<br>
新生成的模块拷贝到 rootfs 分区,使用如下命令:<br>
sudo cp -rf */OrangePi_i96/output/lib/modules/3.xxx*/rootfs/lib/modules/ sync<br>
至此,内核和模块更新完成。<br>
将烧录好的 SD 卡插入 OrangePi,将板子上跳线帽连接图下图,开机即可进入 Linux 系统。<br><br>
[[Image:I96-43.png]]<br><br>
8,460
个编辑