数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 3706|回复: 18

[C51] 基于STC8A8K64D4的BootLoader程序

[复制链接]
发表于 2022-10-30 23:51:35 | 显示全部楼层 |阅读模式
烧录BootLoader程序
先烧录BootLoader程序到芯片,注意在BootLoader程序中设置芯片主频跟烧录选项一致,这里都选择最高主频45M。
为了实现BootLoader,还需要设置EEPROM空间,建议设置为64K,整个Flash都可以进行IAP操作。
为了能够在APP程序中跳转到BootLoader,需要在APP程序中配置芯片主频和UART波特率跟BootLoader程序一致。











烧录APP
把APP程序拖拽到ISP窗口,或者双击ISP窗口打开APP程序,也可点击打开文件按钮打开APP程序,波特率配置为跟APP程序,BootLoader程序一致,烧录协议选择Konika V2.3。
点击烧录程序按钮进行烧录。
烧录成功后自动运行APP程序。
下次芯片不管是冷启动还是热启动,都会自动跳转到APP程序。



下面附件是BootLoader工程,APP工程,ISP上位机软件。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 2家元 +65 收起 理由
zhczf + 5 優秀文章
家睦 + 60

查看全部打赏

 楼主| 发表于 2022-10-30 23:53:04 | 显示全部楼层
STC8A8K64D4的Flash空间是64K,前4K用来存放BootLoader程序和APP状态标志位,后面60K用来存放APP程序。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-31 00:00:31 | 显示全部楼层

[..\User\app.c][0154]APP1 -> 测试次数:00004
[..\User\app.c][0154]APP1 -> 测试次数:00005
[..\User\app.c][0154]APP1 -> 测试次数:00006
[..\User\app.c][0154]APP1 -> 测试次数:00007
[..\User\app.c][0154]APP1 -> 测试次数:00008
[..\User\app.c][0154]APP1 -> 测试次数:00009
[..\User\app.c][0154]APP1 -> 测试次数:00010
[..\User\app.c][0154]APP1 -> 测试次数:00011
[..\User\app.c][0154]APP1 -> 测试次数:00012
[..\User\app.c][0154]APP1 -> 测试次数:00013
[..\User\app.c][0154]APP1 -> 测试次数:00014
[..\User\app.c][0154]APP1 -> 测试次数:00015
[..\User\app.c][0154]APP1 -> 测试次数:00016
[..\User\app.c][0154]APP1 -> 测试次数:00017
[..\User\app.c][0154]APP1 -> 测试次数:00018
[..\User\app.c][0154]APP1 -> 测试次数:00019
[..\User\app.c][0154]APP1 -> 测试次数:00020
[..\User\app.c][0154]APP1 -> 测试次数:00021
[..\User\app.c][0154]APP1 -> 测试次数:00022
[..\User\app.c][0154]APP1 -> 测试次数:00023
[..\User\app.c][0154]APP1 -> 测试次数:00024
[..\User\app.c][0154]APP1 -> 测试次数:00025
[..\User\app.c][0154]APP1 -> 测试次数:00026
[..\User\app.c][0154]APP1 -> 测试次数:00027
[..\User\app.c][0154]APP1 -> 测试次数:00028
[..\User\app.c][0154]APP1 -> 测试次数:00029
[..\User\app.c][0154]APP1 -> 测试次数:00030
[..\User\app.c][0154]APP1 -> 测试次数:00031
[..\User\app.c][0154]APP1 -> 测试次数:00032
[..\User\app.c][0154]APP1 -> 测试次数:00033
[..\User\app.c][0154]APP1 -> 测试次数:00034
[..\User\app.c][0154]APP1 -> 测试次数:00035
[..\User\app.c][0154]APP1 -> 测试次数:00036
[..\User\app.c][0154]APP1 -> 测试次数:00037
[..\User\app.c][0154]APP1 -> 测试次数:00038
[..\User\app.c][0154]APP1 -> 测试次数:00039
[..\User\app.c][0154]APP1 -> 测试次数:00040
[..\User\app.c][0154]APP1 -> 测试次数:00041
[..\User\app.c][0154]APP1 -> 测试次数:00042
[..\User\app.c][0154]APP1 -> 测试次数:00043
[..\User\app.c][0154]APP1 -> 测试次数:00044
[..\User\app.c][0154]APP1 -> 测试次数:00045
[..\User\app.c][0154]APP1 -> 测试次数:00046
[..\User\app.c][0154]APP1 -> 测试次数:00047
[..\User\app.c][0154]APP1 -> 测试次数:00048
[..\User\app.c][0154]APP1 -> 测试次数:00049
[..\User\app.c][0154]APP1 -> 测试次数:00050
[..\User\app.c][0154]APP1 -> 测试次数:00051
[..\User\app.c][0154]APP1 -> 测试次数:00052
[..\User\app.c][0154]APP1 -> 测试次数:00053
[..\User\app.c][0154]APP1 -> 测试次数:00054
[..\User\app.c][0154]APP1 -> 测试次数:00055
[..\User\app.c][0154]APP1 -> 测试次数:00056
[..\User\app.c][0154]APP1 -> 测试次数:00057
[..\User\app.c][0154]APP1 -> 测试次数:00058
2022/10/30 23:58:12.233 => 文件变化,自动更新。


