个人比较菜鸟,搞了AM335x快一年了,依旧对其时钟一脸蒙蔽,虽然TRM已经有对时钟的详细描述,但是依旧感觉不太熟悉,偶然机会逛TI论坛(http://www.deyisupport.com)知道有一个叫CTT的软件,其专门针对AM335x等开发板,直观的显示系统时钟,让我们能够很快知道该配置那些时钟,那些是已经设置好而不需要配置的。
1.CTT是什么,有什么用?
CTT为Clock Tree Tool英文缩写,其主要针对TI部分CPU,用于快速便捷配置系统时钟,由于AM335x时钟比较麻烦,分为一级一级的,如果每次配置都一个一个看,会很慢,而且还需要知道初始的时钟状态是否打开,所以推荐使用此工具配置时钟。
2.CTT软件安装
参考:http://processors.wiki.ti.com/index.php/AM335x_Clock_Tree_Tool,分为以下三步
a.安装JRE
CTT软件依赖JAVA运行环境,直接下载安装,地址http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
b.下载CTT软件
按照上面参考里面的地址下载http://www.ti.com/tool/clocktreetool,下载时需要注册TI账号,信息随便填即可,完成后即可下载,不想注册,可以直接使用http://software-dl.ti.com/download/sitara_linux/H8HSB9ZBFCV8ZT6EQM4DSY9PA7PCVFYZ/CTT-Sitara-v1.0.0.2.zip
c.安装CTT
下载CTT后解压缩,然后点击Installer.jar安装,后面路径默认即可,最后点击目录下TI_Clock_Tree_ToolCTT-Sitara_v1.0.0.0CTT-Sitara_v1.0.0.0.jar文件即可启动,安装时特别注意,路径不能过长不能有中文,而且只能在解压位置安装,最好直接放到盘符顶级目录,否则会安装失败
3.CTT软件使用
初次打开,看着会比较晕,这里以配置GPIO1模块时钟为例
a.找到GPIO1模块
ZOOM_CONTOLR选x1 -> Blocks选GPIO1 -> CONTOL_VIEW选Enable_mode
可以看到GPIO1模块有两条连线,颜色为红,因此GPIO1有两种时钟模式,均未开启
b.遍历时钟树
b1.左侧时钟树
Main_view点击红色连线 -> CONTOL_VIEW显示L4LS_GCLK -> 因此上级为L4LS_GCLK -> 向左向下拖动滑动条 -> 看到出现GATE_L4LS_GCLK -> 点击GATE_L4LS_GCLK红色线寻找上级 -> CONTROL_VIEW显示CORE_100M_GCLK -> 因此上级为CORE_100M_GCLK -> 向右向上拖动滑动条 -> 看到出现GATE_CORE_100M -> 点击GATE_CORE_100M红线 -> 看到CONTROL_VIEW显示CORE_100M -> 向上拖动红色滑动条 -> 看到CONTROL_VIEW显示CORE_L4_CLKDIV -> 点击向上红色线条 -> 看到CONTROL_VIEW显示SYSCLK_DIV -> 拖动滑动条 -> 看到CONTROL_VIEW显示SYSCLK_DIV -> 因此上级为SYSCLK1 -> 向上拖动滑动条 -> 看到出现core_clk_gate1 -> CONTOL_VIEW显示状态为DISABLED -> 由于core_clk_gate1上级为绿色线 -> core_clk_gate1上级时钟已工作,不在追踪
因此可知时钟树如下:
GPIO1 <- #L4LS_GCLK <- GATE_L4LS_GCLK <- #CORE_100M_GCLK <- GATE_CORE_100M <- #CORE_100M <- CORE_L4_CLKDIV <- #SYSCLK_DIV <- SYSCLK_DIV <- #SYSCLK1 <- core_clk_gate1 <- #DPLL_CORE_M4 <- DPLL_CORE
b2.右侧时钟树
同理分析可知时钟树如下:
GPIO1 <- #GPIO_1_GDBCLK <- GATE_GPIO1_GBDCLK <- #CLK_32KHZ <- CLK_32KHZ
c.设置寄存器
c1.左侧时钟树
c1.1 设置core_clk_gate1打开
c1.2 设置GPIO1模块开启Enable_mode和SW_WKUP
c2.右侧时钟树
c2.1 设置GPIO1模块开启Enable GATE_GPIO1_GBDCLK
最后总结一下,最关键点为:
1.绿色-时钟在工作,红色-时钟未工作
2.逐层向上寻找时钟,直到找到状态为绿色节点