关于imx6ull点灯最小时钟配置的一点小想法

背景
大概在几个月以前,在学习IMX6ULL汇编点灯的代码时,对于点灯时的时钟配置我就有过疑问,按理来说,点个灯只需要配置引脚的时钟就可以了,可为啥还要配置另外一个时钟?
在这里插入图片描述

这也就是我这一点小想法的由来。

汇编点灯的基本流程
1.使能时钟
2.IO复用,例如设置寄存器IOMUXC_SW_MUX_CTL_PAD…等,设置这个引脚的复用属性
3.设置电气属性,例如设置寄存器IOMUXC_SW_PAD_CTL_PAD…等,设置这个引脚的压摆率,速度,驱动能力等。
4.配置GPIO的功能,设置输入输出等

汇编点灯的具体代码

.global _start
_start:
ldr r1, =0X0C0C0000
ldr r0, =0X020C406C /* 寄存器 CCGR1 */
str r1, [r0]


ldr r0, =0X020E0068 /* 将寄存器 SW_MUX_GPIO1_IO03_BASE 加载到 r0 中 */
ldr r1, =0X5 /* 设置寄存器 SW_MUX_GPIO1_IO03_BASE 的 MUX_MODE 为 5 */
str r1,[r0]

ldr r0, =0X020E02F4 /*寄存器 SW_PAD_GPIO1_IO03_BASE */
ldr r1, =0X10B0
str r1,[r0]

ldr r0, =0X0209C004 /*寄存器 GPIO1_GDIR */
ldr r1, =0X0000008
str r1,[r0]

ldr r0, =0X0209C000 /*寄存器 GPIO1_DR */
ldr r1, =0
str r1,[r0]

loop:

b loop
 



上述代码可以看到,最小时钟配置的代码是:

ldr r1, =0X0C0C0000

那么问题来了,最小时钟配置为什么不是0X0C000000?

为什么?
请添加图片描述
通过上图的CCM_CCGR1时钟配置,我们可以很清楚的得知27-26是肯定要打开的,因为我们就是要通过引脚输出高电平去进行点灯,配置引脚时钟是合理的,但主要问题就是19-18的SIM_S时钟为啥也要打开?

为什么19-18的SIM_S时钟也要打开?
请添加图片描述
通过上图,其实很容易就可以得出,其clock root是FABRIC_CLK_ROOT
而对应的模块其实是NIC-301
模块时钟为AXI_A_SIM_S

NIC-301?
NIC——应该理解为network interconnect
在百度上可以搜索到这样一则描述:NIC-301网络互联是高度可配置的,使我们可以创建一个完整的高性能,优化和符合AMBA标准的网络基础设施,其网络有许多可能的配置,它们的范围从单一的桥接组件,例如AHB到AXI协议转换桥,其可以看做是芯片内部的连接器。

FABRIC_CLK_ROOT?
请添加图片描述这个时钟树图其实很好的说明了时钟源的产生和去向,我们可以从上图看到,他最后会成为TZASC和MMDC系统时钟的时钟来源。

MMDC?
请添加图片描述
MMDC 就是 I.MX6U的内存控制器, MMDC 是一个多模的 DDR 控制器,可以连接 16 位宽的 DDR3/DDR3L、 16 位宽的 LPDDR2, MMDC 是一个可配置、高性能的 DDR 控制器。

TZASC?
请添加图片描述上面就是TZASC的时钟图解。
TZASC 是一种符合高级微控制器总线架构(AMBA)的片上系统(SoC) 外设。它是一种高性能、面积优化的地址空间控制器,具有符合 AMBA高级可扩展接口(AXI) 协议和 AMBA高级外设总线(APB) 协议的片上 AMBA 总线接口。

TZASC具体的功能如下:
​ (1)能够对每个地址区域设置安全访问权限(可配置的安全地址数量为2,4,8,16)
​ (2)仅当AXI bus 的安全状态与其寻址的内存区域的安全设置一致时,才允许主设备和从设备之间传输数据。
​ (3)在使能secure_boot_lock之后主设备对寄存器的写访问

那我还是不懂为啥要开啊?
这与板子的启动流程有一定的关系。
板子上电后Boot Rom会配置初始化时钟和DDR3,然后会将映像文件从启动设备(TF卡、eMMC)自动拷贝到DDR3内存上。Boot Rom应该将映像文件拷贝到内存的哪个位置,配置文件已经规定好了,拷贝到DDR3中的位置和大小由Boot data数据决定,用户.bin文件的起始地址由地址entry决定,需要在链接脚本中手动配置。
所以,当我们的程序是从SD卡启动的时候,打开这个时钟,可以将SD卡中的映像文件从启动设备中自动拷贝到DDR3的内存上。自然需要开启跟上述有关的时钟了。

换个角度,根据原理图进行分析

请添加图片描述
回看原理图,其实答案已经呼之欲出了,SD卡的HSDHC接口是可以跑AXI的,所以使能AXI相关的时钟也不足为奇了。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kockpaiki

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值