OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
楼主: Admin

STM32串口IAP实验(战舰STM32开发板实验)

  [复制链接]

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-11-17 20:41:31 | 显示全部楼层
回复【51楼】cc罗罗heaven:
---------------------------------
这是函数指针,实际上就是执行你app的reset hander函数。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-8-12
在线时间
1 小时
发表于 2014-11-18 09:43:14 | 显示全部楼层
检查栈顶地址是否合法  这是怎么弄得    那可以查?
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-12-31
在线时间
0 小时
发表于 2014-12-31 09:19:37 | 显示全部楼层
原子论坛很好啊!!
回复 支持 反对

使用道具 举报

13

主题

225

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2013-11-12
在线时间
29 小时
发表于 2015-2-2 17:12:59 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
我就是在做实际应用啊,想用boot1的低电平来判断是否升级,但是搞不定啊,我用的是vct6,原子哥给点注意事项嘛
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-2-3 00:10:00 | 显示全部楼层
回复【55楼】jiushibuzhidao:
---------------------------------
你自己思路先理一理
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-2-14
在线时间
8 小时
发表于 2015-3-4 13:59:41 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥,从代码上看, 如果我上电后,进行固件升级,代码也传送成功了;但是这时板子断电,再重新上电,代码不会自动跳转到我已升级的那部分啊。
从代码上感觉,断电再上电后,只会一直跑IAP的main函数,不会自动跳转到新程序的main函数啊,这样没有意义啊?

谢谢原子哥的解答。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-3-4 22:32:00 | 显示全部楼层
回复【57楼】小肥a:
---------------------------------
按按键就可以跳转过去。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-2-14
在线时间
8 小时
发表于 2015-3-5 10:57:40 | 显示全部楼层
回复【58楼】正点原子:
---------------------------------
跳转过去后,我想再升级固件,看来要重新断电再上电了?

原子哥,stm32能否可以实现一下功能:我在运行新程序的main函数,也能随时串口接收新的固件升级,升级后,断电上电后能自动跳转到最新程序的main函数? 

如果是arm的话,只要设置好bootloader,断电上电后就可以直接跳转到最新程序的main函数, cortex可以吗? 怎样实现?

产品需要,谢谢原子哥指点!!!!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-3-5 22:52:13 | 显示全部楼层
回复【59楼】小肥a:
---------------------------------
当然没问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-2-14
在线时间
8 小时
发表于 2015-3-6 10:31:25 | 显示全部楼层
回复【60楼】正点原子:
---------------------------------
怎样设置STM32的bootloader,使其上电复位直接跳转到我想要的新程序的main函数?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-3-6 22:59:28 | 显示全部楼层
回复【61楼】小肥a:
---------------------------------
你做个标记量就是了。
比如:appflag,如果appflag=1,说明app程序正常,直接跳转到app运行。
如果appflag=0,说明app程序异常,执行app更新,或者等待。
注意:appflag,可以存放在eeprom,或者内部flash,或者外部flash,总之要掉电后能保存的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-7-31
在线时间
0 小时
发表于 2015-3-14 10:17:39 | 显示全部楼层
原子太棒了,大爱啊,强烈拥戴,每次看你的文章都感觉能恰到好处的说出我不能理解的地方。太赞了,会一直关注原子
奋斗,给她一个幸福的未来
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-3-17
在线时间
5 小时
发表于 2015-3-17 13:43:45 | 显示全部楼层
原子哥,这个程序也可以在stm32 mini板上运行吧,我将这个项目程序移植到mini stm32中时出现些问题。(也改了些配置LED,kEY,lcd库都是用的mini板中的库),烧录到mini板上后程序启动不起来,在线调试了,发现进入这个循环中,出不来了
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
}

请问这是什么情况,怎么解决呢
回复 支持 1 反对 1

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2015-3-24
在线时间
1 小时
发表于 2015-3-24 13:48:14 | 显示全部楼层
我把您的代码下载运行时出现..\SYSTEM\sys\sys.h(3): error:  #5: cannot open source input file "stm32f10x_map.h": No such file or directory 的错误。。该怎么解决呢?
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-3-24 13:54:13 | 显示全部楼层
厉害,顶
回复 支持 反对

