Wednesday, August 25, 2010

Printascii fix

Same function also points to yet another function
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