Skip to content

# 1. 快速部署指南

快速部署指南将会介绍部分开发板及产品的快速部署步骤，细节请参考剩余章节。

## 1.1. PC环境搭建

### 1.1.1. 串口/网口连接软件

与开发板连接的PC，需要配备有可以通过USB与开发板串口通讯，或通过网口以ssh协议与开发板通讯的软件。

当使用windows通过串口连接J6X Matrix板时，需安装对应驱动，驱动下载链接：http://www.ftdichip.cn/Drivers/VCP.htm，驱动安装后识别出的四个COM口，选择顺序从一开始，第三个COM口是acore，第四个COM口是mcu，串口波特率：921600。

### 1.1.2. 地平线烧写工具

地平线烧写工具将用于给开发板上的核心板烧写系统。

具体细节请参考 镜像烧写工具使用 。

### 1.1.3. tftp服务器建立及文件传输

#### 1.1.3.1. Windows tftp服务器

使用”tftp_win32”或任意Windows下的tftp服务器程序。

#### 1.1.3.2. Linux tftp服务器

    sudo apt-get install tftpd-hpa
    sudo mkdir /tftpboot

# 编辑tftpd-hpa设置

    sudo vi /etc/default/tftpd-hpa

进入vi编辑界面后，将以下内容键入文件，服务器根文件夹将会被设置为：“/tftpboot”。

    TFTP_USERNAME="tftp"
    TFTP_DIRECTORY="/tftpboot"
    TFTP_ADDRESS="[::]:69"
    TFTP_OPTIONS="-l -c -s"

配置pc端ip为xx.xx.xx.xx，最好和板子配置为同一网段：

    ifconfig xx.xx.xx.xx

重启tftp服务器并应用配置：

    sudo service tftpd-hpa restart

内核相关镜像放到/tftpboot目录。

#### 1.1.3.3. 板端通过tftp下载

##### 1.1.3.3.1. Uboot内

    setenv serverip xx.xx.xx.xx #pc端ip
    setenv ipaddr xx.xx.xx.XX #与pc同网段ip
    setenv gatewayip xx.xx.xx.1 #ip地址对应的网关
    tftpboot <target addr> <relative file path>

在有些网络情况下，需要设置mac地址，可以通过下面命令进行设置：

    env del -f ethaddr
    setenv ethaddr xx:xx:xx:xx:xx:xx

##### 1.1.3.3.2. Kernel内

直接输入tftp xx.xx.xx.xx就进入tftp命令行，然后用get命令下载文件，用put命令上传文件。例如：

    # Download from PC
    tftp xx.xx.xx.xx
    tftp> get filename
    # Send file to PC
    tftp> put filename

### 1.1.4. NFS服务器建立及文件传输

#### 1.1.4.1. Windows nfs服务器

在PC内配置nfs服务器，使用任意nfs服务器程序即可。

#### 1.1.4.2. Linux nfs服务器

安装nfs：

    sudo apt-get install nfs-kernel-server

配置nfs：

    cd ~
    mkdir nfs
    sudo vim /etc/exports
    /home/$USER/nfs xx.xx.*.*(sync,rw,no_root_squash)
    sudo exportfs -a

重启rpcbind服务：

    sudo service rpcbind restart

重启nfs服务：

    sudo service nfs-kernel-server restart

#### 1.1.4.3. 板端挂载nfs服务器

配置ip，假设启用的网络设备是eth1，具体使用的网络设备需要结合实际使用的网络配置：

    ifconfig eth1 xx.xx.xx.xx netmask xx.xx.xx.xx

在有些网络情况下需要配置mac地址，配置方法如下：

    ifconfig eth1 down
    ifconfig eth1 hw ether xx:xx:xx:xx:xx:xx
    ifconfig eth1 up

挂载PC服务器文件夹于“/mnt/nfs”：

    mkdir -p /mnt/nfs
    busybox mount -t nfs -o nolock xx.xx.xx.xx:/home/$USER/nfs /mnt/nfs

挂载成功后，PC上nfs文件夹内文件可以直接在板端进行读取/写入/执行等操作（配置权限后）。