使用道具 举报

2

主题

34

帖子

0

精华

高级会员

Rank: 4

积分
517
金钱
517
注册时间
2014-5-17
在线时间
79 小时
发表于 2015-4-21 09:34:28 | 显示全部楼层
习惯使用寄存器版的代码 ,学习
回复 支持 反对

使用道具 举报

1

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2013-10-18
在线时间
20 小时
发表于 2015-5-13 17:43:14 | 显示全部楼层

还有就是在进行程序更新的时候有什么通信  注意的吗?比如ISP
因为我想用stm32 上的串口给战舰更新程序  需要注意那些?

回复 支持 反对

使用道具 举报

190

主题

401

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1289
金钱
1289
注册时间
2014-6-15
在线时间
143 小时
发表于 2015-5-13 19:15:56 | 显示全部楼层
请问
if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法
这句话

为什么等于0x20000000就合法,而不等于就不合法了?
回复 支持 反对

使用道具 举报

8

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2014-5-5
在线时间
17 小时
发表于 2015-5-19 22:52:49 | 显示全部楼层
回复【62楼】正点原子:
---------------------------------
原子哥,问哈,如果你通过上位机串口发送的数据每次,一帧数据只有256字节升级包,但是你的flash页大小是2k,怎么将收到的256字节的升级程序一帧一帧的写进flash 啊!很感谢!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-5-19 23:28:31 | 显示全部楼层
回复【70楼】chengqing:
---------------------------------
缓存
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2014-5-5
在线时间
17 小时
发表于 2015-5-20 10:21:46 | 显示全部楼层
回复【71楼】正点原子:
---------------------------------
缓存满了2K在写进去?那合适判断发送的数据包完了,发送过来的数据包不是2K的整数倍怎么办呢?memcpy(&SysConfigBuf[recve_num],&RS485recBuf[5],256) //把收到的数据copy 进本地缓存
recve_num+=256;//接收数据帧递增

if((recve_num/256) == 8)//接收缓存到了2048即1页大小
{
    recve_num=0;
   FLASH_Unlock();//解锁
   Flash_earse(ApplicationAddress+page_num*2048);//擦除
   flash_Write_Nbyte(ApplicationAddress+page_num*2048,(u32*) SysConfigBuf,2048);//写入
   FLASH_Lock();//上锁
   page_num++;//页递增

}

这样可以嘛? 就是不清楚何时收到的数据完了,发送过来的数据不是2K的整数倍又怎么处理,写进falsh去
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-5-20 23:37:17 | 显示全部楼层
回复【72楼】chengqing:
---------------------------------
写你需要的数据即可。
擦除大小是2K,并不等于要求你写入数据大小,也一定要是2K。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-2-14
在线时间
8 小时
发表于 2015-5-21 10:17:34 | 显示全部楼层
回复【62楼】正点原子:
---------------------------------
原子哥,如果单片机内有一个IAP程序,2个app程序,比如在app1里定义一个全局变量,,,那么在IAP或者app2 里可以直接通过变量名访问吗
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-2-14
在线时间
8 小时
发表于 2015-5-21 11:42:06 | 显示全部楼层
回复【73楼】正点原子:
---------------------------------
//跳转到应用程序段

//appxaddr:用户代码起始地址.

void iap_load_app(u32 appxaddr)

{

       if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)      //检查栈顶地址是否合法.

       { 

              jump2app=(iapfun)*(vu32*)(appxaddr+4);         

//用户代码区第二个字为程序开始地址(复位地址)          

              MSR_MSP(*(vu32*)appxaddr);                                

//初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)

              jump2app();    //跳转到APP.

       }

}


原子哥,if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)      //检查栈顶地址是否合法.
这句的意思是:appxaddr是否在0x20000000和0x2001FFFF之间,即栈顶是不是在0x20000000开始的128K,这里是STM32的RAM区啊

