embeded/raspberry pi2016. 9. 26. 20:55

커널 빌드 할 때

arm-linux-gnueabihf-gcc

이런걸 볼 수 있는데

ARM용 리눅스에 있는 gcc 패키지랑은 차이가 있을까?


$ gcc -v

Using built-in specs.

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.9/lto-wrapper

Target: arm-linux-gnueabihf

Configured with: ../src/configure -v --with-pkgversion='Raspbian 4.9.2-10' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf

Thread model: posix

gcc version 4.9.2 (Raspbian 4.9.2-10) 


~/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin $ arm-linux-gnueabihf-gcc -v

Using built-in specs.

COLLECT_GCC=arm-linux-gnueabihf-gcc

COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.9/lto-wrapper

Target: arm-linux-gnueabihf

Configured with: ../src/configure -v --with-pkgversion='Raspbian 4.9.2-10' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf

Thread model: posix

gcc version 4.9.2 (Raspbian 4.9.2-10)


비교해보니 차이가 없다?!?

즉, 우분투에 들은 gcc는 커널빌드 하는데 써도 문제 없는 동일한 녀석이다 라는거?


[링크 : http://stackoverflow.com/.../arm-gcc-toolchain-as-arm-elf-or-arm-none-eabi-what-is-the-difference]

[링크 : https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=99127]

[링크 : http://elinux.org/Raspberry_Pi_Kernel_Compilation]

[링크 : http://elinux.org/RPi_Linaro_GCC_Compilation]


+

~/tools/arm-bcm2708 $ ll

total 20

drwxr-xr-x 7 pi pi 4096 Sep 26 23:28 arm-bcm2708hardfp-linux-gnueabi

drwxr-xr-x 7 pi pi 4096 Sep 26 23:26 arm-bcm2708-linux-gnueabi

drwxr-xr-x 8 pi pi 4096 Sep 26 23:28 arm-rpi-4.9.3-linux-gnueabihf

drwxr-xr-x 7 pi pi 4096 Sep 26 23:30 gcc-linaro-arm-linux-gnueabihf-raspbian

drwxr-xr-x 7 pi pi 4096 Sep 26 23:29 gcc-linaro-arm-linux-gnueabihf-raspbian-x64 


일단은 다 x86/x86-64용 크로스컴파일러네..

$ file arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-gcc

arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-gcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.15, BuildID[sha1]=e2801f48a84144e2b40d6083baac317057662b3c, stripped


$ file arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-gcc

arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-gcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.15, BuildID[sha1]=7b34f10a2af2e57b673121196522143f50868487, stripped


$ file arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=e0df943f126fe91df411d950dd26652126a1e06d, stripped

$ file gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc-4.8.3
gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc-4.8.3: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.15, stripped

 $ file gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc-4.8.3
gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc-4.8.3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=04d49c97b46fb3d971e496e6721137f6bab56342, stripped

얘는 라즈베리 gcc 패키지

 $ file /usr/bin/gcc-4.9

/usr/bin/gcc-4.9: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=f711b7c3e25f3a887b6908bb3ef6d1cefba92340, stripped



Posted by 구차니
embeded/Cortex-M4 Ti2016. 9. 24. 12:19

lm3s1607 메인 클럭 트리

tm4c1231 메인 클럭 트리

PLL 이후 DIV400 이라는 녀석이 추가 되었다.


데이터 시트 상으로는 2_5 이런식으로 되어 있는 클럭으로 설정하면 80MHz를 쓸 수 있을 것 같은데

막상 설정해보니 부팅이 안되네.. 다른 무언가가 있는건가?

(아니면 새로뜬 보드가 잘못 설계되었거나?)


런치패드에서 빌드가 되어서 돌아가는 거 봐서는..

회로 레벨에서 무언가 차이가 있는 건가?

'embeded > Cortex-M4 Ti' 카테고리의 다른 글

tm4c123 rtc hibernate module  (0) 2016.09.28
tm4c uart fifo/buffer 문제  (0) 2016.09.28
ek-tm4c123gxl launchpad 클럭  (0) 2016.09.24
tm4c 에서 8 MHz 클럭으로 adc 작동...  (0) 2016.09.24
lm3s tm4c 내장 온도센서 범위  (0) 2016.09.24
Posted by 구차니
embeded/Cortex-M4 Ti2016. 9. 24. 11:39

데이터 시트 / 메뉴얼? 상에는 일단 16MHz 크리스탈과

하이버네이트 모듈을 위한 32.768KHz 의 크리스탈이 달려있는데


16MHz 짜리는 검은색 반도체 같이 생겨 먹었고

32.768KHz 짜리는 일반적인 깡통형이다.


걍.. 16MHz 짜리 쓸까.. 속편하게..


[링크 : http://www.ti.com/lit/ug/spmu296/spmu296.pdf]






Posted by 구차니
embeded/Cortex-M4 Ti2016. 9. 24. 11:27

와.. 손 데는 줄 -_-


코드는 작동하는데

원인불명으로 온도가 80~90도 정도 까지 3~4초 내로 치솟는다..


근데.. 얘가 ADC 떄문인지 먼진 모르겠는데..

아무튼 ADC 자체가 작동하는 걸봐서는..

System Clock 이라서 OSC와는 별개로 작동하는게 아닌가 싶다.


뜨거워지는 원인을 찾아야겠네...




2016/05/20 - [embeded/Cortex-M4 Ti] - TM4C1231E6PM ADC


'embeded > Cortex-M4 Ti' 카테고리의 다른 글

lm3s tm4c 시스템 클럭 차이점  (0) 2016.09.24
ek-tm4c123gxl launchpad 클럭  (0) 2016.09.24
lm3s tm4c 내장 온도센서 범위  (0) 2016.09.24
lm3s -> tm4c i2c 마이그레이션... 망할!  (2) 2016.09.22
tm4c tivaware 버전관련  (0) 2016.09.01
Posted by 구차니
embeded/Cortex-M4 Ti2016. 9. 24. 11:08

lm3s

2.7V ~ 0.3V

-55C ~ 125C



tm4c

2.5V ~ 0.833V

-40C ~ 85C




예제 소스상에서도

tm4c

    uint32_t pui32ADC0Value[1];

    ui32TempValueC = ((1475 * 1023) - (2250 * pui32ADC0Value[0])) / 10230;


lm3s

    unsigned long ulADC0_Value[1];

    ulTemp_ValueC = ((1475 * 1023) - (2250 * ulADC0_Value[0])) / 10230;



하지만 수식 자체는 변화하지 않았는데


인터넷 뒤져보니 온도가 마이너스로 나온다고 해서 비슷한 유형 발견!

[링크 : https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/t/427716]

[링크 : https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/t/277685]


아무튼 실험적으로

ulTemp_ValueC = (1475 - (75 * 33 * ulADC0_Value) / 4096) / 10;

이렇게 쓰긴 해보는데 맞나 모르겠네...



일단 열풍기로 50도 맞추고 측정해 보니까 대충은 맞게 나오는 듯

Posted by 구차니
embeded/Cortex-M4 Ti2016. 9. 22. 11:17

master_slave_loopback.c 파일을 보고 따라해보니 이제야 되는 기분


예전 lm3s 에서는 GPIOPinConfigure() 요런거 쓴적이 없는데 tm4c로 오면서 생긴건가?...

마이그레이션 문서에도 크게 언급된게 없어서 넘어갔었는데

이걸 추가해주니 이제야 i2c가 되네 ㅠㅠ


    //

    // The I2C0 peripheral must be enabled before use.

    //

    SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);


    //

    // For this example I2C0 is used with PortB[3:2].  The actual port and

    // pins used may be different on your part, consult the data sheet for

    // more information.  GPIO port B needs to be enabled so these pins can

    // be used.

    // TODO: change this to whichever GPIO port you are using.

    //

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);


    //

    // Configure the pin muxing for I2C0 functions on port B2 and B3.

    // This step is not necessary if your part does not support pin muxing.

    // TODO: change this to select the port/pin you are using.

    //

    GPIOPinConfigure(GPIO_PB2_I2C0SCL);

    GPIOPinConfigure(GPIO_PB3_I2C0SDA);


    //

    // Select the I2C function for these pins.  This function will also

    // configure the GPIO pins pins for I2C operation, setting them to

    // open-drain operation with weak pull-ups.  Consult the data sheet

    // to see which functions are allocated per pin.

    // TODO: change this to select the port/pin you are using.

    //

    GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2);

    GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3); 


