第三章、Tiny4412 U-BOOT移植三 时钟设置

tiny4412 uboot 2020.10版本移植(二)——下载uboot及对uboot移植的构想和准备工作 一、uboot下载 这个网站提供所有uboot版本的下载:ftp://ftp.denx.de/pub/u-boot/ 我下载了最新版本的uboot:u-boot-2020.10.tar.bz2 二、uboot启动流程分析 uboot源码根目录下的README是一个好文件,里面会告诉你很多关于uboot源码怎么使用的信息,仔细阅读会带来很多便利。 uboot的启动流程可以参见README文件Board Initialisation Flow: 下面的信息。 这里进行一些简略的记录: uboot源 阅读详情

这一章说明配置时钟频率基本原理

OK,接着说,这次先讲讲CPU的系统时钟。U-BOOT在启动的过程中,需要配置系统时钟,没有这东西,CPU就跑不起来。配置系统时钟,大致是以下几个步骤:

(1)设置系统PLL锁定时间

(2)配置PLL

(3)配置各模块分频系数

(4)切换到PLL时钟

一、基本原理

如下图3-1所示是Tiny4412 (Exynos4412)的核心板,板子最上面的是27MHz的晶振,下面一颗是24MHz,顺便讲一下另外几片东西,最左边的两片是内存DDR3-800,这表示数据传输频率为800MHz,外部时钟频率200MHz,内部时钟频率为100MHz(时钟可能有误),背面还有两片;下面的MCL FLASH,外部时钟频率133MHz。


图3-1、Tiny4412核心板图

1、倍频的原理


图3-2、Exynos4412上电启动时序图

上电后时钟设置和上电时序的详细介绍见手册第7章和第60章。上图截取第60章,上电后的XXTI输出的频率变化图,XXTI频率从小变到指定频率需要一段时间(图中标红框的部分),当CPU频率在变化的时候,比如由复位后的初始化值为400MHZ,我要升到1400MHZ,这时,首先把CPU的频率锁定,因为此时CPU的频率是变化的,频率变化,则CPU的状态就无法确定,所以,此时用PLL--phase-lockedloop锁相环,将CPU频率锁定一段时间,直到我的频率输出稳定为止。芯片手册上第2837页上显示APLL默认的设置时间最大要100us(100微秒)。


图3-3、Exynos4412PLL 锁定时间表

锁定频率后,此时,应该设置一个倍频因子,在Exynos4412手册中去查表7-2到7-4中,P,M,S设置对应位的值,然后,将频率提升,比如从晶振输出的24HZ,抬升到1400MHz。


图3-4、P,M,S设置值查找表

接着就是分频了,设置分频相关寄存器中不同的位即可实现分频,比如,设置某一位为0,那么,分频时,原来频率假设为1000MHZ,那么频率就被分为1000/1=1000MHz,这样就可以分给ARMCLK等使用了。

2、开始分析

下图3-5取自芯片手册section02_system的第3章 CLOCKCONTROLLER,在开篇的P353页的第一张图就是这个。


图3-5、Exynos4412时钟框图

Exnnos4412的Clock分为5个大的domain,分别是LEFTBUSS,MAUDIO(CMU_TOP),DMC,CPU,RIGTHBUS,这五个区域分别管理不同的设备,为不同的设备提供不同的频率,如下表3-1所示。


表3-1、Exynos4412时钟频率说明表

再往下翻,这些不同设备的频率是如何产生的呢?可以查看手册P451页图表,下图3-6为部分图片截图。


图3-6、Exynos4412各模块时钟产生过程

由上图3-6可知,通过XOM[0]选择产生频率输入源,由于启动设置时,XOM[0]被设置为0,那么APLL的时钟源应是XXTI,但电路板中XXTI是没有用的,通过一个电阻接地了,如下图2-7所示,这一点我也一直没有想明白?有谁明白了可以告诉我。我暂且认为内部有什么寄存器,可以改变这个值,设置成了1,通过APLL倍频后得到时钟FOUTapll,可以做为新的时钟源进行分频后给其他IP核使用。

