开发环境搭建

Version 1.2


1. 板子硬件连接


1.1. 主板示意图

电源: DC 12V

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

图1-1 接口示意图


2. 准备编译环境

通常我们会以交叉编译的方式进行开发和调试,即“宿主机+目标机”的形式。而宿主机和目标机的连接我们一般采用串口连接或网络连接,如下图所示:

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

注:我们提供的debug tool作用为读寄存器和烧写Mboot。


2.1. 安装Linux服务器

建议使用Ubuntu 16.04。


2.2. 安装交叉编译工具

我们提供编译工具链gcc-sigmastar-9.1.0-2019.11-x86_64_arm-linux-gnueabihf用于编译glibc版本的mi和kernel, boot,arm-buildroot-linux-uclibcgnueabihf-4.9.4-uclibc-1.0.31用于uclibc版本,工具链一般打包在SDK开发包中。


3. 下载SDK

从SStar 提供的下载地址download如下的SDK包


3.1. 解压SDK包

tar –xzvf XXXXXX.tgz

解压后目录list如下:


4. 编译

本芯片支持spi nor、spi nand flash和emmc启动,因此在SDK中编译有所区分,通过不同的配置文件来实现,SDK中包含了最新的boot和kernel的image,并且脚本打包成可烧录的image。


4.1. 编译boot

  • SPI- NAND package

    # declare -x ARCH="arm"
    # declare -x CROSS_COMPILE="arm-linux-gnueabihf-"
    # make infinity6e_spinand_defconfig; 
    # make clean;
    # make
    
  • EMMC package

    # declare -x ARCH="arm"
    # declare -x CROSS_COMPILE="arm-linux-gnueabihf-"
    # make infinity6e_emmc_logo_defconfig; 
    # make clean;
    # make
    
  • Get image

    # cp u-boot_spinand.xz.img.bin ${ your_release_path }// 选择spi-spinand时
    

    例:cp u-boot_spinand.xz.img.bin ../project/board/i6e/boot/spinand/uboot/

    # cp u-boot_emmc.xz.img.bin ${ your_release_path }// 选择emmc时
    

    例:cp u-boot_emmc.xz.img.bin ../project/board/i6e/boot/emmc/uboot/


4.2. 编译kernel

  • SPI-NAND Kernel (ASIC)

    CHIP Glibc compiler Uclibc compiler Kernel make config DTS
    330Q/330D gcc-arm-9.1-2019.11-x86_64-arm-linux-gnueabihf infinity6e_ssc012b_s01a_2+2mipi_panel_spinand_defconfig infinity6e-ssc012b-s01a-2+2mipi-panel.dts
  • EMMC Kernel (ASIC)

    CHIP Glibc compiler Uclibc compiler Kernel make config DTS
    330Q/330D gcc-arm-9.1-2019.11-x86_64-arm-linux-gnueabihf infinity6e_ssc012b_s01a_2+2mipi_panel_emmc_defconfig infinity6e-ssc012b-s01a-2+2mipi-panel-emmc.dts

    注:请参考表格和芯片版本做对应的编译。

    # declare -x ARCH="arm"
    # declare -x CROSS_COMPILE="$compiler" 
    (exp: “gcc-arm-9.1-2019.11-x86_64-arm-linux-gnueabihf”)
    # make xxx_kernel_make_config
    (exp: make infinity6e_ssc012b_s01a_2+2mipi_panel_spinand_defconfig)
    # make clean;
    # make -j8
    
  • Get image

    cd project/kbuild/4.9.84/
    #./release.sh -k ${ your_kernel_path }/kernel/ -b 012B -p ipc -f spinand
    或者emmc -c i6e -l glibc -v 9.1.0 -i 4.9.84
    (exp: ./release.sh -k ${ your_kernel_path }/kernel/ -b 012B -p ipc -f spinand -c i6e -l glibc -v 9.1.0 -i 4.9.84 )
    

4.3. 编译SDK(ALKAID)

  • SPI-NAND flash package

    CHIP Glibc Uclibc
    330Q configs/ipc/i6e/spinand.glibc-9.1.0-squashfs.012b.256.qfn128
    330D configs/ipc/i6e/spinand.glibc-9.1.0-squashfs.012b.128.qfn128
  • EMMC package

    CHIP Glibc Uclibc
    330Q emmc.glibc-9.1.0-ext4fs.012b.256.qfn128 NA

    注:请参考表格和芯片版本做对应的编译。

    # declare -x ARCH="arm"
    # declare -x CROSS_COMPILE="arm-linux-gnueabihf-"
    # cd $/{Alkaid}/project
    # . /setup_config.sh xxx_alkaid_build_config
    (exp: ./setup_config.sh configs/ipc/i6e/spinand.glibc-9.1.0-squashfs.012b.256.qfn128)
    # make image
    
  • Get image

    # cd ${Alkaid}/project/image/output/images
    

