由于不熟悉DM8127芯片,硬件工程师在设计电路的时候没有设计网口和usb接口,只有串口和jtag接口,现在着手调试应用程序,发现问题很严重。
因为没有网口,所以不能使用nfs挂载根文件系统,每次修改应用程序以后都要重新烧写根文件系统。而通过串口(波特率115200)或者xds560v2仿真器烧写40M左右根文件系统,每次都得好几个小时,这导致调试工作几乎无法进行。
这个问题还有得救吗?
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接口,只有串口和jtag接口,现在着手调试应用程序,发现问题很严重。
因为没有网口,所以不能使用nfs挂载根文件系统,每次修改应用程序以后都要重新烧写根文件系统。而通过串口(波特率115200)或者xds560v2仿真器烧写40M左右根文件系统,每次都得好几个小时,这导致调试工作几乎无法进行。
这个问题还有得救吗?
你好,
硬件上是支持的,软件可以尝试修改。
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有很多符号解析不出来,所以只有一部分代码能和汇编代码关联上,很多想看的代码都不能调试运行,这个问题有办法解决吗?
谢谢~
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分钟左右,而且经过测试烧写成功。