SDK 安装以及升级使用说明
前言
概述
本文为Hi3403V100 SDK的安装及升级使用说明,方便使用者能快速在对应芯片的DEMB板上搭建好SDK运行环境。
说明:
本文以Hi3403V100描述为例,未有特殊说明,Hi3403V100与Hi3403V100内容一致。
产品版本
与本文档相对应的产品版本如下。
读者对象
本文档(本指南)主要适用于以下工程师:
-
技术支持工程师
-
软件开发工程师
修改记录
首次安装SDK
如果您已安装过SDK,可以直接参看安装、升级Hi3403V100 DEMO板开发环境。
Hi3403V100 SDK包位置
在"Hi3403V100R001***/01.software/board"目录下,您可以看到一个 Hi3403V100_SDK_Vx.x.x.x.tgz 的文件,该文件就是Hi3403V100的软件开发包。
解压缩SDK包
在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3403V100_SDK_Vx.x.x.x.tgz,解压缩该文件,可以得到一个Hi3403V100_SDK_Vx.x.x.x目录。
展开SDK包内容
返回Hi3403V100_SDK_Vx.x.x.x目录,运行./sdk.unpack(请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。
如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。
在Linux服务器上搭建开发环境
请参考《OpenHarmony Small版本使用指南》。
编译osdrv
参见osdrv目录下readme
SDK目录介绍
Hi3403V100 目录结构如下:
Hi3403V100/
├── docs # 开发文档
├── os
│ └── OpenHarmony # OpenHarmony适配代码(海思芯片补丁、配置)
│ ├── device # 设备相关代码
│ │ └── soc/hisilicon/patches # OpenHarmony源码补丁(按子系统分类,对原生代码的定制化修改)
│ ├── kernel # 内核配置和补丁(linux-6.6)
│ ├── vendor # 海思产品配置(hispark_aifly_linux、hispark_aiflylite_linux)
│ └── manifest # 仓库清单文件
│ ├── devboard_hispark_aifly_5.1.0.xml # repo清单文件
│ └── prebuilts_setup.sh # 预编译环境准备脚本
├── platform
│ ├── ss928v100_clang # 支持SS928V100和SS927V100的CLANG-MUSL的SDK
│ │ ├── open_source # 编译SDK依赖的开源软件,提供配置指导和定制补丁
│ │ ├── osdrv # 辅助构建SDK依赖的kernel、uboot
│ │ └── smp # SDK软件,自研,包括内核驱动源码、sample实例代码,闭源库
│ └── ss928v100_gcc # 支持SS928V100和SS927V100的GCC-GLIBC的SDK
│ ├── open_source
│ ├── osdrv
│ └── smp
├── tools # 常用工具包
└── vendor
├── rkh/patches # 润开鸿OpenHarmony源码补丁(按子系统分类,增强系统功能和驱动支持)
└── ... # 其他厂商(易百纳、野火、迅为等)
安装、升级Hi3403V100 DEMO板开发环境
如果您使用的Hi3403V100的DEMO板,可以按照以下操作烧写uboot、内核以及文件系统,以下操作均使用网络来更新:
-
如果您拿到的单板没有uboot的话,就需要使用01.software/pc/ToolPlatform进行烧写。更详细的烧写操作步骤及说明,请参见01.software/pc/ToolPlatform目录下的《BurnTool 工具使用指南》。
-
如果您拿到的单板中已经有uboot,可以按照以下步骤使用网口烧写uboot、kernel及rootfs到Flash中。DEMO板默认为从SPI Flash启动。
配置tftp服务器
可以使用任意的tftp服务器,先编译好uboot、kernel和rootfs。将编译好的相关文件拷贝到tftp服务器目录下。
参数配置
单板上电后,敲任意键进入u-boot。设置serverip(即tftp服务器的ip)、ipaddr(单板ip)和ethaddr(单板的MAC地址)。
setenv serverip xx.xx.xx.xx
setenv ipaddr xx.xx.xx.xx
setenv ethaddr xx:xx:xx:xx:xx:xx
setenv netmask xx.xx.xx.xx
setenv gatewayip xx.xx.xx.xx
ping ${serverip} (确保网络畅通)
须知:
Hi3403V100启动方案分快速启动(使用u-boot-hi3403v100.bin)和非快速启动(非安全启动/安全启动,使用boot_image.bin),详见《Hi3403V100/Hi3403V100 安全启动使用指南》文档第二章节 “启动方案”。
其启动方案可通过读取0x10122090寄存器查看确认,如值为0x5为快速启动,其余值为非快速启动。
默认出厂单板为“非安全启动”,下文以该模式为例烧写镜像。
烧写映像文件到SPI Nor Flash
以32MB SPI Nor Flash为例。地址空间说明:
以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
-
烧写u-boot
-
烧写内核
-
烧写文件系统
-
烧写LiteOS 镜像(可选)
-
设置启动参数
setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 mtdparts=sfc:1M(boot),11M(kernel),19M(rootfs),1M(sample.bin)';sa setenv bootcmd 'sf probe 0;sf read 0x44000000 0x1f00000 0x100000;go_riscv 0x44000000; sf read 0x50000000 0x100000 0xb00000;bootm 0x50000000';sa 无LiteOS时: setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 mtdparts=sfc:1M(boot),11M(kernel),19M(rootfs) ';sa setenv bootcmd 'sf probe 0; sf read 0x50000000 0x100000 0xb00000;bootm 0x50000000';sa
烧写映像文件到NAND Flash
以64MB NAND Flash为例。地址空间说明:
以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
-
烧写u-boot
-
烧写内核
-
烧写文件系统
-
烧写LiteOS镜像(可选)
-
设置启动参数
setenv bootargs 'mem=512M console=ttyAMA0,115200 clk_ignore_unused ubi.mtd=2 root=ubi0:ubifs rootfstype=ubifs rw mtdparts=nand:1M(boot),11M(kernel),32M(rootfs.ubifs),1M(sample)';sa setenv bootcmd 'nand read 0x44000000 0x2c00000 0x100000;go_riscv 0x44000000;nand read 0x50000000 0x100000 0xb00000;bootm 0x50000000';sa 无LiteOS时: setenv bootargs 'mem=512M console=ttyAMA0,115200 clk_ignore_unused ubi.mtd=2 root=ubi0:ubifs rootfstype=ubifs rw mtdparts=nand:1M(boot),11M(kernel),32M(rootfs.ubifs) ';sa setenv bootcmd 'nand read 0x50000000 0x100000 0xb00000;bootm 0x50000000';sa
烧写镜像文件到EMMC
地址空间:
以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
-
烧写u-boot
-
烧写内核
-
烧写文件系统
-
烧写LiteOS 镜像(可选)
-
设置启动参数
setenv bootargs 'mem=512M console=ttyAMA0,115200 clk_ignore_unused rw rootwait root=/dev/mmcblk0p3 rootfstype=ext4 blkdevparts=mmcblk0:1M(uboot.bin),11M(kernel),96M(rootfs.ext4),1M(sample)';sa setenv bootcmd ' mmc read 0 0x44000000 0x36000 0x800;go_riscv 0x44000000;mmc read 0 0x50000000 0x800 0x5800; bootm 50000000';sa 无 LiteOS 时: setenv bootargs 'mem=512M console=ttyAMA0,115200 clk_ignore_unused rw rootwait root=/dev/mmcblk0p3 rootfstype=ext4 blkdevparts=mmcblk0:1M(uboot.bin),11M(kernel),96M(rootfs.ext4)';sa setenv bootcmd 'mmc read 0 0x50000000 0x800 0x5800; bootm 50000000';sa
须知:
上述烧写映像文件到SPI Nor Flash-烧写镜像文件到EMMC 镜像请按照实际大小调整,LiteOS的默认启动地址是 0x44000000,若客户内存布局有调整,请调整LiteOS的启动地址;若无LiteOS时客户可调整 linux 启动地址。
启动新系统
reset # 重启进入新系统。
开发前环境准备
管脚复用
与媒体业务相关的管脚复用、DDR优先级配置等在interdrv/sys_config开源驱动中配置(使用linux DTS进行管理),如果与实际情况不符可直接修改,sys_config.ko驱动被load_hi3403v100调用,在加载mpp内核模块之前被执行。
MPP之外的其他管脚复用统一在uboot中配置,详细说明请参见《Hi3403V100/Hi3403V100 U-boot 移植应用开发指南》。
使用SDK和DEMO板进行开发
开启Linux下的网络
-
设置网络
-
然后ping一下其他机器,如无意外,网络将能正常工作。
使用NFS文件系统进行开发
-
在开发阶段,推荐使用NFS作为开发环境,可以省去重新制作和烧写根文件系统的工作。
-
挂载NFS文件系统的操作命令:
-
然后就可以在/mnt目录下访问服务器上的文件,并进行开发工作。
开启telnet服务
# 网络正常后,运行命令 telnetd & 就可以启动单板telnet服务,然后才能使用telnet登录到单板。
运行MPP业务
在单板linux系统下,进入mpp/out/ko目录,加载ko
Linux和LiteOS 切换
将编译好的sample.bin和load_riscv工具拷贝到linux系统下,然后执行如下命令。
注:load_riscv工具在osdrv/tools/board/load_riscv/bin路径下
在Linux系统下使用 telnet服务登录单板并进入komod目录,加载ko
执行如下指令进入 LiteOS
在 LiteOS 可通过 “ctrl + c”键切换到 Linux 系统
地址空间分配与使用
DDR内存管理说明
-
所有DDR内存中,一部分由操作系统管理,称为OS内存;另一部分由MMZ模块管理,供媒体业务单独使用,称为MMZ内存。
-
OS内存起始地址为0x50000000,内存大小可通过bootargs进行配置,例如第三章中的setenv bootargs 'mem=512M ... ',表示分配给操作系统内存为512M,您可以根据实际情况进行调整。
-
MMZ内存由osal内核模块管理(mpp/out/ko目录下的ot_osal.ko),加载osal模块时,通过模块参数指定其起始地址及大小,load脚本中根据MMZ的起始地址mmz_start及大小mmz_size。
-
请注意MMZ内存地址范围不能与OS内存重叠。
DEMO板DDR内存管理示意
以容量为4G Bytes的DDR内存为例,以下为根据本文档和SDK默认配置得到的内存管理示意图:
DDR:
|-------------|--------------------| 0x40000000 # Memory managed by IPCM.
| 2MB | IPCM |
|-------------|--------------------| 0x40200000 # Memory managed by DSP LiteOS.
| 62MB | DSP |
|-------------|--------------------| 0x44000000 # Memory managed by RISC-V LiteOS.
| 192MB | RISC-V |
|-------------|--------------------| 0x50000000 # Memory managed by Linux OS.
| 512MB | Linux OS |
|-------------|--------------------| 0x70000000 # Memory managed by MMZ block anonymous.
| 2304MB | MMZ |
|-------------|--------------------| 0xFFFFFFFF # End of memory managed by MMZ.
注意:
-
用户在配置启动参数时需要设置OS的管理内存为512MB,“setenv bootargs 'mem=512M...”。
-
如果有特殊应用,可以自行修改load_hi3403v100脚本,进行mmz区域划分,如“insmod ot_osal.ko anony=1 mmz_allocator=ot mmz=anonymous,0,0x70000000,1786M:jpeg,0,0xDFA00000,6M”。