【思考】这几年对嵌入式系统的思考总结

现阶段来说,自身价值的最大体现就是能够赚到更多的钱,用以改善自己和家人的生活。而技术的复杂性并不与收入成正比。它取决于:行业、大环境、老板格局、自己的胆子、运气。

对比是一个具象化的描述方式,嵌入式系统就像一个“猴版”的个人电脑。对比的层面也有很多:

系统RAMROM软件数量功耗CPU性能价格¥
个人电脑(windows)32GB1024GB1500105W10000010500
高端个人Android手机16GB1024GB95023W40004999
顶级ARM开发板8GB256GB60015W10002000
STM32F448KB1MB10.008W3599
Arduino UNO R32KB16KB10.003W2078
51单片机开发板0.5KB4KB10.005W1058
芯片/开发板个人使用评分(无量纲)
STC89C52RC0.5
arduino uno r30.85
STM32F103ZET61.5
STM32F407ZET62.5
Allwinner F1c2004.5
Allwinner V3s5.5
Rockchip RV11036
Rockchip RV11068
Allwinner T11315
Allwinner H340
Rockchip RV112650
Allwinner H61885
Rockchip RK3566110
Rockchip RK3568120
Rockchip RK3588500
Interl i7 1070010000

以上就是我用过的芯片使用评分,个人色彩严重,完全没有参考意义。
我现有的这些芯片和开发板性能太弱鸡了。

大白话

嵌入式系统

系统音视频功能实时性成本出货量复杂度
单片机系统几乎没有极高
Linux系统一般
Android系统极高低(非品牌)

单片机系统

为了一个使用场景,可以解决用户的一个简单的需求。让用户有购买的动力。

OTA/DFU/固件升级功能
产品核心功能
输入输出功能
ADC/充电/电源系统功能
PCBA测试/功能测试功能
本地数据保存功能
无线数据传输功能功能
数据加密通信功能
代码复用功能

Linux系统

基于一个特定的使用场景,可以解决用户的一个较为复杂的需求。

  • 网络摄像头
  • 行车记录仪
  • 工业平板
  • 广告机
  • 网关
  • 智能门锁音视频部分
  • 机器人系统

Android系统

没有特定的使用场景,解决较为通用的需求。

  • 民用平板
  • 民用手机
  • 工业平板
  • PDA
  • 广告机

前言

在过去的三年里,我沉迷于在各种板子上面编译SDK,各种搞机,各种折腾。最近的半年里我已经开始编译Android系统了。

SDK

我就深入接触了两个国内的厂商:全志和瑞芯微

全志 | Allwinner

低端芯片SDK很烂,烂到都想自己整个SDK。中端芯片有Tina、自定义的Buildroot文件系统。高端芯片基本上都有Android支持。

瑞芯微 | Rockchip

这个必须夸,低端芯片都有官方支持的基于BusyBox SDK文件系统稍微改改就可以改成更完整的Buildroot文件系统。中端及以上基本上都有基于Buildroot的SDK文件系统(深度定制的Buildroot文件系统)。中高端芯片基本上都支持Android。


U-Boot

基本上没有改过,编译次数大概是:200~300次。


Linux Kernel

最常用,最常编译,加功能,加驱动,都要重新编译,我粗略估计有编译过Linux Kernel的次数大概有:400~700次。


文件系统

BusyBox

编译次数大概是:20~40次。

Buildroot

包括各种深度定制的Buildroot,编译构建的次数大概是:300~450次。

Android

编译次数大概是:10~15次。

人机交互界面

在以前对于人机交互界面有一种神之迷恋,在多次(50~60次)在文件系统中添加自己交叉编译的Qt软件系统之后,人也麻了。平淡了,感觉没有那么神圣了。

Qt

用了这么久,我总结来说就是,Qt可以从零开始写一个类似Android或Windows的操作系统可视化界面及其相关匹配的软件系统。

如果你是一个不知道天高地厚的中二少年,你可以构建一个自己的“Windows”操作系统。要想完成这个操作系统的必须步骤是你大概需要从零开始写1500个操作系统软件(代码行数大概5000万+)。

LVGL

轻量级的第三方图形库。


另一种视角

  • Android系统是一个非常完善的系统,编译好以后几乎不会改什么,主要是开发APP。(最具讽刺的产品:MP4,4.0寸触摸屏,全志芯片,Android11,8GB/32GB,wifi+BT,¥189)白菜价?烂大街?
  • Buildroot文件系统会根据目的进行裁剪。
  • Linux Kernel会根据目的进行裁剪。

产品功能决定软件包

以Linux系统产品为例,在构建文件系统的时候不同的产品会有固定的一系列软件包。然后优化的时候不使用的内核模块和用户空间软件会被裁剪掉。


心路历程

曾经我从零开始做了一个Linux平板电脑,它做的事情包括:

  1. 设置原理图,画板子,焊板子,设计外壳。
  2. U-Boot
  3. Linux kernel 内核驱动移植
  4. 构建文件系统
  5. 基于Qt开发平板电脑基础软件
    • 系统级软件
      • 窗口管理器
      • 设备管理器
      • 任务管理器
      • 资源管理器
    • 用户级软件
      • 文件浏览/管理器
      • 图片浏览器
      • 网络浏览器
      • 摄像头
      • 计算器
      • 设置
      • 文本
      • 音乐播放器
      • 视频播放器

教训:平板电脑还是用Android系统比较方便,不用从零开始写基础软件。
好处:这个Linux平板电脑的操作系统就是你开发的啦,比尔盖茨第二!!牛逼!!你可以把它命名为“牛逼OS”

使用LVGL做UI来写一个Linux平板工作量就更大了,LVGL只是一个UI库,功能库是没有的,需要你真正的从零开始写代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值