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

Linux上位机开发实践(从用板子到自己做板子)

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

        既然是嵌入式开发,除了开发软件之外,硬件的使用也是非常重要的。一般来说,刚开始的时候,我们习惯于使用现成的板子,俗称开发板。等到比较熟悉之后,我们就开始想办法做自己的板子。做板子通常也不是一蹴而就的。起初,最好是用别人的核心板,自己做底板。等到有一点实力之后,就可以考虑自己做soc板子,但还是建议使用那种内嵌ddr的板子,这样风险小一点。等到这一切都ok之后,就可以考虑自己做核心板了。

1、挑选开发板

        现在市面上的开发板还是很多的。包括国外的树莓派,以及国内的各种水果派,都是可以买到的。另外,就算自己不想做板子,电商网站上面也有很多的工控板可以选择,这部分也都可以买到,价格也不贵。在一开始做项目的时候,挑选别人的板子,这都是常见的做法,没有什么不妥。只是自己挑选的时候,不建议过分关注价格,而是把精力放在硬件的质量之上,这样比较好一点。

        开发板一般所有的驱动都是写好的,用户专注于上层开发即可。

2、购买核心板

        购买的板子,一般尺寸、大小、功能都是别人提前设置好的,价格方面也未必合适。所以如果开发板不合适的话,可以外购核心板,自己做扩展板,这也是常见的开发方式,而且核心板种类也是比较多。目前北京某为,某凌、某龙、某尔,诸如此类,都会提供linux的核心板。核心板一般只有soc、ddr、emmc/flash、pmu。少部分还带有eth phy芯片。所以板子上面,基础的驱动是没有问题的,但是下面的扩展驱动就要自己解决了,比如说spi、iic、hdmi、mipi屏幕、sdio、usb、eth等等。理论上有一个电源给核心板,这个板子就可以跑起来了。

        当然和开发板相比较,我们可以自己任意定制底板,这就比纯开发板相比,有一定的定制性。在满足客户需求方面,也有一定的便利性。

3、设计内置ddr的soc板

        和mcu开发板相比较,这种开发板就只有两个区别。第一个区别,soc板子上面多了很多不同的电压设计;第二,soc板子多了一个nor/nand/emmc存储。系统的镜像都是保存在这个芯片里面的,不像mcu,因为mcu的固件也是烧录到mcu里面的。除此之外,内置ddr的soc板子和mcu相比较区别不大。而且,这种内置ddr的soc芯片,封装以qfn居多,引脚个数控制在100以内,价格也不贵,好焊接,使用风险较小,非常适合入门。

        另外,很多芯片公司都提供对应的sdk,所以我们的硬件设计,很多时候也是直接魔改厂家的soc开发板即可。整体设计难度不是很高。只要原来的板子可以跑通,那么自己设计的板子一般来说问题也不大。

4、自己做核心板

        有了前面开发的经验,这个时候就可以开始自己做核心板了。不同的核心板的接口尽量统一。核心板最大的难点,其实不是原理图,因为原理图部分就是多一个外置ddr。难点在于layout,很多复杂的soc都是BGA封装,这种情况下,就只能多层布线。除此之外,由于ddr的存在,对于布线的等长设计,以及阻抗匹配也有要求。所以,如果对开发板要求较高,建议还是外包出去;如果是只有一片ddr,要求和走线没那么严格,那么试一下layout倒也无妨。

        设计核心板的好处,就是最低化降低成本,然后最大程度化实现客户的需求。不过这里面同样存在一个成本的问题。通常来说,只有数量到达一定程度的时候,自己做核心板才会比较划算。也就是说,公司业务达到一定阶段,才适合找一个专门的硬件工程师来做这种事情。其他情况下,可能还不如外采核心板划算,这也是很多核心板公司存在的原因和道理。

        不同的公司在不同的阶段,对于硬件的需求是不一样的。这种情况下,大家根据实际情况灵活选择即可,没有一个标准的答案。硬件本身是很繁琐的事情,却又是不得不做的事情,也正是因为这样,软硬一体才有价值。毕竟在很多人的印象当中,软件是没有成本的。要改变这一固有印象还是很难的。因此,软件要体现价值,必须附着在硬件之上才可以,这才是我们自己去做硬件的目的所在。

http://www.dtcms.com/a/108651.html

相关文章:

  • 针对 SQL 查询中 IN 子句性能优化 以及 等值 JOIN 和不等值 JOIN 对比 的详细解决方案、代码示例及表格总结
  • Webpack vs Vite:现代前端构建工具的巅峰对决与选型指南
  • Linux学习七——进程回收
  • 一文详解QT环境搭建:Windows平台Qt安装配置指南
  • react 15-16-17-18各版本的核心区别、底层原理及演进逻辑的深度解析--react18
  • 电脑异常关机导致oracle监听器启动后自动停止
  • 蓝桥杯 web 请到下一步
  • Spread使用 配合report使用前篇
  • python爬虫基础讲解
  • 【调用通义千问实现手写文字识别】
  • 04-08手写持久层框架——核心配置和映射配置文件解析
  • 从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.2.1视觉-语言模型(VLM)架构设计(CLIP与Flamingo模式)
  • HarmonyOS 基础组件和基础布局的介绍
  • Nyquist插件基础:LISP语法-条件语句
  • 数据量管理系统
  • 光学关键尺寸量测设备市场报告:2024年全球市场销售额达到了14.75亿美元
  • 鸿蒙NEXT开发土司工具类(ArkTs)
  • 前端中rem,vh,vw
  • 网约车APP评价系统从0到1
  • 红宝书第二十六讲:详解Web Workers:专用、共享、Service Worker
  • PyTorch中Linear全连接层
  • 视频设备轨迹回放平台EasyCVR如何搭建公共娱乐场所远程视频监控系统
  • 铁路语义分割数据下载RailSem19: A Dataset for Semantic Rail Scene Understanding
  • 使用Android 原生LocationManager获取经纬度
  • 教育软件 UI 设计:打造吸睛又实用的学习入口
  • SELinux
  • Leetcode-100 二分查找常见操作总结
  • 数据点燃创新引擎:数据驱动的产品开发如何重塑未来?
  • Airflow量化入门系列:第一章 Apache Airflow 基础
  • 红宝书第二十五讲:客户端存储(Cookie、localStorage、IndexedDB):浏览器里的“记忆盒子”