摘要: 更新:__initial_sp是堆栈指针,它就是FLASH的0x8000000地址前面4个字节(它根据堆栈大小,由编译器自动生成)0x8000004才是复位向量,所以需要在add+4这两天再看IAP实验,觉得很实用,最近在做一个小项目,日后也肯定需要升级的。原子的程序是写在STM32的内部Flash,内部SRAM。还可以把程序写到外部Flash或者SD卡来更新。目前做了第一步:从串口更新,移植的正点的代码。先将IAP bootload写入ROM起始地址,这里我的ROM总共256k,我分了一半给bootload,一半给app。注意设置地址问题。只更新了Flash app。用的流水灯实验。SD卡F 阅读全文
posted @ 2013-05-15 17:44 wwjdwy 阅读(3365) 评论(0) 推荐(1) 编辑
摘要: 在学习原子的IAP实验,被一段跳转函数困惑typedef void (*iapfun)(void);//定义一个函数类型的参数.iapfun jump2app;//跳转到应用程序段//appxaddr:用户代码起始地址.void iap_load_app(u32 appxaddr){if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)//检查栈顶地址是否合法.{ jump2app=(iapfun)*(vu32*)(appxaddr+4);//用户代码区第二个字为程序开始地址(复位地址)MSR_MSP(*(vu32*)appxaddr);//初始 阅读全文
posted @ 2013-05-15 14:47 wwjdwy 阅读(2202) 评论(0) 推荐(0) 编辑