2022/10/30 23:58:12.249 => STC8_APP_UART1.hex 起始地址:0x00000000
2022/10/30 23:58:12.253 => STC8_APP_UART1.hex 结束地址:0x00001C3A
2022/10/30 23:58:12.258 => STC8_APP_UART1.hex 文件大小:7227(0x00001C3B)


2022/10/30 23:58:12.289 => 正在连接,等待MCU进入BootLoader...
2022/10/30 23:58:12.292 => 正在连接,重试次数 1
2022/10/30 23:58:12.435 => isp_rx_len = 49
2022/10/30 23:58:13.470 => 烧录地址:0x00001000
2022/10/30 23:58:13.525 => 烧录地址:0x00001080
2022/10/30 23:58:13.570 => 烧录地址:0x00001100
2022/10/30 23:58:13.618 => 烧录地址:0x00001180
2022/10/30 23:58:13.662 => 烧录地址:0x00001200
2022/10/30 23:58:13.708 => 烧录地址:0x00001280
2022/10/30 23:58:13.739 => 烧录地址:0x00001300
2022/10/30 23:58:13.771 => 烧录地址:0x00001380
2022/10/30 23:58:13.803 => 烧录地址:0x00001400
2022/10/30 23:58:13.846 => 烧录地址:0x00001480
2022/10/30 23:58:14.565 => 烧录地址:0x00001500
2022/10/30 23:58:14.611 => 烧录地址:0x00001580
2022/10/30 23:58:14.657 => 烧录地址:0x00001600
2022/10/30 23:58:14.767 => 烧录地址:0x00001680
2022/10/30 23:58:14.903 => 烧录地址:0x00001700
2022/10/30 23:58:14.941 => 烧录地址:0x00001780
2022/10/30 23:58:14.972 => 烧录地址:0x00001800
2022/10/30 23:58:15.004 => 烧录地址:0x00001880
2022/10/30 23:58:15.036 => 烧录地址:0x00001900
2022/10/30 23:58:15.069 => 烧录地址:0x00001980
2022/10/30 23:58:15.105 => 烧录地址:0x00001A00
2022/10/30 23:58:15.790 => 烧录地址:0x00001A80
2022/10/30 23:58:15.814 => 烧录地址:0x00001B00
2022/10/30 23:58:15.845 => 烧录地址:0x00001B80
2022/10/30 23:58:15.878 => 烧录地址:0x00001C00
2022/10/30 23:58:15.908 => 烧录地址:0x00001C3B
2022/10/30 23:58:16.052 => 退出BootLoader成功
2022/10/30 23:58:16.056 => ISP更新成功





