基于海思soc的智能产品开发(芯片sdk和linux开发关系)

devtools/2025/3/7 2:21:48/

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        随着国产化芯片的推进,在soc领域,越来越多的项目使用国产soc芯片。这些soc芯片,通常来说运行的os不是linux,就是android。如果是android,自不必多少,一般厂家都有对应的demo board,开发商改动的不多。但是对于linux来说,我们每一个开发者需要了解下,厂家给的sdk和linux开发本身是什么关系?

1、soc烧录方式

        不同的soc厂家,提供的烧录方式是不一样的。通常,都会提供一个pc上位机,这个时候可以借助这个上位机和板子进行通信。通信的方式可以是串口、usb otg、网络。如果不提供上位机,很多soc还支持tf卡启动,这种情况下,其实就无所谓上位机了。只需要把uboot、kernel、rootsfs通过tf读卡器烧录到特定的扇区,或者文件系统就好了。

2、部分驱动厂家不提供源代码

        很多驱动,厂家是不提供源代码的,但是提供ko文件或者fw bin文件。这些驱动包括不限于isp驱动、视频编码、视频解码、音频编码、音频解码、gpu驱动、npu驱动等等。也就是说,如果我们想用这些驱动,只能通过api进行调用访问,但是想魔改代码是不行的。

3、硬件加速部分一定要使用厂家的sdk

        很多功能,虽然纯软件也可以实现,但是在处理速度上面和硬件比起来还是差的比较远。以视频编码为例,我们用ffmpeg虽然也可以mp4、avi去编码,但是能不能做到实时处理,就要打一个问号了?这种情况下,一般处理的方式,是既保留ffmpeg的框架,还需要硬件加速的api,实现两者之间的融合,共同去满足客户的需求。

4、选择合适的soc芯片

        芯片的性能越高,价格也会越高。而且,高性能的芯片,对于采购、原理图绘制、layout、工艺生产,都会增加不小的负担。所以,本着能省则省的原则,我们应该尽量使用低成本、高性价比的芯片,满足功能就好。换句话说,就是杀鸡不用牛刀。能用低速用低速,用内置ddr就内置ddr,能用flash就用flash,诸如此类。

5、linux开发是基础

        只要跑的os是linux,就离不开linux编程基础。这里的基础包括很多的内容,比如说软件的配置、编译、调试。等系统运行起来之后,还有多线程、多进程、数据库、网络通信、配置文件、web访问、界面绘制等等,这些和具体的芯片没有关系。只要soc使用的是linux,就离不开这些内容。

        除此之外,设备部分也是大同小异。处理camera,就要用到/dev/video0和v4l2;处理音频,就要用到alsa api;其他gpio、uart、485、iic、spi、can、panel设备的访问也差不多。这些低速设备的接口、api都是差不多的。我们学会了一种soc,其他的soc也会触类旁通,都会学会的。

        对于linux生态的软件也是一样,除了软件版本的差异之外,理论上只要能在linux编译起来,就可以让所有的linux开源软件为自己所用。

6、多多使用厂家sdk里面的上位机

        除了烧录上位机,有的soc厂家还会提供其他的上位机,比如图像的标定、camera的实时显示、产品性能的分析、npu model的翻译等等,这些工具大家都要灵活掌握。有些工具是通用的,有些工具则是厂家自己单独开发的,没有统一的标准。


http://www.ppmy.cn/devtools/165131.html

相关文章

微信小程序投票系统的构建与实现

在数字化时代,微信小程序已经成为人们日常生活的重要组成部分。无论是企业宣传、活动组织还是社交互动,小程序都展现出了其强大的功能和便捷的用户体验。其中,微信小程序的投票系统尤为突出,它不仅能简化投票流程,还能…

iOS UICollectionViewCell 点击事件自动化埋点

iOS 中经常要进行埋点,我们这里支持 UICollectionViewCell. 进行自动化埋点,思路: 通过hook UICollectionViewCell 的setSelected:方法, 则新的方法中执行埋点逻辑,并调用原来的方法 直接上代码 implementation UICol…

Linux安装Redis以及Redis三种启动方式

目录树 一、安装前的软件准备二、Redis的安装三、Redis的三种启动方式!!! 1、直接启动Redis2.后台进程方式启动Redis3.通过开机启动方式 四、Window上桌面连接Linux上的Redis 一、安装前的软件准备 Xshell —— 连接Linux并操作其终端的软…

HCIA-IP路由动态-RIP

一、概念 动态路由是指路由器通过运行动态路由协议(RIP、OSPF等),自动学习和发现网络中的路由信息。路由器之间通过交换路由协议数据包,互相通告自己所知道的网络信息,从而构建和更新路由表。 二、RIP(路由信息协议)…

CSS—px与rem:3分钟掌握rem适配原理

个人博客:haichenyi.com。感谢关注 1. 目录 1–目录2–px3–rem4–移动端适配 2. px(像素) px我们用的很多,一直都在用。我们真的了解px吗?   之前最常见的720P的分辨率和1080P的分辨率是啥意思?这里的720P的对应的就是1280x72…

SOUI基于Zint生成EAN码

EAN码广泛应用与欧洲的零售业。包括EAN-2、EAN-5、EAN-8和EAN-12码。分别编码 2、5、7 或 12 位数字。此外,可以使用 字符将 EAN-2 和 EAN-5 附加符号添加到 EAN-8 和 EAN-13 符号中,就像 UPC 符号一样。 EAN-8校验码计算: 从左往右奇数位的…

Android动态适配中英文开发指南

Android动态适配中英文开发。首先,我需要确定用户的需求到底是什么。可能他们正在开发一个需要支持中英文的Android应用,想要知道如何动态切换语言,而不仅仅是依赖系统默认语言。或者他们可能遇到了在应用内切换语言时的一些问题,…

将JSON格式数据转化为sql 插入语句

import json# 从 txt 文件中读取 JSON 数据 def read_json_from_file(file_path):with open(file_path, r, encodingutf-8) as file:return file.read()# 将 SQL 语句写入到 txt 文件中 def write_sql_to_file(output_file_path, sql_statements):with open(output_file_path, …