但是你把放在flash的app,也直接用这个程序,但flash的app的栈顶地址是0x08003000,按说进不去if语句啊,不能实现跳转才对啊????????
谢谢原子哥的解答
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-5-21 23:42:35 | 显示全部楼层
回复【75楼】小肥a:
---------------------------------
栈是SRAM,所以,你说的0x08003000肯定错了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-2-14
在线时间
8 小时
发表于 2015-5-22 11:52:55 | 显示全部楼层
回复【76楼】正点原子:
---------------------------------
    if(key==KEY_LEFT)

              {

                     printf("开始执行FLASH用户代码!!\r\n");

                     if(((*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000)

//判断是否为0X08XXXXXX.

                     {     

                            iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码

                     }else 

                     {

                            printf("非FLASH应用程序,无法执行!\r\n");

                            LCD_ShowString(60,210,200,16,16,"Illegal FLASH APP!");       

                     }                                                             

                     clearflag=7;//标志更新了显示,并且设置7*300ms后清除显示   

              }

    if(key==KEY_LEFT)

              {

                     printf("开始执行FLASH用户代码!!\r\n");

                     if(((*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000)

//判断是否为0X08XXXXXX.

                     {     

                            iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码

                     }else 

                     {

                            printf("非FLASH应用程序,无法执行!\r\n");

                            LCD_ShowString(60,210,200,16,16,"Illegal FLASH APP!");       

                     }                                                             

                     clearflag=7;//标志更新了显示,并且设置7*300ms后清除显示   

              }

代码我贴的上面原子哥写的代码,,可是你定义的FLASH_APP1_ADDR 是0x08005000
这不是进不去if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) 的限制吗?

谢谢原子哥
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-5-23 00:07:02 | 显示全部楼层
回复【77楼】小肥a:
---------------------------------
你还是好好看看我们教程吧,代码第一个4个字节,表示什么?第二个四个字节,表示什么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

19

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-3-21
在线时间
2 小时
发表于 2015-6-8 12:12:47 | 显示全部楼层
很好的教程 谢谢
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-2-14
在线时间
8 小时
发表于 2015-7-15 11:35:34 | 显示全部楼层
回复【78楼】正点原子:
---------------------------------
原子哥,cortex M0 可以实现位带操作吗??
谢谢原子哥!:)
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-7-16 00:27:36 | 显示全部楼层
回复【80楼】小肥a:
---------------------------------
没用过M0哦
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2013-9-6
在线时间
2 小时
发表于 2015-7-17 15:37:23 | 显示全部楼层
mark下,后面会用到
回复 支持 反对

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2014-4-12
在线时间
0 小时
发表于 2015-7-19 17:26:38 | 显示全部楼层
回复【42楼】xm1187201357:
---------------------------------
可以直接发送,只要将HEX文件解析一下就可以了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2015-8-17
在线时间
6 小时
发表于 2015-8-17 14:35:54 | 显示全部楼层
原子哥,生成的bin文件结尾多出了96个byte,感觉多出的字节存放的是这个文件的检验和其他的信息的,你有木有关于fromelf.exe生成bin文件的格式文档啊
回复 支持 反对

使用道具 举报

7

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2015-8-18
在线时间
10 小时
发表于 2015-8-21 08:58:20 | 显示全部楼层
原子哥,为什么我的IAP不能运行呢?一直在bootloader不能跳转到flash app
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2015-8-14
在线时间
0 小时
发表于 2015-8-21 21:38:29 | 显示全部楼层
原子哥,为什么我的通过串口发送了.bin文件后可以执行,但是再按复位之后按key1可以,keyo就显示Illegal SRAM APP!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-8-21 22:25:07 | 显示全部楼层
回复【86楼】雨林:
---------------------------------
因为数据丢失 了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2014-1-19
在线时间
1 小时
发表于 2015-9-6 21:57:44 | 显示全部楼层
原子哥,我按照你的视频重新复制了RTC的实验,然后生成的.bin文件,可以执行,通过串口发送.bin文件后,按up键也可以复制成功,但是再按k2键之后,液晶屏就不动了,小灯也不亮了,还是IAP刚下载完的那个现象。这是为什么呢?
尽力就好。
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2014-10-6
在线时间
0 小时
发表于 2015-10-13 14:04:10 | 显示全部楼层
原子哥请教几个问题:
1.u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000)));  为什么要存放在此位置呢?前面4K是啥内容?
2.缓存数据是55K,SRAM大小就64K,供用户数据的存储就只有64-4-55=5K。可是编译了IAP程序之后感觉RAM空间占用好大?不解。
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2014-10-6
在线时间
0 小时
发表于 2015-10-13 15:55:07 | 显示全部楼层
1.包括堆栈空间等,不知道对不
2.keil编译显示的RAM数据大小已经包括该缓存数组。

