Part Number: EVMK2H
Tool/software: Code Composer Studio
Hi, all,
I have some confusion about Linux memory allocation:
1.The memory allocation in DTB is as follows. Does that mean Arm can use the memory 0x80000000~0x20000000, and DSP can use the memory 0xa0000000~0x20000000 ?
1)keystone.dtsi
memory {
reg = <0x00000000 0x80000000 0x00000000 0x20000000>;
2)k2hk.dtsi
dspmem: dspmem {
compatible = "linux,rproc-user";
mem = <0x0c000000 0x000600000
0xa0000000 0x20000000>;
label = "dspmem";
2. If I set U-boot environment mem_reserve =512M, Does that mean reserve 512M from 0xE0000000 for DSP applications and retain first 1.5GB (from 0x80000000) for Linux ??
If I both set the 1 and 2, which one will Linux use?? Which section of memory can be safely used by DSP??
That confuse me a long time . Looking forward to your reply. Thank you!
Here is my Linux start log:
-------------------------------------------------------------------------------
SPD csum OK; in SPD: 19 A7; computed 00000019 A7
DDR3A Speed will be configured for 1333 Operation.
Detected SO-DIMM [SQR-SD3T-2G1333SED]
DDR3 speed 1333
DRAM: 2 GiB (includes reported below)
DRAM: 2 GiB
NAND: 512 MiB
Net: K2HK_EMAC, K2HK_EMAC1, K2HK_EMAC2, K2HK_EMAC3
Hit any key to stop autoboot: 0
Creating 1 MTD partitions on "nand0":
0x000000180000-0x000020000000 : "mtd=2"
UBI: attaching mtd1 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 126976 bytes
UBI: smallest flash I/O unit: 2048
UBI: VID header offset: 2048 (aligned 2048)
UBI: data offset: 4096
UBI: attached mtd1 to ubi0
UBI: MTD device name: "mtd=2"
UBI: MTD device size: 510 MiB
UBI: number of good PEBs: 4080
UBI: number of bad PEBs: 4
UBI: max. allowed volumes: 128
UBI: wear-leveling threshold: 4096
UBI: number of internal volumes: 1
UBI: number of user volumes: 3
UBI: available PEBs: 0
UBI: total number of reserved PEBs: 4080
UBI: number of PEBs reserved for bad PEB handling: 40
UBI: max/mean erase counter: 16/3
UBIFS: mounted UBI device 0, volume 0, name "boot"
UBIFS: mounted read-only
UBIFS: file system size: 4571136 bytes (4464 KiB, 4 MiB, 36 LEBs)
UBIFS: journal size: 1142785 bytes (1116 KiB, 1 MiB, 8 LEBs)
UBIFS: media format: w4/r0 (latest is w4/r0)
UBIFS: default compressor: LZO
UBIFS: reserved for root: 0 bytes (0 KiB)
Loading file 'securedb.key.bin' to addr 0x0c000000 with size 28 (0x0000001c)...
Done
Loading file 'uImage-k2hk-evm.dtb' to addr 0x87000000 with size 55893 (0x0000da55)...
Done
Loading file 'skern-k2hk-evm.bin' to addr 0x0c5f0000 with size 45056 (0x0000b000)...
Done
Loading file 'uImage-keystone-evm.bin' to addr 0x88000000 with size 4175312 (0x003fb5d0)...
Done
## installed monitor, freq [200000000], status 0
## Booting kernel from Legacy Image at 88000000 ...
Image Name: Linux-3.10.72
Created: 2018-12-24 5:04:14 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4175248 Bytes = 4 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 87000000
Booting using the fdt blob at 0x87000000
Loading Kernel Image ... OK
OK
Using Device Tree in place at 87000000, end 87010a54
[ 0.000000] Linux version 3.10.72 (root@athena-VirtualBox) (gcc version 4.7.3 20130226 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) ) #2 SMP Mon Dec 24 13:03:07 CST 2018
[ 0.000000] CPU: ARMv7 Processor [412fc0f4] revision 4 (ARMv7), cr=30c7387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
[ 0.000000] Machine: KeyStone2, model: Texas Instruments Keystone 2 SoC
[ 0.000000] switching to high address space at 0x800000000
[ 0.000000] cma: CMA: reserved 16 MiB at 2e800000
[ 0.000000] Memory policy: ECC disabled, Data cache writealloc
[ 0.000000] PERCPU: Embedded 8 pages/cpu @c146f000 s11264 r8192 d13312 u32768
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 391696
[ 0.000000] Kernel command line: console=ttyS0,115200n8 rootwait=1 rootfstype=ubifs root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048
[ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[ 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: 1536MB = 1536MB total
[ 0.000000] Memory: 1534528k/1534528k available, 38336k reserved, 794624K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xf0000000 - 0xff000000 ( 240 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xef800000 ( 760 MB)
[ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
[ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
[ 0.000000] .text : 0xc0008000 - 0xc075cbd4 (7507 kB)
[ 0.000000] .init : 0xc075d000 - 0xc07b0c00 ( 335 kB)
[ 0.000000] .data : 0xc07b2000 - 0xc081a498 ( 418 kB)
[ 0.000000] .bss : 0xc081a498 - 0xc084c6fc ( 201 kB)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS:16 nr_irqs:16 16
[ 0.000000] ipc irq: irqchip registered, range 512-539
[ 0.000000] Main PLL clk (1200000000 Hz), parent (122880000 Hz),postdiv = 2, mult = 624, prediv = 31
[ 0.000000] Generic PLL clk (1400000000 Hz), parent (125000000 Hz),postdiv = 1, mult = 55, prediv = 4
[ 0.000000] Generic PLL clk (983040000 Hz), parent (122880000 Hz),postdiv = 2, mult = 15, prediv = 0
[ 0.000000] Generic PLL clk (333333333 Hz), parent (100000000 Hz),postdiv = 6, mult = 19, prediv = 0
[ 0.000000] Generic PLL clk (333333333 Hz), parent (100000000 Hz),postdiv = 6, mult = 19, prediv = 0
[ 0.000000] Architected local timer running at 200.00MHz (phys).
[ 0.000000] Switching to timer-based delay loop
[ 0.000000] sched_clock: ARM arch timer >56 bits at 200000kHz, resolution 640/128ns
[ 0.000000] keystone timer clock @200000000 MHz
[ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 4294967286ms
[ 0.000000] Console: colour dummy device 80x30
[ 20.615809] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=2000000)
[ 20.615817] pid_max: default: 4096 minimum: 301
[ 20.615933] Mount-cache hash table entries: 512
[ 20.623938] CPU: Testing write buffer coherency: ok
[ 20.624097] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 20.624106] psci: probing function IDs from device-tree
[ 20.624116] Setting up static identity map for 0xc05307e0 - 0xc0530838
[ 20.628925] CPU1: Booted secondary processor
[ 20.628949] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 20.633533] CPU2: Booted secondary processor
[ 20.633558] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[ 20.638137] CPU3: Booted secondary processor
[ 20.638162] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[ 20.638230] Brought up 4 CPUs
[ 20.638247] SMP: Total of 4 processors activated (1600.00 BogoMIPS).
[ 20.638251] CPU: All CPU(s) started in SVC mode.
[ 20.638643] devtmpfs: initialized
[ 20.649503] NET: Registered protocol family 16
[ 20.650294] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 20.661253] No ATAGs?
[ 20.661268] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[ 20.661273] hw-breakpoint: maximum watchpoint size is 8 bytes.
[ 20.670172] bio: create slab <bio-0> at 0
[ 20.670513] keystone-pcie: keystone_pcie_rc_init - start
[ 20.670532] keystone2_pcie_serdes_setup for domain 0
[ 20.672652] keystone2_pcie_serdes_setup done domain 0, en_link_train = 1
[ 20.672677] keystone-pcie: MEM 0x0000000050000000..0x000000005fffffff -> 0x0000000050000000
[ 20.672685] keystone-pcie: IO 0x0000000023250000..0x0000000023253fff -> 0x0000000000000000