mdesc->map_io()
which actually does mapping of the statically mapped devices.
/*
* Ask the machine support to map in the statically mapped devices.
*/
This ended at puppy_map_io()
BINGO!!
Probably this is where I need to add descriptor for my UART3
Currently mapping only this:
#define PUPPY_L4_BASE_VIRT 0xFC000000
#define L4_CORE_SIZE 0x00FFFFFF
static struct map_desc puppy_io_desc[] __initdata = {
{
.virtual = PUPPY_L4_BASE_VIRT,
.pfn = __phys_to_pfn(PUPPY_L4_BASE),
.length = L4_CORE_SIZE,
.type = MT_DEVICE
},
};
Add entry for our UART3, which exists under L4_PER_BASE region. New mach descriptor now looks like this:
static struct map_desc puppy_io_desc[] __initdata = {
{
.virtual = PUPPY_L4_CORE_VIRT,
.pfn = __phys_to_pfn(PUPPY_L4_BASE),
.length = L4_CORE_SIZE,
.type = MT_DEVICE
},
{
.virtual = PUPPY_L4_PER_VIRT,
.pfn = __phys_to_pfn(PUPPY_L4_PER_BASE),
.length = L4_PER_SIZE,
.type = MT_DEVICE
},
};
where
#define PUPPY_L4_PER_VIRT 0xFD000000
#define L4_PER_SIZE 0x000FFFFF
and
#define PUPPY_L4_PER_BASE 0x49000000
After rebuilding the image, I did manage to get all the logs without anymore crashes :)
However, I still need to fix the calibration loop issues occuring due to non jiffy timer implementation. The new log now looks like this:
## Booting kernel from Legacy Image at 80300000 ...
Image Name: Puppy Linux
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1398532 Bytes = 1.3 MB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
<5>Linux version 2.6.35-rc3 (amar@amar-laptop) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-188) ) #7 PREEMPT Wed Aug 25 23:04:33 CEST 2010
CPU: ARMv7 Processor [411fc083] revision 3 (ARMv7), cr=10c53c7f
CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
Machine: PuppyBeagle
Memory policy: ECC disabled, Data cache writeback
<7>On node 0 totalpages: 65536
<7>free_area_init_node: node 0, pgdat c02d4714, node_mem_map c02eb000
<7> Normal zone: 512 pages used for memmap
<7> Normal zone: 0 pages reserved
<7> Normal zone: 65024 pages, LIFO batch:15
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024
<5>Kernel command line: console=ttyS2,115200n8 console=tty0 root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait omapfb.video_mode=1024x768MR-16@60
<6>PID hash table entries: 1024 (order: 0, 4096 bytes)
<6>Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
<6>Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
<6>Memory: 128MB 128MB = 256MB total
<5>Memory: 256916k/256916k available, 5228k reserved, 0K highmem
<5>Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffc00000 - 0xffe00000 ( 2 MB)
vmalloc : 0xd0800000 - 0xe0000000 ( 248 MB)
lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.init : 0xc0008000 - 0xc0021000 ( 100 kB)
.text : 0xc0021000 - 0xc02a9000 (2592 kB)
.data : 0xc02c0000 - 0xc02d4d20 ( 84 kB)
<6>Hierarchical RCU implementation.
<6> RCU-based detection of stalled CPUs is disabled.
<6> Verbose stalled-CPUs detection is disabled.
<6>NR_IRQS:96
Console: colour dummy device 80x30
<6>console [tty0] enabled
<6>Calibrating delay loop...
Note that UART3 is still mapped at the virtual address : 0xFD000000
Next steps:
- Understand the mem. layout printed in the above log.
- Fixing jiffies
No comments:
Post a Comment