第一次听说ARM是在大学的时候,老师说电子类的学生入门就是51咯,然后进阶的就是430,再然后是STM32,再然后就是ARM嵌入式,搭载嵌入式系统了。当时因为啥都不知道,所以目光一直停留在处于入门的51上,对什么嵌入式更是一概不知。也就再没有了解过。
再后来开始想着去学习ARM的时候,已经是工作快1年的我。作为一个有梦想的青年,我一直幻想着本科毕业的我就能找到一份电子设计类的工作。然而幻想总是幻想,它是没有理论依据的。因此我人生的第一份工作就让我彻彻底底对硬件这方面失去了信心,并不是我刻意贬低硬件,而是硬件所涉及的方面过于广阔,如果一个硬件工程师本身学术不精学历不高(比如我),会被这个高手云集的行业所淘汰,所以挂着硬件工程师的名做着设备维护的工作是很常见的一种现象,而我的工作更是难以启齿地没有营养,工资还不高。所以当我想着转行如软件的时候,一下子就铁了心了。并不是因为软件的工资高,而是做软件至少不会让你去维护设备或者产品不良分析的,也不用去自己买些杂七杂八的东西,自己去拧螺丝刀(轮不到自己设计,轮到自己的只是去干干杂货搭搭平台是真没有营养的)。
所以下定决心之后,看了一些ARM学习的流程,也没管对不对,立马买了几本书(常被推荐的)和一个开发板,开始跟着视频慢慢做。这个过程给我的第一感觉是,内容比较多,有很强的专业性。但是第二感觉就是,学得很累,对于我这种小白,遇到一个视频没有涉及的问题简直是毁灭性的。而且上来面对的就是Linux系统,面对的是GCC和脚本编程,而我个人C语言都不算是精通,所以学习进度一度停滞不前。这也是给初学者的一些建议,不能上来就接触到这些浮云之上的内容,毕竟初学入门还没成仙,就算能看得到那些很牛逼的东西,但是站在地面上仰着脖子远望还是很吃力的。于是在我的一位老铁(志同道合者往往可共谋)向他的同事询问学习建议之后,才开始树立正确的学习观。首先这位老铁同事是个大牛,他直言不讳地批评了我们这种行为,直接接触嵌入式LINUX系统,可能最终也就停留在会写个boot loader,其他在没有基础的情况下很难再有突破。然后也给了很干货的意见。他说在我们这种情况下,得先从基础开始。首先接触低级一些 的芯片,比如STM32。先了解芯片的结构,再开始程序的编写。一来嵌入式的芯片结构类似,可以举一反三,二来STM32的基础程序编写难度不大,在逐渐熟练之后,熟练运用库函数之后,对以后学习更高阶的嵌入式芯片以及系统都有很大的帮助。不得不说,很有道理。接触STM32就比直接接触嵌入式系统容易很多。
总之,为了个人的梦想,好好学习好好深造,做一个勤劳的码农~