当前位置: 首页 > news >正文

焦作网站制作怎么优化一个网站关键词

焦作网站制作,怎么优化一个网站关键词,企业营销型网站费用,wordpress 默认账号前言#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM#xff08;MX6U#xff09;裸机篇”视频的学习笔记#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…前言 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARMMX6U裸机篇”视频的学习笔记在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用 正点原子IMX6U仓库 (GuangzhouXingyi) - Gitee.com 《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf》 正点原子资料下载中心 — 正点原子资料下载中心 1.0.0 文档 正文 本文是 “正点原子[第二期]Linux之ARMMX6U裸机篇--第14.1, 14.2, 14.3 讲” 的读书笔记。第14讲主要是介绍I.MX6U处理器的主频和系统时钟配置。本节将参考正点原子的视频教程第14讲和配套的正点原子开发指南文档进行学习。 0. I.MX6U系统时钟总体介绍 在前几章的时延中我们都没有涉及到I.MX6U的时钟和主频的配置操作全部使用默认的配置默认配置I.MX6U上电启动芯片内部 boot ROM 会把处理器工作频率设置为 396MHz。但是 I.MX6U 系列标准的工作频率为 528MHz有些型号甚至可以工作到696MHz。本章我们就学习I.MX6U的系统时钟学习如何配置I.MX6U的系统时钟和其他的外设时钟使其工作在 528MHz其它的外设时钟都工作在NXP推荐的频率。 1. I.MX6U时钟系统详解 I.MX6U的系统主频为528MHz有些型号伸着可以跑到696MHz但是默认情况下内部 boot rom 会讲 I.MX6U 的主频设置为 396MHz这个我们在 9.2 小节已经讲过了。我们在使用 I.MX6U 的时候肯定要发挥它的最大性能那么主频肯定要设置到528MHz其它型号可以设置的更高比如696MHz其它的外设时钟也要设置到NXP推荐的值。I.MX6U的系统时钟在I.MX6ULL/I.MX6UL 参考手册》的第 10 章“Chapter 10 Clock and Power Management”和第18 章“Chapter 18 Clock Controller Module (CCM)”这两章有详细的讲解。 1.1 系统时钟的来源 打开I.MX6U ALPHA/Mini 核心开发板原理图开发板时钟如图 16.1.1.1 所示 从图 16.1.1.1 可以看出 I.MX6U ALPHA/Mini 开发板的系统时钟来源于两部分32.768KHz和24MHz的晶振其中 32.768KHz是I.MX6U的RTC时钟源24MHz晶振是I.MX6U内核和其他外设的时钟源也是我们重点要分析的。 1.2 7路PLL时钟源 I.MX6U的外设有很多不同的外设时钟源不同NXP将这些外设的时钟源做了分组一共有7组这7组时钟源都是从 24MHz 晶振 PLL 而来的因此也叫做7组PLL这7组PLL结构图如 图 16.1.1.2 所示 图 16.1.1.2 展示了7个PLL的关系我们依次来看一下这7个PLL的都是什么做什么用的 1. ARM PLL (PLL1) 此路PLL是同ARM内核使用的ARM内核时钟就是由此PLL生成的此PLL通过编程的方式最高可倍频到1.3GHz。2. 528_PLL(PLL2)此路PLL也叫做 System_PLL此路PLL是固定的22倍频不可编程修改。因此此路PLL时钟24MHz*22528MHz这也是为什么此PLL叫做 528_PLL 的原因。此PLL分出4路PFD相位分数分频器分别为 PLL2_PFD0~PLL2_PFD3这4路PFD和528_PLL共同作为其它很多外设的根时钟源。通常528_PLL和这4路PFD是 I.MX6U 内部系统总线的时钟源比如内部处理器逻辑单元DDR接口NAND/NOR接口等等。3. USB1_PLL(PLL3)此路PLL主要用于USBPHY此PLL也有四路PFD为 PLL3_PFD0~PLL3_PFD3USB1_PHY 是固定的20倍频因此USB1_PLL24MHz*20480MHz。USB1_PLL虽然主要用于USB1PHY但是和其他四路PFD同样也可以用作其他外设的时钟源。4. USB2_PLLPLL7看名字就知道此路PLL是给 USB2PHY使用的。同样的此路PLL固定位20倍频因此也是480MHz。5.ENET_PLL(PLL6)此路PLL固定位205/6倍频因此 ENET_PLL24MHz*(205/6)500MHz。此路PLL用于生成网络所需的时钟可以在此PLL的基础上生成25/50/100/125MHz网络时钟。6. VIDEO_PLL(PLL5)此路PLL用于显示相关外设比如LCD此路PLL的倍频可以调整PLL的输出范围在 650MHz~1300MHz。此路PLL在最终输出的时候还可以进行分频可选1/2/4/8/16分频。7. AUDIO_PLL(PLL4)此路PLL用于音频相关的外设此路PLL的倍频可以调整PLL的输出范围同样也是650MHz-1300MHz此路PLL在最终输出的时候也可以进行分频可选1/2/4分频。 1.3 时钟树简介 在上一小节讲解了7路PLLI.MX6U的所有外设时钟源都是从这7路PLL和有些PLL的PFD而来的这些外设究竟是如何选择PLL或者PFD的这就要借助《IMX6ULL 参考手册》里的时钟树了在“Chapter 18 Clock Controller Module (CCM)”的 18.3 小节给出了 I.MX6U详细的时钟树图如图 16.1.3.1 所示 在图16.3.1中一共有三部分CLOCK_SWITCHERCLOCK ROOT GENERATOR 和 SYSTEM CLOCKS。其中左边的 CLOCK_SWITCHER 就是我们上一小节讲解的那7路PLL和8路PFD右边的 SYSTEM CLOCK 就是芯片外设中间的 CLOCK ROOT GENERATOR 是最复杂的这一部分就像“月老”一样给左边的 CLOCK_SWITCHER 和 右边的 SYSTEM CLOCKS 进行牵线搭桥。外设的时钟源有多路可以选择的CLOCK ROOT GENERATOR 就扶着从7路PLL和8路PFD中选择合适的时钟源给外设使用。具体操作肯定是设置相应的寄存器我们以EASI这个外设为例EASI的时钟图如 16.1.3.2 所示: 在图 16.1.3.2 中我们分为了3部分这3部分如下 此部分是时钟选择源ESAI有4个可选的时钟源PLL5 PLL5 PLL3_PFD2 和 pll3_sw_clk。具体选择哪一路作为ESAI的时钟源是有寄存器 CCM-CSMR2 的 EASI_CLK_SEL 位来决定的用户可以自由配置配置如图 16.1.3.3 所示此部分作为ESAI时钟的前级分频器分频值由 CS1CDR的ESAI_CLK_PRED来确定可以设置1~8分频假如现在 PLL4650MHz我们选在PLL4作为ESAI时钟前级分频器选择2分频那么此时的时钟就是 650/2 325MHz此部分又是一个分频器对2中输入的时钟进一步分频分频值由寄存器 CS1CDR 的 ESAI_CLK_PODF 来决定可以设置1~8分频。假如我们设置为8分频的话经过此分频器以后的时钟就是 325/840.625MHz。因此最终进入到 ESAI外设的时钟就是 40.625MHz。 上面我们以外设EASI为例讲解了如何根据图 16.1.3.1 来设置外设的时钟频率其它的外设基本类似大家可以自行分析一下其他的外设。关于外设时钟配置的内容全部都在《I.MX6ULL 参考手册》的第 18 章。 1.4 内核时钟设置 I.MX6U的系统故事中再前面几节已经分析的差不多了现在就可以开始设置相应的时钟频率了。先从处理器主频开始我们将 I.MX6U 的主频设置为 528MHz根据根据图 16.1.3.2 的时钟树可以看到ARM 内核时钟如图 16.1.4.1 所示 图 16.1.4.1 中各部分如下 序号描述1内核时钟来源于PLL1假设此时PLL1为960MHz2通过寄存器 CCM_CACRR 的 ARM_PODF 位对PLL1进行分频可选择1/2/4/8分频假如我们选择了2分频那么经过分频以后的时钟频率就是 996/2498MHz3大家不要被次数的2分频给骗了此处没有进行2分频我就被这个 2 分频骗了好久主频一直配置不正确4经过第2步的分频之后的498MHz就是ARM的内核时钟也就是I.MX6U的主频 经过上面的几步分析可知假如我们要设置内核主频为528MHz那么PLL1可以设置为 1056MHz寄存器CCM_CACRR的 ARM_PODF 位设置为2。同理如果要将主频设置为696Mhz那么主频PLL1就可是设置696MhzCCM_CACRR的 ARM_PODF 位设置为1。现在问题很清楚了 寄存器CCM_CACRR的 ARM_PODF 位很好设置PLL1的频率可以通过 CCM_ANALOG_PLL_ARMn 来设置。 CCM_CACRR寄存器的结构如下图所示 1.4.1 PLL1 ARM_PLL倍频设置 《I.MX6ULL 参考手册》的章节 18.5.1.3.1 ARM PLL说明了 PLL1 的是从外部 24MHz 晶振倍频而来PLL1 的频率范围是从 650MHz ~ 1.3GHz通过寄存器 CCM_ANALOG_PLL_ARM 的比特位 DIV_SELECT 可以选择输出的PLL1的倍频范围。 PLL1 的倍频输出计算公式为: PLL output frequency Fref * DIV_SEL/2 根据上面的计算公式假如我们想要配置 PLL1 的倍频输出为 1056Mhz计算出的的 DIV_SEL 值应该是 。 1056 Mhz 24MHz*DIV_SEL/2; DIV_SEL (1056*2)/24 88 CCM_ANALOG_PLL_ARM 寄存器比特位 DIV_SELECT 定义如下 寄存器 CCM_ANALOG_PLL_ARM 的关键位是: bit[13] Enable时钟输出使能位此位设置为 1 使能 PLL1 输出如果设置为 0 的话就关闭 PLL1输出bit[6:0] DIV_SELECT,此位设置 PLL1 的输出频率可设置范围为 54~108 PLL1 CLK Fin *div_seclec/2.0 Fin24MHz。如果 PLL1 要输出 1056MHz 的话 div_select 就要设置为 88。 1.4.2 PLL1 Clock Switcher 时钟源选择 在修改 PLL1 时钟频率的时候我们需要先将内核时钟源改为其他的时钟源 PLL1 可选择的 时钟源如图 16.1.4.4 所示在《I.MX6ULL 参考手册》的章节 18.5.1.5.1 Clock Switcher 中 思考修改ARM主频为什么要切换时钟源 为什么在设置 PLL1 (ARM_PLL) ARM 内核时钟的时候要先将ARM内核时钟选择一个其他时钟源然后修改PLL1的时钟频率最后在将ARM内核的时钟源再切换到PLL1哪 原因 因为ARM内核处理器的运行每时每刻都需要时钟的驱动I.MX6U 默认启动的时候使用的是 PLL1 的时钟源默认为396MHz当我们需要修改系统主频也就是修改PLL1的倍频频率为 596MHz的时候要对PLL1进行修改而当前ARM内核当前正在使用的就是PLL1修改PLL1时钟需要一个过程而在这个过程中ARM处理器就丢失了时钟无法运行。 这就像给人做心脏手术一样在做对心脏做手术之前要接一个体外人工血液循环泵维持血液循环在做完心脏手术之后再把血液循环接回到心脏。 也就是说在修改当前PLL之前所有以依赖当前PLL的时钟源都需要切换到一个新的时钟源上然后 图 16.1.4.4中 1. pll_sw_clk 也就是PLL1的最终输出频率 2. 此处是一个选择器选择 pll1_sw_clk 的时钟源有寄存器 CCM_CCSR 的 PLL1_SW_CLK_SEL 位决定 pll1_sw_clk 是选择 pll1_mian_clk 还是 step_clk。正常情况下应该选择 pll1_main_clk但是如果要对 pll1_main_clk(PLL1)的频率进行调整的话比如我们要设置PLL11056MHz此时就要先将 pll1_sw_clk 切换到 step_clk 上。等 pll1_main_clk 调整调整完成以后再切换回来。 3. 此处也是一个选择器选择 step_clk 的时钟源有寄存器 CCM_CCSR 的 SETP_SEL 位决定 setp_clk 是选择 osc_clk 还是 secondary_clk。一般选择 osc_clk也就是 24MHz 的晶振。 这里我们用到了一个寄存器 CCM_CCSR此寄存器的结构如下图所示 寄存器 CCM_SSSR 我们只用到了 STEP_SEL 和 PLL1_SW_CLK_SEL 这两位一个是用来选择 setp_clk 的时钟源一个是用来选择 pll1_sw_clk 的时钟源。 到这里修改 I.MX6U 主频的步骤就很清晰了修改步骤如下 设置寄存器 CCM_CCSR 的 STEP_SEL位设置 setp_clk 的时钟源为 osc 24MHz 的晶振。设置寄存器 CCM_CCSR 的 PLL1_SW_CLK_SEL 位设置 pll1_sw_clk 的时钟源为 setp_clk24MHz通过这一步我们就将 I.MX6U 的主频先这是为 24MHz直接来自于外部的24MHz晶振。设置寄存器 CCM_ANALOG_AMRn将 pll1_mian_clk(PLL1)设置为 1056MHz。设置寄存器 CCSR 的 PLL1_SW_CLK_SEL 位将 pll1_sw_clk 的时钟源重新切换会 pll1_main_clk 切换回来之后的 pll1_sw_clk 就等于 1056MHz。最后设置寄存器CCM_CACRR 的 ARM_PODF 为 2 分频I.MX6U的内核主频就为 1056/2528MHz。 1.4.3 PLL1 主频设置源码 按照上面1.4.2 分析的步骤 /* 初始化时钟 */ void imx6u_clkinit(void) {/* 初始化 IMX6U 的主频为528MHz */if(((CCM-CCSR 2) 0x1) 0){ /* 判断PLL1_SW_CLK_SEL位为0当前使用 pll1_main_clk */CCM-CCSR ~(18); /* 设置CCM_CCSR STEP_SEL位0 step_clk 选择 osc_clk 24MHz晶振 */CCM-CCSR | (12); /* 设置PLL1_SW_CLK_SEL位为1pll1_sw_clk切换到step_clk */}/* 设置PLL1为1056MHz */CCM_ANALOG-PLL_ARM ~(1 13); /* 清零ANANLOG_PLL_ARM bit[13]关闭 pll1_main_clk */CCM_ANALOG-PLL_ARM ~0x7f; /* 清零ANANLOG_PLL_ARM bit[6:0] */CCM_ANALOG-PLL_ARM | ((88 0) 0x7f); /* 设置ANANLOG_PLL_ARM bit[6:0], PLL1 frquenceyFrq*div_select/2 */CCM_ANALOG-PLL_ARM | (1 13); /* 设置ANANLOG_PLL_ARM bit[13] Enable1, 开启 pll1_main_cl *//* pll1_sw_clk切换回pll1_main_clk(PLL1)*/CCM-CCSR ~(12);/* 设置PLL1分频位2 1056Mhz/2528MHz */CCM-CACRR 0x1; /* ARM_PODF divide by 2 */} 1.4.4 编译修改主频后源码烧录SD卡验证 编译修改主频后源码烧录SD卡验证主频修改是否生效。将I.MX6U的主频从默认396MHz修改为 528MHz或者696Mhz之后LED灯闪烁速度会变快按下按键后蜂鸣器的鸣叫频率也尖锐。 我本地验证的结果是修改修改I.MX6U主频为528MHz/696MHz之后LED闪烁频率变快蜂鸣器鸣叫变快实验修改主频成功。 2. PFD时钟设置 设置好主频之后我们好要设置好其它的PLL和PFD时钟PLL1上一小节已经设置好了PLL2 PLL3, PLL7 是固定为528MHz, 480MHz 和 480MHzPLL4~PLL6 都是针对特殊外设的用到的时候再设置。 因此接下来重点就是设置PLL2和PLL3的各自4路PFDNXP推荐的这8路PFD频率如下表 先设置PLL2的4路PFD用到的寄存器是 CCM_ANLOG_PFD_528n寄存器的结构如下图所示 从 16.5.1 可以看出寄存器 CCM_ANALOG_PFD_528n 其实分为四组分别对应 PFD0~PFD3每组8个bit我们以 PFD0为例看一下如何设置 PLL2_PFD0的频率。PFD0对应的寄存器位如下 PFD0_FRACPLL2_PFD0的分频数PLL2_PFD0的计算公式为 528*18/PFD0_FRAC此位的可设置范围为 12-35。如果 PLL2_PFD0 的频率设置352MHz的话PFD0_FRAC528*18/25227。PFD0_STABLE 此位为只读位可以通过此位判断PLL2_PFD0 是否稳定PFD0_CLKGATEPLL2_PFD0 输出是能位为1的时候关闭PLL2_PFD0的输出为0的时候使能输出。 如果我们设置PLL2_PFD0的频率为325MHz的话就需要设置 PFD0_FRAC为27PFD0_CLKGATE为0。PLL1~PLL3的设置类似频率计算公式都是 528*18/PFDX_FRACX1~3因 此 PLL2_PFD1594MHz 的 话 PFD1_FRAC16 PLL2_PFD2400MHz 的话 PFD2_FRAC 不能整除因此取最近的整数值即 PFD2_FRAC24这样 PLL2_PFD2 实际为 396MHz PLL2_PFD3297MHz 的话 PFD3_FRAC32。 接下来设置PLL3 PFD0~PFD3这4路PFD的频率使用到的寄存器是CCM_ANALOG_PFD_480n此寄存器的结构如下图所示 从图 16.1.5.2 可以看出寄存器 CCM_ANALOG_PFD_480n 和 CCM_ANALOG_PFD_528n 的结构是一模一样的只是一个是 PLL2 的一个是 PLL3 的。寄存器位的含义也是一样的只 是 频 率 计 算 公 式 不 同 比 如 PLL3_PFDX480*18/PFDX_FRAC(X0~3) 。 如 果 PLL3_PFD0720MHz 的话 PFD0_FRAC12如果 PLL3_PFD1540MHz 的话 PFD1_FRAC16;如果 PLL3_PFD2508.2MHz 的话 PFD2_FRAC17 如果 PLL3_PFD3454.7MHz 的话PFD3_FRAC19。
http://www.w-s-a.com/news/626486/

