项目求思路! 高手请教!
本人,打算做一个上位机软来控制51单片机类的产品。。大多模块都明白了思路!就剩如下的想不通应如何下手:我的上位程序中会有一按钮 “ 下载 ” (即把KeilC生成的可执行十六进制文件.Hex文件烧写到单片机内存中去)
这个按钮应怎么样实现呢?有什么API函数可以实现? 还有怎么样与单片机的引导bootloader交互呢,与单片机握手?
各位靓仔!!!小女在此先行谢过 !( 我用的是朋友的号 ) 女子? 就是買個下載器, 接上單片機, 再就自己做個軟件, 由這個軟件去控制下載器的軟件去下載程序 回复【1楼】unic
-----------------------------------------------------------------------
自称小女子的,基本都是男的。 这叫 “色诱术”。火影鸣人的专利。 主要对象就是像你一样,好奇心强的。哈哈。 当然,该回答回答,别管什么男女。 和3楼想的一样 如果是STC单片机的话,可以通过检测按键,然后设置单片机ISP功能的寄存器,软件复位,下载更新程序; 妹妹,如下几步!
1.首先要明确你用的单片机具备iap功能,也就是在运行的过程中可以改写程序存储器!
2.如满足上述条件,请往下看!
3.需要搞明白HEX文件的格式,千万要了解HEX文件不能原封不动的写到单片机里,要作地址解析!
4.在你的单片机程序里写一个函数,这个函数要放到你知道的地址(以便在擦除老程序时不影响这段bootload)
5.在上一条里提到的函数中写串口接收,hex解析,以及iap代码,把串口来的hex写到相应的位置!
6.hex文件应分块接收,再往rom里写!因为你必须先缓冲到ram里,但一般没有那么大的ram,so!
7.如有可能让单片机复位,新程序就跑了!不行就让用户下电再上!
8.上位机的按钮就实现启动串口发送的线程的功能就可以了!
哥哥只能告诉你思路了!其余的google吧! mark 哪个型号的单片机?可以自写FLASH的话,应该有官方的解决方案吧? 回复【6楼】ytangy (^_^)(^_^)
妹妹,如下几步!
1.首先要明确你用的单片机具备iap功能,也就是在运行的过程中可以改写程序存储器! (这一句我明白了啦)
2.如满足上述条件,请往下看!
(用别人的软件可以下载.Hex的单片机,应该能满足条件呀 ?)
3.需要搞明白hex文件的格式,千万要了解hex文件不能原封不动的写到单片机里,要作地址解析!
(这里可能是我学术不精啊,没想到,谢谢你提醒了)
4.在你的单片机程序里写一个函数,这个函数要放到你知道的地址(以便在擦除老程序时不影响这段bootload)
(你说的这个函数应该就是bootloader吧?)
5.在上一条里提到的函数中写串口接收,hex解析,以及iap代码,把串口来的hex写到相应的位置!
(iap:接口应用程序代码??)
6.hex文件应分块接收,再往rom里写!因为你必须先缓冲到ram里,但一般没有那么大的ram,so! (明白啦,(^_^))
7.如有可能让单片机复位,新程序就跑了!不行就让用户下电再上!
8.上位机的按钮就实现启动串口发送的线程的功能就可以了!
哥哥只能告诉你思路了!其余的google吧! (嗯嗯)
-----------------------------------------------------------------------
那还有个问题! 怎么与单片机握手的呢?(~_~) 回复【9楼】studyplacefor
-----------------------------------------------------------------------
妹妹,如下:
1、IAP 意思是在应用编程。
2、你讲的用别人的软件可以下载HEX,说明你的单片机具备ISP功能,如果这样,你需要明确你所用的单片机原厂是否提供这个isp编程的相关文档,比如发什么命令给单片机是擦除,什么命令是下发具体的程序数据。当然还有一个关键的地方是知道,你的单片机如何进入这个ISP模式。
3、最好能把你用的单片机的具体型号发上来。
OK 回复【10楼】ytangy
回复【9楼】studyplacefor
-----------------------------------------------------------------------
妹妹,如下:
1、iap 意思是在应用编程。 (用的语言也是C吗?)
2、你讲的用别人的软件可以下载hex,说明你的单片机具备isp功能,如果这样,你需要明确你所用的单片机原厂是否提供这个isp编程的相关文档,比如发什么命令给单片机是擦除,什么命令是下发具体的程序数据。当然还有一个关键的地方是知道,你的单片机如何进入这个isp模式。
3、最好能把你用的单片机的具体型号发上来。 ( STC12C5408AD\atmega32 )
( 顺便问下:有没有16位的单片机? 有的话,推一款Y)
( 祝哥哥仔,兔飞猛进,兔兔生威 ! (^_^) )
------------------------------------------------------------------------------------------------------
页:
[1]