欢迎来到天天文库
浏览记录
ID:21740778
大小:266.50 KB
页数:9页
时间:2018-10-24
《关于uboot移植 camdivn与时钟》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、关于uboot移植CAMDIVN与时钟2010-03-0919:57在该文件的122行附近有这样一个结构体typedefstruct{S3C24X0_REG32LOCKTIME;S3C24X0_REG32MPLLCON;S3C24X0_REG32UPLLCON;S3C24X0_REG32CLKCON;S3C24X0_REG32CLKSLOW;S3C24X0_REG32CLKDIVN;}/*__attribute__((__packed__))*/S3C24X0_CLOCK_POWER;是用来封装时钟寄存器的,我们
2、要在其中增加一项S3C24X0_REG32CAMDIVN,为什么加这么一个呢?因为这个寄存器是2410所没有的,而2440在配置时钟的时候又必须用到,看名字我们就知道是用来配置CAMERA时钟的,也就是配置摄像头的时钟的。貌似和配置uboot启动的时钟没有关系?其实不然,我们在修改下一个文件的时候就可以看到其用途了,此结构体修改后的结果为typedefstruct{S3C24X0_REG32LOCKTIME;S3C24X0_REG32MPLLCON;S3C24X0_REG32UPLLCON;S3C24X0_REG
3、32CLKCON;S3C24X0_REG32CLKSLOW;S3C24X0_REG32CLKDIVN;S3C24X0_REG32CAMDIVN;}/*__attribute__((__packed__))*/S3C24X0_CLOCK_POWER;第二个文件..cpuarm920ts3c24x0speed.c在这个文件中需要修改两个函数 第一个函数在54行附近:staticulongget_PLLCLK(intpllreg) 由于S3C2410和S3C2440的MPLL、UPLL计算公式不一样,所
4、以get_PLLCLK函数也需要修改: 修改前为staticulongget_PLLCLK(intpllreg){S3C24X0_CLOCK_POWER*constclk_power=S3C24X0_GetBase_CLOCK_POWER();ulongr,m,p,s; if(pllreg==MPLL)r=clk_power->MPLLCON;elseif(pllreg==UPLL)r=clk_power->UPLLCON;elsehang(); m=((r&0xFF000)>>12)+8;p=((r&
5、0x003F0)>>4)+2;s=r&0x3; return((CONFIG_SYS_CLK_FREQ*m)/(p<MPLLCON;elseif(pllreg==UPLL)r=clk_power->UPLLC
6、ON;elsehang(); m=((r&0xFF000)>>12)+8;p=((r&0x003F0)>>4)+2;s=r&0x3; if(pllreg==MPLL)return((CONFIG_SYS_CLK_FREQ*m*2)/(p<
7、LL的计算方法MPLLControlRegisterMpll=(2*m*Fin)/(p*2s)m=(MDIV+8),p=(PDIV+2),s=SDIVUPLLControlRegisterUpll=(m*Fin)/(p*2s)m=(MDIV+8),p=(PDIV+2),s=SDIV这个就是修改此函数的缘由。第二个函数在82行附近:ulongget_HCLK(void)此函数修改前为ulongget_HCLK(void){S3C24X0_CLOCK_POWER*constclk_power=S3C24X0_GetB
8、ase_CLOCK_POWER(); return((clk_power->CLKDIVN&0x2)?get_FCLK()/2:get_FCLK());}修改后为ulongget_HCLK(void){S3C24X0_CLOCK_POWER*constclk_power=S3C24X0_GetBase_CLOCK_POWER();if(clk_power->CLKDI
此文档下载收益归作者所有