Linux|Kernel啟動(dòng)流程源碼分析

點(diǎn)擊下方一起學(xué)嵌入式】關(guān)注,一起學(xué)習(xí),一起成長(zhǎng)

內(nèi)核生命周期

uboot 打印完 Starting kernel . . .,就完成了自己的使命,控制權(quán)便交給了 kernel 的第一條指令,也就是下面這個(gè)函數(shù)。

init/main.c

????asmlinkage?__visible?void?__init?start_kernel(void)
????{
?????...
?????rest_init();
????}

start_kernel 相當(dāng)于內(nèi)核的 main 函數(shù),內(nèi)核的生命周期就是從執(zhí)行這個(gè)函數(shù)的第一條語句開始的,直到最后一個(gè)函數(shù) reset_init(),內(nèi)核將不再?gòu)倪@個(gè)函數(shù)中返回,而是陷入這個(gè)函數(shù)里面的一個(gè) while(1) 死循環(huán),這個(gè)死循環(huán)被作為 idle 進(jìn)程,也就是 0 號(hào)進(jìn)程。

所以,內(nèi)核的生命周期,就是一個(gè)完整的 start_kernel 函數(shù)。始于 start_kernel 函數(shù)的第一條語句,停留在最后的死循環(huán)。

init 進(jìn)程

kernel 會(huì)創(chuàng)建眾多內(nèi)核線程,來持續(xù)致力于內(nèi)存、磁盤、CPU 的管理,其中有兩個(gè)內(nèi)核線程比較重要,需要我們重點(diǎn)講解,那就是 1 號(hào)內(nèi)核線程 kernel_init 和 2 號(hào)內(nèi)核線程 kthreadd。1 號(hào)內(nèi)核線程最終會(huì)被用戶的第一個(gè)進(jìn)程 init 代替,也就成了 1 號(hào)進(jìn)程。如下:

????#?ps
????PID???USER?????COMMAND
????????1?root?????init
????????2?root?????[kthreadd]
????????3?root?????[rcu_gp]
????????4?root?????[rcu_par_gp]
????????7?root?????[kworker/u4:0-ev]
????????8?root?????[mm_percpu_wq]
????????9?root?????[ksoftirqd/0]
????...

COMMAND 這一列,帶中括號(hào)的是內(nèi)核線程,不帶中括號(hào)的是用戶進(jìn)程。從 PID 統(tǒng)一編址就可以看出,它倆地位是一樣的。
下面我們深入分析一下從 start_kernel 到最終運(yùn)行 init 進(jìn)程,kernel 都經(jīng)歷了什么

打印

添加打印,是分析流程的好方法。

????asmlinkage?__visible?void?__init?start_kernel(void)
????{
?????char?*command_line;
?????char?*after_dashes;
????
????????set_task_stack_end_magic(&init_task);
????????smp_setup_processor_id();
????????debug_objects_early_init();
????
????????cgroup_init_early();
????
????????local_irq_disable();
????????early_boot_irqs_disabled?=?true;
????
????????/*
?????????*?Interrupts?are?still?disabled.?Do?necessary?setups,?then
?????????*?enable?them.
?????????*/
????????boot_cpu_init();
????????page_address_init();
????????pr_notice("%s",?linux_banner);
????????setup_arch(&command_line);
????????/*
?????????*?Set?up?the?the?initial?canary?and?entropy?after?arch
?????????*?and?after?adding?latent?and?command?line?entropy.
?????????*/
????????add_latent_entropy();
????????add_device_randomness(command_line,?strlen(command_line));
????????boot_init_stack_canary();
????????mm_init_cpumask(&init_mm);
????????setup_command_line(command_line);
????????setup_nr_cpu_ids();
????????setup_per_cpu_areas();
????????smp_prepare_boot_cpu();?/*?arch-specific?boot-cpu?hooks?*/
????????boot_cpu_hotplug_init();
????
????????build_all_zonelists(NULL);
????????page_alloc_init();
????
????????pr_notice("Kernel?command?line:?%s\n",?boot_command_line);
????????parse_early_param();
????????after_dashes?=?parse_args("Booting?kernel",
?????????????static_command_line,?__start___param,
?????????????__stop___param?-?__start___param,
?????????????-1,?-1,?NULL,?&unknown_bootoption);
????????if?(!IS_ERR_OR_NULL(after_dashes))
?????????parse_args("Setting?init?args",?after_dashes,?NULL,?0,?-1,?-1,
?????????????NULL,?set_init_arg);
????
????????jump_label_init();
????
????????/*
?????????*?These?use?large?bootmem?allocations?and?must?precede
?????????*?kmem_cache_init()
?????????*/
????????setup_log_buf(0);
????????vfs_caches_init_early();
????????sort_main_extable();
????????trap_init();
????????mm_init();
????
????????ftrace_init();
????
????????/*?trace_printk?can?be?enabled?here?*/
????????early_trace_init();
????
????????/*
?????????*?Set?up?the?scheduler?prior?starting?any?interrupts?(such?as?the
?????????*?timer?interrupt).?Full?topology?setup?happens?at?smp_init()
?????????*?time?-?but?meanwhile?we?still?have?a?functioning?scheduler.
?????????*/
????????sched_init();
????????/*
?????????*?Disable?preemption?-?early?bootup?scheduling?is?extremely
?????????*?fragile?until?we?cpu_idle()?for?the?first?time.
?????????*/
????????preempt_disable();
????????if?(WARN(!irqs_disabled(),
??????????"Interrupts?were?enabled?*very*?early,?fixing?it\n"))
?????????local_irq_disable();
????????radix_tree_init();
????
????????/*
?????????*?Set?up?housekeeping?before?setting?up?workqueues?to?allow?the?unbound
?????????*?workqueue?to?take?non-housekeeping?into?account.
?????????*/
????????housekeeping_init();
????
????????/*
?????????*?Allow?workqueue?creation?and?work?item?queueing/cancelling
?????????*?early.??Work?item?execution?depends?on?kthreads?and?starts?after
?????????*?workqueue_init().
?????????*/
????????workqueue_init_early();
????
????????rcu_init();
????
????????/*?Trace?events?are?available?after?this?*/
????????trace_init();
????
????????if?(initcall_debug)
?????????initcall_debug_enable();
????
????????context_tracking_init();
????????/*?init?some?links?before?init_ISA_irqs()?*/
????????early_irq_init();
????????init_IRQ();
????????tick_init();
????????rcu_init_nohz();
????????init_timers();
????????hrtimers_init();
????????softirq_init();
????????timekeeping_init();
????????time_init();
????????sched_clock_postinit();
????????printk_safe_init();
????????perf_event_init();
????????profile_init();
????????call_function_init();
????????WARN(!irqs_disabled(),?"Interrupts?were?enabled?early\n");
????????early_boot_irqs_disabled?=?false;
????????local_irq_enable();
????
????????kmem_cache_init_late();
????
????????/*
?????????*?HACK?ALERT!?This?is?early.?We're?enabling?the?console?before
?????????*?we'
ve?done?PCI?setups?etc,?and?console_init()?must?be?aware?of
?????????*?this.?But?we?do?want?output?early,?in?case?something?goes?wrong.
?????????*/
????????console_init();
????
????printk("##?start_kernel()?-->?console_init()\n");
????if?(panic_later)
????panic("Too?many?boot?%s?vars?at?`%s'",?panic_later,
????panic_param);
????
????????lockdep_info();
????
????????/*
?????????*?Need?to?run?this?when?irqs?are?enabled,?because?it?wants
?????????*?to?self-test?[hard/soft]-irqs?on/off?lock?inversion?bugs
?????????*?too:
?????????*/
????????locking_selftest();
????
????????/*
?????????*?This?needs?to?be?called?before?any?devices?perform?DMA
?????????*?operations?that?might?use?the?SWIOTLB?bounce?buffers.?It?will
?????????*?mark?the?bounce?buffers?as?decrypted?so?that?their?usage?will
?????????*?not?cause?"plain-text"?data?to?be?decrypted?when?accessed.
?????????*/
????????mem_encrypt_init();
????
????#ifdef?CONFIG_BLK_DEV_INITRD
????if?(initrd_start?&&?!initrd_below_start_ok?&&
????page_to_pfn(virt_to_page((void?_)initrd_start))?????pr_crit("initrd?overwritten?(0x%08lx?,
????page_to_pfn(virt_to_page((void?_)initrd_start)),
????min_low_pfn);
????initrd_start?=?0;
????}
????#endif
????page_ext_init();
????kmemleak_init();
????debug_objects_mem_init();
????setup_per_cpu_pageset();
????numa_policy_init();
????acpi_early_init();
????if?(late_time_init)
????late_time_init();
????calibrate_delay();
????pid_idr_init();
????anon_vma_init();
????#ifdef?CONFIG_X86
????if?(efi_enabled(EFI_RUNTIME_SERVICES))
????efi_enter_virtual_mode();
????#endif
????thread_stack_cache_init();
????cred_init();
????fork_init();
????proc_caches_init();
????uts_ns_init();
????buffer_init();
????key_init();
????security_init();
????dbg_late_init();
????vfs_caches_init();
????pagecache_init();
????signals_init();
????seq_file_init();
????proc_root_init();
????nsfs_init();
????cpuset_init();
????cgroup_init();
????taskstats_init_early();
????delayacct_init();
????
????????check_bugs();
????
????????acpi_subsystem_init();
????????arch_post_acpi_subsys_init();
????????sfi_init_late();
????
????????if?(efi_enabled(EFI_RUNTIME_SERVICES))?{
?????????efi_free_boot_services();
????????}
????
????printk("##?run?rest_init()\n");
????/_?Do?the?rest?non-\_\_init'ed,?we're?now?alive?_/
????rest_init();
????printk("##?after?rest_init()\n");
????}
????

一開始嘗試在函數(shù)剛開始就添加 printk 打印,結(jié)果發(fā)現(xiàn)添加完 printk 后內(nèi)核起不來,最后保守起見,在 131 行 console_init(); 后才開始添加打印。

