基于AM33x的UBootSPL的CCS调试.docx

上传人:b****4 文档编号:3123299 上传时间:2022-11-17 格式:DOCX 页数:13 大小:616.60KB
下载 相关 举报
基于AM33x的UBootSPL的CCS调试.docx_第1页
第1页 / 共13页
基于AM33x的UBootSPL的CCS调试.docx_第2页
第2页 / 共13页
基于AM33x的UBootSPL的CCS调试.docx_第3页
第3页 / 共13页
基于AM33x的UBootSPL的CCS调试.docx_第4页
第4页 / 共13页
基于AM33x的UBootSPL的CCS调试.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于AM33x的UBootSPL的CCS调试.docx

《基于AM33x的UBootSPL的CCS调试.docx》由会员分享,可在线阅读,更多相关《基于AM33x的UBootSPL的CCS调试.docx(13页珍藏版)》请在冰豆网上搜索。

基于AM33x的UBootSPL的CCS调试.docx

基于AM33x的UBootSPL的CCS调试

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

在基于Linux的AM335x软件开发流程中,第一步确实是U-Boot/SPL(SecondProgramLoader)的移植。

在移植中碰到问题比较常见,而U-Boot/SPL的调试手腕比较简陋,不便于迅速找到问题。

利用仿真器能够单步调试的特点,就能够迅速定位到出问题的代码所在位置,加速移植的调试进程。

本文要紧介绍如何用CCS+emulator调试基于AM335x的U-Boot/SPL。

1.AM335xLinux启动进程和U-Boot/SPL调试代码的预备

1.1AM335xLinux的启动进程

AM335xLinux的启动要紧包括ROM,SPL,U-Boot和kernel四个启动步骤:

A.ROMcode

ROMcode是固化在芯片内部的代码,当上电时序正确,而且晶振等芯片启动所需的条件都具有时,AM335x会从ROMcode开始运行。

ROMcode第一会读取sys_boot引脚上的配置,以确信寄存SPL的存储器,或能够获取SPL的外设。

具体能够参考AM335x中的第26章Initialization。

ROMcode会从相应的地址读取/获取SPL,并运行SPL。

B.SPL

SPL和U-Boot是bootloader的两个时期。

那个地址分为两个时期的缘故是,ROMcode中可不能配置DDR,时钟等最小系统,因此ROMcode只能把bootloader加载到片上SRAM中,而片上SRAM对本钱阻碍专门大,因此通常很小,例如在AM335x上只有64K,不足够放下整个U-Boot,因此将U-Boot分成两部份,SPL和U-Boot。

SPL要紧的职责确实是初始化DDR,时钟等最小系统,以读取U-Boot,并加载到DDR中。

具体来看,SPL由ROMcode加载到片上SRAM的起始位置,也确实是0x402F0400。

SPL会进一步对芯片进行配置,要紧包括以下几个方面以完成其要紧职责:

a.配置ARMcore。

要紧包括对中断向量表,cache,MMU等的配置。

b.配置时钟系统,主若是PLL等。

那个是配置各个功能模块的基础。

c.配置UART,timer等。

要紧用于输出必要的调试信息,或提供些时钟工具。

d.配置I2C和PMIC。

那个主若是为了配置电源治理芯片。

e.配置DDR。

f.配置U-Boot所在的存储器或外设。

完成配置后,SPL会读取U-Boot,并运行U-Boot。

C.U-Boot

U-Boot要紧的工作确实是正确加载Kernel。

和SPL类似,U-Boot也是要加载下一个时期的image,可是U-Boot提供了更多外设的支持和更多的调试工具。

因此,U-Boot也要进行各个模块的配置,上述SPL配置的部份,除DDR外,U-Boot也会依照需求从头配置(那个地址重置主若是U-Boot是一个开源工程,其要兼容某些特殊的芯片,从而需要做重载)。

另外,U-Boot也会对网口,SD卡等依照需求进行配置。

U-Boot和SPL的工作流程比有一点是有较大不同的,确实是会对自身进行一次重载。

那个在后面介绍U-Boot调试的时候,会有具体介绍。

完成配置后,U-Boot会从相应的存储器或外设读取Kernel,并传递参数给kernel,运行kernel。

D.Kernel

Kernel运行起来就代表Linux运行起来了,说明了启动进程的终止。

1.2U-Boot/SPL调试代码的预备

1.2.1下载U-Boot/SPL代码

U-Boot/SPL的代码在一个包里面,通过编译宏来别离编译。

目前TIU-Boot/SPL代码发布要紧有两个渠道,具体如下

A.通过GIT开源的方式发布:

git:

//arago-project.org/git/projects/U-Boot-am33x.git 

能够获取最新的代码,包括了最新的bug的修复。

B.通过TI的官网的EZSDK发布:

EZSDK是正式发布的软件包,通过全面测试,性能稳固,U-Boot/SPL在board-support目录中。

能够选择EZSDK作为开发的基础代码。

当有问题时,可到GIT上查找最新的代码是不是有bugfix。

1.2.2U-Boot/SPL的编译。

为了便于用CCS进行调试,在编译上需要注意两点,其一,是要加入调试信息,确实是为了加入symbol等信息;其二,去掉编译器的性能优化编译选项,那个主若是因为,优化后的代码执行顺序相对C代码会有调整。

针对这两点,在Uboot/SPL中,需要在config.mk中进行修改:

A.在CFLAG和AFLAG中加入调试编译选项,从而加入调试信息:

278ALL_AFLAGS=$(AFLAGS)$(AFLAGS_$(BCURDIR)/$(@F))$(AFLAGS_$(BCURDIR))–g

