原创 STM32之ISP软件的疑虑的产生和解脱

2007-12-20 01:54 6006 8 8 分类: MCU/ 嵌入式
hotpower 发表于 2007-12-19 12:56 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

楼主: 想做STM32菜鸟有几个苯问题


1.如果俺有个199元的集成仿真器STM32板(第二版),是否可以直接用串口ISP下载程序进行"裸奔裸调"???
能否给个ISP软件的链接???
谢谢!!!

2.ISP软件可以自己编写吗???
因为可能通用的ISP很难完全达到用户的需求.

3.ISP有几线控制(不包括地线).
  除了TX,RX还有其他线吗???如RTS,DTR等.
如果只有TX,RX两线,那么ISP是搞软件握手???还是要硬件配合???

不会是要跳线吧???如果是需要几个跳线???

俺想最好不要超过2根线,否则用PC的串口实现功能切换口线可能不够.


谢谢!!!俺先只有这3个(实际是1个)问题~~~


hotpower 发表于 2007-12-19 13:15 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

2楼: 一直有2个心愿为了~~~1个是飞思卡尔单片机,1个就是STMCU


一直没时间和机会~~~上次差点用飞思卡尔单片机,但有个要求不能满足...

原本都准备借张教主的开发板玩玩...机会就这么错过了...

这次总算"鼓足勇气"与STM32"亲密接触"~~~肯定不会让俺失望~~~


grant_jx 发表于 2007-12-19 13:50 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

4楼: 我回几个


1.如果俺有个199元的集成仿真器STM32板(第二版),是否可以直接用串口ISP
2.ISP软件可以自己编写吗???
3.ISP有几线控制(不包括地线).



其实按楼上的说法就是一个问题。

首先可以到ST的网站上下载最新的Bootloader程序,和公开的BootLoader协议手册。这个bootloader指的是固化在STM32的System memory内的,不是User Memory那个需要自己动手编程进去的。


下载地址:
1、所有已公开的STM32资料:
http://www.st.com/mcu/familiesdocs-110.html#Application%20Note

2、STM32固化的BootLoader协议:
http://www.st.com/stonline/products/literature/an/13801.pdf

3、STM32固化的BootLoader的上位机PC端程序:
http://www.st.com/stonline/products/support/micro/files/um0462.zip

4、STM32固化的BootLoader的上位机PC端程序使用说明:
http://www.st.com/stonline/products/literature/um/13916.pdf

5、STM32的Flash编程使用说明:
http://www.st.com/stonline/products/literature/pm/13259.pdf


对于Bootload只要RxD、TxD,通过软件方式握手。


hotpower 发表于 2007-12-19 18:52 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

7楼: 非常感谢4楼的回复和链接


对于Bootload只要RxD、TxD,通过软件方式握手。

这么说俺自己的通讯协议必须饶开它???

它是刚复位时握手的???有时间限制???

波特率是否是自适应方式???

俺在农忙之中...没时间看这些资料~~~

期待后天能拿到开发板,早日STM32菜鸟毕业...


香水城 发表于 2007-12-19 21:30 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

8楼: 哈哈,支农下乡,任务繁重啊


四楼的已经基本上讲的非常详细了,针对7楼的问题我补充两点:

1)  Bootloader是在System Memory,这个区域必须通过设置Boot1和Boot0引脚才能启动,正常工作状态下,这部分区域是被隔离开的,自动被绕开,Bootloader绝对不占用任何用户程序的资源。
  简单地说:当你要使用ISP烧写数据到Flash时,需要设置Boot1和Boot0启动System Memory中的Bootloader;烧写完成后,再重新设置Boot1和Boot0启动Flash中你自己的程序,进入正常操作。

2)STM32中的Bootloader使用USART1做为通信端口,它使用8个数据位、1个停止位和偶校验,具有自动波特率检测功能。

在另一个帖子中还有讨论这个问题的,也许对理解有所帮助:http://bbs.21ic.com/club/bbs/list.asp?boardid=49&t=2791287


hotpower 发表于 2007-12-19 22:28 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

9楼: 感谢香主扶贫下乡,继续探讨ISP问题(案没时间看,来个空想吧)


因为这几天几个产品同时干,没时间研究STM32~~~

不过听香主的ISP解说,俺琢磨它的ISP也是要又硬件握手的.

1)  Bootloader是在System Memory,这个区域必须通过设置Boot1和Boot0引脚才能启动,正常工作状态下,这部分区域是被隔离开的,自动被绕开,Bootloader绝对不占用任何用户程序的资源。
  简单地说:当你要使用ISP烧写数据到Flash时,需要设置Boot1和Boot0启动System Memory中的Bootloader;烧写完成后,再重新设置Boot1和Boot0启动Flash中你自己的程序,进入正常操作。

2)STM32中的Bootloader使用USART1做为通信端口,它使用8个数据位、1个停止位和偶校验,具有自动波特率检测功能。


"需要设置Boot1和Boot0启动System Memory中的Bootloader"
从1)中能"听到"Boot1和Boot0需要某个固定电平信号才能进入ISP模式.
在工控中应该如此,这样安全系数很提高很多~~~

"烧写完成后,再重新设置Boot1和Boot0启动Flash中你自己的程序,进入正常操作"

再"听说"后感觉要回到运行状态,必须要设置Boot1和Boot0为其他的某个固定电平信号.

这么说2者的信号组合不同(密码),就会在reset后进入不同的"分枝"???

因为在产品定型后,软件的升级当然用ISP较好,应该比USB好些,因为要考虑工业现场和通讯距离问题.

但肯定不能打开机壳来转换ISP和RUN方式,所以要通过外部对Boot1和Boot0控制

以实现不开壳来ISP升级产品的软件.

