2008年11月27日星期四

eCos HAL分析

HAL架构

HAL在eCos中是一个多层次的架构,层级封装了不同的功能,它包括:

  • the architecture HAL

    架构抽象包含基本的CPU架构,比如interrupt,上下文切换,CPU启动等

  • the variant HAL

    变体抽象层专注某一CPU的特性,比如caches,MMU和FPU等,他通常也处理内存和中断 控制器等外设。

  • the platform HAL

    平台抽象层专注于现任的平台特性,比如平台启动,定时器,I/O寄存器访问和中断控 制器等等。

HAL接口

这里讲究HAL实现了哪些接口。

architecture characterization

这里包含了CPU基础架构的定义。包括了CPU段文存储格式,上下文切换,bit twiddling, 断点,堆栈大小和地址转换。这些定义位于:

  1. cyg/hal/hal_arch.h (arch HAL)
  2. cyg/hal/var_arch.h (var HAL)
  3. cyg/hal/plf_arch.h (plf HAL)

以下为议题细节

  • register save format
  • thread context initialization
  • thread context switching
  • bit indexing
  • idle thread activity
  • reorder barrier
  • breakpoint support
  • GDB support
  • setjmp and longjmp support
  • stack sizes
  • address translation
  • global pointer

interrupt handling

这些接口定义了中断处理相关的定义,包括了异常和中断号,中断允许和屏蔽和实时时钟操 作。这些定义可以位于:

cyg/hal/hal_intr.h (arch HAL)

而变体和平台抽象层定义位于:

  1. cyg/hal/var_intr.h (var HAL)
  2. cyg/hal/plf_intr.h (plf HAL)
  3. cyg/hal/hal_platform_ints.h (?)

议题细节:

  • vector numbers
  • interrupt state control
  • ISR and VSR management
  • interrupt controller management
  • clock control
  • microsecond delay

HAL I/O

此接口定义了对设备控制寄存器的访问支持。

  1. cyg/hal/hal_io.h
  2. cyg/hal/var_io.h
  3. cyg/hal/plf_io.h

议题细节有:

  • register address
  • register read
  • register write

cache control

此接口定义了CPU caches的控制支持。

  1. cyg/hal/hal_cache.h
  2. cyg/hal/var_cache.h
  3. cyg/hal/plf_cache.h

详细议题:

  • cache dimensions
  • global cache control
  • cache line control

Linker scripts(连接器脚本,lds)

连接器脚本对于eCos程序来说是必须的,他定义了内存区域,地址和尺寸,代码段和数据段 的放置位置,还有分配不同的编译器声称的段。

一般lds位于install/lib/target.ld,它事实上是由其他两类文件声称,一个基本的lds和 ldi文件声称的。

基本lds由arch HAL或者var HAL提供,它由一组lds段组成。ldi由plf HAL提供哦你,它包 含目标平台的的内存布局信息,位于

pkgconf/mlt____.ldi

这些ldi文件都是由相应的mlt(memory layout tool)脚本生成的。

诊断支持

SMP支持


参考资料

  1. eCos component writer's guide
  2. eCos HAL porting guide
  3. 如何构建eCos嵌入式系统

没有评论:

发表评论