【昇腾】基于Atlas 200I DK A2开发者套件从0到1跑vdec_sample_20250324

基于Atlas 200I DK A2开发者套件从0到1跑vdec_sample_20250324
###############################################################################
硬件:Altlas 200I DK A2(8T版本)
Altlas 200I DK A2开发者套件实物图:
在这里插入图片描述

###############################################################################

一、制卡

Altlas 200I DK A2开发者套件通过
https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/qs/qs_0005.html选择在线烧录Ubuntu22.04的镜像版本制卡后,进行以下操作

二、开发者套件具体的版本信息如下:

OS版本:Ubuntu 22.04 LTS Arm64
固件与驱动版本:23.0 RC3
CANN版本:7.0.RC1

三、sample的获取

3.1将制做好操作系统的TF卡插回到开发者套件,上电将开发者套件的eth0口通过网线连接路由器(具体IP可通过HDMI0口连接到显示器登录输入ifconfig获知,或登录路由器获知,或连接串口到开发者套件下输入ifconfig获知),其中开发者套件的eth0口,如下图所示:
在这里插入图片描述

3.2使用HwHiAiUser用户登录开发者套件,执行以下命令下载开源sample的代码:

mkdir -p /home/HwHiAiUser/work
cd /home/HwHiAiUser/work
git clone https://gitee.com/ascend/samples.git

在这里插入图片描述

执行以下命令查看环境变量、设置环境变量并确认环境变量:

echo $DDK_PATH
echo $NPU_HOST_LIB
echo $LD_LIBRARY_PATH

export HOME=/usr/local
export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub/
export LD_LIBRARY_PATH=$HOME/Ascend/ascend-toolkit/latest/runtime/lib64

echo $DDK_PATH
echo $NPU_HOST_LIB
echo $LD_LIBRARY_PATH

在这里插入图片描述

设置环境变量后,npu-smi info命令依然可以查询到310B4芯片:
在这里插入图片描述

四、sample的编译

执行以下命令编译vdec_sample:

cd /home/HwHiAiUser/work/samples/cplusplus/level1_single_api/7_dvpp/vdec_sample
mkdir build
cd build
cmake .. -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE
make

在这里插入图片描述

五、测试数据的准备及程序的执行

执行以下命令设置环境变量及再次查询芯片:

export LD_LIBRARY_PATH=$HOME/Ascend/ascend-toolkit/latest/runtime/lib64:$LD_LIBRARY_PATH/usr/lib64/
npu-smi info

在这里插入图片描述

https://gitee.com/ascend/samples/blob/master/cplusplus/level1_single_api/7_dvpp/vdec_sample/readme.md中点击dvpp_vdec_h264_1frame_bp_51_1920x1080.h264下载dvpp_vdec_h264_1frame_bp_51_1920x1080.h264文件
在这里插入图片描述

将dvpp_vdec_h264_1frame_bp_51_1920x1080.h264文件拷贝到开发者套件的/home/HwHiAiUser/work/目录下:
在这里插入图片描述

执行命令将dvpp_vdec_h264_1frame_bp_51_1920x1080.h264文件拷贝到/home/HwHiAiUser/work/samples/cplusplus/level1_single_api/7_dvpp/vdec_sample/build目录,给vdec_demo可执行权限,然后运行它:

cp -rf /home/HwHiAiUser/work/dvpp_vdec_h264_1frame_bp_51_1920x1080.h264 /home/HwHiAiUser/work/samples/cplusplus/level1_single_api/7_dvpp/vdec_sample/build
ls
chmod +x vdec_demo
./vdec_demo --in_image_file ./dvpp_vdec_h264_1frame_bp_51_1920x1080.h264 --img_width 1920 --img_height 1080 --in_format 0 --in_bitwidth 8 --chn_num 1 --out_width 1920 --out_height 1080 --width_stride 1920 --height_stride 1080 --out_format 0 --out_image_file ./yuv_1920x1080_1frames_h264 --ref_frame_num 5 --dis_frame_num 3 --write_file 1

报错信息:
在这里插入图片描述

分析:
报错507033是指/dev/hisi_hdc这个设备节点普通用户没有访问权限。
解决方案是:卸载驱动,重新安装,安装时加上–install-for-all参数;或者切到root用户运行vdec_demo。
这边是切到root用户运行单路H264码流解码成功,如下图所示:

cd /home/HwHiAiUser/work/samples/cplusplus/level1_single_api/7_dvpp/vdec_sample/build
export LD_LIBRARY_PATH=$HOME/Ascend/ascend-toolkit/latest/runtime/lib64:$LD_LIBRARY_PATH/usr/lib64/
echo $LD_LIBRARY_PATH
npu-smi info

在这里插入图片描述

./vdec_demo --in_image_file ./dvpp_vdec_h264_1frame_bp_51_1920x1080.h264 --img_width 1920 --img_height 1080 --in_format 0 --in_bitwidth 8 --chn_num 1 --out_width 1920 --out_height 1080 --width_stride 1920 --height_stride 1080 --out_format 0 --out_image_file ./yuv_1920x1080_1frames_h264 --ref_frame_num 5 --dis_frame_num 3 --write_file 1

在这里插入图片描述

### GPIO 功能简介 Atlas 200I DK A2 开发者套件集成了昇腾 AI 处理器,具备强大的边缘计算与 AI 推理能力。除了这些核心功能外,该开发板还提供了用输入输出(GPIO)接口,允许用户进行硬件交互和控制外部设备[^3]。 GPIO 是一种用的数字信号引脚,可以配置为输入或输出模式。过编程控制 GPIO 引脚的状态,可以实现对外部设备的控制(如 LED、继电器等)以及读取外部传感器的数据(如按钮状态、温度传感器等)。 ### GPIO 接口位置与编号 Atlas 200I DK A2 开发者套件的 GPIO 接口常位于开发板的扩展排针区域。具体的引脚编号和功能定义可以在官方提供的硬件手册中找到。建议在使用前查阅昇腾官网的产品文档以获取详细的引脚图和说明[^2]。 ### 使用 GPIO 的步骤 1. **确认硬件连接** 确保使用的外设正确连接到 GPIO 引脚,并且没有短路或错误接线的情况。推荐使用杜邦线进行连接,并确保电源供应符合外设的工作电压要求。 2. **操作系统环境准备** Atlas 200I DK A2 默认运行基于 Linux 的操作系统,因此需要熟悉 Linux 下的 GPIO 控制方式。可以过 SSH 工具远程登录开发板并执行命令[^2]。 3. **启用 GPIO 驱动** 在 Linux 系统中,GPIO 设备过 `/sys/class/gpio` 文件系统接口进行管理。用户可以过写入特定值来导出某个 GPIO 引脚并设置其方向(输入/输出): ```bash echo <gpio_number> > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio<gpio_number>/direction ``` 4. **控制 GPIO 状态** 设置为输出模式后,可以过写入 `1` 或 `0` 来控制引脚的高低电平: ```bash echo 1 > /sys/class/gpio/gpio<gpio_number>/value # 设置为高电平 echo 0 > /sys/class/gpio/gpio<gpio_number>/value # 设置为低电平 ``` 5. **读取 GPIO 输入** 如果将 GPIO 配置为输入模式,则可以从该引脚读取外部设备的状态: ```bash cat /sys/class/gpio/gpio<gpio_number>/value ``` 6. **Python 脚本示例** 可以使用 Python 编写脚本来简化 GPIO 操作。以下是一个简单的示例,用于点亮一个连接到 GPIO 的 LED: ```python import os import time GPIO_PIN = 17 # 替换为你实际使用的 GPIO 编号 # 导出 GPIO with open("/sys/class/gpio/export", "w") as f: f.write(str(GPIO_PIN)) # 设置方向为输出 with open(f"/sys/class/gpio/gpio{GPIO_PIN}/direction", "w") as f: f.write("out") try: while True: # 设置为高电平 with open(f"/sys/class/gpio/gpio{GPIO_PIN}/value", "w") as f: f.write("1") time.sleep(1) # 设置为低电平 with open(f"/sys/class/gpio/gpio{GPIO_PIN}/value", "w") as f: f.write("0") time.sleep(1) except KeyboardInterrupt: # 清理资源 with open("/sys/class/gpio/unexport", "w") as f: f.write(str(GPIO_PIN)) ``` ### 注意事项 - 在操作 GPIO 之前,请务必确认引脚的功能和电气特性,避免因误操作导致硬件损坏。 - 使用 GPIO 控制大功率设备时,应考虑使用适当的驱动电路(如 MOSFET 或继电器模块),以免超出开发板的电流限制。 - 建议参考昇腾官网提供的产品文档以获取最新的 API 和工具支持。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广东小6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值