'embeded > Cortex-M4 Ti' 카테고리의 다른 글

tm4c 에서 8 MHz 클럭으로 adc 작동...  (0) 2016.09.24
lm3s tm4c 내장 온도센서 범위  (0) 2016.09.24
tm4c tivaware 버전관련  (0) 2016.09.01
오늘의 지름.. 개발보드  (0) 2016.08.24
TM4C1231E6PM ADC  (0) 2016.05.20
Posted by 구차니
embeded/raspberry pi2016. 9. 12. 15:36

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

ondemand


cpufrequtils를 삭제후 리부팅 하니 기본적으로 ondemand 인 것 같고


$ ll /etc/init.d/cpufrequtils

-rwxr-xr-x 1 root root 2489 May  6  2012 cpufrequtils

위의 경로에서 내용을 바꾸어 주면 기본 거버너가 변경/설정이 가능 한 듯.


$ cat /etc/init.d/cpufrequtils

#!/bin/sh

### BEGIN INIT INFO

# Provides:       cpufrequtils

# Required-Start: $remote_fs loadcpufreq

# Required-Stop:

# Default-Start:  2 3 4 5

# Default-Stop:

# Short-Description: set CPUFreq kernel parameters

# Description: utilities to deal with CPUFreq Linux

#       kernel support

