个人认为做BSP一般分成两种:bring up和porting。一般做产品的基本上都没有机会做bring up工作。做bring up一般都是方案商或者芯片厂商。
以下分析下做porting让人迷茫的原因:
做porting的确会让人迷茫,因为在这个过程中我们需要改动的代码其实不多,面临整个产品的BSP porting工作时,我们需要熟悉kernel / android HAL / android framework各个子系统,但子系统太多导致我们可能没法精通所有的子系统。譬如 kernel中的usb 的枚举过程、pcie设备的枚举过程、ALSA中如何加入新的 audio codec驱动、V4L2中如何添加新的camera sensor的驱动等等。简单说,android体系庞大,BSP部分涉及3种编程语言,多个子系统,全部精通对个人而言不太现实,所以总会感觉自己什么都不会,但什么又都知道一点。
想要破除这个魔咒,“普遍撒网,重点捉鱼”的战术会凑效。譬如我做过一年硬件,做了三年的kernel driver porting,做了一年android kernel/HAL/Framework开发维护,体系跨度不算大,但东西都比较繁杂,技术含量并不高。所以我得规划是重点学习 audio/video部分,以后做多媒体部分的工作。
以上说的可能会比较乱,想到哪写到哪,希望对你有所帮助。其实我也比较迷茫,人生不就是这样么,迷茫着,然后一辈子就过去了^v^