快速上手 BPI-W2

From Banana Pi Wiki
Revision as of 20:10, 16 October 2018 by JackZengWiki (talk | contribs) (Advanced Development)
Jump to: navigation, search

介绍

Overview: BPI-W2 Android 6.0

关于更多: Banana Pi BPI-W2

开发

基础开发

开发前准备

  • 准备一张容量不低于8Gb的TF卡, USB-Serial 串口线, 一台运行Ubuntu系统的PC机
  • 使用你的串口线去连接W2的调试串口

Load your first image on W2

1.你可以从下面链接下载最近的镜像
* http://forum.banana-pi.org/t/bananapi-w2-ubuntu-18-04-new-image-release-2018-09-17/6790

2.在你的Ubuntu系统电脑上安装bpi-tools, 执行以下命令即可安装:
* apt-get install pv
* curl -sL https://github.com/BPI-SINOVOIP/bpi-tools/raw/master/bpi-tools | sudo -E bash

3.下载完镜像后, 插入TF卡到你的Ubuntu电脑中
* 运行命令 "bpi-copy xxx.img /dev/sdx" 烧录镜像到你的TF卡中.

4.烧录完成后, 把TF卡插到W2中, 按住W2的电源键启动W2.

构建W2镜像

在SD卡上制作bootloader

由SW4控制, W2有两种启动方式

Bootsw4.jpg

  • 0 从 emmc 启动.
  • 1 从 SPI + SD 启动.

打开W2的电源后, 这里需要三个步骤来加载内核, 通常这三个步骤被称作bootloader

  • 第一步 1: CPU 初始化 - 这份代码属于CPU内部;
  • 第二步 2: 初始化我们要启动的Flash 通常这步被称作preloader
  • 第三步 3: u-boot;

RTD1296 支持从 eMMC 和 SPI flash 启动, 因此如果你想要从sd卡启动W2, (这意味着我们把 u-boot 放进 SD 中.) 第二步的代码必须要写到 SPI flash中, 通常工厂需要把这一步做好. 实际上, 如果W2从eMMC启动, 第二步的代码需要写道eMMC, 请留意这里我们在介绍怎么烧录uboot, 通常这一步也是工厂做好. 在eMMC和SD卡中的uboot是不同的, 通常eMMC的uboot名称为dvrboot.exe.bin, SD卡的uboot名称为u-boot.bin.

把uboot写入SD卡

SD的uboot相关资料在这里: https://drive.google.com/drive/folders/17ShSHLOvxeYA6tI9HQXOAb3O7RjqfD_6?usp=sharing

  • 第一步 1: 编译SD卡系统:

http://forum.banana-pi.org/t/bpi-w2-new-image-how-to-make-and-run-the-64-bit-ubuntu-16-04-on-sd-card-2018-4-28/5546

  • 第二步 2: 从eMMC启动, 然后按住‘Esc’, 开发板会进到u-boot命令行;
  • 第三步 3: 使用 tftp 来获取 u-boot.bin 文件;
      tftp 0x1500000 u-boot.bin
  • step4: 使用sd命令将uboot写入 SD 卡:
      sd write 0x1500000 0x50 0x3f0
  • forum pthread
http://forum.banana-pi.org/t/how-to-make-a-sd-card-with-bootloader/5767

Ubuntu

如何制作和运行 64-bit ubuntu 16.04 在sd卡上

1.要求:

  • 1. 一台运行Ubuntu的PC主机;
  • 2. 一块W2的开发板;
  • 3. 一片sd卡;
  • 4. 下载最新的Ubuntu压缩包(ubuntu-base-16.04.4-base-arm64.tar.gz):
http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ 17
  • 5.硬件配置文件, u-boot 二进制文件, 内核镜像文件和音视频文件, 可以从下面链接下载:
https://drive.google.com/file/d/1LX4FwXcSzkuI4BUPEVxbUyeG_UYwIkwY/view?usp=sharing 17
oRTD1296_hwsetting_BOOT_4DDR4_4Gb_s1866_padding.bin – hardware config
odvrboot.exe.bin – u-boot binary
ouImage – kernel image
obluecore.audio – audio and video firmware for RTK1296

2.将bootloader写入到 W2 flash:

香蕉派 W2 可以从 EMMC flash 或者是 SPI flash 启动, 区别在于bootloader的位置不同, 接下来介绍如何把 bootloader 写入 EMMC, 如果你不准备开发u-boot, 则不必关心这个.