那么,在硬件上是如何实现的呢?观察开发板上晶振有三颗,一个24MHz,一个27MHz。晶振,(全名晶体振荡器,成份石英(二氧化硅),晶振用于通过压电效应给CPU提出振荡频率,再通过别的电路,将例如正弦曲线波转换成方波,相当于CPU的起搏器,有了晶振,CPU才有频率输出)。如果CPU输入24MHz频率后,此时,就需要把频率放大了(否则CPU才24MHz的频率能干吗呢?所以,CPU并不是一上电就跑到几GHz上面去了,跑车再好,跑的再快,从0加速到100码,也需要一段时间,所以没有一上电就几G这回事儿),在频率放大的过程中,首先需要考虑的一个问题就是——锁相环。简单的说,比如复位后,CPU默认工作频率在400MHz,现在需要升到1400MHz工作,那么从400-->1400MHz需要一个过程,假设为时间t1,在t1这段时间内,CPU的频率是变化的,那么CPU的状态就是不稳定的,此时,就需要把频率锁定,设置锁定时间,直到CPU稳定的输出频率。


图3-7、Exynos4412外部时钟连接图

CPU第一次启动时,第五章中已有说明,IROM中的代码将PLL已默认的初始化了,在芯片手册找到93页,可查看到其默认的初始频率:


图3-8、Exynos4412默认频率设置说明图

可见,当外部晶振是24MHz时,内部APLL和MPLL分别为400MHZ

 

由上图3-8查出可知,ARMCLK的默认频率为400MHz

1)查看芯片手册的P444页,查出总共有以下几种由CMU输出的时钟

有四种PLLs(APLL,MPLL,EPLL,HPLL),还包括USB_OTGPHY clock。

The components to generate internalclocks are:

•APLL uses FINPLL as input to generatefrequencies from 22 to 1400 MHz.

•MPLL uses FINPLL as input to generatefrequencies from 22 to 1400 MHz.

•EPLL uses FINPLL as input to generatefrequencies from 22 to 1400 MHz. This PLL generates a 192 MHz clock for theAudio Sub-system. It divides EPLL output to generate 24 MHz SLIMbus clock.

•VPLL uses FINPLL or SCLK_HDMI24M asinput to generate frequencies from 22 to 1400 MHz. This PLL generates 54 MHzvideo clock or G3D clock.

•USB Device PHY uses XUSBXTI to generatefrequencies of 30 and 48 MHz.

•HDMI PHY uses XUSBXTI to generate 54MHz.

常用的APLL/MPLL/EPLL/VPLL是干什么的呢?看P446页

•APLLmainly drives the CPU_BLK clocks. It generates frequencies up to 1.4 GHz with aduty ratio of 49:51. APLL also generates DMC_BLK, LEFTBUS_BLK, RIGHTBUS_BLK,and CMU_TOP clocks as supplement of MPLL.

•MPLL mainly drives the DMC_BLK,LEFTBUS_BLK, RIGHTBUS_BLK, and CMU_TOP clocks. It generates frequencies up to 1GHz with a duty ratio of 49:51. MPLL also generates CPU_BLK clocks when itblocks APLL for locking during the Dynamic Voltage Frequency Scaling(DVFS).  

•EPLL mainly generates an audio clock.

•VPLL mainly generates video systemoperating clock of 54 MHz, or a G3D clock, or 440 MHz clock at 1.1 V.

先查看APLLPMS的倍频表,如下表3-2所示,看P447的Table7-2 APLL and MPLL PMS Value。  

表3-2、APLLand MPLL PMS Value



可查看到设置P/M/S的值,可以将频率拉升到我们想要的频率。设置的寄存器名称一般是:xPLL_CONx。如APLL的倍频寄存器的为APLL_CON0。

但在倍频之前,我们说过,先要让锁相环锁频功能成功,前面说过我们要等待一定的locktime时间,而手册上显示APLL的locktime最大为100us,如果是晶振输出的频率是24MHZ,locktime取值30毫秒,那么PLL_LOCKTIME是720,也就是0x2D0。那么我们就用这个值去设置APLL_LOCK寄存器。

翻看查找手册,基他相关的寄存器地址如下:

• (APLL_LOCK,R/W, Address = 0x1004_0000)

• (MPLL_LOCK, R/W, Address =0x1004_0000)

• (EPLL_LOCK, R/W, Address = 0x1003_0000)

