xu4 5.4.y/6.1.y 컴파일 환경

Post Reply
Rizen
Posts: 12
Joined: Sat Oct 29, 2022 5:39 pm
languages_spoken: english
ODROIDs: N2,HC2,H2+
Has thanked: 0
Been thanked: 0
Contact:

xu4 5.4.y/6.1.y 컴파일 환경

Post by Rizen »

안녕하세요.
수중에 있는 odroid hc2에 buildroot를 이용하여 리눅스를 올리는 것을 시도하고 있습니다.
buildroot의 odroidxu4_defconfig는 4.14.y 기반이라서 5.4.y나 6.1.y에 맞게 repository를 수정하였습니다.

Code: Select all

기존 4.14.y 기반
https://github.com/hardkernel/linux/tree/4.14.16-104

5.4.y에 사용한 repository
https://github.com/hardkernel/linux/tree/odroid-5.4.y

6.1.y에 사용한 repository
https://github.com/hardkernel/linux/tree/odroidxu4-6.1.y
buildroot로 빌드하는거 자체에서는 문제가 발생하지는 않았고, 이미지 파일도 정상적으로 생성이 되었습니다.
(5.4.y의 경우에는 make headers_install에서 error가 발생하여 patch를 적용했습니다.)

여기서부터 문제가 발생하는데, 4.14.y를 제외하고서는 전부 다 동일한 내용의 kernel panic이 발생합니다.
buildroot에서 쓰이는 toolchain도 여러개 바꿔서 build를 해보았지만 항상 panic으로 끝났습니다.
사용해본 toolchain은 아래와 같습니다.

Code: Select all

buildroot toolchain gcc 11.x(직접 빌드)
buildroot toolchain gcc 12.x(직접 빌드)
buildroot toolchain gcc 13.x(직접 빌드)
Linaro GCC 7.5-2019.12(linaro 사이트에서 다운로드)
하드커널에서 제공해주는 ubuntu나 armbian 이미지를 올려서 부팅했을때는 panic이 뜨지 않아서 hardware 문제는 아닌 것으로 보입니다.
혹시나 uboot 빌드 과정에서 문제가 있는게 아닐까 싶어서
하드커널 ubuntu(6.1.y)랑 armbian(6.1.y)에서 zImage만 가지고 와서 바꿔치기를 해보니까 login prompt까지 잘 뜹니다.
(그렇지만 kernel module/header 버전이 zImage와 다른 상태라서 제대로는 쓸 수 없습니다.)

Kernel panic에서 올라오는 log는 첨부파일에 올렸습니다.
5.4.y를 사용해도 동일하고, 6.1.y를 사용해도 동일하고, toolchain을 바꿔도 동일하고, host 환경(배포판)을 바꿔도 동일합니다.

Code: Select all

사용해본 배포판, 전부 x86_64
arch linux
artix linux
void linux
하드커널에서 제공해주는 ubuntu-22.04-6.1-minimal-odroid-xu4-20230905는 정상적으로 부팅이 되는 것을 확인해서
해당 이미지를 빌드 할 때 사용한 toolchain과 host 환경을 알고 싶어서 글을 남깁니다.
감사합니다.
Attachments
output.txt
(28.77 KiB) Downloaded 11 times

User avatar
odroid
Site Admin
Posts: 42193
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 3619 times
Been thanked: 2005 times
Contact:

Re: xu4 5.4.y/6.1.y 컴파일 환경

Post by odroid »

저희는 XU4에서 Ubuntu를 부팅시키고 그 위에서 커널을 빌드하거나 QEMU ARM 환경에서 빌드합니다.
즉, Buildroot처럼 Cross-build 방식이 아닌 Native-build만 사용해왔습니다.
따라서 직접적인 조언을 해드릴만한 경험이 없습니다. 올려주신 로그파일에도 커널패닉의 원인이라고 볼만한 것은 못 찾았습니다.

저희 우분투 이미지의 uboot 을 그대로 사용하고 크로스 빌드하신 커널만 기록하여 부팅하면 어떻게 되는지 시도해볼 가치는 있을것 같습니다.

Rizen
Posts: 12
Joined: Sat Oct 29, 2022 5:39 pm
languages_spoken: english
ODROIDs: N2,HC2,H2+
Has thanked: 0
Been thanked: 0
Contact:

Re: xu4 5.4.y/6.1.y 컴파일 환경

Post by Rizen »

