我们这边是OMAP-138的板子,有一块nor flash,想要加快linux启动时间
测试使用了XIP 的启动方式,但是启动时间并没有加快,和传统的拷贝、解压内核所需要的时间比较,并没有快,总体上时间差不多
据网上很多资料的介绍,XIP 启动方式由于省略了uimage 的拷贝和解压,启动速度理论上是会加快的
请问这里为什么,还是我们这边那里设置不正确吗?
CE4 = 0x01000001
Finished LCD Init!!!!!!!!!!!!!!!!!!!!!!!
SF: Detected MX25L12805D with page size 256, total 16777216 bytes
Hit any key to stop autoboot: 0## Booting kernel from Legacy Image at 60000000 …
Image Name: XIP Image
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 7306976 Bytes = 7 MB
Load Address: 60000000
Entry Point: 60000040
Verifying Checksum … OK
XIP Kernel Image … OK
OK
Finished LCD Init!!!!!!!!!!!!!!!!!!!!!!!
SF: Detected MX25L12805D with page size 256, total 16777216 bytes
Hit any key to stop autoboot: 0## Booting kernel from Legacy Image at 60000000 …
Image Name: XIP Image
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 7306976 Bytes = 7 MB
Load Address: 60000000
Entry Point: 60000040
Verifying Checksum … OK
XIP Kernel Image … OK
OK
Starting kernel …
0.000000] Linux version 2.6.33-rc4-D8135_2.0.1.4 (root@eastcom) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #514 PREEMPT Thu May 4 10:19:33 CST 2017
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] Machine: DaVinci DA850/OMAP-L138/AM18xx EVM
[ 0.000000] Ignoring unrecognised tag 0x54410009
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] DaVinci da850/omap-l138/am18xx variant 0x1
[ 0.000000] init_pll0_iomap ok
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 23876
[ 0.000000] Kernel command line: mem=94M console=ttyS0,115200n8 init=/init
[ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.000000] Memory: 94MB = 94MB total
[ 0.000000] Memory: 94548KB available (2700K code, 733K data, 12K init, 0K highmem)
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS:245
[ 0.000000] davinci_clock_tick_rate: 24000000
[ 0.000000] Calibrating delay loop… 98.09 BogoMIPS (lpj=245248)
[ 0.085000] Mount-cache hash table entries: 512
[ 0.100000] CPU: Testing write buffer coherency: ok
[ 0.205000] regulator: core version 0.5
[ 0.225000] NET: Registered protocol family 16
[ 1.075000] bio: create slab <bio-0> at 0
[ 1.375000] regulator: VDCDC1: 3200 <–> 3300 mV at 3300 mV[ 1.400000] regulator: VDCDC2: 1750 <–> 3300 mV at 3300 mV[ 1.420000] regulator: VDCDC3: 950 <–> 1375 mV at 1200 mV[ 1.445000] regulator: LDO1: 1800 mV[ 1.465000] regulator: LDO2: 1150 <–> 1300 mV at 1200 mV[ 1.570000] i2c-gpio i2c-gpio.1: using pins 20 (SDA) and 21 (SCL)
[ 1.685000] Switching to clocksource timer0_1
[ 1.875000] musb_hdrc: version 6.0, cppi4.1-dma, peripheral, debug=0
[ 1.910000] Waiting for USB PHY clock good…
[ 1.925000] musb_hdrc: USB Peripheral mode controller at fee00000 using DMA, IRQ 58
[ 1.950000] NET: Registered protocol family 2
[ 1.960000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 1.975000] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[ 1.975000] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[ 1.975000] TCP: Hash tables configured (established 4096 bind 4096)
[ 1.975000] TCP reno registered
[ 1.975000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 1.980000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 1.990000] NET: Registered protocol family 1
[ 5.240000] msgmni has been set to 184
[ 5.620000] io scheduler noop registered
[ 5.620000] io scheduler deadline registered
[ 5.625000] io scheduler cfq registered (default)
[ 5.635000] da8xx_lcdc da8xx_lcdc.0: GLCD: Found sitronix_st7735s panel
[ 5.670000] lcd fresh start address:0xc5161000
[ 5.760000] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
[ 5.870000] serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a 16550A
[ 6.155000] console [ttyS0] enabled
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] Machine: DaVinci DA850/OMAP-L138/AM18xx EVM
[ 0.000000] Ignoring unrecognised tag 0x54410009
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] DaVinci da850/omap-l138/am18xx variant 0x1
[ 0.000000] init_pll0_iomap ok
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 23876
[ 0.000000] Kernel command line: mem=94M console=ttyS0,115200n8 init=/init
[ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.000000] Memory: 94MB = 94MB total
[ 0.000000] Memory: 94548KB available (2700K code, 733K data, 12K init, 0K highmem)
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS:245
[ 0.000000] davinci_clock_tick_rate: 24000000
[ 0.000000] Calibrating delay loop… 98.09 BogoMIPS (lpj=245248)
[ 0.085000] Mount-cache hash table entries: 512
[ 0.100000] CPU: Testing write buffer coherency: ok
[ 0.205000] regulator: core version 0.5
[ 0.225000] NET: Registered protocol family 16
[ 1.075000] bio: create slab <bio-0> at 0
[ 1.375000] regulator: VDCDC1: 3200 <–> 3300 mV at 3300 mV[ 1.400000] regulator: VDCDC2: 1750 <–> 3300 mV at 3300 mV[ 1.420000] regulator: VDCDC3: 950 <–> 1375 mV at 1200 mV[ 1.445000] regulator: LDO1: 1800 mV[ 1.465000] regulator: LDO2: 1150 <–> 1300 mV at 1200 mV[ 1.570000] i2c-gpio i2c-gpio.1: using pins 20 (SDA) and 21 (SCL)
[ 1.685000] Switching to clocksource timer0_1
[ 1.875000] musb_hdrc: version 6.0, cppi4.1-dma, peripheral, debug=0
[ 1.910000] Waiting for USB PHY clock good…
[ 1.925000] musb_hdrc: USB Peripheral mode controller at fee00000 using DMA, IRQ 58
[ 1.950000] NET: Registered protocol family 2
[ 1.960000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 1.975000] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[ 1.975000] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[ 1.975000] TCP: Hash tables configured (established 4096 bind 4096)
[ 1.975000] TCP reno registered
[ 1.975000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 1.980000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 1.990000] NET: Registered protocol family 1
[ 5.240000] msgmni has been set to 184
[ 5.620000] io scheduler noop registered
[ 5.620000] io scheduler deadline registered
[ 5.625000] io scheduler cfq registered (default)
[ 5.635000] da8xx_lcdc da8xx_lcdc.0: GLCD: Found sitronix_st7735s panel
[ 5.670000] lcd fresh start address:0xc5161000
[ 5.760000] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
[ 5.870000] serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a 16550A
[ 6.155000] console [ttyS0] enabled
Denny%20Yang99373:
xip虽然没有COPY,但是ARM还是需要到固定的地址读取指令,时间并不减少。
你可以试试COPY的方式加入EDMA试试。
sz su:
回复 Denny%20Yang99373:
那么就是使用压缩内核,然后压缩内核拷贝的时候,使用EDMA的方式进行拷贝吗