【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第四篇 嵌入式Linux系统移植篇-第七十一章内核基础配置

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT、4G模块、CAN、RS485等接口一应俱全。H264、VP8视频硬编码,H.264、H.265、VP8、VP9视频硬解码,并提供相关历程,支持8路PDM接口、5路SAI接口、2路Speaker。系统支持Android9.0(支持获取root限)Linux4.14.78+Qt5.10.1、Yocto、Ubuntu20、Debian9系统。适用于智能充电桩,物联网,工业控制,医疗,智能交通等,可用于任何通用工业和物联网应用、

【公众号】迅为电子

【粉丝群】258811263


第七十一章内核基础配置

71.1 电源管理配置

我们进入到内核源码文件夹,如下图所示:

然后修改/home/topeet/bsp_kernel_imx/bsp_kernel_imx/linux-imx/arch/arm64/boot/dts/freescale/itop8mm-evk.dts设备树文件,添加如下内容: 

 #if 0
pmic: bd71837@4b {........................};
/*add by apple*/
#else
	pmic: pca9450@25 {
		reg = <0x25>;
		compatible = "nxp,pca9450";
		/* PMIC PCA9450 PMIC_nINT GPIO1_IO3 */
		pinctrl-0 = <&pinctrl_pmic>;
		gpio_intr = <&gpio1 3 GPIO_ACTIVE_LOW>;

		gpo {
			nxp,drv = <0x0C>;       /* 0b0000_1100 all gpos with cmos output mode */
		};

		regulators {
			#address-cells = <1>;
			#size-cells = <0>;

			pca9450,pmic-buck2-uses-i2c-dvs;
                        /* Run/Standby voltage */
                        pca9450,pmic-buck2-dvs-voltage = <950000>, <850000>;

			buck1_reg: regulator@0 {
				reg = <0>;
				regulator-compatible = "buck1";
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <2187500>;
				regulator-boot-on;
				regulator-always-on;
				regulator-ramp-delay = <3125>;
			};

			buck2_reg: regulator@1 {
				reg = <1>;
				regulator-compatible = "buck2";
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <2187500>;
				regulator-boot-on;
				regulator-always-on;
				regulator-ramp-delay = <3125>;
			};

			buck3_reg: regulator@2 {
				reg = <2>;
				regulator-compatible = "buck3";
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <2187500>;
				regulator-boot-on;
				regulator-always-on;
			};

			buck4_reg: regulator@3 {
				reg = <3>;
				regulator-compatible = "buck4";
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <3400000>;
				regulator-boot-on;
				regulator-always-on;
			};

			buck5_reg: regulator@4 {
				reg = <4>;
				regulator-compatible = "buck5";
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <3400000>;
				regulator-boot-on;
				regulator-always-on;
			};

			buck6_reg: regulator@5 {
				reg = <5>;
				regulator-compatible = "buck6";
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <3400000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo1_reg: regulator@6 {
				reg = <6>;
				regulator-compatible = "ldo1";
				regulator-min-microvolt = <1600000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo2_reg: regulator@7 {
				reg = <7>;
				regulator-compatible = "ldo2";
				regulator-min-microvolt = <800000>;
				regulator-max-microvolt = <1150000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo3_reg: regulator@8 {
				reg = <8>;
				regulator-compatible = "ldo3";
				regulator-min-microvolt = <800000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo4_reg: regulator@9 {
				reg = <9>;
				regulator-compatible = "ldo4";
				regulator-min-microvolt = <800000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo5_reg: regulator@10 {
				reg = <10>;
				regulator-compatible = "ldo5";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
			};
		};
	};
#endif

电源管理 regulator 节点修改如下图所示,注释掉如下图所示框柱的部分。 

然后将网盘资料“iTOP-i.MX8MM开发板\02-i.MX8MM开发板网盘资料汇总(不含光盘内容)\嵌入式Linux开发指南(iTOP-i.MX8MM)手册配套资料\3.Linux系统移植\8.移植内核需要用到的文件\00 适配电源管理芯片需要使用的文件”目录下的pca9450.c文件拷贝到内核源码linux-imx/driver/mfd目录下。pca9450.h拷贝到源码linux-imx/include/linux/mfd目录下。

然后修改linux-imx/driver/mfd/Makefile文件,添加如下内容:

obj-$(CONFIG_MFD_PCA9450)       += pca9450.o

 

然后修改linux-imx/driver/mfd/Kconfig文件,如下图所示: 

config MFD_PCA9450
	bool "PCA9450 Power Management chip"
	depends on I2C=y
	select MFD_CORE
	help
	  if you say yes here you get support for the PCA9450
	  Power Management chips.

在上面小节配置完毕,保存修改,然后重新打开一个终端,输入以下命令,将默认的配置文件写入到.config文件。

make defconfig

然后输入以下命令进入menuconfig进行配置,如下所示:

export ARCH=arm64

make menuconfig

然后按如下图所示的路径,配置上屏幕,如下图所示:

Location:                                                             │  

  │     -> Device Drivers                                                   │  

  │       -> Multifunction device drivers

 

最后保存配置文件到arch/arm64/configs/defconfig文件,如下图所示:

 

然后再回到之前的终端窗口进行编译镜像。

71.2 基础配置

修改/home/topeet/bsp_kernel_imx/bsp_kernel_imx/linux-imx/arch/arm64/boot/dts/freescale/itop8mm-evk.dts设备树文件,将model的值改为“TOPEET i.MX8MM EVK board”

model = "TOPEET i.MX8MM EVK board";

 

经过上面的修改,如下图所示的值会变成自己设置的内容。 

71.3 配置底板按键

修改/home/topeet/bsp_kernel_imx/bsp_kernel_imx/linux-imx/arch/arm64/boot/dts/freescale/itop8mm-evk.dts设备树文件,在根目录下添加gpio-keys节点。

 

gpio-keys {
                compatible = "gpio-keys";
                autorepeat;
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_gpio_keys>;

                volumeup {
                        label = "GPIO Key VOLUMEUP";
                        linux,code = <115>;
                        gpios = <&gpio4 31 GPIO_ACTIVE_LOW>;
                };

                volumedown {
                        label = "GPIO Key VOLUMEDOWN";
                        linux,code = <114>;
                        gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
                };

                back {
                        label = "GPIO Key BACK";
                        linux,code = <172>;
                        gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
                };
        };

然后在&iomuxc中添加pinctrl信息,如下图所示: 

pinctrl_gpio_keys: gpio_keys {
			fsl,pins = <
				MX8MM_IOMUXC_SAI3_TXFS_GPIO4_IO31               0x19
				MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28               0x19
				MX8MM_IOMUXC_SAI3_MCLK_GPIO5_IO2                0x19
			>;
		};

71.4 串口配置

iTOP-iMX8MM开发板底板上默认有四个串口,在我们默认配置中,串口2作为A53核的调试打印,串口4是调试M4内核的串口,原理图如下图所示:

串口1 是普通串口,串口3用做了485,原理图如下图所示: 

 

修改/home/topeet/bsp_kernel_imx/bsp_kernel_imx/linux-imx/arch/arm64/boot/dts/freescale/itop8mm-evk.dts设备树文件,然后注释掉如下图所示内容: 

modem_reset: modem-reset {
		compatible = "gpio-reset";
		reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
		reset-delay-us = <2000>;
		reset-post-delay-ms = <40>;
		#reset-cells = <0>;
	};

Uart1串口注释掉如下内容

&uart1 { /* BT */
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart1>;
	assigned-clocks = <&clk IMX8MM_CLK_UART1_SRC>;
	assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
	/*fsl,uart-has-rtscts;
	resets = <&modem_reset>;*/
	status = "okay";
};

Uart3注释掉如下内容:

&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart3>;
	assigned-clocks = <&clk IMX8MM_CLK_UART3_SRC>;
	assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
	/*fsl,uart-has-rtscts;*/
	status = "okay";
};

接下来我们来配置pinctrl信息,如下图所示:

Uart1注释掉如下所示的内容:

Uart3 修改为如下图所示: 

然后保存修改,重新编译源码,然后烧写镜像,输入以下命令查看是否生成串口:

ls /dev/ttymx*

 

如上图所示,/dev/ttymxc0,/dev/ttymxc1,/dev/ttymxc2分别是串口1 串口2 串口3。 

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值