HI3536 启动串口3作为调试串口 其他串口或者海思其他芯片类似处理

 浮桥轶事   2019-04-02 15:38   272 人阅读  0 条评论

由于在项目中 串口0与级联复用,现在需要级联输出,占用了uart0,需要改别的串口作为调试串口




使用单CPU模式下,在主CPU内中启用uart2和uart3,‘+’部分为新增内容


1、kernel/linux-3.10.y/arch/arm/mach-hi3536/core.c

HIL_AMBA_DEVICE(uart0, "uart:0",  UART0,    NULL);

HIL_AMBA_DEVICE(uart1, "uart:1",  UART1,    NULL);

+ HIL_AMBA_DEVICE(uart2, "uart:2",  UART2,    NULL);

+ HIL_AMBA_DEVICE(uart3, "uart:3",  UART3,    NULL);


static struct amba_device *amba_devs[] __initdata = {

        &HIL_AMBADEV_NAME(uart0),

        &HIL_AMBADEV_NAME(uart1),

        + &HIL_AMBADEV_NAME(uart2),

        + &HIL_AMBADEV_NAME(uart3),

};


static struct clk_lookup lookups[] = {

        {

                /* UART0 */

                .dev_id                = "uart:0",

                .clk                = &uart_clk,

        },

        {

                /* UART1 */

                .dev_id                = "uart:1",

                .clk                = &uart_clk,

        },

+ /////////////////////////////////新增////////////////////////////////

        {

                /* UART2 */

                .dev_id                = "uart:2",

                .clk                = &uart_clk,

        },

        {

                /* UART3 */

                .dev_id                = "uart:3",

                .clk                = &uart_clk,

        },

/////////////////////////////////////////////////////////////////////

        { /* SP804 timers */

                .dev_id                = "sp804",

                .clk                = &sp804_clk,

        },


kernel/linux-3.10.y/arch/arm/mach-hi3536/include/mach/platform.h


#define REG_BASE_UART0                                  0x12080000

#define REG_BASE_UART1                                  0x12090000

+ #define REG_BASE_UART2                                  0x120A0000

+ #define REG_BASE_UART3                                  0x120B0000


kernel/linux-3.10.y/include/linux/amba/bus.h


- #define AMBA_NR_IRQS        2

+ #define AMBA_NR_IRQS        4

#define AMBA_CID        0xb105f00d

struct clk;

struct amba_device {

        struct device                dev;

        struct resource                res;

        struct clk                *pclk;

        u64                        dma_mask;

        unsigned int                periphid;

        unsigned int                irq[AMBA_NR_IRQS];

};




转:http://www.ebaina.com/forum.php?mod=viewthread&tid=23671&highlight=uart


在启动脚本/etc/init.d/S00devs中修改


#!/bin/sh

mknod /dev/console c 5 1

mknod /dev/ttyAMA0 c 204 64

mknod /dev/ttyAMA1 c 204 65

+mknod /dev/ttyAMA2 c 204 66

+mknod /dev/ttyAMA3 c 204 67

mknod /dev/ttyS000 c 204 64  ///这里一定需要改,因为你是要串口3作为调试串口,而ttyS000  就是调试串口,需要将最后的64改成你注册的串口也就是67

mknod /dev/null    c 1 3



添加串口的基地址,具体的地址可以在海思的文档中找到


进行过以上操作之后 内核中可以开启UART2了


不过在使用之前还需要开启端口复用,在ko文件中找到load3536 所启动的pinmux.sh/pinmux_socket_master.sh/pinmux_socket_slave.sh  三者其一,在开头加上类似如下  地址不一定是你开发板的地址


uart 1

himm 0x120F0130 0x01 

himm 0x120F0134 0x01

himm 0x120F0138 0x01

himm 0x120F013C 0x01



URT2:

himm 0x120F0140 0x01


himm 0x120F0144 0x01


#UART3

himm 0x120f0164 0x1   ///我的开发板

himm 0x120f0168 0x1  ///我的开发板


打赏
本文地址:http://www.fuxiqiao.com/post/3.html
版权声明:本文为原创文章,版权归 浮桥轶事 所有,欢迎分享本文,转载请保留出处!
PREVIOUS:已经是最后一篇了

 发表评论


表情

还没有留言,还不快点抢沙发?