通常见到的 W2开发板, 工厂已经提前烧录好bootloader了, 但是如果bootloader的版本不对, 这里你可以按照以下步骤自己烧录.

要求:

  • 1. 首先需要安装一个PC端的串口工具, 如:hypertrm. (这里我推荐使用 “hypertrm”, 因为其它工具数据传输可能失败);
  • 2. 下载uboot二进制文件(dvrboot.exe.bin);
  • 3. 下载 W2硬件配置二进制文件(RTD1296_hwsetting_BOOT_4DDR4_4Gb_s1866_padding.bin);

步骤:

  • 1. 通过串口将 W2开发板与PC连接, 然后运行终端软件, 设置串口参数 (115200, 8N1, none);
  • 2. 按住 “ctrl+q” 然后重启开发板, 当终端界面出现’ d/g/r ' 后就松掉;
  • 3. 输入 “h” 然后发送硬件配置二进制文件 (RTD1296_hwsetting_BOOT_4DDR4_4Gb_s1866_padding.bin) 在 Y-modem 模式.
  • 4. 等待传输完成, 然后输入下面的参数:
s98007058
01500000
  • 5. 输入 “d” 然后发送uboot二进制文件 (dvrboot.exe.bin) 在 Y-modem 模式.
  • 6. 传输完成后, 输入 “g” 然后uboot将被自动烧录到eMMC.

3. 在Ubuntu PC上面制作一个根文件系统.

Ubuntu 架构是 arm64, 适用于W2, Ubuntu上面大多数的arm64软件包都适用于W2.

需求:

PC端步骤:

  • 1. mkdir rootfs
  • 2. su root
  • 3. tar zxvf ubuntu-base-16.04.4-base-arm64.tar.gz -C rootfs
  • 4. write a shell script file, please copy below contents to the file ch-mount.sh (vi ch-mount.sh and copy):
!/bin/bash
function mnt() {
    echo "MOUNTING"
    sudo mount -t proc /proc ${2}proc
    sudo mount -t sysfs /sys ${2}sys
    sudo mount -o bind /dev ${2}dev
    sudo mount -o bind /dev/pts ${2}dev/pts        
    sudo chroot ${2}
}
function umnt() {
    echo "UNMOUNTING"
    sudo umount ${2}proc
    sudo umount ${2}sys
    sudo umount ${2}dev/pts
    sudo umount ${2}dev
}
if [ "$1" == "-m" ] && [ -n "$2" ] ;
then
    mnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
then
    umnt $1 $2
else
    echo ""
    echo "Either 1'st, 2'nd or both parameters were missing"
    echo ""
    echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"
    echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"
    echo ""
    echo "For example: ch-mount -m /media/sdcard/"
    echo ""
    echo 1st parameter : ${1}
    echo 2nd parameter : ${2}
fi
  • 5. apt-get install qemu-user-static
  • 6. cp /usr/bin/qemu-aarch64-static rootfs/usr/bin
  • 7. cp -b /etc/resolv.conf rootfs/etc/
  • 8. ./ch-mount.sh -m rootfs/
  • 9. apt-get install iputils-ping
  • 10. apt-get install udev
  • 11. apt-get install net-tools
  • 12. Modify the root password by running: “passwd root”
  • 13. exit
  • 14. ./ch-mount.sh -u rootfs/

到这一步, 跟文件系统已经被制作好了, 下一步我们把根文件系统写入到sd卡中.

4. 在PC上写系统到SD卡上:

需求:

  • 1. 一张SD卡;
  • 2. 下载设备树二进制文件: bpi-w2.dtb;
  • 3. 下载内核镜像文件: uImage;
  • 4. 下载音视频固件: bluecore.audio;

步骤:

  • 1. 使用fdisk命令在SD卡上创建两个分区: 格式化第一个分区为 FAT32, 第二个分区为 ext4; 推荐设置第一个分区的大小少于100M;
  • 2. 复制三个文件: bpi-w2.dtb, uImage, bluecore.audio 到第一分区;
  • 3. 使用root用户把刚才我们自己编译的根文件系统复制到第二分区:
