从爸爸公司拿了一条好的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了,啊...写得有点累了