【NXP i.MX6ULL 使用】IMX6Y2C-512M-EMMC 设备树配置文档
文章目录
- i.MX6ULL核心模块配置详解
- CPU配置
- 内存配置
- 存储控制器配置
- eMMC控制器
- SD卡控制器
- 网络接口配置
- 串口配置
- 控制台串口
- RS485串口
- GPIO配置
- LED控制
- 按键配置
- 看门狗配置
i.MX6ULL核心模块配置详解
CPU配置
&cpu0 {
clock-frequency = <792000>; // 主频配置为792MHz
};
说明:
- 配置CPU运行频率为792MHz
- 这是一个比较均衡的频率选择,兼顾性能和功耗
内存配置
memory {
reg = <0x80000000 0x20000000>; // 512MB内存
};
reserved-memory {
linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x4000000>; // 64MB CMA
linux,cma-default;
};
};
说明:
系统内存
- 起始地址:0x80000000
大小:512MB
这是可用的物理内存空间 - CMA预留内存
大小:64MB
用途:DMA操作,如显示、摄像头等
特性:可重用,动态分配
存储控制器配置
eMMC控制器
&usdhc2 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc2_8bit>;
pinctrl-1 = <&pinctrl_usdhc2_8bit_100mhz>;
pinctrl-2 = <&pinctrl_usdhc2_8bit_200mhz>;
bus-width = <8>; // 8位数据线
non-removable; // 固定设备
status = "okay";
};
说明:
- 支持多种速度模式:默认、100MHz、200MHz
- 8位数据总线,提供更高传输性能
- 固定设备,无需卡检测
- 针对不同速度模式有专门的引脚配置
SD卡控制器
&usdhc1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc1>;
cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>; // 卡检测
wp-gpios = <&gpio1 18 GPIO_ACTIVE_HIGH>; // 写保护
keep-power-in-suspend; // 休眠保持供电
enable-sdio-wakeup; // 支持SDIO唤醒
status = "okay";
};
说明:
- 支持卡检测和写保护功能
- 支持低功耗模式
- 支持SDIO设备唤醒系统
网络接口配置
&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet1>;
phy-mode = "rmii"; // RMII模式
phy-reset-gpios = <&gpio5 3 0>; // PHY复位引脚
phy-handle = <ðphy0>; // PHY设备句柄
status = "okay";
};
&fec2 {
// ... 基本配置同fec1 ...
mdio {
#address-cells = <1>;
#size-cells = <0>;
ethphy0: ethernet-phy@1 {
compatible = "ethernet-phy-id2000.5ca0";
reg = <1>; // PHY地址
};
ethphy1: ethernet-phy@5 {
compatible = "ethernet-phy-id2000.5ca0";
reg = <5>; // PHY地址
};
};
};
说明:
- 双以太网接口,均采用RMII模式
- 每个接口都有独立的PHY和复位控制
- MDIO总线配置用于PHY通信
- PHY地址分别为1和5
串口配置
控制台串口
&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
status = "okay";
};
RS485串口
&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
txen-gpios =<&gpio5 7 0>; // RS485方向控制
dmas=<>; // 禁用DMA
dma-name="";
status = "okay";
};
说明:
- UART1作为系统控制台
- UART2-8支持RS485模式
- 移除DMA支持以提高稳定性
- 每个RS485接口都有独立的方向控制引脚
GPIO配置
LED控制
leds {
compatible = "gpio-leds";
green-led {
label = "led-run";
gpios = <&gpio4 16 1>;
linux,default-trigger = "heartbeat"; // 心跳模式
};
red-led {
label = "led-err";
gpios = <&gpio4 14 1>;
default-state = "keep"; // 保持状态
};
};
按键配置
gpio-keys {
compatible = "gpio-keys";
user-button {
label = "User button";
gpios = <&gpio3 1 GPIO_ACTIVE_LOW>; // 低电平触发
linux,code = <BTN_MISC>; // 按键编码
wakeup-source; // 支持唤醒
};
};
看门狗配置
watchdog: watchdog {
compatible = "cat82x-gpio-wdt";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_wdt>;
gpios = <&gpio5 0 0>; // 控制引脚
hw_margin_ms = <700>; // 超时时间
};
说明:
- 使用GPIO控制的硬件看门狗
- 700ms超时时间
- 超时后硬件复位系统