源码编译
安装工具链
本章节介绍Atlas 200 AI加速模块作为主/协处理器时,用户如何安装相应的交叉编译工具链到编译程序所在的Linux系统。
安装前准备
软件
WinSCP.exe:此工具为第三方免费软件。
软件包
根据OS内核版本号下载相应的交叉编译工具链。
OS版本号 |
OS内核版本号 |
交叉编译工具链 |
---|---|---|
Ubuntu 16.04.3 LTS |
4.19.36+ |
操作步骤
- 登录Linux服务器。
- 执行如下命令,切换至root用户。
su - root
- 执行如下命令,创建/opt/compiler目录。
mkdir /opt/compiler
- 使用“WinSCP”,将交叉编译工具链上传至/opt/compiler目录。详细操作请参见使用WinSCP传输文件。
- 进入到/opt/compiler目录。
cd /opt/compiler
- 执行如下命令,解压交叉编译工具。
命令:tar -xvf 交叉编译工具链 -C ./ --strip-components 1
示例:tar -xvf gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz -C /opt/compiler --strip-components 1
- 在配置文件中增加交叉编译工具链路径。
echo "export PATH=\$PATH:/opt/compiler/bin" >> /etc/profile
- 执行如下命令,使环境变量生效。
source /etc/profile
- 执行如下命令,查看交叉编译工具链版本。
aarch64-linux-gnu-gcc -v
显示有版本信息,则表明安装工具链成功。
编译驱动
前提条件
Linux服务器已安装qemu-user-static、binfmtsupport、yaml、unzip、unrar与交叉编译器。
修改或增加驱动
用户可根据实际需求自行选择修改已有模块源码。若涉及增加驱动,请执行如下操作:
以增加mdio驱动为例。
- 登录Linux服务器。
- 执行如下命令,切换至root用户。
su - root
- 使用“WinSCP”,将软件包“A200-3000-Soc-SRC-Vxxx.zip”上传至Linux系统任一目录下,例如/opt。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入软件包所在目录,例如/opt。
cd /opt
- 执行如下命令,解压软件包“A200-3000-Soc-SRC-Vxxx.zip”,获取软件包“mini_developerkit_source.rar”。
unzip A200-3000-Soc-SRC-Vxxx.zip
- 执行如下命令,解压软件包mini_developerkit_source.rar”,获取软件包“source.tar.gz”。
unzip mini_developerkit_source.rar
- 执行如下命令,解压软件包“source.tar.gz”。
tar -xzvf source.tar.gz
- 执行如下命令,进入source/drivers目录。
cd source/drivers
- 如需新增用户mdio驱动,执行如下命令,创建mdio目录。
mkdir mdio
- 在该目录中新增驱动文件与Makefile。
Makefile的格式请参考其他Makefile文件。
编译驱动
- 登录Linux服务器。
- 执行如下命令,切换至root用户。
su - root
- 使用“WinSCP”,将软件包“A200-3000-Soc-SRC-Vxxx.zip”上传至Linux系统任一目录下,例如/opt。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入软件包所在目录,例如/opt。
cd /opt
- 执行如下命令,解压软件包A200-3000-Soc-SRC-Vxxx.zip”,获取软件包“mini_developerkit_source.rar”。
unzip A200-3000-Soc-SRC-Vxxx.zip
- 执行如下命令,解压软件包mini_developerkit_source.rar”,获取软件包“source.tar.gz”。
unzip mini_developerkit_source.rar
- 执行如下命令,解压软件包“source.tar.gz”。
tar -xzvf source.tar.gz
- 进入source目录。
cd source
- 执行如下命令,编译OS内核。
bash build.sh kernel
执行此命令时,如果报错,请确认依赖包libncurses5-dev、bison、flex等是否已安装。如果提示有未安装包,如:/bin/sh: 1: bison: not found,使用apt-get命令依次安装缺少的依赖包。
- (可选)在脚本build.sh的DRV_MODLE_PATH变量中,增加新增驱动的目录"${DRV_DIR}/xxx"。
- 执行如下命令,打开build.sh脚本文件。
vim build.sh
- 在DRV_MODLE_PATH变量中增加mdio驱动。
- 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。
:wq!
- 仅在有新增驱动模块的情况下,需要执行此步骤。
- xxx代表新增驱动模块。
- 执行如下命令,打开build.sh脚本文件。
- 执行如下命令,编译驱动。
bash build.sh minirc
编译成功后会在output目录生成KO驱动文件。
安装驱动
- 使用SSH登录Atlas 200 AI加速模块设备。默认IP地址:192.168.0.2,默认用户名和密码请参见《Atlas硬件产品 用户清单》。
- 把编译后的驱动拷贝到设备中目录/var/davinci/driver/。
- 卸载编译前的驱动。
命令:rmmod 驱动名称
例如:rmmod drv_watchdog
- (可选)卸载原始驱动过程中可能出现图6-2所示报错,该信息不影响正常加、卸载及驱动功能。该问题由于没有安装内核配套的源码及头文件安装包导致。如需要清除此报错,可通过网络下载linux-headers-4.19.36+_4.19.36+-1_arm64.deb、linux-image-4.19.36+_4.19.36+-1_arm64.deb和linux-libc-dev_4.19.36+-1_arm64.deb安装包,并执行如下命令依次安装。
命令:dpkg –i 安装包
示例:dpkg –i linux-headers-4.19.36+_4.19.36+-1_arm64.deb
- 加载驱动。
- 如果只修改了华为原有的驱动,对设备进行重启后,会自动执行启动脚本,进行加载驱动。
- 如果新增驱动,执行如下命令,加载相应驱动。
- 执行如下命令,进入driver目录。
cd /var/davinci/driver/
- 执行如下命令,加载驱动,例如mdio.ko驱动。
insmod mdio.ko
- 执行如下命令,进入driver目录。
软件包“A200-3000-Soc-FW-Vxxx.zip”的目录A200-3000-Soc-FW-Vxxx/scripts/的启动脚本minirc_sys_init.sh的函数load_device_modules(),加载了华为原有的驱动。