aesop-4330 보드관련 질문답변 게시판입니다. 최대 업로드 가능한 용량은 20MByte 입니다.

사용중에 성능이 떨어졌다는 느낌이 있어,

top 명령으로 확인해 보니, CPU Core 1개에 대한 정보만 나오더군요..

리부팅하니 정상으로 돌아왔지만요..


다시 재현이 안돼 원인 파악하기가 어려운데,

어떤 경우에 위와 같이 CPU 코어가 사용되지 않는 상태로 변하는 걸까요?

이걸 모니터링해서 대처를 해야할 거 같은데,

별도의 체크방법이 있나요?


관리자

2014.06.19 00:08:20
*.200.239.210

x86???? 

아니면 어떤???

루비니

2014.06.19 04:19:30
*.218.12.26

aesop-4330 전용인거 같아 별도 언급을 안했네요.. 말머리 추가합니다..

고도리

2014.06.20 03:28:36
*.111.12.170

음....로그 좀 부탁드립니다.


예전에는 다른 증상인데...관련 증상이 있었는데, 근래는 문제가 없는 것으로 알고 있습니다.

내일 관련해서 문제가 있었는지 말씀드리겠습니다.

루비니

2014.06.20 23:45:58
*.218.12.26

다행히 이전의 minicom 캡쳐로그가 남아 있어 아래에 붙입니다.

부팅할 때부터 문제가 발생했더군요.. (CPU1: failed to boot: -38)

루비니

2014.06.20 23:33:02
*.218.12.26

** CPU0 만 동작하고 있을때의 top 명령 화면 **


CPU0: 80.0% usr  0.0% sys  0.0% nic 20.0% idle  0.0% io  0.0% irq  0.0% sirq
Load average: 0.85 0.86 0.91 2/60 3038


** CPU0 만 동작하고 있을때의 Booting 로그 일부 **


[    0.000000] Calibrating delay loop... 1987.37 BogoMIPS (lpj=9936896)
[    0.060000] pid_max: default: 32768 minimum: 301
[    0.060000] Mount-cache hash table entries: 512
[    0.060000] Initializing cgroup subsys debug
[    0.060000] Initializing cgroup subsys cpuacct
[    0.060000] Initializing cgroup subsys memory
[    0.060000] Initializing cgroup subsys freezer
[    0.060000] CPU: Testing write buffer coherency: ok
[    0.060000] CPU0: thread -1, cpu 0, socket 10, mpidr 80000a00
[    0.060000] Setting up static identity map for 0x40596700 - 0x40596758
[    0.060000] L310 cache controller enabled
[    0.060000] l2x0: 16 ways, CACHE_ID 0x4100c4c8, AUX_CTRL 0x70070001, Cache size: 1048576 B
[    1.120000] CPU1: failed to boot: -38
[    2.160000] CPU2: failed to boot: -38
[    3.200000] CPU3: failed to boot: -38
[    3.200000] Brought up 1 CPUs
[    3.200000] SMP: Total of 1 processors activated (1987.37 BogoMIPS).
[    3.200000] devtmpfs: initialized
[    3.200000] pwm: max = 68750000 hz
[    3.200000] dummy:
[    3.200000] NET: Registered protocol family 16



** 정상 동작하고 있을때의 top 명령 화면 **


CPU0: 42.8% usr 14.2% sys  0.0% nic 42.8% idle  0.0% io  0.0% irq  0.0% sirq
CPU1:  0.0% usr  0.0% sys  0.0% nic  100% idle  0.0% io  0.0% irq  0.0% sirq
CPU2:  0.0% usr  0.0% sys  0.0% nic  100% idle  0.0% io  0.0% irq  0.0% sirq
CPU3:  0.0% usr  0.0% sys  0.0% nic  100% idle  0.0% io  0.0% irq  0.0% sirq
Load average: 0.13 0.03 0.01 2/76 189


** 정상 동작하고 있을때의 Booting 로그 일부 **


