学习是一个循序渐进的过程。
我刚开始学的时候也是想“高大全”,什么都想学,从底层到应用都想学,后来发现这个是错误的思想。
软件规模在今天已经非常庞大,一个人不可能什么都学会,因此对自己在学习上有一个合理定位是很重要的。
你可以问问自己的兴趣在什么地方。
如果你对硬件寄存器、操作时序以及配套的底层软件感兴趣,恭喜你,你可以先学习关于驱动程序的编写,等到深入之后,你会自然而然的开始学习Linux内核以及各个模块的功能,因为这时非学不可了,你会成为一名优秀的Linux驱动工程师;
如果你对编写算法感兴趣,而对于底层的各种接口函数如何实现并没有多少兴趣,那么恭喜你,你可以尝试编写关于Linux的应用程序,例如图像处理、UI界面、基于Linux的媒体播放器等等,你会成为一名优秀的嵌入式应用软件工程师;
如果你只对硬件感兴趣,想尝试设计一些逻辑电路,甚至小型CPU,那么恭喜你,你可以完全抛弃ARM,投入FPGA或ASIC的怀抱,做一名IC设计工程师。
首先,ARM可以分为硬件和软件两方面,软件又分应用和驱动,你要是想学硬件,就要有些模数电的基础,会用一种绘图软件绘制原理图和PCB,会用ADS或别的调试硬件,在底层,没有OS的情况下,这个周期下来要几个月吧,要学会做笔记,把出现的问题都记下来,以便以后查询。
其次,软件方面,看你的需求,是想学应用还是驱动,应用基本上是C在Linux下的编程。驱动就要看看Linux内核了,其实学习Linux的最好办法就是读Linux内核。
再次,Linux的知识体系很庞大,很杂,要自己有个条理来学,还是要有任务来学,要是工作了就是有项目来用来学,要是上学,就自己想把他用在什么方面再去学,就是带着问题去学,会很快的。
2440的资料网上有的是,只要一搜就出来很大一堆,这个倒不难找。