### END INIT INFO

#


DESC="CPUFreq Utilities"


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

CPUFREQ_SET=/usr/bin/cpufreq-set

CPUFREQ_INFO=/usr/bin/cpufreq-info

CPUFREQ_OPTIONS=""


# use lsb-base

. /lib/lsb/init-functions


# Which governor to use. Must be one of the governors listed in:

#   cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

#

# and which limits to set. Both MIN_SPEED and MAX_SPEED must be values

# listed in:

#   cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

# a value of 0 for any of the two variables will disabling the use of

# that limit variable.

#

# WARNING: the correct kernel module must already be loaded or compiled in.

#

# Set ENABLE to "true" to let the script run at boot time.

#

# eg:   ENABLE="true"

#       GOVERNOR="ondemand"

#       MAX_SPEED=1000

#       MIN_SPEED=500


ENABLE="true"

GOVERNOR="ondemand"

MAX_SPEED="0"

MIN_SPEED="0"


check_governor_avail() {

        info="/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors"

        if [ -f $info ] && grep -q "\<$GOVERNOR\>" $info ; then

                return 0;

        fi

        return 1;

}


[ -x $CPUFREQ_SET ] || exit 0


if [ -f /etc/default/cpufrequtils ] ; then

        . /etc/default/cpufrequtils

fi


# if not enabled then exit gracefully

[ "$ENABLE" = "true" ] || exit 0


if [ -n "$MAX_SPEED" ] && [ $MAX_SPEED != "0" ] ; then

        CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --max $MAX_SPEED"

fi


if [ -n "$MIN_SPEED" ] && [ $MIN_SPEED != "0" ] ; then

        CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --min $MIN_SPEED"

fi


if [ -n "$GOVERNOR" ] ; then

        CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --governor $GOVERNOR"

fi


CPUS=$(cat /proc/stat|sed -ne 's/^cpu\([[:digit:]]\+\).*/\1/p')

RETVAL=0

case "$1" in

        start|force-reload|restart|reload)

                log_action_begin_msg "$DESC: Setting $GOVERNOR CPUFreq governor"

                if check_governor_avail ; then

                        for cpu in $CPUS ; do

                                log_action_cont_msg "CPU${cpu}"

                                $CPUFREQ_SET --cpu $cpu $CPUFREQ_OPTIONS 2>&1 > /dev/null || \

                                        RETVAL=$?

                        done

                        log_action_end_msg $RETVAL ""

                else

                        log_action_cont_msg "disabled, governor not available"

                        log_action_end_msg $RETVAL

                fi

                ;;

        stop)

                ;;

        *)

                echo "Usage: $0 {start|stop|restart|reload|force-reload}"

                exit 1

esac


exit 0 


Posted by 구차니
embeded/raspberry pi2016. 9. 12. 15:33

머.. 별 차이도 없는 기분? 라즈베리 자체가 600MHz ~ 900Mhz 이긴한데

딱 두단계 뿐이라 클럭 조절에 대한 여유가 없는 걸지도 모르겠다.


$ cpufreq-info

cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009

Report errors and bugs to cpufreq@vger.kernel.org, please.

