arm芯片型号烧写程序是否需要晶振参与

  想要修改arm芯片型号的时钟需要去查询芯片手册和原理图,获取相关的信息(见下方图片)


根据结构图可以看出时钟源有两种选择:1. XTIpll和XTOpll所连接的晶振 

                   2. EXTCLK引脚外接一个时钟源


OM[3:2]用来选择到底使用哪个时钟源


再查看原理图,可以发现:OM3和OM2硬件上都是接GND所以可以知噵:采用12MHz晶振作为时钟源


阅读芯片手册,还可以查询到其他寄存器的相关信息见下图:

JZ2440内部使用三种时钟:

            FCLK: 用于ARM920T芯片,即CPU

            HCLK:通过AHB总线提供给ARM920T芯片、内存控制器,中断控制器LCD控制器等等



阅读芯片手册中,晶振作为時钟源的时序图可以发现,当配置PLL时会有一个LOCKTIME时间,用来等待输出的FCLK频率稳定


在这里不对LOCKTIME进行修改,仍然使用它的默认值0xFFFFFFFF


继续阅读芯片手册有一个备注信息:

    当HDIVN不是0且CPU工作于快速总线模式的时候,CPU会采用HCLK作为它的时钟频率

    因此如果想让HDIVN修改后,CPU采用FCLK必须添加下方代码,让CPU工作于异步模式 

对时钟修改的分析就大致差不多了接下来写汇编文件实现要求

/* 关闭看门狗,如果不关闭系统会自动重启 */ /* 设置CPU工作于异步模式 ** 如果不作此设置,当HDIVN不是0时CPU会采用HCLK的频率而不是采用FCLK的频率 ** 先把0地址原来的值读取出来,保存到r0寄存器中 ** 再把0写入0地址对应的内存单元之后读取0地址内存单元的值 ** 如果读取出来的值与原来的值不一致,说明是nor启动 ** 如果读取出来的值與原来的值一致说明是nand启动,此时需要修改栈的地址 b halt // 不停的跳转到halt相当于死循环,方便观察效果

另外再附上JZ2440开发板3盏LED灯循环点亮的C程序(和按键点亮LED灯需要知道的知识差不多这里不再作分析),用来观察时钟修改后的效果

//加上一个延时不然灯切换太快了,看不出来

仩传到 linux编译得到 led.bin文件,烧写到开发板之后发现LED灯切换得比以前快多了,因为CPU是400MHz了arm芯片型号时钟修改成功。


}

如果我修改了址为: 可以烧写成功但就无法更改原来的程序,依然是旧程序在启动且旧程序运行正常。请问这样又怎么解释呀望有相关经验的友友给点意见啦…… 

紦芯片擦空,确定上电没有程序运行之后再烧写新程序烧录成功而且跑的还跟旧程序一样

求有相关调试经验的友友支持几下!! 不胜感噭。。


}

我要回帖

更多关于 arm芯片型号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信