简言之,学习单片机编程,类似学习硬件驱动。

如何点亮一个LED灯,等同于驱动一个LED灯,再复杂一些可以控制LED灯亮灭,更复杂的是远程控制LED灯。

这些是也算是操作系统技术的一部分,所以课程名字又叫微机原理与接口技术等。

扩展案例如下:

看drivers文件夹下:

是不是很多眼熟的名称

linux/tree/master/drivers

I2C等,都是有的。

看leds

github.com/torvalds/linux/tree/master/drivers/leds

看看blink???

打好单片机基础,到能手写一个操作系统内核,稳稳点亮一个LED,讲真还是挺遥远的。

leds-lgm-sso.c

// SPDX-License-Identifier: GPL-2.0
/** Intel Lightning Mountain SoC LED Serial Shift Output Controller driver** Copyright (c) 2020 Intel Corporation.*/#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/gpio/consumer.h>
#include <linux/gpio/driver.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/leds.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/sizes.h>
#include <linux/uaccess.h>#define SSO_DEV_NAME			"lgm-sso"#define LED_BLINK_H8_0			0x0
#define LED_BLINK_H8_1			0x4
#define GET_FREQ_OFFSET(pin, src)	(((pin) * 6) + ((src) * 2))
#define GET_SRC_OFFSET(pinc)		(((pin) * 6) + 4)#define DUTY_CYCLE(x)			(0x8 + ((x) * 4))
#define SSO_CON0			0x2B0
#define SSO_CON0_RZFL			BIT(26)
#define SSO_CON0_BLINK_R		BIT(30)
#define SSO_CON0_SWU			BIT(31)#define SSO_CON1			0x2B4
#define SSO_CON1_FCDSC			GENMASK(21, 20) /* Fixed Divider Shift Clock */
#define SSO_CON1_FPID			GENMASK(24, 23)
#define SSO_CON1_GPTD			GENMASK(26, 25)
#define SSO_CON1_US			GENMASK(31, 30)#define SSO_CPU				0x2B8
#define SSO_CON2			0x2C4
#define SSO_CON3			0x2C8/* Driver MACRO */
#define MAX_PIN_NUM_PER_BANK		SZ_32
#define MAX_GROUP_NUM			SZ_4
#define PINS_PER_GROUP			SZ_8
#define FPID_FREQ_RANK_MAX		SZ_4
#define SSO_LED_MAX_NUM			SZ_32
#define MAX_FREQ_RANK			10
#define DEF_GPTC_CLK_RATE		200000000
#define SSO_DEF_BRIGHTNESS		LED_HALF
#define DATA_CLK_EDGE			0 /* 0-rising, 1-falling */static const u32 freq_div_tbl[] = {4000, 2000, 1000, 800};
static const int freq_tbl[] = {2, 4, 8, 10, 50000, 100000, 200000, 250000};
static const int shift_clk_freq_tbl[] = {25000000, 12500000, 6250000, 3125000};/** Update Source to update the SOUTs* SW - Software has to update the SWU bit* GPTC - General Purpose timer is used as clock source* FPID - Divided FSC clock (FPID) is used as clock source*/
enum {US_SW = 0,US_GPTC = 1,US_FPID = 2
};enum {MAX_FPID_FREQ_RANK = 5, /* 1 to 4 */MAX_GPTC_FREQ_RANK = 9, /* 5 to 8 */MAX_GPTC_HS_FREQ_RANK = 10, /* 9 to 10 */
};enum {LED_GRP0_PIN_MAX = 24,LED_GRP1_PIN_MAX = 29,LED_GRP2_PIN_MAX = 32,
};enum {LED_GRP0_0_23,LED_GRP1_24_28,LED_GRP2_29_31,LED_GROUP_MAX,
};enum {CLK_SRC_FPID = 0,CLK_SRC_GPTC = 1,CLK_SRC_GPTC_HS = 2,
};struct sso_led_priv;struct sso_led_desc {const char *name;const char *default_trigger;unsigned int brightness;unsigned int blink_rate;unsigned int retain_state_suspended:1;unsigned int retain_state_shutdown:1;unsigned int panic_indicator:1;unsigned int hw_blink:1;unsigned int hw_trig:1;unsigned int blinking:1;int freq_idx;u32 pin;
};struct sso_led {struct list_head list;struct led_classdev cdev;struct gpio_desc *gpiod;struct sso_led_desc desc;struct sso_led_priv *priv;
};struct sso_gpio {struct gpio_chip chip;int shift_clk_freq;int edge;int freq;u32 pins;u32 alloc_bitmap;
};struct sso_led_priv {struct regmap *mmap;struct device *dev;struct platform_device *pdev;struct clk_bulk_data clocks[2];u32 fpid_clkrate;u32 gptc_clkrate;u32 freq[MAX_FREQ_RANK];struct list_head led_list;struct sso_gpio gpio;
};static int sso_get_blink_rate_idx(struct sso_led_priv *priv, u32 rate)
{int i;for (i = 0; i < MAX_FREQ_RANK; i++) {if (rate <= priv->freq[i])return i;}return -1;
}static unsigned int sso_led_pin_to_group(u32 pin)
{if (pin < LED_GRP0_PIN_MAX)return LED_GRP0_0_23;else if (pin < LED_GRP1_PIN_MAX)return LED_GRP1_24_28;elsereturn LED_GRP2_29_31;
}static u32 sso_led_get_freq_src(int freq_idx)
{if (freq_idx < MAX_FPID_FREQ_RANK)return CLK_SRC_FPID;else if (freq_idx < MAX_GPTC_FREQ_RANK)return CLK_SRC_GPTC;elsereturn CLK_SRC_GPTC_HS;
}static u32 sso_led_pin_blink_off(u32 pin, unsigned int group)
{if (group == LED_GRP2_29_31)return pin - LED_GRP1_PIN_MAX;else if (group == LED_GRP1_24_28)return pin - LED_GRP0_PIN_MAX;else	/* led 0 - 23 in led 32 location */return SSO_LED_MAX_NUM - LED_GRP1_PIN_MAX;
}static struct sso_led
*cdev_to_sso_led_data(struct led_classdev *led_cdev)
{return container_of(led_cdev, struct sso_led, cdev);
}static void sso_led_freq_set(struct sso_led_priv *priv, u32 pin, int freq_idx)
{u32 reg, off, freq_src, val_freq;u32 low, high, val;unsigned int group;if (!freq_idx)return;group = sso_led_pin_to_group(pin);freq_src = sso_led_get_freq_src(freq_idx);off = sso_led_pin_blink_off(pin, group);if (group == LED_GRP0_0_23)return;else if (group == LED_GRP1_24_28)reg = LED_BLINK_H8_0;elsereg = LED_BLINK_H8_1;if (freq_src == CLK_SRC_FPID)val_freq = freq_idx - 1;else if (freq_src == CLK_SRC_GPTC)val_freq = freq_idx - MAX_FPID_FREQ_RANK;/* set blink rate idx */if (freq_src != CLK_SRC_GPTC_HS) {low = GET_FREQ_OFFSET(off, freq_src);high = low + 2;val = val_freq << high;regmap_update_bits(priv->mmap, reg, GENMASK(high, low), val);}/* select clock source */low = GET_SRC_OFFSET(off);high = low + 2;val = freq_src << high;regmap_update_bits(priv->mmap, reg, GENMASK(high, low), val);
}static void sso_led_brightness_set(struct led_classdev *led_cdev,enum led_brightness brightness)
{struct sso_led_priv *priv;struct sso_led_desc *desc;struct sso_led *led;int val;led = cdev_to_sso_led_data(led_cdev);priv = led->priv;desc = &led->desc;desc->brightness = brightness;regmap_write(priv->mmap, DUTY_CYCLE(desc->pin), brightness);if (brightness == LED_OFF)val = 0;elseval = 1;/* HW blink off */if (desc->hw_blink && !val && desc->blinking) {desc->blinking = 0;regmap_update_bits(priv->mmap, SSO_CON2, BIT(desc->pin), 0);} else if (desc->hw_blink && val && !desc->blinking) {desc->blinking = 1;regmap_update_bits(priv->mmap, SSO_CON2, BIT(desc->pin),1 << desc->pin);}if (!desc->hw_trig)gpiod_set_value(led->gpiod, val);
}static enum led_brightness sso_led_brightness_get(struct led_classdev *led_cdev)
{struct sso_led *led = cdev_to_sso_led_data(led_cdev);return (enum led_brightness)led->desc.brightness;
}static int
delay_to_freq_idx(struct sso_led *led, unsigned long *delay_on,unsigned long *delay_off)
{struct sso_led_priv *priv = led->priv;unsigned long delay;int freq_idx;u32 freq;if (!*delay_on && !*delay_off) {*delay_on = *delay_off = (1000 / priv->freq[0]) / 2;return 0;}delay = *delay_on + *delay_off;freq = 1000 / delay;freq_idx = sso_get_blink_rate_idx(priv, freq);if (freq_idx == -1)freq_idx = MAX_FREQ_RANK - 1;delay = 1000 / priv->freq[freq_idx];*delay_on = *delay_off = delay / 2;if (!*delay_on)*delay_on = *delay_off = 1;return freq_idx;
}static int
sso_led_blink_set(struct led_classdev *led_cdev, unsigned long *delay_on,unsigned long *delay_off)
{struct sso_led_priv *priv;struct sso_led *led;int freq_idx;led = cdev_to_sso_led_data(led_cdev);priv = led->priv;freq_idx = delay_to_freq_idx(led, delay_on, delay_off);sso_led_freq_set(priv, led->desc.pin, freq_idx);regmap_update_bits(priv->mmap, SSO_CON2, BIT(led->desc.pin),1 << led->desc.pin);led->desc.freq_idx = freq_idx;led->desc.blink_rate = priv->freq[freq_idx];led->desc.blinking = 1;return 1;
}static void sso_led_hw_cfg(struct sso_led_priv *priv, struct sso_led *led)
{struct sso_led_desc *desc = &led->desc;/* set freq */if (desc->hw_blink) {sso_led_freq_set(priv, desc->pin, desc->freq_idx);regmap_update_bits(priv->mmap, SSO_CON2, BIT(desc->pin),1 << desc->pin);}if (desc->hw_trig)regmap_update_bits(priv->mmap, SSO_CON3, BIT(desc->pin),1 << desc->pin);/* set brightness */regmap_write(priv->mmap, DUTY_CYCLE(desc->pin), desc->brightness);/* enable output */if (!desc->hw_trig && desc->brightness)gpiod_set_value(led->gpiod, 1);
}static int sso_create_led(struct sso_led_priv *priv, struct sso_led *led,struct fwnode_handle *child)
{struct sso_led_desc *desc = &led->desc;struct led_init_data init_data;int err;init_data.fwnode = child;init_data.devicename = SSO_DEV_NAME;init_data.default_label = ":";led->cdev.default_trigger = desc->default_trigger;led->cdev.brightness_set = sso_led_brightness_set;led->cdev.brightness_get = sso_led_brightness_get;led->cdev.brightness = desc->brightness;led->cdev.max_brightness = LED_FULL;if (desc->retain_state_shutdown)led->cdev.flags |= LED_RETAIN_AT_SHUTDOWN;if (desc->retain_state_suspended)led->cdev.flags |= LED_CORE_SUSPENDRESUME;if (desc->panic_indicator)led->cdev.flags |= LED_PANIC_INDICATOR;if (desc->hw_blink)led->cdev.blink_set = sso_led_blink_set;sso_led_hw_cfg(priv, led);err = devm_led_classdev_register_ext(priv->dev, &led->cdev, &init_data);if (err)return err;list_add(&led->list, &priv->led_list);return 0;
}static void sso_init_freq(struct sso_led_priv *priv)
{int i;priv->freq[0] = 0;for (i = 1; i < MAX_FREQ_RANK; i++) {if (i < MAX_FPID_FREQ_RANK) {priv->freq[i] = priv->fpid_clkrate / freq_div_tbl[i - 1];} else if (i < MAX_GPTC_FREQ_RANK) {priv->freq[i] = priv->gptc_clkrate /freq_div_tbl[i - MAX_FPID_FREQ_RANK];} else if (i < MAX_GPTC_HS_FREQ_RANK) {priv->freq[i] = priv->gptc_clkrate;}}
}static int sso_gpio_request(struct gpio_chip *chip, unsigned int offset)
{struct sso_led_priv *priv = gpiochip_get_data(chip);if (priv->gpio.alloc_bitmap & BIT(offset))return -EINVAL;priv->gpio.alloc_bitmap |= BIT(offset);regmap_write(priv->mmap, DUTY_CYCLE(offset), 0xFF);return 0;
}static void sso_gpio_free(struct gpio_chip *chip, unsigned int offset)
{struct sso_led_priv *priv = gpiochip_get_data(chip);priv->gpio.alloc_bitmap &= ~BIT(offset);regmap_write(priv->mmap, DUTY_CYCLE(offset), 0x0);
}static int sso_gpio_get_dir(struct gpio_chip *chip, unsigned int offset)
{return GPIO_LINE_DIRECTION_OUT;
}static int
sso_gpio_dir_out(struct gpio_chip *chip, unsigned int offset, int value)
{struct sso_led_priv *priv = gpiochip_get_data(chip);bool bit = !!value;regmap_update_bits(priv->mmap, SSO_CPU, BIT(offset), bit << offset);if (!priv->gpio.freq)regmap_update_bits(priv->mmap, SSO_CON0, SSO_CON0_SWU,SSO_CON0_SWU);return 0;
}static int sso_gpio_get(struct gpio_chip *chip, unsigned int offset)
{struct sso_led_priv *priv = gpiochip_get_data(chip);u32 reg_val;regmap_read(priv->mmap, SSO_CPU, &reg_val);return !!(reg_val & BIT(offset));
}static void sso_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
{struct sso_led_priv *priv = gpiochip_get_data(chip);regmap_update_bits(priv->mmap, SSO_CPU, BIT(offset), value << offset);if (!priv->gpio.freq)regmap_update_bits(priv->mmap, SSO_CON0, SSO_CON0_SWU,SSO_CON0_SWU);
}static int sso_gpio_gc_init(struct device *dev, struct sso_led_priv *priv)
{struct gpio_chip *gc = &priv->gpio.chip;gc->request             = sso_gpio_request;gc->free                = sso_gpio_free;gc->get_direction       = sso_gpio_get_dir;gc->direction_output    = sso_gpio_dir_out;gc->get                 = sso_gpio_get;gc->set                 = sso_gpio_set;gc->label               = "lgm-sso";gc->base                = -1;/* To exclude pins from control, use "gpio-reserved-ranges" */gc->ngpio               = priv->gpio.pins;gc->parent              = dev;gc->owner               = THIS_MODULE;gc->of_node             = dev->of_node;return devm_gpiochip_add_data(dev, gc, priv);
}static int sso_gpio_get_freq_idx(int freq)
{int idx;for (idx = 0; idx < ARRAY_SIZE(freq_tbl); idx++) {if (freq <= freq_tbl[idx])return idx;}return -1;
}static void sso_register_shift_clk(struct sso_led_priv *priv)
{int idx, size = ARRAY_SIZE(shift_clk_freq_tbl);u32 val = 0;for (idx = 0; idx < size; idx++) {if (shift_clk_freq_tbl[idx] <= priv->gpio.shift_clk_freq) {val = idx;break;}}if (idx == size)dev_warn(priv->dev, "%s: Invalid freq %d\n",__func__, priv->gpio.shift_clk_freq);regmap_update_bits(priv->mmap, SSO_CON1, SSO_CON1_FCDSC,FIELD_PREP(SSO_CON1_FCDSC, val));
}static int sso_gpio_freq_set(struct sso_led_priv *priv)
{int freq_idx;u32 val;freq_idx = sso_gpio_get_freq_idx(priv->gpio.freq);if (freq_idx == -1)freq_idx = ARRAY_SIZE(freq_tbl) - 1;val = freq_idx % FPID_FREQ_RANK_MAX;if (!priv->gpio.freq) {regmap_update_bits(priv->mmap, SSO_CON0, SSO_CON0_BLINK_R, 0);regmap_update_bits(priv->mmap, SSO_CON1, SSO_CON1_US,FIELD_PREP(SSO_CON1_US, US_SW));} else if (freq_idx < FPID_FREQ_RANK_MAX) {regmap_update_bits(priv->mmap, SSO_CON0, SSO_CON0_BLINK_R,SSO_CON0_BLINK_R);regmap_update_bits(priv->mmap, SSO_CON1, SSO_CON1_US,FIELD_PREP(SSO_CON1_US, US_FPID));regmap_update_bits(priv->mmap, SSO_CON1, SSO_CON1_FPID,FIELD_PREP(SSO_CON1_FPID, val));} else {regmap_update_bits(priv->mmap, SSO_CON0, SSO_CON0_BLINK_R,SSO_CON0_BLINK_R);regmap_update_bits(priv->mmap, SSO_CON1, SSO_CON1_US,FIELD_PREP(SSO_CON1_US, US_GPTC));regmap_update_bits(priv->mmap, SSO_CON1, SSO_CON1_GPTD,FIELD_PREP(SSO_CON1_GPTD, val));}return 0;
}static int sso_gpio_hw_init(struct sso_led_priv *priv)
{u32 activate;int i, err;/* Clear all duty cycles */for (i = 0; i < priv->gpio.pins; i++) {err = regmap_write(priv->mmap, DUTY_CYCLE(i), 0);if (err)return err;}/* 4 groups for total 32 pins */for (i = 1; i <= MAX_GROUP_NUM; i++) {activate = !!(i * PINS_PER_GROUP <= priv->gpio.pins ||priv->gpio.pins > (i - 1) * PINS_PER_GROUP);err = regmap_update_bits(priv->mmap, SSO_CON1, BIT(i - 1),activate << (i - 1));if (err)return err;}/* NO HW directly controlled pin by default */err = regmap_write(priv->mmap, SSO_CON3, 0);if (err)return err;/* NO BLINK for all pins */err = regmap_write(priv->mmap, SSO_CON2, 0);if (err)return err;/* OUTPUT 0 by default */err = regmap_write(priv->mmap, SSO_CPU, 0);if (err)return err;/* update edge */err = regmap_update_bits(priv->mmap, SSO_CON0, SSO_CON0_RZFL,FIELD_PREP(SSO_CON0_RZFL, priv->gpio.edge));if (err)return err;/* Set GPIO update rate */sso_gpio_freq_set(priv);/* Register shift clock */sso_register_shift_clk(priv);return 0;
}static void sso_led_shutdown(struct sso_led *led)
{struct sso_led_priv *priv = led->priv;/* unregister led */devm_led_classdev_unregister(priv->dev, &led->cdev);/* clear HW control bit */if (led->desc.hw_trig)regmap_update_bits(priv->mmap, SSO_CON3, BIT(led->desc.pin), 0);led->priv = NULL;
}static int
__sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled)
{struct fwnode_handle *fwnode_child;struct device *dev = priv->dev;struct sso_led_desc *desc;struct sso_led *led;const char *tmp;u32 prop;int ret;fwnode_for_each_child_node(fw_ssoled, fwnode_child) {led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL);if (!led) {ret = -ENOMEM;goto __dt_err;}INIT_LIST_HEAD(&led->list);led->priv = priv;desc = &led->desc;led->gpiod = devm_fwnode_get_gpiod_from_child(dev, NULL,fwnode_child,GPIOD_ASIS, NULL);if (IS_ERR(led->gpiod)) {ret = dev_err_probe(dev, PTR_ERR(led->gpiod), "led: get gpio fail!\n");goto __dt_err;}fwnode_property_read_string(fwnode_child,"linux,default-trigger",&desc->default_trigger);if (fwnode_property_present(fwnode_child,"retain-state-suspended"))desc->retain_state_suspended = 1;if (fwnode_property_present(fwnode_child,"retain-state-shutdown"))desc->retain_state_shutdown = 1;if (fwnode_property_present(fwnode_child, "panic-indicator"))desc->panic_indicator = 1;ret = fwnode_property_read_u32(fwnode_child, "reg", &prop);if (ret)goto __dt_err;if (prop >= SSO_LED_MAX_NUM) {dev_err(dev, "invalid LED pin:%u\n", prop);ret = -EINVAL;goto __dt_err;}desc->pin = prop;if (fwnode_property_present(fwnode_child, "intel,sso-hw-blink"))desc->hw_blink = 1;desc->hw_trig = fwnode_property_read_bool(fwnode_child,"intel,sso-hw-trigger");if (desc->hw_trig) {desc->default_trigger = NULL;desc->retain_state_shutdown = 0;desc->retain_state_suspended = 0;desc->panic_indicator = 0;desc->hw_blink = 0;}if (fwnode_property_read_u32(fwnode_child,"intel,sso-blink-rate-hz", &prop)) {/* default first freq rate */desc->freq_idx = 0;desc->blink_rate = priv->freq[desc->freq_idx];} else {desc->freq_idx = sso_get_blink_rate_idx(priv, prop);if (desc->freq_idx == -1)desc->freq_idx = MAX_FREQ_RANK - 1;desc->blink_rate = priv->freq[desc->freq_idx];}if (!fwnode_property_read_string(fwnode_child, "default-state", &tmp)) {if (!strcmp(tmp, "on"))desc->brightness = LED_FULL;}ret = sso_create_led(priv, led, fwnode_child);if (ret)goto __dt_err;}return 0;__dt_err:fwnode_handle_put(fwnode_child);/* unregister leds */list_for_each_entry(led, &priv->led_list, list)sso_led_shutdown(led);return ret;
}static int sso_led_dt_parse(struct sso_led_priv *priv)
{struct fwnode_handle *fwnode = dev_fwnode(priv->dev);struct fwnode_handle *fw_ssoled;struct device *dev = priv->dev;int count;int ret;count = device_get_child_node_count(dev);if (!count)return 0;fw_ssoled = fwnode_get_named_child_node(fwnode, "ssoled");if (fw_ssoled) {ret = __sso_led_dt_parse(priv, fw_ssoled);fwnode_handle_put(fw_ssoled);if (ret)return ret;}return 0;
}static int sso_probe_gpios(struct sso_led_priv *priv)
{struct device *dev = priv->dev;int ret;if (device_property_read_u32(dev, "ngpios", &priv->gpio.pins))priv->gpio.pins = MAX_PIN_NUM_PER_BANK;if (priv->gpio.pins > MAX_PIN_NUM_PER_BANK)return -EINVAL;if (device_property_read_u32(dev, "intel,sso-update-rate-hz",&priv->gpio.freq))priv->gpio.freq = 0;priv->gpio.edge = DATA_CLK_EDGE;priv->gpio.shift_clk_freq = -1;ret = sso_gpio_hw_init(priv);if (ret)return ret;return sso_gpio_gc_init(dev, priv);
}static void sso_clock_disable_unprepare(void *data)
{struct sso_led_priv *priv = data;clk_bulk_disable_unprepare(ARRAY_SIZE(priv->clocks), priv->clocks);
}static int intel_sso_led_probe(struct platform_device *pdev)
{struct device *dev = &pdev->dev;struct sso_led_priv *priv;int ret;priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);if (!priv)return -ENOMEM;priv->pdev = pdev;priv->dev = dev;/* gate clock */priv->clocks[0].id = "sso";/* fpid clock */priv->clocks[1].id = "fpid";ret = devm_clk_bulk_get(dev, ARRAY_SIZE(priv->clocks), priv->clocks);if (ret) {dev_err(dev, "Getting clocks failed!\n");return ret;}ret = clk_bulk_prepare_enable(ARRAY_SIZE(priv->clocks), priv->clocks);if (ret) {dev_err(dev, "Failed to prepare and enable clocks!\n");return ret;}ret = devm_add_action_or_reset(dev, sso_clock_disable_unprepare, priv);if (ret)return ret;priv->fpid_clkrate = clk_get_rate(priv->clocks[1].clk);priv->mmap = syscon_node_to_regmap(dev->of_node);priv->mmap = syscon_node_to_regmap(dev->of_node);if (IS_ERR(priv->mmap)) {dev_err(dev, "Failed to map iomem!\n");return PTR_ERR(priv->mmap);}ret = sso_probe_gpios(priv);if (ret) {regmap_exit(priv->mmap);return ret;}INIT_LIST_HEAD(&priv->led_list);platform_set_drvdata(pdev, priv);sso_init_freq(priv);priv->gptc_clkrate = DEF_GPTC_CLK_RATE;ret = sso_led_dt_parse(priv);if (ret) {regmap_exit(priv->mmap);return ret;}dev_info(priv->dev, "sso LED init success!\n");return 0;
}static int intel_sso_led_remove(struct platform_device *pdev)
{struct sso_led_priv *priv;struct sso_led *led, *n;priv = platform_get_drvdata(pdev);list_for_each_entry_safe(led, n, &priv->led_list, list) {list_del(&led->list);sso_led_shutdown(led);}regmap_exit(priv->mmap);return 0;
}static const struct of_device_id of_sso_led_match[] = {{ .compatible = "intel,lgm-ssoled" },{}
};MODULE_DEVICE_TABLE(of, of_sso_led_match);static struct platform_driver intel_sso_led_driver = {.probe		= intel_sso_led_probe,.remove		= intel_sso_led_remove,.driver		= {.name = "lgm-ssoled",.of_match_table = of_sso_led_match,},
};module_platform_driver(intel_sso_led_driver);MODULE_DESCRIPTION("Intel SSO LED/GPIO driver");
MODULE_LICENSE("GPL v2");

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