????
????Starting?kernel?...
????
????[?0.000000]?Booting?Linux?on?physical?CPU?0x0
????[?0.000000]?Linux?version?4.18.12?(liyongjun@Box)?(gcc?version?9.3.0?(Buildroot?2021.05))?#14?SMP?Thu?Nov?25?00:37:30?CST?2021
????[?0.000000]?CPU:?ARMv7?Processor?[410fc074]?revision?4?(ARMv7),?cr=10c5387d
????[?0.000000]?CPU:?div?instructions?available:?patching?division?code
????[?0.000000]?CPU:?PIPT?/?VIPT?nonaliasing?data?cache,?VIPT?aliasing?instruction?cache
????[?0.000000]?OF:?fdt:?Machine?model:?LeMaker?Banana?Pi
????[?0.000000]?Memory?policy:?Data?cache?writealloc
????[?0.000000]?cma:?Reserved?16?MiB?at?0x7ec00000
????[?0.000000]?psci:?probing?for?conduit?method?from?DT.
????[?0.000000]?psci:?Using?PSCI?v0.1?Function?IDs?from?DT
????[?0.000000]?random:?get_random_bytes?called?from?start_kernel+0xa0/0x430?with?crng_init=0
????[?0.000000]?percpu:?Embedded?16?pages/cpu?@(ptrval)?s34444?r8192?d22900?u65536
????[?0.000000]?Built?1?zonelists,?mobility?grouping?on.?Total?pages:?260202
????[?0.000000]?Kernel?command?line:?console=ttyS0,57600?earlyprintk?root=/dev/mmcblk0p2?rootwait
????[?0.000000]?Dentry?cache?hash?table?entries:?131072?(order:?7,?524288?bytes)
????[?0.000000]?Inode-cache?hash?table?entries:?65536?(order:?6,?262144?bytes)
????[?0.000000]?Memory:?1011460K/1046952K?available?(6144K?kernel?code,?418K?rwdata,?1524K?rodata,?1024K?init,?240K?bss,?19108K?reserved,?16384K?cma-reserved,?244136K?highmem)
????[?0.000000]?Virtual?kernel?memory?layout:
????[?0.000000]?vector?:?0xffff0000?-?0xffff1000?(?4?kB)
????[?0.000000]?fixmap?:?0xffc00000?-?0xfff00000?(3072?kB)
????[?0.000000]?vmalloc?:?0xf0800000?-?0xff800000?(?240?MB)
????[?0.000000]?lowmem?:?0xc0000000?-?0xf0000000?(?768?MB)
????[?0.000000]?pkmap?:?0xbfe00000?-?0xc0000000?(?2?MB)
????[?0.000000]?modules?:?0xbf000000?-?0xbfe00000?(?14?MB)
????[?0.000000]?.text?:?0x(ptrval)?-?0x(ptrval)?(7136?kB)
????[?0.000000]?.init?:?0x(ptrval)?-?0x(ptrval)?(1024?kB)
????[?0.000000]?.data?:?0x(ptrval)?-?0x(ptrval)?(?419?kB)
????[?0.000000]?.bss?:?0x(ptrval)?-?0x(ptrval)?(?241?kB)
????[?0.000000]?SLUB:?HWalign=64,?Order=0-3,?MinObjects=0,?CPUs=2,?Nodes=1
????[?0.000000]?Hierarchical?RCU?implementation.
????[?0.000000]?RCU?restricting?CPUs?from?NR_CPUS=8?to?nr_cpu_ids=2.
????[?0.000000]?RCU:?Adjusting?geometry?for?rcu_fanout_leaf=16,?nr_cpu_ids=2
????[?0.000000]?NR_IRQS:?16,?nr_irqs:?16,?preallocated?irqs:?16
????[?0.000000]?GIC:?Using?split?EOI/Deactivate?mode
????[?0.000000]?arch_timer:?cp15?timer(s)?running?at?24.00MHz?(phys).
????[?0.000000]?clocksource:?arch_sys_counter:?mask:?0xffffffffffffff?max_cycles:?0x588fe9dc0,?max_idle_ns:?440795202592?ns
????[?0.000007]?sched_clock:?56?bits?at?24MHz,?resolution?41ns,?wraps?every?4398046511097ns
????[?0.000021]?Switching?to?timer-based?delay?loop,?resolution?41ns
????[?0.000334]?clocksource:?timer:?mask:?0xffffffff?max_cycles:?0xffffffff,?max_idle_ns:?79635851949?ns
????[?0.000586]?clocksource:?hstimer:?mask:?0xffffffff?max_cycles:?0xffffffff,?max_idle_ns:?6370868154?ns
????[?0.000822]?Console:?colour?dummy?device?80x30
????[?0.000844]?##?start_kernel()?-->?console_init()?//?132?行的打印
????
??

可是,發(fā)現(xiàn)在 console_init() 之前就有不少打印了,這個(gè)地方還是有些不解。猜測(cè)要么是在 console_init() 之前就已經(jīng)可以打印了;要么是在 console_init() 之前先將打印緩存著,等初始化之后再打印。這點(diǎn)以后再研究吧。先插個(gè)眼??。

接著看打印

????[????0.000844]?##?start_kernel()?-->?console_init()
????[????0.000872]?Calibrating?delay?loop?(skipped),?value?calculated?using?timer?frequency..?48.00?BogoMIPS?(lpj=240000)
????[????0.000886]?pid_max:?default:?32768?minimum:?301
????[????0.001054]?Mount-cache?hash?table?entries:?2048?(order:?1,?8192?bytes)
????[????0.001070]?Mountpoint-cache?hash?table?entries:?2048?(order:?1,?8192?bytes)
????[????0.001727]?CPU:?Testing?write?buffer?coherency:?ok
????[????0.001779]?##?run?rest_init()
????

從 133 行到 206 行,代碼不少,打印卻只有寥寥 5 行。少就說明不重要,那就不分析了,哈哈??。
看下面的代碼,乖乖,就剩一句了:
rest_init();,并且第 210 行的 printk 等到系統(tǒng)完全起來都沒有打印,說明 rest_init() 就沒返回。看來是個(gè)扛把子。

????static?noinline?void?__ref?rest_init(void)
????{
?????struct?task_struct?*tsk;
?????int?pid;
????printk("##?rcu_scheduler_starting()\n");
?????rcu_scheduler_starting();
?????/*
??????*?We?need?to?spawn?init?first?so?that?it?obtains?pid?1,?however
??????*?the?init?task?will?end?up?wanting?to?create?kthreads,?which,?if
??????*?we?schedule?it?before?we?create?kthreadd,?will?OOPS.
??????*/
?????pid?=?kernel_thread(kernel_init,?NULL,?CLONE_FS);
?????/*
??????*?Pin?init?on?the?boot?CPU.?Task?migration?is?not?properly?working
??????*?until?sched_init_smp()?has?been?run.?It?will?set?the?allowed
??????*?CPUs?for?init?to?the?non?isolated?CPUs.
??????*/
?????rcu_read_lock();
?????tsk?=?find_task_by_pid_ns(pid,?&init_pid_ns);
?????set_cpus_allowed_ptr(tsk,?cpumask_of(smp_processor_id()));
?????rcu_read_unlock();
????printk("##?bb\n");
?????numa_default_policy();
?????pid?=?kernel_thread(kthreadd,?NULL,?CLONE_FS?|?CLONE_FILES);
?????rcu_read_lock();
?????kthreadd_task?=?find_task_by_pid_ns(pid,?&init_pid_ns);
?????rcu_read_unlock();
????printk("##?cc\n");
?????/*
??????*?Enable?might_sleep()?and?smp_processor_id()?checks.
??????*?They?cannot?be?enabled?earlier?because?with?CONFIG_PREEMPT=y
??????*?kernel_thread()?would?trigger?might_sleep()?splats.?With
??????*?CONFIG_PREEMPT_VOLUNTARY=y?the?init?task?might?have?scheduled
??????*?already,?but?it's?stuck?on?the?kthreadd_done?completion.
??????*/
?????system_state?=?SYSTEM_SCHEDULING;
????printk("##?dd\n");
?????complete(&kthreadd_done);
????
????????/*
?????????*?The?boot?idle?thread?must?execute?schedule()
?????????*?at?least?once?to?get?things?moving:
?????????*/
????
????printk("##?ee\n");
????schedule_preempt_disabled();
????printk("##?ff\n");
????/_?Call?into?cpu_idle?with?preempt?disabled?_/
????cpu_startup_entry(CPUHP_ONLINE);
????//?printk("##?ff\n");
????}
????
????

對(duì)應(yīng)打印如下:

???[????0.001779]?##?run?rest_init()
????[????0.001786]?##?rcu_scheduler_starting()
????[????0.002030]?##?bb
????[????0.002089]?##?cc
????[????0.002097]?##?dd
????[????0.002104]?##?ee
????[????0.002150]?##?kernel_init()
????[????0.002199]?/cpus/cpu@0?missing?clock-frequency?property
????[????0.002214]?/cpus/cpu@1?missing?clock-frequency?property
????[????0.002228]?CPU0:?thread?-1,?cpu?0,?socket?0,?mpidr?80000000
????[????0.002799]?Setting?up?static?identity?map?for?0x40100000?-?0x40100060
????[????0.002972]?Hierarchical?SRCU?implementation.
????[????0.003776]?smp:?Bringing?up?secondary?CPUs?...
????[????0.014335]?##?ff
????

