embeded/odroid2016. 10. 1. 18:47

powersave 2.66W

>> kernl -j4 2.67W

>> kernl -j2 2.86W


performance 2.77W

>> kernel -j4 6.3W



음.. 의외로 조금 먹네?

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

odroid eMMC 설정  (0) 2016.10.04
odoroid 지름... 예정?  (0) 2016.10.03
odroid 가버너 관련  (0) 2016.09.12
odroid u3 kernel build  (0) 2016.09.11
odroid cpufrequtils를 이용한 클럭 조절  (0) 2016.09.11
Posted by 구차니
embeded/Cortex-M4 Ti2016. 9. 28. 20:54



[링크 : http://stackoverflow.com/questions/31887470/get-the-timestamp-from-microcontroller-tm4c123-in-c]

[링크 : http://forum.43oh.com/topic/7533-tm4c129-hibernation-rtc-and-calendar-mode/]


tm4c123x 에서 tm4c129x로 가야 할지도 모르겠네 -_-

[링크 : http://www.deyisupport.com/.../an01296-Differences-Between-TM4C123x-and-TM4C129x-MCUs.pdf]

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

tm4c HibernateEnableExpClk() 차이점  (0) 2016.10.22
tm4c ..어라? hibernate...  (0) 2016.10.20
tm4c uart fifo/buffer 문제  (0) 2016.09.28
lm3s tm4c 시스템 클럭 차이점  (0) 2016.09.24
ek-tm4c123gxl launchpad 클럭  (0) 2016.09.24
Posted by 구차니
embeded/Cortex-M4 Ti2016. 9. 28. 20:00

lm3s에서 tm4c로 바꾸었는데.. (아니 바꾸는 중?)

웬지 모르게 uart1의 RX가 5byte buffer(fifo)를 가지고 덜 뱉어내는 기분?


분명히


UARTFIFODisable(UART0_BASE);

UARTFIFODisable(UART1_BASE);


을 해줘서 둘다 fifo를 껐는데도 왜이러지? ㅠㅠ


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

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


[링크 : http://www.deyisupport.com/.../an01296-Differences-Between-TM4C123x-and-TM4C129x-MCUs.pdf]

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

tm4c ..어라? hibernate...  (0) 2016.10.20
tm4c123 rtc hibernate module  (0) 2016.09.28
lm3s tm4c 시스템 클럭 차이점  (0) 2016.09.24
ek-tm4c123gxl launchpad 클럭  (0) 2016.09.24
tm4c 에서 8 MHz 클럭으로 adc 작동...  (0) 2016.09.24
Posted by 구차니
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 구차니