开发环境搭建

Version 0.2


1. 概述

本文档主要针对SSD20X平台,包括两部分:

  1. Linux编译环境的架设

  2. SDK的编译方法


2. 编译环境搭建


2.1. 调试环境概述

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

图2-1 调试连接方式

  1. 串口Debug调试仅用于抓log,直接使用串口设备正确对接uart0的RX/TX即可(Cosole默认波特率是115200)

  2. 如需针对使用SSD平台的工具配合调试/烧录/读写寄存器操作(如:Flash_Tool),则需购买专用的Debug Tool

2.2. Linux服务器

建议使用Ubuntu 16.04。

SDK的编译需要用到一些lib&tool,安装流程如下。

2.3. 安装ubuntuserver

SSD201(64M DDR)

  1. 下载1604 server版

  2. 安装VMware Worksation

  3. 选择1604的iso,装载然后安装即可

  4. 简易安装直接点击完成,系统会自动进行安装

  5. 安装VMtools,用于拷贝,将windows目录共享到ubuntu,点击查看参考

ubuntu安装成功,接下来介绍安装开发需要的环境。

2.4. 安装编译需要的lib & tool

接下来安装相应的编译工具等:

  1. 新装ubuntu,首先要设置root密码,进入系统设置root密码:# sudo passwd,连续输入密码即可,提示成功即可。

  2. 添加用户,在创建虚拟机时会提示输入user account,但是如果要使用beal.wu等类似账号,在创建ubuntu的时候是无法输入的(会提示格式错误),系统会提示账户非法,但是由于个人需要使用beal.wu,那么需要进入系统后重新创建用户,# sudo adduser beal.wu--force来创建用户,此时会提示输入account的一些信息,一直回车即可。

  3. 此时账户已经建立,那么需要安装相关的工具以及编译环境,执行

    # sudo apt-get
    
    install libncurses5-dev
    
    libncursesw5-dev
    

    这时候会提示beal.wu无法执行sudoers,需要做如下修改:

    sudo chmod u+w /etc/sudoers
    vi /etc/sudoers;
    参考  root        ALL=(ALL:ALL) ALL,
    添加一行    beal.wu     ALL=(ALL:ALL) ALL
    

    再执行sudo操作即可安装了,建议在安装完后执行#sudo apt-get update来更新源

  4. 安装samba,用于共享linux文件到windows

    # sudo apt-get install samba samba-common
    # sudo smbpasswd -a beal.wu (添加samba账户,用于windows访问linuxsamba目录)
    修改/etc/samba/smb.conf
        [beal.wu]
        path=/home/beal.wu
        public=yes
        writable=yes
        valid users=beal.wu
        available=yes
        browseable=yes
        guest ok = yes
    

    这样samba已经配置好了,重启samba 服务即可,测试从windows访问samba:\\192.168.1.11 (your ubuntu ip)

  5. 安装ssh,用于登陆调试

    sudo apt-get install openssh-server;
    

    安装完了即可使用

  6. 针对SDK编译需要安装一些tool,否则会编译失败

    # sudo apt-get install libc6-dev-i386
    # sudo apt-get install lib32z1 lib32ncurses5
    # sudo apt-get install libuuid1:i386
    # sudo apt-get install cmake
    # sudo apt-get install libncurses5-dev libncursesw5-dev
    # sudo apt install bc
    # sudo apt-get install xz-utils
    # sudo apt-get install automake
    # sudo apt-get install libtool
    # sudo apt-get install libevdev-dev
    # sudo apt-get install pkg-config
    

    如上这些需要安装的tool && lib是必须的,因为编译过程中会用到相关内容。这边就不一一说明是哪个错误,可以尝试先不安装编译来查看相关错误,为了方便,在编译之前一次性安装即可。

  7. 如果默认sh不是bash,需要将sh改成bash

    Sudo rm /bin/sh
    
    Sudo ln s /bin/bash /bin/sh
    
  8. 安装toolchain

    1. 拷贝gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf.tar.gz到/opt/ 目录自行定义

    2. 解压toolchain

    3. 将toolchain设置到环境变量中去,省得每次需要手动export;

    4. /etc/profile添加:export PATH=/opt/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin:$PATH

  9. 到这里,就是执行编译了

