十u-boot 调试--串口修改

Posted kele-dad

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十u-boot 调试--串口修改相关的知识,希望对你有一定的参考价值。

  uboot 烧写进 norflash 进行调试

12.1 烧写后 串口不使能

  内存不能使能

  遍历代码,可以发现,在SDRAM 初始化之前,我们并没有设置时钟,但是SDRAM初始化后,我们已经开始用内存控制器了,这是不合理的,操作器件之前,我们必须把时钟给初始化。

  在源代码中,内存控制器初始化之前,并没有进行时钟的设置。加上时钟的设置。

  内存控制器的时钟 为MPLL,我们要把 MPLL 的初始化放入到 start.S 中进行初始化,取消board_init_f 执行的链表 init_sequence_f 的 board_early_init_f 函数中对MPLL 的设置即可。

  源代码的时钟的设置在 board_init_f 执行的链表 init_sequence_f 的 board_early_init_f 函数中,我们要把这些代码移动到 _start.S 中执行,在内存控制器初始化之前。

  还有就是必须关闭掉 终端的 静态显示:配置宏为CONFIG_CONSOLE_RECORD

12.1.1 修改 start.S 中的代码

  技术分享图片

12.1.2 注释掉 jz2440.c 对MPLL 的设置

  board_early_init_f 中

  技术分享图片

12.1.3 编译烧写

  技术分享图片

12.2 调试方法

  打开 openjtag 工具:

  技术分享图片

  点击 connect,然后点击 telnet,进入 telent 中运行:

  reset halt,

  技术分享图片

  halt

  技术分享图片

  读写前 4个 字节 ,与 uboot.bin 的二进制进行对比:

  技术分享图片  

  uboot.bin 中的字节:

  技术分享图片

  可以看出读取的数据是正确的。

  从 step 0 开始执行,一步一步 查看数据是否正确:

  技术分享图片

  这样运行很慢,我们也可以将 uboot 文件进行 objdump 转码成 uboot.dis 文件,然后设置断点。

  在 board_init_f_alloc_reserve 这里设置断点,因为执行完了内存控制器初始化后,就开始执行此函数:

  uboot.dis  文件中的地址:

  技术分享图片

  技术分享图片

  我们在 0008444 那里设置一个硬件断点:

  技术分享图片

  然后  resume 继续执行:

  技术分享图片

  可以看出在 0x00008444 处暂停了,此时 内存已经初始化完了,应该是可以访问内存的。

  读内存:mdw 0x30000000

  技术分享图片

  写内存:mww 0x30000000 0x12345678,写完之后读取内存 mdw 0x30000000

  技术分享图片

12.1.2

  技术分享图片

 

    

 

 

  

以上是关于十u-boot 调试--串口修改的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu上面有没有串口调试工具

使用 u-boot 通过串口更新文件

am335x UART1输入u-boot 调试信息代码修改

tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——移植u-boot.bin(打印串口控制台)

调试 u-boot 崩溃

u-boot-1.1.6实现自定义命令