分享简单的C8051F020通过串口下载程序的方法
本帖最后由 hdd961140543 于 2012-3-25 20:54 编辑最近在开始学习C8051F单片机,没办法因为导师用的是这款单片机。项目中需要用到远程更新固件的功能,所以在网上找到了C8051F单片机串口下载的bootloader,修改之后就成功的用在了C8051F020这款单片机上。而且这种方式也可以扩展到其它具有IAP(在应用中可编程)功能的单片机上。
这个是我写的bootloader代码,编译软件Keil4.00,为了尽量精简,我将所有代码都放在了一个main.c的文件里。
Keil中工程需要将代码存放位置设置一下,start地址就是boot程序区的起始地址,size大小就是你的boot代码编译后的大小,当然需要预留一些空间。
实际使用了772个字节,而预留了3K
为此我还编写了一个简单的VB上位机的下载程序,基本功能已经可以实现。由于本人主学硬件,VB仅仅是菜鸟级的,所以VB软件还有很多BUG,请大虾就不要拍砖了。
上位机还有几个功能我还没有做到:
1、自动装载hex文件
2、显示下载进度
3、下载计数功能
请有兴趣的大虾帮忙完善一下,分享给大家
我给你顶起 LSZD 发表于 2012-3-25 21:09 static/image/common/back.gif
我给你顶起
谢了!10Byte! 没有用过,来了也顶一贴。 谢谢楼主分享,帮你顶! 这个要顶,学习用一下 相当好的资料,感谢楼主的奉献,原厂给的真的太垃圾了… 这个要顶,好东西呀,呵呵~ 不错的东西~~~ ju748 发表于 2012-3-26 01:15
相当好的资料,感谢楼主的奉献,原厂给的真的太垃圾了…
谢了,我这个其实也很简单,每次下载都会把用户flash全部擦掉 mark mark
牛。用vb做的下载软件 谢谢楼主分享,收藏了! 我也给你顶起 感谢无私奉献,这在某些要求比较特殊的项目中很实用 串口下载器 有没有编译好的程序?我的在电脑上打开出现错误。 XA144F 发表于 2012-5-30 09:50 static/image/common/back.gif
串口下载器 有没有编译好的程序?我的在电脑上打开出现错误。
在 串口下载器\串口下载器\obj\Debug 里面有个应用程序就是了 试验了,显示警告信息:应用程序初始化失败…… XA144F 发表于 2012-5-30 11:14 static/image/common/back.gif
试验了,显示警告信息:应用程序初始化失败……
这个就不清楚了
我把它生成了一个安装包,你试着安装一下,看看,实在不行就这有安装VB2008了
. 问题解决了,安装DotNetFX3,运行没问题,今天回去试试。 hdd961140543 发表于 2012-5-30 13:05 static/image/common/back.gif
这个就不清楚了
我把它生成了一个安装包,你试着安装一下,看看,实在不行就这有安装VB2008了
楼主,我的电脑win7系统,但是点击安装后,再打开程序,始终没有任何显示啊。 anning 发表于 2012-10-19 14:03 static/image/common/back.gif
楼主,我的电脑win7系统,但是点击安装后,再打开程序,始终没有任何显示啊。 ...
我的也是win7 hdd961140543 发表于 2012-10-19 14:40 static/image/common/back.gif
我的也是win7
那看来只能装个VS2008试试了。我电脑本身装的是VS2005。真希望有高手可以把这个上位机再做一做,可惜我本身不懂上位机。 楼主的东西怎么用,能否写个简单的教程传上来 楼主 你这个上位机是使用什么版本的VB写的 我的VB6.0没法识别啊 yklstudent 发表于 2012-11-2 12:53 static/image/common/back.gif
楼主 你这个上位机是使用什么版本的VB写的 我的VB6.0没法识别啊
用的VS2008,VB.net,FrameWork3.5框架。 hdd961140543 发表于 2012-11-2 14:43 static/image/common/back.gif
用的VS2008,VB.net,FrameWork3.5框架。
恩 谢谢了 回去晚上装VS2008试试
楼主,先用仿真器 把你的BootLoader下载到我板子里面,那我要不要改我的程序编译项的设置啊
我用仿真器烧完你的BootLoader,直接拿你的上位机软件,下载不了啊 xyz2008 发表于 2012-11-7 11:37 static/image/common/back.gif
楼主,先用仿真器 把你的BootLoader下载到我板子里面,那我要不要改我的程序编译项的设置啊
我用仿真器烧完 ...
用仿真器下载时需要设置下载的位置,start地址就是boot程序区的起始地址,这里我设置了0xf200就是片内flash总大小-预留空间:64K-4K=60K=0xf000
用我的下载软件下就不需要设置了 是不是我的程序要这样设置下 hdd961140543 发表于 2012-11-7 13:03 static/image/common/back.gif
用仿真器下载时需要设置下载的位置,start地址就是boot程序区的起始地址,这里我设置了0xf200就是片内fla ...
可我设置了,还是不行 hdd961140543 发表于 2012-11-7 13:03 static/image/common/back.gif
用仿真器下载时需要设置下载的位置,start地址就是boot程序区的起始地址,这里我设置了0xf200就是片内fla ...
楼主,能否加一下我的QQ,交流下,谢谢2578915805 还是没有弄好,那位弄好了,说一声 xyz2008 发表于 2012-11-7 14:12 static/image/common/back.gif
还是没有弄好,那位弄好了,说一声
这个没有难度的,了解一下bootloader的原理,自己就可以写一个简单的了 mark了,最近正在用这个片子 先顶,后用 收藏!!!!!!!!!!! 谢谢共享,学习一下~~~~~~~~~~~~~~ 有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。
************** 异常文本 **************
System.ArgumentOutOfRangeException: InvalidArgument=“0”的值对于“SelectedIndex”无效。
参数名: SelectedIndex
在 System.Windows.Forms.ComboBox.set_SelectedIndex(Int32 value)
在 串口下载器.Form1.Form1_Load(Object sender, EventArgs e)
在 System.EventHandler.Invoke(Object sender, EventArgs e)
在 System.Windows.Forms.Form.OnLoad(EventArgs e)
在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
在 System.Windows.Forms.Control.CreateControl()
在 System.Windows.Forms.Control.WmShowWindow(Message& m)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** 已加载的程序集 **************
mscorlib
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.5466 (Win7SP1GDR.050727-5400)
基本代码: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
串口下载器
程序集版本: 1.0.0.0
Win32 版本: 1.0.0.0
基本代码: file:///C:/Users/lukehua/AppData/Local/Apps/2.0/L3ZMN5BV.L9P/MHCAMVMJ.3QT/.app..tion_d240d544c810025f_0001.0000_d7a82bc78811cceb/串口下载器.exe
----------------------------------------
Microsoft.VisualBasic
程序集版本: 8.0.0.0
Win32 版本: 8.0.50727.5420 (Win7SP1.050727-5400)
基本代码: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
基本代码: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.5468 (Win7SP1GDR.050727-5400)
基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.5420 (Win7SP1.050727-5400)
基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.5420 (Win7SP1.050727-5400)
基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.5420 (Win7SP1.050727-5400)
基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Windows.Forms.resources
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.5420 (Win7SP1.050727-5400)
基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_zh-CHS_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
mscorlib.resources
程序集版本: 2.0.0.0
Win32 版本: 2.0.50727.5466 (Win7SP1GDR.050727-5400)
基本代码: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
************** JIT 调试 **************
要启用实时(JIT)调试,
该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置
jitDebugging 值。
编译应用程序时还必须启用
调试。
例如:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
启用 JIT 调试后,任何无法处理的异常
都将被发送到在此计算机上注册的 JIT 调试器,
而不是由此对话框处理。
请教下楼主,这个错误是神马情况? 如果我用串口下载程序的时候覆盖了bootloader的位置就下载不了了吧,那就得常备着仿真器了? lukehua 发表于 2013-3-20 13:34 static/image/common/back.gif
如果我用串口下载程序的时候覆盖了bootloader的位置就下载不了了吧,那就得常备着仿真器了? ...
是的,不过bootloader设置是不能擦除其所占用的flash区的。
仿真器肯定需要了,这个bootloader很简单的,只能作为学习用
你上面的错误我也不知道为什么,上位机.net仅是初学者 lukehua 发表于 2013-3-20 13:34 static/image/common/back.gif
如果我用串口下载程序的时候覆盖了bootloader的位置就下载不了了吧,那就得常备着仿真器了? ...
是的,不过bootloader设置是不能擦除其所占用的flash区的。
仿真器肯定需要了,这个bootloader很简单的,只能作为学习用
你上面的错误我也不知道为什么,上位机.net仅是初学者 我最近在想用这个芯片,但是不知道keil3里面怎么写?请教一下,能否告诉一点点! 顶一个再下 谢谢 下载来看看 顶了!!!!!!!!!!!!!!!!!!!!!! 给力,手里有C8051的单片机~ 很厉害!顶一下! mark……
顶一个… 这个很赞……。 学习下!下来看看。 以后可能有用,收藏了、谢谢! if(flash_checksum != 0)校验和=0,难道上位机发送的时候就已经取反了校验和吗?谢谢 顶起。。。我导师也喜欢用C8051F系列的,一般是120,130,126 mark。。。。。。 校验出错,请重新下载... 孤独飞行 发表于 2014-3-27 14:35
校验出错,请重新下载...
我很久都没接触这个了,源代码都有的,请自己花点时间分析一下。
当时写的代码现在看来有很多不足之处,请仅作为学习参考之用,实际使用请慎重 相当好的资料,感谢楼主的奉献 相当好的资料,感谢楼主的奉献 {:smile:}顶下 我看看,看看 看起来不错,最近也在玩这个 载下来了,,,不错,感谢, mark mark good{:smile:} {:smile:} 很给力.谢楼主 先标记一下,有空的时候仔细学习! 下载器有校验功能吗? 很好的东西,收藏了,谢谢 远程升级程序对程序大小有一定限制是吗?我的程序大小是25kB,这样的话就得预留至少25KB的空间了是吗?原来的app也是占用25KB的空间吗? 好久不用c8051的了,貌似记得一个山寨的usb口jtag也就30¥多点{:tongue:}{:titter:}{:victory:} 好东东就要顶一顶 很好 很强大 markmark 厉害,谢谢分享 {:handshake:} 以后可能有用,收藏了、谢谢! 对于将Bootloader放入高地址上,是怎么跳转的呢? 我看首先保存了0,1,2三个地址的内容,在程序擦除App使用的空间后,再下载程序时候首先 恢复保存的0,1,2三个地址的内容。是不是将D_RUN_ADDRESS 的地址存储在了第3个地址处。网上看了很多例子,主要在于设置Keil ,将target-> BL51 loacation ->code range 设置为boot存储的地址0xF200-0xFDFF,然后 将CODE->设置为?C_C51STARTUP(F200)。不知道我的理解对不对。 对于将Bootloader放入高地址上,是怎么跳转的呢? 我看首先保存了0,1,2三个地址的内容,在程序擦除App使用的空间后,再下载程序时候首先 恢复保存的0,1,2三个地址的内容。是不是将D_RUN_ADDRESS 的地址存储在了第3个地址处。网上看了很多例子,主要在于设置Keil ,将target-> BL51 loacation ->code range 设置为boot存储的地址0xF200-0xFDFF,然后 将CODE->设置为?C_C51STARTUP(F200)。不知道我的理解对不对 这个代码写的真是简洁又高水准,感谢无私奉献 我特么怀疑是不是论坛也搞什么算法了,我10年都不会用C8051F的片子,今天刚搜索,今天就看见了。
页:
[1]