cp -a rootfs/* /media/xxx/sdxx/
sync
  • 4. 弹出插入 W2的SD卡, 然后断电重启, 观察W2的启动情况.

5. 设置网络, 安装需要的软件包.

步骤:

  • 1. 使用root用户登录;
  • 2. 使用ifconfig配置网卡: ifconfig eth1 192.168.2.231
  • 3. 添加可以连接网络的默认网关: route add default gw 192.168.2.1
  • 4. 添加DNS: echo ‘nameserver 8.8.8.8’ >> /etc/resolv.conf
  • 5. apt-get update
  • 6. 然后你就可以通过apt-get安装软件包了.

6.更多:

一些功能在W2上面暂时无法使用, 因为kernel仍然在开发中, 我们正在努力完善W2的功能, 请多在论坛上多留意W2的信息.

PDF文件下载

http://forum.banana-pi.org/uploads/default/original/2X/c/c6dc409abc249c57a4cb2b7aedaddec6b80a9026.pdf

在Ubuntu 16.04 安装运行 Node.js 和 http-server
  • 安装 Node.js

在Ubuntu 16.04上, 在W2上安装Node.js是非常简便的. 请按照以下步骤来安装 node.js:

   1.  apt-get install nodejs
   2.  apt-get install npm
   3.  npm install -g http-server
   4.  make a link to nodejs:  cd /usr/bin/; ln -sf nodejs node
烧录kernel 4.4的OpenWRT

1.Burn OpenWRT on W2 steps:

W2 OpenWRT的 Bootloader 是 u-boot64, 有两种方式可以烧录到W2的EMMC中.

A. 使用 RTK MP_Tool 烧录 uboot 到 W2:

1)你需要以下的文件和工具:

  • MP_Tool
  • RTD1296_hwsetting_BOOT_4DDR4_4Gb_s1866.config(硬件配置文件)
  • dvrboot.exe.bin(u-boot二进制文件)

2)连接 W2 调试串口到 windows PC,然后运行 MP_Tool:

Burun openwrt.jpg

  • 设置串口参数
  • 选择配置文件和uboot文件
  • 选择 "LK option"
  • 点击 Wirte 按钮 然后开机 W2, 等待烧录后回应 "OK"

B. 使用 hypertrm 烧录 uboot 到 W2:

1)你需要以下文件和工具:

  • hypertrm
  • RTD1296_hwsetting_BOOT_4DDR4_4Gb_s1866_padding.bin(硬件配置二进制文件)
  • dvrboot.exe.bin(u-boot 二进制文件)

2)连接W2的调试串口到 windows PC:

  • 运行 hypertrm ,配置串口参数
  • 按住 “ctrl+q” 然后重启开发板, 当终端界面出现’ d/g/r ' 后就松掉;
  • 输入 “h” 然后发送硬件配置二进制文件 (RTD1296_hwsetting_BOOT_4DDR4_4Gb_s1866_padding.bin) 在 Y-modem 模式.
  • 等待传输完成, 然后输入下面的参数:

s98007058 01500000

  • 输入 “d” 然后发送uboot二进制文件 (dvrboot.exe.bin) 在 Y-modem 模式.
  • 传输完成后, 输入 “g” 然后uboot将被自动烧录到eMMC.

成功烧录uboot, 接下来我们再来烧录OpenWRT 到 W2.

1)你需要以下文件和工具:

  • U disk
  • install.img

2)烧录Openwrt到W2:

  • 格式化U盘为 FAT32
  • 复制 install.img 到U盘根目录
  • 解压 install.img, 将会得到4个文件:
  emmc.uImage
  rescue.root.emmc.cpio.gz_pad.img
  bluecore.audio
  rescue.emmc.dtb
  • 将U盘插到USB3.0接口中按住 “Esc” 键然后重启 W2
  • W2将进入到串口命令行中
  • 输入下面命令:
  setenv bootargs "earlycon=uart8250,mmio32,0x98007800 console=ttyS0,115200 loglevel=7
  
  init=/etc/init root=/dev/mmcblk0p1 rootfstype=squashfs rootwait"
  save
  go ru
  • 等待烧录完成, W2将会重启进入到Openwrt界面.

Burun openwrt 1.jpg

3.镜像和工具链接:

Baidu Drive: https://pan.baidu.com/s/1Rs9F46wNJibORaeCfVh4wg PinCode:1w4w

Google Drive:https://drive.google.com/file/d/10kfP142Jw0sA92uwaIYZt7CeXcDKelO1/view?usp=sharing

4.BPI-W2 运行OpenWrt的视频:

https://youtu.be/eTaRy8Jnfpk

进阶开发

GPIO

GPIO 控制

在W2上开发4G模块

WiFi功能开发

WiFi 客户端

AP 模式

定制你的镜像

FAQ