文章目录
现阶段来说,自身价值的最大体现就是能够赚到更多的钱,用以改善自己和家人的生活。而技术的复杂性并不与收入成正比。它取决于:行业、大环境、老板格局、自己的胆子、运气。
对比是一个具象化的描述方式,嵌入式系统就像一个“猴版”的个人电脑。对比的层面也有很多:
系统 | RAM | ROM | 软件数量 | 功耗 | CPU性能 | 价格¥ |
---|---|---|---|---|---|---|
个人电脑(windows) | 32GB | 1024GB | 1500 | 105W | 100000 | 10500 |
高端个人Android手机 | 16GB | 1024GB | 950 | 23W | 4000 | 4999 |
顶级ARM开发板 | 8GB | 256GB | 600 | 15W | 1000 | 2000 |
STM32F4 | 48KB | 1MB | 1 | 0.008W | 35 | 99 |
Arduino UNO R3 | 2KB | 16KB | 1 | 0.003W | 20 | 78 |
51单片机开发板 | 0.5KB | 4KB | 1 | 0.005W | 10 | 58 |
芯片/开发板 | 个人使用评分(无量纲) |
---|---|
STC89C52RC | 0.5 |
arduino uno r3 | 0.85 |
STM32F103ZET6 | 1.5 |
STM32F407ZET6 | 2.5 |
Allwinner F1c200 | 4.5 |
Allwinner V3s | 5.5 |
Rockchip RV1103 | 6 |
Rockchip RV1106 | 8 |
Allwinner T113 | 15 |
Allwinner H3 | 40 |
Rockchip RV1126 | 50 |
Allwinner H618 | 85 |
Rockchip RK3566 | 110 |
Rockchip RK3568 | 120 |
Rockchip RK3588 | 500 |
Interl i7 10700 | 10000 |
以上就是我用过的芯片使用评分,个人色彩严重,完全没有参考意义。
我现有的这些芯片和开发板性能太弱鸡了。
大白话
嵌入式系统
系统 | 音视频功能 | 实时性 | 成本 | 出货量 | 复杂度 |
---|---|---|---|---|---|
单片机系统 | 几乎没有 | 极高 | 低 | 高 | 低 |
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平板电脑,它做的事情包括:
- 设置原理图,画板子,焊板子,设计外壳。
- U-Boot
- Linux kernel 内核驱动移植
- 构建文件系统
- 基于Qt开发平板电脑基础软件
- 系统级软件
- 窗口管理器
- 设备管理器
- 任务管理器
- 资源管理器
- 用户级软件
- 文件浏览/管理器
- 图片浏览器
- 网络浏览器
- 摄像头
- 计算器
- 设置
- 文本
- 音乐播放器
- 视频播放器
- …
- 系统级软件
教训:平板电脑还是用Android系统比较方便,不用从零开始写基础软件。
好处:这个Linux平板电脑的操作系统就是你开发的啦,比尔盖茨第二!!牛逼!!你可以把它命名为“牛逼OS”
使用LVGL做UI来写一个Linux平板工作量就更大了,LVGL只是一个UI库,功能库是没有的,需要你真正的从零开始写代码。