4.4. 编译mi_demo

编译mi_demo之前,上一小节的# . /setup_config.sh xxx_alkaid_build_config需先执行如下命令:

    # declare -x ARCH="arm"
    # declare -x CROSS_COMPILE="arm-linux-gnueabihf-"
    # cd $/{Alkaid}/sdk/verify/mi_demo/
    make

编译成功后,对应的demo bin会release到对应的目录exp:project/release/ipc/i6e/common/glibc/9.1.0/bin/mi_demo/

然后执行上一小节的# make image,就可以把对应的mi_demo bin编译到image中。


5. 烧写


5.1. Burning code by uboot

  • Run tftp (FTP server) on PC

    1. 使用tftp工具指向image path:$/{Alkaid}\project\image\output\images\,并选择正确的网卡。

      图5-1

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

  • Run tftp (FTP Client) on EVB

    1. 板子开机,长按回车,进入bootloader command line. Mstar 的boot loader。

      首次烧录请设置IP:(除非IP设置变更或者更换flash)

      # set -f gatewayip 192.168.1.1
      # set -f ipaddr 192.168.1.127           (设定FTP Client (EVB板子)使用的IP)
      # set -f netmask 255.255.255.0
      # set -f serverip 192.168.1.100         (设定FTP server (PC) 的IP)
      # saveenv
      

      注:

      1. 为了保证烧录顺利,请保证PC和开发板处于同一个路由器。

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

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

      在UBOOT console下执行以下指令即可自动透过ethernet烧录。

      # estar (OR: estar auto_update.txt)
      

5.2. Burning uboot by ISP Tool

本方式适用于空机烧录,或者uboot已经损坏导致无法通过uboot升级的场合。

5.2.1. SPI-NAND Flash

  • Default Partition layout

    No range size
    CIS 0x00000000-0x0020000 128KB
    IPL0 0x00140000-0x00200000 768KB
    IPL_CUST0 0x00200000-0x00260000 384KB
    IPL_CUST1 0x00260000-0x002c0000 384KB
    UBOOT0 0x002c0000-0x00320000 384KB
    UBOOT1 0x00320000-0x00380000 384KB
    ENV 0x00380000-0x003c0000 256KB
    KERNEL 0x003c0000-0x008c0000 5120KB
    RECOVERY 0x008c0000-0x00dc0000 5120KB
    rootfs 0x00dc0000-0x013c0000 6144KB
    UBI 0x013c0000-0x008000000 110848KB
  • Burning code by ISP tool

    • ISP Tool Version

      请确定 ISP Tool 版本为V5.0.3.23091b(beta)。

      ISP Tool会在首次版本发布的时候一起打包在Tool目录下。

      注: 使用ISP Tool升级,需使用特定的usb 转串口板,可以上淘宝购买,搜索带星宸/Mstar debug tool等.

    • Images list

      Offset Image所在目录
      GCIS.bin 0x000000 project\image\output\images\ GCIS.bin
      IPL.bin 0x140000 project\image\output\images\IPL.bin
      IPL_CUST.bin 0x200000 project\image\output\images\IPL_CUST.bin
      u-boot_spinand.xz.img.bin 0x2C0000 project\image\output\images\ u-boot_spinand.xz.img.bin
    • Burning Steps

      1. 执行ISP tool。并且关闭UART terminal,否则可能无法正常’Connect’。

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

      3. 加载烧录文件并点击‘Connect’。

      4. 加载image “GCIS.bin”,并点击’Run’

        注:需要勾选’ erase all chip’

      5. 加载 image “IPL.bin”, 取消‘Erase Device’选项, 设置‘Base shift ‘at 0x140000。

      6. 加载image “IPL_CUST.bin”, 设置‘Base shift ‘at 0x200000。

      7. 加载image “u-boot_spinand.xz.img.bin” , 设置‘Base shift ‘at 0x2C0000。

      8. 重启EVB板子,关闭工具。


5.3. EMMC(不支持isp tool升级)

请参考EMMC使用参考


5.4. Burning code by SD Card

  1. 制作SD卡软件升级包,在按照编译SDK(ALKAID)章节编译完成image的基础上,执行如下命令:

    # cd $/{Alkaid}/project
    # ./make_sd_upgrade_sigmastar.sh
    

    在出现的提示中全部输入”y”。

  2. 将{Alkaid}\project\image\output\images中的SigmastarUpgradeSD.binupgrade_script.txt文件拷贝到SD卡。

  3. 将SD卡从PC端弹出并插入到板子的卡槽中,板子上电开机,长按回车,进入bootloader command line,执行# sdstar命令进行SD卡升级:

注:可以通过如下命令设置环境变量,以后只要有SD卡和升级包即可自动升级,不用输入升级命令:setenv sdautoupgrade 1;saveenv