合泰编译器HT-IDE3000除bank0,其他bank的变量都要指定绝对地址
合泰编译器HT-IDE3000 V7.91(当前最新版)挺屎的,变量除了BANK0,其他bank的变量都要手动指定绝对地址,这么NC的设计,问了FAE,直接指定bank都不行,一定要指定到具体bank的绝对地址.如果变量较少,bank0用不完,就不会出现这个问题.
要写成这个样子:static volatile unsigned char abc __attribute__((at(0x580)));
第2个变量变要写成 static volatile unsigned char def__attribute__((at(0x581)));
地址要自己计算.
有没有好的办法? FAE都说不行,那也没什么好办法,只能换其它家芯片(如51核). 把所有变量都放到结构体里呢,应该只用指定一个地址就行了 liufabing 发表于 2016-9-18 19:08
FAE都说不行,那也没什么好办法,只能换其它家芯片(如51核).
是感觉他们开发编译器的人太屎。。。
这个问题很好处理的。编译器指定总好过程序员指定。 q457344370 发表于 2016-9-18 19:12
把所有变量都放到结构体里呢,应该只用指定一个地址就行了
是个好主意,然后对每个成员变量再宏定义一个别名,就只需要指定一次地址了。。。{:victory:} laujc 发表于 2016-9-18 19:57
是感觉他们开发编译器的人太屎。。。
这个问题很好处理的。编译器指定总好过程序员指定。 ...
主要是自动切换bank 编译器做的太差 ht-ide3000V2版的c编译器有些是支持自动变量分配的,不过切换bank哪里 基本上每个变量都切换一次。代码空间明显变大, 不知道手工指定的,用的时候是不是也是每个变量都切换一次,是的话就有点.......。V3版的编译器看手册是移植GCC的,但是有些芯片不支持。 本帖最后由 kebaojun305 于 2016-9-19 09:37 编辑
C编译器 ,关键在优化,台湾自己做的 ,优化基本都很差,bug 也不少,这个没有办法(人员不足,也没有太多时间 来整这个),总比用汇编强吧。 所以,现在他们都改变策略了,使用成熟核了,比如原装的51核,pic核 或者arm核。 kebaojun305 发表于 2016-9-19 09:33
主要是自动切换bank 编译器做的太差 ht-ide3000V2版的c编译器有些是支持自动变量分配的,不过切 ...
这个变量分配应该在GCC编译这前吧? 本帖最后由 kebaojun305 于 2016-9-19 14:49 编辑
laujc 发表于 2016-9-19 13:46
这个变量分配应该在GCC编译这前吧?
在前,还是在后,就真的没有注意了,你用的芯片 如果支持V3的c编译器 那估计使用V3的编译器可能会好点,毕竟是GCC移植的。 合泰的C编译器有3个版本。 kebaojun305 发表于 2016-9-19 14:47
在前,还是在后,就真的没有注意了,你用的芯片 如果支持V3的c编译器 那估计使用V3的编译器可能会好点 ...
哪3个版本?
是那个V1,V2,V3吗?如何下载到其也版本?在官网上最新的就是V3版本的 laujc 发表于 2016-9-19 15:00
哪3个版本?
是那个V1,V2,V3吗?如何下载到其也版本?在官网上最新的就是V3版本的 ...
在工程设置->工程选项->语言工具中
好的,多谢 kebaojun305 发表于 2016-9-19 15:09
在工程设置->工程选项->语言工具中
忘了我的触摸按键库使用的是V3版的,还是不能切换到V2或V1 {:cry:} laujc 发表于 2016-9-19 17:50
忘了我的触摸按键库使用的是V3版的,还是不能切换到V2或V1
合泰的触摸库是V2的吧,V3是GCC移植过来的。 我原来用的合泰的触摸库不支持V3. kebaojun305 发表于 2016-9-19 19:06
合泰的触摸库是V2的吧,V3是GCC移植过来的。 我原来用的合泰的触摸库不支持V3. ...
FAE给我的是V3的库
页:
[1]