基于HAL程序的启动顺序:
(1) 刷新指令和数据高速缓存;
(2) 配置堆栈指针
(3) 配置全局指针
(4) 使用_bss_start和_bss_end来零初始化BSS区
(5) 复制.rwdata、.rodata和异常区到RAM
(6) 调用alt_main()函数。
如果用户没有提供alt_main()函数,则缺省执行下面的步骤:
(1) 调用alt_os_init()执行操作系统初始化,如果系统中没有操作系统调度,则该宏没有作用;
(2) 如果HAL使用操作系统,则初始化alt_fd_list_lock信号量来控制访问HAL文件系统;
(3) 初始化中断控制器,使能中断;
(4) 调用alt_sys_init()函数,初始化系统中所有设备驱动和软件部件,Nios II IDE自动创建和管理alt_sys_init.c文件;
(5) 改变C标准I/O通道以便使用合适的设备;
(6) 使用_do_ctors()函数调用C++构造函数;
(7) 在系统关闭时调用C++析构函数;
(8) 调用main()函数;
(9) 调用exit()函数,把main()函数的返回码作为exit()的输入参数。
缺省的实现是由存放在Nios II开发工具安装路径下的alt_main.c文件提供的。
此外,用户还可在Nios II IDE开发工具安装路径下的alt_main()函数来提供启动顺序的实现。这种方法提供用户对启动顺序的完全控制,而且提供用户有选择的使用HAL服务。Alt_main()函数的原型为viod alt_main(void),用户可将缺省的实现作为开始点复制到函数中,然后按照自己的需求进行定制。
使用HAL开发一个新的驱动程序依赖于用户设备的详细情况。然而,下面的通用步骤适用于所有设备类;
(1) 创建描述寄存器的设备头文件。这个头文件是唯一的接口。
(2) 实现驱动程序的功能;
(3) 利用main(0函数进行测试
(4) 集成设备驱动程序到HAL环境
(5) 集成设备驱动程序到HAL框架。
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2007-5-20<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
2个或更多微处理器一起工作来完成某个任务的系统称之为多处理器系统。
多处理器系统的性能得到提高,但同时其系统的复杂度也增加,所以多处理器系统一般用于工作站和使用分载(load-sharing)的复杂算法(称之为对称多处理,SMP)的高端的PC计算。
Nios II5.0及以上版本支持多处理器系统的创建和调试。多个Nios II处理器能有效地共享系统资源,这归功于Avalon总线开关多主从端口的友好的仲裁能力。由于SOPC Builder允许用户轻松地添加多个处理器到系统中,因此建立多处理器系统的难点已不再是硬件的排列和连接,而在于多个处理器的软件设计,使他们正常操作,相互之间不产生冲突。
为防止多个处理器之间的相互干扰,在Nios II开发套件中包含一个邮件互斥核(mutex core)。这个硬件互斥核允许不同的处理器在某一时间段声明对共享资源的所有权。一个处理器对资源的临时所有权防止共享资源被其他处理器破坏。
Nios II多处理器系统分为2大类:一类是共享资源的多处理器系统;另一类是每个处理器是独立的,不与其他处理器共享资源。
2007-5-21
对于Nios II嵌入式处理器,通过增加定制指令,系统设计者能提高对时间要求较高的软件算法的执行速度。定制指令可将标准指令的复杂序列减少为一条由硬件实现的指令。
2007-5-23
Xilinx公司的Virtex-II Pro系列器件内嵌高性能的32位RISC内核PowerPC405。在Virtex-II Pro系列器件中,PowerPC405主要有两种使用方式。
(1) 深埋式应用。PowerPC405仅使用FPGA内部的BlockRAM,不与FPGA外部资源发生直接联系,不需要实时操作系统和外界接口。PowerPC405的深埋式应用比较适合于FPGA内部复杂逻辑控制、数据包处理等场合。
(2) 复杂嵌入式应用。PowerPC405使用FPGA外部的存储单元,使用CoreConnect总线和外围接口。PowerPC405的复杂嵌入式应用通常需要实时操作系统,比较适合于以FPGA为核心的复杂应用。
2007-5-28
集成电路的层次化设计方式分为自顶向下(Top-Down)和自底向上(Bottom-Up)设计。
顶指的是设计树的树根,底指的是设计树的末枝。
如果硬件设计者开始设计时只知道系统级的内容,即只知道树干的内容,那么可以从树根开始,把系统划分为单元,然后再把每个单元划分为下一层次的单元,一直这样做下去,直到设计树的最末枝可以造出,这样的设计过程称之为自顶向下的设计方式。自顶向下的设计方法的特点在于每一层次的分解全经过优化,优化的目标可能是工作速度、芯片面积、芯片成本或其他内容,但每次划分并不考虑分解后得到什么样的单元,以及得到的单元是否是已存在的单元。
自底向上的设计方式从某种意义上讲,可以看作是自顶向下设计方式的逆过程。尽管设计者也是从系统级开始,即从设计树的树根开始对设计进行逐次划分,但划分时首先考虑的是单元是否存在,即设计过程必须从存在的基本单元出发,设计树最末枝上的单元必须是已经制造出的单元,活着是其他项目已开发好的单元以及可外购得到的单元。
自顶向下的设计过程在每一层次划分时都要对某些目标进行优化,这些目标包括工作速度、芯片面积、芯片成本。在集成电路设计时通常将这三个目标组成的三维空间称为设计空间。自顶向下的设计过程是理想的设计过程,但它的缺点是得到的最小单元不标准,制造成本可能很高。自底向上的设计过程全采用标准单元,通常比较经济,但有时可能不能满足一些特定的指标要求。大多数集成电路设计过程是这两种方法的结合,设计时要考虑多个目标综合平衡。
文章评论(0条评论)
登录后参与讨论