修改UBOOT和LINUX调试串口(TI达芬奇芯片--DM6467)

2019-07-27 17:18发布

1.1 概述TI针对DM6467提供的UBOOT和内核默认都是串口0作为调试串口输出的,但现在我需要使用DM6467的UART0的modem功能,所以修改代码,改变调试串口为串口2。需要修改的主要有几部分内容:1. UBL 代码(这部分代码在刚上电的时候,初始化CPU和拷贝UBOOT到DDR,打印信息只有很少,所以不做修改)。2. UBOOT代码。3. linux内核驱动。      使用的代码及版本请参考:http://processors.wiki.ti.com/index.php/DaVinci_PSP_03.01_Beta_(r31)_Release_Notes
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
白丁野老
1楼-- · 2019-07-28 09:53
3.1 修改内核调试串口
   3.1.1 内核解压输出信息
        内核解压时使用的串口驱动是独立于UBOOT或内核的串口驱动的,解压时输出的打印信息的相关的代码在/arch/arm/mach_davinci/include/mach/uncompress.h内。这里的串口输出代码很简单,只是往数据寄存器写数据,并没有对串口进行相关的配置,所以这里串口的正常输出需要依赖UBOOT对串口的正确配置。
白丁野老
2楼-- · 2019-07-28 11:44
 精彩回答 2  元偷偷看……
白丁野老
3楼-- · 2019-07-28 16:03
3.1.2 修改内核驱动,改变内核调试串口
    因为内核启动时会对上面提到的几个寄存器作修改,所以需要修改/arch/arm/mach_davinci/board_dm646x_evm.c文件来确认2.1提到的寄存器的配置,同时需要使能UART1或UART2的时钟,默认情况下是只使能UART0的时钟。内核串口驱动就不需要修改了,因为也是16550的驱动,这份驱动也没有去配置串口的工作模式,所以UBOOT里配置了寄存器就行了,除非你想确认寄存器的配置,防止启动内核时寄存器被修改了或想控制串口的工作模式。
   使能UART1/2时钟:
  1. 1 static struct davinci_uart_config uart_config __initdata = {
  2. 2
  3. 3     .enabled_uarts = (1 << 0)|(1 << 1)|(1 << 2),
  4. 4
  5. 5 };
复制代码
白丁野老
4楼-- · 2019-07-28 22:01
重新编译内核,启动UBOOT,修改内核启动参数:
  1. setenv bootargs mem=76M console=ttyS2,115200n8 ip=192.168.15.23 root=/dev/nfs rw nfsroot=192.168.15.48:/home/jamie/dvsdk/filesysmin
复制代码
下载内核,启动~~顺利的话就可以在UART2上输出系统的调试信息了:
  1. Uncompressing Linux.......................................................................................................................... done, booting the kernel.
  2. Linux version 2.6.32-rc2-davinci1 (root@ubuntuSv) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #107 PREEMPT Tue Oct 25 08:04:49 UTC 2011
  3. CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
  4. CPU: VIVT data cache, VIVT instruction cache
  5. Machine: ZMV-6467
  6. Memory policy: ECC disabled, Data cache writeback
  7. DaVinci dm6467_rev3.x variant 0x1
复制代码
天灵灵地灵灵
5楼-- · 2019-07-28 23:28
在UBOOT里涉及到上面几个寄存器的配置的是在dm6467_evm.c的初始化部分
达芬奇的芯片在视频应用很多的,监控系统常用。
yiyigirl2014
6楼-- · 2019-07-28 23:33
/* Enable USB */
37     REG(PINMUX0) &= ~(0x80000000);
原来这样就可以使能USB了。

一周热门 更多>