从不懂到入门,一只老鸟的嵌入式ARM学习心得

知识经验 21631浏览 8评论

本人大学学的是电子信息科学与技术专业,其实这个专业和嵌入式没有多大的关系,

要说有关系就是简单的讲了下C语言语法,学完之后还不知道什么是C语言,

只记住了,charintstring等占几个字节,ifforwhile循环什么的,

感觉也就能算一些小学就会的题目,全国计算机等级二级也就糊涂的过了。

我这个专业没学过C++,一开始不知道什么是向对象,什么叫面向过程,这可能让大家笑话了。

不过这说的是实话,大学的时候比较喜欢动手,喜欢硬件方面的东西,也喜欢看书。

 

在大一的时候就听学长说,单片机很难学,在没事的时候就从图书管借了本关于51的书,

一开始还真是不怎么懂,然后硬着头皮去看,当我把51的结构看完了,就不像一开始那样一头雾水了,

自己在纸上把51的结构图默画一遍,然后再把各个寄存器功能写一下,各个功能口的结构也画一遍,然后就不觉得51有什么难了。

其实有些时候不是这个东西你不会,而是在不会的时候自己先告诉自己这个太难了,自己先放弃了。

我们学习51芯片,是为了以后的打基础,知道是怎么通过配置寄存器来实现功能。
C语言

大二下学期的时候,我们开了51的课,这个课几乎就没怎么去,因为我认为没有必要去听自己会的东西了。

后来听别人说avr的资源会比51的丰富的很多,所以就想试试,看看有什么难的,

就从网上买了本马潮老师《AVR单片机嵌入式系统原理与应用实践》,

一边看书,一边想自己画一个板了,一开始想实现一个点阵屏,实现滚动效果,

后来想想做个板也花不少钱呢,

为什么不多加一些功能呢,还能多学到些知识,

所以就加了温感,红外,铁电存储器等并把所有的扩展口都扩展了出来,备以后用,

那时还挺自豪的呢,同学们都很羡慕,不过现在想想其实也没什么了。

 

大学也听说过嵌入式这个词,不过不太明白是什么意思,

09年的时候从网上找到中嵌视频,有四张DVD(大约13G),下载下来后,从头到尾的看了一遍,没什么印象,

只记得讲一些不知所云的函数,然后莫名其妙的讲怎么使用那个44b0的开发板,

不过听完了,还是有很大收获的,就有一种想装一个linux的冲动

我是大二下学期才有的自己电脑,不过电脑的配置比较低,1g内存,跑虚拟机就像个蜗牛,

所以就想着怎么才能装个linux,自己用XP习惯了,如果全换了又舍不得,

那时从书上知道linux的文件系统和windows不一样,只有一个根分区,

所以也害怕一装linux全盘就被格式化了,

不过最后还是欲望战胜了担心,买了张redhat 9的光盘,小心的装这个系统,

里边的英文也不是太难,还是知道大概意思的,所以一步步的装,

最后装到我的硬盘的最后空间,重新启动,竟可以选择进入哪一个系统了,

从这之后,自己就不害怕怎么装系统了,

应了那句言,纸上得来终觉浅,绝知此事要躬行

所以我认为,买一个开发板是完全有必要的,拿到实物操作一下就不会感觉太抽象了。

嵌入式

 

后来也想学学arm,但不知道arm是什么东西,

所以就买了本《从51到arm》,讲的是关于arm的大体结构,

看完后感觉,原来arm就是一个速度更快,接口更丰富的单片机啊

如果想做linux设备驱动的同学应该对arm硬件有一些了解。

如果对驱动不感兴趣,完全没有必要去看。

交叉编译器会帮我们做好这些事情,他比我们更了解arm结构。

大三下学期开始准备考研了,所以自己这些兴趣就先放下了,

报的北邮的信通学院通信专业,当时就是想一定要上个好学校好专业,也没想太多,

结果考了的成绩差了点,没有被录取,也不想调剂一个二流的学校,然后就参加工作了,

工作中每天都用的到开发板,当我看到一个小板上还可以跑系统的时候感觉很不可思议,以为要很大工程。

后来边工作边学习,每天都要看电脑看到眼发疼,晚上也都差不多十二点时才睡觉。

感觉到累,不过也感觉到自己在进步。

闲话有点多了,说了很多都是自己大学那点破事。

 

听很多的初学者说不知道从哪里开始,学习嵌入都要学哪些东西,

从网上搜了一下,一大堆的东西要学,一下就推荐十几本书,

说看完这本书怎么怎么样,看完那本书怎么怎么样,一下子就给初学者给吓住了,

其实完全没必要把网上的那些东西全部看一遍,

那样又费时,又感觉工程太大,让初学者没有信心去把每一种都看完。

网上说的些方面都要知道,不一定全部都掌握,

我们可以退成求其次,每一个都知道一些,当然会的越多越好。

今天学点这个明天学点那,换着样来也不会觉得烦,而且还能感觉到每天都有收获。

下面给嵌入式初学者一些自己的我个人建议。

1、嵌入式涉及到很多的基础知识

c语言,关于C语言要知道基本的语法

什么是结构体,什么是共用体,有什么区别,

不用强记一些二级考的东西,因在实际中用的很少。

c++要知道什么是类,怎么定义,继承,接口,要深刻理解,当然基本语法也是必不可少的。

操作系统原理也应该知道基本的原理的,

我记得我大学没这个课还是去电信学院蹭别的专业的课呢,

后来学习发现很多的东西都是在这个课上学到的。

什么时间片啊,任务调度啊,都是在那里知道的。