## 1.2. J6X平台简介

### 1.2.1. 硬件环境

#### 1.2.1.1. 芯片框图

Main域：

- 支持3路MIPI CSI RX接口

- 支持2路MIPI CSI TX接口和2路MIPI DSI接口，其中有CSI TX接口和DSI接口是复用DPHY的，不能同时支持

- 支持6路I2C接口

- 支持2路SPI master接口

- 支持4路UART接口

- 支持1路USB2.0接口

- 支持2路1Gb Ethernet接口，支持TSN（时间敏感网络）

- 支持1路PCIe Gen4 2Lane接口

- 2路Ethernet和2路PCIe共用4Lane SERDES PHY

- 支持12路LPWM接口，用于曝光同步

- 支持1路EMMC接口

- 支持1路UFS接口

- 支持96bit LPDDR5 memory接口

MCU域：

- 支持1路1Gb Ethernet接口

- 支持6路SPI master/slave接口

- 支持10路CANF-FD接口

- 支持4路I2C接口

- 支持3路UART接口

- 支持3路LIN接口

- 支持12路PWM接口

- 支持16路ADC接口

- 支持1路XSPI接口连接nor/hyper/flash

#### 1.2.1.2. 实物图

底板图如下：

外壳图如下：

#### 1.2.1.3. J6X Matrix开发板硬件配置

请按照顺序安装：

- 在上述实物图位置，找到serial插口（如上图所示，在网口旁边有uart水印），插入Micro-USB线，Micro-USB线另一头，与PC连接；

- 在上述实物图位置，找到RJ45网口，插入符合要求的网线，网线另一头，与PC连接。

#### 1.2.1.4. 开发板启动模式设置

SW2与启动模式相关，具体配置如下：

PIN | 功能 | 拨码状态 | 设定结果 | 软件处理
--- | --- | --- | --- | ---
1 | PCIe角色选择 | OFF | RC角色，不接受PCIe互联后对端发过来的复位信号 | 通过board id来判断角色并执行PCIe程序
1 | PCIe角色选择 | ON | EP角色，接受PCIe互联后对端发过来的复位信号用于复位J6X | 通过board id来判断角色并执行PCIe程序
2 | J6X 启动模式选择 | OFF | 正常工作模式。此时J6X Main域的电源需要J6X通过程序使能打开（MCU没有程序就打不开电源） | 正常工作模式
2 | J6X 启动模式选择 | ON | USB烧录模式。此时J6X Main域的电源自动通过硬件打开。LED D8红灯亮起 | 走USB下载流程

### 1.2.2. 软件环境

#### 1.2.2.1. 软件整体架构

J6X现有的基础方案：Acore上直接运行Linux操作系统；MCU AutoSAR软件；BPU firmware软件和VDSP firmware软件。

#### 1.2.2.2. 软件整体目录结构

> ├── build.sh -> build_tools/hobot_tools/core/build.sh

> ├── build_tools

> │ ├── hobot_tools

> │ ├── kbuild_tools

> │ ├── android_tools

> ├── debian

> ├── device

> │ ├── common

> │ ├── horizon

> ├── document

> ├── envsetup.sh -> build_tools/hobot_tools/core/envsetup.sh

> ├── external

> │ ├── liblog

> │ ├── wayland

> │ ├── weston

> ├── hbbin

> │ ├── boot

> │ ├── ddr

> │ ├── keyimage

> ├── hbre

> │ ├── camsys

> │ ├── hbutils

> │ ├── libdisp

> │ ├── libhbpcie

> │ ├── libipc

> │ ├── libmm

> │ ├── libefuse

> │ ├── secure_storage

> │ ├── openssl-engine

> ├── hobot-drivers

> │ ├── apbtimer

> │ ├── bpu

> │ ├── camsys

> │ ├── ddr_monitor

> │ ├── interrupt

> │ ├── kernel-dts

> │ ├── mmc

> │ ├── pinctrl

> │ ├── remoteproc

> │ ├── smmu

> │ ├── watchdog

> ├── kernel