analyzing CPU 0:

  driver: BCM2835 CPUFreq

  CPUs which run at the same hardware frequency: 0 1 2 3

  CPUs which need to have their frequency coordinated by software: 0 1 2 3

  maximum transition latency: 355 us.

  hardware limits: 600 MHz - 900 MHz

  available frequency steps: 600 MHz, 900 MHz

  available cpufreq governors: conservative, ondemand, userspace, powersave, performance

  current policy: frequency should be within 600 MHz and 900 MHz.

                  The governor "ondemand" may decide which speed to use

                  within this range.

  current CPU frequency is 600 MHz.

  cpufreq stats: 600 MHz:52.90%, 900 MHz:47.10%  (9)


$ sudo cpufreq-set -g conservative

$ cpufreq-info

cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009

Report errors and bugs to cpufreq@vger.kernel.org, please.

analyzing CPU 0:

  driver: BCM2835 CPUFreq

  CPUs which run at the same hardware frequency: 0 1 2 3

  CPUs which need to have their frequency coordinated by software: 0 1 2 3

  maximum transition latency: 355 us.

  hardware limits: 600 MHz - 900 MHz

  available frequency steps: 600 MHz, 900 MHz

  available cpufreq governors: conservative, ondemand, userspace, powersave, performance

  current policy: frequency should be within 600 MHz and 900 MHz.

                  The governor "conservative" may decide which speed to use

                  within this range.

  current CPU frequency is 600 MHz.

  cpufreq stats: 600 MHz:63.64%, 900 MHz:36.36%  (15) 


$ sudo cpufreq-set -g powersave

$ cpufreq-info

cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009

Report errors and bugs to cpufreq@vger.kernel.org, please.

analyzing CPU 0:

  driver: BCM2835 CPUFreq

  CPUs which run at the same hardware frequency: 0 1 2 3

  CPUs which need to have their frequency coordinated by software: 0 1 2 3

  maximum transition latency: 355 us.

  hardware limits: 600 MHz - 900 MHz

  available frequency steps: 600 MHz, 900 MHz

  available cpufreq governors: conservative, ondemand, userspace, powersave, performance

  current policy: frequency should be within 600 MHz and 900 MHz.

                  The governor "powersave" may decide which speed to use

                  within this range.

  current CPU frequency is 600 MHz.

  cpufreq stats: 600 MHz:74.84%, 900 MHz:25.16%  (15)


$ sudo cpufreq-set -g performance

$ cpufreq-info

cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009

Report errors and bugs to cpufreq@vger.kernel.org, please.

analyzing CPU 0:

  driver: BCM2835 CPUFreq

  CPUs which run at the same hardware frequency: 0 1 2 3

  CPUs which need to have their frequency coordinated by software: 0 1 2 3

  maximum transition latency: 355 us.

  hardware limits: 600 MHz - 900 MHz

  available frequency steps: 600 MHz, 900 MHz

  available cpufreq governors: conservative, ondemand, userspace, powersave, performance

  current policy: frequency should be within 600 MHz and 900 MHz.

                  The governor "performance" may decide which speed to use

                  within this range.

  current CPU frequency is 900 MHz.

  cpufreq stats: 600 MHz:79.71%, 900 MHz:20.29%  (16)


Posted by 구차니
embeded/odroid2016. 9. 12. 15:07

개인적으로는

performance가 가장 좋고(당연한가?)

conservative가 부담이 적고 (클럭 다운되지만 빠르게 오르는지 버벅대는 느낌이 적음)

ondemand는 느린 느낌이고

나머지 가버너는 목록에 안떠서.. 나중에 실험을 해봐야 할 듯.



1. Ondemand


이건 다들 알거라 생각합니다. 이가버저의 특징은 수요에 따라 클럭을 조절한다는거죠.수요가 높으면 클럭을 올리고 수요가 낮으면

클럭을 낮추고 이렇기 때문에 베터리 효율도 높고 성능도 무난하게 뽑아줘서 안드로이드 대부분의 기기의 기본 가버너로 설정되어있습니다.(갤넥같은경우 인터렉티브가 기본이더군요;;) 이 가버너는 xda에서 유명한 커널중 하나인 트리니티 커널에서도의 기본가버너로 설정되어있다고 하네요.


8. Pegasusq


ondemand기반으로 만들어진 가버너입니다. 그런데 이 가버너는 특이하게 클럭조절을 

중간클럭까지 골고루 섞어쓰기떄문에

저랑 한분이 한때 ondemand랑 interactive 이두개를놓고 서로 이기반이라 토론을 한적도 있습니다.