打印了 kernel_init(),是因?yàn)檎{(diào)用了 schedule_preempt_disabled(),其內(nèi)部調(diào)用了 schedule() 執(zhí)行進(jìn)程切換,進(jìn)入睡眠。當(dāng)然,在當(dāng)前進(jìn)程被喚醒時(shí),程序也是從這個(gè)斷點(diǎn)開始運(yùn)行。

???void?__sched?schedule_preempt_disabled(void)
????{
?????sched_preempt_enable_no_resched();
?????schedule();
?????preempt_disable();
????}
????

執(zhí)行進(jìn)程切換后,kernel_init() 才有機(jī)會(huì)運(yùn)行

???static?int?__ref?kernel_init(void?*unused)
????{
?????int?ret;
????printk("##?kernel_init()\n");
?????kernel_init_freeable();
?????/*?need?to?finish?all?async?__init?code?before?freeing?the?memory?*/
?????async_synchronize_full();
????
????????ftrace_free_init_mem();
????
????????jump_label_invalidate_initmem();
????????free_initmem();
????
????printk("##?2.\n");
????mark_readonly();
????printk("##?3.\n");
????system_state?=?SYSTEM_RUNNING;
????numa_default_policy();
????
????????rcu_end_inkernel_boot();
????
????printk("##?4.\n");
????if?(ramdisk_execute_command)?{
????ret?=?run_init_process(ramdisk_execute_command);
????if?(!ret)
????return?0;
????pr_err("Failed?to?execute?%s?(error?%d)\n",
????ramdisk_execute_command,?ret);
????}
????
????????/*
?????????*?We?try?each?of?these?until?one?succeeds.
?????????*
?????????*?The?Bourne?shell?can?be?used?instead?of?init?if?we?are
?????????*?trying?to?recover?a?really?broken?machine.
?????????*/
????????if?(execute_command)?{
?????????ret?=?run_init_process(execute_command);
?????????if?(!ret)
??????????return?0;
?????????panic("Requested?init?%s?failed?(error?%d).",
???????????????execute_command,?ret);
????????}
????????if?(!try_to_run_init_process("/sbin/init")?||
????????????!try_to_run_init_process("/etc/init")?||
????????????!try_to_run_init_process("/bin/init")?||
????????????!try_to_run_init_process("/bin/sh"))?{
????
????printk("##?kernel_init()?-->?/sbin/init\n");
????return?0;
????}
????
????????panic("No?working?init?found.??Try?passing?init=?option?to?kernel.?"
??????????????"See?Linux?Documentation/admin-guide/init.rst?for?guidance.");
????
????}
????
????

對(duì)應(yīng)打印如下:


????[????0.002150]?##?kernel_init()
????[????0.002199]?/cpus/cpu@0?missing?clock-frequency?property
????[????0.002214]?/cpus/cpu@1?missing?clock-frequency?property
????[????0.002228]?CPU0:?thread?-1,?cpu?0,?socket?0,?mpidr?80000000
????[????0.002799]?Setting?up?static?identity?map?for?0x40100000?-?0x40100060
????[????0.002972]?Hierarchical?SRCU?implementation.
????[????0.003776]?smp:?Bringing?up?secondary?CPUs?...
????[????0.014335]?##?ff
????[????0.014540]?CPU1:?thread?-1,?cpu?1,?socket?0,?mpidr?80000001
????[????0.014681]?smp:?Brought?up?1?node,?2?CPUs
????[????0.014697]?SMP:?Total?of?2?processors?activated?(96.00?BogoMIPS).
????[????0.014704]?CPU:?All?CPU(s)?started?in?HYP?mode.
????[????0.014709]?CPU:?Virtualization?extensions?available.
????[????0.015730]?devtmpfs:?initialized
????[????0.015786]?##?11.
????[????0.015802]?##?22.
????[????0.015811]?##?33.
????[????0.015820]?##?44.
????[????0.015825]?##?55.
????[????0.015918]?##?66.
????[????0.015999]?##?77.
????[????0.016006]?##?88.
????[????0.016058]?##?99.
????[????0.021654]?##?AA.
????[????0.021836]?###?AAA.
????[????0.022450]?VFP?support?v0.3:?implementor?41?architecture?2?part?30?variant?7?rev?4
????[????0.022721]?clocksource:?jiffies:?mask:?0xffffffff?max_cycles:?0xffffffff,?max_idle_ns:?19112604462750000?ns
????[????0.022747]?futex?hash?table?entries:?512?(order:?3,?32768?bytes)
????[????0.023540]?pinctrl?core:?initialized?pinctrl?subsystem
????[????0.024726]?NET:?Registered?protocol?family?16
????[????0.026025]?DMA:?preallocated?256?KiB?pool?for?atomic?coherent?allocations
????[????0.027158]?hw-breakpoint:?found?5?(+1?reserved)?breakpoint?and?4?watchpoint?registers.
????[????0.027173]?hw-breakpoint:?maximum?watchpoint?size?is?8?bytes.
????[????0.042711]?reg-fixed-voltage?gmac-3v3:?could?not?find?pctldev?for?node?/soc@1c00000/pinctrl@1c20800/gmac_power_pin@0,?deferring?probe
????[????0.043233]?SCSI?subsystem?initialized
????[????0.043811]?usbcore:?registered?new?interface?driver?usbfs
????[????0.043864]?usbcore:?registered?new?interface?driver?hub
????[????0.043933]?usbcore:?registered?new?device?driver?usb
????[????0.044199]?pps_core:?LinuxPPS?API?ver.?1?registered
????[????0.044209]?pps_core:?Software?ver.?5.3.6?-?Copyright?2005-2007?Rodolfo?Giometti?
????[????0.044230]?PTP?clock?support?registered
????[????0.044563]?Advanced?Linux?Sound?Architecture?Driver?Initialized.
????[????0.045501]?clocksource:?Switched?to?clocksource?arch_sys_counter
????[????0.046238]?simple-framebuffer?7fe79000.framebuffer:?framebuffer?at?0x7fe79000,?0x178e00?bytes,?mapped?to?0x(ptrval)
????[????0.046258]?simple-framebuffer?7fe79000.framebuffer:?format=x8r8g8b8,?mode=656x536x32,?linelength=2880
????[????0.052472]?Console:?switching?to?colour?frame?buffer?device?82x33
????[????0.058369]?simple-framebuffer?7fe79000.framebuffer:?fb0:?simplefb?registered!
????[????0.066686]?NET:?Registered?protocol?family?2
????[????0.067281]?tcp_listen_portaddr_hash?hash?table?entries:?512?(order:?0,?6144?bytes)
????[????0.067316]?TCP?established?hash?table?entries:?8192?(order:?3,?32768?bytes)
????[????0.067395]?TCP?bind?hash?table?entries:?8192?(order:?4,?65536?bytes)
????[????0.067522]?TCP:?Hash?tables?configured?(established?8192?bind?8192)
????[????0.067655]?UDP?hash?table?entries:?512?(order:?2,?16384?bytes)
????[????0.067722]?UDP-Lite?hash?table?entries:?512?(order:?2,?16384?bytes)
????[????0.067964]?NET:?Registered?protocol?family?1
????[????0.068567]?RPC:?Registered?named?UNIX?socket?transport?module.
????[????0.068583]?RPC:?Registered?udp?transport?module.
????[????0.068590]?RPC:?Registered?tcp?transport?module.
????[????0.068596]?RPC:?Registered?tcp?NFSv4.1?backchannel?transport?module.
????[????0.069204]?hw?perfevents:?no?interrupt-affinity?property?for?/pmu,?guessing.
????[????0.069499]?hw?perfevents:?enabled?with?armv7_cortex_a7?PMU?driver,?5?counters?available
????[????0.071072]?workingset:?timestamp_bits=30?max_order=18?bucket_order=0
????[????0.077754]?NFS:?Registering?the?id_resolver?key?type
????[????0.077803]?Key?type?id_resolver?registered
????[????0.077812]?Key?type?id_legacy?registered
????[????0.079006]?bounce:?pool?size:?64?pages
????[????0.079106]?Block?layer?SCSI?generic?(bsg)?driver?version?0.4?loaded?(major?248)
????[????0.079119]?io?scheduler?noop?registered
????[????0.079127]?io?scheduler?deadline?registered
????[????0.079295]?io?scheduler?cfq?registered?(default)
????[????0.079307]?io?scheduler?mq-deadline?registered
????[????0.079315]?io?scheduler?kyber?registered
????[????0.080074]?sun4i-usb-phy?1c13400.phy:?could?not?find?pctldev?for?node?/soc@1c00000/pinctrl@1c20800/usb0_id_detect_pin@0,?deferring?probe
????[????0.083501]?sun4i-pinctrl?1c20800.pinctrl:?initialized?sunXi?PIO?driver
????[????0.140590]?Serial:?8250/16550?driver,?8?ports,?IRQ?sharing?disabled
????[????0.143240]?console?[ttyS0]?disabled
????[????0.163431]?1c28000.serial:?ttyS0?at?MMIO?0x1c28000?(irq?=?48,?base_baud?=?1500000)?is?a?U6_16550A
????[????1.630962]?console?[ttyS0]?enabled
????[????1.661099]?1c28c00.serial:?ttyS1?at?MMIO?0x1c28c00?(irq?=?49,?base_baud?=?1500000)?is?a?U6_16550A
????[????1.702024]?1c29c00.serial:?ttyS2?at?MMIO?0x1c29c00?(irq?=?50,?base_baud?=?1500000)?is?a?U6_16550A
????[????1.723737]?sun4i-backend?1e60000.display-backend:?Couldn't?find?matching?frontend,?frontend?features?disabled
????[????1.744080]?sun4i-drm?display-engine:?bound?1e60000.display-backend?(ops?0xc07482cc)
????[????1.759592]?sun4i-backend?1e40000.display-backend:?Couldn'
t?find?matching?frontend,?frontend?features?disabled
????[????1.779827]?sun4i-drm?display-engine:?bound?1e40000.display-backend?(ops?0xc07482cc)
????[????1.795785]?sun4i-drm?display-engine:?No?panel?or?bridge?found...?RGB?output?disabled
????[????1.811456]?sun4i-drm?display-engine:?bound?1c0c000.lcd-controller?(ops?0xc074724c)
????[????1.827130]?sun4i-drm?display-engine:?No?panel?or?bridge?found...?RGB?output?disabled
????[????1.842825]?sun4i-drm?display-engine:?bound?1c0d000.lcd-controller?(ops?0xc074724c)
????[????1.858540]?sun4i-drm?display-engine:?bound?1c16000.hdmi?(ops?0xc0748cd0)
????[????1.872123]?[drm]?Supports?vblank?timestamp?caching?Rev?2?(21.10.2013).
????[????1.885344]?[drm]?No?driver?support?for?vblank?timestamp?query.
????[????1.897182]?fb:?switching?to?sun4i-drm-fb?from?simple
????[????1.907391]?Console:?switching?to?colour?dummy?device?80x30
????[????2.418984]?[drm]?Cannot?find?any?crtc?or?sizes
????[????2.428711]?[drm]?Initialized?sun4i-drm?1.0.0?20150629?for?display-engine?on?minor?0
????[????2.545528]?ahci-sunxi?1c18000.sata:?controller?can't?do?PMP,?turning?off?CAP_PMP
????[????2.560532]?ahci-sunxi?1c18000.sata:?SSS?flag?set,?parallel?bus?scan?disabled
????[????2.574817]?ahci-sunxi?1c18000.sata:?AHCI?0001.0100?32?slots?1?ports?3?Gbps?0x1?impl?platform?mode
????[????2.592721]?ahci-sunxi?1c18000.sata:?flags:?ncq?sntf?stag?pm?led?clo?only?pio?slum?part?ccc
????[????2.610642]?scsi?host0:?ahci-sunxi
????[????2.617874]?ata1:?SATA?max?UDMA/133?mmio?[mem?0x01c18000-0x01c18fff]?port?0x100?irq?36
????[????2.635546]?libphy:?Fixed?MDIO?Bus:?probed
????[????2.643735]?CAN?device?driver?interface
????[????2.652152]?sun7i-dwmac?1c50000.ethernet:?PTP?uses?main?clock
????[????2.663680]?sun7i-dwmac?1c50000.ethernet:?no?reset?control?found
????[????2.676345]?ehci_hcd:?USB?2.0?'
Enhanced'?Host?Controller?(EHCI)?Driver
????[????2.689416]?ehci-platform:?EHCI?generic?platform?driver
????[????2.700248]?ohci_hcd:?USB?1.1?'
Open'?Host?Controller?(OHCI)?Driver
????[????2.712647]?ohci-platform:?OHCI?generic?platform?driver
????[????2.725114]?sunxi-rtc?1c20d00.rtc:?registered?as?rtc0
????[????2.735252]?sunxi-rtc?1c20d00.rtc:?RTC?enabled
????[????2.744274]?i2c?/dev?entries?driver
????[????2.752374]?axp20x-i2c?1-0034:?AXP20x?variant?AXP209?found
????[????2.778365]?input:?axp20x-pek?as?/devices/platform/soc@1c00000/1c2ac00.i2c/i2c-1/1-0034/axp20x-pek/input/input0
????[????2.799556]?ldo1:?supplied?by?regulator-dummy
????[????2.808582]?ldo2:?supplied?by?regulator-dummy
????[????2.818392]?ldo3:?supplied?by?regulator-dummy
????[????2.827795]?ldo4:?supplied?by?regulator-dummy
????[????2.836730]?ldo5:?supplied?by?regulator-dummy
????[????2.846544]?dcdc2:?supplied?by?regulator-dummy
????[????2.856093]?dcdc3:?supplied?by?regulator-dummy
????[????2.866705]?axp20x-i2c?1-0034:?AXP20X?driver?loaded
????[????2.877918]?Registered?IR?keymap?rc-empty
????[????2.886099]?rc?rc0:?sunxi-ir?as?/devices/platform/soc@1c00000/1c21800.ir/rc/rc0
????[????2.900854]?input:?sunxi-ir?as?/devices/platform/soc@1c00000/1c21800.ir/rc/rc0/input1
????[????2.916966]?sunxi-ir?1c21800.ir:?initialized?sunXi?IR?driver
????[????2.930370]?sunxi-wdt?1c20c90.watchdog:?Watchdog?enabled?(timeout=16?sec,?nowayout=0)
????[????2.949908]?sunxi-mmc?1c0f000.mmc:?Got?CD?GPIO
????[????2.957174]?ata1:?SATA?link?down?(SStatus?0?SControl?300)
????[????2.984443]?sunxi-mmc?1c0f000.mmc:?base:0x(ptrval)?irq:30
????[????2.996403]?sun4i-ss?1c15000.crypto-engine:?Die?ID?0
????[????3.008208]?usbcore:?registered?new?interface?driver?usbhid
????[????3.019411]?usbhid:?USB?HID?core?driver
????[????3.028477]?random:?fast?init?done
????[????3.038082]?sun4i-codec?1c22c00.codec:?ASoC:?Failed?to?create?component?debugfs?directory
????[????3.055988]?sun4i-codec?1c22c00.codec:?Codec?<->?1c22c00.codec?mapping?ok
????[????3.070975]?NET:?Registered?protocol?family?17
????[????3.079931]?can:?controller?area?network?core?(rev?20170425?abi?9)
????[????3.092458]?NET:?Registered?protocol?family?29
????[????3.101361]?can:?raw?protocol?(rev?20170425)
????[????3.109908]?can:?broadcast?manager?protocol?(rev?20170425?t)
????[????3.121240]?can:?netlink?gateway?(rev?20170425)?max_hops=1
????[????3.132444]?Key?type?dns_resolver?registered
????[????3.141113]?Registering?SWP/SWPB?emulation?handler
????[????3.155150]?mmc0:?host?does?not?support?reading?read-only?switch,?assuming?write-enable
????[????3.162888]?sun7i-dwmac?1c50000.ethernet:?PTP?uses?main?clock
????[????3.182777]?sun7i-dwmac?1c50000.ethernet:?no?reset?control?found
????[????3.194864]?mmc0:?new?high?speed?SDHC?card?at?address?59b4
????[????3.206939]?mmcblk0:?mmc0:59b4?USD00?7.32?GiB
????[????3.217882]??mmcblk0:?p1?p2
????[????3.305735]?sun7i-dwmac?1c50000.ethernet:?Version?ID?not?available
????[????3.318137]?sun7i-dwmac?1c50000.ethernet:????DWMAC1000
????[????3.328068]?sun7i-dwmac?1c50000.ethernet:?DMA?HW?capability?register?supported
????[????3.342498]?sun7i-dwmac?1c50000.ethernet:?Normal?descriptors
????[????3.353804]?sun7i-dwmac?1c50000.ethernet:?Ring?mode?enabled
????[????3.372879]?libphy:?stmmac:?probed
????[????3.379711]?mdio_bus?stmmac-0:00:?attached?PHY?driver?[unbound]?(mii_bus:phy_addr=stmmac-0:00,?irq=POLL)
????[????3.398646]?mdio_bus?stmmac-0:01:?attached?PHY?driver?[unbound]?(mii_bus:phy_addr=stmmac-0:01,?irq=POLL)
????[????3.437826]?ehci-platform?1c14000.usb:?EHCI?Host?Controller
????[????3.449048]?ehci-platform?1c14000.usb:?new?USB?bus?registered,?assigned?bus?number?1
????[????4.445622]?[drm]?Cannot?find?any?crtc?or?sizes
????[????4.454972]?ehci-platform?1c14000.usb:?irq?32,?io?mem?0x01c14000
????[????4.495500]?ehci-platform?1c14000.usb:?USB?2.0?started,?EHCI?1.00
????[????4.508602]?hub?1-0:1.0:?USB?hub?found
????[????4.516156]?hub?1-0:1.0:?1?port?detected
????[????4.524842]?ehci-platform?1c1c000.usb:?EHCI?Host?Controller
????[????4.536034]?ehci-platform?1c1c000.usb:?new?USB?bus?registered,?assigned?bus?number?2
????[????4.551813]?ehci-platform?1c1c000.usb:?irq?37,?io?mem?0x01c1c000
????[????4.585504]?ehci-platform?1c1c000.usb:?USB?2.0?started,?EHCI?1.00
????[????4.598505]?hub?2-0:1.0:?USB?hub?found
????[????4.606055]?hub?2-0:1.0:?1?port?detected
????[????4.614695]?ohci-platform?1c14400.usb:?Generic?Platform?OHCI?controller
????[????4.627974]?ohci-platform?1c14400.usb:?new?USB?bus?registered,?assigned?bus?number?3
????[????4.643687]?ohci-platform?1c14400.usb:?irq?33,?io?mem?0x01c14400
????[????4.730281]?hub?3-0:1.0:?USB?hub?found
????[????4.737832]?hub?3-0:1.0:?1?port?detected
????[????4.746524]?ohci-platform?1c1c400.usb:?Generic?Platform?OHCI?controller
????[????4.759793]?ohci-platform?1c1c400.usb:?new?USB?bus?registered,?assigned?bus?number?4
????[????4.775542]?ohci-platform?1c1c400.usb:?irq?38,?io?mem?0x01c1c400
????[????4.860311]?hub?4-0:1.0:?USB?hub?found
????[????4.867876]?hub?4-0:1.0:?1?port?detected
????[????4.876658]?usb_phy_generic?usb_phy_generic.0.auto:?usb_phy_generic.0.auto?supply?vcc?not?found,?using?dummy?regulator
????[????4.898584]?musb-hdrc?musb-hdrc.1.auto:?MUSB?HDRC?host?driver
????[????4.910112]?musb-hdrc?musb-hdrc.1.auto:?new?USB?bus?registered,?assigned?bus?number?5
????[????4.926629]?hub?5-0:1.0:?USB?hub?found
????[????4.934193]?hub?5-0:1.0:?1?port?detected
????[????4.942801]?sunxi-rtc?1c20d00.rtc:?setting?system?clock?to?1970-01-01?00:00:11?UTC?(11)
????[????4.959189]?vcc3v0:?disabling
????[????4.965121]?vcc5v0:?disabling
????[????4.971086]?usb0-vbus:?disabling
????[????4.977556]?ALSA?device?list:
????[????4.983479]???#0:?sun4i-codec
????[????4.989417]?###?BBB.
????[????4.997149]?EXT4-fs?(mmcblk0p2):?INFO:?recovery?required?on?readonly?filesystem
????[????5.011809]?EXT4-fs?(mmcblk0p2):?write?access?will?be?enabled?during?recovery
????[????5.029755]?EXT4-fs?(mmcblk0p2):?recovery?complete
????[????5.090424]?EXT4-fs?(mmcblk0p2):?mounted?filesystem?with?ordered?data?mode.?Opts:?(null)
????[????5.106669]?VFS:?Mounted?root?(ext4?filesystem)?readonly?on?device?179:2.
????[????5.121202]?devtmpfs:?mounted
????[????5.127186]?##?111.
????[????5.132783]?Freeing?unused?kernel?memory:?1024K
????[????5.141851]?##?2.
????
????

可以看到從第 5 行到第 12 行區(qū)區(qū)幾個(gè)函數(shù),竟然打印了那么多,而且還看到了眾多驅(qū)動(dòng)相關(guān)的打印,如 usbConsoleKeyiopinctrlSerialCANRTCinputmmcmdio_bus,說明我們整天開發(fā)的驅(qū)動(dòng),是在這個(gè)階段初始化的呀。這里我直接給出調(diào)用關(guān)系,可以看到,驅(qū)動(dòng)相關(guān)的打印是在 do_initcalls() 中產(chǎn)生的

kernel_init()
kernel_init_freeable()
do_basic_setup()
printk("###?AAA.\n");
do_initcalls();
printk("###?BBB.\n");????

static?void?__init?do_initcalls(void)
{
??int?level;

??for?(level?=?0;?level?????do_initcall_level(level);
}
????
do_initcalls() 函數(shù)循環(huán)將編譯進(jìn)內(nèi)核的內(nèi)核模塊的初始化函數(shù)依次調(diào)用一遍。這些初始化函數(shù)也是有等級(jí)的,總共有 7 個(gè)級(jí)別 1-7,數(shù)字越大,級(jí)別越低,被調(diào)用的就越晚。其中我們最長(zhǎng)用的 module_init() 為第 6 級(jí),等級(jí)算是比較低的了,調(diào)用也會(huì)較晚,想想也是,好多外部模塊都是使用的 module_init(),它們可都是在內(nèi)核完全啟動(dòng)后,再手動(dòng)安裝的呀,更晚。
這個(gè)階段打印了很多 log,說明內(nèi)核中大部分的代碼都是驅(qū)動(dòng),內(nèi)核中寫了大量的內(nèi)核模塊初始化的函數(shù)。

驅(qū)動(dòng)初始化完,內(nèi)核也就接近尾聲了

????[????4.989417]?###?BBB.
????[????4.997149]?EXT4-fs?(mmcblk0p2):?INFO:?recovery?required?on?readonly?filesystem
????[????5.011809]?EXT4-fs?(mmcblk0p2):?write?access?will?be?enabled?during?recovery
????[????5.029755]?EXT4-fs?(mmcblk0p2):?recovery?complete
????[????5.090424]?EXT4-fs?(mmcblk0p2):?mounted?filesystem?with?ordered?data?mode.?Opts:?(null)
????[????5.106669]?VFS:?Mounted?root?(ext4?filesystem)?readonly?on?device?179:2.
????[????5.121202]?devtmpfs:?mounted
????[????5.127186]?##?111.
????[????5.132783]?Freeing?unused?kernel?memory:?1024K
????[????5.141851]?##?2.
????[????5.145862]?##?3.
????[????5.149703]?##?4.
????[????5.162188]?##?kernel_init()?-->?/sbin/init
????##?init_main()
????[????5.232554]?EXT4-fs?(mmcblk0p2):?re-mounted.?Opts:?(null)
????Starting?syslogd:?OK
????Starting?klogd:?OK
????Running?sysctl:?OK
????Initializing?random?number?generator:?OK
????Saving?random?seed:?[????5.377468]?random:?dd:?uninitialized?urandom?read?(512?bytes?read)
????OK
????Starting?network:?OK
????
????Welcome?to?Bananapi?M1
????buildroot?login:
????
????
  • 掛載根文件系統(tǒng)
  • 內(nèi)核收尾工作
  • kernel_init 內(nèi)核線程調(diào)用 do_execve 函數(shù),去執(zhí)行 init 程序,產(chǎn)生 init 進(jìn)程(1 號(hào)進(jìn)程)。該內(nèi)核線程終結(jié)。

rest_init() 函數(shù)的最后一句 cpu_startup_entry(CPUHP_ONLINE); 最終變成了 idle 進(jìn)程(0 號(hào)進(jìn)程)。

???void?cpu_startup_entry(enum?cpuhp_state?state)
????{
?????/*
??????*?This?#ifdef?needs?to?die,?but?it's?too?late?in?the?cycle?to
??????*?make?this?generic?(ARM?and?SH?have?never?invoked?the?canary
??????*?init?for?the?non?boot?CPUs!).?Will?be?fixed?in?3.11
??????*/
????#ifdef?CONFIG_X86
?????/*
??????*?If?we're?the?non-boot?CPU,?nothing?set?the?stack?canary?up
??????*?for?us.?The?boot?CPU?already?has?it?initialized?but?no?harm
??????*?in?doing?it?again.?This?is?a?good?place?for?updating?it,?as
??????*?we?wont?ever?return?from?this?function?(so?the?invalid
??????*?canaries?already?on?the?stack?wont?ever?trigger).
??????*/
?????boot_init_stack_canary();
????#endif
?????arch_cpu_idle_prepare();
?????cpuhp_online_idle(state);
?????while?(1)
??????do_idle();
????}
????

而在 kernel_init 同期稍晚創(chuàng)建的 kthreadd 內(nèi)核線程,則一直存在,成為 2 號(hào)進(jìn)程

    # ps    PID   USER     COMMAND        1 root     init        2 root     [kthreadd]        3 root     [rcu_gp]        4 root     [rcu_par_gp]        7 root     [kworker/u4:0-ev]        8 root     [mm_percpu_wq]        9 root     [ksoftirqd/0]    ...

原文:https://liyongjun.blog.csdn.net/article/details/121529063

文章來源于網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。



關(guān)注我【一起學(xué)嵌入式】,一起學(xué)習(xí),一起成長(zhǎng)。



覺得文章不錯(cuò),點(diǎn)擊“分享”、“”、“在看” 唄!

一起學(xué)嵌入式 公眾號(hào)【一起學(xué)嵌入式】,RTOS、Linux編程、C/C++,以及經(jīng)驗(yàn)分享、行業(yè)資訊、物聯(lián)網(wǎng)等技術(shù)知
評(píng)論
  • 樓宇自控里的“巴別塔”一棟智慧樓宇、一個(gè)產(chǎn)業(yè)園區(qū)里,暖通空調(diào)運(yùn)行著廠商私有協(xié)議,照明系統(tǒng)遵循專屬通信標(biāo)準(zhǔn),變配電、門禁安防各成體系——設(shè)備間數(shù)據(jù)壁壘森嚴(yán),上位平臺(tái)對(duì)接全靠定制化 “翻譯” 開發(fā),不僅成本高企,交付周期也難以管控。這就是樓宇自控行業(yè)多年的痛點(diǎn):協(xié)議林立、封閉林立。而破局的鑰匙,早在30多年前就已經(jīng)寫好了——BACnet。作為ASHRAE制定的樓宇自控國(guó)際標(biāo)準(zhǔn)協(xié)議,BACnet是如今全球樓宇自控系統(tǒng)(BAS)互聯(lián)互通的“通用語言”。新風(fēng)機(jī)、冷源群控、變配電、照明、門禁,凡是需要被樓宇
    飛凌嵌入式 2026-08-10 09:26 203瀏覽
  • 在物聯(lián)網(wǎng)從“萬物互聯(lián)”邁向“萬物智聯(lián)”的進(jìn)程中,LTE Cat.1憑借其在速率、成本與網(wǎng)絡(luò)覆蓋之間的完美平衡,正成為中低速物聯(lián)網(wǎng)市場(chǎng)的絕對(duì)主力。隨著2G/3G網(wǎng)絡(luò)的逐步退網(wǎng)以及新國(guó)標(biāo)對(duì)終端設(shè)備智能化、定位功能的強(qiáng)制要求,Cat.1模組迎來了爆發(fā)式的增長(zhǎng)窗口。在這一關(guān)鍵節(jié)點(diǎn),基于華為海思Hi2131芯片設(shè)計(jì)的LTE Cat.1模組,憑借其在能效、射頻、架構(gòu)及物理規(guī)格上的底層創(chuàng)新,成功打破了“高性能必高功耗”的傳統(tǒng)魔咒,為行業(yè)提供了極具競(jìng)爭(zhēng)力的連接最優(yōu)解。核心技術(shù)優(yōu)勢(shì):重塑Cat.1能效與連接標(biāo)桿海
    用戶1778981989717 2026-08-05 21:04 205瀏覽
  • 做藍(lán)牙音箱的工程師大概都碰過這個(gè)局面。產(chǎn)品要連手機(jī)放歌,要本地播開機(jī)提示音和按鍵音,還要接 App 做配網(wǎng)和狀態(tài)上報(bào)。三件事拆開,早先的常規(guī)做法是音頻藍(lán)牙一顆料、數(shù)傳藍(lán)牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫越大,BOM 越算越貴,待機(jī)電流和固件工作量也跟著漲。WT2605C 出來以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍(lán)牙、BLE 數(shù)傳和 MP3 本地播放三樣全包了。對(duì)藍(lán)牙音箱來說,最實(shí)在的好處就
    唯創(chuàng)知音語音芯片 2026-08-06 15:14 365瀏覽
  • 摘要東莞市恒創(chuàng)連接器有限公司(HCHGCONN)是位于廣東東莞的連接器源頭制造工廠,專注于連接器國(guó)產(chǎn)替代、小間距大電流連接器、線對(duì)板連接器、線對(duì)線連接器、板對(duì)板連接器、電源連接器及定制連接器開發(fā)。公司面向工業(yè)自動(dòng)化、新能源儲(chǔ)能、BMS、汽車電子、AI服務(wù)器、GPU供電、通信設(shè)備、醫(yī)療設(shè)備和智能家居等場(chǎng)景,提供從產(chǎn)品選型、替代評(píng)估、樣品驗(yàn)證到批量交付的一站式連接方案。恒創(chuàng)可支持 Molex、TE Connectivity、JST、Hirose、Samtec 等國(guó)際品牌部分系列的國(guó)產(chǎn)替代評(píng)估。常見替
    HC003 2026-08-07 10:14 162瀏覽
  • 做電池供電攝像頭、可視門鈴、戶外安防的同學(xué)應(yīng)該都踩過這個(gè)坑:攝像頭要拍,ISP、sensor、無線模塊全得開著,整機(jī)電流動(dòng)輒幾百 mA。一節(jié) 18650 撐不了幾天,用戶投訴“怎么又沒電了”。有人會(huì)說:加個(gè) PIR 人體紅外不就行了?問題是 PIR 怕熱、怕寵物、怕隔著亞克力/玻璃殼,而且只能感知“有溫差的人體移動(dòng)”,靈敏度飄忽。真正省電的思路應(yīng)該是:讓攝像頭平時(shí)徹底睡死,只有“前面有人/有動(dòng)靜”時(shí)才被一鍵喚醒——而負(fù)責(zé)這個(gè)“看門”角色的,最合適的是一顆低功耗雷達(dá)。一、為什么是雷達(dá),而不是 PI
    唯創(chuàng)知音語音芯片 2026-08-07 14:44 177瀏覽
  • 產(chǎn)品使用18V供電,配套4串鋰離子電池,需要設(shè)計(jì)一個(gè)充電器。因?yàn)檩斎?8V,電池最高 16.8V,壓差僅 1.2V。因?yàn)閴翰钐 J褂瞄_關(guān)型的充電控制芯片不穩(wěn)定。嘗試自行設(shè)計(jì)一個(gè)。整體采用分立三極管 + TL431架構(gòu),分4個(gè)功能單元:使能控制回路、限流環(huán)路、TL431 精密恒壓反饋環(huán)路、PNP 功率管主功率輸出回路;實(shí)現(xiàn)完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經(jīng) R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導(dǎo)通,對(duì)地拉低 R1、R2 組成的分壓控制節(jié)點(diǎn)電位;該節(jié)點(diǎn)直
    southcreek 2026-08-07 13:45 482瀏覽
  • 文:杜杰編輯:侯煜當(dāng)?shù)貢r(shí)間7月28日,美國(guó)特朗普政府落地最新科技封鎖政策,美國(guó)聯(lián)邦通信委員會(huì)(FCC)正式更新《受管制清單》,新增兩大類設(shè)備——境外生產(chǎn)的先進(jìn)機(jī)器人設(shè)備、境外生產(chǎn)的聯(lián)網(wǎng)電力逆變器。FCC在官方情況說明書中明確,該類境外制造產(chǎn)品,“會(huì)對(duì)美國(guó)國(guó)家安全或美國(guó)民眾的人身安全構(gòu)成無法承受的風(fēng)險(xiǎn)”。本次新規(guī)設(shè)置明確豁免機(jī)制:經(jīng)美國(guó)國(guó)防部(DoW)、電力逆變器品類經(jīng)美國(guó)國(guó)土安全部(DHS)審核并授予“有條件批準(zhǔn)”,認(rèn)定對(duì)應(yīng)設(shè)備品類不存在重大安全風(fēng)險(xiǎn),即可獲得準(zhǔn)入豁免。同時(shí)政策嚴(yán)格執(zhí)行新老劃斷原
    華爾街科技眼 2026-08-03 21:28 367瀏覽
  • ?摘要:低價(jià)大流量卡正全面退市,政策收緊已成定局。面對(duì)傳統(tǒng)號(hào)卡的不確定性,隨身WiFi憑借穩(wěn)定連接、多設(shè)備共享、獨(dú)立設(shè)備和靈活套餐等優(yōu)勢(shì),成為務(wù)實(shí)可靠的備選方案。1、流量卡黃金時(shí)代要結(jié)束了通信行業(yè)正迎來一場(chǎng)前所未有的“地震式”調(diào)整——曾讓無數(shù)用戶追捧的低價(jià)大流量卡,正在全速退出各大平臺(tái)。這早已不是一次普通的競(jìng)合,而是一場(chǎng)趨勢(shì)性的行業(yè)洗牌。回望過去,19元200G的神卡,那時(shí)真是“睡著都能笑醒”,便宜到不敢相信,爽到忍不住炫耀。那些日子,好像隨便刷、隨便看,流量自由觸手可及。可如今,回頭再看,那種
    愛上電路設(shè)計(jì) 2026-08-03 10:21 128979瀏覽
  • 導(dǎo)語在現(xiàn)代高速數(shù)字電路設(shè)計(jì)中,信號(hào)的完整性已不僅是理想波形推演,而是一場(chǎng)與物理非理想特性正面博弈的工程實(shí)踐。濾波器芯片作為凈化傳輸鏈路的關(guān)鍵屏障,其核心挑戰(zhàn)在于:能否有效識(shí)別并濾除那些隱匿在電平跳變過程中的亞納秒級(jí)瞬態(tài)脈沖干擾,這類干擾持續(xù)極短,卻足以在高速鏈路中引發(fā)誤觸發(fā)。然而,傳統(tǒng)函數(shù)發(fā)生器受限于采樣率與邊沿速率,根本無法忠實(shí)復(fù)現(xiàn)如此狹窄且陡峭的異常波形。針對(duì)此困境,德思特TS-AWG7000系列任意波形發(fā)生器以17 GS/s采樣率與50 ps原生邊沿速度,為瞬態(tài)脈沖提供精細(xì)刻畫,配合SPG
    德思特測(cè)試測(cè)量 2026-08-05 14:06 5瀏覽
  • 摘要在防爆電氣設(shè)計(jì)中,只參照芯數(shù)選型而忽略額定載流量,長(zhǎng)期滿負(fù)荷運(yùn)行會(huì)出現(xiàn)插頭發(fā)熱、接觸面氧化、IP67 密封受熱老化等問題。結(jié)合常用 3 針 3 孔、4 芯、5PIN、8PIN 圓形防爆連接器,制作分級(jí)電流參數(shù)對(duì)照表,區(qū)分冷壓免焊接、焊接兩種接線結(jié)構(gòu)的安全載流數(shù)值,設(shè)置合理電流冗余系數(shù),搭配使用環(huán)境修正參數(shù),規(guī)范防爆接近開關(guān)連接器、防爆法蘭插座的選型計(jì)算方式。關(guān)鍵詞圓形防爆連接器,載流參數(shù)表,防爆法蘭插座,防爆端子接頭,IP67 防爆防水接插件1 產(chǎn)品概述圓形防爆連接器觸點(diǎn)載流能力由插針直徑、
    kyfbest科迎法電氣 2026-08-03 09:18 128703瀏覽
  • 在前六期中,我們已經(jīng)分別討論了 CRA 的適用范圍、整體影響、漏洞通報(bào)義務(wù)、風(fēng)險(xiǎn)評(píng)估與技術(shù)文檔證據(jù)鏈、第三方組件與 SBOM 供應(yīng)鏈治理,以及產(chǎn)品上市后的支持期、安全更新、用戶說明和終止支持管理。到這里,企業(yè)已經(jīng)能夠回答幾個(gè)核心問題:產(chǎn)品是否落入 CRA 適用范圍,產(chǎn)品由哪些組件構(gòu)成,企業(yè)如何證明自己在設(shè)計(jì)、開發(fā)和上市前采取了必要的安全措施,以及產(chǎn)品上市后如何持續(xù)維護(hù)和安全下線。但對(duì)于真正準(zhǔn)備落地 CRA 合規(guī)的企業(yè)來說,還有一個(gè)更現(xiàn)實(shí)的問題:CRA 的法規(guī)條文相對(duì)原則化,企業(yè)應(yīng)當(dāng)如何把“網(wǎng)絡(luò)安
    虹科云科技 2026-08-03 16:51 251667瀏覽
  • 一、方案簡(jiǎn)介在Buildroot構(gòu)建的嵌入式Linux系統(tǒng)中部署Flutter應(yīng)用,主流有兩套成熟的開源方案,分別適配不同的顯示場(chǎng)景與開發(fā)需求:方案一:flutter-elinux(Sony開源方案)由索尼官方維護(hù)的嵌入式Linux Flutter工具鏈,既支持DRM/GBM直接渲染,也兼容Wayland、X11等多種顯示后端,場(chǎng)景適配性更廣。方案二:flutter-pi(輕量級(jí)嵌入器)一款輕量級(jí)Flutter引擎宿主程序,僅基于底層DRM/GBM接口實(shí)現(xiàn)渲染,無需依賴桌面環(huán)境,資源占用更低,更
    飛凌嵌入式 2026-08-07 09:34 160瀏覽
  • 讓微弱脈沖信號(hào)更清晰——鎖相放大器集成Boxcar平均器在脈沖激光、泵浦-探測(cè)、時(shí)間分辨光譜、飛行時(shí)間質(zhì)譜等實(shí)驗(yàn)中,真正需要測(cè)量的信號(hào)往往只出現(xiàn)在一個(gè)很短的時(shí)間窗口內(nèi),卻被淹沒在遠(yuǎn)大于它的噪聲和背景之中。 針對(duì)這類穩(wěn)定重復(fù)的微弱脈沖與瞬態(tài)信號(hào),賽恩科儀為OE2052雙通道數(shù)字鎖相放大器帶來全新的Boxcar Averager功能升級(jí):在鎖相檢測(cè)之外,進(jìn)一步提供從周期波形觀察、門控測(cè)量到多周期平均的完整數(shù)字Boxcar測(cè)量鏈路。 Boxcar平均器,如何從噪聲中“截取”目標(biāo)信號(hào)?Boxcar平均器
    SSI_賽恩科儀 2026-08-07 15:49 15513瀏覽
  •        很多人只見過封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩(wěn)定起振的成品,要經(jīng)過十幾道精密工序。它內(nèi)部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個(gè)生產(chǎn)過程里哪怕0.1微米的誤差,都會(huì)直接廢掉整批產(chǎn)品,這也是小尺寸晶振過去長(zhǎng)期依賴進(jìn)口,國(guó)內(nèi)廠商花了十幾年才啃下量產(chǎn)硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
    TKD泰晶科技 2026-08-07 08:43 524瀏覽
  •                                                                        
    廣州鐵金剛 2026-08-06 17:44 214394瀏覽
