STM8S编译设置问题

jimfoss   2010-5-17 17:14 楼主
程序很简单,LCD显示,定义了一个常量数组,数组大小为40K(40960字节);

u8 const cArray1[]=……;

芯片STM8S207SB,程序>32K,选择了modsl,编译可以通过,但是仿真时看不到显示,像是跑飞了;数组改小后可以正常显示。

找了下关于>32K编译的贴子,也没试出来。

哪位指点一二,TKS。

回复评论 (19)

1.编译可以通过,最好在检查链接是否正确,可以看.map文件。

2.可以在main()的第1行设置断点,看是否能停下来
点赞  2010-5-17 17:21
                                 停不下来!
点赞  2010-5-17 18:34
                                 今天我也遇到同样的问题,没有搞定。关注中。
点赞  2010-5-17 20:13
DEBUG编译选项没有打开吧,STVD默认是不打开的。

这样只能在汇编代码中设断点。
点赞  2010-5-17 22:30
                                 main()第一行中断没问题,运行到打开中断时,产出中断,程序指针就乱了,不过乱的很有规律,本来是要跳到0x012344,可实际是到了0x2344,前面的1没了。我用的选项是modsl+crtsi.sm8,并取消-gnc(加上-gnc之后会在link时产生section cross错误)。
点赞  2010-5-18 12:53
我的选项也是用的modsl+crtsi.sm8;

STVD+COSMIC;

程序>64K;需要什么特殊设置吗?哪位说说啊
点赞  2010-5-18 13:53
                                 用crtsi.sm8可能不对,改成 crtsxf.s 试试看.
点赞  2010-5-18 14:03
                                 crtsxf.s也试了,结果是一样的。另外我认为用crtsi.sm8没有问题,我的.const都是在前32KB,并且只有2KB左右。
点赞  2010-5-18 14:15
                                 我看到有不少这方面的帖子,但都没有解决,看来这个问题还是有一定的典型性的,热切希望版主主能关注一下。
点赞  2010-5-18 14:17
我看到有不少这方面的帖子,但都没有解决,看来这个问题还是有一定的典型性的,热切希望版主主能关注一下。
确实比较典型,好好儿找找就有,我搜索了一下,很多帖子都有解决方案,这里还有一个:

求助:STM8的 “32K” 门槛如何跨过?
点赞  2010-5-18 15:05
————————————————————————————————————————
it.h中的 //void _stext(void); /* RESET startup routine */
屏蔽掉,
还要保证所有的const变量在32K范围内,我是强制把const放在16K之类
————————————————————————————————————————

我看到很多帖子都说要把const变量放在32K以内;
我也只是仅仅定义了一个40K大小的常量数组,就出现了这种问题,奇怪了。
点赞  2010-5-18 15:59
我的问题搞定了。原因有2个方面:
一、中断函数的定义原来是@near,要改成@far。我是用ST提供的1..0.1版的库开发的项目,现在改成1.1.1版的库,修正的就是这个问题。
二、我用的cosmic的编译器是破解版的,可能是没完全搞定。我借了一个正版的用了,一切都正常了。
我也想用正版的,于是拿起电话咨询了代理商,结果是折扣之后还要2W,。。。。买不起。要是5K我会买的。
坛子里那位有不用了的正版,便宜点处理给我。huhuhu_1@163.com
点赞  2010-5-18 16:41
————————————————————————————————————————
it.h中的 //void _stext(void); /* RESET startup routine */
屏蔽掉,
还要保证所有的const变量在32K范围内,我是强制把const放在16K之类
————————————————————————————————————————
上面的说法是错误的,会编译通过,但程序是不能正常运行的,因为你屏蔽的是程序的初始化入口。实际测试也如我所说。
点赞  2010-5-18 16:49
你将你搞定的程序能不能用石皮解版再编译一下试试,看看是否可行?
如果可行,说明是(一)的设置问题;
否则就需要正版了。
点赞  2010-5-19 14:58
                                 多设几个断点
点赞  2010-5-19 19:35
                                 烧写进去后,显示是否正常
点赞  2010-5-19 21:07
问题已经解决,请版主锁贴。
感谢大家关注,特别感谢“huhuhu_1”,参照他的办法解决问题。

我做了以下改正:
1:更新了STM8的库为1.1.1(之前使用的是1.0的库)。
2:更换了其它版本的编译器COSMIC(之前使用的是PJ版,现在换了个另外的PJ…同时倡议:在经济允许的情况下,请支持正版)。
3:配置:modsl+crtsxf.sm8(可以参考《CXSTM8_UsersGuide》等)。

希望后面的兄弟少走弯路。
点赞  2010-5-20 11:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复