一、目的
在上一篇《HPM6750系列--第十篇 时钟系统》我们仅粗略讲解了一下资源节点相关内容,本篇会从代码角度详解讲解一下资源节点的相关内容。
二、介绍
在系统电源域中,各种能够被开启或关闭的节点称为资源节点 (resource),包括各功能模块、功能时钟、子系统电源和复位、时钟源等,如下图所示:
上图是调试窗口查看SYSCTL外设resource寄存器组相关信息。
resource寄存器说明
资源节点的链式结构
下游资源节点依赖中游资源节点,中游资源节点又依赖上游资源节点,中上游资源节点可以根据下游资源节点的请求自动打开和关闭,也强制保持打开。
上图中ENET0和SDXC0都依赖CLK_TOP_AXI,如果ENET0关闭,CLK_TOP_AXI会收到关闭请求,但是因为SDXC0也依赖CLK_TOP_AXI,故CLK_TOP_AXI就保持打开,如果后续SDXC0也请求关闭,CLK_TOP_AXI才会关闭。这就是链式结构的自动开关机制。
功能模块与处理器的连接
中游和上游资源节点工作在自动模式时,会根据其下游节点的请求自动执行开启和关闭,而下游的功能模块资源节点工作在自动模式时,则能够根据处理器的状态执行开启和关闭。
SYSCTL 供两个连接组 (link group 0/1) 用来将功能模块与处理器连接起来,通常 CPU0 使用 group0,CPU1使用 group1。
上图中如果设置ENET0、SDXC0工作在自动模式,那么当CPU0进入等待或者休眠状态时,ENET0也会自动进行休眠状态,SDXC0只有CPU0/1都进入等待或者休眠状态才会进入休眠。
三、实战
cd ~/workspace/work/hpm/hello_world
code .
上图中将各个外设时钟添加到资源组0,然后资源组0和CPU0绑定
上图中将clock_uart0添加到资源组0中。
以上就是HPM6750资源节点基本内容,涉及到资源节点定义、链式结构、自动开关、CPU绑定。