s3c2410初始化(下)

[ 2006-5-10 16:09:00 | By: ly_zw ]

 

   C

   B

具体含义

   0

0

cache,无写缓冲,任何对memory的读写都反映到ASB总线上。对memory的操作过程中CPU需要等待。

   0

1

cache,有写缓冲,读操作直接反映到ASB总线上。写操作CPU将数据写入到写缓冲后继续运行,由写缓冲进行ASB操作。

   1

0

cache,写通模式,读操作首先考虑cache hit;写操作时直接将数据写入写缓冲,如果同时出现cache hit,那么也更新cache

1

1

cache,写回模式,读操作首先考虑cache hit;写操作也首先考虑cache,如果hit,则只修改cache,并将cache对应半行的dirty比特置位;如果miss,则写入写缓冲,触发ASB总线操作。

虽然MMU只是使用了逻辑地址到物理地址的linear transfer(值不改变),但是由于MMU能够引入cachewrite buffer,因此系统性能有很大的提高!

l        配置时钟比、重新设置PLL

2410内部有三个时钟:FCLKHCLKPCLK,分别供CPUAHB总线和

APB总线使用,为了降低功耗,一般都选择周期比为124的合理配置。 同时将PLL配置为运行环境时钟,一般都达到最高202M

l        IO初始化

IO口配置为对应的功能选项,同时一般会点亮相应的LED灯。

l        中断初始化

2410的内存空间没有remap的机制,应该中断入口时钟位于零地址。因此中

断服务机制可以描述如下:

       首先,不管使用那种启动方式,必须确保一下代码段位于内存的0x0地址:

                            b     ResetHandler 

                            b     HandlerUndef       ;handler for Undefined mode

                            b     HandlerSWI  ;handler for SWI interrupt

                            b     HandlerPabort      ;handler for PAbort

                            b     HandlerDabort     ;handler for DAbort

                            b     .                    ;reserved

                            b     HandlerIRQ  ;handler for IRQ interrupt

                            b     HandlerFIQ   ;handler for FIQ interrupt

       ResetHandler外,其余各项都是由如下的宏定义的一段代码:

  HandlerFIQ   HANDLER  HandleFIQ

MACRO

$HandlerLabel  HANDLER  $HandleLabel

$HandlerLabel

       sub  sp,sp,#4                 ;decrement sp(to store jump address)

stmfd      sp!,{r0}        ;PUSH the work register to stack

       ldr     r0,=$HandleLabel  ;load the address of HandleXXX to r0

       ldr     r0,[r0]            ;load the contents

       str     r0,[sp,#4]     ;store the contents(ISR) of HandleXXX to stack

       ldmfd   sp!,{r0,pc}     ;POP the work register and pc(jump to ISR)

       MEND

   这段代码的含义是通过堆栈将中断向量表中的内容赋给PC指针(如HandleFIQ是存放着FIQ服务程序入口地址的地址),自然程序就跳到相应的入口地址。

   可见,中断向量表存放的是各个中断服务程序的入口地址,它是用来被加载的,而并不是可执行代码。为了统一,所有示例程序都将中断向量表放在0x33ffff00开始的地址,并根据入口地址依次排列。

       需要注意的是如果各种模式的服务程序用C语言定义,那么类型必须用__irq定义,以保证能够正确返回。

l        初始化串口

串口统一选用UART0,模式采用1152001bit STOPNo Parity

SD

[ 2008-5-30 12:57:00 | By: DSS(游客) ]

发表评论:

    大名:
    密码: (游客无须输入密码)
    主页:
    标题:
    正在载入数据,请稍候……