在线时间0 小时
UID418187
ST金币0
蝴蝶豆0
注册时间2013-2-27
新手上路
- 最后登录
- 1970-1-1
|
发表于 2013-4-19 10:14:15
|
显示全部楼层
a0a.1 0b0c
回复:Flash loader 支持ISP 与IAP
回复第 48 楼 于2011-08-05 02:05:16发表:
我自己在设计板子,关于boot的状态选择不太理解,如何通过串口烧程序与boot的关系不是很清楚,能推荐一下这方面的资料吗?
回复第 14 楼 于2010-12-29 13:45:13发表:
小弟对这了解不深: 是不是这样理解:
1、Boot0 = 1 ,Boot1 = 0 ; CPU从系统存储器启动,先执行ST内置的bootloader,bootloader可以将一段自己写的flashloader(.bin代码)通过串口下载到FLASH内部; 这个过程不是叫IAP吗?
问题: 用户的flashloader代码(.bin)下载到FLASH的什么位置 ?是从0x00开始的一段FLASH空间吗 ?
2、boot0=0,boot1=x,此时,CPU从FLASH启动,由于用户的Flashloader已经在FLASH中,cpu先执行这个用户的.bin代码,
Ld stm32.bin 通过串口 1 发送请求下载,在 200 毫秒内得到响应则进入用户 flash loader 状态, 即是可以将编写的应用代码下载到FLASH中?若没有响应,就跳到用户程序执行. 即正常执行FLASH已有的代码;
问题: 利用用户的flashloader 是不是只能将应用的代码下载到0x28地址以后得空间? 这个地址是不是可以变化? (根据编写用户自己的flashloader时修改)
ST内置的bootloader 和用户自己写的flashloader有什么区别? 二者都可以成为IAP吧? 只是ST的固化到了不能修改,而用户的可以修改甚至删除?
回答:
首先说明一下概念,IAP程序ld stm32.bin先通过ISP方式下载的内部FLASH,然后可以通过此程序实现IAP,两个下载程序都可以用此程序flash loader.exe完成。而ISP下载使用内部固化程序,需要上电前设置相应管脚改变启动位置,而之后有IAP后,上点都从内部FLASH执行,只不过马上执行的是ld stm32.bin这个IAP程序,在200 毫秒内得到响应则进入用户flash loader 状态,否则跳到用户程序执行,了解了这些,你的问题就不是问题了
1、用户的代码(.bin)下载到指定地址(0x2800 之后),绝对地址为0x8002800,这是在ld stm32.bin里面设置死的,不能更改(因为没有源代码,如果强行更改,直接找到此bin文件里的跳转地址0x2800,改动为自己想要的地址或许可行,待试验)而且想要下载用户程序必须先用ISP下载ld stm32.bin
2、1中已经回答
ST内置的bootloader 称为ISP,应用需在上电前设置启动位置(boot0,boot1管脚跳线)
用户自己写的flashloader称为IAP,只要上电后能跳转进下载程序(上电等待下载,超时跳入应用程序或上电进入应用,从应用程序中实现跳转)就可以实现下载应用程序
|
|