> ├── Makefile -> build_tools/kbuild_tools/Makefile

> ├── prebuilts

> │ ├── recovery_rootfs

> │ ├── deb_package

> ├── test

> │ ├── samples

> ├── tools

> │ ├── misc_tools

> ├── uboot

> └── vdsp

软件目录名 | 目录说明
build_tools | 编译工具目录
build_tools/hobot_tools | horizon工具目录
build_tools/kbuild_tools | kbuild工具目录
device | 编译配置目录
device/common | 通用配置目录
device/horizon | 项目配置目录
external | 第三方执行程序源代码目录
hbbin | 非开源二进制文件
hbre/camsys | Camera中间件API源代码目录
hbre/hbutils | Hbutils工具包源代码目录
hbre/libdisp | Display中间件API源代码目录
hbre/libhbpcie | Pcie中间件API源代码目录
hbre/openssl-engine | Openssl硬件加速引擎源代码目录
uboot | Spl和uboot源代码目录
kernel | Linux kernel源代码
test | 测试程序
vdsp | vdsp模块源码

#### 1.2.2.3. 编译环境搭建

如下3小结分别介绍了MCU，Acore，Vdsp编译环境的搭建，具体编译方法请参考 Build与生成镜像 。

##### 1.2.2.3.1. MCU镜像编译环境搭建

MCU相关环境及开发等内容较多，请直接参考 MCU系统开发指南。

##### 1.2.2.3.2. Acore镜像编译环境搭建

进入代码根目录，执行如下命令，选择j6e_evm_defconfig的编译环境：

    user.name@hz-server-1:~/work/J6/soc$ source envsetup.sh lunch
    ++ make clean
    rm -rf /home/user.name/work/J6/soc/.config* /home/user.name/work/J6/soc/out/generated_kconfigs
    ++ make lunch
    make -C /home/user.name/work/J6/soc/build_tools/kbuild_tools/src O=/home/user.name/work/J6/soc/out/host/kbuild_tools config
    make[1]: Entering directory '/home/user.name/work/J6/soc/build_tools/kbuild_tools/src'
      GEN     /home/user.name/work/J6/soc/out/host/kbuild_tools/Makefile
    make[3]: Nothing to be done for 'config'.
    make[1]: Leaving directory '/home/user.name/work/J6/soc/build_tools/kbuild_tools/src'
    You're in configuration
    Lunch menu...pick a combo:

    J6
            1 ---> j6e_debug_defconfig
            2 ---> j6e_debug_gcc9_defconfig
            3 ---> j6e_debug_ubuntu_defconfig
            4 ---> j6e_release_defconfig

    Which would you like?  1

    You select CHIP=J6E Config=j6e_debug_defconfig
    #
    # configuration written to .config
    #
    Configuration created from  lunch
    =========================================
    BOARD_CONFIG="j6e_debug_defconfig"
    ARCH="arm64"
    CROSS_COMPILE="/usr/bin/aarch64-linux-gnu-"
    HR_TARGET_VENDOR="horizon"
    HR_TARGET_PROJECT="j6e"
    HR_TARGET_MODE="debug"
    HR_TARGET_BIT="64"
    KERNEL_VER="6.1.94"
    =========================================
    Shortcut commands:
        build.sh docker: bd, bdall, bdm, bdkmhb, bdkmk
        kernel menuconfig: bkmc
        kernel targets: build.sh k_modules bkt <kernel-target>
        kenrel-target:
             all                  - Build all targets marked with [*]
             vmlinux      - Build the bare kernel
             modules      - Build all modules
             modules_install - Install all modules to INSTALL_MOD_PATH (default: /)
             dir/            - Build all files in dir and below
             dir/file.[ois]  - Build specified target only
    =========================================

    user.name@hz-server-1:~/work/J6/soc$ bdall

##### 1.2.2.3.3. VDSP镜像编译环境搭建

VDSP需要在安装了Candense VDSP License/xplorer/VDSP 配置核的PC上进行编译，具体编译命令如下：

    # 获得您的vdsp.git 源码
    cd vdsp
    git checkout dev-j6
    bash make.sh