• (VPLL_LOCK, R/W, Address =0xE010_0020)

下一节,结合实际的代码来说明如何设置这些值。

ENSP从下载到运行:用虚拟机搭建华为认证实验环境全流程(含USG6000V镜像配置) 本文提供了一份详细的华为ENSP仿真平台从下载、安装到配置USG6000V防火墙镜像的完整指南。内容涵盖前置软件安装、ENSP主程序配置、核心设备镜像导入及虚拟机资源分配策略,旨在帮助网络工程师和学习者快速搭建一个稳定、功能齐全的华为认证实验环境,为备考和模拟企业网络部署打下坚实基础。 阅读详情

相关推荐

华为产品安全基线

一、敏感信息安全传输 1、采用HTTPS安全协议传输 2、客户端本地保存的敏感信息,需要先加密再保存使用,不可逆支持PBKDF2(迭代10000次)加密保存,可逆支持AES256+IV保存,密钥支持可更新 二、认证鉴权 1、License中心与分析节点分布式部署,需要做用户名+口令安全认证,支持使用HTTPS安全协议。 2、客户端登录支持防暴力破解,支持验证码,多次连续尝试登陆失败后锁定账...

zileixu的博客 1万+

2440超详细uboot移植笔记(五)------设置时钟

你好!这里是风筝的博客, 欢迎和我一起交流。 通过代码分析,我们知道,uboot里先以60MHZ的时钟计算参数来设置内存控制器,但是此时MPLL还未设置,所以我们先修改一下:   a. 进入C函数board_early_init_f(路径:board\samsung\smdk2440.c),把 writel(0xFFFFFF, &clk_power->locktime); ...

风筝 2275

用Verilog搭出RISC-V架构单周期CPU

这是笔者学校暑期学期的必修课,难度并不高(仅追求及格的话),但相当耗时,对于在硬件设计方面完全不感冒的同学更是一场避不开的折磨,所以笔者想通过自己的成果和被折磨经验来帮助有此方面需求的同学,或是对于CPU设计有浓厚兴趣的人。

paticita的博客 1万+

Exynos4412时钟体系分析

本文转载自:http://www.techbulo.com/1365.html 在芯片手册里,“时钟管理单元 (Clock Management Unit)“的简称为 CMU 。CMU_ XXX 表示“XXX 模块内的 CMU ”,比如CMU_CPU等。 对于PC来说, CPU 、内存、主板、声卡、显卡等,这些功能部件由不同的芯片组成, 在实体上是相互独立的 。在嵌入式系统里,一块

漫不经心 3587

[misc]智能车协议分析:2020网鼎杯青龙组misc_teslaaaaa_wp

[misc]智能车协议分析:2020网鼎杯青龙组misc_teslaaaaa_wp 文章目录[misc]智能车协议分析:2020网鼎杯青龙组misc_teslaaaaa_wp分析log文件格式分析协议组成UDS网络传输层UDS统一诊断服务协议分析文件提取文件逆向flag计算参考链接: teslaaaaa这道题是青龙组被做出来的题目中做出来人数最少的,直到比赛快结束才有第一个人做出来,怎么说,难并不是因为脑洞大,讲道理这道题是一道好题,我当时也是肝了一天没做出来,我倒是把文件提取出来了,奈何比赛时间已经接近尾

Breeze的博客 1万+

华为昇腾Atlas 200I DK A2实战:从开箱到运行首个AI应用

本文详细介绍了华为昇腾Atlas 200I DK A2开发板从开箱到运行首个AI应用的全过程。包括硬件准备、系统烧录、开发板连接方案、AI应用运行及性能优化技巧,帮助开发者快速上手部署AI项目,提升开发效率。

weixin_27038245的博客 592

Uboot 2017.01 启动流程分析

前言2017.01 UBoot包含两个阶段的启动,一个是SPL启动,一个是正常的启动我们称为第二阶段Uboot。当然,我们也可以选择使用SPL和不使用。 在编译的过程中,是先编译第二阶段Uboot,然后在编译SPL的。这两个阶段的编译时分离的。 拥有不同的配置,所以许多地方的宏是和SPL的不一样。而且链接的文件也不一致。 所以接下来,我们也会分为两个部分进行分析。 SPL启动在AM437X平台中,实

