打印
[STM8]

STM8S编译设置问题

[复制链接]
5727|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
STUSER|  楼主 | 2010-5-17 17:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序很简单,LCD显示,定义了一个常量数组,数组大小为40K(40960字节);

u8 const cArray1[]=……;

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

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

哪位指点一二,TKS。
沙发
IJK| | 2010-5-17 17:21 | 只看该作者
1.编译可以通过,最好在检查链接是否正确,可以看.map文件。

2.可以在main()的第1行设置断点,看是否能停下来

使用特权

评论回复
板凳
STUSER|  楼主 | 2010-5-17 18:34 | 只看该作者
停不下来!

使用特权

评论回复
地板
huhuhu_1| | 2010-5-17 20:13 | 只看该作者
今天我也遇到同样的问题,没有搞定。关注中。

使用特权

评论回复
5
乙天| | 2010-5-17 22:30 | 只看该作者
DEBUG编译选项没有打开吧,STVD默认是不打开的。

这样只能在汇编代码中设断点。

使用特权

评论回复
6
huhuhu_1| | 2010-5-18 12:53 | 只看该作者
main()第一行中断没问题,运行到打开中断时,产出中断,程序指针就乱了,不过乱的很有规律,本来是要跳到0x012344,可实际是到了0x2344,前面的1没了。我用的选项是modsl+crtsi.sm8,并取消-gnc(加上-gnc之后会在link时产生section cross错误)。

使用特权

评论回复
7
STUSER|  楼主 | 2010-5-18 13:53 | 只看该作者
我的选项也是用的modsl+crtsi.sm8;

STVD+COSMIC;

程序>64K;需要什么特殊设置吗?哪位说说啊

使用特权

评论回复
8
IJK| | 2010-5-18 14:03 | 只看该作者
用crtsi.sm8可能不对,改成 crtsxf.s 试试看.

使用特权

评论回复
9
huhuhu_1| | 2010-5-18 14:15 | 只看该作者
crtsxf.s也试了,结果是一样的。另外我认为用crtsi.sm8没有问题,我的.const都是在前32KB,并且只有2KB左右。

使用特权

评论回复
10
huhuhu_1| | 2010-5-18 14:17 | 只看该作者
我看到有不少这方面的帖子,但都没有解决,看来这个问题还是有一定的典型性的,热切希望香版主能关注一下。

使用特权

评论回复
11
香水城| | 2010-5-18 14:40 | 只看该作者

使用特权

评论回复
12
香水城| | 2010-5-18 14:43 | 只看该作者

使用特权

评论回复
13
香水城| | 2010-5-18 15:05 | 只看该作者
我看到有不少这方面的帖子,但都没有解决,看来这个问题还是有一定的典型性的,热切希望香版主能关注一下。
huhuhu_1 发表于 2010-5-18 14:17


确实比较典型,好好儿找找就有,我搜索了一下,很多帖子都有解决方案,这里还有一个:

求助:STM8的 “32K” 门槛如何跨过?

使用特权

评论回复
14
STUSER|  楼主 | 2010-5-18 15:59 | 只看该作者
————————————————————————————————————————
it.h中的 //void _stext(void); /* RESET startup routine */
屏蔽掉,
还要保证所有的const变量在32K范围内,我是强制把const放在16K之类
————————————————————————————————————————

我看到很多帖子都说要把const变量放在32K以内;
我也只是仅仅定义了一个40K大小的常量数组,就出现了这种问题,奇怪了。

使用特权

评论回复
15
huhuhu_1| | 2010-5-18 16:41 | 只看该作者
我的问题搞定了。原因有2个方面:
一、中断函数的定义原来是@near,要改成@far。我是用ST提供的1..0.1版的库开发的项目,现在改成1.1.1版的库,修正的就是这个问题。
二、我用的cosmic的编译器是**版的,可能是没完全搞定。我借了一个正版的用了,一切都正常了。
我也想用正版的,于是拿起电话咨询了代理商,结果是折扣之后还要2W,。。。。买不起。要是5K我会买的。
坛子里那位有不用了的正版,便宜点处理给我。huhuhu_1@163.com

使用特权

评论回复
16
huhuhu_1| | 2010-5-18 16:49 | 只看该作者
————————————————————————————————————————
it.h中的 //void _stext(void); /* RESET startup routine */
屏蔽掉,
还要保证所有的const变量在32K范围内,我是强制把const放在16K之类
————————————————————————————————————————
上面的说法是错误的,会编译通过,但程序是不能正常运行的,因为你屏蔽的是程序的初始化入口。实际测试也如我所说。

使用特权

评论回复
17
STUSER|  楼主 | 2010-5-19 14:58 | 只看该作者
你将你搞定的程序能不能用石皮解版再编译一下试试,看看是否可行?
如果可行,说明是(一)的设置问题;
否则就需要正版了。

使用特权

评论回复
18
火箭球迷| | 2010-5-19 19:35 | 只看该作者
多设几个断点

使用特权

评论回复
19
秋天落叶| | 2010-5-19 21:07 | 只看该作者
烧写进去后,显示是否正常

使用特权

评论回复
20
STUSER|  楼主 | 2010-5-20 11:41 | 只看该作者
问题已经解决,请香版锁贴。
感谢大家关注,特别感谢“huhuhu_1”,参照他的办法解决问题。

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

希望后面的兄弟少走弯路。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

18

帖子

0

粉丝