编写远程升级用户app遇到代码不规范问题。
我用的是STC8A8K64D4单片机。编写程序前也参考了论坛上的例子。用参考例程改变单片机类型后,设置都按照 <<使用 STC 的 IAP 系列单片机开发自己的 ISP 程序――基于 STC8H8K64U>>说明的方法进行设置编译,然后用 用户ISP下载程序(串口版)打开,遇到代码不规范。后来把原文件的所有编译文件都删除了,新建工程,再编译,再试,代码规范了。然后同样的办法用的我自己的用户程序,却总是代码不规范。我的程序编译后显示30K。除了文件大一些,好像也没有其他的不同了。是不是除了说明文件之外,还有其他地方需要设置需要注意的吗?比较了例子的HEX文件和自己的用户文件hex。如上图,昨天的是例子的hex文件,右边的是自己生成的hex文件数据。 自己的用户hex和调整前有些不同,没有调整前从0000h字节开始用户程序,调整后的hex开始的数据好像没有完全调整过来,只调整了一部分。这是什么原因? 对比官网例子逐页检查工程配置:
页面中的设置项我都按照原图设置过了,得到的代码还是不规范。肯定还有其他方面的原因。也怀疑过目录中不能有汉字,试过了,不是这个原因。有没有汉字不影响代码是否规范。 ningsane 发表于 2026-1-20 08:06
页面中的设置项我都按照原图设置过了,得到的代码还是不规范。肯定还有其他方面的原因。也怀疑过目录中不能 ...
打包上传两个工程看看
找到原因了。自己的工程目录里边添加了isr.asm这个文件。这个文件开头也设置了偏移,LDR_SIZE EQU 1000H ,把这个文件移除工程文件再编译就可以了。或许这个文件和C51页面的设置重复?理解不深。反正把这个isr.asm这个文件去掉就可以了。非常感谢。 我的工程,也出现一样问题,但是要用到这两个中断,不能移走,应该怎么改呀。
EXTRN DATA (isr_index)
LDR_SIZE EQU 1000H
CSEG AT 011BH ;35号 触摸按键 中断入口
MOV isr_index, #35 ;标记中断号35
LJMP 006BH ;跳转到中断号13的向量
CSEG AT 0123H ;36号 RTC 中断入口
MOV isr_index, #36 ;标记中断号36
LJMP 006BH ;跳转到中断号13的向量
END
还有一个问题,如果下载时我要用12M,不是默认的24M,应该怎么改? 楼主搞定了没,最近也在写bootloader BOOT程序中不能用任何中断,只能用查询的方式。这个远程升级的关键是重建中断向量表。要把中断向量表给用户程序使用,boot程序只能用查询法,不能使用任何中断。 程序下载用多少M没有关系,多少都可以。视频网络设备和远程设备正常通讯。烧写的速率是根据现场的设备工作频率匹配的。
页:
[1]