艾玛 2万+

YOLO系列算法改进 | C3k2改进篇 | 融合DFRL双融合注意力接收层 | 轻量化与全局感受野双突破,适应高分辨率航拍与密集小目标检测场景 | CVPR 2026

YOLO系列算法改进 | C3k2改进篇 | 融合DFRL双融合注意力接收层 | 轻量化与全局感受野双突破,适应高分辨率航拍与密集小目标检测场景 | CVPR 2026 (以YOLO26最新目标检测模型为基础,利用C3k2_DFRL创新模块进行改进)

2502_91881744的博客 233

Exynos4412芯片的时钟管理单元

本章介绍Exynos4412芯片的时钟管理单元(CMU)。CMU控制锁相环(PLL)并为Exynos4412芯片中的各个IP、总线和模块产生时钟。它们还与电源管理单元(PMU)通信,以便在进入某个低功耗模式之前停止时钟,以通过时钟切换来降低功耗。 1.Exynos4412芯片的时钟体系介绍 对于PC机来说,CPU、内存、主板、声卡、显卡等等,这些功能部件由不同的芯片组成,在实体上是相互独立的。...

caihaitao2000的博客 1838

Detector-Free SfM 项目复现完整指南:从环境搭建到代码解析与可视化

本文提供了Detector-Free SfM项目的完整复现指南,涵盖技术背景、环境配置、代码解析和可视化方案。重点包括: 技术背景:Detector-Free SfM通过两阶段策略(粗重建+迭代精化)解决了传统SfM在弱纹理区域的瓶颈问题,采用深度学习匹配器替代传统特征点检测。 环境配置: 详细硬件要求与推荐配置(GPU/CPU/内存) 完整的Ubuntu系统设置步骤 Conda环境创建与依赖安装流程 关键组件安装指南(PyTorch、COLMAP等) 常见错误解决方案 项目特点: 支持多种Detector

huanghm88的专栏 121

HyperLynx(十三)Hyperlynx前放置之对网络的EMC分析

在“Spectrum Analyzer”对话框的“Stimulus”(激励)栏中,设置激励源频率为100MHz,选择“IC modeling”为“Fast-Strong”,并按图所示设置其他选项。显然,在仿真的基频上,它的幅值最大,将鼠标光标置于柱状图上,可以读取其值为64.28mA,这个数值是由选定的驱动芯片决定的。按上图所示的原理图,在接收端增加一个并联的RC负载,再次运行仿真,结果如图所示。在对话框左侧的“Pins”列表中,显示出了已添加电流探针的引脚,可以在此列表中选择所要仿真的目标。...

小幽余生不加糖 4680

第四章、TIny4412 U-BOOT移植四 配置时钟频率源码分析

上篇讲了配置时钟的原理,今天就结合源码具体分析一下。在U-Boot的源码中,系统时钟的初始化是放在板文件夹下的(board/Samsung/mytiny4412)的clock_init_zthtiny4412.S文件中的system_clock_init函数中。我们的Tiny4412是拷贝的smdk4212来的,所以,大家可以先参看smdk4212的clock_init_smdk4212.S文件中

eshing的专栏 3246

工业视觉降本300%实战:C# + 开源YOLO如何干掉Halcon/VisionPro?

在当前制造业普遍追求“降本增效”的大背景下,工业视觉检测系统作为产线的眼睛,其成本问题日益突出。通过该方案,我们成功帮助一家电子厂将单条产线的视觉检测成本从15万降低至不足5千(主要为工控机硬件成本),降本幅度超过95%,且系统稳定性经受住了6个月连续生产的考验。:C#负责“工程化”和“业务逻辑”,YOLO负责“智能算法”,二者结合,完美覆盖了工业视觉从算法到落地的全链路。的组合,构建一套高性能、低成本、易维护的工业视觉解决方案,并彻底替代昂贵的付费库。” 这是一个典型的误区。工业相机/USB相机。

2601_94871597的博客 430

第三章、Tiny4412 U-BOOT移植三 时钟设置【转】

