这是STM8+COSMIC+C编译(yì)器4.3.4破解+支持STVD+支持所有STM8系列下载,是一款用(yòng)于嵌(qiàn)入(rù)式开发的编译(yì)工具,功(gōng)能强大,操作便(biàn)捷,广受好评(píng),是一款很经(jīng)典的编(biān)译工具。感(gǎn)兴趣的朋友欢迎下载体验吧!
STM8+COSMIC+C编(biān)译器4.3.4破(pò)解+支(zhī)持STVD+支持所有STM8系列免费软件,Cosmic 公司(Cosmic Software Inc.)的Cosmic STM8编译器(Cosmic C compiler)及全(quán)套嵌入开发工具支持STM8系列产品的开发。Cosmic产(chǎn)品(pǐn)包括C 交叉(chā)编译(yì)器、汇(huì)编、连接(jiē)器、ANSI库(kù)、
仿(fǎng)真器、硬件调(diào)试器和(hé)易于使用的集(jí)成开发环境(IDEA)。
Cosmic 公司提供(gòng)了16K 和32K 代码大小(xiǎo)限制的全功能的(de)免费软件。
此软件主要是应(yīng)用于STM8的开发(fā)任务。
安装(zhuāng)cxstm8_32k.exe到您的计算机上.
解压CXSTM8_32k_patch.zip, 运行CXSTM8_32k_patch.exe,找到...COSMIC\CXSTM8_32K安装目录。
问题:
当C compiler中的memory models选(xuǎn)择(zé)long stack(modsl0)并且linker中的start-up file选择(zé)crtsi0.sm8的时候(hòu),编译是没有问题的,程序最(zuì)大(dà)长度可以到(dào)32k;但是C compiler中(zhōng)的memory models选择long stack(modsl)并且linker中的start-up file选择(zé)crtsi.sm8的(de)时候(hòu),编译出现问题,如下:
#error clnk Debug\kln.lkf:1 symbol f__stext not defined (Debug\stm8_interrupt_vector.o )
The command: "clnk -l"C:\Program Files\COSMIC\CXSTM8\Lib" -o Debug\kln.sm8 -mDebug\kln.map Debug\kln.lkf " has failed, the returned value is: 1
exit code=1.
个人感觉是找不到f__stext,所以(yǐ)说如果(guǒ)要编译(yì)大于32k的(de)程序的(de)时候还是不行,请楼猪和各(gè)位帮忙解决一下(xià)。
STM8系列的性价比还(hái)是(shì)蛮(mán)高的,可惜是没有免费的(de)编(biān)译(yì)器(qì),我(wǒ)在公司有个硬件狗,据说要1000多dollar,所以阿(ā)……,为了普及(jí),靠大家(jiā)了^_^
解(jiě)决(jué):
你用的是STVD自动生成的stm8_interrupt_vector.c文(wén)件,在使(shǐ)用modsl模式(shì)编译时,你须将extern void _stext(); /* startup routine */ 这句(jù)修改为extern @near void _stext(); /* startup routine */ 需要增加@near 关键字。请修改后再试(shì)。
问题已经解决了,中断文件改为
typedef void @far(*interrupt_handler_t)(void);
struct interrupt_vector
{
unsigned char interrupt_instruction;
interrupt_handler_t interrupt_handler;
};
@near void _stext(); /* startup routine */
大家注意(yì)一下,程序大于32k后(hòu),要把const数据,main还有中断函数等定(dìng)位到32k(地址(zhǐ)64k)以内,不然程序会跑飞,
而且编译链接(jiē)的时候也不会报错,我(wǒ)就被黑了一下。
