'embeded/ARM'에 해당되는 글 106건

  1. 2020.12.10 softfp와 hardfp
  2. 2020.11.23 ampere altra
  3. 2020.10.29 arm cl
  4. 2020.09.23 arm64 server sysbench
  5. 2020.09.18 cavium thunderX / thunderX2
  6. 2020.09.16 thunderX 아키텍쳐
  7. 2018.07.19 keil window 버전별 지원버전
  8. 2018.03.19 ARM MPMC(multiport memory controller)
  9. 2018.01.30 AMBA AXI
  10. 2017.12.06 keil build 관련 검색
embeded/ARM2020. 12. 10. 11:41

softfp 로 빌드된 라이브러리를 hardfp 에서 돌릴수 있냐? 라는 것으로 검색중..

아무튼 ld-linux-armhf.so.3 가 있는 시스템에서 ld-linux.so.3를 요청하는 것을 보면

hf(hard float)가 아니라 soft float 시스템용 라이브러리로 빌드 된 것으로 보이는데

 

ld-linux.so.3를 검색한 결과로는 ln을 통해 ld-linux-armhf.so.3를 ld-linux.so.3로 심볼릭 링크하라는 말들이 나온다.

[링크 : https://forum.lazarus.freepascal.org/index.php?topic=15108.0]

[링크 : https://unix.stackexchange.com/questions/553743/correct-way-to-add-lib-ld-linux-so-3-in-debian]

 

아래는 ld-linux-armhf.so가 된 이유?

[링크 : https://lists.linaro.org/pipermail/cross-distro/2012-April/000261.html]

 

 

빌드 시에는 아래와 같이 에러가 난다고 하는데

ln -s 로 해주면 일단은 우회는 되지만

warning: ld-linux.so.3, needed by libidontknow.so, not found (try using -rpath or -rpath-link)

 

정작 실행했을 경우 해결이 되지 않고 특정 라이브러리를 불러오는데 에러가 발생을 했다고만 간략하게 나온다.

./sample: error while loading shared libraries: libidontknow.so: internal error

 

무슨 문제가 있나 곰곰히 고민을 해보니 softfp와 hardfp의 차이인것 같아서 검색해보니

ABI가 달라서 두개를 혼용할 수 없는게 문제인 것으로 보이는데

그렇게 따지면.. ld-linux.so.3를 찾아서 넣는게 오히려 빠른 해결 책이 아닐까 생각이 된다.

좀 더 근원적으로는, 사용하려는 libidontknow.so를 softfp가 아닌 hardfp로 빌드하는게 가장 좋긴 하겠지만 말이다.

 

+

호출 규약이 다르다..

soft : floating-point 연산을 위한 라이브러리 콜을 포함하도록 gcc 가 컴파일 결과를 만들어낸다.
softfp : hardware floating-point instruction 을 생성하도록 하지만, 여전히 soft-float 호출 규약(calling convention)을 사용한다.
hard : floating-point instructions 을 생성하고 FPU 특화된 호출 규약(calling convention)을 사용한다.

[링크 : https://pinocc.tistory.com/127]

 

ABI 컨벤션이 다르다..

Applications, which are built under “hardfp” option, cannot work under Linux, that was compiled under “softfp” – because different ABI conventions; function parameters transfer are different : the soft float conventions assume passing floats through general purpose (integer) registers, but “hardfp” uses the floating point register.

[링크 : https://community.nxp.com/t5/i-MX-Processors/imx6q-hard-float-or-soft-float/m-p/209848]

 

armhf는 이름대로 hard-float용이고 없는 녀석은 soft-float 용.

arm
hard-float ABI, BE32: /lib/ld-linux-armhf.so.3
hard-float ABI, BE8: /lib/ld-linux-armhf.so.3
hard-float ABI, LE: /lib/ld-linux-armhf.so.3
soft-float ABI, BE32: /lib/ld-linux.so.3
soft-float ABI, BE8: /lib/ld-linux.so.3
soft-float ABI, LE: /lib/ld-linux.so.3
(The ARM soft-float ABI can be used with both hard and soft-float code. ARM supports two variants of big-endian operation, (on newer processors) BE8 and (on older processors) BE32, which are the same at .o level but incompatible for linked executables and shared libraries.)

[링크 : https://sourceware.org/glibc/wiki/ABIList]

 

+

[링크 : https://talkingaboutme.tistory.com/entry/Linux-floating-point-관련-삽질중]

 

+

아래와 같은 항목이 보이는 걸 봐서는 mfloat-abi는 softfp 방식으로 abi를 선언할 뿐

실제 연산은 mfpu로 선언된 neon을 통해서 구현이 되도록 설정이 가능한 것으로 보인다.

export CC="arm-linux-gnueabi-gcc  -march=armv7-a     -mthumb-interwork -mfloat-abi=softfp -mfpu=neon  --sysroot=/home/eric/src/imx6/opt/ESX/imx6/sysroots/armv7a-vfp-neon-linux-gnueabi"

[링크 : https://gist.github.com/ericbutters/6049429b834edfaa0d2d]

 

 

그러니까 soft는 순수하게 software float point 계산

hard는  hardware float point 계산

softfp는 hardware float point 를 사용하지만 함수 호출 방식은 soft 방식을 쓴다고 보면 될 듯?

-mfloat-abi=name
Specifies which floating-point ABI to use. Permissible values are: ‘soft’, ‘softfp’ and ‘hard’.

Specifying ‘soft’ causes GCC to generate output containing library calls for floating-point operations. ‘softfp’ allows the generation of code using hardware floating-point instructions, but still uses the soft-float calling conventions. ‘hard’ allows generation of floating-point instructions and uses FPU-specific calling conventions.

The default depends on the specific target configuration. Note that the hard-float and soft-float ABIs are not link-compatible; you must compile your entire program with the same ABI, and link with a compatible set of libraries.

[링크 : https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html]

 

 

+

예전에 한참 고생하게 만들었던 gcc multilib이 이럴때 언급될줄이야..

아무튼 컴파일러가 multilib을 지원하면 softfp를 쓰라는데 반대로 multilib을 지원하지 않으면 soft, hard만 지원한다는 건가?

If the compiler has multilib enabled (you can tell with -print-multi-lib) then you can use -mfloat-abi=softfp, but if not then that option won't help you much: gcc will happily generate softfp code, but then there'll be no compatible libgcc to link against.

[링크 : https://stackoverflow.com/questions/9753749/]

  [링크 : https://stackoverflow.com/questions/48224372/]

 

 

+

 

[링크 : https://www.gurucoding.com/rpi_cross_compiler/2012/04_diff_hardfp_softfp/]

'embeded > ARM' 카테고리의 다른 글

vfp  (0) 2021.01.13
NEON 강제활성화?  (0) 2021.01.12
ampere altra  (0) 2020.11.23
arm cl  (0) 2020.10.29
arm64 server sysbench  (0) 2020.09.23
Posted by 구차니
embeded/ARM2020. 11. 23. 17:26

80 Arm v8.2+ 64-bit CPU cores up to 3.30 GHz with Sustained Turbo

Ampere® Altra™ 64-Bit Multi-Core Arm® Processor

 

[링크 : https://amperecomputing.com/altra/]

[링크 : https://amperecomputing.com/wp-content/uploads/2020/11/Altra_PB_v0.65_20201102.pdf]

 

백서에도 ARMv8.2 정도 라는 정보 밖에 안보이네..

Cortex-A55 / A65 / A75 / A76 / A77 / A78 정도가 해당 아키텍쳐를 사용하는 것으로 보인다.

[링크 : https://en.wikipedia.org/wiki/Comparison_of_ARMv8-A_cores]

'embeded > ARM' 카테고리의 다른 글

NEON 강제활성화?  (0) 2021.01.12
softfp와 hardfp  (0) 2020.12.10
arm cl  (0) 2020.10.29
arm64 server sysbench  (0) 2020.09.23
cavium thunderX / thunderX2  (0) 2020.09.18
Posted by 구차니
embeded/ARM2020. 10. 29. 14:25

 

[링크 : https://developer.arm.com/ip-products/processors/machine-learning/compute-library]

[링크 : https://github.com/ARM-software/ComputeLibrary]

'embeded > ARM' 카테고리의 다른 글

softfp와 hardfp  (0) 2020.12.10
ampere altra  (0) 2020.11.23
arm64 server sysbench  (0) 2020.09.23
cavium thunderX / thunderX2  (0) 2020.09.18
thunderX 아키텍쳐  (0) 2020.09.16
Posted by 구차니
embeded/ARM2020. 9. 23. 12:28

예전에 2651v2 48 코어에서 돌린거 시간을 저장을 안해놔서 아쉽네..

 

# sysbench --test=cpu --cpu-max-prime=200000 --num-threads=96 run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 96

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 200000


Test execution summary:
    total time:                          6.8619s
    total number of events:              10000
    total time taken by event execution: 652.8527
    per-request statistics:
         min:                                 65.21ms
         avg:                                 65.29ms
         max:                                129.36ms
         approx.  95 percentile:              65.30ms

Threads fairness:
    events (avg/stddev):           104.1667/0.42
    execution time (avg/stddev):   6.8005/0.03

 

# sysbench --test=cpu --cpu-max-prime=200000 --num-threads=48 run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 48

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 200000


Test execution summary:
    total time:                          13.6361s
    total number of events:              10000
    total time taken by event execution: 652.2536
    per-request statistics:
         min:                                 65.20ms
         avg:                                 65.23ms
         max:                                 66.83ms
         approx.  95 percentile:              65.26ms

Threads fairness:
    events (avg/stddev):           208.3333/0.47
    execution time (avg/stddev):   13.5886/0.03

'embeded > ARM' 카테고리의 다른 글

ampere altra  (0) 2020.11.23
arm cl  (0) 2020.10.29
cavium thunderX / thunderX2  (0) 2020.09.18
thunderX 아키텍쳐  (0) 2020.09.16
keil window 버전별 지원버전  (0) 2018.07.19
Posted by 구차니
embeded/ARM2020. 9. 18. 12:14

회사에 있는게 X2인줄 알았는데 X네..(아쉽..)

X는 가상화 지원, HT 미지원인데

X2는 가상화 여부는 이야기 없고, HT가 x2 는 한가지 모델 나머지는 x4다.

 

 

CN8890 48 core 48 thread

[링크 : https://en.wikichip.org/wiki/cavium/thunderx]

 

CN9960 16 core 64 thread

CN9965 20 core 40 thread

CN9970 24 core 96 thread

CN9975 28 core 112 thread

CN9978 30 core 120 thread

CN9980 32 core 128 thread

[링크 : https://en.wikichip.org/wiki/cavium/thunderx2]

'embeded > ARM' 카테고리의 다른 글

arm cl  (0) 2020.10.29
arm64 server sysbench  (0) 2020.09.23
thunderX 아키텍쳐  (0) 2020.09.16
keil window 버전별 지원버전  (0) 2018.07.19
ARM MPMC(multiport memory controller)  (0) 2018.03.19
Posted by 구차니
embeded/ARM2020. 9. 16. 18:17

CPU간에는 CCPI2를 통해서 연결

 

[링크 : https://www.gigabyte.com/ARM-Server/R281-T94-rev-100#ov]

[링크 : https://www.gigabyte.com/kr/ARM-Server/R150-T62-rev-100#ov] <<

 

CCPI2

Cavium Coherent Processor Interconnect

[링크 : https://en.wikichip.org/wiki/cavium/ccpi]

 

[링크 : https://www.anandtech.com/show/12694/assessing-cavium-thunderx2-arm-server-reality/8] 벤치마크

'embeded > ARM' 카테고리의 다른 글

arm64 server sysbench  (0) 2020.09.23
cavium thunderX / thunderX2  (0) 2020.09.18
keil window 버전별 지원버전  (0) 2018.07.19
ARM MPMC(multiport memory controller)  (0) 2018.03.19
AMBA AXI  (0) 2018.01.30
Posted by 구차니
embeded/ARM2018. 7. 19. 16:05

win8에서는 4.50 이후 버전이나

win10에서는 5.16a 이후를 쓰라는 듯?


RESOLUTION

Update MDK-ARM to version 4.50 or later.

Note: Any µVision version older than v4.50 is not recommended for use with Windows 8x or Windows 10. MDK-ARM V5.16a was tested with Windows 10, see MDK-ARM System Requirements. 

[링크 : http://www.keil.com/support/docs/3625.htm]

'embeded > ARM' 카테고리의 다른 글

cavium thunderX / thunderX2  (0) 2020.09.18
thunderX 아키텍쳐  (0) 2020.09.16
ARM MPMC(multiport memory controller)  (0) 2018.03.19
AMBA AXI  (0) 2018.01.30
keil build 관련 검색  (0) 2017.12.06
Posted by 구차니
embeded/ARM2018. 3. 19. 10:38

대명사로서 MPMC가 쓰이는 듯?

ARM에도 해당 메모리 컨트롤러가 존재하는 것으로 보인다.


[링크 : https://static.docs.arm.com/ddi0277/f/DDI0277.pdf]

'embeded > ARM' 카테고리의 다른 글

thunderX 아키텍쳐  (0) 2020.09.16
keil window 버전별 지원버전  (0) 2018.07.19
AMBA AXI  (0) 2018.01.30
keil build 관련 검색  (0) 2017.12.06
카드크기 컴퓨터 벤치마크  (0) 2016.09.04
Posted by 구차니
embeded/ARM2018. 1. 30. 16:04

Advanced Microcontroller Bus Architecture

Advanced eXtensible Interface (AXI)


[링크 : https://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture]

'embeded > ARM' 카테고리의 다른 글

keil window 버전별 지원버전  (0) 2018.07.19
ARM MPMC(multiport memory controller)  (0) 2018.03.19
keil build 관련 검색  (0) 2017.12.06
카드크기 컴퓨터 벤치마크  (0) 2016.09.04
JTAG ETM  (0) 2016.09.02
Posted by 구차니
embeded/ARM2017. 12. 6. 23:33

느낌으로는.. target으로 여러개 만들어서 프로젝트에 -D 옵션 줘서 준비해놓고

batch build 해야 할 느낌..

그게 아니라면 직접 armcc 를 이용해서 커맨드 라인에서 빌드하고(proj 파일 도움없이)

결과를 내야 할 느낌..


[링크 : http://www.keil.com/support/man/docs/uv4/uv4_dg_adscc.htm]

[링크 : http://www.keil.com/support/docs/868.htm]

[링크 : http://www.keil.com/support/man/docs/uv4/uv4_commandline.htm]

[링크 : http://www.keil.com/support/man/docs/uv4/uv4_dg_batchbuild.htm]

    [링크 : http://www.keil.com/support/man/docs/uv4/uv4_ca_batchbuildmultiprojectfile.htm]


[링크 : http://www.keil.com/support/man/docs/armcc/armcc_chr1359124194749.htm] armcc 옵션

[링크 : http://www.keil.com/support/man/docs/armcc/armcc_chr1359124909314.htm] -D 옵션

'embeded > ARM' 카테고리의 다른 글

ARM MPMC(multiport memory controller)  (0) 2018.03.19
AMBA AXI  (0) 2018.01.30
카드크기 컴퓨터 벤치마크  (0) 2016.09.04
JTAG ETM  (0) 2016.09.02
j-link segger j-flash  (0) 2016.09.02
Posted by 구차니