Stm32F2调试创建apple id遇到问题题,卡了半天,自己实在搞不定了,来求助

查看: 14628|回复: 27
STM32调试求助!无法进入main函数.
请问高手,我在调试我的STM32F101c8t6时,遇到一个问题,因为我要调试串口,我在main.c中添加了#include &stdio.h& ,编译可以通过,但是当我用jlink硬件调试时,一开始就停在了 & 0x BEAB& && &BKPT& &&&0xAB&;并且无法向下运行.&&请问高手,这个问题的原因是什么?怎么解决? 谢谢!& &&&
& && && & _sys_open:
0xE& && &PUSH& &&&{r1-r3,lr}
0xCD0100&&STRD& &&&r0,r1,[sp,#0]
0x0FAF9&&BL.W& &&&strlen (0x08001A4C)
0x02& && &STR& && &r0,[sp,#0x08]
0x69& && &MOV& && &r1,sp
0x01& && &MOVS& &&&r0,#0x01
0x BEAB& && &BKPT& &&&0xAB
0x BD0E& && &POP& && &{r1-r3,pc}
应该是项目设置的问题,检查一下你的设置.
pldjn 你好,能详细指点以下么?应该怎样设置?&&这个程序是我该的,本来是没有#include &stdio.h&,我添加串口后因为需要标准库函数,所以才加上的. 是不是还要设置编译环境?&&谢谢.
你用J-Flash打开你的HEX文件看看编译的是否是对的.不用自动下载使用J-flash烧进去调一下试试.
我也遇到同样问题,我是调用printf时出现的这个错误,我已经把putchar重定位了,不知道为何还是出错,求解,THX!
那是因为你使用了printf之类的库函数,需要编写_sys_exit()之类底层函数。照你的提示看,也许是_sys_open()没写。_sys_xxx之类的的只要写个空函数就行了。
& & 能否说的再仔细些,如果自己编写个空函数应该放在哪里?函数定义格式是什么样的呢?
& & 纳闷的是以前也用过printf,没出现这个提示啊。
5楼的应该不是这样吧?
应该是你没有选中微库造成的。这个问题昨天我遇到过。在工程的设置选项里把微库勾上就OK了
to PZLPDY:
& &苍天啊,果然如你所说,把微库勾上就OK了,奇怪了为什么以前用的的时候没报错呢?以前也没选微库啊!
因printf()之类的函数,使用了半主机模式。使用微库的话,不会使用半主机模式,所以就没有问题。
添加下面代码,就可以使用标准库了:
#pragma import(__use_no_semihosting)
_sys_exit(int x)
& & & & x =
struct __FILE
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling */
/* is required. */
/* FILE is typedef’ d in stdio.h. */
yugen是高手啊,再请教一下:
1.何为“半主机模式”?与 非半主机模式有何区别?
2.你的这段代码需要放在那个文件里?自己的main函数所在的文件吗?
3.看到代码实现了_sys_exit,那我提示错误的_sys_open()不用实现吗?
请指教,多谢!
你说的问题都可以在&RealView& 编译工具库和浮点支持指南&书中找到,网上有下,我就不复制了。书有中文的。realview编译器有好几本书,都有中文。
IAR就不会犯这种弱智错误,不知道这么多人都热衷于RVMDK这个烂编译器,难道仅仅因为是原厂的原因就值得迷信?
我通过USART 和函数重定向,用printf 函数也很正常,没什么问题呀。我用的也是RVMDK.
膜拜!高手就是高手,这个问题困扰了我几天了,万能的坛啊!
PZLPDY!!!太谢谢了
我今天也遇到这个问题,谢谢大侠的帮助!!
软件环境:UV4.12 库版本3.5 芯片是STM32F103VCT6 用串口烧写的程序
我也是按照网上的教程建立的工程,先建立几个GROUP文件夹存放相关的库中文件 由于没有用到中断没有加入中断的初始化,启动文件*_HD.S文件。
&&程序烧写到芯片上后只要不断电(BOOT0,1=00)按下复位后可以正常运行,可是只要一断电程序就跑不起来了!所以才用软件仿真了一下发现了这些问题,我的设置都是按照网上的步骤做的啊,会有遗漏请楼上指点
我今天也遇到这问题了,真是多谢各位大侠的解析啊,以后尤其是5楼和7楼的正解啊,谢谢啊
把MicroLIB勾上就可以解决问题咯,同遇到这个问题的人路过。
mark,微库
我也遇得这种情况,花了一天时间才解决,我是从STM32F103ZE的程序改成STM32F105VC的,要把启动文件换成startup_stm32f10x_cl.s,同时Preprocessor Symbols 中的DEFINE 那行的 STM32F10X_HD 改成 STM32F10X_CL.以下是大概过程:
1.先是按&&14楼的方法,选上USE microlib,但还是没用。因为我根本没有用printf函数。
2.仔细观察后来发现debug后,单步时提示&&*** error 65: access violation at 0x : no 'read' permission
搜下一下根据这个帖& &
1楼的方法,没有解决,4楼是比较全面的方法,也没有解决。
3.最后根据 这个帖子2楼的方法,要先设置BOOT1,BOOT2为0才解决了,因为我的硬件有外部把这两个脚改变了。
总结:要先排除硬件的原因,重点为是BOOT1,BOOT2的两个脚电平,不再值对应不同的启动方式。再从软件入手,第2点方法比较全面地解决这个问题。
今天也遇到这个问题,都不知道怎么回事,总算学习下~~~~
阿莫电子论坛, 原"中国电子开发网"
, 原www.ourdev.cn, 原www.ouravr.comSTM32F107 串口IAP遇到问题(已经搞一个星期了)
请求技术... - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 7327|回复: 14
STM32F107 串口IAP遇到问题(已经搞一个星期了)
请求技术...
在线时间36 小时
该用户从未签到主题帖子好友
中级会员, 积分 324, 距离下一级还需 176 积分
中级会员, 积分 324, 距离下一级还需 176 积分
如题我采用stm32f107串口做IAP固件升级,BOOT程序写好 测试bin文件小于11k下载运行良好,bin文件到20k以上时&&使用超级终端就更新失败。
这是我boot程序
boot程序配置
1.jpg (207.66 KB, 下载次数: 3)
15:00 上传
29.jpg (255.86 KB, 下载次数: 3)
15:00 上传
2、#define ApplicationAddress& & 0x8010000
3、int main(void)
& & FLASH_Unlock();
& & NVIC_SetVectorTable(0xx00);
& & __disable_irq();&&//关闭中断
& & IAP_Init();//串口初始化
& & if (ucUpdateFlag==1)//升级标志&&一直为1
& && &&&Main_Menu();//更新固件
4、程序跳转
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x)
& && && && && & {
& && && && && && &&&SerialPutString(&Execute user Program\r\n\n&);
& && && && && && &&&JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
& && && && && && &&&Jump_To_Application = (pFunction) JumpA
& && && && && && &&&__set_MSP(*(__IO uint32_t*) ApplicationAddress);
& && && && && && &&&Jump_To_Application();
& && && && && & }
APP程序配置
3.jpg (207.21 KB, 下载次数: 0)
15:10 上传
4.jpg (168.63 KB, 下载次数: 0)
15:11 上传
2、下面是测试程序bin文件&&使用jlink下载测过都可以良好运行。
(7.14 KB, 下载次数: 39)
15:16 上传
点击文件名下载附件
也经测试程序能更新
(20.24 KB, 下载次数: 23)
15:16 上传
点击文件名下载附件
液晶测试程序2不能更新
(2.22 KB, 下载次数: 23)
15:16 上传
点击文件名下载附件
led测试程序可更新
(30.15 KB, 下载次数: 22)
15:16 上传
点击文件名下载附件
带操作系统测试程序不能更新
希望大家帮帮我&&多谢!
在线时间54 小时
该用户从未签到主题帖子好友
高级会员, 积分 777, 距离下一级还需 223 积分
高级会员, 积分 777, 距离下一级还需 223 积分
试一下我的。
在线时间36 小时
该用户从未签到主题帖子好友
中级会员, 积分 324, 距离下一级还需 176 积分
中级会员, 积分 324, 距离下一级还需 176 积分
试一下我的。
http://pan.baidu.com/s/1sjufXaH
你的不知道怎么用
在线时间54 小时
该用户从未签到主题帖子好友
高级会员, 积分 777, 距离下一级还需 223 积分
高级会员, 积分 777, 距离下一级还需 223 积分
本帖最后由 xulay 于
16:20 编辑
你的不知道怎么用
hex是bootloader,用jlink烧进去,exe是pc端iap烧录程序。
_161914.jpg (26.33 KB, 下载次数: 1)
16:19 上传
在线时间36 小时
该用户从未签到主题帖子好友
中级会员, 积分 324, 距离下一级还需 176 积分
中级会员, 积分 324, 距离下一级还需 176 积分
有人能帮我找原因吗
在线时间212 小时
ST金币1223
该用户从未签到主题帖子好友
金牌会员, 积分 3190, 距离下一级还需 1810 积分
金牌会员, 积分 3190, 距离下一级还需 1810 积分
先确认是更新失败,还是执行失败?
还有,前面更新程序,如果是接收到所有数据存到RAM,然后再写FLASH,RAM满了的原因?
在线时间36 小时
该用户从未签到主题帖子好友
中级会员, 积分 324, 距离下一级还需 176 积分
中级会员, 积分 324, 距离下一级还需 176 积分
先确认是更新失败,还是执行失败?
还有,前面更新程序,如果是接收到所有数据存到RAM,然后再写FLASH,RA ...
经过测试原来的LED程序我咋其中加入大量数组使用 使得生成BIN文件达到56k,还是能更新。其他的不能更新的 原因确定是跳转后进入硬件错误中断。是地址跳转错误 真是奇怪了
在线时间36 小时
该用户从未签到主题帖子好友
中级会员, 积分 324, 距离下一级还需 176 积分
中级会员, 积分 324, 距离下一级还需 176 积分
先确认是更新失败,还是执行失败?
还有,前面更新程序,如果是接收到所有数据存到RAM,然后再写FLASH,RA ...
你好,如何检测是否RAM溢出了昵
& & Total RO&&Size (Code + RO Data)& && && && && & 56876 (&&55.54kB)
& & Total RW&&Size (RW Data + ZI Data)& && && && &&&1672 (& &1.63kB)
& & Total ROM Size (Code + RO Data + RW Data)& && &56916 (&&55.58kB)
上面这样的程序能够更新成功,下面的程序就是跳转时进入硬件错误中断
& & Total RO&&Size (Code + RO Data)& && && && && & 40540 (&&39.59kB)
& & Total RW&&Size (RW Data + ZI Data)& && && && & 22048 (&&21.53kB)
& & Total ROM Size (Code + RO Data + RW Data)& && &47040 (&&45.94kB)
在线时间4 小时
该用户从未签到主题帖子好友
新手上路, 积分 30, 距离下一级还需 20 积分
新手上路, 积分 30, 距离下一级还需 20 积分
你好,如何检测是否RAM溢出了昵
& & Total RO&&Size (Code + RO Data)& && && && && & 56876 (&&55.54kB ...
问题解决了吗?bootloader程序中
int32_t Ymodem_Receive (uint8_t *buf)函数中的定义 是否定义的最大字节数?为
(PACKET_1K_SIZE + PACKET_OVERHEAD) * FILE_SIZE_LENGTH 大约16K的升级包
uint8_t packet_data[PACKET_1K_SIZE + PACKET_OVERHEAD], file_size[FILE_SIZE_LENGTH],
for (i = 0, file_ptr ++; (*file_ptr != ' ') && (i & FILE_SIZE_LENGTH);)
我认为应该是这里出了问题 大于16K 会出问题
还有就是bootloader堆栈的大小 要注意下 MDK不熟悉 没找到堆栈的大小
在线时间36 小时
该用户从未签到主题帖子好友
中级会员, 积分 324, 距离下一级还需 176 积分
中级会员, 积分 324, 距离下一级还需 176 积分
问题解决了吗?bootloader程序中
int32_t Ymodem_Receive (uint8_t *buf)函数中的定义 是否定义的最大字 ...
我问题没找到是什么原因&&后来去官网重新下载移植&&就ok了
站长推荐 /2
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by查看: 2067|回复: 2
调试STM32F417+DP83848,遇到的问题
主题帖子精华
中级会员, 积分 221, 距离下一级还需 279 积分
在线时间44 小时
1.第一次是卡在初始化MAC层及DMA配置的软复位部分,如下:
ETH_SoftwareReset();&&& & & & & & & & & & & & & & & & & & & & & & & &
while (ETH_GetSoftwareResetStatus() == SET);
一直跳不出while循环,这主要是PHY芯片管脚配置的问题,我把一些不常用的管脚:PWR_DOWN/INT之类的不在程序中配置。
2.第二次卡初始化ETH中:
rval=ETH_Init(&ETH_InitStructure,DP83848_PHY_ADDRESS);
返回值为0,初始化不成功。
将问题定位在读取PHY芯片寄存器的函数中:
/* We wait for linked status... */
& && &timeout++;
& & } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_Linked_Status) && (timeout & PHY_READ_TO));
& & /* Return ERROR in case of timeout */
& & if(timeout == PHY_READ_TO)
& && &return ETH_ERROR;
查看芯片手册,发现将COL管脚配置为悬空,表示1,我其他PHY地址管脚都是配置的悬空,那么这时的PHY地址为01
3.程序中一直往上位机发送数据,上位机只接收到一两个数据包;上位机往STM32发数据,总进到中断中,但没有调用接收数据的回调函数。
状态寄存器不对:LAN8720跟DP83848的状态寄存器不同。
////LAN8720 PHYD¾Æ¬μÄ×′쬼Ä′æÆ÷
//#define PHY_SR& & & & & & & & & & & & & & & & ((uint16_t)31) & & & & & & & & //LAN8720μ&#196HY×′쬼Ä′æÆ÷μØÖ·
//#define PHY_SPEED_STATUS& & ((uint16_t)0x0004) & & & & //LAN8720 PHYËù¶èÖμÑúÂë
//#define PHY_DUPLEX_STATUS& &((uint16_t)0x00010) //LAN8720 PHYᬽó×′ì¬ÖμÑúÂë&&
/* The DP83848 PHY status register&&*/
#define PHY_SR& && && && && &&&((uint16_t)0x10) /* PHY status register Offset */
#define PHY_SPEED_STATUS& && & ((uint16_t)0x0002) /* PHY Speed mask */
#define PHY_DUPLEX_STATUS& && &((uint16_t)0x0004) /* PHY Duplex mask */
完成这些,程序基本调通。
主题帖子精华
在线时间1283 小时
多谢楼主分享
主题帖子精华
中级会员, 积分 221, 距离下一级还需 279 积分
在线时间44 小时
原子哥的程序里面有个小坑,如果程序已经跑起来,你还没接网线,这时再接网线,程序会卡在分配内存的位置,原因是:
没接网线,初始化LAN8720通不过,这时已经分配好四个数组的内存:DMARxDscrTab&&DMATxDscrTab Rx_Buff Tx_Buff,和mem mep内存,
这次初始化不通过,会继续初始化,继续给四个数组分配内存,这样,内存已经被分配完了,再接上网线,程序就会停在分配内存的位置。
Powered by查看: 1141|回复: 3
keil4编译环境使用JTAG在线仿真调试stm32f107 断点单步调试会出错自动退出调试!!!求助
主题帖子精华
初级会员, 积分 153, 距离下一级还需 47 积分
在线时间23 小时
我使用keil4编译环境使用JTAG V8在线仿真调试stm32f107 断点单步调试会出错自动退出调试,这个JTAG仿真器刚买来的时候不会这样? & 求指点
b60f6bf2b3a145c61b5e861_997.png (0 Bytes, 下载次数: 0)
22:54 上传
主题帖子精华
金钱120324
在线时间962 小时
应该是程序有问题吧,你搞个简单的代码试试。比如跑马灯
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
初级会员, 积分 153, 距离下一级还需 47 积分
在线时间23 小时
回复【2楼】正点原子:
---------------------------------
使用103的开发板的流水灯程序也这样情况
主题帖子精华
金钱120324
在线时间962 小时
回复【3楼】zhu2006:
---------------------------------
那就是板子有问题了,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
Powered by查看: 7322|回复: 21
Stm32F2调试遇到问题,卡了半天,自己实在搞不定了,来求助
在做STM32F2的程序,从0000地址运行一切正常。但是我要做bootloader.0000开始的地方放引导程序,实用程序从4000开始放,配置文件也修改过了(103系列上早就实现了,所以该做的都做了),用jlink仿真的时候出问题了,不是提示不能下载,就是提示堆栈地址错误',反正就是进不了仿真。恳请知道如何解决的兄弟帮一下忙。
感觉好像是哪里配置不对,是不是F2系列的在这方面和F1不一样?不仿真了,直接把编译出来的代码用bootloader下载进去,程序能运行,但是好像所有中断都不作用了。
记性不太好,是不是程序不是从0000运行,IAR的哪个地方配置改一下就行了,隐约中有点印象是要这样,但是想不起来是哪个选项了。
要设置中断的基地址(不知道是不是这么叫),和1xx是一样的。
要调试的话,先把偏移地址改成0,等调试没有问题了才改偏移然后下载。
lcofjp 发表于
要调试的话,先把偏移地址改成0,等调试没有问题了才改偏移然后下载。
直接偏移好调试也行的,1系列的这样用的。“中断基地址”也设置了的,在程序里调用库函数的那个。都是按1系列的操作来的。
坛子里有兄弟在用F2吗?方便的话帮试一下'看你那里可以不。
bitter_rain 发表于
坛子里有兄弟在用F2吗?方便的话帮试一下'看你那里可以不。
修改一下link文件
liupeng08305 发表于
修改一下link文件
您说的是这个不?
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x;
define symbol __ICFEDIT_region_ROM_end__& &= 0x0807
define symbol __ICFEDIT_region_RAM_start__ = 0x;
define symbol __ICFEDIT_region_RAM_end__& &= 0x2000
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x1000;
define symbol __ICFEDIT_size_heap__& &= 0x1000;
/**** End of ICF editor section. ###ICF###*/
这个是基本的,肯定修改了的。
bitter_rain 发表于
您说的是这个不?
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x;
中断向量改了没
是要做IAP吧。
1、运行首地址要跳转,这个要修改。
2、IAP程序空间大小,要发用户程序的运行首地址正好一致。
3、最关键的一步是,中断向量表也要跟着变化,因为你已经不再从0000开始了,而默认的都是从0000开始。
本帖子中包含更多资源
才可以下载或查看,没有帐号?
本帖最后由 bitter_rain 于
08:56 编辑
liupeng08305 发表于
中断向量改了没
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000);是这个吧,这个知道要加的,stm32f1xx系列上用的好好的,所以一些基本的设置都知道的。
不知道您所说的是不是这个?
adce 发表于
照您的样子改了,
/*!& Uncomment the following line if you need to relocate your vector Table in
& &&&Internal SRAM. */
/* #define VECT_TAB_SRAM */
#define VECT_TAB_OFFSET&&0x4000 /*!& Vector Table base offset field.
& && && && && && && && && && && &&&This value must be a multiple of 0x200. */
还是不行。
目前的错误提示是:the flash loader program reported an error.
这个帖子可以改成悬赏的吗?很烦了,不知道怎么搞了。
哪位兄弟方便的话,给我一个在您那边证实可以用的(jlink仿真)工程模板吧,用的是stm32f205,程序要从0x4000开始运行的。
Warning: Stack pointer is setup to incorrect alignment. Stack addr = 0xFFFFFFFF
堆栈指针设置错误?如何解决?
过来汇报一下情况。刚刚什么都没动,居然连上了,而且可以仿真了。
期间什么都没动,因为实在找不都原因打算放弃了的,就帮同事修手机(同事手机坏了,昨天找我修的,因为一直在搞这个IAP仿真的事情,修手机的事一
直放在一边)。很简单的刷了一下机,因为刷机要usb驱动,就装了,装好刷完机继续调试。诶,TMD居然能下载能仿真了。不知道,是不是装了手机的
usb驱动,导致jlink的驱动发生了什么变化,按道理是没半毛钱关系的。就当做是这个原因吧,被折磨了两天了。
我操!从0x4000开始执行的可以了,从0x0000开始执行的又不行了。一模一样的问题,对调了一下。
Warning: Stack pointer is setup to incorrect alignment. Stack addr = 0xFFFFFFFF
堆栈指针设置错误? ...
我也遇到了,怎么解决的啊,用的iar6.3&&stm32f103
我也遇到了,怎么解决的啊,用的iar6.3&&stm32f103
103不会有问题的。我用到是205,按道理也不用有问题,但是我当时就是不行,后来具体怎么好的没映象了,可能是更新了jlink的驱动。
程序上只需要重新指定中断入口地址,并配置flash的开始地址。
我现在做的项目是从0x自己写bootloader,从0x放置应用程序,可以实现boot,只有设定好NVIC就OK啦
阿莫电子论坛, 原"中国电子开发网"
, 原www.ourdev.cn, 原www.ouravr.com}

我要回帖

更多关于 遇到问题需要关闭 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信