CubieBoard博客-HomeCubieTech公司网站

cubie.cc CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 5104|回复: 10

移值mesos集群管理器到CC-A80问题汇总与解决

[复制链接]

9

主题

0

好友

950

积分

高级会员

Rank: 4

贡献
186
金钱
351
威望
186
买家信用
卖家信用
积分
950
发表于 2015-7-31 11:46:39 |显示全部楼层
今天在CC-A80编译mesos,zookeeper部分的代码编译不通过,发现问题函数使用了汇编代码
问题解决方法如下:
home/repos/mesos.git/3rdparty/zookeeper-3.4.5/src/c/src/mt_adaptor.c
的int32_t fetch_and_add(volatile int32_t* operand, int incr)
汇编代码与ARM不兼容

修改如下:

//    asm __volatile__(
//         "lock xaddl %0,%1\n"
//         : "=r"(result), "=m"(*(int *)operand)
//         : "0"(incr)
//         : "memory");
//   return result;
    return __sync_fetch_and_add(operand,incr);
回复

使用道具 举报

3

主题

2

好友

7270

积分

论坛元老

Rank: 8Rank: 8

贡献
1335
金钱
3238
威望
1335
买家信用
卖家信用
积分
7270
发表于 2015-7-31 18:39:02 |显示全部楼层
我猜原本就是要用 __sync_fetch_and_add atomic 函數,寫程式的人偷懶用 x86的指令集,但是 CubieTruck 的 ARM 版本夠高,可以支援 dmb 指令集,所以如果增量是 1,可以改寫為

  asm volatile ("dmb sy\n\t"
    "1:\n\t"
    "ldrex %0,[%1] \n\t"
    "add   %0,%0,#1\n\t"
    "strex %2,%0,[%1]\n\t"
    "teq   %2,#0\n\t"
    "bne   1b\n\t"
    : "=&r" (result)
    : "r" (ptr), "r" (modified)
    : "cc", "memory"
    );

    return result;
回复

使用道具 举报

9

主题

0

好友

950

积分

高级会员

Rank: 4

贡献
186
金钱
351
威望
186
买家信用
卖家信用
积分
950
发表于 2015-7-31 19:43:12 |显示全部楼层
另外CC-80的2G内存不够用,把3G的交换文件都耗尽后错误退出,考虑用DISTCC分发到X86上交叉编译。
回复

使用道具 举报

9

主题

0

好友

950

积分

高级会员

Rank: 4

贡献
186
金钱
351
威望
186
买家信用
卖家信用
积分
950
发表于 2015-7-31 19:48:04 |显示全部楼层
dennysu 发表于 2015-7-31 18:39
我猜原本就是要用 __sync_fetch_and_add atomic 函數,寫程式的人偷懶用 x86的指令集,但是 CubieTruck 的  ...

厉害,也可能是GCC以外的编译器不支持这个函数,但又没考虑ARM架构的CPU吧。
回复

使用道具 举报

7

主题

0

好友

1373

积分

金牌会员

Rank: 6Rank: 6

贡献
265
金钱
523
威望
265
买家信用
卖家信用
积分
1373
发表于 2015-7-31 20:50:30 |显示全部楼层
netice 发表于 2015-7-31 19:43
另外CC-80的2G内存不够用,把3G的交换文件都耗尽后错误退出,考虑用DISTCC分发到X86上交叉编译。 ...

对。。。2G不够用。。。。。。。。
回复

使用道具 举报

3

主题

2

好友

7270

积分

论坛元老

Rank: 8Rank: 8

贡献
1335
金钱
3238
威望
1335
买家信用
卖家信用
积分
7270
发表于 2015-7-31 22:23:57 |显示全部楼层
本帖最后由 dennysu 于 2015-7-31 22:26 编辑

首先,__sync_fetch_and_add 的12個相關 atomic call 是定義在 stdio.h,所以一定跟 libc 有關。我想這個 project 可能是用了陽春的 ulibc.lib,應該和 compiler (GCC)是無關的,和 library 比較有關係。