[..\User\app.c][0081]STC8A8K64D4 APP1
[..\User\app.c][0085]STC8A8K64D4 主频:45000000Hz
[..\User\app.c][0086]STC8A8K64D4 Uart波特率:460800bps
[..\User\app.c][0087]STC8A8K64D4 编译日期:Oct 30 2022
[..\User\app.c][0088]STC8A8K64D4 编译时间:23:19:40



[..\User\app.c][0154]APP1 -> 测试次数:00000
[..\User\app.c][0154]APP1 -> 测试次数:00001
[..\User\app.c][0154]APP1 -> 测试次数:00002
[..\User\app.c][0154]APP1 -> 测试次数:00003
[..\User\app.c][0154]APP1 -> 测试次数:00004
[..\User\app.c][0154]APP1 -> 测试次数:00005
[..\User\app.c][0154]APP1 -> 测试次数:00006
[..\User\app.c][0154]APP1 -> 测试次数:00007
[..\User\app.c][0154]APP1 -> 测试次数:00008
[..\User\app.c][0154]APP1 -> 测试次数:00009
[..\User\app.c][0154]APP1 -> 测试次数:00010
[..\User\app.c][0154]APP1 -> 测试次数:00011
[..\User\app.c][0154]APP1 -> 测试次数:00012
[..\User\app.c][0154]APP1 -> 测试次数:00013
[..\User\app.c][0154]APP1 -> 测试次数:00014
[..\User\app.c][0154]APP1 -> 测试次数:00015
[..\User\app.c][0154]APP1 -> 测试次数:00016
[..\User\app.c][0154]APP1 -> 测试次数:00017
[..\User\app.c][0154]APP1 -> 测试次数:00018
[..\User\app.c][0154]APP1 -> 测试次数:00019
[..\User\app.c][0154]APP1 -> 测试次数:00020
[..\User\app.c][0154]APP1 -> 测试次数:00021
[..\User\app.c][0154]APP1 -> 测试次数:00022
[..\User\app.c][0154]APP1 -> 测试次数:00023
[..\User\app.c][0154]APP1 -> 测试次数:00024
[..\User\app.c][0154]APP1 -> 测试次数:00025
[..\User\app.c][0154]APP1 -> 测试次数:00026
[..\User\app.c][0154]APP1 -> 测试次数:00027
[..\User\app.c][0154]APP1 -> 测试次数:00028
[..\User\app.c][0154]APP1 -> 测试次数:00029
[..\User\app.c][0154]APP1 -> 测试次数:00030
[..\User\app.c][0154]APP1 -> 测试次数:00031
[..\User\app.c][0154]APP1 -> 测试次数:00032
[..\User\app.c][0154]APP1 -> 测试次数:00033
[..\User\app.c][0154]APP1 -> 测试次数:00034
[..\User\app.c][0154]APP1 -> 测试次数:00035
[..\User\app.c][0154]APP1 -> 测试次数:00036
[..\User\app.c][0154]APP1 -> 测试次数:00037
[..\User\app.c][0154]APP1 -> 测试次数:00038
[..\User\app.c][0154]APP1 -> 测试次数:00039
[..\User\app.c][0154]APP1 -> 测试次数:00040
[..\User\app.c][0154]APP1 -> 测试次数:00041
[..\User\app.c][0154]APP1 -> 测试次数:00042
[..\User\app.c][0154]APP1 -> 测试次数:00043
[..\User\app.c][0154]APP1 -> 测试次数:00044
[..\User\app.c][0154]APP1 -> 测试次数:00045
[..\User\app.c][0154]APP1 -> 测试次数:00046
[..\User\app.c][0154]APP1 -> 测试次数:00047
[..\User\app.c][0154]APP1 -> 测试次数:00048
[..\User\app.c][0154]APP1 -> 测试次数:00049
[..\User\app.c][0154]APP1 -> 测试次数:00050
[..\User\app.c][0154]APP1 -> 测试次数:00051
[..\User\app.c][0154]APP1 -> 测试次数:00052
[..\User\app.c][0154]APP1 -> 测试次数:00053
[..\User\app.c][0154]APP1 -> 测试次数:00054
[..\User\app.c][0154]APP1 -> 测试次数:00055
[..\User\app.c][0154]APP1 -> 测试次数:00056
[..\User\app.c][0154]APP1 -> 测试次数:00057
[..\User\app.c][0154]APP1 -> 测试次数:00058
[..\User\app.c][0154]APP1 -> 测试次数:00059
[..\User\app.c][0154]APP1 -> 测试次数:00060
[..\User\app.c][0154]APP1 -> 测试次数:00061
[..\User\app.c][0154]APP1 -> 测试次数:00062
[..\User\app.c][0154]APP1 -> 测试次数:00063
[..\User\app.c][0154]APP1 -> 测试次数:00064
[..\User\app.c][0154]APP1 -> 测试次数:00065
[..\User\app.c][0154]APP1 -> 测试次数:00066
[..\User\app.c][0154]APP1 -> 测试次数:00067
[..\User\app.c][0154]APP1 -> 测试次数:00068
[..\User\app.c][0154]APP1 -> 测试次数:00069
[..\User\app.c][0154]APP1 -> 测试次数:00070
[..\User\app.c][0154]APP1 -> 测试次数:00071
[..\User\app.c][0154]APP1 -> 测试次数:00072
[..\User\app.c][0154]APP1 -> 测试次数:00073
[..\User\app.c][0154]APP1 -> 测试次数:00074
[..\User\app.c][0154]APP1 -> 测试次数:00075
[..\User\app.c][0154]APP1 -> 测试次数:00076
[..\User\app.c][0154]APP1 -> 测试次数:00077
[..\User\app.c][0154]APP1 -> 测试次数:00078
[..\User\app.c][0154]APP1 -> 测试次数:00079
[..\User\app.c][0154]APP1 -> 测试次数:00080
[..\User\app.c][0154]APP1 -> 测试次数:00081
[..\User\app.c][0154]APP1 -> 测试次数:00082
[..\User\app.c][0154]APP1 -> 测试次数:00083
[..\User\app.c][0154]APP1 -> 测试次数:00084
[..\User\app.c][0154]APP1 -> 测试次数:00085
[..\User\app.c][0154]APP1 -> 测试次数:00086
[..\User\app.c][0154]APP1 -> 测试次数:00087
[..\User\app.c][0154]APP1 -> 测试次数:00088
回复 支持 反对