Linux基本命令的使用vi编辑器必须会用,因为在终端改文件的时候只能用这个),

我们现在很多的人都习惯用鼠标了,很少用到命令,我们学习嵌入linux可要改改这个习惯了,

linux用命令操作一是效率高,二是功能非常强大,远非图形界面能比的了的,

其实我们用图形界面的操作都要转化为命令传给硬件的。

Linux文件系统的管理要清楚,哪个目录存放是什么东西,有什么用,文件权限管理等

Shell编程也要了解一些,在这给大家推荐一个教程,周朝剑的 shell编程,

也就七八讲吧,讲的很全面。初学者看前4讲就可以了。

Linux设备驱动的架构要了解,,关于驱动给大家推荐一本书《LINUX设备驱动程序》中国电力出版社出版的,很经典的,

初学者看可能看不太明白,不过要坚持看,最次也得把前6章看完了。

2、看书不要希望一次就会

一次就明白是什么意思,也不要死记硬背,看不明白也没关系

以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就记住了,

遇到的少的,忘记也就忘记了。

还有,不要直接阅读linux内核源代码,看一些自己把头撞破也想不明白的事,

会打击初学者的积极性,要循序渐进,

今天学个做个led,明天做个串口,后天说不定就做硬件编解码了。

3、你可以不接受培训,但是不能不买开发板

如果你想学习嵌入式一定要买块学习板,现在的开发板很便宜了,给我们初学者减轻了很多经济负担。

看再多的视频,看再多的书,也不如自己动手试一下,

看着很简单的东西,做起来就可能遇到很多的问题,

遇到问题找到原因,解决问题,只有这样才能学到东西,

记得我第一次写led的驱动,想自己试一下,网上也有人写过相关的代码,

可是自己一试,就出了好多的问题,那个led弄了我一天才把led灯点亮。

所以不要眼高手低

还有关于培训,现在的培训机构很多,讲的也不错,老师也很好,

但是有一个问题,太集中了,而且学生动手的机会也不太多,

记得我们公司还招了一个在北京某个培训机构培训半年的员工呢,花了一万多,来了之后也没感觉有多高,

问他都学了什么,也就是我前边说的那些基础知识,很多的东西还是不知道的,

照着书弄个helloworld模块驱动两天没搞定。

不是培训不好,但我个人见解效果并不是很好。

记住:只有自己动手做过的东西才是自己的

现在买一块开发板很便宜,萤火虫开源平台的RK3399开发板就不错,

源码完全开放,而且资料也很丰富,完全能满足初学者学习用,

有人说友善和周立功的板子也不错,我个人觉得他们的板子不错,

但是不适合初学者,因为他们的很多的东西是不给代码的,

用过他们的板子的同学经常有这样的痛苦,想学一个东西,去找他的代码的时候,却找不到,

很多他们提供的代码中很多的都是封装好的,只提供给客户一个库,

初学者想要找代码的时候就不知道怎么办了。

4、不要好高骛远,要脚踏实地

对于初学者,还有一点小建议,

我们拿到一个开发板,很兴奋也很激动,想法自然也很多,

想用开发板实现自己的这个想法,实现那个想法,

然后又不知道从何下手,然后就去论坛中发一个贴,

“那个什么什么怎么实现啊,哪位大侠能详细说一下啊,跪求!!”

然后等着别人去回复。见没人回复就抱怨。

有想法是好的,我们要实现自己的想法也是有前提的,

首先,我们对这部分知识了解吗?如果不了解就去google一下(最好别用百度,不太好用),

了解了一些,也就大概知道要怎么做了。

如果再遇到问题,再去发贴问,这样也显得咱们有水平。

比如自己连串口是什么都不太清楚呢,就问串口通信怎么做啊,

就是人家把代码给咱,咱也不明白是怎么回事啊。

5、多看代码,多写代码

见多识广,熟能生巧。

多看代码,要从代码中读出代码的意思来。

自己平时也要多写代码,多练习(这一点我做的不好,写的少)。

写完已经晚上两点了,思路有些乱,

有些也是个人的见解,在有些人看来可能是错误的,

每个人有每个人的学习方法,但是我们的目的只有一个

——希望我们学到更多的知识。


发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (8)

  1. 谢谢啦
    李伟 3年前 (2015-12-20) 回复 编辑
  2. 我的妈呀,爱死你了
    康清玉 3年前 (2015-12-21) 回复 编辑
  3. 嵌入式学习的话,我觉得在华清远见培训比较好,老师非常给力,给我们规划未来的职业生涯
    大米松 1年前 (2017-06-26) 回复 编辑
  4. 可以的!
    XJJ 1年前 (2017-07-27) 回复 编辑
  5. 嵌入式,其实就是ARM+Linux,重点其实是嵌入式操作系统,建议先从单片机做起,了解GPIO、定时器啥的,也理解怎么用C语言操作硬件。然后再去学Linux操作系统,shell语法等,然后再买一个ARM开发板(初期买2410足够),学驱动开发啥的,建议去星创客学习。
    王尼玛 11个月前 (12-02) 回复 编辑
  6. 可以看看这两篇文章或许会对你有所启发 emb.hqyj.com/Column/10294.html?lbj emb.hqyj.com/danpianji/20181198.html?lbj
    刘阳 2个月前 (08-22) 回复 编辑
  7. 可以看看这两篇文章或许会对你有所启发 第一个 emb.hqyj.com/Column/10294.html?lbj 第二个 emb.hqyj.com/danpianji/20181198.html?lbj
    刘阳 2个月前 (08-22) 回复 编辑
  8. 你是博通的吗
    军中绿树 2个月前 (09-03) 回复 编辑