laujc 发表于 2016-9-18 17:28:08

合泰编译器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)));
地址要自己计算.

有没有好的办法?

liufabing 发表于 2016-9-18 19:08:51

FAE都说不行,那也没什么好办法,只能换其它家芯片(如51核).

q457344370 发表于 2016-9-18 19:12:46

把所有变量都放到结构体里呢,应该只用指定一个地址就行了

laujc 发表于 2016-9-18 19:57:49

liufabing 发表于 2016-9-18 19:08
FAE都说不行,那也没什么好办法,只能换其它家芯片(如51核).

是感觉他们开发编译器的人太屎。。。
这个问题很好处理的。编译器指定总好过程序员指定。

laujc 发表于 2016-9-18 19:59:00

q457344370 发表于 2016-9-18 19:12
把所有变量都放到结构体里呢,应该只用指定一个地址就行了

是个好主意,然后对每个成员变量再宏定义一个别名,就只需要指定一次地址了。。。{:victory:}

kebaojun305 发表于 2016-9-19 09:33:15

laujc 发表于 2016-9-18 19:57
是感觉他们开发编译器的人太屎。。。
这个问题很好处理的。编译器指定总好过程序员指定。 ...

主要是自动切换bank   编译器做的太差   ht-ide3000V2版的c编译器有些是支持自动变量分配的,不过切换bank哪里 基本上每个变量都切换一次。代码空间明显变大, 不知道手工指定的,用的时候是不是也是每个变量都切换一次,是的话就有点.......。V3版的编译器看手册是移植GCC的,但是有些芯片不支持。

kebaojun305 发表于 2016-9-19 09:36:01

本帖最后由 kebaojun305 于 2016-9-19 09:37 编辑

C编译器 ,关键在优化,台湾自己做的 ,优化基本都很差,bug 也不少,这个没有办法(人员不足,也没有太多时间 来整这个),总比用汇编强吧。 所以,现在他们都改变策略了,使用成熟核了,比如原装的51核,pic核 或者arm核。

laujc 发表于 2016-9-19 13:46:39

kebaojun305 发表于 2016-9-19 09:33
主要是自动切换bank   编译器做的太差   ht-ide3000V2版的c编译器有些是支持自动变量分配的,不过切 ...

这个变量分配应该在GCC编译这前吧?

kebaojun305 发表于 2016-9-19 14:47:56

本帖最后由 kebaojun305 于 2016-9-19 14:49 编辑

laujc 发表于 2016-9-19 13:46
这个变量分配应该在GCC编译这前吧?

在前,还是在后,就真的没有注意了,你用的芯片 如果支持V3的c编译器   那估计使用V3的编译器可能会好点,毕竟是GCC移植的。 合泰的C编译器有3个版本。

laujc 发表于 2016-9-19 15:00:38

kebaojun305 发表于 2016-9-19 14:47
在前,还是在后,就真的没有注意了,你用的芯片 如果支持V3的c编译器   那估计使用V3的编译器可能会好点 ...

哪3个版本?
是那个V1,V2,V3吗?如何下载到其也版本?在官网上最新的就是V3版本的

kebaojun305 发表于 2016-9-19 15:09:28

laujc 发表于 2016-9-19 15:00
哪3个版本?
是那个V1,V2,V3吗?如何下载到其也版本?在官网上最新的就是V3版本的 ...

在工程设置->工程选项->语言工具中

laujc 发表于 2016-9-19 17:48:12

好的,多谢

laujc 发表于 2016-9-19 17:50:55

kebaojun305 发表于 2016-9-19 15:09
在工程设置->工程选项->语言工具中

忘了我的触摸按键库使用的是V3版的,还是不能切换到V2或V1 {:cry:}

kebaojun305 发表于 2016-9-19 19:06:34

laujc 发表于 2016-9-19 17:50
忘了我的触摸按键库使用的是V3版的,还是不能切换到V2或V1

合泰的触摸库是V2的吧,V3是GCC移植过来的。 我原来用的合泰的触摸库不支持V3.

laujc 发表于 2016-9-19 20:07:10

kebaojun305 发表于 2016-9-19 19:06
合泰的触摸库是V2的吧,V3是GCC移植过来的。 我原来用的合泰的触摸库不支持V3. ...

FAE给我的是V3的库
页: [1]
查看完整版本: 合泰编译器HT-IDE3000除bank0,其他bank的变量都要指定绝对地址