当前位置: 首页 > news >正文

Linux上位机开发实践(积极使用SoC厂家的SDK)

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

        有不少同学认为如果不涉及232/485/can/usb这些外设的话,linux开发就是把ubuntu linux的软件port到嵌入式开发板子上。这种想法其实有很大的片面性。如果是纯业务开发,嵌入式linux开发确实和一般的x86 ubuntu linux开发差异不大。但是回到嵌入式linux上面,除了外设硬件接口之外,还有很多加速ip可以使用、很多计算资源可以使用,甚至是一个soc里面再跑一个mcu rtos做运动控制都是可以的。所以说,简单把嵌入式linux开发看成是x86版本的移植,还是不妥的。

        通常,我们一个soc厂家的SDK开发包,里面有很多的内容值得我们来学习和分析。不同的soc厂家都会有一些自己的特色,比如说有的camera isp做的很好,例如海思;有的npu做的好,例如rk;有的价格低,例如全志;有的结合了arm和fpga,例如zynq;还有的生态比较好,复用了soc和mcu,比如stm32。总之,一个sdk里面的内容,要远比大家想要的多得多。

1、编译工具链

        不同厂家使用的编译器是不一样。哪怕都是arm cpu,也会有版本之分。比如有的cpu是32位的,有的是64位的;有的使用了glibc,有的使用了uclibc;有的版本比较老,有的则版本比较新。所以,我们开发的时候一定要听劝,按照厂家给的编译器进行开发,不要自己发挥。

2、基本的软件系统镜像

        SDK里面除了编译器,对于如何构建完整的soc镜像,厂家一般都会给出基本的软件系统。比如uboot、kernel、dts、busybox、rootfs,这些都是标配。也就是说,我们自己不需要从uboot开始,自己去看手册、写驱动、移植代码。从厂家的角度来说,他们希望的就是,客户可以拿到芯片之后,短时间之内迅速用起来,而不是在这些底层软件上面耗费太多的时间。

3、参考电路图和第三方芯片支持列表

        SDK里面通常包含了具体的参考电路,比如电源设计、晶振、ddr、nor/nand/emmc、camera、mipi屏幕、网口、wifi、tf、usb等等,这些都是标配。常见的外部芯片选型,比如说ddr、flash、支持的camera sensor、外置屏幕,他们也会给出自己推荐的品牌。一般来说,客户拿到demo板子之后,稍微改一下,就会让公版原理图为自己所用。

4、soc芯片手册

        很多厂家的soc芯片手册是不会公开发布的。只有自己购买了开发板,或者有明确的芯片需求并且下单之后,才会从厂家,或者是代理商那里拿到soc芯片手册。soc芯片手册,除了讲解电气特性,大部分都是关于各个ip模块的寄存器描述。

5、部分闭源的外设驱动

        很多的soc外设,厂家是不会写在soc芯片手册上的,但是客户又要使用这些外设,比如gpu、isp、视频编解码、音频编解码等等。这种情况下,厂家就会以闭源驱动的形式来进行发布,用户只需要在板子启动的时候,insmod这些ko文件就可以了。等到板子启动后,确认一下对应的设备节点有没有生成即可。

6、上层API开发包

        有了闭源驱动,下面还需要闭源的API开发包与之配合,才能进一步使用芯片里面的这些ip。有些程序,虽然纯软件也可以做,比如视频输入、输出,视频编、解码,音频输入、输出,音频编、解码,isp,gpu,npu等等,但是如果可以通过硬件加速来实现这些功能,要比纯软件实现要好很多。这些上层API开发包,基本上也就是对闭源驱动做一个封装,本质上还是打开设备节点、关闭设备节点、读写数据、设置设备属性那一套,只不过对外使用的时候换了一个名字而已。

        上层API开发包,除了特定设备节点的封装,有的时候还有很多的开源软件,比如boost、opencv、ffmpeg、qt,这些开发包出现在SDK里面也是常有的事情。

7、上层调试工具

        上层的调试工具很多,比如说烧录软件、camera sensor调试软件、npu模型转换软件、算法标定软件等等。甚至有些细心的soc厂家,会把常用的编辑软件、串口软件、ssh软件、ftp软件也给客户准备上,基本上服务到家的姿态。

        所以说,现在的芯片SDK早已经不是大家所理解的那种纯软件包,而是包含了电路、文档、代码和工具的复杂综合体。大家如果拿到了这样的芯片SDK,一定要好好学习,肯定会有很大的收获。学习的时候,要重点学习不同芯片之间的差别,学习软硬结合,而不是学习泛泛的linux和arm知识,开发板并不仅仅是学习ubuntu和debian。那样就失去了学习soc本身的意义。

相关文章:

  • Linux系统perf命令使用介绍,如何用此命令进行程序热点诊断和性能优化
  • 信息安全的数学本质与工程实践
  • 【算法工程】RAG:针对linux下文档解析出现乱码问题的解决
  • package.json版本前缀
  • 【Python 代码进阶-2】Python 中的 **(...)语法,字典解包操作符
  • 虫洞数观系列一 | 豆瓣电影TOP250数据采集与MySQL存储实战
  • 阿里巴巴1688类网站高保真原型设计
  • 国产化适配 - YashanDB、达梦数据库与MySQL 的兼容性及技术选型对比分析
  • 重学vue3(三):vue3基本语法及使用
  • AI驱动下的智能异常处置:海量多元异构数据的挑战与应对
  • 二分查找(二分答案)套路模板
  • JavaScript 改变 HTML 样式
  • 给Web开发者的HarmonyOS指南01-文本样式
  • Spring AI Alibaba ImageModel使用
  • vue的项目添加全局接口请求封装,并通过配置文件使接口请求变得更简洁易用
  • 13.2 kubelet containerRuntime接口定义和初始化
  • Java操作RabbitMQ
  • BCC-应用程序组件分析
  • 【身份安全】零信任安全框架梳理(一)
  • 如何在 Postman 中导入和导出 cURL 命令?
  • 王毅会见俄罗斯外长拉夫罗夫
  • 葡萄牙、西班牙突发大范围停电,交通和通信服务受到严重影响
  • 国务院任免国家工作人员:饶权任国家文物局局长
  • 五一期间上海景观照明开启重大活动模式,外滩不展演光影秀
  • 黄仁勋访华期间表示希望继续与中国合作,贸促会回应
  • 消费维权周报|上周违规经营类投诉较多,涉诱导加盟等