找回密码
 立即注册
楼主: 杨为民

STCIDE + 金水151 + AIapp-ISP:全国产纯绿色的80x51单片机软件开发工具链

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:41:32

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-9-2 14:10:48 | 显示全部楼层
liuzon*** 发表于 2024-9-2 07:34
这个好,避免了Keil公司想起诉的意图了。

金水151编译器虽然目前不足以与C51/C251抗衡,但是笔者认为原子弹有了就好,够一般用就行
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-9-2 14:37:25 | 显示全部楼层
杨*** 发表于 2024-9-2 14:10
金水151编译器虽然目前不足以与C51/C251抗衡,但是笔者认为原子弹有了就好,够一般用就行。 ...

发现金水151编译出来的程序有点大中间一部分是空,且在编译提示里面写使用2个库文件,不知道是什么。

点评

(1)程序占用CODE空间大是目前没有引入任何空间优化措施。 (2)CODE空间中空的0000H~0300H空间是预留给0~94号中断矢量的。 (3)那两个基本库是支持金水明80151指令集的32位的整数和浮点数运算的函数库。 (4)  详情 回复 发表于 2024-9-2 15:03
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:41:32

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-9-2 15:03:04 | 显示全部楼层
so*** 发表于 2024-9-2 14:37
发现金水151编译出来的程序有点大中间一部分是空,且在编译提示里面写使用2个库文件,不知道是什么。 ...

(1)程序占用CODE空间大是目前没有引入任何空间优化措施

(2)CODE空间中空的0000H~0300H空间是预留给0~94号中断矢量的。
(3)那两个基本库是支持金水明80151指令集的32位的整数和浮点数运算的函数库。
(4)由于目前STC单片机的MDU32和TFPU32并没有涵盖一个完整的32位指令集”,因此对于STC单片机目前没有具备的32位指令,只能用“虚拟CPU”的方法来完成
(5)与长缨系列编译器不同,金水151已经支持目前STC全系列的单片机类型,从8051指令集的STC89到STC8H到最新的AI8051U-8BIT,从80251指令集的STC32G/F到AI8051U-32BIT。
因此对于那些没有MDU32和TFPU32加速器单元的STC单片机,那两个基本库仍然是必须的。
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:477
  • 最近打卡:2025-05-01 18:48:32
已绑定手机

6

主题

92

回帖

938

积分

高级会员

积分
938
发表于 2024-9-2 15:33:59 | 显示全部楼层
下来试试一下,STC那么强是该有自己的编译器了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-9-2 15:48:21 来自手机 | 显示全部楼层
杨为民 发表于 2024-9-2 15:03
(1)程序占用CODE空间大是目前没有引入任何空间优化措施。

(2)CODE空间中空的0000H~0300H空间是预留 ...

好的明白了,希望金水151能成为一个能完全替换且超越keil的存在。
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-01 05:25:20

9

主题

102

回帖

2098

积分

金牌会员

积分
2098
发表于 2024-9-2 19:19:31 | 显示全部楼层
杨*** 发表于 2024-9-2 14:04
(1)STCIDE+金水151编译器是试用阶段,感谢你分享你的使用体验和提出的问题。

(2)由于你的这个问题既 ...

杨老师,谢谢解答。您开发的这个编译器已经很好了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:41:32

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-9-3 09:00:33 | 显示全部楼层
li*** 发表于 2024-9-1 20:30
谢谢指导,可以编译C文件了。但编译汇编文件不成功。7个错误,但没有提示在什么地方。 ...

(1)再次感谢你分享你的使用经验,让我找到了金水151编译器的一个BUG
(2)我根据你给出的程序截图重建了一个Keil的项目:
Fig_01_项目.jpg
(3)我用STCIDE打开这个项目:
Fig_02_打开项目.jpg
然后进行编译,结果果然是有7个错误:
Fig_03_7个错误.jpg
4)这让我看到了金水151编译器V2.2版的一个重要BUG:对汇编语言进行编译时具体的每个出错信息没有显示到STCIDE的“输出信息框”中。这个BUG会在以后得版本中解决。

(5)不过为了支持第三方IDE用“MakeFile”的方法使用金水151编译器,编译后所有的编译信息(包括汇编语言出错信息)都会存放在一个与项目工程名称相同的MSG文件中:
Fig_04_MSG文件.jpg
(6)MSG文件是一个文本文件,可以用写字板等程序打开查看。对上面程序编译后的MSG文件的内容如下:
Fig_05_BIT错误.jpg
这些错误主要由于红绿灯的BIT定义错误引起的,即第4行和第5行中BIT定义的基地址P0没有定义引起的。

(7)如果加上P0端口定义和支线红灯定义(第1、2行程序),编译就可以通过了,下面是完整的程序:
Fig_06_正确程序.jpg
(8)对编译结果HEX文件进行反汇编得到以下结果:
Fig_07_反汇编.jpg
从中可以看出这个编译结果是正确的。
9重要说明:在上面程序中,对于没有定义的500ms延时函数“DELAY”,函数地址被编译为0000H,并且没有进行出错检测。用户得自己注意
(10)笔者在设计金水151时采用这个Keil的C51规范的考虑是为了“避免无用代码扩散”,直接忽略没有定义的函数
比如A模块(一个源程序文件)调用了B模块的一个函数FN1,那么就需要加载模块B。但是如果模块B中还有其他在本项目中没有用到的函数FN2,在FN2中调用了模块C中的函数,这时编译器就需要一个策略来决定要不要加载模块C

由于本项目没有用到函数FN2,自然也不会用到模块C的任何内容。这时如果加载模块C,就会造成空间浪费,甚至造成连锁反应,还需要加载项目中并没有使用的模块D、模块E等等,这个现象称“无用代码扩散”。如果终止可能的连锁反应,不加载模块C,那么函数FN2就没有完整实现,因为其中访问了不存在的函数,就像上面例子的延时函数DELAY

回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:338
  • 最近打卡:2025-04-25 16:31:21
已绑定手机

14

主题

600

回帖

2199

积分

荣誉版主

积分
2199
发表于 2024-9-3 11:33:08 | 显示全部楼层
真心希望我们自己的编译器越来越健壮.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:363
  • 最近打卡:2025-04-30 00:05:02

6

主题

319

回帖

2200

积分

金牌会员

积分
2200
发表于 2024-9-3 12:30:39 | 显示全部楼层
必须支持
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:181
  • 最近打卡:2025-04-03 11:26:38

4

主题

138

回帖

631

积分

高级会员

积分
631
发表于 2024-9-3 14:16:09 | 显示全部楼层
杨老师是STCAI官方的吗?

点评

(1)长缨系列编译器、金水系列编译器和早期的小鹰系列编译器在长达十年的研制过程中得到了姚总和STC公司员工的全力支持和配合,提供了各种硬件和软件设备,包括在早期就提供了STC32位单片机的FPGA原型开发板和STCID  详情 回复 发表于 2024-9-3 15:12
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 19:39 , Processed in 0.310054 second(s), 124 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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