Linux第48步_编译正点原子的出厂Linux内核源码

编译正点原子的出厂 Linux 内核源码,为后面移植linux做准备。研究对象如下:

1)、linux内核镜像文件“uImage

路径为“arch/arm/boot”;

2)、设备树文件“stm32mp157d-atk.dtb

路径为“arch/arm/boot/dts

3)、默认配置文件“stm32mp1_atk_defconfig

路径为“arch/arm/configs

1、创建“alientek_linux”目录,用来存放正点原子的linux源码

打开终端

输入“ls回车

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“cd atk-mp1/回车” ,切换到“atk-mp1”目录

输入“ls回车”,列出“atk-mp1”目录下的文件和文件夹

输入“mkdir linux/回车”,在“/linux/atk-mp1/”目录下创建“linux”目录;

输入“cd linux/回车” ,切换到“linux”目录

输入“mkdir alientek_linux/回车”,在“/linux/atk-mp1/linux”目录下创建“alientek_linux”目录;

输入“ls回车”,列出“/linux/atk-mp1/linux”目录下的文件和文件夹

2将“linux-5.4.31-gca8f6cddb-v1.7.tar.bz2”压缩包,使用FileZilla把它拷贝到“/linux/atk-mp1/linux/alientek_linux”目录下。该文件位于“01、程序源码\01、正点原子Linux出厂系统源码”目录中。

3、输入“cd alientek_linux/回车,切换到“alientek_linux”目录

输入“ls回车”,列出“alientek_linux”目录下的文件和文件夹

输入“tar -vxjf linux-5.4.31-gca8f6cddb-v1.7.tar.bz2回车”,解压

4输入“ls回车”,列出“alientek_linux”目录下的文件和文件夹

输入“rm linux-5.4.31-gca8f6cddb-v1.7.tar.bz2回车”,删除压缩包

5、创建脚本文件“stm32mp157d_atk.sh”

输入“vi stm32mp157d_atk.sh回车”,新建一个脚本文件“stm32mp157d_atk.sh”

如果在第1次编译时,脚本文件如下:

#!/bin/sh

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- distclean

#清除工程,删除“.config”文件,执行1次即可,以后就不要再执行了。

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- stm32mp1_atk_defconfig

#设置为默认配置,执行1次即可,以后就不需要执行该语句了。

#“stm32mp1_atk_defconfig”位于“arch/arm/configs”目录下;

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- menuconfig

#打开图形化配置界面

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- uImage dtbs LOADADDR=0XC2000040 -j8

#编译镜像文件和设备树,linux内核在DDR中的加载地址为0XC2000040,-j8表示采用8线程编译

6、按“ESC键”,输入“:wq回车”,保存文件

输入“chmod 777 stm32mp157d_atk.sh回车”,给脚本文件赋予可执行权限

7、输入“./stm32mp157d_atk.sh回车”,执行编译;

编译完成后,文件如下:

注意:

为什么uboot里面的uImage的地址是0xC2000000,编译linux的时候,指定的的LOADADDR是0xC2000040?

因为linux的uImage最前面的Ox40个字节是头部信息。

编译得到“arch/arm/boot/uImage”

设备树:“arch/arm/boot/dts/stm32mp157d-atk.dtb”

stm32mp1_atk_defconfig”位于“arch/arm/configs”目录下;

8、查询是否生成了uImage文件

输入“ls回车

输入“cd arch/回车

输入“ls回车

输入“cd arm/回车

输入“ls回车

输入“cd boot/回车

输入“ls回车

9、查询是否生成了“stm32mp157d-atk.dtb”文件

输入“cd dts/回车

输入“ls stm32mp157*回车

10、将“stm32mp157d-atk.dtb”拷贝到“/home/zgq/linux/tftpboot/”目录下

打开第2个终端,查看tftpboot是不是存在

输入“ls回车

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“cd tftpboot/回车”,切换到“tftpboot”目录

输入“ls回车”,列出“tftpboot”目录下的文件和文件夹

11、回到第1个打开的终端,输入“cp stm32mp157d-atk.dtb /home/zgq/linux/tftpboot/ -f回车”,执行文件拷贝;

12、输入“cd ..回车”,回到“boot”目录下

输入“ls回车”,列出“boot”目录下的文件和文件夹

输入“cp uImage /home/zgq/linux/tftpboot/ -f回车”,执行文件拷贝;

13、回到第2个打开的终端,输入“ls -l回车

原有的“文件”被替换了。

按复位键,启动。

注意:将开发板通过网线连接到路由器,同时开启虚拟机。

14、使用VSCode创建工程

1)、点击虚拟机上的VSCode,然后点击“文件”,点击“打开文件夹”,选择“alientek_linux”

2)、点击“确定”

3)、点击“文件”,点击“将工作区另存为...”,在名称右边的文本框里输入“alientek_linux”,见下图:

4)、点击“保存”,得到下图:

5)、linux设备树头文件stm32mp157d-atk.dtsi源码,将来移植linux可以参考使用,见下图:

linux设备树头文件stm32mp157d-atk.dtsi源码如下:

// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/** Copyright (C) STMicroelectronics 2019 - All Rights Reserved* Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.*/#include "stm32mp157-m4-srm.dtsi"
#include "stm32mp157-m4-srm-pinctrl.dtsi"
#include <dt-bindings/mfd/st,stpmic1.h>
#include <dt-bindings/usb/pd.h>/ {memory@c0000000 {device_type = "memory";reg = <0xc0000000 0x40000000>;};reserved-memory {#address-cells = <1>;#size-cells = <1>;ranges;mcuram2: mcuram2@10000000 {compatible = "shared-dma-pool";reg = <0x10000000 0x40000>;no-map;};vdev0vring0: vdev0vring0@10040000 {compatible = "shared-dma-pool";reg = <0x10040000 0x1000>;no-map;};vdev0vring1: vdev0vring1@10041000 {compatible = "shared-dma-pool";reg = <0x10041000 0x1000>;no-map;};vdev0buffer: vdev0buffer@10042000 {compatible = "shared-dma-pool";reg = <0x10042000 0x4000>;no-map;};mcuram: mcuram@30000000 {compatible = "shared-dma-pool";reg = <0x30000000 0x40000>;no-map;};retram: retram@38000000 {compatible = "shared-dma-pool";reg = <0x38000000 0x10000>;no-map;};};clocks {clk_ext_camera: clk-ext-camera {#clock-cells = <0>;compatible = "fixed-clock";clock-frequency = <24000000>;};};dht11 {compatible = "alientek,dht11";dht11-gpio = <&gpiof 2 GPIO_ACTIVE_LOW>;status = "okay";};ds18b20 {compatible = "alientek,ds18b20";ds18b20-gpio = <&gpiof 2 GPIO_ACTIVE_LOW>;status = "okay";};gpio-keys {compatible = "gpio-keys";autorepeat;key0 {label = "USER-KEY0";linux,code = <114>;gpios = <&gpiog 3 GPIO_ACTIVE_LOW>;gpio-key,wakeup;};key1 {label = "USER-KEY1";linux,code = <115>;gpios = <&gpioh 7 GPIO_ACTIVE_LOW>;gpio-key,wakeup;};};lcd_id {select_id = <0>;};leds {compatible = "gpio-leds";led1 {label = "sys-led";gpios = <&gpioi 0 GPIO_ACTIVE_LOW>;linux,default-trigger = "heartbeat";default-state = "on";status = "okay";};led2 {label = "user-led";gpios = <&gpiof 3 GPIO_ACTIVE_LOW>;linux,default-trigger = "none";default-state = "on";status = "okay";};beep {label = "beep";gpios = <&gpioc 7 GPIO_ACTIVE_LOW>;default-state = "off";};};panel_backlight: panel-backlight {compatible = "pwm-backlight";pwms = <&pwm4 1 5000000>;brightness-levels = <0 4 8 16 32 64 128 255>;power-supply = <&v3v3>;default-brightness-level = <7>;status = "okay";};usb_phy_tuning: usb-phy-tuning {st,hs-dc-level = <2>;st,fs-rftime-tuning;st,hs-rftime-reduction;st,hs-current-trim = <15>;st,hs-impedance-trim = <1>;st,squelch-level = <3>;st,hs-rx-offset = <2>;st,no-lsfs-sc;};v3v3: regulator-3p3v {compatible = "regulator-fixed";regulator-name = "v3v3";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-always-on;regulator-boot-on;};vddcore: buck1 {compatible = "regulator-fixed";regulator-name = "vddcore";regulator-min-microvolt = <1200000>;regulator-max-microvolt = <1350000>;regulator-always-on;regulator-boot-on;};vdd_usb: regulator-vdd-usb {compatible = "regulator-fixed";regulator-name = "vdd_usb";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-always-on;regulator-boot-on;};vdd: regulator-vdd {compatible = "regulator-fixed";regulator-name = "vdd";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-always-on;regulator-boot-on;};vdda: ldo1 {compatible = "regulator-fixed";regulator-name = "vdda";regulator-min-microvolt = <2900000>;regulator-max-microvolt = <2900000>;regulator-always-on;regulator-boot-on;};v1v8_audio: regulator-v1v8-audio {compatible = "regulator-fixed";regulator-name = "v1v8_audio";regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-always-on;regulator-boot-on;};v2v8: regulator-v2v8 {compatible = "regulator-fixed";regulator-name = "v2v8";regulator-min-microvolt = <2800000>;regulator-max-microvolt = <2800000>;regulator-always-on;regulator-over-current-protection;};vin: regulator-vin {compatible = "regulator-fixed";regulator-name = "vin";regulator-min-microvolt = <5000000>;regulator-max-microvolt = <5000000>;regulator-always-on;regulator-boot-on;};v3v3_hdmi: regulator-v3v3-hdmi {compatible = "regulator-fixed";regulator-name = "v3v3_hdmi";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-always-on;regulator-boot-on;};v1v2_hdmi: regulator-v1v2-hdmi {compatible = "regulator-fixed";regulator-name = "v1v2_hdmi";regulator-min-microvolt = <1200000>;regulator-max-microvolt = <1200000>;regulator-always-on;regulator-boot-on;};spdif_out: spdif-out { #sound-dai-cells = <0>;compatible = "linux,spdif-dit";status = "okay";spdif_out_port: port {spdif_out_endpoint: endpoint {remote-endpoint = <&sai4a_endpoint>;};};};spdif_in: spdif-in { #sound-dai-cells = <0>;compatible = "linux,spdif-dir";status = "okay";spdif_in_port: port {spdif_in_endpoint: endpoint {remote-endpoint = <&spdifrx_endpoint>;};};};#if 1sound: sound {compatible = "audio-graph-card";label = "STM32MP1-DK";routing ="Playback" , "MCLK","Capture" , "MCLK","MICL" , "Mic Bias";dais = <&sai2a_port &sai2b_port &i2s2_port &spdifrx_port>;status = "okay";};
#elsesound: sound {compatible = "audio-graph-card";label = "STM32MP1-DK";widgets ="Microphone", "Mic Jack","Line", "Line In","Line", "Line Out","Speaker", "Speaker","Headphone", "Headphone Jack";routing ="Headphone Jack", "HP_L","Headphone Jack", "HP_R","Speaker", "SPK_LP","Speaker", "SPK_LN","Speaker", "SPK_RP","Speaker", "SPK_RN","LINPUT1", "Mic Jack","LINPUT3", "Mic Jack","RINPUT1", "Mic Jack","RINPUT2", "Mic Jack";dais = <&sai2a_port &sai2b_port  &sai4a_port &spdifrx_port &i2s2_port>;status = "okay";};
#endif
};&pinctrl {dac_ch1_pins_a: dac-ch1 {pins {pinmux = <STM32_PINMUX('A', 4, ANALOG)>; /* configure 'PA4' as ANALOG */};};adc1_in6_pins_b: adc1-in6 {pins {pinmux = <STM32_PINMUX('A', 5, ANALOG)>;};};dcmi_pins_b: dcmi-1 {pins {pinmux = <STM32_PINMUX('H', 8,  AF13)>,/* DCMI_HSYNC */<STM32_PINMUX('B', 7,  AF13)>,/* DCMI_VSYNC */<STM32_PINMUX('A', 6,  AF13)>,/* DCMI_PIXCLK */<STM32_PINMUX('H', 9,  AF13)>,/* DCMI_D0 */<STM32_PINMUX('H', 10, AF13)>,/* DCMI_D1 */<STM32_PINMUX('H', 11, AF13)>,/* DCMI_D2 */<STM32_PINMUX('H', 12, AF13)>,/* DCMI_D3 */<STM32_PINMUX('H', 14, AF13)>,/* DCMI_D4 */<STM32_PINMUX('I', 4,  AF13)>,/* DCMI_D5 */<STM32_PINMUX('B', 8,  AF13)>,/* DCMI_D6 */<STM32_PINMUX('E', 6,  AF13)>;/* DCMI_D7 */bias-disable;};};dcmi_sleep_pins_b: dcmi-sleep-1 {pins {pinmux = <STM32_PINMUX('H', 8,  ANALOG)>,/* DCMI_HSYNC */<STM32_PINMUX('B', 7,  ANALOG)>,/* DCMI_VSYNC */<STM32_PINMUX('A', 6,  ANALOG)>,/* DCMI_PIXCLK */<STM32_PINMUX('H', 9,  ANALOG)>,/* DCMI_D0 */<STM32_PINMUX('H', 10, ANALOG)>,/* DCMI_D1 */<STM32_PINMUX('H', 11, ANALOG)>,/* DCMI_D2 */<STM32_PINMUX('H', 12, ANALOG)>,/* DCMI_D3 */<STM32_PINMUX('H', 14, ANALOG)>,/* DCMI_D4 */<STM32_PINMUX('I', 4,  ANALOG)>,/* DCMI_D5 */<STM32_PINMUX('B', 8,  ANALOG)>,/* DCMI_D6 */<STM32_PINMUX('E', 6,  ANALOG)>;/* DCMI_D7 */};};stusb1600_pins_b: stusb1600-0 {pins {pinmux = <STM32_PINMUX('G', 2, ANALOG)>;bias-pull-up;};};uart7_pins_b: uart7-1 {pins1 {pinmux = <STM32_PINMUX('F', 7, AF7)>, /* UART7_TX */<STM32_PINMUX('F', 8, AF7)>; /* UART7_RTS */bias-disable;drive-push-pull;slew-rate = <0>;};pins2 {pinmux = <STM32_PINMUX('F', 6, AF7)>, /* UART7_RX */<STM32_PINMUX('F', 9, AF7)>; /* UART7_CTS_NSS */bias-disable;};};uart7_idle_pins_b: uart7-idle-1 {pins1 {pinmux = <STM32_PINMUX('F', 7, ANALOG)>, /* UART7_TX */<STM32_PINMUX('F', 8, ANALOG)>, /* UART7_RTS */<STM32_PINMUX('F', 9, ANALOG)>; /* UART7_CTS_NSS */};pins2 {pinmux = <STM32_PINMUX('F', 6, AF7)>; /* UART7_RX */bias-disable;};};uart7_sleep_pins_b: uart7-sleep-1 {pins {pinmux = <STM32_PINMUX('F', 7, ANALOG)>, /* UART7_TX */<STM32_PINMUX('F', 8, ANALOG)>, /* UART7_RTS */<STM32_PINMUX('F', 6, ANALOG)>, /* UART7_RX */<STM32_PINMUX('F', 9, ANALOG)>; /* UART7_CTS_NSS */};};usart3_pins_c: uart3-0 {pins1 {pinmux = <STM32_PINMUX('D', 8, AF7)>; /* UART5_TX */bias-disable;drive-push-pull;slew-rate = <0>;};pins2 {pinmux = <STM32_PINMUX('D', 9, AF7)>; /* UART5_RX */bias-disable;};};usart3_idle_pins_c: uart3-idle-0 {pins1 {pinmux = <STM32_PINMUX('D', 8, ANALOG)>; /* UART5_TX */};pins2 {pinmux = <STM32_PINMUX('D', 9, AF7)>; /* UART5_RX */bias-disable;};};usart3_sleep_pins_c: uart3-sleep-0 {pins {pinmux = <STM32_PINMUX('D', 8, ANALOG)>, /* UART5_TX */<STM32_PINMUX('D', 9, ANALOG)>; /* UART5_RX */};};uart5_pins_a: uart5-0 {pins1 {pinmux = <STM32_PINMUX('B', 13, AF14)>; /* UART5_TX */bias-disable;drive-push-pull;slew-rate = <0>;};pins2 {pinmux = <STM32_PINMUX('B', 12, AF14)>; /* UART5_RX */bias-disable;};};uart5_idle_pins_a: uart5-idle-0 {pins1 {pinmux = <STM32_PINMUX('B', 13, ANALOG)>; /* UART5_TX */};pins2 {pinmux = <STM32_PINMUX('B', 12, AF14)>; /* UART5_RX */bias-disable;};};uart5_sleep_pins_a: uart5-sleep-0 {pins {pinmux = <STM32_PINMUX('B', 13, ANALOG)>, /* UART5_TX */<STM32_PINMUX('B', 12, ANALOG)>; /* UART5_RX */};};i2s2_pins_b: i2s2-2 {pins {pinmux = <STM32_PINMUX('C', 3, AF5)>, /* I2S2_SDO */<STM32_PINMUX('B', 9, AF5)>, /* I2S2_WS */<STM32_PINMUX('B', 10, AF5)>; /* I2S2_CK */slew-rate = <1>;drive-push-pull;bias-disable;};};i2s2_pins_sleep_b: i2s2-3 {pins {pinmux = <STM32_PINMUX('C', 3, ANALOG)>, /* I2S2_SDO */<STM32_PINMUX('B', 9, ANALOG)>, /* I2S2_WS */<STM32_PINMUX('B', 10, ANALOG)>; /* I2S2_CK */};};
};&adc {/* ADC1 & ADC2 common resources */pinctrl-names = "default";pinctrl-0 = <&adc1_in6_pins_b>;vdd-supply = <&vdd>;vdda-supply = <&vdd>;vref-supply = <&vdd>;status = "okay";adc1: adc@0 {/* private resources for ADC1 */st,adc-channels = <19>;st,min-sample-time-nsecs = <10000>;status = "okay";};
};&m_can1 {pinctrl-names = "default", "sleep";pinctrl-0 = <&m_can1_pins_a>;pinctrl-1 = <&m_can1_sleep_pins_a>;status = "okay";
};&cec {pinctrl-names = "default", "sleep";pinctrl-0 = <&cec_pins_b>;pinctrl-1 = <&cec_pins_sleep_b>;status = "okay";
};&crc1 {status = "okay";
};&dac {pinctrl-names = "default";pinctrl-0 = <&dac_ch1_pins_a>;                   /* Use PA4 and PA5 pin as ANALOG */vref-supply = <&v3v3>;                           /* Example to use VREFBUF (It needs to be enabled as well) */status = "okay";                                 /* Enable the DAC block */dac1: dac@1 {status = "okay";                             /* Enable DAC1 */};
};&dcmi {status = "okay";pinctrl-names = "default", "sleep";pinctrl-0 = <&dcmi_pins_b>;pinctrl-1 = <&dcmi_sleep_pins_b>;port {dcmi_0: endpoint {remote-endpoint = <&ov5640_0>;bus-width = <8>;hsync-active = <0>;vsync-active = <0>;pclk-sample = <1>;pclk-max-frequency = <77000000>;};};
};&dma1 {sram = <&dma_pool>;
};&dma2 {sram = <&dma_pool>;
};&dts {status = "okay";
};&ethernet0 {status = "okay";pinctrl-0 = <&ethernet0_rgmii_pins_a>;pinctrl-1 = <&ethernet0_rgmii_pins_sleep_a>;pinctrl-names = "default", "sleep";phy-mode = "rgmii-id";max-speed = <1000>;phy-handle = <&phy0>;mdio0 {#address-cells = <1>;#size-cells = <0>;compatible = "snps,dwmac-mdio";phy0: ethernet-phy@0 {reg = <0>;};};
};&gpu {contiguous-area = <&gpu_reserved>;status = "okay";
};&hash1 {status = "okay";
};&ipcc {status = "okay";
};&i2c1 {pinctrl-names = "default", "sleep";pinctrl-0 = <&i2c1_pins_b>;pinctrl-1 = <&i2c1_pins_sleep_b>;i2c-scl-rising-time-ns = <100>;i2c-scl-falling-time-ns = <7>;status = "okay";/delete-property/dmas;/delete-property/dma-names;stusb1600@28 {compatible = "st,stusb1600";reg = <0x28>;interrupts = <2 IRQ_TYPE_EDGE_FALLING>;interrupt-parent = <&gpiog>;pinctrl-names = "default";pinctrl-0 = <&stusb1600_pins_b>;status = "okay";vdd-supply = <&vin>;connector {compatible = "usb-c-connector";label = "USB-C";power-role = "dual";power-opmode = "default";port {con_usbotg_hs_ep: endpoint {remote-endpoint = <&usbotg_hs_ep>;};};};};typec: fusb302@22 {compatible = "fcs,fusb302","fairchild,fusb302";reg = <0x22>;pinctrl-names = "default";pinctrl-0 = <&stusb1600_pins_b>;int-n-gpios = <&gpiog 2 GPIO_ACTIVE_HIGH>;vbus-5v-gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>;status = "okay";connector {compatible = "usb-c-connector";label = "USB-C";power-role = "dual";power-opmode = "default";try-power-role = "sink";source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)PDO_VAR(3000, 12000, 3000)PDO_PPS_APDO(3000, 11000, 3000)>;op-sink-microwatt = <10000000>;};};
};&i2c2 {pinctrl-names = "default", "sleep";pinctrl-0 = <&i2c2_pins_a>;pinctrl-1 = <&i2c2_pins_sleep_a>;i2c-scl-rising-time-ns = <185>;i2c-scl-falling-time-ns = <20>;status = "okay";/delete-property/dmas;/delete-property/dma-names;hdmi: hdmi-transmitter@39 {compatible = "sil,sii9022";reg = <0x39>;iovcc-supply = <&v3v3_hdmi>;cvcc12-supply = <&v1v2_hdmi>;reset-gpios = <&gpioa 3 GPIO_ACTIVE_LOW>;interrupts = <6 IRQ_TYPE_EDGE_FALLING>;interrupt-parent = <&gpioh>;#sound-dai-cells = <1>;status = "okay";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;sii9022_in: endpoint {remote-endpoint = <&ltdc_ep0_out>;};};port@3 {reg = <3>;sii9022_tx_endpoint: endpoint {remote-endpoint = <&i2s2_endpoint>;};};};};
};&i2c4 {pinctrl-names = "default", "sleep";pinctrl-0 = <&i2c4_pins_a>;pinctrl-1 = <&i2c4_pins_sleep_a>;i2c-scl-rising-time-ns = <185>;i2c-scl-falling-time-ns = <20>;status = "okay";/delete-property/dmas;/delete-property/dma-names;pcf8563@51{compatible = "nxp,pcf8563";irq_gpio = <&gpioi 3 IRQ_TYPE_EDGE_FALLING>;reg = <0x51>;};
#if 0wm8960: wm8960@1a {compatible = "wlf,wm8960";reg = <0x1a>;#sound-dai-cells = <0>;status = "okay";//wlf,shared-lrclk;wlf,capless;clocks = <&sai2a>;clock-names = "MCLK1";ports {#address-cells = <1>;#size-cells = <0>;wm8960_tx_port: port@0 {reg = <0>;wm8960_tx_endpoint: endpoint {remote-endpoint = <&sai2a_endpoint>;};};wm8960_rx_port: port@1 {reg = <1>;wm8960_rx_endpoint: endpoint {remote-endpoint = <&sai2b_endpoint>;};};};};
#elsecs42l51: cs42l51@4a {compatible = "cirrus,cs42l51";reg = <0x4a>;#sound-dai-cells = <0>;VL-supply = <&v3v3>;VD-supply = <&v1v8_audio>;VA-supply = <&v1v8_audio>;VAHP-supply = <&v1v8_audio>;reset-gpios = <&gpioz 7 GPIO_ACTIVE_LOW>;clocks = <&sai2a>;clock-names = "MCLK";status = "okay";cs42l51_port: port {#address-cells = <1>;#size-cells = <0>;cs42l51_tx_endpoint: endpoint@0 {reg = <0>;remote-endpoint = <&sai2a_endpoint>;frame-master;bitclock-master;};cs42l51_rx_endpoint: endpoint@1 {reg = <1>;remote-endpoint = <&sai2b_endpoint>;frame-master;bitclock-master;};};};
#endif
};&i2c5 {pinctrl-names = "default", "sleep";pinctrl-0 = <&i2c5_pins_a>;pinctrl-1 = <&i2c5_pins_sleep_a>;i2c-scl-rising-time-ns = <100>;i2c-scl-falling-time-ns = <7>;status = "okay";/delete-property/dmas;/delete-property/dma-names;ap3216c@1e {compatible = "LiteOn,ap3216c";reg = <0x1e>;};ov5640: camera@3c {compatible = "ovti,ov5640";reg = <0x3c>;clocks = <&clk_ext_camera>;clock-names = "xclk";DOVDD-supply = <&v2v8>;powerdown-gpios = <&gpioe 11 (GPIO_ACTIVE_HIGH | GPIO_PUSH_PULL)>;reset-gpios = <&gpioe 1 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;rotation = <180>;status = "okay";port {ov5640_0: endpoint {remote-endpoint = <&dcmi_0>;bus-width = <8>;data-shift = <2>;hsync-active = <0>;vsync-active = <0>;pclk-sample = <1>;pclk-max-frequency = <77000000>;};};};
};&i2s2 {clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>;clock-names = "pclk", "i2sclk", "x8k", "x11k";pinctrl-names = "default", "sleep";pinctrl-0 = <&i2s2_pins_a>;pinctrl-1 = <&i2s2_pins_sleep_a>;status = "okay";i2s2_port: port {i2s2_endpoint: endpoint {remote-endpoint = <&sii9022_tx_endpoint>;format = "i2s";mclk-fs = <256>;};};
};&iwdg2 {timeout-sec = <32>;status = "okay";
};&ltdc {pinctrl-names = "default", "sleep";pinctrl-0 = <&ltdc_pins_b>;pinctrl-1 = <&ltdc_pins_sleep_b>;status = "okay";port {#address-cells = <1>;#size-cells = <0>;ltdc_ep0_out: endpoint@0 {reg = <0>;remote-endpoint = <&sii9022_in>;};};
};&m4_rproc {memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,<&vdev0vring1>, <&vdev0buffer>;mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;mbox-names = "vq0", "vq1", "shutdown";interrupt-parent = <&exti>;interrupts = <68 1>;wakeup-source;status = "okay";
};&rng1 {status = "okay";
};&sai2 {clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>;clock-names = "pclk", "x8k", "x11k";pinctrl-names = "default", "sleep";pinctrl-0 = <&sai2a_pins_a>, <&sai2b_pins_b>;pinctrl-1 = <&sai2a_sleep_pins_a>, <&sai2b_sleep_pins_b>;status = "okay";sai2a: audio-controller@4400b004 {#clock-cells = <0>;dma-names = "tx";clocks = <&rcc SAI2_K>;clock-names = "sai_ck";status = "okay";sai2a_port: port {sai2a_endpoint: endpoint {remote-endpoint = <&cs42l51_tx_endpoint>;format = "i2s";mclk-fs = <256>; dai-tdm-slot-num = <2>;dai-tdm-slot-width = <32>;};};};sai2b: audio-controller@4400b024 {dma-names = "rx";st,sync = <&sai2a 2>;clocks = <&rcc SAI2_K>, <&sai2a>;clock-names = "sai_ck", "MCLK";status = "okay";sai2b_port: port {sai2b_endpoint: endpoint {remote-endpoint = <&cs42l51_rx_endpoint>;format = "i2s";mclk-fs = <256>;dai-tdm-slot-num = <2>;dai-tdm-slot-width = <32>;};};};
};&sai4 {clocks = <&rcc SAI4>, <&rcc PLL3_Q>, <&rcc PLL3_R>;clock-names = "pclk", "x8k", "x11k";status = "okay";sai4a: audio-controller@50027004 {pinctrl-names = "default", "sleep";pinctrl-0 = <&sai4a_pins_a>;pinctrl-1 = <&sai4a_sleep_pins_a>;dma-names = "tx";clocks = <&rcc SAI4_K>;clock-names = "sai_ck";st,iec60958;status = "okay";sai4a_port: port {sai4a_endpoint: endpoint {remote-endpoint = <&spdif_out_endpoint>;};};};
};&sdmmc1 {pinctrl-names = "default", "opendrain", "sleep";pinctrl-0 = <&sdmmc1_b4_pins_a>;pinctrl-1 = <&sdmmc1_b4_od_pins_a>;pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;broken-cd;st,neg-edge;bus-width = <4>;vmmc-supply = <&v3v3>;status = "okay";
};&sdmmc2 {pinctrl-names = "default", "opendrain", "sleep";pinctrl-0 = <&sdmmc2_b4_pins_a>;pinctrl-1 = <&sdmmc2_b4_od_pins_a>;pinctrl-2 = <&sdmmc2_b4_sleep_pins_a>;non-removable;st,neg-edge;bus-width = <8>;vmmc-supply = <&v3v3>;keep-power-in-suspend;status = "okay";
};&sdmmc3 {arm,primecell-periphid = <0x10153180>;pinctrl-names = "default", "opendrain", "sleep";pinctrl-0 = <&sdmmc3_b4_pins_a>;pinctrl-1 = <&sdmmc3_b4_od_pins_a>;pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>;non-removable;st,neg-edge;bus-width = <4>;vmmc-supply = <&v3v3>;status = "okay";keep-power-in-suspend;
};&spdifrx {pinctrl-names = "default", "sleep";pinctrl-0 = <&spdifrx_pins_a>;pinctrl-1 = <&spdifrx_pins_a>;status = "okay";spdifrx_port: port {spdifrx_endpoint: endpoint {remote-endpoint = <&spdif_in_endpoint>;};};
};&sram {dma_pool: dma_pool@0 {reg = <0x50000 0x10000>;pool;};
};&spi1 {pinctrl-names = "default", "sleep";pinctrl-0 = <&spi1_pins_a>;pinctrl-1 = <&spi1_sleep_pins_a>;cs-gpios = <&gpioz 3 GPIO_ACTIVE_LOW>;status = "okay";spidev: icm20608@0 {compatible = "alientek,icm20608";reg = <0>; /* CS #0 */spi-max-frequency = <8000000>;};
};&timers4 {status = "okay";/* spare dmas for other usage *//delete-property/dmas;/delete-property/dma-names;pwm4: pwm {pinctrl-0 = <&pwm4_pins_b>;pinctrl-1 = <&pwm4_sleep_pins_b>;pinctrl-names = "default", "sleep";#pwm-cells = <2>;status = "okay";};
};&usart3 {pinctrl-names = "default", "sleep", "idle";pinctrl-0 = <&usart3_pins_c>;pinctrl-1 = <&usart3_sleep_pins_c>;pinctrl-2 = <&usart3_idle_pins_c>;/delete-property/dmas;/delete-property/dma-names;status = "okay";
};&uart4 {pinctrl-names = "default", "sleep", "idle", "no_console_suspend";pinctrl-0 = <&uart4_pins_a>;pinctrl-1 = <&uart4_sleep_pins_a>;pinctrl-2 = <&uart4_idle_pins_a>;pinctrl-3 = <&uart4_pins_a>;/delete-property/dmas;/delete-property/dma-names;status = "okay";
};&uart5 {pinctrl-names = "default", "sleep", "idle";pinctrl-0 = <&uart5_pins_a>;pinctrl-1 = <&uart5_sleep_pins_a>;pinctrl-2 = <&uart5_idle_pins_a>;/delete-property/dmas;/delete-property/dma-names;status = "okay";
};&uart7 {pinctrl-names = "default", "sleep", "idle";pinctrl-0 = <&uart7_pins_b>;pinctrl-1 = <&uart7_sleep_pins_b>;pinctrl-2 = <&uart7_idle_pins_b>;/delete-property/dmas;/delete-property/dma-names;st,hw-flow-ctrl;status = "okay";
};&usbh_ehci {phys = <&usbphyc_port0>;status = "okay";
};&usbotg_hs {phys = <&usbphyc_port1 0>;phy-names = "usb2-phy";usb-role-switch;status = "okay";port {usbotg_hs_ep: endpoint {remote-endpoint = <&con_usbotg_hs_ep>;};};
};&usbphyc {status = "okay";
};&usbphyc_port0 {phy-supply = <&vdd_usb>;st,phy-tuning = <&usb_phy_tuning>;
};&usbphyc_port1 {phy-supply = <&vdd_usb>;st,phy-tuning = <&usb_phy_tuning>;
};

至此,编译正点原子的出厂Linux内核源码完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/257577.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3D高斯溅射:面向三维场景的实时渲染技术

1. 前言 高斯溅射技术【1】一经推出&#xff0c;立刻引起学术界和工业界的广泛关注。相比传统的隐式神经散射场渲染技术&#xff0c;高斯溅射依托椭球空间&#xff0c;显性地表示多目图像的三维空间关系&#xff0c;其计算效率和综合性能均有较大的提升&#xff0c;且更容易理…

【AI视野·今日NLP 自然语言处理论文速览 第七十八期】Wed, 17 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 17 Jan 2024 (showing first 100 of 163 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Deductive Closure Training of Language Models for Coherence, Accur…

VueCLI核心知识3:全局事件总线、消息订阅与发布

这两种方式都可以实现任意两个组件之间的通信 1 全局事件总线 1.安装全局事件总线 import Vue from vue import App from ./App.vueVue.config.productionTip false/* 1.第一种写法 */ // const Demo Vue.extend({}) // const d new Demo()// Vue.prototype.x d // 把Dem…

XML学习

XML学习 1 XML介绍2 XML语法3 XML特殊字符4 XML文档结构5 XML命名空间 1 XML介绍 XML是可扩展的标记性语言&#xff0c;常用来传输和存储数据。可见于Web中的web.xml和Maven中的pom.xml version是版本&#xff0c;encoding是编码 <?xml version"1.0" encodin…

IMX6ULL移植U-Boot 2022.04

目录 目录 1.编译环境以及uboot版本 2.默认编译测试 3.uboot中新增自己的开发板 3.编译测试 4.烧录测试 5.patch文件 1.编译环境以及uboot版本 宿主机Debian12u-boot版本lf_v2022.04 ; git 连接GitHub - nxp-imx/uboot-imx: i.MX U-Boot交叉编译工具gcc-arm-10.3-2021.0…

【PyQt】08 - 编辑Tab顺序

文章目录 前言一、Tab顺序二、编辑Tab顺序总结 前言 介绍了什么是Tab顺序&#xff0c;以及如何修改Tab顺序。 一、Tab顺序 当你的界面设计好之后&#xff0c;在输入栏按住Tab按键&#xff0c;他会按照你摆放的顺序一次转跳 二、编辑Tab顺序 方法一 然后鼠标左击就可以改变…

PHP毕业设计图片分享网站76t17

图片分享网站主要是为了提高工作人员的工作效率和更方便快捷的满足用户&#xff0c;更好存储所有数据信息及快速方便的检索功能&#xff0c;对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性&#xff0c;遵循开发的系统优化的原则&#xff0c;…

Vegeta压测工具学习与使用

Vegeta压测工具学习与使用 目标&#xff1a; 能够在命令行下使用Vegeta对指定API进行测试了解如何导出结果&#xff0c;以及能获得什么样的结果(P99,P99.9,QPS)探索能否导出其他结果&#xff0c;是否能够执行复杂命令或简易脚本等 时间比较紧迫&#xff0c;预计两到三个小时内完…

Sentinel 流控-链路模式

链路模式 A B C 三个服务 A 调用 C B 调用 C C 设置流控 ->链路模式 -> 入口资源是 A A、B 服务 package com.learning.springcloud.order.controller;import com.learning.springcloud.order.service.BaseService; import org.springframework.beans.factory.annotatio…

【JAVA】计算机软件工程人工智能研究生复试资料整理

1、JAVA 2、计算机网络 3、计算机体系结构 4、数据库 5、计算机租场原理 6、软件工程 7、大数据 8、英文 自我介绍 1. Java 1. == 和 equals的区别 比较基本数据类型是比较的值,引用数据类型是比较两个是不是同一个对象,也就是引用是否指向同 一个对象,地址是否相同,equ…

鸿蒙开发系列教程(十八)--页面内动画(1)

页面内的动画 显示动画 语法&#xff1a;animateTo(value: AnimateParam, event: () > void): void 第一个参数指定动画参数 第二个参数为动画的闭包函数。 如&#xff1a;animateTo({ duration: 1000, curve: Curve.EaseInOut }, () > {动画代码}&#xff09; dura…

手撕链表OJ

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

python调用golang中函数方法

一、原因说明&#xff1a;由于simhash方法有多种实现方式&#xff0c;现python中simhash方法与golang中的不一样&#xff0c;需要两者代码生成结果保持一致&#xff0c;故采用python中的代码调用golang编译的so文件来实现。 环境配置&#xff1a;①Windows10系统要有gcc环境&a…

Python 读取pdf文件

Python 实现读取pdf文件简单示例。 安装命令 需要安装操作pdf的三方类库&#xff0c;命令如下&#xff1a; pip install pdfminer3K 安装过程如下&#xff1a; 引入类库 需要引入很多的类库。 示例如下&#xff1a; import sys import importlib importlib.reload(sys)fr…

车载诊断协议DoIP系列 —— OSI模型DoIP参考

车载诊断协议DoIP系列 —— OSI模型DoIP参考 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再…

MQTT的学习与应用

文章目录 一、什么是MQTT二、MQTT协议特点三、MQTT应用领域四、安装Mosquitto五、如何学习 MQTT 一、什么是MQTT MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息传输协议&#xff0c;设计用于在低带宽、不稳定的网络环境中进行高效的通信…

深入了解pip和conda:高效Python环境管理的必备指南

pip相关命令: 更新包之前最好更新一下pip&#xff0c;因为更新其他包底层是依赖 pip pip show pippython -m pip install --upgrade pippython更新包&#xff1a; - ​ pip install --upgrade 包 pip install pandas- ​ pip install --upgrade 包名称版本号查看那些包需要更…

【C++第二阶段】赋值运算符重载

你好你好&#xff01; 以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 赋值运算符重载 赋值运算符重载 实验①&#xff0c;还没有对析构运算符重载时 #include<iostream> #include<string> using namespace std;clas…

操作系统(14)----文件系统的结构

目录 一.文件系统的层次结构 1.用户接口&#xff1a; 2.文件目录系统&#xff1a; 3.存取控制模块&#xff1a; 4.逻辑文件系统与文件信息缓冲区&#xff1a; 5.物理文件系统&#xff1a; 二.文件系统的全局结构 1.文件系统在外存中的结构 &#xff08;1&#xff09;物…

第六篇:MySQL图形化管理工具

经过前五篇的学习&#xff0c;对于数据库这门技术的理解&#xff0c;我们已经在心中建立了一个城堡大致的雏形&#xff0c;通过命令行窗口&#xff08;cmd&#xff09;快速上手了【SQL语法-DDL-数据定义语言】等相关命令 道阻且长&#xff0c;数据库技术这一宝藏中还有数不清的…