Board logo

标题: 嵌入式linux的移植的理论问题 02 [打印本页]

作者: samwalton    时间: 2013-9-21 14:57     标题: 嵌入式linux的移植的理论问题 02

 内存页面大小:
  Linux使用虚拟内存机制来管理内存,内存的使用基于页面。
  不同的体系结构有不同的页面大小
  常用的32位处理器使用4kB页面大小
  部分体系结构可以支持多种页面大小
  内核在<asm/page.h>里面定义PAGE_SIZE,PAGE_SHIFT
  *  PAGE_SIZE表示页面大小
  *  PAGE_SHIFT表示页面号在地址中的偏移量
  *  PAGE_SIZE=2^ PAGE_SHIFT
  Linux操作系统移植:
  工具链移植
  * binutils (assembler, linker..)
  * gcc (compiler, libgcc)
  * glibc/uclibc
  内核移植
  * arch implementation
  * drivers porting
  应用程序移植
  * C program recompile
  * Implement absent library
  Linux内核的平台相关代码:
  Linux内核对多平台有很好的支持 内核的对外部接口是统一的,并且与平台无关
  内核的大多数代码也是与平台无关的主要的体系结构相关代码存在于
  * arch/architecture
  * include/asm-architecture
  比如arm体系的平台相关代码主要是
  * arch/arm
  * include/asm-arm
  已有代码向Linux内核移植:
  将已有代码向内核中移植有一些限制
  * 内核中没有标准C库支持
  * 内核中没有象用户程序那样的内存保护
  * 内核中不便使用浮点操作
  * 内核的堆栈是固定大小的,并且比较有限
  * 在内核中需要编程者考虑并发带来的竞争与冒险,以及同步问题
  Linux内核移植:
  Linux内核代码可以分为平台相关部分和平台无关部分
  Linux内核绝大部分代码是平台无关的,
  可以被各种平台所共享
  *  调度算法
  *  存储器管理
  *  I/O子系统
  *  网络协议栈
  依赖于特定硬件的代码在Linux中采用条件编译的方式区分
  *  ARCH = x86 即打开x86特有的代码
  *  ARCH = arm 即打开arm特有的代码
  Linux内核的arch目录:
  进入arch目录,每个体系结构代码都有一个子目录
  进入arm目录,在arm体系结构下我们可以看到很多sub-arch的子目录
  实现sub-arch:
  在sub-arch子目录下,以mach-s3c2410为例 一个硬件平台支持需要实现以下几个硬件相关的文件
  *  mach-s3c2410.c, irq.c, clock.c, dma.c, gpio.c, pm.c,sleep.c, time.c
  *  同时在include/asm-arm/arch-s3c2410要实现
  Low-level IRQ helper macros
  Debug output macros
  Irq number definations
  DMA definations
  Memory mapping/translation
  Reset operation
  IDLE function




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0