- 1、本文档共113页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 Linux系统在ARM平台上的移植 移植的基本概念 5.1 硬件平台对移植的影响 5.2 Linux操作系统移植 5.3 Linux内核结构 5.4 Linux内核向S3C2410的移植 5.5 配置和编译内核流程 5.6 内核配置选项 移植的基本概念 使某个平台的代码运行在其他平台上的过程就叫做移植。Linux系统通过移植可以运行在ARM、PowerPC、M68K等多种平台上 软件的移植分三种: 从一个硬件平台移植到另一个硬件平台 从一个操作系统移植到另一个操作系统 从一种软件库环境移植到另一个软件库环境 软件进行移植的容易程度即可移植性 5.1 硬件平台对移植的影响 Linux硬件平台 硬件平台对移植的影响 处理器字长 数据对齐 字节顺序 时间 内存页面大小 Linux硬件平台 在Linux内核里,每一个处理器指令集对应一个独立的体系结构architecture,比如 alpha、arm、i386、mips、ppc 每个体系结构可以有若干变种variant,或不同配置的硬件machine,统称sub-architecture。以arm体系结构举例: variants包括arm7tdmi、arm926ejs、strongarm、xscale machine包括smdk2410、 edb7312、omaph2 处理器字长 处理器字长,定义为处理器一次能处理的数据位数。 字长等于处理器内部数据通路的宽度,一般可以通过通用寄存器的宽度来判断 处理器字长会影响int,、long等C类型的长度 C代码当中需要使用确定大小的数据类型,可以使用显式长度的类型: u8, s8, u16, s16, u32, s32, u64, s64 数据对齐 数据对齐是指数据块的地址是某个特定大小的整数倍: 32位处理器字对齐n*4 页对齐n*PAGESIZE Cache line对齐n*CLINESIZE 数据访问要求至少是字对齐的,多数情况下编译器会处理数据访问的对齐。 不对齐访问的例子: char a[10]; unsigned long* pl = (unsigned long *)(a+1); unsigned l = *pl; 字节顺序 字节顺序byte order是指一个字中字节排列的顺序 不同硬件可能采用不同byte order x86 little-endian ppc big-endian Linux内核将硬件的byte order放在asm/byteorder.h 里面定义,__BIG_ENDIAN或__LITTLE_ENDIAN 在include/linux/byteorder /里面有几个头文件,定义了 u32 __cpu_to_be32(u32); /* convert cpus byte order to big endian*/ u32 __cpu_to_le32(u32); /* convert cpus byte order to little endian*/ u32 __be32_to_cpu(u32); /* convert big-endian to cpus byte order */ u32 __le32_to_cpus(u32); /* convert little-endian to cpus byte order */ 时间 软件中的与时间相关的代码也会影响移植 采用平台无关的时间表达方法可以提高代码可移植性 Linux内核里面采用HZ来表示每秒钟有多少个内部时钟滴答,以下对时间的描述是平台无关的 HZ /* one second */ (2*HZ) /* two seconds */ (HZ/2) /* half a second */ (HZ/100) /* 10 ms */ (2*HZ/100) /* 20 ms */ 内存页面大小 Linux使用虚拟内存机制来管理内存,内存的使用基于页面。 不同的体系结构有不同的页面大小 常用的32位处理器使用4kB页面大小 部分体系结构可以支持多种页面大小 内核在asm/page.h里面定义PAGE_SIZE、PAGE_SHIFT PAGE_SIZE表示页面大小 PAGE_SHIFT表示页内地址位数 PAGE_SIZE=2PAGE_SHIFT 5.2 Linux操作系统移植 5.2.1 概述 5.2.2 Linux内核的平台相关代码 5.2.3 已有代码向Linux内核移植 5.2.4 Linux内核移植 5.2.5应用程序移植 5.2.1 概述 工具链移植: binutils (assembler, linker..) gcc (compiler, libgcc) glibc/uclibc 内核移植: arch implementation dri
您可能关注的文档
最近下载
- 一种检测磷酸铁锂粉末中磁性金属异物及磷化铁含量的方法.pdf VIP
- 2023年华为公司招聘职位要求.pdf
- 三年级心理健康第1-16课全册教案.pdf
- 2021面瘫的针灸治疗测试题【附答案】.doc
- IATF16949第五版DFMEA管理程序+潜在失效模式及后果分析程序.doc
- 智慧城市大数据平台设计方案.pdf VIP
- 匹兹堡睡眠质量指数(PSQI)表格版-打印保健养生.docx
- 林木林地权属争议处理申请书(样本).pptx
- 手机销售网站的设计与实现.doc VIP
- 河南省图集 12YN6、12YN7、12YN9 热力工程、民用建筑空调与供暖冷热计量设计与安装 DBJT19-07-2012.docx
文档评论(0)