Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1560791
  • 博文数量: 354
  • 博客积分: 8137
  • 博客等级: 中将
  • 技术积分: 5137
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-26 15:40
文章分类

全部博文(354)

文章存档

2010年(300)

2009年(54)

分类: 嵌入式

2010-06-04 13:08:08

发表于:2009-12-26 23:25:55
最近在学习arm7,周立功的lpc2294的板子,一个循环点灯的程序,我用ads1.2和h-jtag进行仿真能 通过,而且在板子上跑得蛮好,但是我用H-Flash下载到板子上不能运行,不知道这是为啥?我是直接下载完后断电,然后上电,板子没有反应,arm裸机 不是可以直接跑程序的吗?
我是初学者,还望大牛能指点指点,谢谢了 


  • [0]
  • [0]
回复次数:16
  • (怎样才不会河蟹?)

  • 等 级:

#1楼 得分:0回复于:2009-12-26 23:37:47
你的h-jtag仿真难道是把程序下载在RAM里面? 该不是的吧?

一般来说,如果用h- jtag仿真,程序开始运行的时候,就已经用那个H-flash把程序烧到Flash了...

  • [0]
  • [0]
精华推荐:
  • (schlafenhamster)

  • 等 级:

#2楼 得分:0回复于:2009-12-27 09:20:50
查查H-Flash把程序下载到板子上什么地址了。应该从0开始

  • [0]
  • [0]
精华推荐:
  • (多面体)

  • 等 级:

#3楼 得分:0回复于:2009-12-27 10:10:38
中断向量的累加和不等于0?

  • [0]
  • [0]
精华推荐:


  • 等 级:

#4楼 得分:0回复于:2009-12-27 10:15:53
引用 1 楼 great_bug 的回复:
你 的h-jtag仿真难道是把程序下载在RAM里面? 该不是的吧?

一般来说,如果用h-jtag仿真,程序开始运行的时候,就已经用那个 H-flash把程序烧到Flash了...



我是想把程序下载到外部flash,在 这个板子上是sst39vf1601,通过bank1选择,所以它的地址应该是0x81000000,我是先在ads中生成了.bin文件,然后用h- flash把这个文件下载到板子,这么做对吗?

  • [0]
  • [0]
精华推荐:


  • 等 级:

#5楼 得分:0回复于:2009-12-27 10:22:52
引用 2 楼 schlafenhamster 的回复:
查 查H-Flash把程序下载到板子上什么地址了。应该从0开始


谢谢你啊,不过,我是想下载到 外部flash,片内flash是从0开始的是吧,片外的好像不是,关键是我这边器材和文档不一致,器材是hjtag,文档easyjtag,所以只能自 己摸索,唉

  • [0]
  • [0]
精华推荐:
  • (选择是偶然的,离开是必然的..)

  • 等 级:

#6楼 得分:0回复于:2009-12-27 10:44:58
是不是你仿真的时候ADS里面你选的是DbugInRAM呀?我曾经用jtag仿真的时候也是这么选的,下载 到板子运行的时候就不行了,改选DbugInFLASH就可以了,不知道是不是这个原因,可能是我那时候哪步操作不对吧~
不知道 DbugInRAM和DbugInFLASH对仿真以及下载到板子上有什么区别吗,LZ要是解决了说下是啥原因~

  • [0]
  • [0]
  • (schlafenhamster)

  • 等 级:

#7楼 得分:0回复于:2009-12-27 10:57:30
最后在flash还是在RAM中运行?

  • [0]
  • [0]


  • 等 级:

#8楼 得分:0回复于:2009-12-27 11:22:45
引用 6 楼 think_logo 的回复:
是 不是你仿真的时候ADS里面你选的是DbugInRAM呀?我曾经用jtag仿真的时候也是这么选的,下载到板子运行的时候就不行了,改选 DbugInFLASH就可以了,不知道是不是这个原因,可能是我那时候哪步操作不对吧~
不知道DbugInRAM和DbugInFLASH对仿 真以及下载到板子上有什么区别吗,LZ要是解决了说下是啥原因~


