裸机调试AM3358网口
按照惯例,先介绍我自己的开发环境:
- 系统:win7 64bit sp1
- CCS版本:Code Composer Studio 6.2.0
- 调试代码:AM335X_StarterWare_02_00_01_01
- 仿真器:XDS100V2 USB
- 电路板:自己根据beaglebone_black绘制的,芯片是AM3358,包括百兆网口、UART串口、DDR3、NAND Flash、USB、SPI和IIC,除了SPI和IIC的IO管脚,其他电路完全参考beaglebone_black板子。
为了验证电路板各个接口硬件是否正常,我们采用了裸跑驱动程序的方式。使用的代码是AM335X_StarterWare_02_00_01_01里面beaglebone的测试例程。
前面已经验证完了GPIO和串口,今天来验证网口,原理图如下图所示,跟beaglebone RevA5的完全一样;网卡的CCS工程文件在:D:\ti\AM335X_StarterWare_02_00_01_01\build\armv7a\cgt_ccs\am335x\beaglebone\enet_echo,用CCS导入该工程即可。
步骤1:导入网口程序工程文件File->Import..-> Code Composer Studio->CCS project Next->Select CCS Porject to Import 点击Brower选择D:\ti\AM335X_StarterWare_02_00_01_01\build\armv7a\cgt_ccs\am335x\beaglebone勾选网口测试程序enetEcho,点击Finsh
步骤2:设置调试版本为release
步骤3:编译
步骤4:建立目标板配置文件,名字自定义,点击Finsh
步骤5:测试JTAG接口连接状态, 进入配置界面后,选择你自己的仿真器型号,这里我选择XDS100V2 USB,在Board or Decice下拉框里选择AM3358,随后点击Save保存,最后点击Test Coonnection,成功后,会显示The JTAG DR Integrity scan-test has succeeded。
步骤6:在线仿真,点击debug按钮,进入debug模式
成功进入debug模式如下图所示
步骤7:连接目标板
成功后,如下图所示
步骤8:加载Gel文件。点击Tools→Gel Files,在CCS 主窗口下方会出现一个Gel File 新功能窗口。将 鼠 标 放 在上图右下角的GEL Files 窗口中点击右键, 加载gel 文件
(D:\ti\ccsv6\ccs_base\emulation\boards\beaglebone\gel
目录下)选择,beagleboneblack.gel
步骤9:初始化芯片。Scripts->Am335x_System_Initialization-> Am335x_Beaglebone_Initialization
步骤10:加载网口测试程序。Run->Load->Load Program,选择刚才编译好的enetEcho.out文件,目录为D:\ti\AM335X_StarterWare_02_00_01_01\binary\armv7a\cgt_ccs\am335x\beaglebone\enet_echo\Release
步骤11:打开串口调试助手,连接串口0,这里使用的是AM3358芯片的UART0,115200-N-8-1
步骤12:运行
步骤13:查看串口调试助手打印信息
步骤14:使用笔记本电脑Ping目标板
电脑网口配置信息如下
注意:这里要说明下,我使用笔记本调试,没有经过路由器,用网线直接与电路板相连,因此,修改了例程中的通信方式,没有使用自动分配IP的方式(DHCP),而是使用的静态IP方式。
修改方法如下:
(1) 修改lwipopts.h文件中的STATIC_IP_ADDRESS_PORT1和STATIC_IP_ADDRESS_PORT2,原始值为0,现改为:
#define STATIC_IP_ADDRESS_PORT1 0xC0A80164
#define STATIC_IP_ADDRESS_PORT2 0xC0A80165
(2) 修改enetEcho.c文件中的IP设置部分,修改如下
#if STATIC_IP_ADDRESS_PORT1
lwipIfPort1.instNum = 0;
lwipIfPort1.slvPortNum = 1;
lwipIfPort1.ipAddr = STATIC_IP_ADDRESS_PORT1; //192.168.1.100
lwipIfPort1.netMask = 0xFFFFFF00;//255.255.255.0
lwipIfPort1.gwAddr = 0xC0A80101;//192.168.1.1
lwipIfPort1.ipMode = IPADDR_USE_STATIC;