阅读:1580回复:2
68013代码链接定位的问题 求教!
问一个关于68013代码链接定位的问题:
1.当我没有设置keil里面BL51 Locate选项里的code range 和 xdata range,采用Use memory layout from Target Dialog的时候,如果我的keil工程里没有加入gpif.c的时候,编译出来的hex下载到芯片后,芯片可以正常枚举、重枚举,以及IOD驱动的LED灯也正常,自定义的请求也能响应实现特定的功能 2.当我把gpif.c模块加入进工程编译的时候,如果没有指定code range和xdata range,采用Use memory layout from Target Dialog的时候。编译出来的固件下载到芯片后,芯片不能枚举、重枚举。 3.当我指定了code range 和 xdata range为0x80-0x0FFF、0x1000后(参照开发包里面的例程),把gpif.c加入进工程编译,下载到芯片后,能正常枚举、重枚举,可是IOD驱动的LED灯不正常(怎么也点不亮),自定义的请求也能响应(看控制台提示信息如下),不过没有能实现指定的功能(点LED灯); Vendor Request (B1) 2 bytes: wValue=0 wIndex=0 0000 B1 00 不知道是不是keil链接的时候代码定位有问题?会不会把特殊寄存器的内存空间给刷了?因为0x80~0xF9都是一些特殊寄存器的地址,如果把code range指定为0x80-0x0FFF,会不会把这一区块的特殊寄存器给覆盖了??? 我的68013是56pin的,不好调试出是什么问题,卡住了好几天了,请帮忙看看是什么问题,谢谢。 我需要实现的功能是2个68013之间的通讯(GPIF <————> Slave FIFO)。 |
|
沙发#
发布于:2008-09-11 11:43
希望做过的大牛们,给点意见。。。万谢!
|
|
板凳#
发布于:2008-09-11 16:39
原来不是代码链接的问题,是我gpif.c的GpifInit函数里的一句寄存器初始化操作有问题
IFCONFIG = 0xCA; // IFCLKSRC=1 , FIFOs executes on internal clk source // xMHz=1 , 48MHz internal clk rate // IFCLKOE=0 , Don't drive IFCLK pin signal at 48MHz // IFCLKPOL=0 , Don't invert IFCLK pin signal from internal clk // ASYNC=1 , master samples asynchronous // GSTATE=0 , Drive GPIF states out on PORTE[2:0], debug WF // IFCFG[1:0]=10, FX2 in GPIF master mode 我只要不把IFCFG[1:0]设置成10就没问题(GPIF master mode),如果设置成10,IOD和IOB都会被上拉成0xFF! 不知道为什么????无论我怎么写它们都是0xFF |
|