Hi3531D SDK安装及升级步骤分享

Hi3531D  SDK安装及升级步骤分享 blakmi 2023-07-17 15:30:39 788

本文主要介绍了 Hi3531DV200 SDK 的安装及升级使用说明,方便大家能快速在对应芯片的DEMB 板上搭建好 SDK 运行环境。如果已经安装过了SDK,可以跳过安装步骤,直接从第二步安装、升级 Hi3531DV200 DEMO 板开发环境开始查看。

一、安装SDK

1.在 linux 服务器上(或者一台装有 linux 的 PC 上,主流的 linux 发行版本均可以),使用命令:```ctar -zxf Hi3531DV200_SDK_Vx.x.x.x.tgz


2.返回 Hi3531DV200_SDK_Vx.x.x.x 目录,运行```c./sdk.unpack```(请用 root 或 sudo 权限执行)将会展开 SDK 包打包压缩存放的内容,请按照提示完成操作。如果需要通过WINDOWS 操作系统中转拷贝 SDK 包,请先运行```c./sdk.cleanup```,收起SDK 包的内容,拷贝到新的目录后再展开。

3.在 linux 服务器上安装交叉编译器
   - 步骤一
   安装 uclibc 交叉编译器(注意,需要有 sudo 权限或者 root 权限):获取 aarch64-himix200-linux.tgz 文件,使用命令:```ctar -zxf aarch64-himix200-linux.tgz``` 解压文件,进入aarch64-himix200-linux 目录,运行```c
 chmod +x aarch64-himix200-linux.install```,然后运行./aarch64-himix200-linux.install 即可。

- 步骤二
安装 glibc 交叉编译器(注意,需要有 sudo 权限或者 root 权限):获取 aarch64-himix200-linux.tgz 文件,使用命令:```c
tar -zxf aarch64-himix200-linux.tgz
``` 解压文件,进入aarch64-himix200-linux 目录,运行 ```c
chmod +x aarch64-himix200-linux.install
```,然后运行```c
./aarch64-himix200-linux.install
``` 即可。
- 步骤三
执行```c
source /etc/profile
```,安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。

4.编译osdrv(参见 osdrv 目录下 readme)
## 二、安装、升级 Hi3531DV200 DEMO 板开发环境
如果使用的 Hi3531DV200 的 DEMO 板,可以按照以下操作烧写 uboot、内核以及文件系统,以下操作均使用网络来更新:
- 如果您拿到的单板没有 uboot 的话,就需要使用 01.software/pc/HiTool 进行烧写。更详细的烧写操作步骤及说明,请参见 01.software\pc\HiTool 目录下的《HiBurn 工具使用指南》。
- 如果您拿到的单板中已经有 uboot,可以按照以下步骤使用网口烧写 uboot、kernel及 rootfs 到 Flash 中。DEMO 板默认为从 SPI Flash 启动。

**1.配置 tftp 服务器**
可以使用任意的 tftp 服务器,将 package/image_uclibc(或 image_glibc)下的相关文件拷贝到 tftp 服务器目录下。

**2.参数配置**
单板上电后,敲任意键进入 u-boot。设置 serverip(即 tftp 服务器的 ip)、ipaddr(单板
ip)和 ethaddr(单板的 MAC 地址)。
```csharp
setenv serverip xx.xx.xx.xx
setenv ipaddr xx.xx.xx.xx 
setenv ethaddr xx:xx:xx:xx:xx
setenv netmask xx.xx.xx.xx
setenv gatewayip xx.xx.xx.xx
ping serverip,确保网络畅通。

3.烧写映像文件到 SPI Nor Flash

以 32M SPI Nor Flash 为例。
1)地址空间说明

| 1M | 9M | 22M |
|---------------|---------------|---------------|
| boot | kernel | rootfs |

以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
2)烧写 u-boot

sf probe 0
mw.b 42000000 ff 100000
tftp 42000000 u-boot-hi3531dv200.bin
sf probe 0
sf erase 0 100000
sf write 42000000 0 100000
reset

3)烧写内核

mw.b 42000000 ff 900000
tftp 42000000 uImage_hi3531dv200
sf probe 0
sf erase 100000 900000
sf write 42000000 100000 900000

4)烧写文件系统

mw.b 42000000 ff b00000
tftp 42000000 rootfs_hi3531dv200_64k.jffs2
sf probe 0
sf erase a00000 b00000
sf write 42000000 a00000 b00000

5)设置启动参数

setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw
rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),9M(kernel),22M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x42000000 0x100000 0x900000;bootm 0x42000000'
sa

4.烧写映像文件到 NAND Flash

以 64M NAND Flash 为例。
1)地址空间说明

| 1M | 10M | 32M | 21M |
|------------------------|-------------------------|------------------------|-------------------------------------|
| boot | kernel | rootfs | other |