再來記憶體我想再多都有人嫌太少,我自己用 CubieTruck 架了十幾個應用的 Server,用了一年多,我很滿意。如果真的記憶體嫌太少,我可以建議一個方法。

先到 Google 找 Linux on Android,可以訪問到 http://linuxonandroid.org/ 這個網站,下載 app 和 Ubuntu 的 img 檔案(Debian...我記得支援七八種Linux),然後在自己的手機上跑 Linux。現在八核/4G RAM手機一堆,也很便宜,應該很夠用。

前幾個禮拜,我才用兩年前的佳域 G3 (四核/1G RAM)的手機跑 Ubuntu,交叉編譯(因為 MediaTek 沒有硬體浮點運算器) Linux Kernel,似乎速度還比 CubieTruck快。現在的手機應該表現不俗吧!

p.s. 中國上不了 Google,可能要自己翻牆。
回复

使用道具 举报

3

主题

2

好友

7270

积分

论坛元老

Rank: 8Rank: 8

贡献
1335
金钱
3238
威望
1335
买家信用
卖家信用
积分
7270
发表于 2015-7-31 23:09:54 |显示全部楼层
本帖最后由 dennysu 于 2015-7-31 23:20 编辑

講到記憶體,我就有苦水不吐不快!我有兩台 CubieTruck,用來作 Server,每個地方我都很滿意,但是我也希望 CPU 可以快一點,所以我之前就在等 Cb4,結果悲劇了,沒有 SATA。

我用了 CubieTruck 一年多,我深知鋰電池過了一段時間就會膨脹,然後在密閉的殼子中壓到主版,然後就會影響到 SDCard Slot 密合度,所以我不會在 SDCard 上裝 Server,你可以試試看 tar zxvf 一個檔案之後,sync 一下需要多久!

如果把 cb4 當家用主機的話,假設要玩 Linux ,我會拿自己手機跑 Linux on Android 一樣跑的很好。如果要不折騰的話,我會買光棍一號 t02版,更便宜,而且我從來沒聽過 CISC CPU 會比 RISC CPU慢,裡面還有一個合法的 Win 8.1版本。如果要驅動 GPIO,我會買 Raspberry PI,文件更多,而且驅動簡單的 GPIO,用不到八核心。如果要DIY 路由器,我會買Banana PI-M1版,有好幾個Giga Port可以玩!

所以我無法理解 A80 的定位到底在哪裡,每個面相都是當老二的份!

所以再過一段時間, CB5 還沒有 SATA 介面,我就會考慮 Intel z3735 的小板子取代 CubieTruck Server的地位。
回复

使用道具 举报

9

主题

0

好友

950

积分

高级会员

Rank: 4

贡献
186
金钱
351
威望
186
买家信用
卖家信用
积分
950
发表于 2015-8-1 00:03:02 |显示全部楼层
dennysu 发表于 2015-7-31 23:09
講到記憶體,我就有苦水不吐不快!我有兩台 CubieTruck,用來作 Server,每個地方我都很滿意,但是我也希望 ...

z3735F的板原来才不到400,早知就不入CB4了
回复

使用道具 举报

7

主题

0

好友

1373

积分

金牌会员

Rank: 6Rank: 6

贡献
265
金钱
523
威望
265
买家信用
卖家信用
积分
1373
发表于 2015-8-2 21:07:14 |显示全部楼层
dennysu 发表于 2015-7-31 23:09
講到記憶體,我就有苦水不吐不快!我有兩台 CubieTruck,用來作 Server,每個地方我都很滿意,但是我也希望 ...

CB4的USB3.0挂硬盘的效果还行。。。写入速度比CT快很多。。。。读取速度差不多。。。
回复

使用道具 举报

10#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|邮件群发|cubie.cc---深刻的嵌入式技术和应用讨论中文社区 ( 粤ICP备13051116号-1  

GMT+8, 2020-8-12 20:34 , Processed in 0.025166 second(s), 8 queries , Apc On.

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc. | Style by Coxxs

回顶部