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.

DM8127没有网口和usb,如何调试应用程序,如何快速烧写内核和根文件系统



由于不熟悉DM8127芯片,硬件工程师在设计电路的时候没有设计网口和usb接口,只有串口和jtag接口,现在着手调试应用程序,发现问题很严重。

因为没有网口,所以不能使用nfs挂载根文件系统,每次修改应用程序以后都要重新烧写根文件系统。而通过串口(波特率115200)或者xds560v2仿真器烧写40M左右根文件系统,每次都得好几个小时,这导致调试工作几乎无法进行。

这个问题还有得救吗?

  • 你好,

    板上有SD卡接口么?可以把文件系统放在SD卡上。

  • SD卡也没有。能不能修改uboot,把波特率提高到921600?

  • 你好,

    硬件上是支持的,软件可以尝试修改。

    UART functions include:
    • Baud-rate up to 3.6 Mbit/s on UART0, UART1, and UART2

  • 好的,我试试看,谢谢!

  • Chris,我这几天试了一下修改uboot的波特率,但是没有完成,需要向您请教。

    我首先是在 (\ipnc\Source\ti_tools\ipnc_psp_arago\uboot\include\configs\ti8148_ipnc.h)和 (\ipnc\Source\ti_tools\ipnc_psp_arago\uboot\include\ti8148_ipnc_quick_mmc.h)添加230400, 460800, 921600这几个波特率数值,代码如下:

    #define CONFIG_BAUDRATE        115200  //保持115200,想通过uboot命令来修改
    //#define CONFIG_SYS_BAUDRATE_TABLE    { 110, 300, 600, 1200, 2400, \
    //4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }
    #define CONFIG_SYS_BAUDRATE_TABLE    { 110, 300, 600, 1200, 2400, \
    4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200, 230400, 460800, 921600 }

    修改后编译烧写,重启uboot,并通过secureCRT设置波特率

    setenv baudrate 921600

    回车键设置后uboot陷入死循环,判断uboot还有需要修改的地方。

    通过串口打印调试追踪到“setenv baudrate 921600”这个命令会调用\ipnc\Source\ti_tools\ipnc_psp_arago\u-boot\common\serial.c里面的

    void serial_setbrg (void)
    {
        if (!(gd->flags & GD_FLG_RELOC) || !serial_current) {
            struct serial_device *dev = default_serial_console ();

            dev->setbrg ();
            return;
        }

        serial_current->setbrg ();
    }

    该函数进一步调用dev->setbrg (),到这里以后通过串口打印就很难追踪下一步执行的是哪个函数。

    请问下一步该去修改哪里的代码,使uboot能设置波特率为921600?

    谢谢!

  • Huchong Li 说:

    修改后编译烧写,重启uboot,并通过secureCRT设置波特率

    setenv baudrate 921600

    回车键设置后uboot陷入死循环,判断uboot还有需要修改的地方。

    请问设置后你是否有把你的串口程序的波特率配置为921600?

  • 设置了,secureCRT输出

    ## Switch baudrate to %d bps and press ESC ...

    的时候,就去改secureCRT的波特率为912600,但是未起作用。

    我试验过,如果是改为小于115200的值,比如9600,是可以修改成功的。

    所以,是不是uboot还有需要修改的地方?

  • 另外,我也试着用ccs调试uboot代码,发现ccs有很多符号解析不出来,所以只有一部分代码能和汇编代码关联上,很多想看的代码都不能调试运行,这个问题有办法解决吗?

    谢谢~

  • 你好,

    从TRM里UART的baut rate配置看,115200和961200使用的倍频是不同的,但115200和9600的倍频是一样的,可能这就是配置961200不正确的原因。

    在u-boot\drivers\serial下,我看到ns16550.c是有被编译使用的,你能否看看相关代码?

  • 好的,谢谢Chris

  • DM8148的uboot波特率确实涉及到模式问题,主要是以下参数,搜uboot代码可以找到

    #ifdef CONFIG_APTIX

    #define MODE_X_DIV 13

    #else

    #define MODE_X_DIV 16

    #endif

    但是改起来不太好改,还有其它需要改的代码,不得不放弃了。

    后来,另想到一个办法烧写根文件系统,主要包括两方面:

    一是,通过ccs5和560v2仿真器来加载根文件系统到ddr内存,主要是通过memory工具的load memory;

    二是,通过uboot将已经加载到ddr的数据,用nand write命令将根文件系统烧写到flash中。

    当然,具体操作有很多细节问题,最后烧写40M左右的根文件系统在10分钟左右,而且经过测试烧写成功。