以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
2)烧写 u-boot

mw.b 42000000 ff 100000
tftp 42000000 u-boot-hi3531dv200.bin
nand erase 0 100000
nand write 42000000 0 100000
reset

3)烧写内核

mw.b 42000000 ff A00000
tftp 42000000 uImage_hi3531dv200
nand erase 100000 A00000
nand write 42000000 100000 A00000

4) 烧写文件系统

mw.b 42000000 ff 2000000
tftp 42000000 rootfs_hi3531dv200_2k_128k_32M.ubifs
nand erase B00000 2000000
nand write 42000000 B00000 820000 #注意:820000 为 rootfs 文件实际大小(16 进制)

5)设置启动参数

setenv bootargs 'mem=512M console=ttyAMA0,115200 clk_ignore_unused ubi.mtd=2 
root=ubi0:ubifs rootfstype=ubifs rw 
mtdparts=hinand:1M(boot),10M(kernel),32M(rootfs.ubifs)'
setenv bootcmd 'nand read 0x42000000 0x100000 0xA00000;bootm 0x42000000'
sa

5.启动新系统
reset# 重启进入新系统。

三、开发前环境准备

与媒体业务相关的管脚复用、DDR 优先级配置等在 drv/sys_config 开源驱动中配置(使用 linux DTS 进行管理),如果与实际情况不符可直接修改,sys_config.ko 驱动被load3531dv200 调用,在加载 mpp 内核模块之前被执行;mpp 之外的其他管脚复用统一在 uboot 中配置,详细说明请参见《U-boot 移植应用开发指南》。

四、使用 SDK 和 DEMO 板进行开发

1.开启 Linux 下的网络

  • 步骤一
    ifconfig eth0 hw ether xx: xx: xx: xx: xx: xx;
    ifconfig eth0 xx.xx.xx.xx netmask xx.xx.xx.xx;
    route add default gw xx.xx.xx.xx
  • 步骤二
    然后 ping 一下其他机器,如无意外,网络将能正常工作。
    ---结束

2.使用 NFS 文件系统进行开发

  • 步骤一
    在开发阶段,推荐使用 NFS 作为开发环境,可以省去重新制作和烧写根文件系统的工作。
  • 步骤二
    挂载 NFS 文件系统的操作命令:```cpp
    mount -t nfs -o nolock -o tcp -o rsize=32768,wsize=32768 xx.xx.xx.xx:/your-nfs-path /mnt
  • 步骤三
    然后就可以在/mnt 目录下访问服务器上的文件,并进行开发工作。
    ----结束

3.开启 telnet 服务
网络正常后,运行命令 telnetd& 就可以启动单板 telnet 服务,然后才能使用 telnet登录到单板。

4.运行 MPP 业务
在单板 linux 系统下,进入 mpp/ko 目录,加载 ko

cd mpp/ko
./load3531dv200 -a

进入各 sample 目录下执行相应样例程序(sample 需要先在服务器上成功编译过)

cd mpp/sample/vio
./sample_vio 0 1

五、地址空间分配与使用

1.DDR 内存管理说明

  • 所有 DDR 内存中,一部分由操作系统管理,称为 OS 内存;另一部分由 MMZ 模块管理,供媒体业务单独使用,称为 MMZ 内存。
  • OS 内存起始地址为 0x40000000,内存大小可通过 bootargs 进行配置,例如第三章中的 setenv bootargs 'mem=512M ... ',表示分配给操作系统内存为 512M,可以根据实际情况进行调
  • MMZ 内存由 osal 内核模块管理(mpp/ko_hi35xx 目录下的 hi_osal.ko),加载 osal模块时,通过模块参数指定其起始地址及大小,load 脚本中根据 MMZ 的起始地址 mmz_start 及大小 mmz_size。
  • 请注意 MMZ 内存地址范围不能与 OS 内存重叠。

2.DEMO 板 DDR 内存管理示意
以容量为 512MBytes 的 DDR 内存为例,以下为根据本文档和 SDK 默认配置得到的内存管理示意图:
DDR:

-----|------| 0x40000000 # Memory managed by OS. 
512M | OS | 
-----|------| 0x60000000 # Memory managed by MMZ block anonymous. 
1536M | MMZ | 
-----|------| 0xC0000000 # End of memory managed by MMZ.

注意:
(1)用户在配置启动参数时需要设置 OS 的管理内存为 512M,“setenv bootargs 'mem=512M ...”。
(2)如果有特殊应用,可以自行修改 load3531dv200 脚本,进行 mmz 区域划分,如“insmod hi_osal.kommz=anonymous,0,0x60000000,1530M:jpeg,0,0xBFA00000,6M anony=1”。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
blakmi
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
blakmi
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区