OK6410:系统时钟

  从爸爸公司拿了一条好的USB转串口线回来,我的OK6410终于可以和我的笔记本连接上了,secureCRT显示和接收按键都没有问题,感谢爸爸!

  如果secureCRT能显示U-boot启动信息,但是就是不能接收按键,那么可以先看看有没有设置流控制,如果设置了,那么都流控制设置成无,也就是什么都不选。如果还是不行...那么

  1.换个终端试试,例如DNW、minicom、超级终端...

  2.换台地电脑试试,网上有人说重装系统,真的是大动干戈...

  如果以上都试过了,还是不行,就是你的USB转串口坏掉了,赶紧换一条吧。


  USB转串口好了,接下来又可以玩裸板了,按照韦东山老师的教学视频,知道怎么玩系统时钟了,分享一下。

  我们的OK6410开发板上的晶振频率是12Mhz


  外部晶振提供的12Mhz给S3C6410中的APLL,设置一定的参数可提高系统时钟,可以让CPU跑得更快

  在S3C6410的芯片手册上,系统控制-》时钟架构
  MUX多路选择器 0:可以原原本本输入12MHz,1:是经过APLL提升的时钟频率


  上图的ARMCLK就是CPU时钟


  设置APLL
  如果我们要设置CPU时钟频率为532MHz,我们可以使用芯片手册上提供给我们的FOUT公司进行进行计算
  FOUT = MDIV * FIN / (PDIV * 2^SDIV) = 532MHz
  FIN就是晶振频率12Mhz,其余的参数要自己设定


  DIV分频器
  ARMCLK = DOUTAPLL / (ARM_RADIO + 1)


  设置LOCK_TIME
  设置APLL_LOCK_TIME
  ARM时钟频率提高需要一定时间,所要要设置APPL_LOCK_TIME,当中CPU不工作


  APLL给ARM CPU使用
  MPLL给主设备、HCLK(内存,DDR),PCLK(外设片上模块)
  EPLL给其它模块


  OTHERS寄存器设置为异步模式
  读入OTHERS内存的值,并bic清0xc0
  当各种时钟使用不同的频率,所以要设置成异步
  循环判断,等待设置完成
  


  其实也不用清零的,因为从芯片手册删可以看出,复位的时候就是零 

  然后等待异步模式设置完成,那就要等待bit8~bit11为0即可,至于为什么,S3C6410的手册介绍的还不是很清楚...

 


  DOUT为分频
  设置CLK_DVIO
  设置ARM_RATIO 0 主核分频为1分频
  设置HCLCKX2_RATIO 1 将输入的时钟进行2分频
  设置HCLK_RATIO 1 再将输入的时钟2分频,能供内存使用
  设置PCLK_RATIO 3 其他RATIO的设置


  设置好了,才启动ARLL,然后再设置MUX切换时钟
  设置APLL,先配置APLL_CON寄存器,公式为MDIV * Fin / (PDIV * 2^SDIV) = 266 * 12 / (3 * 2^1) = 532
  最高位为使能端(1 << 31)
  MDIV (266 << 16)
  PDIV (3 << 8)
  SDIV 1


  设置MPLL,同APLL设置
  设置MUX切换时钟,设置CLOCK_SRC
  MPLL_SET[1] 0:FINMAPLL,1:FOUTMPLL
  APLL_SET[0] 0:FINMAPLL,1:FOUTMPLL
  
  先设置参数,再使能,再切换


  以下是芯片手册的寄存器地址和相关值的位


  下面贴出代码clock.c的代码:

  


  在汇编启动代码中,在跳转到main函数之前,加上一下一句,即可设置时钟
   bl clock_init

  main函数,我就按照韦东山老师的视频教学上说的,写流水灯代码,可以看到如果延时不够,则流水灯跑得非常快。

  在编写这个程序的Makefile就OK了,啊...写得有点累了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值