我是在lpc的专用模板下建 的工程,直接选择了DebugInExram,这里只有四种选择 是:debuginexram,DebugInChipflash,RelInChip,RelOutChip,没有你说的那种选择。。。
现在还 很迷糊,如果弄懂了,一定跟大家分享

  • [0]
  • [0]


  • 等 级:

#9楼 得分:0回复于:2009-12-27 11:32:05
引用 7 楼 schlafenhamster 的回复:
最 后在flash还是在RAM中运行?



谢谢你哈。只是我很疑惑,我如果下载的时候下载 到外部flash中,这个不是存储的吗?运行时是不是还是在ram里面运行?我记得在哪看到说代码开始运行时都是从0开始,那边存放的是一些启动之前的初 始信息,然后才转去执行main处的程序?
另外我不明白,计算机都是把代码存放在硬盘,程序在执行时操作系统是应该把这些代码拷到内存里面去执行 是吧,那么在没有操作系统的arm里面,程序的执行是代码在哪里就在哪里执行吗?还是会做跟电脑类似的处理?

  • [0]
  • [0]
  • (Linux_lee)

  • 等 级:

#10楼 得分:0回复于:2009-12-27 13:36:19
没玩过LPC,但是NORFLASH是可以支持XIP的,LZ看看是不是有什么跳线可以设定启动方式的

  • [0]
  • [0]
  • (怎样才不会河蟹?)

  • 等 级:

#11楼 得分:0回复于:2009-12-27 14:32:19
你试一下"RelOutChip"....可能要配置H-Flasher....

或 者"DebugInChipflash",用内部的Flash.

H-JTAG好像有专门对NXP做过优化,用内部Flash程序储存该很 容易.

  • [0]
  • [0]
  • (schlafenhamster)

  • 等 级:

#12楼 得分:0回复于:2009-12-27 15:23:20
1。32位CPU有2种复位地址(即开机复位后CPU开始执行的第一条指令)0000 0000(低端) 和 FFFF FF00(高端)。arm芯片原来只有0000 0000 的那种,现在也有从高端启动的了。
2。如果flash只是存代码(一般为 NAND flash),那么代码中必须有把代码搬到RAM中执行的指令。
3. 如果芯片支持nand flash(如三星2440)那么芯片必须有(垫脚石 step stone)能把nand中的头一个4k映射到0地址。
4. 如果使用 NOR flash (可能就是你那种芯片的内部flash),那么该flash的地址从0开始。
 

  • [0]
  • [0]


  • 等 级:

#13楼 得分:0回复于:2009-12-27 15:47:51
引用 11 楼 great_bug 的回复:
你 试一下"RelOutChip"....可能要配置H-Flasher....

或者"DebugInChipflash",用内部的 Flash.

H-JTAG好像有专门对NXP做过优化,用内部Flash程序储存该很容易.


我 使用了debuginchipflash,仿真时跑的也是正确的,下载后再重新上电还是不能运行,不知道应该怎么做
内部flash地址应该就是 0x00000000,我就是这么设的

  • [0]
  • [0]
  • (schlafenhamster)

  • 等 级:

#14楼 得分:0回复于:2009-12-27 16:36:57
仿真时跑的是正确的,并不表示程序就是对的,如果复位地址没问题,那就是CPU初始化有问题,
尤其是 “时钟PLL”,“存储器的参数”,因为仿真时仿真器会做一些初始化,这样就帮了你。

  • [0]
  • [0]
  • (怎样才不会河蟹?)

  • 等 级:

#15楼 得分:0回复于:2009-12-27 16:46:56
那你再检查一下中断向量检验和的问题....如果已经注意了这个问题就不是它....

  • [0]
  • [0]
  • (mxm1986)

  • 等 级:

#16楼 得分:0回复于:2009-12-28 10:00:29
因为是zlg的板子,那么肯定是用的他们demo咯,不应该是程序的什么设置的问题。。首先确保是能下载进 去。。。然后在检查一些跳线的设置。。。我估计是跳线问题。。
阅读(1898) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~