2.5. 安装交叉编译工具

我们提供编译工具链gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf用于编译glibc版本的。

Glibc:2.28

图2-2


3. 获取SDK


3.1. SDK来源

请咨询FAE,从FTP中获取对应SDK,完整的SDK code应包含如下部分:

boot: Uboot源码

kernel:kernel源码,版本:4.9.84

project:编译制作image的部分,包含非开源部分的lib/ko, 以及对外api头文件参考

sdk:测试Demo/应用打包框架部分


3.2. 解压SDK

tar zxvf project-TAKOYAKI_DLC00V030.tar.gz
tar zxvf boot-TAKOYAKI_DLC00V030.tar.gz
tar zxvf kernel-TAKOYAKI_DLC00V030.tar.gz
tar zxvf sdk-TAKOYAKI_DLC00V030.tar.gz

4. 编译SDK

SSD20x Relase的SDK可以支持Nor Flash和Nand Flash两种,只需要根据实际情况区分配置编译即可。


4.1. 编译链指定

配置好编译链:

declare -x ARCH="arm"
declare -x CROSS_COMPILE="arm-linux-gnueabihf-"

4.2. boot编译

  1. 进入boot根目录

  2. 根据Flash选择config

    Nand Flash Nor Flash
    make infinity2m_spinand_defconfig; make menuconfig; make infinity2m_defconfig; make menuconfig;
  3. 执行make clean;make -j8 (根据服务器配置,可以支持多线程编译)

  4. 生成image,如需要打包需要Relase到project对应目录

    Nand Flash Nor Flash
    u-boot_spinand.xz.img.bin u-boot.xz.img.bin
    需要release到project目录:
    cp u-boot_spinand.xz.img.bin
    project\board\i2m\boot\spinand\uboot
    需要release到project目录:
    cp u-boot.xz.img.bin
    project\board\i2m\boot\nor\uboot

4.3. kernel编译

  1. 进入kernel根目录

  2. 根据Flash选择config

    Nand Flash Nor Flash
    make infinity2m_spinand_ssc011a_s01a_minigui_defconfig;
    make menuconfig;
    make infinity2m_ssc011a_s01a_minigui_defconfigmake ;
    menuconfig;
  3. 执行make clean;make -j8(根据服务器配置,可以支持多线程编译)

  4. 生成image,如需要打包需要Relase到project对应目录

    Nand Flash Nor Flash
    arch/arm/boot/uImage.xz arch/arm/boot/uImage.xz
    需要release到project目录:
    project\release\nvr\i2m\011A\glibc\8.2.1\bin\kernel\spinand
    需要release到project目录:
    project\release\nvr\i2m\011A\glibc\8.2.1\bin\kernel\nor

4.4. project工程编译

  1. 进入project根目录

  2. 根据Flash_Type以及平台DDR差异选择config

    Nand Flash
    SSD201(64M DDR) SSD202(128M DDR)
    ./setup_config.sh ./configs/nvr/i2m/8.2.1/spinand.glibc.011a.64 ./setup_config.sh ./configs/nvr/i2m/8.2.1/spinand.glibc.011a.128
    Nor Flash SSD201(64M DDR)
    ./setup_config.sh ./configs/nvr/i2m/8.2.1/nor.glibc-squashfs.011a.64
  3. Release kernel相关资源 (非必须动作,只有当改动到kernel部分config的时候需要执行此步)

    Nand Flash:

    ./release.sh -k  ${kernel_path} -b 011A -p nvr -f spinand -c i2m -l glibc -v 8.2.1;
    

    Nor Flash:

    ./release.sh -k  ${kernel_path} -b 011A -p nvr -f nor -c i2m -l glibc -v 8.2.1
    
  4. 执行:make image (project工程不支持多线程编译)

  5. 生成image,目录:project/image/output/images

拿到生成的image后,参照烧录文档/母片制作文档烧录到板子即可。


5. 第三方IDE说明

Flyting开发参考comake:http://dev.comake.online/thread-90-1-1.html