如果菜农说得(理解)对了,那么STM32做产品俺是铁了心了~~~

下面是俺在LPCARM上实现的"不开壳来ISP升级"~~~3年来很完美,现场改程序很方便~~~

而且本身串口就是做数据采集的,所以俺期待香主的回答是肯定的~~~

那么,STM32的ISP软件可以控制其他232信号吗???

就像LPCARM的DTR/RTS???估计STM32不会这样做的,它会感觉NXP会笑话它的~~~

"牛人是不会抄袭的"~~~可是一定害苦了贫民百姓~~~

所以俺肯定要自己编写STM32的ISP软件~~~这样可以完成远程数据通讯附带ISP软件升级~~~


再次感谢香帮主的教诲!!!!!!!!!!!!!!!!!!!!!!!


LPCARM之ISP设计思路和应用详解
2006102615335132.gif



香水城 发表于 2007-12-19 23:06 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

10楼: 看样子扶贫下乡是不够的,还需要扶贫下田


到了田里一看,发现农民兄弟比我们聪明,什么样的庄稼都被他们倒塌了,怪不得现在粮食涨价了。我们要听老人家的话,到农村去接受贫下中农的再教育。




“这么说2者的信号组合不同(密码),就会在reset后进入不同的"分枝"???”,老农的理解完全正确,请看下面的摘录,这是从STM32的技术参考手册中截取下来的:
20071219225450830.gif

这里可以看出不同的Boot0和Boot1的设置,决定了Reset后进入哪部分代码空间。至于实现不开壳来ISP升级产品,估计要发挥农民伯伯的聪明才智了。

关于“STM32的ISP软件可以控制其他232信号吗???”这个问题,我的理解是——不可以。不知您“其他232信号”是什么意思,是否指CTS/RTS等?如果是这样,则答案是:ISP软件只控制TX和RX。

顺便提一下,俺正在拜读农民朋友的大作,看样子种地也不容易啊。


20071219225450830.gif



88088 发表于 2007-12-19 23:27 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

13楼: 请问  香水城


进入 ISP状态

的条件 是什么 ??




blank.gif

mood25.gif 香水城 发表于 2007-12-19 23:31 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

14楼: 13楼:请看我在8楼和10楼的回答


条件是:Boot0=1  Boot1=0



hotpower 发表于 2007-12-19 23:41 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

18楼: 哈哈~~~首次"空手道"倒塌STM32初战告捷---自贺一番


根据香帮主给的"联络图",首次倒塌成功...

1)  Bootloader是在System Memory,这个区域必须通过设置Boot1和Boot0引脚才能启动,正常工作状态下,这部分区域是被隔离开的,自动被绕开,Bootloader绝对不占用任何用户程序的资源。
  简单地说:当你要使用ISP烧写数据到Flash时,需要设置Boot1和Boot0启动System Memory中的Bootloader;烧写完成后,再重新设置Boot1和Boot0启动Flash中你自己的程序,进入正常操作。


从引导管脚选择分配来看,实际产品只有运行状态和ISP状态.

  Boot1 Boot0
     X     0   运行模式
     0     1    ISP模式

这里将Boot1都接为低电平,这样本来3个状态需要2个信号控制的
就变为了一个信号Boot0的控制了,即
  Boot1 Boot0
     0     0   运行模式
     0     1    ISP模式

那么我什么时候可以自由切换呢???

难道Boot0的跳变会在运行期间改变工作模式吗???

俺估计不会的~~~Boot,Boot肯定是复位瞬间系统辨认Boot引脚的.

所以,肯定需要将reset信号也控制吧~~~

这就变为了

   Reset   Boot0
1->0->1     0   运行模式
1->0->1     1    ISP模式

那么不就让菜农错点鸳鸯把LPCARM非常成功和完美的经验扯入到了STM32中了吗???

图俺就不画出来了吧~~~


2006102615335132.gif



香水城 发表于 2007-12-20 00:01 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

19楼: 老顽童,让我说你什么好呢?这么快~~~


难道Boot0的跳变会在运行期间改变工作模式吗???

俺估计不会的~~~Boot,Boot肯定是复位瞬间系统辨认Boot引脚的


我在10楼贴出来的那一段中有一句话说的正是你的意思“The values on the BOOT pins are latched on the 4th rising edge of SYSCLK after a Reset.”,即芯片内部是在复位后时钟的第4个上升沿检测这两个引脚的状态,之后这两个引脚的状态是什么就无所谓了。

另外,当芯片从“Standby”模式被唤醒后也会同样检测这两个引脚的状态。



hotpower 发表于 2007-12-20 00:59 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

22楼: 哈哈~~~香斑竹俺故意"闭眼猜谜"的~~~俺想凭感觉倒塌一切~~~


俺喜欢下盲棋~~~整天"目中无人"~~~俺喜欢"猜"~~~

这就是"合格的逆向人"~~~

俺准备考取"逆向学院"的"毕业证书"~~~

哈哈~~~当初俺倒塌LPCARM时,几乎都靠"第6感"~~~国外有"第6纵队"的说法???

哈哈~~~说笑了...看俺拿到板后如何"折磨"STM32~~~



sszxxm 发表于 2007-12-20 01:34 ST MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

楼主: STM32 ARM DEMO板试验UART使用ISP下载程序成功!(有图为证)


程序是例子里的1602显示。

板子是英蓓特的那个,平时将小板的SW1,SW2都置0,需要ISP下载时,将SW2拨到1,然后启动那个上位机程序:STM32固化的BootLoader的上位机PC端程序:
http://www.st.com/stonline/products/support/micro/files/um0462.zip

就可以在里边联机了,接下去的操作很简单,把HEX文件调出来,直接下载啦:)




200712201348970.jpg


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条