快速部署指南
===============

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

PC环境搭建
-------------

串口/网口连接软件
~~~~~~~~~~~~~~~~~~~~

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

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

地平线烧写工具
~~~~~~~~~~~~~~~~~

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

具体细节请参考 :doc:`镜像烧写工具使用 <./j6_dvb_user_image_burning>` 。

tftp服务器建立及文件传输
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Windows tftp服务器
^^^^^^^^^^^^^^^^^^^^^

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

Linux tftp服务器
^^^^^^^^^^^^^^^^^^^

.. code:: shell

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

# 编辑tftpd-hpa设置

.. code:: shell

	sudo vi /etc/default/tftpd-hpa

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

.. code:: shell

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

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

.. code:: shell

	ifconfig xx.xx.xx.xx

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

.. code:: shell

	sudo service tftpd-hpa restart

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

板端通过tftp下载
^^^^^^^^^^^^^^^^^^^

Uboot内
"""""""""""

.. code:: shell

	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地址，可以通过下面命令进行设置：

.. code:: shell

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


Kernel内
""""""""""""""

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

.. code:: shell

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

NFS服务器建立及文件传输
~~~~~~~~~~~~~~~~~~~~~~~~~~

Windows nfs服务器
^^^^^^^^^^^^^^^^^^^^

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

Linux nfs服务器
^^^^^^^^^^^^^^^^^^

安装nfs：

.. code:: shell

	sudo apt-get install nfs-kernel-server

配置nfs：

.. code:: shell

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

重启rpcbind服务：

.. code:: shell

	sudo service rpcbind restart

重启nfs服务：

.. code:: shell

	sudo service nfs-kernel-server restart

板端挂载nfs服务器
^^^^^^^^^^^^^^^^^^^^

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

.. code:: shell

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

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

.. code:: shell

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


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

.. code:: shell

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

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

J6X平台简介
-------------

硬件环境
~~~~~~~~~~~

芯片框图
^^^^^^^^^^^

|image1|

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


实物图
^^^^^^^^^

底板图如下：

.. _section-3:

|image4|

外壳图如下：

|image12|


J6X Matrix开发板硬件配置
^^^^^^^^^^^^^^^^^^^^^^^^^^^

请按照顺序安装：

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

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

开发板启动模式设置
^^^^^^^^^^^^^^^^^^^^^

.. _section-8:

|image9|

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下载流程                        |
+---------+--------------------+--------------+--------------------------------------------------------------------------------------+--------------------------------------+

软件环境
~~~~~~~~~~~

软件整体架构
^^^^^^^^^^^^^^^

|image10|

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

软件整体目录结构
^^^^^^^^^^^^^^^^^^^

..

	├── 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模块源码
========================== =======================================

编译环境搭建
^^^^^^^^^^^^^^^

如下3小结分别介绍了MCU，Acore，Vdsp编译环境的搭建，具体编译方法请参考 :doc:`Build与生成镜像 <../j6_sysdev/build/j6_sysdev_build>` 。

MCU镜像编译环境搭建
""""""""""""""""""""""""""

MCU相关环境及开发等内容较多，请直接参考 :doc:`MCU系统开发指南 <../j6_sysdev/mcu/j6_sysdev_mcu>`。

Acore镜像编译环境搭建
""""""""""""""""""""""""""

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

.. code:: shell

    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
    =========================================


.. code:: shell

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

VDSP镜像编译环境搭建
"""""""""""""""""""""""""

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

.. code:: shell

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

.. _section-9:

.. |image0| image:: ./media/image1.png
   :width: 2.25972in
   :height: 0.70833in
.. |image1| image:: ./media/image2.png
   :width: 6.28889in
   :height: 3.59653in
.. |image2| image:: ./media/image3.png
   :width: 6.29583in
   :height: 3.24514in
.. |image3| image:: ./media/image4.jpeg
   :width: 6.29861in
   :height: 3.57917in
.. |image4| image:: ./media/image5.jpg
   :width: 5.98958in
   :height: 7.98958in
.. |image6| image:: ./media/image7.png
   :width: 4.31736in
   :height: 1.49306in
.. |image7| image:: ./media/image8.png
   :width: 4.29167in
   :height: 2.01736in
.. |image8| image:: ./media/image9.png
   :width: 5.72569in
   :height: 4.28889in
.. |image9| image:: ./media/image10.jpg
   :width: 2.75625in
   :height: 2.07639in
.. |image10| image:: ./media/image11.jpg
   :width: 6.29444in
   :height: 1.86319in
.. |image11| image:: ./media/image12.png
   :width: 6.29236in
   :height: 2.20556in
.. |image12| image:: ./media/image29.png
   :width: 6.29236in
   :height: 2.20556in