[    0.000000] Calibrating delay loop... 1987.37 BogoMIPS (lpj=9936896)
[    0.060000] pid_max: default: 32768 minimum: 301
[    0.060000] Mount-cache hash table entries: 512
[    0.060000] Initializing cgroup subsys debug
[    0.060000] Initializing cgroup subsys cpuacct
[    0.060000] Initializing cgroup subsys memory
[    0.060000] Initializing cgroup subsys freezer
[    0.060000] CPU: Testing write buffer coherency: ok
[    0.060000] CPU0: thread -1, cpu 0, socket 10, mpidr 80000a00
[    0.060000] Setting up static identity map for 0x40596700 - 0x40596758
[    0.060000] L310 cache controller enabled
[    0.060000] l2x0: 16 ways, CACHE_ID 0x4100c4c8, AUX_CTRL 0x70070001, Cache size: 1048576 B
[    0.120000] CPU1: Booted secondary processor
[    0.180000] CPU1: thread -1, cpu 1, socket 10, mpidr 80000a01
[    0.180000] CPU1: Unknown IPI message 0x1
[    0.220000] CPU2: Booted secondary processor
[    0.280000] CPU2: thread -1, cpu 2, socket 10, mpidr 80000a02
[    0.280000] CPU2: Unknown IPI message 0x1
[    0.320000] CPU3: Booted secondary processor
[    0.380000] CPU3: thread -1, cpu 3, socket 10, mpidr 80000a03
[    0.380000] CPU3: Unknown IPI message 0x1
[    0.380000] Brought up 4 CPUs
[    0.380000] SMP: Total of 4 processors activated (7969.17 BogoMIPS).
[    0.380000] devtmpfs: initialized
[    0.380000] pwm: max = 68750000 hz
[    0.380000] dummy:
[    0.380000] NET: Registered protocol family 16


김택기

2014.06.25 23:24:35
*.94.41.89

boot fail 이 발생했을 때, delay 된 시간을 보면 pen_release 변수가 업데이트 되지 못해 발생되는 boot fail 현상으로 보이네요. AP 마다 코드가 다르겠지만 보통 이런 경우는 core의 power up sequence나 wakeup sequence에 문제가 있는 경우가 대부분입니다. boot 되는 cpu에 cpu_up()이 요청되면 core booting 후 pen_release 변수가 업데이트 되는데, 이 값이 1초간 업데이트 되지 않으면 boot fail이 발생합니다. power를 on 하라고 했는데, power on이 되지 않았거나, power 는 on 이 되었는데, boot code 어딘가에 문제가 발생해서 cpu가 올라오지 못하는 경우일 확률이 높습니다.

루비니

2014.07.04 08:54:33
*.218.12.26

윗분 말씀처럼 secondary cpu 들에 대한 booting sequence 에 문제가 있네요..

nxp4330 smp 부팅시퀀스에 대한 정보가 없어, 소스상으로 추정해보면,


boot_secondary() 함수가 3번 호출되면서 세컨 CPU들 3개를 부팅시켜주는데,

RTC쪽에 있는 스크래치 레지스터에 세컨 CPU들의 entry point 인 __secondary_startup 의 

physical 주소를 써주더군요. 

정상적일때는, 세컨 CPU들이 그 주소로 들어가서 무한루프를 돌고 있다가,

pen_release 변수가 자신의 id 값과 일치하면 루프를 빠져나와 부팅 완료하면서,

다시 pen_release 를 '-1' 로 해주면 성공입니다. 


boot_secondary() 함수안에 있는 boot_second_core() 나

각 CPU 에 gic를 통한 soft irq를 발생시키는 부분은 현재로선 의미없는 동작이고,

커널 부팅 전에 스크래치 레지스터에 유효한 값만 남아 있으면 정상동작합니다. 


즉, 꺼져있던 상태에서 켰거나,

동작중이었다면 파워오프후 (레지스터값이 사라질 정도후) 다시 파워를 켜서 부팅하면