自问自答,(⊙﹏⊙)b
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-10-13 22:03:04 | 显示全部楼层
回复【89楼】masosam:
---------------------------------
1,全局变量,堆栈等.
2,不明白你的问题.
要看大小,编译成功后,MDK就会告诉你
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-11-13
在线时间
2 小时
发表于 2015-10-27 13:32:40 | 显示全部楼层
原子哥,请问,我的代码有200多KB,我用的stm32f103vct6,Flash256kB,RAM48kB,还可以用这种方法吗。
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-11-13
在线时间
2 小时
发表于 2015-10-27 14:34:13 | 显示全部楼层
可不可以串口一边读数据,一边往flash里面写数据?
回复 支持 反对

使用道具 举报

3

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-8
在线时间
14 小时
发表于 2015-12-9 11:39:08 | 显示全部楼层
我用的107的板子,通过修改原子君的程序得到Bootloader程序得到IAP,编译没有错误,但是运行不成功,在这里学习下
回复 支持 反对

使用道具 举报

3

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-8
在线时间
14 小时
发表于 2015-12-10 10:01:46 | 显示全部楼层
回复【89楼】masosam:
---------------------------------
我也不太明白这里这个数据是固定的还是需要根据自己的例程修改的?
回复 支持 反对

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2013-1-20
在线时间
50 小时
发表于 2016-1-15 22:17:50 | 显示全部楼层
好的教程,对于原理部分写的不错
回复 支持 反对

使用道具 举报

11

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2016-4-6
在线时间
53 小时
发表于 2016-5-13 13:25:18 | 显示全部楼层
各位前辈好,在下初学stm32,用的战舰版,根据教材操作下载bootloader程序之后,用串口传输flash app,串口助手提示:LCD ID:9341 用户程序接收完成! 代码长度:1024Bytes 用户程序接收完成! 代码长度:15360Bytes 用户程序接收完成! 代码长度:26624Bytes 用户程序接收完成! 代码长度:1140Bytes 开始更新固件... 非FLASH应用程序!  等于说44KB的app数据被串口接收分割成了四份,我的设置按照教程的,为什么有这个错误,有没有前辈遇到过,求指点。
回复 支持 反对

使用道具 举报

20

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2016-6-15
在线时间
34 小时
发表于 2016-10-6 15:19:40 | 显示全部楼层
正点原子 发表于 2013-12-10 22:41
回复【28楼】孔凤明:
---------------------------------
MSP=Main SP
即:主堆栈。

//设置栈顶地址
__asm void MSR_MSP(u32 addr)
{
    MSR MSP, r0                         //set Main Stack value
    BX r14
}


我也不懂,为什么是把  ro的值   赋值为   栈顶地址 呢??

而且ro的值究竟是什么值?手册上没介绍RO寄存器。

如果是把addr的值放到MSP做栈顶地址,什么个道理??到底栈顶地址在哪里可以查到具体数值,我只找到了在启动文件可以设置堆栈的大小,但是栈顶的地址没看到在哪可以设置。难道说是编译器处理的,那又是根据什么处理的呢?

困惑!!!。。。
回复 支持 反对

使用道具 举报

4

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2016-5-28
在线时间
14 小时
发表于 2016-11-9 14:58:15 | 显示全部楼层
谢谢~~!话说 有没有视频啊 ,唉 就是这么不满足,得陇望蜀。。。
回复 支持 反对

使用道具 举报

8

主题

533

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2831
金钱
2831
注册时间
2016-5-13
在线时间
179 小时
发表于 2016-11-21 17:20:29 | 显示全部楼层
顶了  顶了  来顶啊
虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2015-9-8
在线时间
22 小时
发表于 2016-12-14 17:40:06 | 显示全部楼层
为什么我的jump2app获取到的是个奇数地址?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 01:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表