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

Linux上位机开发实践(做一专多能的方案提供者)

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

        嵌入式linux领域,不管是软件,还是硬件,都有学不完的资料,看不完的文档。那么对于开发人员来说,应该怎么处理呢?以软件为例,我们真的应该不停地去学习上层sdk开发、bsp开发和驱动开发吗。还是说,作为硬件开发的同学来说,需要不停去学习各种各样的芯片,什么ti、rk、zynq、pmu、ddr、flash、emmc都要来一遍。

        从商业的角度来说,其实不管学什么,我们都会焦虑。这里面最大的问题就是,没有实现一个技术到产品、商业的循环,不知道自己的价值在什么地方,也不清楚自己的定位在哪里。

1、先做好定位

        所谓的定位,就是明白自己的价值在什么地方。比如说,自己是做上位机开发的,那么自己的作用就可以实现硬件和其他设备之间进行通信与控制、编写简单的算法、编写Qt界面,接口方面知道232/485/can/eth,只要是涉及到这方面的工作,都可以胜任。

        因此,不管遇到什么样的linux soc板子,只要支持qt,自己就可以拿过来开发。哪怕板子不支持qt,也可以利用原厂sdk或者/dev/fb0进行开发,这就是自己的底气。

2、继续拓展上下游开发

        做了linux上位机开发,下面可以进一步拓展一下上下游的开发。对上,可以是windows开发。比如说,之前用linux qt开发,那么稍微做一下调整,就可以实现windows qt+boost的pc开发。技术方面几乎没有差别。

        对于下游,可以稍微多了解一下linux底层结构、stm32底层原理。比如linux底层结构有uboot、kernel、rootfs,常见的驱动错误怎么用dmesg去排查,简单的驱动ko如何加载等等。这部分都是非常成熟的内容,只需要花费不多的时间,就可以了解到。对于stm32,这方面的资料就更多,类似于stm32可以实现的内容、简单的pid控制、gpio/spi/iic/can/usb这些简单的外设,用到什么学什么,或者说客户需要什么学什么。

        有了上下游的基本知识,就为我们将来自己做方案打下一个坚实的基础。

3、找需求、做方案

        有了前面的知识做基础之后,接下来就可以对接各种需求。这种需求可以是电商网站自己找的,也可以是前同事给的,甚至是陌生人交流的,总之要通过各种方式拿到需求。开始的时候不要担心白嫖,抓住每一个交流的机会。作为技术开发的同学来说,这也是自己慢慢商业化、慢慢走向成熟的一个过程。

        开发的工程当中,尽量做到软硬结合。比如,对应的功能是纯软件,还是纯硬件,需不需要软硬结合,优先软硬结合的项目;开发的项目是否用到算法;开发的时候是否用到板子,市场上面是否可以买到等等。总之,开发的过程当中,我们会遇到各种各样的问题,原则上,只要风险可控,就应该积极去尝试。

        对于每一个机会,都要尽力去争取。很少有一上来,就完全对口的项目。修修改改、甚至中间反复拉扯,这都是正常的。而我们所需要的,就是快速的成长。

4、合理分配自己的时间

        前面说过,嵌入式本身比较复杂,很多时候自己并不一定能够全部完成。如果对应的功能不复杂,自己没有空全部完成,那么就可以外包出去。这里面比如说,web前端开发、web后端开发、简单的pc上位机开发、电路原理图绘制、电路layout、第三方pcb打样等等。如果自己有信得过的人或者有过合作的公司,交给第三方来做也是完全可以,没必要自己做所有的工作。时间上的分配非常重要,一个人的时间也是非常有限的。

5、一定要了解硬件

        作为嵌入式开发的技术人员来说,要想自己的开发体现出商业价值,一定要自己了解硬件。这种了解体现在对设备的了解、对电气的了解、对原理图的了解。我们自己可以不画原理图、不layout,但是pcb上面的基本元器件、基本原理图、bom成本、模块功能、ic的可替代性,这部分还是需要掌握的。因为在嵌入式开发当中,如果自己完全不懂硬件,是很容易被拿捏的。

        而且,很多软件的成本,是不被客户认可的。这种情况下,我们只能通过把软件预先放在硬件里面,通过硬件的方式来完成商业的循环。另外,其实现在很多硬件开发也不是很难,如果不碰ddr,很多的stm32开发板、内置ddr的soc开发本身也并不复杂,自己哪怕是用别人的核心板做扩展板开发,只要能满足客户的功能需求,也都是可以的,并不一定所有东西都是100%自己来做。

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

相关文章:

  • 从情感分析到朴素贝叶斯法:基于朴素贝叶斯的情感分析如何让DeepSeek赋能你的工作?
  • 【Kubernetes】RBAC(基于角色的访问控制)如何设置?如何管理 Kubernetes 的权限?
  • MCP 极简入门 - 三分钟 Cline + Smithery 运行 time 服务
  • HTTP/2:新一代网络协议的变革与优势
  • 借 DCMM 东风,提升数据管理价值生产力
  • BugKu Simple_SSTI_2
  • 【UE5 C++课程系列笔记】31——创建Json并保存为文件
  • 横扫SQL面试——TopN问题
  • 团体设计程序天梯赛L2-025 # 分而治之
  • Maven使用
  • 3535 数组分割
  • Python 数据库选型指南(架构师视角)
  • BUUCTF-web刷题篇(12)
  • 智能体和RPA都需要程序思维,如何使用影刀的变量?
  • HarmonyOS-ArkUI Ability进阶系列-UIAbility与各类Context
  • Python解决“数字插入”问题
  • 英语听力4.5
  • 6547网:蓝桥STEMA考试 Scratch 试卷(2025年3月)
  • Python作业3 字符田字格绘制
  • C语言之标准库中的常用api
  • 必刷算法100题之计算右侧小于当前元素的个数
  • 【算法竞赛】状态压缩型背包问题经典应用(蓝桥杯2019A4分糖果)
  • Linux数据库:【数据库基础】【库的操作】【表的操作】
  • [SAP SD] 常用事务码
  • Linux的/proc/sys/net/ipv6/conf/(all,default,interfaceName具体网络接口名称)/ 笔记250405
  • 国产系统统信uos和麒麟v10在线打开word给表格赋值
  • HTTP查询参数示例(XMLHttpRequest查询参数)(带查询参数的HTTP接口示例——以python flask接口为例)flask查询接口
  • ConstructorResolver
  • Day2-2:前端项目uniapp壁纸实战
  • HashMap 底层原理详解