This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Beagleboard omap 3630 uart change

I have a beagleboard xm which has omap 3630 processor in it.

Beagleboard has only one serial port on it and I guess that only one uart is processing it.

I intend to find the uart which is processing it and then change the uart to some another.

For instance if uart 1 is processing the serial port then I would like like to change it to uart 2/3/4.

Will you pls provide some info as how to go about doing this?

  • It should be UART3. However, to change this you will need to make a hardware change.

    Hardware info can be found here:

    http://beagleboard.org/hardware

    Jon

  • Thanks Jon for the reply.

    I do not think there is need to change the hardware.

    In the kernel source we must be programatically able to to do the change.

    I wanted to know the file in kernel source code where it is initializing the uart serial drivers.

  • Setting of the console port is typically done via the bootloader boot parameters passed to the kernel. For example, on my OMAP3430 beagle board I pass "console=ttyO2" for UART3. To change to UART1 you would pass "console=ttyO0". 

    However, my point is that although in software you can change the port easily enough, there is physically only one port on the board. The different uarts are not muxed to this same port and so if you change the port used for console, how do you connect your serial cable to retrieve the output?

    Jon

  • The beagle board XM hardware guide states ...

    "Support for RS232 via UART3 is provided by DB9 connector on the BeagleBoard for access to an onboard RS232 transceiver."

    See: http://beagleboard.org/static/BBxMSRM_latest.pdf

    So hardware wise I don't see how you can use a different port without a hardware change. Let me know if I am missing something.

    Cheers
    Jon


  • Thanks Jon for the reply.

    Refering the BB-xM_Schematic_REVA3.pdf I see that uart 3 is connect to db9 pin.

    I have debugged the kernel code related to UART where I see uart1 and 2 being used.

    File Name:-  omap_hwmod_3xxx_data.c
     
    /* Master interfaces on the L4_CORE interconnect */

    static struct omap_hwmod_ocp_if *omap3xxx_l4_core_masters[] = {
            &omap3xxx_l4_core__l4_wkup,
            &omap3_l4_core__uart1,
            &omap3_l4_core__uart2,
            &omap3_l4_core__i2c1,
            &omap3_l4_core__i2c2,
            &omap3_l4_core__i2c3,
    };


    /* L4 CORE */
    static struct omap_hwmod omap3xxx_l4_core_hwmod = {
            .name           = "l4_core",
            .class          = &l4_hwmod_class,
            .masters        = omap3xxx_l4_core_masters,
            .masters_cnt    = ARRAY_SIZE(omap3xxx_l4_core_masters),
            .slaves         = omap3xxx_l4_core_slaves,
            .slaves_cnt     = ARRAY_SIZE(omap3xxx_l4_core_slaves),
            .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
            .flags          = HWMOD_NO_IDLEST,
    };

    So getting a bit confused which uart is actually used.

    Can you pls let me know where these structures omap3_l4_core__uart1 & omap3_l4_core__uart2 might have been used in source code I mean where in code it will be actually deciding/selecting the uart3 among 1,2,3 & 4 uarts?

  • Rupesh Kumar said:

    Thanks Jon for the reply.

    Refering the BB-xM_Schematic_REVA3.pdf I see that uart 3 is connect to db9 pin.

    I have debugged the kernel code related to UART where I see uart1 and 2 being used.

    File Name:-  omap_hwmod_3xxx_data.c
     
    /* Master interfaces on the L4_CORE interconnect */

    static struct omap_hwmod_ocp_if *omap3xxx_l4_core_masters[] = {
            &omap3xxx_l4_core__l4_wkup,
            &omap3_l4_core__uart1,
            &omap3_l4_core__uart2,
            &omap3_l4_core__i2c1,
            &omap3_l4_core__i2c2,
            &omap3_l4_core__i2c3,
    };


    /* L4 CORE */
    static struct omap_hwmod omap3xxx_l4_core_hwmod = {
            .name           = "l4_core",
            .class          = &l4_hwmod_class,
            .masters        = omap3xxx_l4_core_masters,
            .masters_cnt    = ARRAY_SIZE(omap3xxx_l4_core_masters),
            .slaves         = omap3xxx_l4_core_slaves,
            .slaves_cnt     = ARRAY_SIZE(omap3xxx_l4_core_slaves),
            .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
            .flags          = HWMOD_NO_IDLEST,
    };


    So getting a bit confused which uart is actually used.

    Can you pls let me know where these structures omap3_l4_core__uart1 & omap3_l4_core__uart2 might have been used in source code I mean where in code it will be actually deciding/selecting the uart3 among 1,2,3 & 4 uarts?

    Sorry, I am not sure I understand your question. Are you asking which UART is being used as the console? If so it is definitely UART3 as that is all the h/w supports. As I mentioned before selection of the console UART is typically done via the boot arguments passed from the bootloader using the "console" parameter.

    Cheers
    Jon