微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于AM335x的U-Boot/SPL 的CCS 调试

基于AM335x的U-Boot/SPL 的CCS 调试

时间:07-21 来源:互联网 点击:

t的调试过程和SPL调试过程是类似的,这里主要说明不同的几点:

  A. 从AM335x的启动过程可知,U-Boot是运行在DDR中的,而DDR是由SPL来初始化的,所以,加载U-Boot前,先加载并运行SPL。

  B. 加载U-Boot 的image是 U-Boot。 这里U-Boot 是ELF格式的, 其包含了加载地址, symbol等信息,所以使用CCS 菜单 Run-》 Load-》 LoadProgram, 加载U-Boot 即可。加载成功后, 如下图所示:

  如图所示, PC直接指到0x80100000地址了,也就是U-Boot的起始地址(入口)了,该地址是CCS从头ELF头里面得到的,其定义在CONFIG_SYS_TEXT_BASE(include/configs/am335x_evm.h)中。

  C. 相对 SPL 的调试, U-Boot有个地方不同,即有代码的重载(code relocation), 重载后代码的在SOC上的memory map和编译出的memory map会有个偏移。这个过程是在函数relocate_code()中完成的。 relocate_code()函数是在board_init_f()中调用的,如果需要调试从调用该函数开始后面的代码,则加上偏移重载symbol。

  在CCS的菜单, Run-》 Load -》 Add Symbols, 加载的image还是前面的U-Boot, data/code offset 都是0x9FF88000。 这里的offset是从gd-》relocaddr(arch/arm arch/arm/lib/board.c)得到的。设置界面如下:

  注意到上述几点,然后就可以按照SPL的调试过程对U-Boot进行调试了。

  4. 总结

  关于用CCS+emulator对AM335x的U-Boot/SPL的调试就介绍完了。这里介绍的方法,包含了CCS+emulator调试的基本原则,不仅仅可以运用于U-Boot/SPL调试,也可以运用于Starterware,Kernel等调试。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top