embeded/ARM2015. 2. 28. 23:37

라즈베리의 cpuinfo에서 arm7l 이라고 나와서 검색


느낌으로는.. 걍 붙는 접두 같긴한데.. (armel armhf랑은 다르게)

h는 hard

t는 thumb

n은 neon의 스멜이... -_-a


Mer port nameOBS scheduler nameRPM architecturesOBS project name in MDSOBS repository name in MDSDescription
i486i586i486Core:i486Core_i486Generic i486+ X86 port
i586i586i586, i686Core:i586Core_i586SSSE3 enabled X86 port
x86_64x86_64x86_64Core:x86_64Core_x86_64Generic 64 bit port
armv6larmv7elarmv6lCore:armv6lCore_armv6lARMv6 + VFP port
armv7larmv7elarmv7lCore:armv7lCore_armv7lARMv7 VFPv3-D16 port, softfp ABI
armv7hlarmv8elarmv7hlCore:armv7hlCore_armv7hlARMv7 VFPv3-D16 port, hardfp ABI
armv7tnhlarmv8elarmv7hl, armv7nhl, armv7tnhl, armv7thlCore:armv7tnhlCore_armv7tnhlARMv7 VFPv3-D16 port, hardfp ABI, NEON, Thumb2
mipselmipsmipselCore:mipselCore_mipselMIPS32 O32 ABI port, hardfloat

