龙芯pmon快速启动方法

article/2025/9/12 19:26:03

龙芯pmon快速启动方法

以ls2k1000 pmon为例

一、去掉没有用的外设

  1. 去掉GPU
    vim Targets/LS2K/conf/ls2k里添加
    option NOGPU

    原理:
    去掉gpu
    备注:必须使用pmon下的设备树,此方法才能去掉GPU

  2. 去掉Nand
    vim Targets/LS2K/conf/ls2k里注释掉如下内容
    #select nand
    #select spinand_lld
    #option CONFIG_LS2K_NAND

    原理:
    去掉nand

  3. bootdelay 环境变量设为0
    0

  4. 其他设备
    ls2k配置文件在vim Targets/LS2K/conf/ls2k,想掉某个未用设备,直接在这个文件里注释掉,编译能正常通过即可!

二、去掉pmon启动时打印信息

参考下边补丁文件进行修改…

From 6955e716f9490cc5550b8d2d2cec37e5f4dfcc15 Mon Sep 17 00:00:00 2001
From: xupengjun <xupengjun@loongson.cn>
Date: Wed, 28 Oct 2020 15:56:29 +0800
Subject: [PATCH] pmon quick start, config file ls2k add FASTUP---Targets/LS2K/conf/ls2k                        | 48 +++++++++++--------Targets/LS2K/dev/localbus.c                   |  3 +-Targets/LS2K/include/pmon_target.h            |  8 ++++.../LS2K/ls2k/ddr_dir/loongson3_ddr2_config.S |  4 +-Targets/LS2K/ls2k/loongson3_clksetting.S      | 15 ++++--Targets/LS2K/ls2k/start.S                     | 23 +++++++--Targets/LS2K/ls2k/tgt_machdep.c               |  4 ++pmon/cmds/cmd_main/cmd_main.c                 |  3 +-pmon/common/main.c                            |  8 +++-pmon/dev/mainbus.c                            |  2 +pmon/dev/pcibr.c                              |  3 +-sys/dev/gmac/if_gmac.c                        |  2 +sys/dev/gmac/synopGMAC_network_interface.c    |  4 +-sys/dev/gmac/synopGMAC_plat.h                 |  4 ++sys/dev/pci/ahci.c                            |  9 +++-sys/dev/pci/pci.c                             |  3 +-sys/dev/pci/pciconf.c                         | 13 ++++-sys/dev/pci/ppb.c                             |  3 +-sys/kern/init_main.c                          |  6 +++sys/kern/subr_autoconf.c                      |  9 ++++sys/net/if.c                                  |  2 +sys/scsi/scsiconf.c                           |  2 +22 files changed, 134 insertions(+), 44 deletions(-)diff --git a/Targets/LS2K/conf/ls2k b/Targets/LS2K/conf/ls2k
index 03852d45..91b68e18 100644
--- a/Targets/LS2K/conf/ls2k
+++ b/Targets/LS2K/conf/ls2k
@@ -37,7 +37,7 @@ option		LS3_HT              # Enable the IO cache coherent for ls2koption      loongson3A3option      LSMC_2
-#option      ARB_LEVEL
+option      ARB_LEVELoption      DDR3_DIMM@@ -115,7 +115,7 @@ select		mod_vgaconoption		VGA_NO_ROM       # display card has no rom#select		mod_sisfboption		NOPCINAMES		# Save some space for x86emu
-#option		FASTBOOT
+option		FASTBOOT#select		vt82c686        #via686a/b codeselect		mod_framebuffer
@@ -137,7 +137,7 @@ option		HAVE_TOD		# Time-Of-Day clockoption		INTERNAL_RTC		# chip internal RTC#option		EXTERNAL_RTC		# external RTCoption		HAVE_NVENV		#  Platform has non-volatile env mem
-option		HAVE_LOGO		# Output splash logo
+#option		HAVE_LOGO		# Output splash logooption		USE_SUPERIO_UART#option      	VESAFB#option		USE_LEGACY_RTC
@@ -180,15 +180,15 @@ ahci_cdrom*  	at ahci?pcinvme*	at pci? dev ? function ?nvme*		at pcinvme?-ohci*   	at pci? dev ? function ?	# OHCI
-usb*      	at ohci?
+#ohci*   	at pci? dev ? function ?	# OHCI
+##usb*      	at ohci?#lehci*   	at pci? dev ? function ?	# EHCI#usb*      	at lehci?-lxhci0    	at localbus0 base 0xbfe38000	# xHCI
-xhci0		at lxhci0
-usb*		at xhci0
-select 	 	mod_usb_xhci
+##lxhci0    	at localbus0 base 0xbfe38000	# xHCI
+##xhci0		at lxhci0
+##usb*		at xhci0
+##select 	 	mod_usb_xhci#lohci0    	at localbus0 base 0xbfe38000	# OHCI#usb*      	at lohci0
@@ -223,12 +223,12 @@ select igb1#usb*		at usbbus ? #ohci1		at pci? dev ? function ?-select		mod_usb
-select  	mod_usb_storage
+###select		mod_usb
+###select  	mod_usb_storage#select		mod_usb_uhci
-select 	 	mod_usb_ohci
+###select 	 	mod_usb_ohci#select 	 	mod_usb_ehci
-select		mod_usb_kbd
+##select		mod_usb_kbd#### IDE controllers
@@ -269,7 +269,7 @@ select		gzipoption		INPUT_FROM_BOTHoption		OUTPUT_TO_BOTHoption		KBD_CHECK_FAST
-option		TEST_USB_HOST
+#option		TEST_USB_HOSToption		CONFIG_SLOW_PCI_FOR_BROKENDEVoption 		CONFIG_VIDEO_SW_CURSOR#option		CONFIG_USB_HOTPLUG
@@ -277,18 +277,18 @@ option 		CONFIG_VIDEO_SW_CURSORselect		httpselect		tcpselect		inet
-select		nand
+#select		nandselect cmd_xyzmodemoption HPET_RTC#select		spinand_mt29f
-select		m25p80
+#select		m25p80select	canselect yaffsfs#option LS2H_SPI_HIGHSPEED#option DISABLE_HARD_LEVELING
-select		spinand_lld
+#select		spinand_lld#option DDR_PARAM_018="0x3030303016100000"##option DDR_PARAM_1e8="0x0f0f0f0f0f0f0f0f"##option DDR_PARAM_1e0="0x0f0f0f0f0f0f0f0f"
@@ -347,9 +347,14 @@ option BEEP_GPIO=0#option  HS0636#select sii9022a
-select nand_bch
+#select nand_bch
+#option DDR_PARAM_018="0x2020202016100000"
+#option DDR_S1=0xc0a18404
+#option CONFIG_LS2K_NAND#select nand_bch
@@ -410,6 +415,7 @@ select i2c#option CONFIG_VIDEO_LOGO#option CONFIG_VIDEO_BMP_LOGOoption DDR_FREQ=400
-option CORE_FREQ=800
-option LOWPOWER
+option CORE_FREQ=1000
+#option LOWPOWERselect raw_ether
+option FASTUP
diff --git a/Targets/LS2K/dev/localbus.c b/Targets/LS2K/dev/localbus.c
index 08c99dd5..dac296f4 100644
--- a/Targets/LS2K/dev/localbus.c
+++ b/Targets/LS2K/dev/localbus.c
@@ -129,8 +129,9 @@ localbusattach(parent, self, aux)struct device *self;void *aux;{
+#ifndef FASTUPprintf("\n");
-
+#endifconfig_scan(localbusscan, self);}diff --git a/Targets/LS2K/include/pmon_target.h b/Targets/LS2K/include/pmon_target.h
index 89c90901..8b294695 100644
--- a/Targets/LS2K/include/pmon_target.h
+++ b/Targets/LS2K/include/pmon_target.h
@@ -33,6 +33,9 @@#include <target/bonito.h>+#ifdef FASTUP
+#define SBD_DEBUG
+#endif#ifdef SBD_DEBUG#define SBD_DISPLAY(text, code)		/* No display function */#else
@@ -40,6 +43,7 @@ void hexserial __P((int));#define SBD_DISPLAY(text, code)	tgt_display(text, code)#endif+/**  Name of envvar that has to be set to enable expert mode.*/
@@ -69,5 +73,9 @@ extern int mtd_rescan(char *,char *);#define TGT_DEFENV  {"mtdparts","nand-flash:30M@0(kernel),-(rootfs);spinand_flash:30M@0(kernel),-(rootfs)",0,&mtd_rescan},   \{"bootdelay","3",0,0}#else
+#ifndef FASTUP#define TGT_DEFENV  {"bootdelay","3",0,0}
+#else
+#define TGT_DEFENV  {"bootdelay","0",0,0}
+#endif#endif
diff --git a/Targets/LS2K/ls2k/ddr_dir/loongson3_ddr2_config.S b/Targets/LS2K/ls2k/ddr_dir/loongson3_ddr2_config.S
index 031cb92b..4123cc8d 100644
--- a/Targets/LS2K/ls2k/ddr_dir/loongson3_ddr2_config.S
+++ b/Targets/LS2K/ls2k/ddr_dir/loongson3_ddr2_config.S
@@ -177,7 +177,7 @@and     s1, s1, a1or      s1, s1, t11:
-#if 1
+#if PRINT_MSG/* show value of s1 */PRINTSTR("\r\nnew s1 = 0x");dsrl    a0, s1, 32
@@ -247,7 +247,7 @@dli     a1, 0xffffffff00000000and     t1, t1, a1or      s1, s1, t1
-#if 1
+#if PRINT_MSG/* show value of s1 */PRINTSTR("\r\nnew s1 = 0x");dsrl    a0, s1, 32
diff --git a/Targets/LS2K/ls2k/loongson3_clksetting.S b/Targets/LS2K/ls2k/loongson3_clksetting.S
index 0e69363d..face0763 100644
--- a/Targets/LS2K/ls2k/loongson3_clksetting.S
+++ b/Targets/LS2K/ls2k/loongson3_clksetting.S
@@ -141,11 +141,12 @@ ATTENTION:ori     a0, a0, PLL_CHANG_COMMITsd      a0, 0x0(t0)+#ifndef FASTUPbal     hexserialnopTTYDBG ("\r\nMEM        :")
-
+#endifli      t0, 0xbfe10490li	t1, (0x1 << 19) 	//power down pll  first
@@ -193,11 +194,12 @@ ATTENTION:ori     a0, a0, 0x3sw      a0, 0x0(t0)+#ifndef FASTUPbal     hexserialnopTTYDBG ("\r\nDC        :")
-
+#endifli      t0, 0xbfe104a0li	t1, (0x1 << 19) 	//power down pll  firstsd	t1, 0x0(t0)
@@ -219,11 +221,12 @@ ATTENTION:ori     a0, a0, 0x3sw      a0, 0x0(t0)+#ifndef FASTUPbal     hexserialnopTTYDBG ("\r\nPIX0        :")
-
+#endifli      t0, 0xbfe104b0		//pll_pix0li	t1, (0x1 << 19) 	//power down pll  firstsd	t1, 0x0(t0)
@@ -245,11 +248,12 @@ ATTENTION:ori     a0, a0, 0x1sw      a0, 0x0(t0)+#ifndef FASTUPbal     hexserialnopTTYDBG ("\r\nPIX1        :")
-
+#endifli      t0, 0xbfe104c0		//pll_pix1li	t1, (0x1 << 19) 	//power down pll  firstsd	t1, 0x0(t0)
@@ -271,8 +275,9 @@ ATTENTION:ori     a0, a0, 0x1sw      a0, 0x0(t0)+#ifndef FASTUPbal     hexserialnop
-
+#endif#endif
diff --git a/Targets/LS2K/ls2k/start.S b/Targets/LS2K/ls2k/start.S
index 18c699d6..009765c2 100644
--- a/Targets/LS2K/ls2k/start.S
+++ b/Targets/LS2K/ls2k/start.S
@@ -46,7 +46,7 @@#include "target/cacheops.h"	//mtf-#define TTYDEBUG
+//#define TTYDEBUG#ifdef TTYDEBUG#define	TTYDBG(x) \.rdata;98: .asciz x; .text; la a0, 98b; bal stringserial; nop
@@ -54,8 +54,13 @@#define TTYDBG(x)#endif#define HAVE_TARGET_GETCHAR
+
+#ifndef FASTUP#define	PRINTSTR(x) \.rdata;98: .asciz x; .text; la a0, 98b; bal stringserial; nop
+#else
+#define	PRINTSTR(x) 
+#endif#define CONFIG_CACHE_64K_4WAY 1 @@ -1133,9 +1138,11 @@ pcie_cfg_done:syncld	a0, 0x0(t1)
+#ifndef FASTUPbal	hexserial64nop#endif
+#endif#if 0li      t0, 0xbfe10000
@@ -1308,7 +1315,7 @@ start_now:#include "ddr_dir/ddr_config_define.h"//#define DDR_DLL_BYPASS#define DISABLE_DIMM_ECC
-#define PRINT_MSG
+//#define PRINT_MSG#ifdef  ARB_LEVEL#define AUTO_ARB_LEVEL#endif
@@ -1366,8 +1373,9 @@ start_now:and     a0, a0, 0xfdsb      a0, 0x1(t0)sync
-
-	li      t0, 0xbfe10420
+	
+#ifndef FASTUP
+    li      t0, 0xbfe10420ld      a0, 0x0(t0)move    t6, a0dsrl    a0, t6, 32
@@ -1443,7 +1451,7 @@ start_now:daddiu  t5, t5, 8bnez    t1, 1bnop
-
+#endif###########################################ifdef  DEBUG_DDR#ifdef DEBUG_DDR_PARAM
@@ -1500,6 +1508,7 @@ start_now:bootnow:+#ifndef FASTUPTTYDBG("  start = 0x")la	a0, startbal	hexserial
@@ -1516,6 +1525,8 @@ bootnow:la	a0, _endbal	hexserialnop
+#endif
+#if 0 //ls2h old codeTTYDBG("\r\n")bal  spd_info_store
@@ -1534,12 +1545,14 @@ bootnow:1:	and	t3, t0, 0x0000ffffbnez	t3, 2fnop
+#ifndef FASTUPmove	a0, t0bal	hexserialnopli	a0, '\r'bal 	tgt_putcharnop
+#endif2:	lw	t3, 0(t1)sw	t3, 0(t0)
diff --git a/Targets/LS2K/ls2k/tgt_machdep.c b/Targets/LS2K/ls2k/tgt_machdep.c
index 47990e5e..0d31bfc9 100644
--- a/Targets/LS2K/ls2k/tgt_machdep.c
+++ b/Targets/LS2K/ls2k/tgt_machdep.c
@@ -375,7 +375,9 @@ void initmips(unsigned long long  raw_memsz)bcopy(MipsException, (char *)GEN_EXC_VEC,MipsExceptionEnd - MipsException);SBD_DISPLAY("BEV0", 0);
+#ifndef FASTUPprintf("BEV in SR set to zero.\n");
+#endif/*disable spi instruct fetch before enter spi io mode*/#ifdef DEBUG_BY_EJTAG*(volatile int *)0xbfe10080 = 0x001000f0;
@@ -1217,8 +1219,10 @@ void tgt_memprint()void tgt_machprint(){
+#ifndef FASTUPprintf("Copyright 2000-2002, Opsycon AB, Sweden.\n");printf("Copyright 2005, ICT CAS.\n");
+#endifprintf("CPU %s @", md_cpuname());}diff --git a/pmon/cmds/cmd_main/cmd_main.c b/pmon/cmds/cmd_main/cmd_main.c
index d9fc6fc8..519916f0 100644
--- a/pmon/cmds/cmd_main/cmd_main.c
+++ b/pmon/cmds/cmd_main/cmd_main.c
@@ -1670,11 +1670,12 @@ int check_password(int page)spl0();tgt_poll();}
-
+#if NMODE_USB_KBDif (bios_available && usb_kbd_code == 0x8){kbd_code = 0x7f;}
+#endif#endifswitch(tag){
diff --git a/pmon/common/main.c b/pmon/common/main.c
index bedf9fde..130bdb81 100644
--- a/pmon/common/main.c
+++ b/pmon/common/main.c
@@ -620,9 +620,11 @@ static int autoload(char *s)dly = 8;}+#ifndef FASTUPSBD_DISPLAY ("AUTO", CHKPNT_AUTO);printf("Press <Enter> to execute loading image:%s\n",s);printf("Press any other key to abort.\n");
+#endifioctl (STDIN, CBREAK, &sav);lastt = 0;if (!dly) ioctl (STDIN, FIONREAD, &cnt);
@@ -881,6 +883,7 @@ dbginit (char *adr)/* Set up initial console terminal state */ioctl(STDIN, TCGETA, &consterm);+#ifndef FASTUP#ifdef HAVE_LOGOtgt_logo();#else
@@ -888,6 +891,7 @@ dbginit (char *adr)#endifprintf ("\nConfiguration [%s,%s", TARGETNAME,BYTE_ORDER == BIG_ENDIAN ? "EB" : "EL");
+#ifdef INETprintf (",NET");#endif
@@ -901,14 +905,16 @@ dbginit (char *adr)printf ("Supported loaders [%s]\n", getExecString());printf ("Supported filesystems [%s]\n", getFSString());printf ("This software may be redistributed under the BSD copyright.\n");
-
+#endifprint_cpu_info();print_mem_freq();printf ("Memory size %lld MB .\n", memorysize_total);+#ifndef FASTUPtgt_memprint();
+#endif#if defined(SMP)tgt_smpstartup();#endif
diff --git a/pmon/dev/mainbus.c b/pmon/dev/mainbus.c
index 924c8f83..59059f6f 100644
--- a/pmon/dev/mainbus.c
+++ b/pmon/dev/mainbus.c
@@ -78,7 +78,9 @@ mainbus_attach(parent, self, aux)struct confargs nca;int i;+#ifndef FASTUPprintf("\n");
+#endifsc->sc_bus.bh_dv = (struct device *)sc;sc->sc_bus.bh_type = BUS_MAIN;sc->sc_bus.bh_intr_establish = NULL;
diff --git a/pmon/dev/pcibr.c b/pmon/dev/pcibr.c
index d6dfd544..ea45f06c 100644
--- a/pmon/dev/pcibr.c
+++ b/pmon/dev/pcibr.c
@@ -111,8 +111,9 @@ pcibrattach(parent, self, aux)/*	struct pcibr_config *lcp; */struct pcibus_attach_args pba;+#ifndef FASTUPprintf("\n");
-
+#endif/**  Generic.*/
diff --git a/sys/dev/gmac/if_gmac.c b/sys/dev/gmac/if_gmac.c
index b0871eec..aa54a49f 100644
--- a/sys/dev/gmac/if_gmac.c
+++ b/sys/dev/gmac/if_gmac.c
@@ -106,7 +106,9 @@ pcisyn_attach(parent, self, aux)return;}+#ifndef FASTUPprintf("membasep=0x%x\n",(int)membasep);
+#endif#if defined(LS7A) || defined(LOONGSON_2K)synopGMAC_init_network_interface(sc->dv_xname, (int)(membasep|0x80000000));
diff --git a/sys/dev/gmac/synopGMAC_network_interface.c b/sys/dev/gmac/synopGMAC_network_interface.c
index 066d141d..77d66fc9 100755
--- a/sys/dev/gmac/synopGMAC_network_interface.c
+++ b/sys/dev/gmac/synopGMAC_network_interface.c
@@ -2053,10 +2053,10 @@ int init_phy(struct synopGMACdevice *gmacdev)//printf("==== Warning: reset gmac phy 88E151X!\n");alaska88e151x_config_init(gmacdev);} else{
-            printf("==== Warning: unrecoganized marvel gmac phy!\n");
+            TR("==== Warning: unrecoganized marvel gmac phy!\n");}} else{
-        printf("==== Warning: unrecoganized gmac phy!\n");
+        TR("==== Warning: unrecoganized gmac phy!\n");};return 0;#else
diff --git a/sys/dev/gmac/synopGMAC_plat.h b/sys/dev/gmac/synopGMAC_plat.h
index 0e27c105..e6316de1 100755
--- a/sys/dev/gmac/synopGMAC_plat.h
+++ b/sys/dev/gmac/synopGMAC_plat.h
@@ -94,7 +94,11 @@ typedef unsigned long dma_addr_t;#else#define TR0(fmt, args...)   printf(fmt, ##args)	#endif
+#ifndef FASTUP#define TR(fmt, args...)   printf(fmt, ##args)	
+#else
+#define TR(fmt, args...)
+#endif//typedef int bool;enum synopGMAC_boolean
diff --git a/sys/dev/pci/ahci.c b/sys/dev/pci/ahci.c
index 1f99a132..743b0e11 100755
--- a/sys/dev/pci/ahci.c
+++ b/sys/dev/pci/ahci.c
@@ -82,7 +82,11 @@#define WAIT_MS_DATAIO	10000#define WAIT_MS_FLUSH	5000#define WAIT_MS_LINKUP	200
+#ifndef FASTUP#define debug printf
+#else
+#define debug
+#endifint ahci_host_init(struct ahci_probe_ent *probe_ent);static void *ahci_init_one(u32 regbase);
@@ -147,10 +151,11 @@ static void ahci_attach(struct device *parent, struct device *self, void *aux)printf(" Can't find mem space\n");return;}
+#ifndef FASTUPprintf("Found memory space: memt->bus_base=0x%x, baseaddr=0x%x""size=0x%x\n", memt->bus_base, (u32) (membasep),(u32) (memsizep));
-
+#endif#if 0 /* set 1.0 mode */int temp = *(int *)((membasep + 0x12c) | memt->bus_base);printf("0x12C =%x\n", temp);
@@ -165,7 +170,9 @@ static void ahci_attach(struct device *parent, struct device *self, void *aux)}linkmap = probe_ent->link_port_map;
+#ifndef FASTUPprintf("ahci: linkmap=%x\n", linkmap);
+#endiffor (i = 0; i < probe_ent->n_ports; i++) {if (((linkmap >> i) & 0x01)) {info.sata_reg_base =
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
index c9be8592..a865dbda 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -119,8 +119,9 @@ pciattach(parent, self, aux)int bus, device, maxndevs, function, nfunctions;pci_attach_hook(parent, self, pba);
+#ifndef FASTUPprintf("\n");
-
+#endifiot = pba->pba_iot;memt = pba->pba_memt;pc = pba->pba_pc;
diff --git a/sys/dev/pci/pciconf.c b/sys/dev/pci/pciconf.c
index 9a4cda9e..9d589c7f 100644
--- a/sys/dev/pci/pciconf.c
+++ b/sys/dev/pci/pciconf.c
@@ -58,6 +58,10 @@#include "pcivar.h"#include "pcireg.h"+#ifdef FASTUP
+#define PCIVERBOSE 0
+#endif
+#ifndef PCIVERBOSE#if defined(LOONGSON_2K) || defined(LS7A)#define PCIVERBOSE 5
@@ -389,7 +393,6 @@ static void pcie_write_mrrs(struct pci_device *dev)printf("Failed attempting to set the MPS\n");}}
-static voidprint_bdf (int bus, int device, int function){
@@ -910,6 +913,7 @@ _pci_query_dev (struct pci_device *dev, int bus, int device, int initialise)if (_pciverbose >= 2) {PRINTF ("completed\n");}
+#elseid = _pci_conf_read(tag, PCI_ID_REG);
@@ -1377,14 +1381,19 @@ _pci_businit (int init){char *v;+#ifndef FASTUPtgt_putchar('P');
+#endifv = getenv("pciverbose");
+#ifndef FASTUPtgt_putchar('1');
+#endifif (v) {_pciverbose = atol(v);}
+#ifndef FASTUPtgt_putchar('2');
-
+#endif/* intialise the PCI bridge */if (/*init*/ 1) {SBD_DISPLAY ("PCIH", CHKPNT_PCIH);
diff --git a/sys/dev/pci/ppb.c b/sys/dev/pci/ppb.c
index fcc7c047..bf7bdee4 100644
--- a/sys/dev/pci/ppb.c
+++ b/sys/dev/pci/ppb.c
@@ -97,8 +97,9 @@ ppbattach(parent, self, aux)struct pcibus_attach_args pba;pcireg_t busdata;+#ifndef FASTUPprintf("\n");
-
+#endifbusdata = pci_conf_read(pc, pa->pa_tag, PPB_REG_BUSINFO);if (PPB_BUSINFO_SECONDARY(busdata) == 0) {
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index d8fe36a3..4b5e48f7 100644
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -161,16 +161,22 @@ extern vm_map_t mb_map, kernel_map;}ifinit();
+#ifndef FASTUPprintf("ifinit done.\n");
+#endifdomaininit();
+#ifndef FASTUPprintf("domaininit done.\n");
+#endifsplx(s);}/* * Initialise process table, we become first "process" */
+#ifndef FASTUPprintf("init_proc....\n");
+#endifinit_proc ();/* enable realtime clock interrupts */
diff --git a/sys/kern/subr_autoconf.c b/sys/kern/subr_autoconf.c
index fbb43dc6..bcf772f7 100644
--- a/sys/kern/subr_autoconf.c
+++ b/sys/kern/subr_autoconf.c
@@ -354,8 +354,10 @@ config_found_sm(parent, aux, print, submatch)return dev;}
+#ifndef FASTUPif (print)printf(msgs[(*print)(aux, parent->dv_xname)]);
+#endif#if NMOD_USB_OHCIif(ohci_index)  
@@ -450,7 +452,11 @@ config_attach(parent, match, aux, print)device_ref(dev);if (parent == ROOT)
+    {
+#ifndef FASTUPprintf("%s (root)", dev->dv_xname);
+#endif
+    }else {#ifdef INTERFACE_3A780E
@@ -468,9 +474,12 @@ if (strstr(dev->dv_xname, "wd") != NULL || strstr(dev->dv_xname, "cd") != NULL |b_name[i] = NULL;}#endif	
+
+#ifndef FASTUPprintf("%s at %s", dev->dv_xname, parent->dv_xname);if (print)(void) (*print)(aux, (char *)0);
+#endif#if NMOD_USB_OHCIif(ohci_index)
diff --git a/sys/net/if.c b/sys/net/if.c
index 65fd998e..154f2947 100644
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -183,7 +183,9 @@ voidif_attach(ifp)struct ifnet *ifp;{
+#ifndef FASTUPprintf("in if attach\n");
+#endifif (if_index == 0) {TAILQ_INIT(&ifnet);}
diff --git a/sys/scsi/scsiconf.c b/sys/scsi/scsiconf.c
index fa775979..2877f86f 100644
--- a/sys/scsi/scsiconf.c
+++ b/sys/scsi/scsiconf.c
@@ -1080,7 +1080,9 @@ scsi_probedev(struct scsibus_softc *scsi, int target, int lun)//wan: scsi=sb inif ((cf = config_search(scsibussubmatch, (struct device *)scsi,&sa)) == 0) {//wan: cf=cfdata[19]"sd"scsibusprint(&sa, scsi->sc_dev.dv_xname);
+#ifndef FASTUPprintf(" not configured\n");
+#endifgoto free_devid;}-- 
2.25.1

三、修改后预期效果

如果外设使用的不多,通过以上修改pmon启动时间大致在4s以内


http://chatgpt.dhexx.cn/article/RjuZsosb.shtml

相关文章

loongson PMON使用

PMON使用介绍 龙芯平台计算机目前多采用PMON(Prom Monitor)作为基本的输入输出系统&#xff08;BIOS&#xff09;。 PMON具有强大而丰富的功能&#xff0c;包括硬件初始化、操作系统引导和硬件测试、程序调式等功能。 它提供多种加载操作系统的方式&#xff0c;可以从优盘、光盘…

PMON学习记录3:PMON启动流程

可以参考讯为电子的PMON学习视频&#xff1a; https://www.bilibili.com/video/BV13M4y1P7H8?p8&vd_source7758aca909f593c8652fba5b3a94211dhttps://www.bilibili.com/video/BV13M4y1P7H8?p8&vd_source7758aca909f593c8652fba5b3a94211d 1.通用寄存器&#xff1a; …

PMON学习记录2:PMON启动流程1

PMON启动流程分析 B站有讯为电子的详细介绍视频&#xff0c;连接如下&#xff0c;十分推荐第一次学的看一下https://www.bilibili.com/video/BV13M4y1P7H8?p7&vd_source7758aca909f593c8652fba5b3a94211dhttps://www.bilibili.com/video/BV13M4y1P7H8?p7&vd_source77…

PMON分析(1)- ROM阶段

PMON的运行过程分为两个阶段&#xff1a;第一阶段是在ROM FLASH中运行&#xff0c;主要进行基本硬件初始化&#xff0c;如&#xff1a;初始化核的一些配置寄存器&#xff0c;其中包括cpu状态和原因寄存器、pcie的配置寄存器、GPIO、sata、cache、tlb、内存控制器和串口初始化等…

【基础知识】Oracle核心进程(PMON、SMON、DBWn、LGWR、CKPT)

本文主要总结的是五个核心后台进程&#xff08;PMON、SMON、CKPT、DBWn、LGWR&#xff09;&#xff0c;理解这些进程的概念是Oracle学习的内功&#xff0c;是TroubleShooting和优化的基础&#xff0c;以下内容参考了Oracle编程艺术、官方文档Concept、OCP考试指南及行业大牛的总…

pmon下常用命令

pmon下常用命令 在进入系统前按 “c” 进入pmon的命令行。如设置自器动的话&#xff08;pmon自动加载内核、启动文件系统&#xff09;&#xff0c;需要设置环境变量 a l / al/ al/al1、$append。 1、帮助命令 h 有两种使用方式&#xff1a; ① h 查看所有命令 ② h xxx 查…

PMON环境配置(龙芯,亲测成功1)

1.前言 2.运行平台 3.依赖组件 4.安装与配置安装专用GCC编译器 4.1下载GCC编译器 4.2解压GCC编译器 4.3配置系统运行 5.编译龙芯PMON执行文件 5.1下载PMON源码 5.2 编译并配置git tools插件 5.3编译gzrom…

PMON简介

最近在学习Sylix OS&#xff0c;将系统运行至龙芯开发板时候需要用到PMON&#xff0c;记录一下几种下载方式 目录 一.PMON启动过程 二.PMON命令介绍 1.load 命令 tftp 启动 USB 手动启动 硬盘手动启动 硬盘自动启动 2.reboot 命令 3.date 命令 4.ifconfig 命令 5.ping 命令 6.s…

Java多线程游戏仿真实例分享

这是一篇学习分享博客&#xff0c;这篇博客将会介绍以下几项内容&#xff1a; 1、如何让一个程序同时做多件事&#xff1f;&#xff08;多线程的创建、多线程的应用&#xff09; 2、如何让小球在画面中真实地动起来&#xff1f;&#xff08;赋予小球匀速直线、自由落体、上抛等…

算法工程 # 深度学习算法落地最后一公里:工业界中的大规模向量检索

前言&#xff1a;现代深度学习实践中很多场景其实都是对输入数据进行处理、嵌入&#xff0c;最终获得一个 embedding&#xff0c;然后对 embedding 进行相似度检索&#xff0c;而工业界中的被检索数据往往是海量的&#xff0c;因此深度学习模型落地的最后一步也就是大规模向量检…

向量检索-faiss检索

一、语义相似检索背景 1、为什么引入语义相似检索(向量检索) 问题引出&#xff1a; 搜索引擎和搜索广告最难解决的问题是语义相似度 具体体现&#xff1a;召回和排序。 Case1: 如"从北京到上海的机票"与"携程网"的相似性 Case2"快递软件"与&q…

ModaHub魔搭社区:向量数据库Milvus性能优化问题(三)

目录 Milvus 的导入性能如何? 边插入边搜索会影响搜索速度吗? 批量搜索时,用多线程的收益大吗? 为什么同样的数据量,用 GPU 查询比 CPU 查询慢? Milvus 的导入性能如何? 客户端和服务端在同一台物理机上时,10 万条 128 维的向量导入需要约 0.8 秒(基于 SSD 磁盘)…

Shader 优化相关资料整理

什么是渲染管线 注&#xff1a; 应用程序阶段&#xff1a;主要是CPU与内存打交道&#xff0c;例如碰撞检测&#xff0c;计算好的数据&#xff08;顶点坐标、法向量、纹理坐标、纹理&#xff09;就会通过数据总线传给图形硬件 。 几何阶段&#xff1a;其实上图有个问题&#xff…

pthread多线程入门-并行计算高维向量

介绍pthread ​ pthread其实也可以当作C/C的一个库&#xff0c;所有的函数和数据类型都在<pthread.h>中&#xff0e;跟AVX一样&#xff0c;如果使用了pthread&#xff0c;在编译的时候必须加上编译参数-lpthread&#xff0e;使用gcc编译指令如下&#xff1a; gcc filen…

Unity项目优化详解(持续补充ing)

Unity开发项目总结的几项优化点&#xff0c;比较适合中小项目优化&#xff0c;拿来即用&#xff0c;大型项目需要考虑定制化渲染管线、剔除、光照等。针对优化更多的还是需要结合项目去考虑。 一、模型 Read/Write&#xff1a;同Texture&#xff0c;若开启&#xff0c;Unity会…

SQL查询优化原理与向量化执行引擎

文章目录 1.SQL查询优化的目的2.SQL 查询优化的基本原理之研究如何通过关系代数优化执行方案3.总结使用关系代数进行查询优化的要点4.SQL 查询优化的基础算法5.Volcano Optimizer6.自底向上 vs. 自顶向下7.广度优先搜索与启发式算法8. 向量化执行引擎 1.SQL查询优化的目的 本文…

SQL优化之火山模型、向量化、编译执行

文章目录 1.当代CPU特性2.查询执行模型3.向量化VS编译执行4.编译执行融合向量化5.优化方向 1.当代CPU特性 向量化执行和编译执行是目前主流的两种数据库执行引擎优化手段。 了解CPU特性可以让我们真正理解各种数据库执行引擎优化技术的动机。 影响数据库执行引擎执行效率的C…

UE4性能优化

UE4性能优化 参考文档&#xff1a;UE4性能优化GPU分析**CPU分析**一些相关工具 Time: 2021年10月19日16:46:22 Desc: UE4性能优化 参考文档&#xff1a; https://docs.unrealengine.com/4.27/zh-CN/TestingAndOptimization/PerformanceAndProfiling/https://blog.csdn.net/u01…

一文纵览向量检索

摘要&#xff1a;本文针对向量检索要解决的问题&#xff0c;梳理了主流向量检索相关的技术&#xff0c;分析了向量检索目前的一个趋势。 什么是向量检索 首先我们了解下什么是向量&#xff0c;所谓向量就是由n个数字&#xff08;二值向量由n个比特组成&#xff09;组成的数组&…

C/C++编译器并行优化技术:并行优化针对多核处理器和多线程环境进行优化,以提高程序的并行度

目录标题 引言数据并行&#xff1a;将数据集分割成多个子集&#xff0c;分配给多个线程或处理器并行处理。延迟执行与乱序执行&#xff1a;对指令的执行顺序进行调整&#xff0c;提高指令流水线的利用率和性能。延迟执行乱序执行 任务并行&#xff1a;将程序分解为多个独立的任…