学习
嵌入式系统需要C语言编程基础,并学过单片机,然后可以学习一下嵌入式Linux的基础框架了,很简单,那就是首先要搞清楚什么是BootLoader、Linux内核(kernel)和文件系统。
什么是BootLoader?
实际上就是引导程序,也就是硬件复位以后第一个要执行的程序,主要工作是初始化操作系统运行的环境,比如说内存、定时器、缓冲器等,当这个工作做完后,再把操作系统的代码加载到内存,然后操作系统就可以启动并执行,到此为止,bootloader的任务就完成了。
常用的bootloader有很多种,比如U-BOOT、REDBOOT、LILO等
什么是kernel呢?
kernel就是Linux的内核,也就是说Linux操作系统本身的代码。那么U-BOOT启动到最后,就是把它加载到内存,并且调转到Kernel来执行。
什么是文件系统呢?
我们来介绍一下文件系统,这里需要了解一下一个事实,就是说Linux启动到最后一定要挂载一个文件系统。这个是Linux的一个特点,它不像其他操作系统,比如VxWorks,是不需要文件系统的,VxWorks没有文件系统也可以运行。像QT系统、Android、以及Ubuntu系统,它们的底层都是Linux内核,不同的是它们的文件系统不一样,也就是说,Android 系统相关的一些代码,比如说图形界面系统、Android的虚拟机,android 的框架代码都在Linux最后挂载的文件系统里面。
搞清楚这几点, 实际我们就了解了Linux系统最基本的框架,然后根据开发板配套的资料去学习如何编译,因为像Uboot、Kernel、文件系统,最后编译生成出来分别是一个独立的文件,就是说会生成三个文件,最后把这几个文件烧录到板子上。
学会了编译和烧写,接下来呢,我们在这个框架的基础上,去学习如何坐Linux上面的应用程序。
什么是应用程序呢?它是运行在操作系统上面,通过调用操作系统的资源去工作,是最终的业务逻辑,比如我们windows上面有很多的应用程序。
再接下来,我们需要学习Linux驱动方面的一些知识,这也是在基础框架里面的,驱动程序可以看成是操作系统的一部分,它在底层专门和硬件打交道,Linux的驱动包括:字符设备、块设备以及网络设备。
最开始只需要学习字符类设备驱动,其他两种先不用研究。