"); //-->
一直用C8051F340,但一直没有找到一个好用的Bootloader,有一个也是用串口方式的。用这个片子,主要是就用他的USB,所以就想自己写一个。花了一个星期的时间,总算有一个可以差不多的样子。在一个设备中使用未发现问题。拿出来给大家一起分享。
本Bootloader主要是对C8051F340使用的,理论上C8051F320也可以使用,但需要修改内部的倍频参数部门,而且320的Flash空间太小,用了Bootloader就更少了。
本Bootloader点Flash空间的前两页,0000H-0FFFH部分。单片机复位后先执行Bootloader程序,Bootloader判断是否可以执行用户程序,如果可以再跳到用户程序执行。用户程序也可以通过如下指令再跳回到Bootloader程序。
调用Bootloader入口函数
pFunction Jump_To_Bootloader;
Jump_To_Bootloader = 0x0006;
Jump_To_Bootloader();
Bootloader 主要完成中断向量跳转,功能相当于把除复位中断以外所有的中断地址映射到1000H开始的Flash空间。
USB的通讯功能。只能用查询方式,不能用中断方式。因为用了中断方式以后用户程序就无法使用了。
命令的处理。看电脑上的更新程序想做什么,做了写,擦,校验,读Bootloader版本功能,读功能不能有的,有了用户代码就不安全了。
Flash读写功能。
其实Bootloader就是这些功能的组合了。
关于用户程序的修改方式大家看附件中的说明文件吧。
下一步计划把加密算法加进去,打算用DES加密。这样就可以在保证单片机的目标程序安全的情况下提供程序升级服务了。
思路 新版单片机程序 -------->通过DES加密----------> 升级软件---------> USB--------> 单片机Bootloader -------> 解密--------> 写入FLASH。
对解密后的程序中加入校验,这样Bootloader就可以知道新和程序是否正常,只有当程序正确后才去执行用户程序。
这样只要可以防止用户写入一个伪装的程序读出Bootloader和密码。
这里只提供可执行程序给大家测试,需要原代码的请联系我或到pudn下载。
上位机代码:http://www.pudn.com/downloads209/sourcecode/windows/comm/detail982190.html
单片机代码:http://www.pudn.com/downloads209/sourcecode/embed/detail982187.html
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。