相关文章:

  • 怎么做自己的彩票网站公司建设网站价格
  • 国外比较好的设计网站网站后台无法上传图片
  • 帮别人做网站的公司是外包吗用户登录
  • 关于我们网站模板小莉帮忙郑州阳光男科医院
  • 上海门户网站怎么登录永州网站制作
  • 微信网站模版下载做销售的去哪个网站应聘
  • 好看的个人博客主页长安网站优化公司
  • 企业网站关站大型综合新闻门户网站织梦模板
  • 网站优化排名易下拉效率查企业网站
  • 网站建设湛江关于汽车的网站
  • 南宁模板建站多少钱企业黄页名单
  • 企业网站的建设一般要素有网站定制公司地址
  • 婚纱摄影网站设计案例四川省城乡建设厅官方网站
  • 怎么做海淘网站wordpress首页表单
  • 大连网站优化技术长沙高端网站建设服务
  • 郎创网站建设做的网站 v2ex
  • 广东网站建设教程江西城乡住房建设网站
  • 做ppt卖给网站wordpress insert
  • 文化传媒公司网站模板wordpress转typecho
  • 网站建设设计视频郑州 服装网站建设
  • 网站建设什么公司好织梦cms默认密码
  • 大型网站 空间网上商城官网入口
  • 成都全美网站建设江苏专业网站建设
  • 足球网站模板有帮忙做阿里巴巴网站的吗
  • 建设厅报名网站京东网站的建设与发展前景
  • 金寨县住房和城乡建设部网站网页作业怎么做一个网站
  • 做ppt模板网站有哪些内容wap是什么意思卡老师
  • 网站建设一定要域名吗网站后台关键词设置
  • 标书制作公司网站坪山网站建设哪家便宜
  • 防止做网站的人修改数值门户网站架构