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

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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.mzph.cn/web/71440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将数据库结构化数据整合到RAG问答中的方式

**将数据库(结构化数据)接入 RAG(Retrieval-Augmented Generation)**的常见方式,并分别说明其实现方法、优点与缺点。 方式一:LLM 自动生成查询语句(SQL/NoSQL)直接访问数据库 方法…

论坛系统测试报告

目录 一、项目背景二、论坛系统测试用例思维导图三、论坛系统测试3.1界面测试3.2登陆测试3.3主页测试3.4个人中心测试 四、自动化测试脚本4.1配置驱动4.2创建浏览器类4.3功能测试4.3.1登陆测试4.3.2注册测试4.3.3主页测试4.3.4帖子编辑4.3.5运行主代码 五、BUG分析六、测试总结…

python量化交易——金融数据管理最佳实践——使用qteasy大批量自动拉取金融数据

文章目录 使用数据获取渠道自动填充数据QTEASY数据拉取功能数据拉取接口refill_data_source()数据拉取API的功能特性多渠道拉取数据实现下载流量控制实现错误重试日志记录其他功能 qteasy是一个功能全面且易用的量化交易策略框架, Github地址在这里。使用它&#x…

后端架构模式之-BFF(Backend-For-Frontend)

Backend-for-Frontend(BFF) 的概念与意义 1. 什么是 Backend-for-Frontend(BFF)? Backend-for-Frontend(简称 BFF)是一种后端架构模式,它为特定的前端应用(Web、移动端…

upload-labs靶场 1-21通关

目录 1.Pass-01 前端绕过 分析 解题 2.Pass-02 服务器端检测--修改IMME 分析 解题 3.Pass-03 黑名单绕过 分析 解题 4.Pass-04 .htaccess绕过 分析 解题 5.Pass-05 . .绕过和.user.ini绕过 分析 解题 6.Pass-06 大小写绕过 分析 解题 7.Pass-07 空格绕过 分…

信贷风控系统架构设计

设计一个信贷风控系统需要综合考虑业务需求、技术架构、数据治理、合规安全等多个维度。以下是从顶级Java架构师视角的系统设计方案,分模块详细说明: 一、系统架构设计原则 高可用性:7x24小时服务,多机房容灾。低延迟&#xff1a…

Ubuntu20.04 在离线机器上安装 NVIDIA Container Toolkit

步骤 1.下载4个安装包 Index of /nvidia-docker/libnvidia-container/stable/ nvidia-container-toolkit-base_1.13.5-1_amd64.deb libnvidia-container1_1.13.5-1_amd64.deb libnvidia-container-tools_1.13.5-1_amd64.deb nvidia-container-toolkit_1.13.5-1_amd64.deb 步…

【工具】COME对比映射学习用于scRNA-seq数据的空间重构

介绍 单细胞RNA测序(scRNA-seq)能够在单细胞分辨率下实现高通量转录组分析。固有的空间位置对于理解单细胞如何协调多细胞功能和驱动疾病至关重要。然而,在组织分离过程中,空间信息常常丢失。空间转录组学(ST&#xf…

Idea配置注释模板

一、配置类注释模板 打开IDEA,打开settings(快捷键:Ctrl Alt s),选择Editor,找到File and Code Templates 这里以设置class文件为例,点击Class,在右侧配置以下内容 #if (${PACKAGE_NAME} && $…

pytorch高可用的设计策略和集成放大各自功能

在使用 PyTorch 编写模型时,为确保模型具备高可用性,可从模型设计、代码质量、训练过程、部署等多个方面采取相应的方法,以下为你详细介绍: 模型设计层面 模块化设计 实现方式:将模型拆分成多个小的、独立的模块,每个模块负责特定的功能。例如,在一个图像分类模型中,可…

从开源大模型工具Ollama存在安全隐患思考企业级大模型应用如何严守安全红线

近日,国家网络安全通报中心通报大模型工具Ollama默认配置存在未授权访问与模型窃取等安全隐患,引发了广泛关注。Ollama作为一款开源的大模型管理工具,在为用户提供便捷的同时,却因缺乏有效的安全管控机制,存在数据泄露…

初识Qt · 信号与槽 · 基础知识

目录 前言: 信号和槽初识 两个问题 前言: 本文我们正式开始介绍信号与槽这个概念,在谈及Qt中的信号与槽这个概念之前,我们不妨回顾一下Linux中的信号,比如发生了除0错误,OS就会给该进程发送一个信号&am…

Kotlin 5种单例模式

在Kotlin中实现单例模式有多种方法,以下是几种常见的方法: 饿汉式 饿汉式是最简单的一种实现方式,在类加载时就完成了实例的初始化。 //饿汉式 object Singleton1 {fun printMessage() {println("饿汉式")} }懒汉式 懒汉式是延迟…

探秘基带算法:从原理到5G时代的通信变革【一】引言

文章目录 一、引言1.1 研究背景与意义1.2 研究目的与方法1.3 研究内容与创新点 本博客为系列博客,主要讲解各基带算法的原理与应用,包括:viterbi解码、Turbo编解码、Polar编解码、CORDIC算法、CRC校验、FFT/DFT、QAMtiaozhi/解调、QPSK调制/解…

C/C++输入输出(1)

1.getchar和putchar 1.1getchar() 函数原型: 1 int getchar(void); getchar()函数返回用户从键盘输入的字符,使用时不带有任何参数。 程序运行到这个命令就会暂停,等待用户从键盘输入,等同于使用cin或scanf()方法读取一个字符…

【消息队列】数据库的数据管理

1. 数据库的选择 对于当前实现消息队列这样的一个中间件来说,具体要使用哪个数据库,是需要稍作考虑的,如果直接使用 MySQL 数据库也是能实现正常的功能,但是 MySQL 也是一个客户端服务器程序,也就意味着如果想在其他服…

飞机大战lua迷你世界脚本

-- 迷你世界飞机大战 v1.2 -- 星空露珠工作室制作 -- 最后更新:2024年1月 ----------------------------- -- 迷你世界API适配配置 ----------------------------- local UI { BASE_ID 7477478487091949474-22856, -- UI界面ID ELEMENTS { BG 1, -- 背景 BTN_LE…

图解MOE大模型的7个核心问题并探讨DeepSeekMoE的专家机制创新

原文地址:https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-mixture-of-experts #mermaid-svg-FU7YUSIfuXO6EVHa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FU7YUSIfuXO6EVHa .error-icon{fill…

【智能机器人开发全流程:硬件选型、软件架构与ROS实战,打造高效机器人系统】

文章目录 1. 硬件层设计(1) 传感器选型(2) 计算平台 2. 软件架构设计(1) 核心模块划分(2) 通信框架 3. 关键实现步骤(1) 硬件-软件接口开发(2) SLAM与导航实现(3) 仿真与测试 4. 典型框架示例基于ROS的移动机器人分层架构 5. 优化与扩展6. 开源项目参考 1. 硬件层设计 (1) 传感…

React Native v0.78 更新

这个版本在 React Native 中引入了 React 19,并带来了一些重要的新功能,例如 Android 矢量图(Vector Drawables)的原生支持 以及 iOS 更好的 Brownfield 集成。 亮点 React 19 集成更小更快的发布节奏可选择在 Metro 中启用 Jav…