搜尋此網誌

2011年5月20日

Coremark porting to Android

  1. Coremark 定位在 single core (CPU) 的測試
  2. Readme.txt 提到,需要修改 "adjust <core_portme.mak>, <core_portme.h> (and possibly <core_portme.c>) according to the specific platform used."
  3. 先 copy 一份 config 到 ./linux/
  4. 首先 "make PORT_DIR=linux clean"
  5. 修改 "linux/core_portme.mak" / "linux/core_portme.c" / "linux/core_portme.h" / "Makefile"
    • core_poartme.mak


      • #CC = gcc
        CC = /home/xxx/arm-none-linux-gnueabi-gcc
        PORT_CFLAGS = -O2
        FLAGS_STR = "$(PORT_CFLAGS) $(XCFLAGS) $(XLFLAGS) $(LFLAGS_END)"
        CFLAGS = $(PORT_CFLAGS) -I$(PORT_DIR) -I. -DFLAGS_STR=\"$(FLAGS_STR)\" -static
        LFLAGS_END += -lrt

  6. 可編譯成幾種不同 mode:
    • General mode for default setting
      • make PORT_DIR=linux
    • General mode with iteration 
      • make PORT_DIR=linux -DPERFORMANCE_RUN=1 -DITERATIONS=1000
    • Validation mode 
      • make PORT_DIR=linux -DVALIDATION_RUN=1
    • Debug mode for incorrect CRC
      • make PORT_DIR=linux XCFLAGS="-DCORE_DEBUG=1"
    • Parallel mode_FORK
      • make PORT_DIR=linux XCFLAGS="-g -DMULTITHREAD=4 -DUSE_FORK=1"
    • Parallel mode_PTHREAD
      • Modify core_portme.mak (LFLAGS_END += -lrt –lpthread)
      • make PORT_DIR=linux XCFLAGS="-DMULTITHREAD=4 -DUSE_PTHREAD"
    • Profile mode (TBT)
    • Mem allocation_malloc
      • 修改 core_portme.h
        • define MEM_METHOD MEM_MALLOC
      • 配合上面的 make
    • Mem allocation_static
      • 修改 core_portme.h
        • define MEM_METHOD MEM_STATIC
      • 配合上面的 make
    • Mem allocation_stack
      • 修改 core_portme.h
        • define MEM_METHOD MEM_STACK
      • 配合上面的 make
  7. 執行 ./coremark or ./coremark 0x0 0x0 0x66 0 7 1 2000
  8. 結果就看 Total ticks / Total time (secs) / Iterations/Sec / Iterations / Compiler flags

7 則留言:

  1. 請問為何compile後,出來的是.exe的file,Android不是只能run .apk的檔案嗎?

    回覆刪除
  2. 這個 compile 的目的、對象,都不是用於 Android 上層的 application。Android application 的確只能吃 apk。這類的 Linux tool (console mode) 在 compile 後,可以用 adb push 放到 emulator or device 上面,然後用 adb shell xxx 來執行。有權限的話就可以 run。這部分牽涉到 embedded 與 Linux program 開發的概念,非純粹 Android application 之用途。

    回覆刪除
  3. 您好, 請問我該如何在linux compile好的.exe檔porting至android device?? 謝謝!!

    回覆刪除
  4. 1. 那是因為在 coremark 的 Makefile & core_portme.h 把副檔名寫死了,其實去更改裏面的變數,出來就不會是 .exe了,也可以是.bin。
    2. Android 核心是 Linux,本來就可以透過 console 執行 binary program。Coremark 編譯後,就變成一個 binary program。
    3. .apk 是 Android 上面可以執行的,以 Activity 為主的 application,並非所謂的可執行檔,其實是一個壓縮檔,只是它剛好是一個 application 然後可以 install 到 Android 上面跑。

    回覆刪除
  5. 用 adb push 就可以了

    回覆刪除
  6. 對於porting android platform 可以提供完整簡易的操作流程嗎?因為make完,也只有.exe

    回覆刪除
    回覆
    1. 很久沒用,沒有再 reproduce 步驟了。是因為 config file or make file 指定成 coremark.exe 了。用 search 的方法找看看,只要把檔名改掉就好。只要用 cross-compile 方法,也可以直接在 Linux 下執行 (./coremark.exe)

      刪除