class="markdown_views prism-atom-one-light">
一、引子
本人作为一名计算机科学与技术专业的学生,在大学的专业课中系统地学习了硬件和软件的相关专业课,并且未来很有可能从事嵌入式方面的工作,有必要对嵌入式方向进行一个更加深入的学习。
在嵌入式方向有过stm32、51等单片机的学习和项目训练,粗略的看过韦东山的嵌入式Linux系列教程,考取了《嵌入式系统设计师》的资格证书,并且学习过FPGA和IC电路设计的相关知识。
临近毕业,不论是出于对大学中学到的理论课程的实践运用,还是出于对自身职业技能的学习提高,个人觉得有必要去从底层开始重新学习、梳理和实践一下系统级开发过程。
如果从硬件电路入手有些太底层,从上层应用入手又太高级,封装太好从而接触不到底层魅力,
所以选择从嵌入式开发入手但不局限于嵌入式。但本系列文章只记录通过U-Boot延伸出来的学习内容
如果还学stm32这种单片机,所能做的事情十分有限并且能够学习到的东西与原来所学有所重复。在嵌入式领域首选ARM,并且避开之前学习过的Cortex-M系列,经过多种考虑,最终选定了从三星的Exynos4412这款芯片入手,购买了iTOP-4412的开发板进行入手学习。
二、分析U-Boot的目的
拿到iTOP-4412这款开发板后,由讯为给出的教程是重点在Linux驱动开发以及开发板使用等方面,而涉及裸板开发的教程和资料几乎很少,但我的目的不仅在于学习linux里驱动程序开发,更是要从开发板上电开始进行系统的学习
U-Boot一方面从系统上电开始进行相关硬件的初始化,另一方面引导操作系统,这样既可以通过相关硬件初始化操作学习4412的外设操作以及Cortex-a9体系结构的知识;也可以掌握CPU从上电开始到完整运行操作系统所做的操作
所以对U-Boot的分析不仅是对源代码的分析,更是对延伸出的一系列知识点进行学习(比如U-Boot源码中对系统时钟进行初始化,则学习4412的时钟体系结构以及操作时钟方法)
三、准备开始
在知识技能上,兵来将挡水来土掩,遇到知识盲点就通过查找资料等方式学习和解决问题
硬件上选用iTOP-4412开发板
资料参考ARM、U-Boot、Samsung的和讯为提供的文档以及各种博客和教程
在此声明:本系列博文是对自己学习U-Boot和4412进行一个总结归纳,不做任何商业用途,希望能与各位同学进行交流学习