지금 글을 다시 읽어보니까 제가 이상하게 쓴거 같습니다.
uboot 바이너리가 문제인지 아니면 linux 커널 바이너리가 문제인지 확인하고 싶어서 먼저 하드커널 ubuntu(6.1.y)의 linux 커널 바이너리인 zImage를 제가 cross 빌드한 zImage 결과물에 바꿔치기를 해보니 login prompt까지 뜬 것을 확인했다는 것을 이야기하고 싶었습니다.
그래서 제가 cross 빌드한 uboot 바이너리까지는 정상이고 제가 cross 빌드한 zImage가 문제가 있다는 것 같습니다.
제가 빌드한 uboot 바이너리가 문제였었다면 답은 말씀해주신대로 간단해졌을거 같습니다!

아무튼 말씀주신대로 hc2 상에서 하드커널 ubuntu를 올리고 거기서 kernel, kernel modules, headers 등등은 native build를 해보도록 하겠습니다.
감사합니다!

Rizen
Posts: 12
Joined: Sat Oct 29, 2022 5:39 pm
languages_spoken: english
ODROIDs: N2,HC2,H2+
Has thanked: 0
Been thanked: 0
Contact:

Re: xu4 5.4.y/6.1.y 컴파일 환경

Post by Rizen »

며칠동안 여러가지 toolchain, host환경 또는 native환경을 바꿔가면서 test해봤지만 그 결과물로 부팅을 해보았을때 항상 똑같이 dma_alloc_attr, g2d_bind가 뜨는 kernel panic은 한결같이 발생하였습니다.
toolchain또는 컴파일러 문제는 아닌거 같아서 armbian의 kernel config를 가져와서 적용 후에 빌드를 해보니 정상적으로 부팅되는 것을 확인하였습니다.
기존까지는 odroidxu4-6.1.y 브랜치에서 clone을 수행한 뒤에 make odroidxu4_defconfig로 config를 만들었었는데, 이것이 문제였던 것 입니다.

armbian또는 4.14.y의 arch/arm/config/odroidxu4_defconfig와 odroidxu4-6.1.y의 것을 비교하며 kernel panic을 유발시키는 항목을 하나씩 쳐내볼까 생각 중인데, 문제를 일으킬거로 의심되는 항목 2개가 눈에 먼저 보이기는 합니다.
CONFIG_PHYS_ADDR_T_64BIT=y와 CONFIG_ARCH_DMA_ADDR_T_64BIT=y 인데, 이 두개가 odroidxu4 커널 컴파일 할때 y로 설정되어야 되는건지 궁금합니다.

또한 config파일을 만들때 make odroidxu4_defconfig 명령만 치면 되는것인지 아니면 다른것도 해줘야하는건지도 궁금힙니다.

User avatar
odroid
Site Admin
Posts: 42193
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 3619 times
Been thanked: 2005 times
Contact:

Re: xu4 5.4.y/6.1.y 컴파일 환경

Post by odroid »

XU4의 RAM 크기가 2GB이므로 64bit addressing이 꼭 필요할것 같지는 않습니다만 혹시 다른 부작용은 없는지 확인은 필요합니다.
저희가 현재 Ubuntu 22.04에서 커널 6.6으로 GPU 기능과 성능을 테스트 하고 있는데 말씀하신 두가지 옵션이 모두 켜져있으며 시스템은 정상 동작합니다.
https://github.com/hardkernel/linux/blo ... onfig#L853
config를 생성하기 위해 추가로 필요한 과정은 없습니다.

Rizen
Posts: 12
Joined: Sat Oct 29, 2022 5:39 pm
languages_spoken: english
ODROIDs: N2,HC2,H2+
Has thanked: 0
Been thanked: 0
Contact:

Re: xu4 5.4.y/6.1.y 컴파일 환경

Post by Rizen »

ubuntu-22.04-6.1-minimal-odroid-xu4 이미지의 /proc/config.gz를 가져와 적용 후 build 했을때도 dma_alloc_attr, g2d_bind가 뜨는 kernel panic이 발생했습니다.

위 하드커널 공식 이미지에도 CONFIG_PHYS_ADDR_T_64BIT=y와 CONFIG_ARCH_DMA_ADDR_T_64BIT=y가 설정된 것을 저도 방금 확인했는데, 무슨 차이로 인해서인지 제가 빌드하면 부팅이 안됩니다.

armbian의 config를 적용하면 부팅이 잘되는 것을 여러차례 확인한 상태라 config 설정 문제는 확실한거 같은데, 잘 모르겠습니다.

빌드 할 때 제가 뭔가를 놓쳐서 발생하는 일 인거 같은데, 그게 뭔지을 모르겠으니 armbian의 config 파일을 적용하여 사용하도록하겠습니다.