使用道具 举报

发表于 2022-11-1 09:10:53 | 显示全部楼层
值得参考,顶起来
回复 支持 反对

使用道具 举报

发表于 2022-11-1 10:14:48 | 显示全部楼层
51终于也有bootload了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-1 17:56:27 | 显示全部楼层
51一直都可以BootLoader,需要芯片Flash支持IAP操作。
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2022-11-2 13:30:04 | 显示全部楼层
自己给自己写引导码再下载程序,附件有开源范例,可以参考哦!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-3 22:51:36 | 显示全部楼层
疯狂的兔子来了 发表于 2022-11-2 13:30
自己给自己写引导码再下载程序,附件有开源范例,可以参考哦!

这样就不通用了,我写的是可以支持所有支持IAP功能的8051,你这个只支持STC的个别型号。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-3 22:55:06 | 显示全部楼层
疯狂的兔子来了 发表于 2022-11-2 13:30
自己给自己写引导码再下载程序,附件有开源范例,可以参考哦!

话说,STC的仿真,以前真的是巨难用,现在是难上加难了,最近买了一块STC8A8K64D4的核心板,仿真就没成功过一次,以前用IAP15W4K58S4偶尔能成功进入仿真,没烧录几次程序就坏了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-3 23:07:53 | 显示全部楼层
疯狂的兔子来了 发表于 2022-11-2 13:30
自己给自己写引导码再下载程序,附件有开源范例,可以参考哦!

