欢迎来到天天文库
浏览记录
ID:1361663
大小:1021.72 KB
页数:13页
时间:2017-11-10
《嵌入式linux应用完全开发手册》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、嵌入式Linux应用完全开发手册嵌入式Linux应用完全开发手册终端概述在Linux中,TTY(终端)是一类字符设备的统称,包括了3中类型:控制台、串口、伪终端。控制台:供内核使用的终端为控制台。控制台在Linux启动时,通过命令console=…指定,如果没有指定控制台,系把第一个注册的终端作为控制台。控制台是一个虚拟的终端,它必须映射到真正的终端上。控制台可以简单的理解为printk输出的地方。控制台是个只输出的设备,功能很简单,只能在内核中访问。进程四要素█有段程序供其执行。这段程序不一定是某个进程所专有,可以与其它进程共用。█有进程专用的内核空间堆栈。█在内核
2、中有一个task_struct数据结构,即通常所说的“进程控制块”。有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度。█有独立的用户空间。进程调度█调度概念:从就绪的进程中选出最合适的一个进程执行。█调度策略-SCHED_NORMAL(SCHED_OTHER):普通的分时进程。13嵌入式Linux应用完全开发手册-SCHED_FIFO:先进先出的实时调度-SCHED_RR:时间片轮转实时进程-SCHED_BATCH:批处理进程-SCHED_IDLE:只有在系统空闲时,才能够被调度执行的进程。进程管理█特点:动态性、并发性、独立性、异步性编译说明█编译
3、选项:-c编译不链接。-g带有调试信息。-I.h文件所在目录-预处理:语法分析,例如:将宏定义展开。-编译:*.c文件编译成*.s文件。-汇编:*.s文件编译成*.o文件。-链接:多个*.o文件链接成执行文件。█Linux系统调用和C库Linux系统调用是依赖于系统的,而C库在任何操作系统下,调用都是相同的。13嵌入式Linux应用完全开发手册信号类型█SIGHUP:从终端上发出结束信号█SIGINT:来自键盘的中断信号(Ctrl-C)█SIGKILL:该信号结束接收信号的进程。█SIGTERM:kill命令发出的信号。█SIGCHLD:标识子进程停止或结束的信号。█
4、SIGSTOP:来自键盘(Ctrl-Z)或调试程序停止执行的信号。SIGKILL和SIGSTOP不能被忽略,因为它们是超级用户提供了了一种终止或停止进程的方法。文件系统█文件系统类型根据设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为:RAM和FLASH,常用的基于存储设备的文件系统类型包括:jffs2、yaffs、cramfs、ramdisk、ramfs等。文件系统是对存储设备上的文件进行存储和组织的机制,Linux支持多种文件系统,可以分为:█磁盘文件系统,如:ext2█Flash文件系统,如:jffs2,y
5、affs2█网络文件系统:如:NFS█特殊文件系统,如:/sys/proc根文件系统根文件系统:是Linux启动时的第一个文件系统。没有根文件,Linux无法正常启动。根文件系统由一系列目录组成,目录中包含了应用程序、C库、以及相关配置文件。总线的功能:█提供时钟13嵌入式Linux应用完全开发手册█分配/管理地址█响应中断█传输数据█传输控制信号全速、高速、低速三种时钟。(FCLK,HCLK,PCLK)。armAMBA总线结构AHB/APBAHB总线上有内存,NAND控制器等高速设备。HCLKAPB总线上有UMARK设备控制器等慢速设备。PCLKARM三级流水结构█
6、取指:把指令从程序存储器中取出来。取指是在处理器内核和程序存储器之间进行的。█译码:把读到内核的指令进行解释,也就是把二进制的指令变换成电路的动作。█执行:即按照指令的要求把门电路的动作送到指定的目标地址。ARM在执行一条指令的时候,PC的指针是在取指的那条指令的。█程序:1、代码段:指令2、数据段:有初始值(并且不为0)的全局、静态变量3、BSS段(BlockStartedbySymbol):初始值为0或无初始值的全局、静态变量。BSS(BlockStartedbySymbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程
7、序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。注意和数据段的区别,BSS存放的是未初始化的全局变量和静态变量,数据段存放的是初始化后的全局变量和静态变量。UNIX下可使用size命令查看可执行文件的段大小信息。如sizea.out。4、栈区域。1、程序运行是应该位于它的链接地址2、硬件决定了程序一开始从0运行,需要重定位(从0开始的8k代码)。13嵌入式Linux应用完全开发手册重定位:前面的一小段代码(从0开始的8k代码),复制到它的链接地址。3、前面8k代码为什么能正常运行:因为是位置无关码写的。IO端口和IO内存
此文档下载收益归作者所有