七年之痒

为什么要写《从零开始做一名Android BSP工程师》?

1. 人人为我 我为人人

笔者从第一份拿到薪水的工作开始,碌碌无为地已经虚晃了7年了,不管一开始是做Ruby on Rails和J2EE,还是后来从事C/C++应用开发,亦或是现在从事的Android BSP相关的工作,每一次对于新知识的认识,自己对新DEMO的调试,大部分都来自于CSDNer们的无私奉献,我也加入了几个技术群,现在慢慢地发现,基本上我的技术难题(有的是碍于场景特殊、有的是需求怪异)已经无人能够回答,可是任然有很多朋友的问一些基础的问题,我如果看到都会一一解答,可是往往碰到一种现象,他们往往会一直私聊我,直到他们的问题被彻底解决,最后他们满足地说了声,“大神,谢谢!”,我却没有丝毫虚荣,因为我知道我比他们“大神”的仅仅是知识面和经验,而我仅仅花费了一些时间和耐心而已!慢慢地,我发现CSDN上的博客专家们他们的优势也就是时间和耐心,我才恍然大悟,我必须花点时间整理整理我的知识面,从而来帮助更多的人了!


2. 温故而知新

从事开发这么多年,前几天因为一个技术问题找了找我积累的资料库,都是一些对自己工作用得上的文章、工作中碰到的难题以及解决方案、很多人调试用过的demo、各种已经出版专业电子书、网上牛人呕心沥血写的比较全面的技术书籍等,居然都有一千多个了,而我却从未整理过。这个技术问题居然是我2年前花了一个星期熬出来的问题,上面写着详解的解决方案,而我又被这问题弄的头昏脑涨了3天,真是让人唏嘘,所以我也必须整理一下我的资料库,把这些经验教训、小窍门、技术难题等分门别类,有些问题可能当时解决了,由于工作忙没有仔细去探讨,这样没有真正理解,也非常容易忘记,这次也得彻底地解决一下!


3.面子工程

在几个技术群里讨论问题的时候,有时候我不忙的时候,会帮一些朋友们把问题分析的比较透彻,从知识背景到应用场景,再到用法,有时候我还帮他们调试程序,把结果截图给他们,好多人都意犹未尽,都问我,你有没有博客,让我看看,我的通常回答就是“我这个人比较懒,没有博客”,我有时候说到这里感觉自己很羞愧,作为一个没有写博客的人,帮您分析了这么久,浪费您的时间了~~


4. 深度广度兼具

想做好一名Android BSP,我深深地感觉需要太多的知识面,有时候你需要判断频繁死机,究竟是你的系统稳定性差,还是恰好这块CPU是个次品(碰到过几次,折腾了很久, 泪奔~~~)。有时候你还要判断这个3G模块没反应,究竟是你的驱动程序没调好,还是硬件工程师们来了个虚焊。有时候你还要判断你给应用工程师提供的JNI库,他们老是调用不到,究竟是你的程序BUG多,还是他们写错了那一个字符始终onload不上。有时候你还要判断,你这个系统启动后就加密失败,究竟是你的辛辛苦苦优化的系统后的问题,还是就这么寸,硬关机有时候会带来nandflash的稳定性问题而导致程序丢失而启动不起来。

记得我的领导告诉我,“你别跟我说软件问题还是硬件问题,出了问题都是软件问题…………”,他这话的意思我明白,比如说开不了机了,说不清是软件问题还是硬件问题,但是总要有人去分析甄别,然后测试验证再解决。


大体来看 Android BSP要具备以下能力(太多了太细了,我只能略说一二)

程序语言: C语言(驱动以及LINUX应用程序,JNI也可用C)     C++(JNI,很多开源库)   JAVA(APP,FRAMEWORK)

脚本语言: Android是基于Linux 的,所以必须你能操作这个系统,必要的bash语言,是必须要会的,还有Linux平台的软件安装大部分都是脚本控制,比如下载Android的repo 就是用python写的,也必须看懂,还有makefile要会写吧

Android:Android专用驱动、Android硬件抽象层(HAL)、Android JNI、Android Dalvik虚拟机、Android组件、Android应用程序框架等等

硬件知识: 最起码原理图要会看吧,知道这个wifi是SDIO的还是USB的,这款3G模块是串口的还是USB的,这个外设的引脚,哪根是接地,哪几根悬空,那根接电源吧,哪些GPIO可以复用,有时候甚至还要拿起烙铁给自己的板子焊一根串口线~

Linux系统原理: 这个对于初学者可能是最难的,空洞的理论知识。进程如何调度、队列如何定义及使用、中断为什么分上下部分、对于进程上下文和中断上下文的真正理解,定时器的使用,这些基础的Linux原理等等,必须耐住性子把这些知识面一一掌握,否则在阅读驱动以及内核代码的时候,会非常非常吃力。如果掌握了Linux的基本原理,驱动一款硬件就是一个比较简单的事情了。


以上我简单了介绍了我写这一系列BLOG的初衷和原因,当然了,本人不是砖家和大婶,也知道自己介绍的东西难免会漏洞百出,只求各路牛人们指出不足也可,直接拍砖也罢,耐心建议也行,反正多交流。

你可能感兴趣的:(杂感,A10,android,BSP)