279ALL_CFLAGS=$(CFLAGS)$(CFLAGS_$(BCURDIR)/$(@F))$(CFLAGS_$(BCURDIR))–g

B.去掉CFLAG中的编译选项,-O2(U-Boot中默许是-O2)

61HOSTCFLAGS=-Wall-Wstrict-prototypes-O2-fomit-frame-pointer

编译进程能够参考

 

1.2.3可执行文件

通过编译后,就会生成可执行文件,也确实是咱们通常所说的image,那个地址会生成的image要紧用AM335xLinux启动的两个时期,MLO(SPL)和U-Boot。

那个地址,SPL生成的image在am335/U-Boot-am33x/am335x/spl中,

A.am335/U-Boot-am33x/MLO负责AM335x启动的第一时期。

B.U-Boot-spl作为带有调试信息的image,能够在CCS顶用作导入调试信息。

C.U-Boot-spl.bin包括有调试信息,是调试时需要的image。

D.U-Boot-spl.map那个文件里面存储了spl的memorymap信息,能够找到各函数入口的地址。

U-Boot生成的image在U-Boot-am33x/am335x中,具体如下:

A.U-Boot.img负责AM335x启动的第二时期

B.U-Boot包括有调试信息,属于ELF格式,是调试时需要的image。

C.U-Boot.map那个文件里面存储了U-Boot的memorymap信息,能够找到各函数入口的地址

2.调试环境的预备

调试环境要紧包括3个部份,仿真器,集成调试环境和开发板。

下面将一一介绍:

2.1仿真器(emulator)

目前支持AM335x的仿真器的型号比较多,有XDS560v2,XDS510,XDS100v2,XDS100v3,等,比较常见的是XDS560v2和XDS100v2。

    XDS560v2,性能好,速度快,具有trace功能,可是价钱偏贵。

 XDS100v2价钱比较廉价。

 其具有和XDS560v2一样的大体调试功能,只是XDS100v2的速度相对略慢。

XDS560v2和XDS100v2在PC机上的驱动(Windows,Linux)都已经包括在CCS中了,因此安装了最新版的CCS,就会安装相应的驱动。

 

2.2集成开发环境

TI有自己的集成开发环境(IDE)CCS.目前最新的版本是基于EclipseIDE架构的,界面新颖方便。

下载地址 。

  CCS有Windows版本和Linux版本,后面会在介绍调试进程中具体介绍二者的不同。

2.3开发板

目前,针对不同的应用,TI发布了基于AM335x的多个开发板。

其中,和上配置了基于FT2232的xds100v2。

而和上引出了接口。

那个地址选择GPEVM和SpectrumDigitalXDS560v2作为调试平台。

3.CCS调试Uboot/SPL的具体步骤

下面正式开始CCS的调试。

调试的进程要紧分为导入U-Boot/SPL工程,CCS连接AM335x,代码调试等几个部份。

3.1导入CCS代码。

   在CCS中, MenuFile->Import…选择Makefile方式导入,如以下图所示:

在ezsdk中,U-Boot/SPL所对应的Makefile的具体途径如下:

/home/sitara/ti-sdk-am335x-evm-05.05.00.00/board-support/U-Boot-2020.09-psp04.06.00.08

如前面所提到,U-Boot和SPL的源码在同一个文件夹的,通过不同的Makefile治理不同的编译宏来区分的。

那个地址导入的是U-Boot的代码对应的Makefile,会相应的导入U-Boot对应的预编译选项

,因为其包括了所有的代码。

而关于SPL,也会相应的一路带入,只是在CCS中看到的代码的宏概念有些不对,但那个不阻碍调试。

  

3.2CCS连接AM335x.

要紧分成仿真器的连接,target连接和Debug配置等几部份:

3.2.1仿真器的连接

   关于AM335xGPEVM选用SpectrumDigitalXDS560v2的20pin的接口板,连在baseboard的J2口上即可,注意pin脚的顺序,不要把JTAG接口插反了。

  关于beaglebone,StarterKit,ICE等,这些板子已经把XDS100v2仿真器集成到板子上了,因此直接用usb线连到PC机上即可。

A.CCS的配置

CCS的配置要紧包括Target的配置和连接两部份。

a.Target配置

Target的配置包括两个部份,一个是仿真器(XDS560v2),另一个确实是SOC(AM335x)。

具体操作如下:

i.View->TargetConfigurations 

ii.点右键选择NewTargetConfiguration.

iii.新建一个叫做AM335_EVM的target.

iv.Connection当选择SpectrumDigitalXDS560V2STMUSBEmulator.

v.关于XDS100v2,能够选择TexasInstrumentsXDS100v2USBEmulator.

vi.在BoardorDevice当选择AM335x.

vii.点击Save保留。

viii.点击TestConnection看是不是能够正常连接。

配置target成功后,会看到如下界面

3.2.2Target连接

A.右键选中TargetConfigurations中已配置好的target,AM335x_EVM.ccxml,在右键菜单当选择LaunchSelectedConfiguration,连接成功后,能够取得以下图

现在,PC和仿真器和仿真器和SOC的JTAG连接成功,可是ARMcore尚未连上。

从图中能够看到,有多个core的配置选项,由于U-Boot/SPL,Linux运行在ARMcoretex-A8core上,那个地址只关注ARMcore。

B.在Debug窗口中,右键点击CortxA8core,选择ConnectTarget.连接成功后,如以下图所示:

现在,已经成功连上AM335x的Cortex-A8core了。

3.2.3Debug配置

那个地址的debug配置,是对emulator连上core后行为的设置。

能够通过鼠标右键点击pr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1