进入仿真就卡死了,也不能退出,只能用任务管理器结束任务。
跟别家的仿真比差太远了,新唐,比亚迪,中微,赛元个个仿真都好用,只设置个芯片型号就行了,就连最差的锦锐,虽然也是串口仿真,但是不会出现点仿真的时候卡死的情况。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-4 00:08:10 | 显示全部楼层
595953427@qq 发表于 2022-11-3 23:07
进入仿真就卡死了,也不能退出,只能用任务管理器结束任务。
跟别家的仿真比差太远了,新唐,比亚迪,中 ...

我知道是怎么回事了,仿真的监控程序要占用XDATA,我的程序里面STARTUP.A51会把XDATA的数据全部清0,就把监控程序给清除掉了,所以就不能仿真了,刚才又试了一下,修改XDATA清0的范围,保留监控程序就可以正常仿真了。仿真还要占用芯片资源,这种方式也太的的奇葩了。
回复 支持 反对

使用道具 举报

发表于 2022-11-4 07:51:27 来自手机浏览器 | 显示全部楼层
595953427@qq 发表于 2022-11-4 00:08
我知道是怎么回事了,仿真的监控程序要占用XDATA,我的程序里面STARTUP.A51会把XDATA的数据全部清0,就把 ...

按照以前的大虾DX516仿真器的介绍,这种仿真其实就是烧录一个仿真监控程序,这个程序需要占用一些资源,据说单步需要擦除、写入一次,所以一来比较慢二来影响芯片寿命。这种仿真还有个特点,就是不能全速状态下下断点。不知道STC用的是不是类似的方法。
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2022-11-4 11:14:25 | 显示全部楼层
595953427@qq 发表于 2022-11-4 00:08
我知道是怎么回事了,仿真的监控程序要占用XDATA,我的程序里面STARTUP.A51会把XDATA的数据全部清0,就把 ...

解决就好,目前STC32G12K128和STC8H8K64U的最新的芯片都是可以直接USB下载和仿真的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-4 12:28:31 | 显示全部楼层
mmxx2015 发表于 2022-11-4 07:51
按照以前的大虾DX516仿真器的介绍,这种仿真其实就是烧录一个仿真监控程序,这个程序需要占用一些资源, ...

监控程序放在RAM,一断电就没了。
别家的芯片为什么就不怕影响芯片寿命?
Flash芯片写入寿命10万+,调个程序能烧录多少次?就算是烧录寿命到了,换不起一个芯片吗?
回复 支持 反对

使用道具 举报

发表于 2022-11-4 12:46:38 来自手机浏览器 | 显示全部楼层
595953427@qq 发表于 2022-11-4 12:28
监控程序放在RAM,一断电就没了。
别家的芯片为什么就不怕影响芯片寿命?
Flash芯片写入寿命10万+,调个 ...

监控程序放在RAM?51单片机能在RAM中执行程序?只是单步运行时需要擦除。
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2022-11-4 13:55:04 | 显示全部楼层
595953427@qq 发表于 2022-11-4 12:28
监控程序放在RAM,一断电就没了。
别家的芯片为什么就不怕影响芯片寿命?
Flash芯片写入寿命10万+,调个 ...

STC的仿真就是用这种方式,STC的芯片能够进行10万次的擦写,调试仿真不会让芯片烧坏的,放心调试。
回复 支持 反对

使用道具 举报

发表于 2024-6-5 08:43:32 | 显示全部楼层
51终于也有bootload了
回复 支持 反对

使用道具 举报

发表于 2024-6-7 13:42:37 | 显示全部楼层
这个功能好用。
回复 支持 反对

使用道具 举报

发表于 2024-6-28 17:08:24 | 显示全部楼层

STC现在最新远程现场升级,大家可以参考下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-21 23:25 , Processed in 0.218401 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表