[링크 : https://wiki.merproject.org/wiki/OBS_architecture_naming]


그리고 VFPv4 에서는 FMAC를 탑재하고

soft는 소프트웨어 부동소수점 흉내내기(에뮬레이션)

softfp는 소프트웨어적으로 흉내내는 방식을 따르나 자동으로 vfp 레지스터에 쓰도록 하고

hardfp는 vfp 하드웨어 레지스터에 바로 쓰도록 하는 차이가 있다고 한다.


Soft

  • Full software floating point - compiler should refuse to generate a real FPU instruction and -mfpu= is ignored.
  • FPU operations are emulated by the compiler
  • Function calls are generated to pass FP arguments (float, double) in integer registers (one for float, a pair of registers for double)


Softfp

  • To reiterate, function calls are generated to pass FP arguments in integer registers
  • Compiler can make smart choices about when and if it generates emulated or real FPU instructions depending on chosen FPU type (-mfpu=)
  • This means soft and softfp code can be intermixed


Hardfp

  • Full hardware floating point.
  • FP arguments are passed directly in FPU registers
  • Cannot possibly run without the FPU defined in -mfpu= (or a superset of the FPU defined, where relevant)
  • FPU instructions could be emulated by the kernel so that FPU-less systems could run with this ABI but as far as we know this does not exist
  • No function prologue or epilogue requirements for FP arguments, no pipeline stalls, maximum performance (just like in PowerPC and MIPS)

[링크 : https://wiki.debian.org/ArmHardFloatPort/VfpComparison]



FMAC는 Fused Multiply ACCumulator로

하드웨어로 구성된 다중 누산기 라고 해석하면 되려나?

[링크 : http://en.wikipedia.org/wiki/Multiply–accumulate_operation]

Posted by 구차니
embeded/ARM2015. 2. 26. 22:08

예전에 dd로 부팅디스크 만들어 보려다 실패했는데..

한번 다시 도전해 봐야겠다?


[링크 : http://www.tldp.org/HOWTO/Bootdisk-HOWTO/buildroot.html]

[링크 : https://wiki.ubuntu.com/ARM/RootfsFromScratch]

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

bogoMIPS가 너무 낮게 나오네  (0) 2015.03.03
arm7l softfp hardfp fmac  (0) 2015.02.28
SD 메모리를 메인 스토리지로 쓰는 녀석...들?  (0) 2015.02.24
eMMC / UFS / PCM(PRAM)  (0) 2015.02.20
arm linux patch  (0) 2015.02.20
Posted by 구차니
embeded/ARM2015. 2. 24. 09:04

크레마 터치

모토로라 모토 G

델 스트릭


모토로라 니네는 자회사인 freescale 칩 쓰는것도 아니면서 왜 SD를 쓰고 그래 -_-


[링크 : http://www.kpug.kr/kpugknow/1826161]

    [링크 : http://gyeo.egloos.com/279631]

    [링크 : http://gigglehd.com/zbxe/10931062#7]

[링크 : http://en.wikipedia.org/wiki/Dell_Streak] 델 스트릭

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

arm7l softfp hardfp fmac  (0) 2015.02.28
밑바닥에서 rootfs 생성하기  (0) 2015.02.26
eMMC / UFS / PCM(PRAM)  (0) 2015.02.20
arm linux patch  (0) 2015.02.20
gcc -lz 와 -z  (0) 2015.02.12
Posted by 구차니
embeded/ARM2015. 2. 20. 21:52

eMMC는 라즈베리 2나 비글본에서 옵션 품목으로 채용하고 있는데

기존의 Flash나 SD 메모리 보다는 안정적이고 빠른 녀석으로

SD 메모리가 컨트롤러는 CPU에서 내장하고 있는 반면, eMMC는 컨트롤러와 메모리를 하나의 패키징에 넣고

FLASH 메모리 처럼 쓰려는 접근 방법이다.

물론 FLASH 메모리 역시 소프트웨어적으로 wear leveling을 지원해야 하기에 상당히 번거로운 감이 없기에

SW와의 통합이 중요하고 어려운 난제인데

eMMC의 경우 이 모든 것을 하나의 칩으로 해결해 버리려는 목적을 가졌다고 해야 하려나?

요약하면... 즉.. 임베디드 세상에서의 SSD 드라이브?(자체적으로 Trim과 Wear leveling등을 지원하는?)


아무튼.. 이걸로도 부족해서

더 빠르고 좋은(!) UFS도 투입하려고 있는데..


eMMC

The eMMC (embedded MMC) architecture puts the MMC components (flash memory plus controller) into a small ball grid array (BGA) IC package for use in circuit boards as an embedded non-volatile memory system. eMMC doesn't support the SPI-bus protocol.


Almost all mobile phones and tablets use this form of flash for main storage. The latest version of the eMMC standard (JESD84-B501) by JEDEC is version 5.01, with speeds rivaling discrete SATA based SSDs (400 MB/s).


[링크 : http://en.wikipedia.org/wiki/MultiMediaCard#eMMC] eMMC

[링크 : http://en.wikipedia.org/wiki/Phase-change_memory] PCM

[링크 : http://en.wikipedia.org/wiki/Ferroelectric_RAM]


배워도 배워도 끝이 없구나 ㅠㅠ


[링크 : http://avenuel.tistory.com/2137] eMMC

[링크 : http://avenuel.tistory.com/2138] UFS



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

밑바닥에서 rootfs 생성하기  (0) 2015.02.26
SD 메모리를 메인 스토리지로 쓰는 녀석...들?  (0) 2015.02.24
arm linux patch  (0) 2015.02.20
gcc -lz 와 -z  (0) 2015.02.12
i.MX515 EVK 보드 CPU 활성화 내용  (0) 2015.02.10
Posted by 구차니
embeded/ARM2015. 2. 20. 21:31

음.. 찾아는 보는데..

공식적으로 3.x 대에 대한 커널은 존재하지 않는 걸려나?


[링크 : http://www.arm.linux.org.uk/developer/]

[링크 : http://www.arm.linux.org.uk/docs/kerncomp.php]

[링크 : ftp://ftp.arm.linux.org.uk/pub/armlinux/source/kernel-patches/]


비글본은 3.10.x 대 라는 듯?

[링크 : http://slowbootkernelhacks.blogspot.kr/2014/03/beaglebone-linux-kernel310x-programming.html]

[링크 : http://www.raspberrypi.org/downloads/]

[링크 : http://beagleboard.org/latest-images]


오잉? 3.x대 부터는 그냥 통합인가?!

[링크 : http://www.acmesystems.it/compile_linux_3_12_8]

Posted by 구차니
embeded/ARM2015. 2. 12. 15:00

-lz는 libz.so를 쓰라는거고

-z는 실수로 친건데

이상한 ld 파일을 끌어와서 하길래 멘붕와서 찾아봐도

이렇다할 설명이 없다.


아무튼.. -z text 라고 되어있고 이게 링커에게 옵션으로 던져주는것 같은데

-lz 대신 -z로 입력해서 그 뒤의 값이 링커에게 넘어갔던 것으로 생각된다.


-mimpure-text
-mimpure-text, used in addition to -shared, tells the compiler to not pass -z text to the linker when linking a shared object. Using this option, you can link position-dependent code into a shared object.

[링크 : http://linux.die.net/man/1/gcc]

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

eMMC / UFS / PCM(PRAM)  (0) 2015.02.20
arm linux patch  (0) 2015.02.20
i.MX515 EVK 보드 CPU 활성화 내용  (0) 2015.02.10
zedboard / cortex-A9 / Xilinx Zynq-7000 neon & vfpv3  (0) 2015.02.10
uboot.bin 아키텍쳐별 바이너리 차이점  (0) 2015.02.09
Posted by 구차니
embeded/ARM2015. 2. 10. 17:24

neon은 켜져있는데.. vfpv3는 안켜줬네?


$ LD_SHOW_AUXV=1 ls

AT_HWCAP:    swp half thumb fast-mult vfp edsp neon

AT_PAGESZ:       4096

AT_CLKTCK:       100

AT_PHDR:         0x8034

AT_PHENT:        32

AT_PHNUM:        10

AT_BASE:         0x2aaab000

AT_FLAGS:        0x0

AT_ENTRY:        0x9bf0

AT_UID:          1000

AT_EUID:         1000

AT_GID:          1000

AT_EGID:         1000

AT_SECURE:       0

AT_RANDOM:       0x7e9cf967

AT_EXECFN:       /bin/ls

AT_PLATFORM:     v7l


$ cat /proc/cpuinfo

Processor       : ARMv7 Processor rev 1 (v7l)

BogoMIPS        : 799.53

Features        : swp half thumb fastmult vfp edsp neon vfpv3

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x2

CPU part        : 0xc08

CPU revision    : 1


Hardware        : Freescale MX51 Babbage Board

Revision        : 51120

Serial          : 0000000000000000



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

arm linux patch  (0) 2015.02.20
gcc -lz 와 -z  (0) 2015.02.12
zedboard / cortex-A9 / Xilinx Zynq-7000 neon & vfpv3  (0) 2015.02.10
uboot.bin 아키텍쳐별 바이너리 차이점  (0) 2015.02.09
ARM assembly / coprocessor & NEON  (0) 2015.02.09
Posted by 구차니
embeded/ARM2015. 2. 10. 08:20

커널에서

Floating Poiint 관련 옵션을 빼면 커널 패닉이 나서 부팅이 안된다 -_-

그래서.. 커널에서 빼면 장비가 사용 불가능한지 테스트 불가 -_ㅠ


# cat /proc/cpuinfo

processor       : 0

model name      : ARMv7 Processor rev 0 (v7l)

BogoMIPS        : 1332.01

Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x3

CPU part        : 0xc09

CPU revision    : 0


processor       : 1

model name      : ARMv7 Processor rev 0 (v7l)

BogoMIPS        : 1332.01

Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x3

CPU part        : 0xc09

CPU revision    : 0


Hardware        : Xilinx Zynq Platform

Revision        : 0000

Serial          : 0000000000000000 


# LD_SHOW_AUXV=1 /bin/dd

AT_HWCAP:    swp half thumb fastmult vfp edsp neon vfpv3 tls

AT_PAGESZ:       4096

AT_CLKTCK:       100

AT_PHDR:         0x8034

AT_PHENT:        32

AT_PHNUM:        8

AT_BASE:         0xb6fc7000

AT_FLAGS:        0x0

AT_ENTRY:        0xe990

AT_UID:          0

AT_EUID:         0

AT_GID:          0

AT_EGID:         0

AT_SECURE:       0

AT_RANDOM:       0xbea33f12

AT_EXECFN:       /bin/dd

AT_PLATFORM:     v7l



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

gcc -lz 와 -z  (0) 2015.02.12
i.MX515 EVK 보드 CPU 활성화 내용  (0) 2015.02.10
uboot.bin 아키텍쳐별 바이너리 차이점  (0) 2015.02.09
ARM assembly / coprocessor & NEON  (0) 2015.02.09
neon / co-processor 그리고 MCR MRC p16  (0) 2015.02.09
Posted by 구차니
embeded/ARM2015. 2. 9. 14:13

CFLAGS에 주니 이상해서

CC = (CROSS_COMPILE)gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp

주고 컴파일 후

$ readelf -a u-boot

로 확인해본 내용


$ readelf -a u-boot

Attribute Section: aeabi

File Attributes

  Tag_CPU_name: "5"

  Tag_CPU_arch: v5T

  Tag_ARM_ISA_use: Yes

  Tag_THUMB_ISA_use: Thumb-1

  Tag_ABI_PCS_wchar_t: 4

  Tag_ABI_FP_denormal: Needed

  Tag_ABI_FP_exceptions: Needed

  Tag_ABI_FP_number_model: IEEE 754

  Tag_ABI_align8_needed: Yes

  Tag_ABI_enum_size: int 


$ readelf -a u-boot

Attribute Section: aeabi

File Attributes

  Tag_CPU_name: "7-A"

  Tag_CPU_arch: v7

  Tag_CPU_arch_profile: Application

  Tag_ARM_ISA_use: Yes

  Tag_THUMB_ISA_use: Thumb-2

  Tag_FP_arch: VFPv3

  Tag_Advanced_SIMD_arch: NEONv1

  Tag_ABI_PCS_wchar_t: 4

  Tag_ABI_FP_denormal: Needed

  Tag_ABI_FP_exceptions: Needed

  Tag_ABI_FP_number_model: IEEE 754

  Tag_ABI_align_needed: 8-byte

  Tag_ABI_enum_size: int 


머.. 그렇게 한다고 해도.. neon이나 vfpv3가 활성화 되진 않네..

Posted by 구차니
embeded/ARM2015. 2. 9. 11:52


MRC는 R←C로

MCR은 C←R로


MCR 코프로세스번호, 0, 레지스터번호, Coprocessor 레지스터번호, c0, 0

MCR p15, 0, r4, c2, c0, 0

coprocessor 15번 2번 register에 r4 값을 전송

[링크 : http://recipes.egloos.com/5041803]


AND    논리 AND

ORR    논리 OR

EOR    논리 배타적 OR

BIC    논리 AND NOT

ORN    논리 OR NOT (Thumb-2에만 해당)

[링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ik/Cihdafai.html]


[링크 : http://dreamlog.tistory.com/221]

Posted by 구차니