s3c2410初始化(下)

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
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值