开发环境搭建
1. 概述¶
本文档主要针对SSD20X平台,包括两部分:
-
Linux编译环境的架设
-
SDK的编译方法
2. 编译环境搭建¶
2.1. 调试环境概述¶
通常我们会以交叉编译的方式进行开发和调试,即“宿主机+目标机”的形式。而宿主机和目标机的连接我们一般采用串口连接或网络连接,如下图所示:
图2-1 调试连接方式
-
串口Debug调试仅用于抓log,直接使用串口设备正确对接uart0的RX/TX即可(Cosole默认波特率是115200)
-
如需针对使用SSD平台的工具配合调试/烧录/读写寄存器操作(如:Flash_Tool),则需购买专用的Debug Tool
2.2. Linux服务器¶
建议使用Ubuntu 16.04。
SDK的编译需要用到一些lib&tool,安装流程如下。
2.3. 安装ubuntuserver¶
SSD201(64M DDR)
-
安装VMware Worksation
-
选择1604的iso,装载然后安装即可
-
简易安装直接点击完成,系统会自动进行安装
-
安装VMtools,用于拷贝,将windows目录共享到ubuntu,点击查看参考。
ubuntu安装成功,接下来介绍安装开发需要的环境。
2.4. 安装编译需要的lib & tool¶
接下来安装相应的编译工具等:
-
新装ubuntu,首先要设置root密码,进入系统设置root密码:
# sudo passwd
,连续输入密码即可,提示成功即可。 -
添加用户,在创建虚拟机时会提示输入
user account
,但是如果要使用beal.wu
等类似账号,在创建ubuntu的时候是无法输入的(会提示格式错误),系统会提示账户非法,但是由于个人需要使用beal.wu,那么需要进入系统后重新创建用户,# sudo adduser beal.wu--force
来创建用户,此时会提示输入account的一些信息,一直回车即可。 -
此时账户已经建立,那么需要安装相关的工具以及编译环境,执行
# 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
来更新源 -
安装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)
-
安装ssh,用于登陆调试
sudo apt-get install openssh-server;
安装完了即可使用
-
针对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是必须的,因为编译过程中会用到相关内容。这边就不一一说明是哪个错误,可以尝试先不安装编译来查看相关错误,为了方便,在编译之前一次性安装即可。
-
如果默认sh不是bash,需要将
sh
改成bash
:Sudo rm /bin/sh Sudo ln –s /bin/bash /bin/sh
-
安装toolchain
-
拷贝
gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf.tar.gz
到/opt/ 目录自行定义 -
解压toolchain
-
将toolchain设置到环境变量中去,省得每次需要手动export;
-
在
/etc/profile
添加:export PATH=/opt/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin:$PATH
-
-
到这里,就是执行编译了
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编译¶
-
进入boot根目录
-
根据Flash选择config
Nand Flash Nor Flash make infinity2m_spinand_defconfig; make menuconfig; make infinity2m_defconfig; make menuconfig; -
执行
make clean;make -j8
(根据服务器配置,可以支持多线程编译) -
生成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编译¶
-
进入kernel根目录
-
根据Flash选择config
Nand Flash Nor Flash make infinity2m_spinand_ssc011a_s01a_minigui_defconfig;
make menuconfig;make infinity2m_ssc011a_s01a_minigui_defconfigmake ;
menuconfig; -
执行
make clean;make -j8
(根据服务器配置,可以支持多线程编译) -
生成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工程编译¶
-
进入project根目录
-
根据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 -
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
-
执行:make image (project工程不支持多线程编译)
-
生成image,目录:project/image/output/images
拿到生成的image后,参照烧录文档/母片制作文档烧录到板子即可。
5. 第三方IDE说明¶
Flyting开发参考comake:http://dev.comake.online/thread-90-1-1.html