本文转自:http://blog.youkuaiyun.com/eshing/article/details/37521789 这一章说明配置时钟频率基本原理 OK,接着说,这次先讲讲CPU的系统时钟。U-BOOT在启动的过程中,需要配置系统时钟,没有这东西,CPU就跑不起来。配置系统时钟,大致是以下几个步骤: (1)设置系统PLL锁定时间 (2)配置PLL (3)配置各模块分频系数 (4)切换到PLL时钟...

zzb2760715357的博客 100

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

tiny4412 uboot 2018移植(三)移植

简介

我将带头加班的博客 3001

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

[TINY4412移植篇]u-boot-2020.01

一)环境 a)ubuntu18.04 b)arm-linux-gnueabi-gcc 7.5.0 / gcc 7.5.0 b)FriendlyArm tiny4412 标准版 二)目标 a)从SD卡启动linux-5.5 二)步骤 a)Makefile: 1)add "ARCH = arm"; 2)add "CROSS_COMPILE = arm-linux-gnueabi-"; 3...

bouyeizhang的专栏 1462

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

基于tiny4412的u-boot移植(一)

作者信息 作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 平台介绍 开发环境:win7 64位 + VMware11 + Ubuntu14.04 64位 开发板:tiny4412ADK + S700 + 4GB eMMC + 1G DDR3 工具链:友善之臂提供的 arm-linux- (gcc version 4.5.1) 要移植的u-boot...

pengdonglin137的专栏 143

第四章、TIny4412 U-BOOT移植四 配置时钟频率源码分析【转】

本文转载自:http://blog.youkuaiyun.com/eshing/article/details/37542459 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] 上篇讲了配置时钟的原理,今天就结合源码具体分析一下。在U-Boot的源码中,系统时钟的初始化是放在板文件夹下的(board/Samsung/mytiny4412)...

163

基于tiny4412的u-boot移植(二)

作者信息 作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 平台介绍 开发环境:win7 64位 + VMware11 + Ubuntu14.04 64位 开发板:tiny4412ADK + S700 + 4GB eMMC + 1G DDR3 工具链:友善之臂提供的 arm-linux- (gcc version 4.5.1) 要移植的u-boot版...

pengdonglin137的专栏 101

第七章、Tiny4412 U-BOOT移植七 DDR内存配置

上次讲完了Nand Flash的低级初始化,然后Nand Flash的操作主要是在board_init_f_nand(),中,涉及到将代码从Nand Flash中copy到DDR中,这个放到后面实际移植的过程中再结合源码流程来分析,正常来说,DDR应该是放在Nand Flash前面开始讲,因为DDR相对于Nand Flash来说,更加复杂一些,所以,将DDR拖后来说了,OK,接着开始讲DDR。

eshing的专栏 4360

tiny4412 --Uboot移植(4) 串口

开发环境:win10 64位+ VMware12 + Ubuntu14.04 32位 工具链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi 要移植的u-boot版本:u-boot-2016-11 Tiny4412开发板硬件版本为: 底板:Tiny4412SDK 1312B 核心板:Tiny4412 ...

weixin_30709061的博客 266

移植uboot2019.10到tiny4412开发板(二)

宿主机 : 虚拟机 Ubuntu 16.04 目标板[底板]: Tiny4412SDK 目标板[核心板]: Tiny4412 U-BOOT版本: 2019.10 交叉编译器: gcc-arm-none-eabi-9-2020-q2-update 从网上下载代码到虚拟机,编译代码出现: root@ubuntu:/home/uboot/source2017.03/u-boot-2019.10# make menuconfig HOSTCC scripts/basic/fixdep HOSTCC script

一路走到黑_dreams的博客 469

【TINY4412】U-BOOT移植笔记:(9)SD卡启动U-BOOT

【TINY4412】U-BOOT移植笔记:(9)SD卡启动U-BOOT 宿主机 : 虚拟机 Ubuntu 16.04 LTS / X64 目标板[底板]: Tiny4412SDK - 1506 目标板[核心板]: Tiny4412 - 1412 U-BOOT版本: 2017.03 交叉编译器: gcc-a

大水猫 1334
上一篇: 第二章、Tiny4412 U-BOOT移植二 启动分析
下一篇: 第四章、TIny4412 U-BOOT移植四 配置时钟频率源码分析
eshing
博客等级 码龄18年 146粉丝 21原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值