学习嵌入式既要把基础打牢,又要不停的做东西。因为你还是学生阶段需要好好打基础(C语言基础、数据结构和算法基础、操作系统原理基础、微机原理基础等),但是嵌入式学习需要很强的动手能力,不能总看书,要学一个知识点后马上用小实验验证它,这样你才能学得牢固、明白。刚开始学习不要让自己钻进某个小知识领域出不来,重要的是要先明白整个框架,知道学arm体系结构是为了什么,可以做什么,为什么需要内核,内核的作用,为什么要交叉编译,驱动是干什么的,它的大体分类以及每一类驱动的特点是什么,有linux系统和没有linux系统时有什么差别等等。你刚开始不要学得太深了,等你把整个流程走下来的时候,就大概知道嵌入式系统的框架了,那个时候再各各突破,学需要仔细研究的。这样会比较好点吧~具体学习过程给你个建议:(1)学习下简单的arm9体系结构,争取会编些裸机程序,比如控制下led灯,控制个点机什么的,如果你学过单片机得话,会发现和那个差不多,这个阶段主要是会用,不要求弄明白它的原理,你也弄不明白。(2)把linux用熟悉,至少要比用windows用的还熟,学下简单的unix、linux系统编程(为以后学驱动做点积累)(3)学习如何搭建交叉编译环境,知道这过程中需要做什么,比如bootloader移植,内核移植,根文件系统移值,交叉编译等。然后能比着做下来。(4)可以看些内核和驱动相关的书,驱动是学习内核的入口,重点是框架,难点是对硬件的抽象和针对和硬件通讯编写驱动。等这个过程下来时,你基本上已经快大四了。然后可以找你感兴趣的好好学了。这个事候就需要知其所以然了~当然还有最重要的就是英语要过关,不过关也要想办法弄过关~
1. 先选一块有名气的ARM板子
2. 在网上搜索如何搭建开发环境
不要采用板子供应商提供的开发包。自己去下载gcc, uboot, linux和跟arm芯片有关的补丁
搭建tftp,nfs等
3. ARM一般都会有固话的internalRom启动程序,利用这个启动程序来玩玩你的RAM版本的uboot。这部分要好好看看arm芯片的boot部分和开发板原理图。
4. 改改你的uboot中的flash驱动,争取做到flash启动(internal mode and external mode)
5. 学习uboot的各种命令
6. 学习如何加载linux和配置linux。
看书方面,鸟哥也行,华清软件也行,
个人意见: 学习linux, 先学习和熟悉操作(新手光这个部分可能都要几个月)和该操作的简单原理,然后在去研究程序设计。
不要迷茫了,人在两种情况下学东西最快:1、自己感兴趣的东西。2、在有压力的情况下。基于你的情况,你可能对嵌入式也不算很有兴趣。所以我认为你首先还是把毕业证先混到再说吧。然后到深圳这边找个嵌入式开发的公司,在研发部先做个小弟,慢慢再来吧。跟着这些人搞正真的有市场价值的项目可比你弄那个学习板强太多了。放心,面试没那么难,好多公司都会给毕业生一个学习的过程。
先学好LINUX C 吧,ARM先放一边。你学了系统编程了,所以可以检查自己学得合格不合格,你可以写一个基于终端的俄罗斯方块,再写一个多线程下载(服务端客户端都自己写),注意,这两个要自己从零开始,不要看别人的。第一个是查看C语言的,第二个是查看LINUX系统编程的。在这里给你一点提示:第一个用终端控制码实现,第二个用SOCKET+TCP+线程,自己定义传输头(即协议),再根据头信息传输数据。这两个如果你都会了,那么就可以去学ARM了,至于ARM的学习,基本的汇编还是必须的,不要从ARM 裸板汇编程序开始学,你可以先写一个hello world的程序,然后编译成汇编,看看其架构,再改其代码,然后编译,放在ARM板上跑,学完基本的汇编之后,就可以学裸板的汇编和C了,之后就是学SOC的上外设了,方法都一样,就是学学其寄存器的用法。嗯,这个最难了,我现在用ARM11的,片上外设多如牛毛,头都大了。TMD。
我以为,基础知识是首要的。。。不过具体的问题要具体看待,不如先好好看书再。。。