|
发表于 2012-9-5 10:36:45
|
显示全部楼层
本帖最后由 chenxujiaoyang 于 2012-9-5 10:38 编辑
开发环境搭建(是很复杂,以前刚开始学的时候也是折腾了很久,但后来你会发现,他就像下载单片机的程序一样简单,只是不是一键就可以下载)------裸机开发(基于你的硬件平台,类似于写单片机的程序,你可以用ADS,也可以在WIN下编辑,然后去linux下交叉编译可执行代码)-------u-boot(当然你可以学习其他的bootloader,主要是先分析U-BOOT的结构以及针对ARM部分的启动流程,确切的说是引导内核的几个阶段,这几个阶段通过阅读代码搞清楚之后是为以后自己移植u-boot做准备的)-----内核(分析内核结构组成,从内核启动的第一个文件开始,一般经过三个阶段之后启动文件系统,当然你可以像分析u-boot那样,弄清楚各个阶段在做什么事情,为以后的移植做准备)----文件系统(知道什么是文件系统,怎么制作文件系统,什么是busybox等,最重要的文件系统的组成结构,每个文件目录下面是干什么的)----驱动开发(从最简单的字符驱动开始,熟悉驱动的框架以及驱动中用到的一些机制,比如访问设备的时候有阻塞与非阻塞两种方式,为解决并发问题设置的信号机制,为了解决对共享资源的竞态访问引入了原子操作、中断屏蔽、信号量、自旋锁等机制,这些都搞明白驱动的基本开发方法和流程就差不多了)----应用程序(针对QT的界面开发我还没有涉及,但是一般的应用程序和一般的单片机的应用程序从逻辑上讲是一样的,唯一的区别是你不能直接去操作硬件设备,而必须通过系统调用从用户空间陷入内核空间,再通过驱动程序来操作硬件,因此在应用程序中设备都是以文件的形式存在的)。
以上纯属个人学习的总结,如有不合理的地方,还请自行改正。 |
|