怎幺下载的三付牌升级只有变成二付牌

后使用快捷导航没有帐号?
扫一扫,访问微社区
只需一步,快速开始
查看: 21348|回复: 35
iar编译没有问题,但是烧录时不成功
主题帖子精华
高级会员, 积分 984, 距离下一级还需 16 积分
高级会员, 积分 984, 距离下一级还需 16 积分
在线时间101 小时
毕业学校烟台大学
Fri Apr 05, :58: Missing or malformed flash loader specification file: D:\iar\arm\config\flashloader\Freescale\FlashK60Xxxx.board
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子精华
金牌会员, 积分 2034, 距离下一级还需 966 积分
金牌会员, 积分 2034, 距离下一级还需 966 积分
在线时间157 小时
看看龙邱的这张图
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子精华
高级会员, 积分 984, 距离下一级还需 16 积分
高级会员, 积分 984, 距离下一级还需 16 积分
在线时间101 小时
毕业学校烟台大学
这是什么原因呢?队友的就没有问题啊!
主题帖子精华
高级会员, 积分 984, 距离下一级还需 16 积分
高级会员, 积分 984, 距离下一级还需 16 积分
在线时间101 小时
毕业学校烟台大学
没有人知道么 = =
主题帖子精华
高级会员, 积分 984, 距离下一级还需 16 积分
高级会员, 积分 984, 距离下一级还需 16 积分
在线时间101 小时
毕业学校烟台大学
主题帖子精华
注册会员, 积分 45, 距离下一级还需 155 积分
注册会员, 积分 45, 距离下一级还需 155 积分
在线时间1 小时
毕业学校bj
请问你是怎么解决了?我也遇到了这个问题。
主题帖子精华
金牌会员, 积分 1199, 距离下一级还需 1801 积分
金牌会员, 积分 1199, 距离下一级还需 1801 积分
在线时间107 小时
我经常会在BDM没接好的时候会出现下载失败的情况,下载失败后再点下载的话就会出现这样的对话框,我在重启软件后就能正常使用了
主题帖子精华
注册会员, 积分 45, 距离下一级还需 155 积分
注册会员, 积分 45, 距离下一级还需 155 积分
在线时间1 小时
毕业学校bj
redwolfxd 发表于
我经常会在BDM没接好的时候会出现下载失败的情况,下载失败后再点下载的话就会出现这样的对话框,我在重启软 ...
我将jlink接通后,单机下载就会出现这个问题,下载不进去,很是郁闷
主题帖子精华
注册会员, 积分 173, 距离下一级还需 27 积分
注册会员, 积分 173, 距离下一级还需 27 积分
在线时间19 小时
redwolfxd 发表于
我经常会在BDM没接好的时候会出现下载失败的情况,下载失败后再点下载的话就会出现这样的对话框,我在重启软 ...
我使用IAR6.5打开IAR6.3的工程,下载的时候出现和楼主一样的问题,怎么解决啊?用的是OSBDM
主题帖子精华
注册会员, 积分 28, 距离下一级还需 172 积分
注册会员, 积分 28, 距离下一级还需 172 积分
在线时间1 小时
这个问题大家解决了么?求指点
主题帖子精华
注册会员, 积分 45, 距离下一级还需 155 积分
注册会员, 积分 45, 距离下一级还需 155 积分
在线时间1 小时
毕业学校bj
问题解决了,是我的option一个选项设置错了。大家仔细检查看看自己的option设置是否正确
站长推荐 /3
4位技术大咖,全天干货培训,一系列解决方案的课堂演示,呈现技术实验室中各式各样的演示和产品,带来干货满满的经验分享。直播过程中还有多重好礼相送,赶紧报名吧!
纠结基础知识不扎实?小车制作遇到问题?看看大牛怎么说。资深工程师17年研发经验分享;大咖解读电磁兼容你不得不知的知识点;NXP社区imx版主带你聊聊嵌入式的那些事儿;测试设备中的暗雷怎么扫除……
智能车制作四轮类
智能车制作直立类
智能车制作追逐类
智能车制作电磁节能组
智能车制作双车对抗组
智能车制作四旋翼组
Powered by21ic官方微信-->
后使用快捷导航没有帐号?
查看: 4036|回复: 15
哭死哦,遇到如此变态的iar for stm8的bug
&&已结帖(0)
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
主题帖子积分
专家等级:结帖率:94%
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
本帖最后由 donkey89 于
11:53 编辑
过程很简单,功能就是把十六进制数缩小1万倍,变成十进制的字符串,例如数值15030,转换过来就是&15.030&.但是居然能影响到另外一个毫不相干的函数的运行结果,我在过程的各个地方都加了限定条件,不会出现越界访问的情况
重点看第48行
str[j++]=(char)(val/m)+'0';
把这个注释掉或者把J++变成立即数都不会再出现问题了.例如
str[5]=(char)(val/m)+'0';
代码没法跟踪,到那一段自动非法错误退出
//******************
//功能:调用hex2str并显示到lcd上
//*******************
void lcd_printf_int(uint16_t n)
{
&&char str[9];//这个数组足够大了,实际仅仅用到7个字节而已
//&&
//&&i=sprintf(str,&%d&,n);
//&&if(i&8) str[8]='\0';
&&hex2str(n,str);
&&lcd_puts(str);
}
//***********************
//功能:数值转换成字符串的函数
//参数n:要转换的数
//参数str:转换结果存储的地方
//************************
void hex2str(uint16_t n,char *str)
{
&&uint16_t val,m;
&&char i,j;
&&
&&m=10000;
&&val=n;
&&j=0;
&&for(i=0;i&2;i++)
&&{
& & if(val&=m)
& & {
& && &str[j++]=(char)(val/m)+'0';
& && &val%=m;
& & }
& & else if(val&n)
& && &str[j++]='0';
& & m/=10;
&&}
&&if(j==0)
& && &str[j++]='0';
&&str[j++]='.';
//*************以上处理的是大于1的部分**************
&&
&&for(;i&5;i++)
&&{
& & if(val&=m)
& & {
& && &if(j&6)
& && &&&str[j++]=(char)(val/m)+'0';//这里,如果把J++换成&5的立即数,就不会影响另外一个完全不相关的函数
& && &val%=m;
& & }
& & else if(j&6)
& && &str[j++]='0';& &
& & m/=10;
&&}
//*************小数点部分*************
&&
&&str[6]='\0';
}
复制代码
, , , , , , ,
数显ESR电容等效内阻测量仪
主题帖子积分
初级技术员, 积分 73, 距离下一级还需 27 积分
初级技术员, 积分 73, 距离下一级还需 27 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级技术员, 积分 73, 距离下一级还需 27 积分
初级技术员, 积分 73, 距离下一级还需 27 积分
这样类似的问题在IAR STM8 中经常见到,估计还是不成熟。我都见惯不怪了
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
高级技术员, 积分 528, 距离下一级还需 472 积分
高级技术员, 积分 528, 距离下一级还需 472 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
高级技术员, 积分 528, 距离下一级还需 472 积分
高级技术员, 积分 528, 距离下一级还需 472 积分
堆栈是否足够?
你的影响到额外不相关函数是什么函数?
入门玩单片机C++
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
主题帖子积分
专家等级:结帖率:94%
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
本帖最后由 donkey89 于
11:46 编辑
2楼,你遇到这种情况怎么绕开?
heap的大小为256字节,堆栈为256字节,怎么会不够?
我重新设置了更大的heap和stack,依然不行
数显ESR电容等效内阻测量仪
主题帖子积分
初级技术员, 积分 73, 距离下一级还需 27 积分
初级技术员, 积分 73, 距离下一级还需 27 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级技术员, 积分 73, 距离下一级还需 27 积分
初级技术员, 积分 73, 距离下一级还需 27 积分
堆栈绝对没问题!
解决办法就是调整代码重新编译。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:30%打赏:0.00受赏:11.00
主题帖子积分
会不会有代码重入的问题?
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
高级工程师, 积分 7028, 距离下一级还需 972 积分
高级工程师, 积分 7028, 距离下一级还需 972 积分
主题帖子积分
专家等级:结帖率:16%
主题帖子积分
高级工程师, 积分 7028, 距离下一级还需 972 积分
高级工程师, 积分 7028, 距离下一级还需 972 积分
淘宝:Http://y-
微博:/stmicroelectronic
STM8/STM32全系列QQ: MB:
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
主题帖子积分
专家等级:结帖率:94%
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
妹哦,代码就在一楼,你看看有没有可以重入的地方?希望你能找出来,这样帮了我一个大忙了.还可以让大家引以为戒
数显ESR电容等效内阻测量仪
主题帖子积分
高级技术员, 积分 528, 距离下一级还需 472 积分
高级技术员, 积分 528, 距离下一级还需 472 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
高级技术员, 积分 528, 距离下一级还需 472 积分
高级技术员, 积分 528, 距离下一级还需 472 积分
你的影响到额外不相关函数是什么函数?
入门玩单片机C++
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
主题帖子积分
专家等级:结帖率:94%
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
本帖最后由 donkey89 于
20:34 编辑
运算函数,根据AD值,然后经过特殊算法得到一个值
字符串转换函数我跟踪进去就崩溃.看反汇编没有ret,不知道跳到哪去了.屏蔽掉代码重新编译可以看到ret指令.
整个转换函数我在其他编译器上测试通过了,才拷贝过来用的.
数显ESR电容等效内阻测量仪
主题帖子积分
助理工程师, 积分 1731, 距离下一级还需 269 积分
助理工程师, 积分 1731, 距离下一级还需 269 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1731, 距离下一级还需 269 积分
助理工程师, 积分 1731, 距离下一级还需 269 积分
算术越界了........?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
高级工程师, 积分 7154, 距离下一级还需 846 积分
高级工程师, 积分 7154, 距离下一级还需 846 积分
主题帖子积分
专家等级:结帖率:95%
主题帖子积分
高级工程师, 积分 7154, 距离下一级还需 846 积分
高级工程师, 积分 7154, 距离下一级还需 846 积分
经过详细核对,发现
1: 运算过程稍微复杂。
2: 运算输出结果完全正确,包括各种数据输入情况下。
3: 无除以0等操作的可能。
4: 数组无溢出可能。堆栈使用固定,不可能到最后面的时候采出错。
烦请楼主贴list文件,看汇编怎么回事。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:30%打赏:0.00受赏:11.00
主题帖子积分
妹哦,代码就在一楼,你看看有没有可以重入的地方?希望你能找出来,这样帮了我一个大忙了.还可以让大家引以为戒
donkey89 发表于
比如讲,这个运算就不是可重入的:(val/m)
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
主题帖子积分
专家等级:结帖率:59%
主题帖子积分
搞不懂LZ这么写有什么优点。
1、首先LZ弄错了,‘例如数值15030,转换过来就是&15.030&.’,这是缩小1000倍。
2、看LZ好像是送LCD显示,如果是俺,宁可这样写:
d1=val/10000;
d2=(val%1;
d4=(val%100)/10;
d5=val%10;
多简单明了,如果想转换成字符串,上面的d1~d5转换一下非常容易。
一:我的回帖多数只是猜测/估计/想象,建立在我现有知识结构的理解和分析上,多数都没有动手实际检验过,请斟酌采纳.
二:若对我的技术类主帖或回帖有异议,欢迎讨论,拒绝过激攻击或辱骂,否则全站追杀屏蔽发帖,后果自负.
三:对本人的其它意见,请直接向站长投诉,勿使用站内短信骚扰/挑衅/辱骂,否则将全站追杀屏蔽发帖,后果自负.
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
主题帖子积分
专家等级:结帖率:94%
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
您的代码很直观,我这么写是为了省空间而已,空间不够用了.我试试你的写法看看能不能省空间.
其实我对C嵌入汇编不熟,否则直接用汇编了.
数显ESR电容等效内阻测量仪
主题帖子积分
资深工程师, 积分 11413, 距离下一级还需 8587 积分
资深工程师, 积分 11413, 距离下一级还需 8587 积分
主题帖子积分
专家等级:结帖率:93%
主题帖子积分
资深工程师, 积分 11413, 距离下一级还需 8587 积分
资深工程师, 积分 11413, 距离下一级还需 8587 积分
& && &&&str[j++]=(char)(val/m)+'0';//这里,如果把J++换成&5的立即数,就不会影响另外一个完全不相关的函数
肯定是0除了。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
无冕之王奖章
等级类勋章
沉静之湖泊
发帖类勋章
时间类勋章
技术新星奖章
人才类勋章
技术高手奖章
人才类勋章
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
奔腾之江水
发帖类勋章
时间类勋章
社区建设奖章
等级类勋章
欢快之小溪
发帖类勋章
技术奇才奖章
人才类勋章
时间类勋章
技术导师奖章
人才类勋章
时间类勋章
终身成就奖章
等级类勋章21ic官方微信-->
后使用快捷导航没有帐号?
查看: 1587|回复: 6
IAR FOR STM8编译错误的解决办法?
&&未结帖(20)
主题帖子积分
实习生, 积分 27, 距离下一级还需 23 积分
实习生, 积分 27, 距离下一级还需 23 积分
主题帖子积分
专家等级:结帖率:33%
主题帖子积分
实习生, 积分 27, 距离下一级还需 23 积分
实习生, 积分 27, 距离下一级还需 23 积分
编译的时候出现Fatal Error[Pe035]: #error directive: &Please select first the target STM8S/A device used in your application (in stm8s.h file)&
要在stm8s.h的什么地方定义#define STM8S003F3?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
Option -& c/c++ compiler -& Preprocessor -& defined symbols
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 27, 距离下一级还需 23 积分
实习生, 积分 27, 距离下一级还需 23 积分
主题帖子积分
专家等级:结帖率:33%
主题帖子积分
实习生, 积分 27, 距离下一级还需 23 积分
实习生, 积分 27, 距离下一级还需 23 积分
还是错的 难道不是这个引发的问题吗?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 27, 距离下一级还需 23 积分
实习生, 积分 27, 距离下一级还需 23 积分
主题帖子积分
专家等级:结帖率:33%
主题帖子积分
实习生, 积分 27, 距离下一级还需 23 积分
实习生, 积分 27, 距离下一级还需 23 积分
Option -& c/c++ compiler -& Preprocessor -& defined symbols
这么定义过之后也还是出现这个错误,难道不是这个原因?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 6, 距离下一级还需 44 积分
实习生, 积分 6, 距离下一级还需 44 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 6, 距离下一级还需 44 积分
实习生, 积分 6, 距离下一级还需 44 积分
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
助理工程师, 积分 1347, 距离下一级还需 653 积分
助理工程师, 积分 1347, 距离下一级还需 653 积分
主题帖子积分
专家等级:结帖率:14%打赏:0.00受赏:30.00
主题帖子积分
助理工程师, 积分 1347, 距离下一级还需 653 积分
助理工程师, 积分 1347, 距离下一级还需 653 积分
一、IAR中的重复定义问题
在自己写头文件时,要记得将常量定义在.c文件中,如果将常量定义在.h文件中,当在main.c或者其他地方包含该头文件时,会将头文件中的常量定义包含到main.c中,同时,相应的.c文件也有该常量定义语句,就会导致linker报错,有xxxx重定义(redefined)。此外,当要在main.c中使用其他.c文件中定义的量时,要记得+ extern+ &类型&+&+变量名&。
标准的做法:在.h文件中声明变量,在一个.c文件中定义变量,其它.c文件要用到变量只要包含.h头文件,相当于变量声明,就可以引用其它.c文件中定义的变量了。一般只在头文件中声明变量,在原文件中定义变量,即使你在头文件中使用了预编译指令 #ifndef.... #define ... #endif,也不能在头文件中定义变量。不能定义,必须声明。
二、程序溢出问题(Error[Lp011]问题)
Error[Lp011]: section placement failed: unable to allocate space for sections/blocks with a total estimated minimum size of 0x2ba9 bytes in &[0xx009fff]&
原因:将library改为由full改为normal,一下子空间减少很多,还有printf和scanf的格式都由full改为small,不过这里不能用printf了。
(total uncommitted space 0x1f80).
11 971 bytes of readonly code memory
915 bytes of readonly data memory
726 bytes of readwrite data memory
CPU:STM8S103F3P,它有8K FLASH[0xx009fff],有1K RAM,实际提示的FLASH大小为92
[0xx009fff]=f80=8064
0x, 0x1f80=+915=12886
8s207就没有问题,换成103问题就溢出。
三、 Error[Pe169]: expected a declaration
答:多了}右大括号。
四、PL2303上电后鼠标乱动的解决办法:
1,重新上电,因为我们开发板带了一键下载电路,所以第一次上电,会引起几次(3~6次)MCU复位,很正常. 你不要每次都按电源键来实现复位,就不存在这个问题了.
2,因为你的例程,一上电,就通过串口输出数据了,而此时CH340还在和电脑通信,CH340在和电脑USB连接建立的时候,收到数据,就可能导致你的串口不被识别为串口,而被识别为什么ball之类的设备,从而鼠标乱飞.
上电之前,先按住MCU的复位,然后再上电.等10秒钟左右,再释放复位.就一切OK了.
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
初级工程师, 积分 2111, 距离下一级还需 889 积分
初级工程师, 积分 2111, 距离下一级还需 889 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
初级工程师, 积分 2111, 距离下一级还需 889 积分
初级工程师, 积分 2111, 距离下一级还需 889 积分
是不是芯片没有选啊
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
涓涓之细流
发帖类勋章
时间类勋章
技术高手奖章
人才类勋章查看: 2702|回复: 21
IAR for STM8 编译选项 Target 里 code small 什么意思
如题,IAR for STM8 编译选项 Target 里
code 有Small, Medium, Large
Data 也有Small, Medium, Large
这几个选项,不同选择会影响编译出来代码的大小,但是一直不明白这几个选项的意义,百度没搜出来,有没有人知道的?
一直也没修改过这一块,也想知道是什么意思,帮顶一下!
寻址代码空间大小问题,相当于51的短跳转和长跳转
试过把small改为large,占用代码空间会增多。
寻址代码空间大小问题,相当于51的短跳转和长跳转
试过把small改为large,占用代码空间会增多。 ...
如果程序写得很大了,是不是一定要选Medium或large,比如程序在small下编译出来有20K了,仍然选small是不是程序会不正常?我现在程序有点不正常,感觉可能是这个导致的。
大了建议选medium或者large,有20k选medium好像就够的
大了建议选medium或者large,有20k选medium好像就够的
谢谢你的回复,我是想明确,这个选项是不是在代码大到一个数值时“必须选“ , 你的回复不明确。
虽然现在做的测试,将代码减小一些工作正常了,但没有可靠的证据显示是code选项没选正确导致的
这和程序的大小没啥关系吧!看你硬件有没有扩展ram和rom,编译器根据这个来做优化方案。
没用过IAR,感觉可能是堆栈模式的不同
选项的意义 在编译器的手册中肯定有说明的&&你找找。
看编译器自带的文档,里面应该有说明
做过实验,把一个正常的工程,禁止优化再编译一边,代码数据量明显大许多,如果CODE不修改,超出32K就通不过,改大一级就通过。
我认为这是一个粗框架,与程序的代码和数据占得比重有关,假如有大量的常数定义在flash,Data小了可能不行。
看编译器自带的文档,里面应该有说明
编译器文档里没找到相关介绍
做过实验,把一个正常的工程,禁止优化再编译一边,代码数据量明显大许多,如果CODE不修改,超出32K就通不 ...
Code 和Data都有这个选项,我也试过,就目前的程序Data如果不选Medium根本不能编译,难道Code的small是32K,Data里的是其它值,在IAR的编译器文档里没找到对2个参数的具体描述
搜索--code_model (compiler option)& &--data_model (compiler option) 有详细参数
这几天遇到代码空间不够的问题,将middle改为small代码变小,不过有时代码貌似不正常。。,有待继续测试
设计要看文档,有相关文档的,可以先百度。
DATA 我试过430的,选large 是flash寻址范围大于64k,才选 large,要不然,寻址不对
设计要看文档,有相关文档的,可以先百度。
没有把编译器的所有文档看过,好像有3个,全英文,每个至少200页,遇到问题第一是百度,再google。
DATA 我试过430的,选large 是flash寻址范围大于64k,才选 large,要不然,寻址不对 ...
430的Data会那么大?STM8我试过Data基本都要选Medium,除了测试一小段功能的程序可以选small外。目前还没遇到需要选large的程序。目前发现Flash占用量到了24K,Code选small还是没问题(或者说没发现),之前怀疑的问题是其它原因导致的程序不正常。
搜索--code_model (compiler option)& &--data_model (compiler option) 有详细参数
Code model
The code model controls how code is generated for an application. Typically, the code model controls behavior such as how functions are called and in which code segment/section functions will be located. All object files of an application must be compiled using the same code model。
Data model
The data model specifies the default memory type. This means that the data model typically controls one or more of the following: The method used and the code generated to access static and global variables, dynamically allocated data, and the runtime stack. It also controls the default pointer type and in which data segments/sections static and global variables will be located. A project can only use one data model at a time, and the same model must be used by all user modules and all library modules in the project.
你说的是这2段么?这个不是解释Code和Data选Small, Medium, Large的作用吧。
本帖最后由 hd12 于
10:46 编辑
搜索--code_model (compiler option)& &--data_model (compiler option) 有详细参数
在 IARC/C++ Development Guide 里找到了描述
DATA MODEL
One of the characteristics of the STM8 microcontroller is a trade-off in how memory is
accessed, ranging from cheap access to small memory areas, up to more expensive
access methods that can access any location.
In the compiler, you can set a default memory access method by selecting a data model.
These data models are supported:
?In the small data model, variables are placed in the 8-bit address range
?In the medium data model, all data is placed in the 16-bit address range
?In the large data model, constants are placed in the 24-bit address range.
The chapter Data storage covers data models in greater detail and how to override the
default access method for individual variables.
For guidelines about the choice of data model and efficient use of memory types, see
Efficient use of memory types, page 213.
CODE MODEL
The compiler supports code models that control which function calls are generated by
default, which determines the size of the linked application. These code models are
available:
?In the small code model, all functions are placed in the 16-bit address range
?In the medium code model, all functions are placed in the 24-bit address range.
Functions are not allowed to cross 64-Kbyte section boundaries.
?In the large code model, all functions are placed in the 24-bit address range.
Functions are allowed to cross 64-Kbyte section boundaries.
For detailed information about the code models, see the chapter Functions.
For guidelines about the choice of data model and efficient use of memory types, see
Efficient use of memory types, page 213.
Code的small是64K byte寻址范围,medium是16M byte范围,但函数不允许跨越64K byte边界, large模式下是16M byte寻址范围,函数不存在跨界限制,随便放
Date的small是256 byte寻址范围,medium是64K byte范围,large是16M范围。
430的Data会那么大?STM8我试过Data基本都要选Medium,除了测试一小段功能的程序可以选small外。目前还没 ...
flash 有256K的,5系列,因为430是16位,4系列及以前的MCU 最大只能寻址到64K;
然后 后面 TI 出了大flash的 所以寻址就不一样了,IAR需要选着 large 才行
阿莫电子论坛, 原"中国电子开发网"

我要回帖

更多关于 重庆川牌幺地人手机版 的文章

 

随机推荐