历史上的今天
今天是:2024年09月20日(星期五)
2018年09月20日 | 基于stm32的usb iap程序升级步骤
2018-09-20 来源:eefocus
usb自动更新程序IAP(in application programming)DFU(develepment firemeware upgrate).整个芯片有512k的片内flash,用户程序下载在里面运行,flash的地址是0x8000000,大小为0x80000,usb自动更新程序首先下载0x8000000——0x80002FFF,总大小为12K,用户程序下载到0x80003000,大小为0x7D000(500K),usb自动更新代码为如下,如果按键按下,就进入DFU模式,否则就启动用户代码。
用户程序除了在void NVIC_Configuration(void)
{
/* Set the Vector Table base location at 0x3000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000);
}
里面修改,还要修改编译的地址,修改为0x80003000,大小为0x7d000,
iap程序编译地址为0x80000000,结束为0x80002fff,大小为0x3000,这样分别烧写用户程序和usb iap程序,启动即可。需要pc主机安装st公司的dfuse_demo_v3.0,其中会有dfu的驱动程序,插上usb后手动安装驱动程序C:\Program Files\STMicroelectronics\Software\DfuSe\Driver\x86\文件就好了运行DFU filemanager将编译生成的.hex文件转换成.dfu,然后运行DFUse demonstration upgrade生成的.dfu文件即可.
int main(void)
{
DFU_Button_Config();//配置usb自动升级程序的按键标识
/* Check if the Key push-button on STM3210x-EVAL Board is pressed */
if (DFU_Button_Read() != 0x00)
{ /* Test if user code is programmed starting from address 0x8003000 */
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
{ /* Jump to user application */
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
} /* Otherwise enters DFU mode to allow user to program his application */
/* Enter DFU mode */
DeviceState = STATE_dfuERROR;
DeviceStatus[0] = STATUS_ERRFIRMWARE;
DeviceStatus[4] = DeviceState;
Set_System();
Set_USBClock();
USB_Init();
/* Main loop */
while (1)
{
}
}
史海拾趣
|
Unable to locate the feature for the SYSGEN_JSCRIPT variable in the catalog 我用的PB4.2,每次选完我们的BSP,然后新建一个工程。都有如下的Warning(加粗部分),之后什么组件也不加,直接Build PlatForm就总会出现3个错误,用以前编译好的工程也是如此。不知道为什么。3个错误在最后列出。另外想问一下,PB4.2需要打补丁吗 ...… 查看全部问答> |
|
内容见: http://topic.eeworld.net/u/20090115/16/9f8974a2-139e-4f72-81b2-c502928ed4b7.html… 查看全部问答> |
|
我的单片机程序有点小问题想问问大家。 就是开关电源的时候,出现异常现象。 开开电源就出现所有本来有单片机控制的开关都自动的开一下又关闭,时间很短,瞬间的。 关闭电源时候现象一样。 开关电压220v。 另外一个开关电压12v,只是开的时 ...… 查看全部问答> |
|
1. 兄弟是计算机专业毕业,以前一直用VC++写程序 2. 电路一窍不通,会用一点儿Protel DXP 3. 现在要用NEC单片机做一个遥控器(C语言) 4. 两个月时间 5. 有可能吗? 6. 我该怎么下手啊?… 查看全部问答> |
|
我用的是 modelsim 10.0b 对于modelsim 不怎么会用 刚安装好的时候还可以进行简单的程序仿真 有一次从网上看到怎么把altera的库编译进modelsim 就按着那个步骤操作了一下 但是最后也没成功 反而把modelsim 弄坏了 现在不能用 ...… 查看全部问答> |
|
基于FSSDC-9B506-EK Easy Kit的作品(1) 去年暑假期间,富士通公司举办了“2010-2011富士通半导体杯创意未来电子竞赛”,我有两个学生参加这个比赛。做了点东西,应该说还行吧。现在富士通在论坛征集建议,刚好他们使用的开发板就是Cortex-M3 Easy Kit,作为响应吧,我 ...… 查看全部问答> |