항상 1개 CPU로 만 부팅되고,

(나머지 3개는 entry point 가 유효하지 않아 abort 상태일걸로 추정)

이상태에서 리셋 버튼을 눌러 부팅시키면 (레지스터에 이전 부팅과정에서 쓴 값이 남아 있어)

4개 CPU로 정상 부팅됩니다.


임시방편으로 u-boot 에서 스크래치레지스터에 __secondary_startup 주소를 써주고

커널 부팅시키면 됩니다.

제대로 하려면 entry point 값이 정상 설정된 이후 power up 되어 대기하다가, pen_release 에 의해

부팅진행하는 거겠지요.. 


현재 u-boot가 spi flash 안에 있는거 같은데,

u-boot 업데이트시키는 방법좀 알려주시기 바랍니다.

잘못시도했다가 부팅도 안되게 될까봐서요..

고도리

2014.07.09 07:02:24
*.200.239.210

내일 답변 드리겠습니다.


몇일 메일서버가 먹통이 되어서 깜빡했습니다.

답글 요청하는 것을.....ㅠ.ㅠ

有口無言

2014.07.09 23:23:17
*.200.239.210

답변이 늦어서 죄송합니다.

말씀하신 현상은 현재 부트로더(Secondboot) 패치로 해결이 되었습니다.

패치된 바이너리는 확인 후  배포하도록 하겠습니다.

감사합니다.

루비니

2014.07.29 07:33:58
*.218.12.26

배포 시기는 언제쯤인지요?

고도리

2014.08.01 01:20:22
*.200.239.210

아직 배포 안되었나요?....


유형목님이 깜빡하신 듯 합니다...ㅠ.ㅠ

오늘 얘기해 놓겠습니다.

유형목

2014.08.01 19:18:36
*.11.90.2

일단 올려두었습니다.


ftp://ftp.aesop.or.kr/aesop4330/binary/pyrope_2ndboot_pyrus_spi.img

ftp://ftp.aesop.or.kr/aesop4330/binary/pyrope_2ndboot_pyrus_usb.bin


퓨징방법은 다른 분이 올려주실겁니다. 제가 지금 5주짜리 강의중이라서. @@

有口無言

2014.08.01 20:34:51
*.200.239.210

secondboot 퓨징 방법입니다.

u-boot 프롬프트 상에서 fastboot 를 입력하시고 호스트 컴퓨터 상에서 

$ sudo fastboot flash 2ndboot pyrope_2ndboot_pyrus_spi.img

라고 입력하시면 됩니다.


usb 케이블이 mini usb 포트에 연결되어 있어야 하고

주의하실 점은 반드시 spi 용 바이너리를 확인하시고 퓨징하세요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
11 NXP3320 에서 CPU TYPE(MPU80) LCD를 붙이는게 가능한가요? [2] 행인1 2016-01-01 537
10 [aesop-4330] ts_calibrate 할때 화면에 십자 (+) 표시 [2] 루비니 2014-07-29 1420
» [NXP4330] CPU Core 가 사용불가 상태로 가는 경우? [13] 루비니 2014-06-18 3036
8 공동구매 배송이 모두 완료된건가요? 아직 못 받았어요 [2] 임은향 2014-06-05 1679
7 비디오 플레이시 colorspace U/V 바뀜현상 [5] 루비니 2014-05-17 1799
6 Ubuntu 부팅? [4] 루비니 2014-05-08 1834
5 MFC 성능문의? [5] 이학남 2014-03-13 2251
4 Camera Pipeline 관련 정보를 부탁 드립니다. [4] 꿈의사람 2014-02-28 3586
3 BSP 수준 (아래질문에 이어서) [1] yuno 2014-02-26 2282
2 AESOP-4330 BSP의 수준? [3] 관리자 2014-02-26 3474
1 aesop-4330 관련 질문/답변 게시판을 만들었습니다. 유형목 2014-02-26 1973

사용자 로그인