5994|8

72

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

STM32的程序的烧写?运行?调试?调试脚本相关问题 [复制链接]



STM32的启动方式了解
但是对其的调试方式和储存介质一直糊涂
目前知道
调试可以在 片内的FLASH 和 RAM来进行,不知我用FSMC外挂的SRAM 可以不?

我将一段代码COPY到外部SRAM ,然后跳过去,没好使,不知是跳的问题 还是跳过去不能运行?
看到论坛上有人说可以在外部SRAM中运行,不知怎么弄。
官方给的那个FSMC/SRAM_DataMemory例程也没看明白到底在干什么
,
代码可以在 内部RAM、flash、
fsmc外挂的NOR 上可以运行么?NAND 是不行的对吧?
此帖出自stm32/stm8论坛

最新回复

                                   已经找到问题出在哪里了,我之间将函数COPY到SRAM 但是 该函数里有子函数(存在相对寻址)正如你说的这不是绝度寻址,导致寻址异常; 此外在COPY时 没有注意PC-1(因为要保存PC 到LR)导致之前COPY的东西有问题。 谢谢版主帮忙啊。  详情 回复 发表于 2010-5-7 10:44
点赞 关注
 

回复
举报

69

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
已经知道 SRAM中肯定是可以运行代码的了,我试过使用MDK在外部SRAM运行调试
STM32  外扩SRAM地址0x68000000(FSMC)

但是我 将代码(某函数)Copy到 此处0x68000000
然后用函数指针绝对跳转到此处
发生异常

求解
此帖出自stm32/stm8论坛
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 哪些存储介质上运行,不是很理解
此帖出自stm32/stm8论坛
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
已经知道 SRAM中肯定是可以运行代码的了,我试过使用MDK在外部SRAM运行调试
STM32  外扩SRAM地址0x68000000(FSMC)

但是我 将代码(某函数)Copy到 此处0x68000000
然后用函数指针绝对跳转到此处
发生异常

求解 ...
编译这个函数时是否指定它最终的运行地址?是否指定产生的代码是绝对跳转还是相对跳转?

我不知道如何设置编译器去指定这些内容,但如果不注意这个问题,多半会产生你碰到的问题。
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢楼上提示,外部SRAM 中的问题解决了,我现在可以在外部FSMC中调试,需要写调试脚本(ExRAM.ini)在操作SRAM之前初始化。
现在想用外部的NOR FLASH 第一步实现对其的烧写 同样是使用FSMC 地址为0X64000000,2M 16Bit
使用的是J-LINK -V7 开发环境为MDK3.7   不知怎么做?还请指点

第二步请问能否在nor flash 上仿真,怎么做。貌似是先将程序烧到NOR flash 然后调试是吧?具体怎么做呢?
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

6
 

  我没说清,包括
外部NOR FLASH 、NAND FLASH SRAM
内部 RAM 、flash
我想知道如何在这些存储介质上运行、调试程序
目前就剩下 NOR FLASH 不了解了,现在还未能烧写NORFLASH
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 既然可以在外部SRAM 调试,那就可以在外部NOR FLASH 调试,当然调试脚本(比如ExNOR.ini)也是需要的,唯一差别就在烧写。外部NOR FLASH 需要Flash Loader,这跟内部FLASH也需要Flash Loader是差不多的道理。
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 


7# IJK



先编写一个Flash Loader 并用J-LINK烧写到内部Flash,然后从 内部Flash 启动,
然后通过某种通信方式将另一个.BIN传给Flash loader ,让Flash loader 完成对NOR Flash 的烧写。
之后再跳转到 烧写的地址处运行。
这种方法是可行的,对吧?
但现在我想问,
1.能否 使用J-FLASH 直接烧写NOR FLASH ,别误会我不是不做Flash Loader,连Loader都做不了也太。。。呵呵。。 不过用J-FLASH这样岂不更方便,


2 NOR FLASH 的调试
先看在外部SRAM如何调试
EXt SRAM.INI 内容
InitSRAM();                                   // 配置 FSMC用于SRAM
LOAD obj\output.axf INCREMENTAL                // 下载程序到外部SRAM
CopyVectTable();                                        // 将外部SRAM的中断向量表复制到CPU内部RAM
Setup();                                     // 配置堆栈和PC指针
g, main                                                                // 运行到 main()函数后暂停

分析外部SRAM的调试脚本实际上是首先完成了FSMC的初始化在下载程序到外部SRAM,然后跳转执行,调试
大胆猜测 NOR FLASH的调试 也是先完成 FSMC的初始化 在下载到 NOR FLASH中在云寻调试,不知对不?这样是不是就直接完成了烧写,他那个是又可以调试 。。。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

9
 

已经找到问题出在哪里了,我之间将函数COPY到SRAM 但是 该函数里有子函数(存在相对寻址)正如你说的这不是绝度寻址,导致寻址异常;
此外在COPY时 没有注意PC-1(因为要保存PC 到LR)导致之前COPY的东西有问题。
谢谢版主帮忙啊。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表