SSR931开发环境搭建
参考


1. 硬件准备

1.1. Demo板实物图

电源: DC 12V

调试串口: TTL电平,特率115200

图1-1 Demo板实物图

1.2. Debug tool连接

如下图所示,宿主机即PC机,负责程序编译;目标机即开发板,负责程序运行。两者间一般采用串口或网络进行连接。

图1-2交叉编译调试连接方式

注: Flash tool烧写boot需搭配Mstar debug tool作为串口连接工具。

**特别注意: **

Debug tool务必要换成 V2 以上的版本 (如下图), 才能避免有 5V的输入信号击毁demo板!

2. 编译环境

2.1. 安装Linux服务器

Ubuntu 或CentOS。

2.2. 安装交叉编译工具

glibc: gcc-11.1.0-20210608-sigmastar-glibc-x86_64_arm-linux-gnueabihf

uclibc: arm-gcc-11.1.0-sigmastar-linux-uclibc-1.0.39-gnueabihf

3. 编译

我们通过不同的配置文件来区分不同的flash启动方式(nor flash/spinand flash),toolchain(glibc/uclibc),文件系统格式和DDR。

编译前都需要先指定平台和交叉编译工具链:

export ARCH=arm

glibc: export CROSS_COMPILE=arm-linux-gnueabihf-

uclibc: export CROSS_COMPILE=arm-sigmastar-linux-uclibcgnueabihf-

3.1. 编译boot

Step 1:

cd boot

Step 2:

nor: make mercury6p_demo_defconfig   
nand: make mercury6p_demo_spinand_defconfig
emmc: make mercury6p_emmc_defconfig

Step 3:

make clean;make -j8

3.2. 编译kernel

Step 1:

cd kernel

Step 2:

nor: make mercury6p_ssc025a_s01a_demo_defconfig  
nand: make mercury6p_ssc025a_s01a_demo_spinand_defconfig
emmc: make mercury6p_ssc025a_s01a_emmc_defconfig

Step 3:

make clean;make -j8
make uImage //931平台必须执行这一步才能生成uImage.xz

3.3. 编译project

Step 1:

cd project

Step 2:

NOR glibc:  
make xvr_m6p.nor.glibc-11.1.0-squashfs.025A.1024x1024bga_demo_defconfig

NOR uclibc: 
make xvr_m6p.nor.uclibc-11.1.0-squashfs.025A.1024x1024bga_demo_defconfig

NAND glibc: 
make xvr_m6p.spinand.glibc-11.1.0-squashfs.025A.1024x1024bga_demo_defconfig

NAND uclibc: 
make xvr_m6p.spinand.uclibc-11.1.0-squashfs.025A.1024x1024bga_demo_defconfig

eMMC glibc: 
make xvr_m6p.emmc.glibc-11.1.0-squashfs.025A.1024x1024bga_defconfig

make image -j4

Step 3:

get images from project/image/output/

3.4. 编译xvr_demo

Step 1:

sdk与project置于同级目录,先编译project(xvr_demo的编译会依赖project)
cd sdk/verify/xvr_demo/

Step 2:

make

Step 3:

Get bin from sdk/verify/xvr_demo/out/app/

4. 烧写

请确定 Flash Tool 版本为5.0.18或更新的版本,Flash Tool会在版本发布的时候一起打包在Tool目录下。

4.1. nor flash burning

Name Offset
boot.bin 0x00000
  1. 执行Flash tool,并且关闭UART terminal,否则可能无法正常“Connect”;

  2. 选择SPI tab, 点击“More”,并且Type选择“SPINOR”;

  3. 加载烧录文件“boot.bin”,base shift= 0x0000,点击“run”。

4.2. nand flash burning

spinand flash烧写需要选择“SPINAND”再连接,然后按照以下偏移地址依次烧写。

Name Offset
cis.bin 0x00000
cis.bin 0x20000
boot.bin 0x140000
  1. 执行ISP tool。并且关闭UART terminal,否则无法正常'Connect'。

  2. 选择SPI tab, 点击'More' 并且选择类型为'SPINAND'。

  3. 加载image "cis.bin",并点击'Run'。

  4. 加载image "cis.bin", base shift= 0x20000, 并点击'Run'。

  5. 加载image "boot.bin", base shift= 0x140000, 并点击'Run'。

4.3. eMMC burning

  1. demo板切换到emmc启动。

    绿框是关于启动方式选择的丝印,红框为boot-strapping。根据丝印信息,切换boot-strapping为emmc启动。

  2. 运行烧写工具Flash tool。

    注:

    • 先把uart disable(boot下输入“debug”,kernel下输入“11111”),并断开串口终端,否则可能无法正常“Connect”;

    • flash tool要用5.0.23或其以上版本。

  3. 进入Emmc->By config选项。

  4. 根据实际需求配置Clock,Partition Config,Disable Part,Hw Reset Enable(通常默认即可)并选择烧录的bin文件(images/boot.bin)。

  5. 点击connect。

    连接成功后状态栏显示“Connect Success”,log打印当前emmc boot bus width,同时bus width下拉框也显示为对应的bus width。

  6. 点击“Start Program”烧录。

    烧录成功后状态栏显示Success,重启。

4.4. tftp烧写

服务端: PC

  1. 使用tftp工具指向image path,并选择正确的网卡。

  2. 连接板子的网口到PC端,连接debug串口工具到PC端,并检查连接的正确性。

客户端: Board

  1. 板子开机,长按回车,进入boot命令行。

    空片烧录或IP设置变更请设置IP:

    # set -f gatewayip 192.168.1.1
    # set -f ipaddr 192.168.1.127 (设定FTP Client (板子)使用的IP)
    # set -f netmask 255.255.255.0
    # set -f serverip 192.168.1.100 (设定FTP server (PC) 的IP)
    # set -f ethaddr xx:xx:xx:xx:xx:xx
    # saveenv
    
  2. 在UBOOT console下执行estar即可自动透过ethernet烧录。

    # estar (烧写命令,也可以单独烧写某个镜像,如estar scripts/[[kernel.es)
    

**注: **

1. 为了保证烧录顺利,请保证PC和开发板处于同一网段;

2. 请采用静态方式固定分配IP,防止烧录时IP地址跳变;

3. 也可以使用独立网卡使PC端直连开发板,固定该网卡的内网IP地址,并按上述方法设定开发板。

5. 文件交互

目标机和宿主机的文件交互可以采用以下方法。

5.1. 网络挂载

如nfs、cifs挂载,下面简单介绍nfs挂载方法。

  1. 在PC上配置nfs server;

  2. 板子连上网络,配置ip(udhcpc).确认板子能ping通nfs server所在PC;

  3. 在板子上运行mount 命令,命令格式如下:

    mount -t nfs -o nolock
    
    $(nfs_server_IP):$(server_mount_path) $(PCB_board_local_path)
    

5.2. tftp

工具: Tools/tftpb32

  1. 使用tftp工具指向文件路径

  2. Get file:

    tftp –gr $(filename) $(serverip) –b $(portid)
    

    Put file:

    tftp –pl $(filename) $(serverip) –b $(portid)
    

5.3. U盘

挂载U盘,例如:

mount –t vfat /dev/sda1 /mnt