前言
在 Linux 内核(驱动)日趋完善的今天,加之原厂提供驱动的有力支持,嵌入式驱动工程师往往不需要付出多大的努力就能成功驱动一颗器件。
驱动由原厂提供,硬件由硬件工程师提供,驱动工程师在器件 bring up 阶段主要的工作内容就是配置设备树。
正确地配置引脚复用、引脚的电气属性、不缺漏、不与其它功能引脚冲突是器件 bring up 的关键。
Pins_Tool_for_i.MX_Processors
Pins_Tool_for_i.MX_Processors 是一个用于配置基于 NXP i.MX Cortex-A 和 Cortex-M 的处理器的工具,基于图形化界面来配置引脚的复用功能、电气属性,并生成设备树源码。软件界面如下,
上篇文章中 PHY 芯片的 DTS(pinctrl)引脚配置,是我们根据原理图和 IMX6ULL 数据手册一个一个配置的。如果使用 Pins_Tool_for_i.MX_Processors 工具就方便多了,我们可以对照原理图,一个一个引脚地在软件【封装[引脚底部]】界面将引脚功能点出来,甚至我们可以在【外设信号】界面 ENT2 接口中快速地选择出我们使用到的引脚,并且会在【代码预览】界面实时生成设备树源码,这样就可以简单、高效、正确地产生设备树代码。
下面就是通过图形界面(参考上图)产生的驱动 PHY 芯片所用到的引脚的设备树配置源码
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&BOARD_InitPins>;
imx6ull-board {
BOARD_InitPins: BOARD_InitPinsGrp { /*!< Function assigned for the core: Cortex-A7[ca7] */
fsl,pins = <
MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x000010B0
MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x000010B0
MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN 0x000010B0
MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER 0x000010B0
MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x000010B0
MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x000010B0
MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x000010B0
MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN 0x000010B0
MX6UL_PAD_GPIO1_IO06__ENET2_MDIO 0x000010B0
MX6UL_PAD_GPIO1_IO07__ENET2_MDC 0x000010B0
>;
};
};
};
和上篇文章中的设备树源码是完全一致的。
总结
刚打开 Pins_Tool_for_i.MX_Processors 软件时,映入眼帘的就是一颗完整的 SOC 底部引脚,和芯片实体一致。这样,操作这款软件,就像在盘这颗芯片,更直接,更带感、更接地气、更有动力。也可以帮助使用者更加彻底地了解芯片。
所以,希望 SOC 厂家都能向 NXP 这样,多制作一些辅助工具,帮助驱动工程师快速、无误地运用芯片。