Rizen
Posts: 12
Joined: Sat Oct 29, 2022 5:39 pm
languages_spoken: english
ODROIDs: N2,HC2,H2+
Has thanked: 0
Been thanked: 0
Contact:

Re: xu4 5.4.y/6.1.y 컴파일 환경

Post by Rizen »

Xorg를 test해보면서 g2d_bind가 어디서 온 것인지를 확인했습니다.
CONFIG_DRM_EXYNOS_G2D를 활성화 시키면 load되는 module 내에 있는 것이었습니다.
armbian에서 가져온 config를 적용했을때 G2D 관련된 kernel panic이 뜨지 않았던 이유는 armbian config에는 CONFIG_DRM_EXYNOS_G2D가 활성화 되어있지 않았기때문입니다.

그래서 armbian에서 가져온 config에다가 CONFIG_DRM_EXYNOS_G2D를 활성화 하면 바로 kernel panic이 뜨는 것도 확인을 했습니다.
근데 문제는 Xorg에서 원활한 가속을 하기 위해서는 G2D가 활성화 되어야하는거 같은데, G2D를 끄면 정상 부팅이 되고, 키면 kernel panic이 발생하니 뭘 어찌해야할지 모르는 상황이었습니다.

그러다가 생각난 것이 초기에 buildroot를 설정할때 dts를 exynos5422-odroidxu4.dts가 아닌 exynos5422-odroidhc1.dts로 설정했던것이 기억이 났습니다.
설마 이것 때문인가 싶어서 exynos5422-odroidxu4.dts를 사용하도록 설정을 했는데, CONFIG_DRM_EXYNOS_G2D를 활성화 시키고도 g2d_bind에서 kernel panic이 발생하지 않고 정상 부팅이 되었습니다!!

위에 제가 의심했던 config는 전혀 문제가 없는 것들이었고, 결국에는 exynos5422-odroidhc1.dts가 문제였던 것입니다.
지금은 hc2 위에서 즐겁게 glmark2-es2를 돌리고 있습니다. ^~^

User avatar
odroid
Site Admin
Posts: 42193
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 3619 times
Been thanked: 2005 times
Contact:

Re: xu4 5.4.y/6.1.y 컴파일 환경

Post by odroid »

원인 분석과 결과까지 공유해 주셔서 감사합니다.

그런데 HDMI 출력이 없는 HC2에서 어떻게 glmark2-es2를 돌리는지 궁금합니다. offscreen 옵션을 말씀하시는 것인가요?

Rizen
Posts: 12
Joined: Sat Oct 29, 2022 5:39 pm
languages_spoken: english
ODROIDs: N2,HC2,H2+
Has thanked: 0
Been thanked: 0
Contact:

Re: xu4 5.4.y/6.1.y 컴파일 환경

Post by Rizen »

따로 offscreen 관련된 설정해주지는 않았고, 하드커널에서 제공해주는 xu4 ubuntu 6.1.y의 xorg.conf를 그대로 갖다썼는데 offscreen으로 문제없이 돌았습니다.

Code: Select all

Section "Device"
        Identifier      "ODROID"
        Driver          "armsoc"
        Option          "Debug"         "false"
        Option          "DPMS"          "false"
        Option          "NoFlip"        "false"
        Option          "NoHardwareMouse" "true"
        Option          "NoG2D"         "false"
EndSection

Section "ServerLayout"
        Identifier      "Default Layout"
        Option          "BlankTime"     "0"
        Option          "StandbyTime"   "0"
        Option          "SuspendTime"   "0"
        Option          "OffTime"       "0"
EndSection

Section "DRI"
        Mode            0666
EndSection
xf86-video-armsoc는 직접 컴파일할려고 했으나 어디에서 소스코드 다운로드 해야할지 모르겠어서 제공해주시는 패키지를 압축풀어서 나온 바이너리를 갖다 사용했습니다.

Code: Select all

https://deb.odroid.in/5422-s/pool/main/x/xf86-video-armsoc/xserver-xorg-video-armsoc_1.4.1-0ubuntu9_armhf.deb
userspace driver 또한 제공해주시는거 사용을 했습니다.

Code: Select all

https://deb.odroid.in/5422-s/pool/main/m/mali-x11/mali-x11_20220602-311_armhf.deb

User avatar
odroid
Site Admin
Posts: 42193
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 3619 times
Been thanked: 2005 times
Contact:

Re: xu4 5.4.y/6.1.y 컴파일 환경

Post by odroid »

네, 궁금증이 풀렸습니다. :)

Post Reply

Return to “XU4/HC1/HC2/XU3”

Who is online

Users browsing this forum: No registered users and 1 guest