我要評(píng)論
0
點(diǎn)擊右上角,分享到朋友圈 我知道啦
請(qǐng)使用瀏覽器分享功能 我知道啦
主站蜘蛛池模板: 异世界四重奏| 天美影院在线观看电视剧免费| 高清百鬼夜行抄未删减| 俄罗斯电影《绣感》在线观看| 太阳之歌下载| 加菲猫家族国语版免费观看| 湔雪的魔女| 2对1:三人一次性体检韩国伦理| 插式治疗专业医院1-5集| 夫妻一场 19楼| 女子在大理洱海裸泳| 永不磨灭电视剧免费西瓜| 你好老叔| 韩国电影理发店特殊待遇演员表| 密爱 优酷| XL司令| 走进新时代歌谱| 阴阳路1-20全集免费| 安姨《房屋售楼员》播放| 最近我的妹妹有点怪电影| 韩国三级丝袜销售在线播放| 勿扰警告| 《庆余年2》第107集| 落魄贵族琉璃川免费观看| 马斯克回应儿子想与自己断绝关系| 修理工的艳遇 电影 | 激战丛林》完整版免费| 德国炸毁最现代化电厂| 《美容院的特殊待遇》在线观看| 谎言大作战| 小舍得电视剧全集免费观看完整版| 花千骨全集未删减版在哪里可以看 | 石门风云| 双人调情按摩术韩国在线观看| 因为太怕痛所以就全点防御力了| 漂亮妈妈7字头| 我们在黑暗中相拥电视剧免费观看| 艾薇儿最新mv| 建宁县| 伦敦奥运会男子篮球决赛| 金银悔5-1| 新包青天在线观看免费完整版| 莫莉的特殊酒店电影免费观看| 唐朝禁宫秘史在线观看| 嫣语赋电视剧在线高清免费观看| 残骸电影免费观看完整版| 草莓100| 我要上你1978法国原版| 来了在线观看| 公浮之手中2(国语版)| 临时保姆免费观看| 蚌埠市| 秀丽江山之长歌行电视剧| 卢湾区| 康熙来了2009| 《和讨厌的部长出差》大结局免费看| 默杀 电影| 法国《空乘15》艾米丽| 中国梦之声第一季| 牙医诊所电影赤板栗免费完整版| 五福临门电视剧免费观看全集高清| 女超人2013| 王牌保安电影| 《巨乳女教师波多野吉衣电影| 美味姨母2在线播放| 天芒传奇| 你的名字在线观看完整版免费| 太极马畅| 平顺县| 岳母幸福生活| 维修师傅的艳遇韩国电影| 台剧黛比浪漫女家教1免费播放 | 朴诗妍《爱的释放》电视剧在线观看| 加勒比女海盗HD 在线| 女战狼10免费播放在线观看西瓜| 苦口婆心比喻什么人| 世上只有妈妈好电影免费播放| 地下偶像sana未增删带翻译| 高清《外出》无删减床戏片段| 理发店里的特殊待遇电影| 《甄嬛传》免费看| 啄木鸟《军事不当行为》| 潜规则 电影| 好运家 电视剧| 97在线观看免费高清电视剧大全八戒 | 茶狐杯copfox官网| 水手服饲育电影高清完整版| c字裤内衣秀全透明| 睫毛膏1983在线观看完整版| 夫妻一场 19楼| 秦时明月6沧海横流| 星刻的龙骑士免费观看| 荒岛求生电影完整版| XL司令第一季全集免费完整版| 苦尽柑来遇见你 电视剧| 《部长出差的日子》在线电影播放| 小偷家族电影观看完整版| 伦理《法国护士长》2006免费在线观看 | 安塔芮丝百度影音| 瑟瑟视频在线观看| 哈利波特1—8免费观看| 初二数学难题| 刀锋之上苏联电影免费观看| 今夜有戏 杨幂| 男女一起愁愁愁免费全集高清电视剧 | 欢乐群家长第二季| 恋人是消防员2未删减| 沙漠行动满天星版免费观看在线 | 《美容院:特殊待遇在线观看 | 正在播放: JUL-520 留下好色的老爹和软弱的妻子 我去了三天两夜的出差... 成 | 人民的名义电视剧| 意大利出生入死| 大耳朵图图智慧王国| 北辰区| 好奇实验室| 爱丫爱丫免费高清全集| 搜查瑠公圳| 妈妈的职业5完整版结局| 一酷到底| 美乃雀所有影片免费观看| 布兰妮不雅照| 新白发魔女转| 爱天地无用| 爱人体网| 《芬芳喜事》免费观看| 美女医生旗袍上班| 美国版荷尔蒙6免费观看| 黄河大侠电影| 《美容院:特殊待遇》免费看| 《忧郁少女1977》意大利| 哇嘎电影免费播放网站大全| 电视剧 雪豹| 捷德奥特曼剧场版免费观看中文版| 电影上位在线观看| 八仙全传之八仙过海全集| 喜爱夜蒲 2| 《东游记》30集全| 壮志凌云女版满天星法版免费| 火星哥treasure| 插曲的痛30集全集免费播| 暮光之城4下| 第三使徒| 少妇的诱惑免费观看完整版中文| 最美逆行者| 你到底想要什么电影在线观看| 洛城特警| 魔人扎克| 狙击手在线观看免费完整版电影| 女版战狼6全集免费看| 使徒行者免费| 星克莱尔《总统》在线| 第一次的辣妹无修| 战狼6欧美版免费资源下载| 好想告诉你电影版下载| 银河奥特曼剧场版| 美丽小蜜桃4:美丽人生| 案发现场第二部下载| 跨越百年的美丽主要内容| 年轻漂亮大胸继拇2| 电车痴汉下载| 高清原始战争| 郭达蔡明小品打针| 对手多少集| 变种食人鱼| 蛇舌完整版| zztt60.ccm黑料| 保康县| 军统的女人| 《XL司令》动漫第一季动漫| 龙胆虎威4下载| 乐麦迪在线| 犬夜叉完结篇国语版全集| 爱有多深| 回复术士之重启人生第二季在线观看| 邓超羽泉| 最后的决战| 喜爱夜蒲在线看| 湖南省| 一起再看流星雨1| 美国新版娃娃脸9| 以法之名全集免费观看| 战狼6高清完整免费观看国语电影| 我们一起来看流星雨| 正在播放:【传媒】MDSR0006-2 《小凤新婚》下集-高冷新妻性奴 - 17 | 情靡短剧全集免费观看完整版| 四周恋人第二季| 一起吃拉面吗| 人世间原唱| 妈妈爱上儿子同学完整版电影 | 闵度允韩剧中文在线观看| 自白在线观看完整版电影| 被可怕的科长欺负的员工电影名字是 | 电视剧大唐荣耀| 善良的嫂子4字巴巴鱼汤饭惹| 新妈妈在线免费观看| 女佣变凤凰| 钢琴师电影| 阿健要努力活着| 刘敏涛老公常乐| 苍兰诀免费观看完整版电视剧| 七年级上册英语人教版教学视频| 不能没有娘| 换妻换上瘾| 四大名捕重出江湖| 神话 高清| 陈陈相因| 电影《血战诺门坎》免费观看全集| 电影《最亲密的兄妹》在线看| 台剧黛比浪漫女家教在线观看免费第6 | 高清另一个贝内特家的姐妹| 老同学6普通话版免费观看| 三十而立剧情介绍| 锵锵锵免费完整观看在线观看电影 | 2007农民下乡免费观看完整版| 韩版花样男子国语版| 公之浮之中字5HD年纪大| 美人鱼全集| 需要爸爸来播种免费观看| 波斯语课| 大江大河3全53集下载| 新恋爱时代演员| 耻辱 电影| 泰剧丘比特之路| 落花时节又逢君电视| 最终幻想6| 欢乐喜剧人第二季完整版免费| 上错花骄嫁对郎| 神级选择:每次都选对短剧全集| 终末的女武神 樱花| 潜艇伟伟迷的个人主页| 日和 中文配音| 王星越五福临门免费观看| 《继承者》在线观看| 恐怖游泳馆大直和艾丽在水池| 抗联敢死队之红雪| 精灵幻想记动漫在线观看| 烟卡稀有度排名| 面对面美剧| 《妈咪快跑爹地》续集| 这公司有我喜欢的人动漫完整版| 鸭王2电影在线免费观看| 香瓜七兄弟全集爱奇艺| 黑暗荣耀第一季无删减在线观看| 大力女子姜南顺电视剧| 孩子王在线观看| 高清《初入职场·金融季》| 孤注一掷在线观看高清免费张艺兴 | 我经过风暴| 《图书馆的女友》1-6集结局 | 双人调情按摩| 恶行之外粤语版免费观看| 美国式禁忌3:做爰| 高清《人生第一次》在线观看| 爱几何完整版| 隐形战队国语电视剧免费观看| 欧式少女第16集全集高清版观看视频 | 荷尔蒙6免费中文版| 简言的夏冬全集免费播放| 美景之屋6普通话版百度云 | 唐探1900 电影| 德国女子亲卫队满天星1973在线观看 | 荷尔蒙6电影免费观看| 花样年华电影未删减完整版| 华丽的外出| 明星的恋人电视剧| 美国空乘免费完整版在线观看| 重生之锦绣嫡女短剧全集| over樱花flow| 周杰伦林俊杰合唱稻香| 浴火奔腾1983美国版演员表 | 《你的指尖扰乱我的心弦》| 最后的战士电视剧免费观看| 女超人麦乐迪完整版资源| 熊出没之城市大冒险| 沙漠行动在线观看满天星| 大南迁全集在线观看| 私人航空免费在线观看完整版 | 荷尔蒙3中文版| 地味变2未增删樱花米粒米粒 | 高清《姐弟恋》动漫免费观看全集| 《晚安为我而眠》免费观看全集| 春光灿烂周三强| 桑德拉拉索满天星全集免费播放| 江桥决战| 法国高压2监监完整版| 向往的生活第2季| 学生的妈妈在线播放| 台湾骂人的话| 加勒比海盗惊涛怪浪| 我是传奇电视剧全集| 《在你被判死刑之前》| 大锅饭养懒汉| 折磨电影| 厨房激战在线观看| 先生你哪位| 《私人家教》在线观看| 宿敌在线观看| 爱我几何130| 万物理论迅雷下载| 定西市| 冯宝宝版杨贵妃| 李月华15部电影大全| 徐梦桃高喊我是第一吗| 特种兵之火凤凰全集下载| 兵临城下决战要塞| 印度电影 天生一对| 电影美容院的待遇5| 九龙城寨电影| 《性的暴行》日本电影| 憩园电影| 玉蒲电影完整版| 送春 阅读答案| 蜡笔没了小新| 怪奇物语第一季免费观看| 海贼王480| 美国电影需要爸爸播种子的片段 | 包青天之黄金梦| 乱世伦情电影| 寒露是几月几号| 向涟苍士献上纯洁类似| 建元风云 百度影音| 手机摇钱树捕鱼| 银魂180| 圣特洛佩斯de姑娘们| 胡歌版的射雕英雄传| 《丈夫面前被搬工人欺负的电影》全 | 奔跑吧第十一季免费观看| over flow第一季| 女房产销售楼3| 星汉灿烂月升沧海在线观看| 一起嗟嗟嗟30分钟免费看| 李恩美女友妈妈| 路南柯歌词什么意思| 小时代3 刺金时代| 步步惊心qvod| 维修师傅的艳遇韩国理论片在线观看 | 花与蛇2之牙医| 征服者电影| 大头儿子小头爸爸第二部| 大江大河第3部53集免费观看| 苗圃和李亚鹏| 阿朱外卖三部曲| 幸福爱人全集| 临汾市| 八毫米电影无删减版在线观看| 风月宝鉴下载| 疯狂房间荷尔蒙爆发原声| 年轻的保姆5线观高清多鱼| 新妈妈视频| 风俗校园祭动漫在线观看全集| 剧看了又看第二部国语第48集| 天海翼女教师在线观看| 天赐的声音第5季综艺| 黑话律师一共多少集| 韩剧说不出的爱国语版| 战神归来| 做aj大全免费观看国语| 经典娃娃脸电影| 学校怪谈 动漫| 王贵和安娜电视剧免费观看| 寂静之地:入侵日 2024免费| 流浪猫被喂食物后带孩子找上门| 多瑙河之波电影免费观看| 伴换11| 看见你的棒棒就想吃的歌手是谁| 顾客付82.9店家到手36.31| 新金瓶梅2008第二集| 高清《新龙门客栈》| 麦乐迪女超人的屈辱在线观看| 课外辅导的秘密| 霍山县| 养个妹妹做老婆| 原来神马电影手机在线观看完整版| 给社长当秘书替老公还债| 河神在线观看| 韩剧暴君2024| 爱我几何免费完整版多长| 贪婪:欲望之岛 电影| 《按摩》意大利电影原名叫什么金达 | 她的初恋| 上一任国防部长| 电视剧周生如故全集免费观看 | 四位少妇按摩记奇优| 我的奴隶| xL司令第一季马赛免费观看高清| 环太平洋1| 好姑娘8完整版在线观看全集| 新十二生肖1991在线播放| 刘大明白改命师全集| 美容是特殊待遇7| 南海归墟16集在线播放免费| 野性放荡的女人| 蜜桃成熟时33d 影音| 巜电车痴汉玩弄人妻HD| 《法国空乘11| 冬不拉教学| 埃博拉前线电视剧免费观看| 《康体水疗》1978完整版在线观看| 奇妙大营救| 别墅轮换5攻略免费观看| 黑暗的性家伙之工藤拉拉在线观看 | 女律师的坠落完整板| 独行月球在线观看| J情丛林| 蜘蛛侠1电影高清| 凌云壮志女版(法国)满天星| 窃欲无罪完整版电影免费播放 | xL司令第二季真人| 深海狂鲨高清| 锵锵免费完整观看在线观看 | 心战粤语版| 两女共侍一夫| 营盘镇警事 电视剧| 需要爸爸播种在线观看| 中国远征军电影| 北上电视剧免费| 小蓝在线播放| 重生弃少全集免费| 惊变电影国语版在线观看| 欢迎来到实力至上主义教室 第四季 | 速度与激情3高清版| 回响电视剧在线观看全集免费| 《朋友夫妇·交换3》| 女生黏糊糊的水哄睡| 电视剧樱桃红了| 布兰妮crazy| 芈月传电视剧免费观看全集| 新来的瑜伽老师完整版视频| 猛士的士高第一集| 野花香影视| 361 电影网| 电视剧成吉思汗| 免费观看法国空乘4| 火热的领居中文字| 脱氢乙酸钠是什么东西| 伦理《法国护士长》2006在线| 法医王妃:验尸断案无人及全集免费| 风云雄霸天下| 莱纳安德森《黑暗森林》在线播放欢 | 憨八龟的故事第一部| 男按摩中字在线播放| 电影《落凡尘》免费观看| 白峰电影在线观看在线播放| 大宋惊世传奇电视剧| 电视剧苦菜花| 金银悔1一5普通话| 我和我的传奇| 《高压监狱》在线观看| 私人女性监狱完整版观看免费| 两个人的世界在哪看| 爱我多深| 日本混血大学生体验按摩电影| 黄奕演过电视剧| 丁丁的故事| 谢谢你医生在线观看免费完整版| 无敌猪哥聊天室| 泰山hr人猿泰山| 女儿谷在线观看完整版| 记忆裂痕高清| 伦理《生殖按摩》| 南海归墟16集电视连续剧| 一误东风辞崔羽| 三年在线观看中文免费| 铁梨花43集免费观看| 电影恶行之外| 美貌的社长夫人| 电视剧盛夏晚晴天全集| 谁怜天下慈母心电视剧免费观看| 需要爸爸播种籽2演员名字全集| 手机情缘| 真假公主| 男免费观看高清完整版电视剧| 浅情人不知电视剧完整版免费观看| 特殊的治疗室6| 免费完整版| 小小水蜜6电视剧免费观看最新章节| 朱智勋主演的电视剧| 哈尔滨爆火官方坦言已准备一年| 动漫xl司令第一季全集在线观看完整版 | 粟裕大将| 爱情攻略吻戏| 交换的一天2韩国中汉字普通话 | 尖峰电视剧全集在线观看| 唐宫奇案之青雾风鸣电视剧| 《和讨厌的部长出差》大结局免费看| 魔法老师下载| 曾经的疫苗我不懂得珍惜| 金太狼幸福生活电影| 瓦尼塔斯的手记动漫全集免费| 特殊游泳教练 免费 | 爆旋陀螺| 哈利波特电影免费观看完整版 | 王凯主演的电视剧大全(全部)| 二阶堂梦作品在线观看| 魔法保姆麦克菲国语| 断喉弩全集在线观看| 和部长| 人间正道是沧桑50集全免费观看| 雪鹰领主40集在线观看| 老公不在家上司韩国电影 | 女员工的付出中文版| 《赤足惊魂》| 命中注定我爱你演员表| 哇嘎免费观看在线播放| 我在韩国当媳妇| 吴克群 胡闹| 混血的摇篮曲在线播放| 电影亲密| 直播逆袭短剧全集| 《需要爸爸播种子》-免费在线观看高清完整版-片库网 | 我们手机在线观看免费| 广场舞光阴的故事| 锵锵锵免费完整观看| 百家讲坛张居正| 千日的约定电视剧| 爱在空气中14集特别篇| 美发美容按摩3| 变身小姐 豆瓣| 电影欢乐英雄| 杨敏思版1-5集电视剧在线观看| 琉璃免费看| 高清《猎杀》免费观看| 特殊治疗按摩1-6| 《神秘博士》第一季首播时间| 龙卷风优化| 女超人麦迪娜1080p满天星版| 高清《17岁》电影陈修如| 给我免费播放的电影在线观看| 我的幸福婚姻真人版电视剧| 非凡医者演员表| 堀北真希电影| 杨思敏 金瓶梅| 女员工付出的中字1230| 伍六七之记忆碎片10集| 武侠电影| 八戒八戒8在线电影大全 | 埃博拉前线电视剧免费观看| 飞机上的性K8服务| 舞乐传奇全集| 银河护卫队3超清完整免费观看| 牙医姊妹电影在线| 任盈盈股评| 地球防卫未亡人| 美国怪谭| 年少有为不自卑| 大槻响作品番号| 中字HD丈夫下属| 她的潮汐| 快乐到家迅雷下载| 《麦乐迪女超人》|麦乐迪| 大岛优子快播| 左撇子艾伦电视剧| 黑白配中文全集在线播放| 真心英雄电视剧完整版在线观看| 儿子的房间老妈跟外人睡好吗| 三年在线免费观看| 移动迷宫西瓜影音| 《继承者》在线观看| 插曲的痛60集全集免费播放西瓜影音| 变形金刚2高清| 数字马戏团动画片全集| 熟女精油按摩乱轮电影| 一眉道人电影| 灵与肉1992| 高压监狱2完整版| 为了谁原唱| 贞观长歌高清| 酒店1-5集在线观看| 错点鸳鸯 电视剧| 伸冤人3在线| 安拉拉斋电影免费播放| 怎敌她千娇百媚在线播放| 舒淇三圾片在线观看| 雷州市| 保险女王她的商业秘密中文版翻译| 深情眼在线观看电视剧| 盗墓笔记电影全集| 私人助理2法国版观看| 死亡笔记迅雷下载| 秋瓷炫《生死决断》| 猛鬼狐狸精字幕| 女教师引诱12| 倔强退魔师1-4集在线观看免费| 终结者 2| 心跳源计划在线观看| 星际大战动画片| 电视剧小娘惹全集观看| 侏罗纪世界:重生全集观看 | 扫黑风暴在线观看完整版| 上错花轿嫁对朗| av收藏之家| 正中下怀是什么意思| 法国电影法国空少| 你是我的荣耀在线观看完整版免费| 花木兰2动画片国语| 高校教师 赤子板栗| 我们与恶的距离免费观看全集| 莉兹坎贝奇的成人电影品味人生| 重庆红孩子案件| 一路向西国语百度影音| 斗罗大陆114| 女战狼6免费观看高清| 渔民家姑娘2| 爱我就别想太多免费观看| 今夜无人入睡免费观看国语版| 斩龙漫画| 娃娃脸5完整版在线观看视频 | 黄晓明和宋慧乔演过情侣| 磁力链最佳的搜索引擎| 新版娃娃脸9免费观看高清| 桃色播播| 再次见到你电视剧免费观看| 母亲8集在线动漫| 电影《法国空姐》免费观看| 王多鱼高清观看视频全集免费观看大全| 许我耀眼全集32集| 郑少秋个人资料简介| 公主嫁到粤语电视剧在线观看免费 | 财神有道电视剧| 护士的秘密电外国| 杉杉来了电视剧全集免费| 电影偷窥无罪| 龙影影视| 汽车| 《禁忌5》无删减| 妈妈在等你电视剧免费观看| 姐姐睡着高清免费观看电视剧全集| 女教授隐藏的魅力| 新绛县| 需要爸爸播种2在线播放免费| 许我耀眼全集32集| 超级床上人电影| 过家家未删减| 郑嘉颖最新电视剧| 康熙谈靘谭1一10太后剧情解析| 跟别人家的老公出轨| 420电影网| 甜蜜家园2今日播出| 逃亡兔前传| 两个人的世界电视剧在线观看完整版| 爱寻迷完整版电影在线观看| 言情片《邻家女人:丈夫不在的日子》HD无字免费高清在线观看完整版_tvb云播 | 识骨寻踪第一季高清在线观看| 影城大亨国语| 古墓丽影山寨版满天星免费观看| 指尖传出的真挚热情2第二季预告| 《九歌》电影完整版| 《安全屋》| 沧元图60完整版最新免费看| 浮之手| 屠宰呕吐娃娃免费观看完整版视频| 辣妹子视频在线观看电视剧| 魔道祖师全集免费观看高清| 速度与激情| 韩国电影售楼小姐在线视看| 牙医姐妹电影免费版在线看| 高清《未婚男女的效率恋爱》电视剧| 中国新说唱第一集| 从地狱来的法官 电视剧| 金银悔1-5免费观看高清| 俘虏之锁1~4集免费观看| 指尖传来的热情| 凉宫春日的忧郁第二季| 初见乍惊欢| 极速车魂 第三季| 仓田真央| 红楼春梦在线观看| 我和我的父辈免费版播放| 电视剧丐侠传奇| 电视剧新洛神| 男生女生一愁愁愁电视剧在线观看大 | 他母亲的房子| 古玩捡漏:我是捡漏小能手全集免费 | 向爱而生全集免费播放视频| 甄嬛传电视剧免费版全集在线 | 横行霸道电影| 和讨厌的部长一起去出差旅》》 - 详情介绍手机免费播放... 日本其它2004很 | 非常人贩2国语版| 背后的故事赵薇| 美容院的待遇服务在线观看 | 美国的忌讳1-6| 陈德修的女朋友| 江湖新秩序粤语| 女女女女女女女女| 《《李宗瑞全集》在线观看》高清视| 倔强驱魔师1-5集免费动漫| 歼灭天际线的日韩专辑在哪| 无懈可击之美女如云大结局| 新闺蜜时代23| 末班车后动漫| 东丽区| 法国需要爸爸播种 手机播放 | 漂亮的女教师1李采潭| 王汝刚生什么病| 高清《欲燃》完整版观看| 八戒网剧8免费观看播放| 美国蜜桃| 幻影英雄| 《安全屋》| 广场舞社员都是向阳花| 宫斗步步为营:登顶后位全集免费| 3d柔铺团之极宝乐鉴宝鉴电影虞书欣| 少年歌行电视剧免费观看| 奔跑吧兄弟黄河篇免费观看| 去有风的地方电视剧免费观看| 情侣交换日记| 空蝉之森酒法子原版| 完美女仆法国满天星| 棱镜恋曲| 高清《哺乳》电影完整观看免费| 强奸女护士| 建哥往事| 坎贝奇品味人生无憾在线观看全集 | 《少女》2电影| 牛鞭擦进女人下身手机在线观看 | 美国爸爸要播种2季免费观看| 快乐星球第2部| 监狱疯云| 出埃及记mv| 图书馆的女朋友在线观看完整免费版第五集 | 隋唐英雄108| 我的继父是偶像电视剧免费观看 | 当旺爸爸电视剧| 《睫毛膏4》美国电影| 密爱朋友的妈妈| 杀手记忆 第一季电视剧| 哪吒2之魔童闹海| 京华烟云赵雅芝版| 美式保罗2| 黑白配免费全集在线看| 马永贞百度影音| 轮回的花瓣全集观看| 真相2012| 漂亮的儿媳韩剧TV| 3d柔铺团之极宝乐百度云| 联合早报电影高清完整版需要爸爸播种子| 无尽之海| 头文字D动画片| 刷子李课件| 使徒行者3在线看免费| 一愁愁愁电视剧在线起观| 插式治疗专业医院1-5集| 熊出没之过年电影| 杜拉拉升职记在线| 高清阿尔法未删减| 忍者一时| 坎贝奇无憾完整版片段| 插曲的痛60全集免费观看高清版无马| 小公主莎拉| 《千古玦尘》电视剧| 印度剧继承者| 电视剧苍天| 无憾坎贝奇电影完整版在线播放免费版| 动漫xlx| 高清《脱缰者也》电影| 熊出没之过年全集| 蜡笔小新免费观看| 趾高气扬造句| 男人和女人一起愁愁愁电视剧免费古装剧 | 吴京电影长津湖抢先版| 《千金赤子板栗》完整版| (已屏蔽)| 一生何求陈百强| 温柔的杀死龙| 千山暮雪续集全集在线观看| 公元前2000年| 瓜达卢佩玫瑰2008版| 朱莉安妮版售楼女王免费观看| 私密按摩师免费高清电影| 悬崖上的金鱼公主国语版| 假面 韩国| 生命之树迅雷下载| aj视频电视剧大全| xl司令的动漫全集免费观看| 谈判官电视剧免费观看完整版| 圣堂风云| 月上兔泰剧电视剧免费观看| 剧名《玉女春宵》免费观看| 女战狼6免费高清版999加拿大版| 金银梅5一10日语| 苦菜花电视剧全集免费观看| 君临天下之血溅太和殿| overflower第一季免费观看| 忽而今夏1| 绯闻恋人| 满天星《背叛》| 我的1997电视剧| 鱼水情歌| 我欲为人第二季| 三年成全影视大全免费播出| 学园天堂动漫| 哪吒之魔童降世| 水手服饲养1小时42分原版视频| 杨思敏金梅瓶1一5集演员表| 叶子楣《极乐宝鉴》电影免费观看| 保罗3雪莉一家1| 女超人法国版高清无删减| 追球在线观看免费完整版| 俄剧《叶卡捷琳娜二世》第一季| 圣特罗佩的姑娘们高清| 活佛济公第二部| 第11个前锋下载| 丹麦《红粉监狱》剧情介绍| 30分钟插曲视频大全免费播放国语 | 特殊的美容院待遇免费| 小小安妮第三季| 新还珠格格的所有歌曲| 丫丫吃甘蔗小心翼翼| 和部长一起出差旅日本电影叫什么| 电影横空出世| 奔跑吧有情人| 爸爸需要播种在线观看免费高清完整泰剧 | 男生女生愁愁愁电视剧在线观看| 行尸走肉 第1季| 熟妇的滚烫的肉唇翻进翻出| 一夜不了情| 《战争之暴行女囚》电影电影| 要过好日子下载| 半路夫妻剧情| 意大利《八尺夫人》电影全集免费观看| 女子穿汉服露腿被网友怒怼| 罪域15| 电影《香醇的绣感》刘莫嘉| 淘众福逐梦| 蒙面歌王| 北京奥运会开幕式2008完整版| 免费无毒韩国R片《韩国三级》 | 十月围城免费| 朝国年经继4免费| 我妻子的姐姐韩国| 泰剧国语版全集| 迷你世界火山| 需要爸爸种种子| 第六感之吻电视剧在线观看| 暹罗之恋完整版| 郓城县| 恢复上诉连干七天日本电影| 郑州刚发生的打架的事| 千禧金瓶梅| 新婚太太精油按摩电影| 穿越火线在线观看免费完整版| 唐人街探案3免费西瓜观看完整版| 美国的海棠红2| 男生女生一起愁愁愁电视剧在线观看全集| 圣托贝热女孩1982国语版免费观看| 爱情回来了 电视剧| 刑侦12国语免费观看全集| 小绿和小蓝| 《医生特殊的治疗》5| 吉星高照第二季短剧| 隐密的角落|