하지만 중간클럭을 쓰는건 ondemand에다가 hotplug를 섞었기 때문이라고 합니다. 

이 가버너가 생성된 배경은 코어가 4개나되는 쿼드코어 엑시노스를 풀가동 동기식으로했다간 폰베터리를 사살하는거밖에 안된다고 생각이든 삼성이 비동기식의 성질을 띄는hotplug를 섞어서 반비동기식형태로 제작하였습니다. 그래서 퍼포먼스와 배터리를 둘다잡은 가버너라 할수있지요. 그래서 요즘 대부분 커스텀 커널에는 듀얼코어용 pegasusq가버너를 추가하는 추세입니다.

하지만 엄연히 비동기식하고 틀립니다. 

참고로 이런성질때문에 싱글코어에서는 이가버너가

ondemand랑 똑같은 가버너가 되버리니 싱코에선 굳이 이 가버너를 채택할 필요는 없어보입니다.


11. Hotplug


이 가버너는 ondemand가버너와 매우 흡사한 가버너라고 합니다. 이 가버너 역시 또한 클럭수 요구에 따락 클럭을 올리고 내리고 한답니다. 하지만 다른가버너와 확연히 차이아는 차이점이있다면 바로 cpu부하가 매우적을때 (예로들어 대기모드일때) cpu하나를 꺼버린다고 합니다.

그래서 베터리를 아깐다고 하네요.


17. Conservative

이 가버너는 최대한 가능하면 저클럭에 머물려하고 하는 특징이 있다고 합니다. 다르게 표현을 하면 cpu가 클럭을 올리려면 계속 cpu에 부하를 줘야한다네요. 그리고 최소클럭을 사용자가 지정해줄경우 퍼포먼스가 떨어질 수 있다네요. 반대로 최소클럭을 내리면 베터리에는 좋다고 합니다.  


[링크 : http://sonjuhy.tistory.com/entry/가버너에-따른설명]


코드명은 'Pegasus'

여담으로 삼성전자는 쿼드코어 구성이 많다고 생각 하였는지, Ondemand 와 Hot-plug 기반의 가버너를 섞어서 퀄컴의 Qualcomm Krait 시리즈같이 비동기식 비슷하게 작동할 수 있게 하는 Pegasusq 라는 신종 가버너를 만들어 지원했다

[링크 : https://namu.wiki/w/삼성%20엑시노스?from=엑시노스#s-2.1.2.3]



cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009

Report errors and bugs to cpufreq@vger.kernel.org, please.

analyzing CPU 0:

  driver: exynos_cpufreq

  CPUs which run at the same hardware frequency: 0

  CPUs which need to have their frequency coordinated by software: 0

  maximum transition latency: 11.0 us.

  hardware limits: 200 MHz - 2.00 GHz

  available frequency steps: 2.00 GHz, 1.92 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 80z

  available cpufreq governors: userspace, powersave, conservative, ondemand, performance

  current policy: frequency should be within 200 MHz and 1.60 GHz.

                  The governor "ondemand" may decide which speed to use

                  within this range.

  current CPU frequency is 200 MHz (asserted by call to hardware).

  cpufreq stats: 2.00 GHz:0.00%, 1.92 GHz:0.00%, 1.80 GHz:0.00%, 1.70 GHz:0.00%, 1.60 GHz:99.54%, 1.50 GHz:0.00%, 1.40 GHz:0.00%, 1.30 GHz:0.00%, 1.20) 


[링크 : http://odroid.us/mediawiki/index.php?title=Use_cpufrequtils_to_Adjust_Processor_Settings]

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

odoroid 지름... 예정?  (0) 2016.10.03
odroid u3 전력소모량 체크  (0) 2016.10.01
odroid u3 kernel build  (0) 2016.09.11
odroid cpufrequtils를 이용한 클럭 조절  (0) 2016.09.11
odroid mac address의 신비  (0) 2016.09.10
Posted by 구차니
embeded/odroid2016. 9. 11. 17:23
한번 빌드 해봐야지
하는김에 distcc + wins resolve 해서 시도

[링크 : https://github.com/hardkernel/linux]

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

odroid u3 전력소모량 체크  (0) 2016.10.01
odroid 가버너 관련  (0) 2016.09.12
odroid cpufrequtils를 이용한 클럭 조절  (0) 2016.09.11
odroid mac address의 신비  (0) 2016.09.10
odroid u3 governor  (0) 2016.09.09
Posted by 구차니