1  /  1  页   1 跳转 查看:2085

OpenJTAG常见问题

OpenJTAG常见问题

1.  在mini开发板上,使用OpenJTAG启动uboot,然后使用uboot烧写nand flash时,出现大量坏块
答:mini开发板的supervivi人为地把前面的NAND强制设为坏块:目的是安装WINCE时,bootloader不被破坏。
      在uboot里,先运行“nand scrub”命令,输入y回车,就可以把这些“坏块”修改为“好块”
 

load_image 时出现“couldn't write MPSSE commands to FT2232“

环境:
Ubuntu8.04 (2.6.24-23)
OpenOCD1.0 (SVN717)
OpenJtagV2
Mini2440 (boot from nand)

现象:
装载u-boot.bin时出现“couldn't write MPSSE commands to FT2232“

解决:
在配置文件openocd.cfg中注释掉"arm7_9 fast_memory_access enable",(该行前添加加#即可)
如果OpenJtag是V2,再把ft2232_layout "jtagkey_prototype_v1"修改为ft2232_layout "jtagkey"
(后经多次实验证实,不改也可以)

解释:
南方大哥的观点,FT2232的驱动在Linux下表现不如Windows,因为Wndows的驱动是FTDI公司精心编写的,而其它平台的驱动多是第三方编写的,目前Linux下的版本是1.4.3(ftdi_sio.c),期待更新。
最后编辑Totry 最后编辑于 2009-02-11 20:02:07
 

回复:OpenJTAG常见问题



引用:
现象:
装载u-boot.bin时出现“couldn't write MPSSE commands to FT2232“

VMWare下?
 

回复:OpenJTAG常见问题

环境: VMware+ XP
先调试 OpenJtag 和OpenOCD
平台:PXA270
将openocd.cfg 修改为了 南大侠给的内容 可以进入debug 即 telnet localhost 4444 这一步
但出现如下错误
1.缺少 xscale/debug_handler.bin
2.reset 后超时 
3.使用poll或 halt 命令 返回均为 unknow status

南大传来一个 xscale/debug_handler.bin

附件: debug_handler.rar (2009-12-15 21:03:23, 831 B)
该附件被下载次数 42


能够reset 了,armv4_5  reg可查看寄存器

现在试试放一个裸奔程序到RAM里面试试
最后编辑laoniu85 最后编辑于 2009-12-15 21:03:23
 

回复: OpenJTAG常见问题

修改了example 下面的 leds.c
改为如下内容

make 后将 load_image leds\leds_elf 0xa0000000 我的板子RAM起始地址是 0xa0000000
然后resume 0xa0000000
报错为 time out writing RX register
我再试试烧到其他地址


#define  __REG(x) (*((volatile unsigned int *)(x)))
#define GPLR0  __REG(0x40E00000)  /* GPIO Pin-Level Register GPIO<31:0> */
#define GPLR1  __REG(0x40E00004)  /* GPIO Pin-Level Register GPIO<63:32> */
#define GPLR2  __REG(0x40E00008)  /* GPIO Pin-Level Register GPIO<80:64> */
#define GPDR0  __REG(0x40E0000C)  /* GPIO Pin Direction Register GPIO<31:0> */
#define GPDR1  __REG(0x40E00010)  /* GPIO Pin Direction Register GPIO<63:32> */
#define GPDR2  __REG(0x40E00014)  /* GPIO Pin Direction Register GPIO<80:64> */
#define GPSR0  __REG(0x40E00018)  /* GPIO Pin Output Set Register GPIO<31:0> */
#define GPSR1  __REG(0x40E0001C)  /* GPIO Pin Output Set Register GPIO<63:32> */
#define GPSR2  __REG(0x40E00020)  /* GPIO Pin Output Set Register GPIO<80:64> */
#define GPCR0  __REG(0x40E00024)  /* GPIO Pin Output Clear Register GPIO<31:0> */
#define GPCR1  __REG(0x40E00028)  /* GPIO Pin Output Clear Register GPIO <63:32> */
#define GPCR2  __REG(0x40E0002C)  /* GPIO Pin Output Clear Register GPIO <80:64> */
void  wait(volatile unsigned long dly)
{
for(; dly > 0; dly--);
}
#define LED1  (1<<(50-32))
#define LED2  (1<<(57-32))
#define LED3  (1<<(51-32))
#define LED4  (1<<(56-32))
int main(void)
{
unsigned long i = 0;
//50 51 56 57
GPDR1=LED1|LED2|LED3|LED4;

while(1){
  wait(30000);
  switch(i){
  case 0: GPSR1=LED1; GPCR1=LED2|LED3|LED4;break;
  case 1: GPSR1=LED2; GPCR1=LED1|LED3|LED4;break;
  case 2: GPSR1=LED3; GPCR1=LED1|LED2|LED4;break;
  case 3: GPSR1=LED4; GPCR1=LED1|LED2|LED3;break;
  }
  i++;
  if(i >= 4)
  {
  i = 0;
  }
}
return 0;
}
 

回复 5F laoniu85 的帖子

resume到 RAM区域时 
貌似PC就跑飞了 变为了0xfffffffc 
这莫非是因为需要设置MMU等等?
而resume 0 就可以正常运行 flash的起始地址为0x00000000
俺看了下Openjtag文档 发现说在设置之前 SDRAM不能被正常运行,需要设置CP15 (MMU)
俺先试试内部RAM能否运行把~~
PXA270的内部SRAM起始地址为 0x5c000000 将程序下载到该段,仍然无法正常运行。
resume到下载地址后 程序就跑飞了

又尝试重新上电后 halt 然后 xscale cp15 2 0  关闭 MMU 和Dcache
然后再Load_image 依旧跑飞
是否编译器需要什么设置?
因为编译器不知道 我的程序会在哪里运行 RAM和FLASH的基址是多少
俺看到文件夹下有个cent0.s 又看到makefile中有编译该程序的代码
cent0.s可能因为这里面的某些操作会引起一些问题~~
这个肯定不行0x53000000 不是270的 watchdog地址,查手册,270有一个看门狗寄存器 OWER 地址为 0x40a00018 把0x53000000 先改成这个 后面设置堆栈的部分也需要改一下,由于RAM的首地址变了 所以我直接给SP赋个值吧
0x5c001000 为RAM其实后4K处 不知道270的堆栈是往那边生长的 不过程序很小 这么写应该没问题
改后代码  还是无法正常启动
.text
.global _start
_start:
            ldr    r0, =0x40a00018    @ WATCHDOG寄存器地址
            mov    r1, #0x0                   
            str  r1, [r0]              @ 写入0,禁止WATCHDOG,否则CPU会不断重启
           
            ldr    sp, =0x5c001000        @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
                                        @ nand flash中的代码在复位后会移到内部ram中,此ram只有4K
            bl      main                @ 调用C程序中的main函数
halt_loop:
            b      halt_loop

查看 OpenOCD3.1 文件夹中 发现 其中有一个 balloon3-cpu.cfg 用的也是pxa270 就把他的cfg文件 拷过来 重命名为openocd.cfg 并将 target下的 pxa270.cfg拷贝到了 openocd安装目录下的target目录下
运行openocd-ftd2xx 出错

现在下载了一个 openocd 3.1 安装文件 试试能否使用openocd3.1进行调试
最后编辑laoniu85 最后编辑于 2009-12-16 13:40:40
 
1  /  1  页   1 跳转

地址:广东省深圳市南山区南山大道3003号久商大厦C-1406;邮编:518052;电话:0755-86200561

粤ICP备09041549号, 版权所有 百问网   Sitemap

Powered by Discuz!NT 2.0.1214    Copyright © 2001-2010 Comsenz Inc.
Processed in 0.046875 second(s) , 6 queries.
返顶部