历史上的今天
返回首页

历史上的今天

今天是: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)  

  {  

  }  

}  


推荐阅读

史海拾趣

Dino-Lite公司的发展小趣事

Dino-Lite公司在发展过程中,始终注重市场拓展和合作伙伴关系的建立。公司与多家知名企业建立了长期稳定的合作关系,共同开拓市场、分享资源。通过与合作伙伴的紧密合作,Dino-Lite公司的产品得以快速进入各个行业领域,并获得了良好的口碑和市场份额。

此外,Dino-Lite公司还积极参与国际展览和交流活动,展示公司的最新技术和产品。这些活动不仅提高了公司的知名度,也为公司带来了更多的商业机会和合作伙伴。

Freqtech Ohg公司的发展小趣事

随着业务的不断增长,Freqtech Ohg公司开始实施全球化战略。公司首先在欧洲建立了研发中心,随后在亚洲市场设立了生产基地和销售网络。通过整合全球资源,Freqtech不仅降低了生产成本,还更快速地响应了不同地区客户的需求。同时,公司积极参与国际展会和技术交流,不断提升品牌知名度和影响力,为公司的全球化发展奠定了坚实基础。

AB Connectors Ltd公司的发展小趣事

进入新世纪,电子行业的技术更新换代速度加快。AB Connectors Ltd意识到,只有不断创新才能在激烈的市场竞争中立足。于是,公司加大了研发投入,组建了一支高素质的研发团队,专注于连接器技术的创新。经过多年的努力,AB Connectors Ltd成功开发出了一系列具有自主知识产权的新型连接器产品,不仅提高了产品的性能和质量,还降低了生产成本。这些创新产品为公司赢得了众多客户的青睐,进一步巩固了市场地位。

国炬(GOOGLL)公司的发展小趣事
为了防止电路中的元器件损坏导致负载回路短路,常常在负载回路中转入熔断丝作为保护措施。
驰芯微(CHIPWISE)公司的发展小趣事

近年来,国际环境复杂多变,某些国家对我国进行“芯片限制”。然而,这一限制反而为驰芯微带来了机遇。在“芯片限制”的背景下,更多国内车企开始寻求与国内芯片企业的合作。驰芯微凭借其在车规级芯片领域的丰富经验和卓越性能,成功获得了多家车企的青睐。公司抓住这一机遇,加大了与车企的合作力度,进一步巩固了其在行业中的地位。

爱普特微(aptchip)公司的发展小趣事

随着产品的广泛应用和市场的不断拓展,爱普特微电子逐渐获得了业界的广泛认可。公司屡获殊荣,包括“国家级专精特新小巨人”、“中国IC独角兽”、“中国TOP 50国产MCU厂商”等。这些荣誉的获得,不仅是对公司技术实力和市场表现的肯定,更是对公司未来发展的鼓励和期待。

问答坊 | AI 解惑

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,只是开的时 ...…

查看全部问答>

NEC,单片机,我郁闷

1. 兄弟是计算机专业毕业,以前一直用VC++写程序 2. 电路一窍不通,会用一点儿Protel DXP 3. 现在要用NEC单片机做一个遥控器(C语言) 4. 两个月时间 5. 有可能吗? 6. 我该怎么下手啊?…

查看全部问答>

wince WebClient问题

我在xp中利用webclient类进行下载操作,但是到了wince中,好像不能用了,请问wince中下载用什么方式实现的? 最好给出代码啊?…

查看全部问答>

modelsim的work库问题

我用的是 modelsim 10.0b 对于modelsim 不怎么会用  刚安装好的时候还可以进行简单的程序仿真  有一次从网上看到怎么把altera的库编译进modelsim 就按着那个步骤操作了一下 但是最后也没成功 反而把modelsim 弄坏了 现在不能用 ...…

查看全部问答>

基于FSSDC-9B506-EK Easy Kit的作品(1)

    去年暑假期间,富士通公司举办了“2010-2011富士通半导体杯创意未来电子竞赛”,我有两个学生参加这个比赛。做了点东西,应该说还行吧。现在富士通在论坛征集建议,刚好他们使用的开发板就是Cortex-M3 Easy Kit,作为响应吧,我 ...…

查看全部问答>

新手求教啊!延时程序问题

为什么我的msp430G2553用不了延时子程序?无法实现LED灯的闪烁 但用自带的延时程序则可以实现闪烁。 附图啊…

查看全部问答>