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 구차니
embeded/ARM2015. 2. 9. 11:32


arm 에서 레퍼런스 확인중

NEON은 끄거나 켤수 있고

"NEON 옵션 없이 프로세서를 설정시,

모든 Advanced SIMD와 VFP 명령어의 시도의 결과는 정의되지 않은 명령어 예외발생이 된다."




MRC와 MCR 명령을 이용해서 코프로세서 p15 번에 명령을 주는데

여기서는 NEON을 비활성화 하는 것으로 보여진다.


CP15에 MRC/MCR 명령을 통해 Auxiliary Control Register에 접근할 수 있다.


뜬금(...?)없는 어셈블리 공부 하게 생겼구만 -_ㅠ

[링크 : http://infocenter.arm.com/help/topic/com.arm.doc.ddi0344k/DDI0344K_cortex_a8_r3p2_trm.pdf]

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

uboot.bin 아키텍쳐별 바이너리 차이점  (0) 2015.02.09
ARM assembly / coprocessor & NEON  (0) 2015.02.09
freescale imx515 neon  (0) 2015.02.02
ARM cortex-a8 neon 활성화 체크  (0) 2015.02.02
i.mx515 uboot cross compile  (0) 2015.02.02
Posted by 구차니
embeded/ARM2015. 2. 2. 18:31

ARM 레지스터인데..

아무튼 이녀석을 어디서 제어하냐가 문제이려나..

uboot와 kernel 누구냐... 도대체 ㅠㅠ



[14]

Force NEON clock

Forces NEON clock enable active:

0 = does not prevent the processor clock generator from stopping the NEON clock, reset value

1 = prevents the processor clock generator from stopping the NEON clock.


[12]

Force NEON single issue

Forces single issue of Advanced SIMD instructions:

0 = does not force single issue of Advanced SIMD instructions, reset value

1 = forces single issue of Advanced SIMD instructions.


[5]

L1NEON

Enables caching NEON data within the L1 data cache:

0 = disables caching NEON data within the L1 data cache, reset value

1 = enables caching NEON data within the L1 data and L2 cache.

Note

NEON L1 caching should be enabled for best performance when the L2 cache is off or not present.


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

    [링크 : https://community.freescale.com/thread/259830]

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

ARM assembly / coprocessor & NEON  (0) 2015.02.09
neon / co-processor 그리고 MCR MRC p16  (0) 2015.02.09
ARM cortex-a8 neon 활성화 체크  (0) 2015.02.02
i.mx515 uboot cross compile  (0) 2015.02.02
i.mx515 kernel cross compile  (0) 2015.02.02
Posted by 구차니
embeded/ARM2015. 2. 2. 17:56

음.. cpuinfo에서는 cpu에서 지원하는 사항을

/proc/self/auxy 에서는 레지스터를 볼 수 있다고 한다.

NEON can be detected at compile time by checking: #ifdef __ARM_NEON__

NEON can be detected at runtime on Linux by checking the CPU flags, by running "cat /proc/cpuinfo" or searching the file "/proc/self/auxv" for AT_HWCAP to check for the HWCAP_NEON bit (4096).


[링크 : http://shervinemami.info/armAssembly.html] 


일단은.. 저런 설정사항들이 있고...

AUX. control register랑은 순서가 다르네..

Linux/arch/arm/include/uapi/asm/hwcap.h


  1 #ifndef _UAPI__ASMARM_HWCAP_H

  2 #define _UAPI__ASMARM_HWCAP_H

  3 

  4 /*

  5  * HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP

  6  */

  7 #define HWCAP_SWP       (1 << 0)

  8 #define HWCAP_HALF      (1 << 1)

  9 #define HWCAP_THUMB     (1 << 2)

 10 #define HWCAP_26BIT     (1 << 3)        /* Play it safe */

 11 #define HWCAP_FAST_MULT (1 << 4)

 12 #define HWCAP_FPA       (1 << 5)

 13 #define HWCAP_VFP       (1 << 6)

 14 #define HWCAP_EDSP      (1 << 7)

 15 #define HWCAP_JAVA      (1 << 8)

 16 #define HWCAP_IWMMXT    (1 << 9)

 17 #define HWCAP_CRUNCH    (1 << 10)

 18 #define HWCAP_THUMBEE   (1 << 11)

 19 #define HWCAP_NEON      (1 << 12)

 20 #define HWCAP_VFPv3     (1 << 13)

 21 #define HWCAP_VFPv3D16  (1 << 14)       /* also set for VFPv4-D16 */

 22 #define HWCAP_TLS       (1 << 15)

 23 #define HWCAP_VFPv4     (1 << 16)

 24 #define HWCAP_IDIVA     (1 << 17)

 25 #define HWCAP_IDIVT     (1 << 18)

 26 #define HWCAP_VFPD32    (1 << 19)       /* set if VFP has 32 regs (not 16) */

 27 #define HWCAP_IDIV      (HWCAP_IDIVA | HWCAP_IDIVT)

 28 #define HWCAP_LPAE      (1 << 20)

 29 #define HWCAP_EVTSTRM   (1 << 21)

 30 

 31 /*

 32  * HWCAP2 flags - for elf_hwcap2 (in kernel) and AT_HWCAP2

 33  */

 34 #define HWCAP2_AES      (1 << 0)

 35 #define HWCAP2_PMULL    (1 << 1)

 36 #define HWCAP2_SHA1     (1 << 2)

 37 #define HWCAP2_SHA2     (1 << 3)

 38 #define HWCAP2_CRC32    (1 << 4)

 39 

 40 #endif /* _UAPI__ASMARM_HWCAP_H */

 41 


[링크 : http://lxr.free-electrons.com/source/arch/arm/include/uapi/asm/hwcap.h#L19]


음. auxy 파일을 덤프해서 봐도 모르겠고 -_-

$ hexdump dump

0000000 0010 0000 30d7 0000 0006 0000 1000 0000

0000010 0011 0000 0064 0000 0003 0000 8034 0000

0000020 0004 0000 0020 0000 0005 0000 0009 0000

0000030 0007 0000 b000 2aaa 0008 0000 0000 0000

0000040 0009 0000 43e8 0001 000b 0000 0000 0000

0000050 000c 0000 0000 0000 000d 0000 0000 0000

0000060 000e 0000 0000 0000 0017 0000 0000 0000

0000070 0019 0000 de48 7e82 001f 0000 dff3 7e82

0000080 000f 0000 de58 7e82 0000 0000 0000 0000

0000090



찾던중에 반가운!!!!

암튼 이녀석은 실제로 활성화된 내용을 볼수 있는 것으로 생각된다!!

왜냐면!!! vfpv3 neon이 없거덩!?

이녀석은.. 일단 root로 실행해야 한다.

# LD_SHOW_AUXV=1 /bin/dd

AT_HWCAP:    swp half thumb fast-mult vfp edsp

AT_PAGESZ:       4096

AT_CLKTCK:       100

AT_PHDR:         0x8034

AT_PHENT:        32

AT_PHNUM:        9

AT_BASE:         0x2aaab000

AT_FLAGS:        0x0

AT_ENTRY:        0x143e8

AT_UID:          0

AT_EUID:         0

AT_GID:          0

AT_EGID:         0

AT_SECURE:       0

AT_RANDOM:       0x7ef2de47

AT_EXECFN:       /bin/dd

AT_PLATFORM:     v7l


[링크 : http://www.linuxquestions.org/.../what-does-proc-pid-auxv-mean-exactly-4175421876/]




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

neon / co-processor 그리고 MCR MRC p16  (0) 2015.02.09
freescale imx515 neon  (0) 2015.02.02
i.mx515 uboot cross compile  (0) 2015.02.02
i.mx515 kernel cross compile  (0) 2015.02.02
i.mx515 SDMA  (0) 2015.02.02
Posted by 구차니
embeded/ARM2015. 2. 2. 17:31

$ tar -xvf u-boot-v2009.08.tar.bz2

$ tar -xvf u-boot-v2009.08-imx_10.12.01.tar.bz2

$ mv patches u-boot-2009.08

$ mv u-boot-2009.08/pathces/patch-uboot.sh ./u-boot-2009.08

$ cd u-boot-2009.08

$ chmod 777 patch-uboot.sh

$ ./patch-uboot.sh


make ARCH=arm CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-none-linux-gnueabi- mx51_bbg_config

make ARCH=arm CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-none-linux-gnueabi- -j8 


u-boot-2009.08/board/freescale$ ls

common     m5329evb     mpc8323erdb  mpc8548cds   mx31ads

m5208evbe  m5373evb     mpc832xemds  mpc8555cds   mx31pdk

m52277evb  m54451evb    mpc8349emds  mpc8560ads   mx35_3stack

m5235evb   m54455evb    mpc8349itx   mpc8568mds   mx50_rdp

m5249evb   m547xevb     mpc8360emds  mpc8569mds   mx51_3stack

m5253demo  m548xevb     mpc8360erdk  mpc8572ds    mx51_bbg

m5253evbe  mpc5121ads   mpc837xemds  mpc8610hpcd  mx53_rd

m5271evb   mpc7448hpc2  mpc837xerdb  mpc8641hpcn  p2020ds

m5272c3    mpc8260ads   mpc8536ds    mx23_evk

m5275evb   mpc8266ads   mpc8540ads   mx25_3stack

m5282evb   mpc8313erdb  mpc8541cds   mx28_evk

m53017evb  mpc8315erdb  mpc8544ds    mx31_3stack 


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

freescale imx515 neon  (0) 2015.02.02
ARM cortex-a8 neon 활성화 체크  (0) 2015.02.02
i.mx515 kernel cross compile  (0) 2015.02.02
i.mx515 SDMA  (0) 2015.02.02
armv7 errata / kernel  (0) 2015.01.28
Posted by 구차니