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, 断点,堆栈大小和地址转换。这些定义位于:
- cyg/hal/hal_arch.h (arch HAL)
- cyg/hal/var_arch.h (var HAL)
- 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)
而变体和平台抽象层定义位于:
- cyg/hal/var_intr.h (var HAL)
- cyg/hal/plf_intr.h (plf HAL)
- 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
此接口定义了对设备控制寄存器的访问支持。
- cyg/hal/hal_io.h
- cyg/hal/var_io.h
- cyg/hal/plf_io.h
议题细节有:
- register address
- register read
- register write
cache control
此接口定义了CPU caches的控制支持。
- cyg/hal/hal_cache.h
- cyg/hal/var_cache.h
- 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文件都是由相应的mlt(memory layout tool)脚本生成的。
诊断支持
略
SMP支持
略
参考资料
没有评论:
发表评论