资料介绍
目前嵌入式系统的应用越来越广泛,一台通用PC的外部设备就有5~10个嵌入式微处理器,如键盘、软驱、硬盘、显示器、打印机、扫描仪、USB接口等均是由嵌入式处理器控制的。在制造工业、过程控制、通信电视、仪器仪表、汽车船舶、航空航天、消费类产品均是嵌入式系统的应用领域。嵌入式系统目前主要有:Windows CE、VxWorks、QNX等,它们都具较好的实时性,系统可靠性,任务处理随机性等优点。但是它们的价格普遍偏高,很多开发商承受不起。因而,Linux操作系统成为嵌入式操作系统的首选,原因如下:
在精简内核在编译内核之前,首先要明确需要那些驱动和模块,然后只选择需要的驱动和模块,例如,如果系统不需要网络支持,则可以去掉网络模块。内核一般是以压缩方式存放的,在系统启动时会自行解压。内核都是常驻内存的,当需要调用应用程序时,再把需要的程序从磁盘
调入内存运行。
构建内核常用的命令包括:
◆ make config:内核配置,调用 。/scripts/Configure 按照 arch/i386/config.in 来进行配置。
◆ make dep:寻找依赖关系。
◆ make clean:清除以前构建内核所产生的所有目标文件、模块文件、以及一些临时文件等。
◆ make rmproper:删除所有因构建内核过程中产生的所有文件,把内核恢复到最原始的状态。
◆ make:构核,通过各目录的Makefile 文件将会在各个目录下产生许多目标文件。如果内核没有错误,将产生文件vmlinux,这就是构建的内核。
◆ make zImage:在make 的基础上产生压缩的内核映象文件。/arch/$(ARCH)/boot/zImage 以及在 。/arch/$(ARCH)/boot/compresed/目录下产生临时文件。
◆ make bzImage:在make 的基础上产生压缩比例更大的内核映象文件。/arch/$(ARCH)/boot/bzImage 以及在 。/arch/$(ARCH)/boot/compresed/目录下产生临时文件。
◆ make modules:编译模块文件,在make config 时所配置的所有模块将在这时编译,形成模块目标文件,并把这些目标文件存放在modules 目录中。
◆ make modules_install:把上面编译好的模块目标文件放置在目录 。/lib/modules/$KERNEL_VERSION/ 中。上面的编译内核是在没有改变源代码的情况下实现的,如果觉得源代码提供的功能在某些方面不能满足要求,就要修改源代码了。源代码中主要有以下几个关键部分:有关进程管理的task_struct 结构,这个结构几乎包括了与进程有关的所有文件内容,还有任务队列、时钟管理和中断管理,各种进程间的通信机制,内存管理中各种内存分配函数的实现,虚拟文件系统。
系统启动
引导启动程序主要包括以下三个文件:bootsect.s,head.s和setup.s 这三个文件虽然都是汇编程序,但确使用了两种语法格式。bootsect.s和setup.s 采用了近似于Intel的汇编语言语法,需要使用Intel 8086 汇编器和连接器 as86和ld86。head.s 则使用了GUN的汇编格式,并且运行在保护模式下,需要用GUN的as 进行编译。这是一种AT&T语法的汇编语言格式。 Bootsect.s代码时磁盘引导块程序,驻留在磁盘的第一个扇区中,在PC机加电ROM-BIOS自检后,引导扇区由BIOS加载到内存0x7C00处,然后将自己移动到内存0x90000处。该程序的主要作用是首先将setup模块(由setup.s编译的)从磁盘加载到内存紧接着bootsect的后面位置(0x90200),然后利用BIOS中断0x13取磁盘参数表中当前启动引导盘的参数,接着在屏幕上显示“Loading system.。.”字符串。再将system模块从磁盘上加载到内存0x10000开始的地方。随后确定根文件系统的设备号。
Setup程序的作用主要是利用ROM-BIOS中断读取机器系统数据,并将这些数据保存到0x90000开始的位置(覆盖了bootsect程序所在的地方)。然后setup程序将system模块从0x10000整块向下移动到内存绝对地址0x0000处,接下来加载中断描述符表寄存器(idtr)和全局描述表寄存器(gdtr)。开启A20地址线,重新设置两个中断控制芯片8259A,将硬件中断号重新设置为0x20-0x2f。最后设置CPU的控制寄存器CR0(也称机器状态字),从而进入32位保护模式进行,并跳转到位于system模块最前面部分的head.s程序继续运行。 Head.s程序在被编译后,会被连接成system模块的最前面开始部分,即头部(head)程序。从这里开始,内核完全都是在保护模式下运行了。这段程序实际上处于内存绝对地址0处开始的地方。这个程序功能比较单一,首先是加载各个数据段寄存器,重新设置中断描述符表idt,共256项。然后重新设置中断描述符表gdt,接下来检测A20地址线是不是开启了,再检测PC机是否含有数学协处理器芯片,然后设置管理内存的分页处理机制,最后利用返回指令将预先放置在堆栈中的/init/main.c程序的入口地址弹出,去运行main()内核初始化程序。
设备驱动程序
设备驱动程序在Linux内核中扮演着特殊的角色,它们是一个个独立的“黑盒子”,使某个特定的硬件响应一个定义良好的内部编程接口,同时完全隐藏了设备的工作细节。用户操作通过一组标准化的调用完成,而这些调用是和特定的驱动程序无关的。设备驱动程序提供的功能是同外设进行数据传送。设备包括三种类型:字符设备、块设备和网络接口。每个模块通常实现其中一种类型,相应地,模块可分为字符模块(char module)、块模块(block module)和网络模块(network module)三种。然而这种分类方式并不是十分严格,程序员可以构建一个大的模块,在其中实现不同类型的设备驱动程序。三种类型的设备如下:
在精简内核在编译内核之前,首先要明确需要那些驱动和模块,然后只选择需要的驱动和模块,例如,如果系统不需要网络支持,则可以去掉网络模块。内核一般是以压缩方式存放的,在系统启动时会自行解压。内核都是常驻内存的,当需要调用应用程序时,再把需要的程序从磁盘
调入内存运行。
构建内核常用的命令包括:
◆ make config:内核配置,调用 。/scripts/Configure 按照 arch/i386/config.in 来进行配置。
◆ make dep:寻找依赖关系。
◆ make clean:清除以前构建内核所产生的所有目标文件、模块文件、以及一些临时文件等。
◆ make rmproper:删除所有因构建内核过程中产生的所有文件,把内核恢复到最原始的状态。
◆ make:构核,通过各目录的Makefile 文件将会在各个目录下产生许多目标文件。如果内核没有错误,将产生文件vmlinux,这就是构建的内核。
◆ make zImage:在make 的基础上产生压缩的内核映象文件。/arch/$(ARCH)/boot/zImage 以及在 。/arch/$(ARCH)/boot/compresed/目录下产生临时文件。
◆ make bzImage:在make 的基础上产生压缩比例更大的内核映象文件。/arch/$(ARCH)/boot/bzImage 以及在 。/arch/$(ARCH)/boot/compresed/目录下产生临时文件。
◆ make modules:编译模块文件,在make config 时所配置的所有模块将在这时编译,形成模块目标文件,并把这些目标文件存放在modules 目录中。
◆ make modules_install:把上面编译好的模块目标文件放置在目录 。/lib/modules/$KERNEL_VERSION/ 中。上面的编译内核是在没有改变源代码的情况下实现的,如果觉得源代码提供的功能在某些方面不能满足要求,就要修改源代码了。源代码中主要有以下几个关键部分:有关进程管理的task_struct 结构,这个结构几乎包括了与进程有关的所有文件内容,还有任务队列、时钟管理和中断管理,各种进程间的通信机制,内存管理中各种内存分配函数的实现,虚拟文件系统。
系统启动
引导启动程序主要包括以下三个文件:bootsect.s,head.s和setup.s 这三个文件虽然都是汇编程序,但确使用了两种语法格式。bootsect.s和setup.s 采用了近似于Intel的汇编语言语法,需要使用Intel 8086 汇编器和连接器 as86和ld86。head.s 则使用了GUN的汇编格式,并且运行在保护模式下,需要用GUN的as 进行编译。这是一种AT&T语法的汇编语言格式。 Bootsect.s代码时磁盘引导块程序,驻留在磁盘的第一个扇区中,在PC机加电ROM-BIOS自检后,引导扇区由BIOS加载到内存0x7C00处,然后将自己移动到内存0x90000处。该程序的主要作用是首先将setup模块(由setup.s编译的)从磁盘加载到内存紧接着bootsect的后面位置(0x90200),然后利用BIOS中断0x13取磁盘参数表中当前启动引导盘的参数,接着在屏幕上显示“Loading system.。.”字符串。再将system模块从磁盘上加载到内存0x10000开始的地方。随后确定根文件系统的设备号。
Setup程序的作用主要是利用ROM-BIOS中断读取机器系统数据,并将这些数据保存到0x90000开始的位置(覆盖了bootsect程序所在的地方)。然后setup程序将system模块从0x10000整块向下移动到内存绝对地址0x0000处,接下来加载中断描述符表寄存器(idtr)和全局描述表寄存器(gdtr)。开启A20地址线,重新设置两个中断控制芯片8259A,将硬件中断号重新设置为0x20-0x2f。最后设置CPU的控制寄存器CR0(也称机器状态字),从而进入32位保护模式进行,并跳转到位于system模块最前面部分的head.s程序继续运行。 Head.s程序在被编译后,会被连接成system模块的最前面开始部分,即头部(head)程序。从这里开始,内核完全都是在保护模式下运行了。这段程序实际上处于内存绝对地址0处开始的地方。这个程序功能比较单一,首先是加载各个数据段寄存器,重新设置中断描述符表idt,共256项。然后重新设置中断描述符表gdt,接下来检测A20地址线是不是开启了,再检测PC机是否含有数学协处理器芯片,然后设置管理内存的分页处理机制,最后利用返回指令将预先放置在堆栈中的/init/main.c程序的入口地址弹出,去运行main()内核初始化程序。
设备驱动程序
设备驱动程序在Linux内核中扮演着特殊的角色,它们是一个个独立的“黑盒子”,使某个特定的硬件响应一个定义良好的内部编程接口,同时完全隐藏了设备的工作细节。用户操作通过一组标准化的调用完成,而这些调用是和特定的驱动程序无关的。设备驱动程序提供的功能是同外设进行数据传送。设备包括三种类型:字符设备、块设备和网络接口。每个模块通常实现其中一种类型,相应地,模块可分为字符模块(char module)、块模块(block module)和网络模块(network module)三种。然而这种分类方式并不是十分严格,程序员可以构建一个大的模块,在其中实现不同类型的设备驱动程序。三种类型的设备如下:
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- Linux嵌入式系统开发,嵌入式Linux开发教程
- 嵌入式Linux专题(一)——嵌入式Linux系统构成及启动流程
- 【嵌入式Linux(基础篇)】从标准Linux到嵌入式Linux + 嵌入式Linux知识架构
- 嵌入式linux编译 ko,嵌入式linux:编译linux驱动模块
- 【嵌入式】构建嵌入式Linux系统(uboot、内核、文件系统)
- 嵌入式LINUX系统内核和内核模块调试
- 基于嵌入式Linux视频监控系统毕业论文
- 嵌入式Linux与物联网软件开发C语言内核深度解析书籍的介绍
- 嵌入式Linux开发教程之嵌入式系统介绍资料免费下载
- 如何使用ARM进行嵌入式linux的系统设计
- 嵌入式Linux开发教程之嵌入式Linux应用开发手册资料免费下载 12次下载
- 精通嵌入式Linux编程—构造自己的GUI环境 16次下载
- 构造嵌入式Linux的文件系统
- 嵌入式LINUX系统
- 嵌入式Linux系统开发基础
- 简化SBC的嵌入式Linux软件开发 998次阅读
- 嵌入式系统的全面解析 3146次阅读
- 基于嵌入式Linux内核的ARM9运行实现方式介绍 1475次阅读
- 基于ARM的嵌入式操作系统该如何设计 1480次阅读
- 基于Yocto Project的定制嵌入式Linux产品设计浅析 1w次阅读
- 关于嵌入式系统的特点和Linux内核的实时应用分析 1037次阅读
- 关于Linux嵌入式操作系统的优势特征详解 5521次阅读
- 学习嵌入式linux系统开发,文件类型一定要分清 809次阅读
- 嵌入式Linux系统的7个重要模块 6605次阅读
- 基于嵌入式Linux的无线视频监控系统设计 3004次阅读
- 如何成为嵌入式高手的学习路线解析 2.3w次阅读
- 嵌入式Linux的学习方法解析 3091次阅读
- 基于FPGA的嵌入式Linux操作系统解决方案 6026次阅读
- 基于嵌入式Linux的家居监控系统设计 2023次阅读
- 基于Linux的嵌入式实时操作系统的研究 2298次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多