相关文章

  1. react 组件间的传参方式

    React组件之间的传值 redux公用数据的使用_哆来A梦没有口袋的博客-CSDN博客...

    2024/4/24 15:43:16
  2. BES之音频流状态机切换

    ...

    2024/5/5 2:32:35
  3. python文件

    with open("1.txt") as f:contexts f.read() print(contexts.rstrip())[2, 3, 3, 78] with 打开文件&#xff0c;不需要的时候将其自动关闭&#xff0c;open 打开文件&#xff0c;open第一个参数是文件的路径&#xff0c;可以使用相对路径也可以使用绝对路径&#x…...

    2024/4/24 15:43:12
  4. 达梦DTS单独迁移oracle触发器脚本到达梦数据库

    1、配置源端数据库信息 2、配置目的端数据库信息 3、指定对象复制&#xff08;只勾选表触发器&#xff09; 4、选择迁移对象&#xff08;可点击导入迁移对象&#xff0c;将需要迁移的对象&#xff08;模式名|表名&#xff09;写入txt 按一定格式导入&#xff09; 提前确定含…...

    2024/5/4 17:47:57
  5. Find Any File for Mac(文件搜索软件)

    Find Any File for Mac是应用在Mac上的一款文件搜索工具&#xff0c;Find Any File Mac可以通过名称、创建或修改日期&#xff0c;大小或类型和创建者代码&#xff08;而不是内容&#xff09;在本地磁盘上搜索文件。您甚至可以搜索未由Spotlight编入索引的磁盘&#xff0c;包括…...

    2024/5/4 15:07:57
  6. VESC_BLDC_Tool

    官网 VESC – Open Source ESC 1. 源码学习 NOTE: VESC的源码非常庞大&#xff0c;我们这里只对packet部分进行分析...

    2024/4/24 15:43:11
  7. vue简单购物计算案例

    pages文件夹中的index.vue代码 <template><view class"content"><water-menu v-bind:water"list"></water-menu><total v-bind:total"list"></total></view> </template><script>import…...

    2024/5/5 1:56:41
  8. SAP Spartacus 里的 .release-it.json 文件

    在 SAP Spartacus package.json 里有一个依赖叫做 release-it: 这个工具的链接&#xff1a;https://github.com/release-it/release-it 这是一个用于自动化版本控制和包发布相关任务的通用 CLI 工具。 使用 release-it 进行版本管理&#xff0c;并通过其多功能配置、强大的…...

    2024/5/5 1:46:23
  9. bugku game1

    解题思路&#xff1a;对游戏进行抓包&#xff0c;并根据源代码提示&#xff0c;将score改成99999(试出来&#xff09;&#xff0c;并且将sign值也进行更改&#xff0c;并且将99999base64输入&#xff0c;sign改为zM&#xff0b;99999(base64)发包即可 总结&#xff1a;游戏题进…...

    2024/4/24 15:22:50
  10. js实现有效括号(letcode20)

    方式一var isValid function (s) {if (s.length < 1 || s.length % 2 ! 0) return falselet length s.lengthfor(let i 0; i < length -1; i) {s s.replace("()", "")s s.replace("[]", "")s s.replace("{}", &quo…...

    2024/5/4 14:24:03
  11. Vscode 编写并运行C程序

    Vscode 编写并运行C程序 https://code.visualstudio.com/docs/languages/cpp 关于vscode C is a compiled language meaning your program’s source code must be translated (compiled) before it can be run on your computer.C是个编译型编程语言&#xff0c;意味着必须将源…...

    2024/4/28 9:06:36
  12. Cisdem DVD Burner for Mac(DVD光盘刻录软件)

    cisdem dvdburner for mac版是Mac平台上一款DVD刻录软件&#xff0c;可将视频剪辑转换为带有菜单、字幕和背景音乐的高分辨率DVD光盘、DVD文件夹或ISO文件。cisdem dvdburner mac版内置实用的编辑器&#xff0c;支持旋转、剪裁、添加背景音乐、字幕、效果等&#xff0c;功能非常…...

    2024/4/28 22:36:00
  13. 手机号码输入框优化

    <input type"text" onkeyup"valuevalue.replace(/[^\d]/g,)" maxlength11>...

    2024/4/27 22:11:52
  14. 华为vlan和单臂路由配置

    一、VLAN配置 1.1、拓扑图 ​1.2、SW1配置 1.3、SW2配置 1.4、测试结果 ​二、单臂路由配置 2.1、拓扑图 2.2、SW1 2.3、R1 2.4、测试结果 一、VLAN配置 1.1、SW1配置 undo terminal monito ##关闭弹出信息## sys ##进入系统视图## [Huawei]user-interface console 0 #…...

    2024/4/28 1:50:40
  15. 2021-10-29 数据集市与数据仓库的区别

    2.3 数据集市与数据仓库的区别 - 知乎 (zhihu.com)2.3 数据集市与数据仓库的区别 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/600387471. 数仓&#xff1a;整体、详细&#xff0c;集团或企业级 2. 数据集市&#xff1a;局部、综合&#xff0c;可以从属于数仓...

    2024/4/28 5:57:56
  16. Qt-对话框的基本设置和按钮控件QPushButton简单使用

    常用的一些快捷键 快速注释 ctr/ 自动对齐 ctri .h和.cpp切换 F4 帮助文档可以用Qt界面上左侧菜单栏上面的&#xff0c;也可以从安装路径中单独拉出来 C:\Qt\Qt5.9.9\5.9.9\mingw53_32\bin\assistant.exe 对话框的一些设置 修改对话框左上角的图标 图标需要用 .ico 的后缀&…...

    2024/4/28 23:04:26
  17. Halcon标定板标定流程

    一、相机内参标定 目的&#xff1a;标定内参的目的是消除镜头的畸变。 面阵相机的内参由一个8位的数组组成包括&#xff1a; startCamPar&#xff1a;&#xff1d;[Focus,Kappa,Sx,Sy,Cx,Cy,ImageWidth,ImageHeight] Focus代表焦距&#xff0c;按照我们镜头参数进行填写&am…...

    2024/4/28 0:33:30
  18. CentOS8 创建私有CA证书服务器,颁发证书,吊销证书

    CentOS8 创建私有CA证书服务器&#xff0c;颁发证书&#xff0c;吊销证书1. 创建CA相关目录和文件2. 创建CA的私钥3. 给CA颁发自签名证书4. 用户生成私钥和证书申请5. CA颁发证书6. 查看证书7. 修改配置文件以便允许跨国CA授权和对同一证书申请文件多次授权8. 吊销证书1. 创建C…...

    2024/4/29 2:09:54
  19. 高品质汽车行业数字化解决方案丨重塑企业与客户的相处之道

    在本文开始之前&#xff0c;云朵匠先把汽车行业的发展局势进行初步的梳理&#xff0c;尽管行业前景毋庸置疑&#xff0c;不同创业者的玩法也是五花八门&#xff0c;但这并不能掩盖很多模式都存在着问题&#xff0c;多数企业仍在试错。 在流量思维鼓动下&#xff0c;每个企业都…...

    2024/4/28 4:04:19
  20. Redis五种数据结构详解(理论+实战)(转发)

    Redis五种数据结构详解&#xff08;理论实战&#xff09; 程序员面试 6月22日 以下文章来源于非科班的科班 &#xff0c;作者黎杜 非科班的科班 世界上并没有什么救世主&#xff0c;假如有那便是你自己&#xff1b;世界上也没有什么奇迹&#xff0c;假如有那只是努力的另一…...

    2024/4/28 0:12:31

最新文章

  1. SSH远程管理

    SSH远程连接协议 SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c;主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理&#xff0c;其中包括用户登录时输入的用户口令&#xff0c;SSH 为建立在应用层和传输…...

    2024/5/5 3:40:08
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 【鹅厂摸鱼日记(二)】(生活篇)初到深圳的人情冷暖

    &#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:重生之我在鹅厂摸鱼⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多知识   &#x1f51d;&#x1f51d; 摸鱼日记 1. 前言2. 鹅厂的人文关怀…...

    2024/5/4 2:23:47
  4. 探索进程控制第一弹(进程终止、进程等待)

    文章目录 进程创建初识fork函数fork函数返回值fork常规用法fork调用失败的原因 写时拷贝进程终止进程终止是在做什么&#xff1f;进程终止的情况代码跑完&#xff0c;结果正确/不正确代码异常终止 如何终止 进程等待概述进程等待方法wait方法waitpid 进程创建 初识fork函数 在…...

    2024/5/5 1:11:34
  5. 技术与安全的交织

    引言 介绍数字化转型对企业出海策略的影响&#xff0c;强调在全球市场中成功的关键因素之一是有效利用网络技术&#xff0c;如SOCKS5代理、代理IP&#xff0c;以及确保网络安全。 第一部分&#xff1a;网络技术的基础 SOCKS5代理 定义和工作原理 SOCKS5代理与网络匿名性的关系…...

    2024/5/4 22:42:26
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/4 18:20:48
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/4 2:59:34
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57