①即使只是修改代码 , 能修改的前提是能理解;能理解的最好煅炼方法是从零写出若干驱动程序 。
②很多时候 , 需要你深度定制系统 。
以前做联发科手机只需要改改界面就可以出货了 , 现在山寨厂一批批倒下 。 大家都使用原厂的方案而不加修改时 , 最后只能拼成本 。
举个例子 , 深圳有2家做交通摄像头、监控摄像头的厂家 , 他们曾经找我做过4个项目:
①改进厂家给的SD卡驱动性能 , 使用DMA 。
②换了Flash型号后 , 系统经常出问题 , 需要修改驱动BUG 。
③触摸屏点击不准 , 找原因 , 后来发现是旁路电容导致的 。
④裁减成本 , 把4片DDR换为2片DDR , 需要改bootloader对DDR的初始化 。
这些项目都很急 , 搞不定就无法出货 , 这时候找原厂?除非你是中兴华为等大客户 , 否则谁理你?
我在中兴公司上班时 , 写驱动的时间其实是很少的 , 大部分时间是调试:系统调优 , 上帮APP工程师、下帮硬件工程师查找问题 。 我们从厂家、网上得到的源码 , 很多都是标准的 , 当然可以直接用 。 但是在你的产品上也许优化一下更好 。 比如我们可以把摄像头驱动和DMA驱动揉合起来 , 让摄像头的数据直接通过DMA发到DSP去 。 我们可以在软件和硬件之间起桥梁作用 , 对于实体产品 , 有可能是软件出问题也可能是硬件出问题 , 一般是底层系统工程师比较容易找出问题 。
当硬件、软件应用出现问题 , 他们解决不了时 , 从底层软件角度给他们出主意 , 给他们提供工具 。 再比如方案选择:芯片性能能否达标、可用的BSP是否完善等等 , 这只能由负责整个方案的人来考虑 , 他必须懂底层 。
在操作系统领域 , 对知识的要求很多:
①懂硬件知识才能看懂电路图
②英文好会看芯片手册
③有编写、移植驱动程序的能力
④对操作系统本身有一定的理解 , 才能解决各类疑难问题
⑤理解Android内部机制
⑥懂汇编、C语言、C++、JAVA
它绝对是一个大坑 , 没有兴趣、没有毅力的人慎选 。
①这行的入门 , 绝对需要半年以上 , 即使全天学习也要半年 。
②它的职位 , 绝对比APP的职位少
③并且你没有1、2年经验 , 招你到公司后一开始你做的还是APP 。
优点就是:
①学好后 , 行业通杀 , 想换行就换行;想自己做产品就自己做产品 。
②相比做应用程序的人 , 不会被经常变动的需求搞得天天加班 。
③门槛高 , 当然薪水相对就高 。
操作系统领域 , 我认为适合于这些人:
①硬件工程师想转软件工程师 , 从底层软件入门会比较好
②单片机工程师 , 想升级一下 。 会Linux底层的人肯定会单片机 , 会单片机的人不一定会Linux 。
③时间充足的学生:如果你正读大二大三 , 那么花上半年学习嵌入式Linux底层多有益处 。
④想掌握整个系统的人 , 比如你正在公司里写APP , 但是想升为系统工程师 , 那么底层不得不学 。
⑤想自己创业做实体产品的工程师 , 你有钱的话什么技术都不用学 , 但是如果没钱又想做产品 , 那么Linux底层不得不学 。
⑥做Linux APP的人 , 没错 , 他们也要学习 。
这部分人不需要深入 , 了解个大概就可以:bootloader是用来启动内核 , Linux的文件系统(第1个程序是什么、做什么、各目录干嘛用)、APP跟驱动程序的调用关系、工具链 , 有这些概念就可以了
本文中 , 就把操作系统默认为Linux , 讲讲怎么学习嵌入式Linux+Android系统 。
1.4 嵌入式Linux+Android系统包含哪些内容嵌入式Linux系统包含哪些东西?不要急 , 举一个例子你就知道了 。
推荐阅读
- 学习知识|穿书之论如何掰直反派
- 学习知识|如何教育爱生气的孩子,爱发脾气的孩子怎么教育
- 学习知识|如何办理残疾人证明,残疾人证书办理
- 学习知识|如何和孩子沟通和教育方式,如何与自己小孩交流与教育
- 学习知识|做教育培训前景如何,2021年不允许办辅导班了吗
- 娱乐知识|she是谁,she照片分别是谁
- 冬季草莓如何保根
- 娱乐知识|k神是谁,DJx神是谁
- 娱乐知识|薛洋是谁,薛洋的结局是什么
- 娱乐知识|爆破是谁,爆破s级英雄