2440时钟&位置无关码

1.不同的外设需要的时钟频率不一样,所以时钟需要通过不同的分频送到每一个器件。

2.CPU专用的时钟一般称为FCLK,这个一般是最高的频率,因为CPU的速率最快,很好理解的;HCLK是用于AHB总线,也就是高速外设总线,这上面外接的设备频率也比较快,当然也没有2440内核快;另一个就是PCLK用于APB,也就是低速外设总线,这个上面接的外设频率相对较低。2440芯片是一个SOC,除了920t的内核之外,其他的都是片上外设。

3.各个时钟的设置

FCLK:通过设置PLL倍频得到CPU内核用的时钟,PLL设定好之后,需要设置一个锁定时间(这个时间内CPU停止工作,等待设置的频率稳定之后才开始重新工作)。

HCLK、PCLK:通过设置对应的分频寄存器来得到。

4.位置无关码

在2440的机制中,如果从nand flash启动,nand flash中的前4K的内容会自动被拷贝到内部SRAM中,但是在编译的时候指定的该程序运行的时候应该位于的地址并不是0x0000 0000那么为什么拷贝到SRAM中还能运行呢?

答:在前4K的代码中,大部分使用的都是位置无关码,跳转指令都是使用的相对跳转指令,所以使得程序能够正确运行下去,但是在跳转到c语言的入口函数的时候,用的就不是位置无关码了,原理当然可想而知了,因为c语言程序一般都不是放在前4K的,所以必须要使用位置无关码。

怎么编写位置无关码?

答:在汇编的时候使用bl,b指令,在c预言中不使用全局变量以及静态变量。

有一点比较特殊的是,直接定义一个数组,那么这个数组有可能在编译的时候存放的位置有所变化(编译器优化),所以如果SDRAM初始化赋值的13个值最好单独赋值,不要先定义一个数组(这是我个人的理解)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值