하드웨어/Storage2015. 5. 3. 22:16

간만에 업데이트가 있어서 해주는데

이번 버전은 보안 업뎃뿐인지 바로 리부팅 후 접속이 가능하다.



NAS를 구석에 쳐박을 예정인지라 놀고 있던 시끄러운 시게이트 하드를 달고

볼륨 구성! 4+2TB



일단.. 3시 즈음에 하드를 달고 볼륨을 구성을 했는데 8시 즈음에 구성이 완료되었던걸 봐서는..

단일 하드로 볼륨만 추가하고 기본 디스크의 RAID로 구성하지 않아서 빠른걸수도 있고

DS213j가 DS213+ 보다 의외로 빠른 것일수도 있고... 변수는 두개라 어느게 맞을진 알수가 없다 -_ㅠ


아무튼. 둘다 데이터 보호 없음 후덜덜덜덜 ㅠㅠ 무셔무셔


'하드웨어 > Storage' 카테고리의 다른 글

synology DS213j 보안 어드바이저  (0) 2015.05.08
ds213j file station 스트리밍  (0) 2015.05.06
wear leveling SD cards - sandisk extreme pro SDHC  (0) 2015.04.08
DS213+ RAID 복구  (0) 2015.04.03
Synology DS213j setup  (0) 2015.03.29
Posted by 구차니

어메이징 어드벤쳐 더 캐리비안 스크릿

이라는 게임을 주는데..


음.. 한달에 하나 푸는 거였나?




Posted by 구차니
개소리 왈왈/블로그2015. 4. 30. 22:12

네이버가 크롤링했나..

미친듯이 올라갔네.. ㄷㄷㄷ




'개소리 왈왈 > 블로그' 카테고리의 다른 글

한RSS 역사의 뒤안길로..  (0) 2015.05.14
벌써... 일년?  (0) 2015.05.13
잘가 구글 코드  (0) 2015.03.13
우비에 mediawiki 연결!  (0) 2015.03.11
우비 mediawiki 결국 해결 -_-  (0) 2015.03.10
Posted by 구차니
Programming/neon2015. 4. 30. 17:08

ARM NEON은 별도의 어셈블리 명령어로 작동하는 독립적인 하드웨어 이기 때문에

이녀석을 편하게 다루기 위한 일종의 매크로가 존재한다.


NEON 본질이라고 해석하면 되려나?


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

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

[링크 : http://hilbert-space.de/?p=22]

[링크 : http://www.armadeus.com/wiki/index.php?title=NEON_HelloWorld]



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

[링크 : https://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/ARM-NEON-Intrinsics.html]

'Programming > neon' 카테고리의 다른 글

neon auto vectoring  (0) 2015.05.06
kernel mode neon support?  (0) 2015.05.06
NEON instruction  (0) 2015.05.05
neon 예제 실행 + 커널 교체  (0) 2015.05.04
arm neon 예제 컴파일  (0) 2015.05.03
Posted by 구차니

Depth camera로 검색하다 보니

TOF 라는게 나오는데. 일종의.. 빛의 반사를 이용하여 거리를 재는 기기라고 하면 되려나?

현재로서는.. 키넥트에 포함된 녀석이 짱짱맨인 듯.


[링크 : http://darkpgmr.tistory.com/75]

[링크 : http://talkingaboutme.tistory.com/199] 키넥트

[링크 : http://en.wikipedia.org/wiki/Time_of_flight]


TOF 센서 제조사

Canesta >> MS 인수

Mesa 

Panasonic

SoftKinetic

[링크 : http://cyberkingdom.tistory.com/10]



+

2015.05.06 추가

[링크 : http://www.novitec.co.kr/kor3/technology/technology.html?part=03]

'이론 관련 > 사진 광학 관련' 카테고리의 다른 글

rolling shutter effect / jello effect ..  (0) 2015.05.22
SAD(Sum of Absolute Differences) 알고리즘  (0) 2015.05.06
촛점거리로 부터 거리 계산하기  (0) 2015.04.27
rolling shutter  (0) 2014.08.13
OLPF / MTF  (0) 2013.03.21
Posted by 구차니
embeded/raspberry pi2015. 4. 30. 11:12

결국 소득은.. 공식적인건 없고..

broadcom 에서 bcm2708 family로 그중에 실제 칩이름이 bcm2385 라는건가..

(요녀석은 ARM11 계열)



그래서..

bcm2709/bcm2836 cortex-a7 quad core 라고 명명된건가...



Power-on Value of User ID Register 0x2708A000 

[링크 : https://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf]


[PATCH] ARM: add support for BCM2708/BCM2835 and Raspberry Pi

[링크 : http://www.spinics.net/lists/arm-kernel/msg192883.html

Posted by 구차니
embeded/raspberry pi2015. 4. 29. 22:14

라즈베리 파이 2로 하면.. bcm2709나 bcm2708이 보이는데

공식홈페이지에는 bcm2836으로 기재가 된다.. 머지?


bcm2708 / bcm2835 ARM1176 - A/B/B+/Compute Module

bcm2709 / bcm2836 Cortex-A7 - 2 B


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

    [링크 : http://sourceforge.net/p/lcdproc/discussion/312/thread/c106d4b8/]

[링크 : http://www.raspberry-projects.com/pi/pi-hardware/bcm2835]


Technically 2708 is the family, and 2835 is a specific implementation

I actually get the impression all VC4 SoCs are based on the bcm2708, while VC3 is bcm2707

[링크 : http://raspberrypi.stackexchange.com/...sometimes-referred-to-as-bcm2708-sometimes-bcm2835]


음.. 결론은.. bmc270x는 GPU only 제품이고

bcm2836이 라즈베리 파이에 정식 cpu 명칭인건가? 모호하네...

도대체 커널에서 무수히 뿌려대는 bcm2708 bcm2709는 멀까?



[링크 : https://en.wikipedia.org/wiki/VideoCore#Table_of_SoCs_adopting_VideoCore_SIP_blocks]

Posted by 구차니
embeded/raspberry pi2015. 4. 29. 22:05




$ dtc

프로그램 'dtc'을(를) 설치하지 않습니다. 다음을 입력해 설치할 수 있습니다:

sudo apt-get install device-tree-compiler 


$ fdtdump bcm2709-rpi-2-b.dtb

/dts-v1/;

// magic:               0xd00dfeed

// totalsize:           0x163a (5690)

// off_dt_struct:       0x38

// off_dt_strings:      0x139c

// off_mem_rsvmap:      0x28

// version:             17

// last_comp_version:   16

// boot_cpuid_phys:     0x0

// size_dt_strings:     0x29e

// size_dt_struct:      0x1364


/ {

    #address-cells = <0x00000001>;

    #size-cells = <0x00000001>;

    compatible = "brcm,bcm2709";

    model = "Raspberry Pi 2 Model B";

    interrupt-parent = <0x00000001>;

    chosen {

        bootargs = [00];

    };

    aliases {

        soc = "/soc";

        spi0 = "/soc/spi@7e204000";

        i2c0 = "/soc/i2c@7e205000";

        i2c1 = "/soc/i2c@7e804000";

        i2s = "/soc/i2s@7e203000";

        gpio = "/soc/gpio";

        intc = "/soc/interrupt-controller";

        leds = "/soc/leds";

        sound = "/sound";

    };

    memory {

        device_type = "memory";

        reg = <0x00000000 0x736f6300>;

    };

    soc {

        compatible = "simple-bus";

        #address-cells = <0x00000001>;

        #size-cells = <0x00000001>;

        ranges = <0x7e000000 0x00000004 0x00000004>;

        linux,phandle = <0x00000013>;

        phandle = <0x00000013>;

        interrupt-controller {

            compatible = "brcm,bcm2708-armctrl-ic";

            reg = <0x7e00b200 0x00000097>;

            interrupt-controller;

            #interrupt-cells = <0x00000002>;

            linux,phandle = <0x00000001>;

            phandle = <0x00000001>;

        };

        gpio {

            compatible = "brcm,bcm2835-gpio";

            reg = <0x7e200000 0x000000bd>;

            interrupts = <0x00000002 0x00000003 0x00000004 0x00000000>;

            gpio-controller;

            #gpio-cells = <0x00000002>;

            interrupt-controller;

            #interrupt-cells = <0x00000002>;

            linux,phandle = <0x00000008>;

            phandle = <0x00000008>;

            spi0_pins {

                brcm,pins = <0x00000007 0x0000000b 0x00000004 0x00000004 0x00000004>;

                brcm,function = <0x00000004>;

                linux,phandle = <0x00000004>;

                phandle = <0x00000004>;

            };

            i2c0 {

                brcm,pins = <0x00000000 0x000000ee>;

                brcm,function = <0x00000004>;

                linux,phandle = <0x00000006>;

                phandle = <0x00000006>;

            };

            i2c1 {

                brcm,pins = <0x00000002 0x000000ee>;

                brcm,function = <0x00000004>;

                linux,phandle = <0x00000007>;

                phandle = <0x00000007>;

            };

            i2s {

                brcm,pins = <0x00000012 0x00000003 0x00000003 0x00000003>;

                brcm,function = <0x00000004>;

                linux,phandle = <0x00000002>;

                phandle = <0x00000002>;

            };

        };

        i2s@7e203000 {

            compatible = "brcm,bcm2708-i2s";

            reg = <0x7e203000 0x00000003 0x78000000 0x64697361>;

            dma-names = "tx", "rx";

            status = "disabled";

            #sound-dai-cells = <0x00000000>;

            pinctrl-names = "default";

            pinctrl-0 = <0x00000002>;

            linux,phandle = <0x0000000d>;

            phandle = <0x0000000d>;

        };

        spi@7e204000 {

            compatible = "brcm,bcm2708-spi";

            reg = <0x7e204000 0x000000bd>;

            interrupts = <0x00000002 0x00000136>;

            clocks = <0x00000003>;

            #address-cells = <0x00000001>;

            #size-cells = <0x00000000>;

            status = "disabled";

            pinctrl-names = "default";

            pinctrl-0 = <0x00000004>;

            linux,phandle = <0x0000000e>;

            phandle = <0x0000000e>;

            spidev@0 {

                compatible = "spidev";

                reg = <0x00000000>;

                #address-cells = <0x00000001>;

                #size-cells = <0x00000000>;

                spi-max-frequency = <0x0007a120>;

            };

            spidev@1 {

                compatible = "spidev";

                reg = <0x00000001>;

                #address-cells = <0x00000001>;

                #size-cells = <0x00000000>;

                spi-max-frequency = <0x0007a120>;

            };

        };

        i2c@7e205000 {

            compatible = "brcm,bcm2708-i2c";

            reg = <0x7e205000 0x000000bd>;

            interrupts = <0x00000002 0x00000136>;

            clocks = <0x00000005>;

            #address-cells = <0x00000001>;

            #size-cells = <0x00000000>;

            status = "disabled";

            pinctrl-names = "default";

            pinctrl-0 = <0x00000006>;

            clock-frequency = <0x000186a0>;

            linux,phandle = <0x0000000f>;

            phandle = <0x0000000f>;

        };

        i2c@7e804000 {

            compatible = "brcm,bcm2708-i2c";

            reg = <0x7e804000 0x000000bd>;

            interrupts = <0x00000002 0x00000136>;

            clocks = <0x00000005>;

            #address-cells = <0x00000001>;

            #size-cells = <0x00000000>;

            status = "disabled";

            pinctrl-names = "default";

            pinctrl-0 = <0x00000007>;

            clock-frequency = <0x000186a0>;

            linux,phandle = <0x00000010>;

            phandle = <0x00000010>;

        };

        leds {

            compatible = "gpio-leds";

            linux,phandle = <0x00000014>;

            phandle = <0x00000014>;

            act {

                label = "led0";

                linux,default-trigger = "mmc0";

                gpios = <0x00000008 0x00000004 0x00000004>;

                linux,phandle = <0x00000011>;

                phandle = <0x00000011>;

            };

            pwr {

                label = "led1";

                linux,default-trigger = "input";

                gpios = <0x00000008 0x00000004 0x00000004>;

                linux,phandle = <0x00000012>;

                phandle = <0x00000012>;

            };

        };

        arm-pmu {

            compatible = "arm,cortex-a7-pmu";

            interrupts = <0x00000003 0x00000001>;

        };

    };

    clocks {

        compatible = "simple-bus";

        #address-cells = <0x00000001>;

        #size-cells = <0x00000000>;

        i2c {

            compatible = "fixed-clock";

            reg = <0x00000001>;

            #clock-cells = <0x00000000>;

            clock-frequency = <0x0ee6b280>;

            linux,phandle = <0x00000005>;

            phandle = <0x00000005>;

        };

        clock@2 {

            compatible = "fixed-clock";

            reg = <0x00000002>;

            #clock-cells = <0x00000000>;

            clock-output-names = "spi";

            clock-frequency = <0x0ee6b280>;

            linux,phandle = <0x00000003>;

            phandle = <0x00000003>;

        };

    };

    timer {

        compatible = "arm,armv7-timer";

        clock-frequency = <0x0124f800>;

        interrupts = <0x00000003 0x00000003 0x00000003 0x00000001 0x00000004 0x00000004 0x00000004 0x00000004>;

        always-on;

    };

    cpus {

        #address-cells = <0x00000001>;

        #size-cells = <0x00000000>;

        linux,phandle = <0x00000015>;

        phandle = <0x00000015>;

        cpu@0 {

            device_type = "cpu";

            compatible = "arm,cortex-a7";

            reg = <0x00000f00>;

            clock-frequency = <0x2faf0800>;

            linux,phandle = <0x00000009>;

            phandle = <0x00000009>;

        };

        cpu@1 {

            device_type = "cpu";

            compatible = "arm,cortex-a7";

            reg = <0x00000f01>;

            clock-frequency = <0x2faf0800>;

            linux,phandle = <0x0000000a>;

            phandle = <0x0000000a>;

        };

        cpu@2 {

            device_type = "cpu";

            compatible = "arm,cortex-a7";

            reg = <0x00000f02>;

            clock-frequency = <0x2faf0800>;

            linux,phandle = <0x0000000b>;

            phandle = <0x0000000b>;

        };

        cpu@3 {

            device_type = "cpu";

            compatible = "arm,cortex-a7";

            reg = <0x00000f03>;

            clock-frequency = <0x2faf0800>;

            linux,phandle = <0x0000000c>;

            phandle = <0x0000000c>;

        };

    };

    __overrides__ {

        arm_freq = <0x00000009 0x6e63793a 0x66726571 0x636c6f63 0x30000000 0x75656e63 0x00000059 0x00000003 0x73746174 0x0000004f 0x00000003 0x73746174 0x000001b8 0x65717565 0x00000016 0x6b2d6672 0x00000003 0x6770696f 0x000001e1 0x00000003 0x6c696e75 0x69676765>;

        i2s = [00 00 00 0d 73 74 61 74 75 73 00];

        spi = [00 00 00 0e 73 74 61 74 75 73 00];

        i2c0 = [00 00 00 0f 73 74 61 74 75 73 00];

        i2c1 = [00 00 00 10 73 74 61 74 75 73 00];

        i2c0_baudrate = [00 00 00 0f 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];

        i2c1_baudrate = [00 00 00 10 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];

        act_led_gpio = <0x00000011 0x0000000c 0x733a3800>;

        act_led_activelow = <0x00000011 0x0000001a 0x782c6465>;

        act_led_trigger = [00 00 00 11 6c 69 6e 75 78 2c 64 65 66 61 75 6c 74 2d 74 72 69 67 67 65 72 00];

        pwr_led_gpio = <0x00000012 0x0000000c 0x733a3800>;

        pwr_led_activelow = <0x00000012 0x0000001a 0x782c6465>;

        pwr_led_trigger = [00 00 00 12 6c 69 6e 75 78 2c 64 65 66 61 75 6c 74 2d 74 72 69 67 67 65 72 00];

    };

    sound {

        linux,phandle = <0x00000016>;

        phandle = <0x00000016>;

    };

    __symbols__ {

        soc = "/soc";

        intc = "/soc/interrupt-controller";

        gpio = "/soc/gpio";

        spi0_pins = "/soc/gpio/spi0_pins";

        i2c0_pins = "/soc/gpio/i2c0";

        i2c1_pins = "/soc/gpio/i2c1";

        i2s_pins = "/soc/gpio/i2s";

        i2s = "/soc/i2s@7e203000";

        spi0 = "/soc/spi@7e204000";

        i2c0 = "/soc/i2c@7e205000";

        i2c1 = "/soc/i2c@7e804000";

        leds = "/soc/leds";

        act_led = "/soc/leds/act";

        pwr_led = "/soc/leds/pwr";

        clk_i2c = "/clocks/i2c";

        clk_spi = "/clocks/clock@2";

        cpus = "/cpus";

        v7_cpu0 = "/cpus/cpu@0";

        v7_cpu1 = "/cpus/cpu@1";

        v7_cpu2 = "/cpus/cpu@2";

        v7_cpu3 = "/cpus/cpu@3";

        sound = "/sound";

    };

};

overlays$ fdtdump lirc-rpi-overlay.dtb

/dts-v1/;

// magic:               0xd00dfeed

// totalsize:           0x594 (1428)

// off_dt_struct:       0x38

// off_dt_strings:      0x4b4

// off_mem_rsvmap:      0x28

// version:             17

// last_comp_version:   16

// boot_cpuid_phys:     0x0

// size_dt_strings:     0xe0

// size_dt_struct:      0x47c


/ {

    compatible = "brcm,bcm2708";

    fragment@0 {

        target-path = "/";

        __overlay__ {

            lirc_rpi {

                compatible = "rpi,lirc-rpi";

                pinctrl-names = "default";

                pinctrl-0 = <0x00000001>;

                status = "okay";

                rpi,sense = <0xffffffff>;

                rpi,softcarrier = <0x00000001>;

                rpi,invert = <0x00000000>;

                rpi,debug = <0x00000000>;

                linux,phandle = <0x00000002>;

                phandle = <0x00000002>;

            };

        };

    };

    fragment@1 {

        target = <0xdeadbeef>;

        __overlay__ {

            lirc_pins {

                brcm,pins = <0x00000011 0x00000084>;

                brcm,function = <0x00000001 0x00000092>;

                brcm,pull = <0x00000000 0x00000065>;

                linux,phandle = <0x00000001>;

                phandle = <0x00000001>;

            };

        };

    };

    __overrides__ {

        gpio_out_pin = <0x00000001 0x00000003 0x6272636d 0x00000010>;

        gpio_in_pin = <0x00000001 0x00000003 0x6272636d 0x00000010>;

        gpio_in_pull = <0x00000001 0x00000003 0x7270692c 0x00000016>;

        sense = <0x00000002 0x00000003 0x7270692c 0x30000000>;

        softcarrier = [00 00 00 02 72 70 69 2c 73 6f 66 74 63 61 72 72 69 65 72 3a 30 00];

        invert = [00 00 00 02 72 70 69 2c 69 6e 76 65 72 74 3a 30 00];

        debug = <0x00000002 0x00000002 0x735f5f00 0x2f667261>;

    };

    __symbols__ {

        lirc_rpi = "/fragment@0/__overlay__/lirc_rpi";

        lirc_pins = "/fragment@1/__overlay__/lirc_pins";

    };

    __fixups__ {

        gpio = "/fragment@1:target:0";

    };

    __local_fixups__ {

        fixup = "/fragment@0/__overlay__/lirc_rpi:pinctrl-0:0", "/__overrides__:gpio_out_pin:0", "/__overrides__:gpio_in_pin:0", "/__overrides__:gpio_in_pull:0", "/__overrides__:sense:0", "/__overrides__:softcarrier:0", "/__overrides__:invert:0", "/__overrides__:debug:0";

    };

}; 

Posted by 구차니
Linux2015. 4. 29. 10:06

디바이스 트리는

하드웨어 종속적인 부분(GPIO/timer 등등)을 커널에서 분리시켜 별도의 파일로 관리하는 것으로

기존의 board_*.c 파일을 대체하는 기술이다.


ARM 커널 패치등이 워낙 오래걸려 메인 트리를 적용하는데 오래 걸리다 보니 이런식으로 분리하는데

2013년 정도 부터 적용되었고 그 이전에 2년 정도 코드를 정리하는데 시간이 소요된 것으로 보인다.

그래서 imx6 시리즈 와 같이 2013년 이후 SoC 들에 대한 권장사항으로 device tree를 사용하도록 한다.


[링크 : http://www.devicetree.org/Main_Page]

[링크 : http://en.wikipedia.org/wiki/Device_tree]

    [링크 : http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf]


dtc는 device tree compiler로

텍스트 파일을 바이너리로 컴파일 해주며 일종의.. 구조체로 변환하는 느낌이다.

[링크 : https://git.kernel.org/cgit/utils/dtc/dtc.git]

[링크 : http://forum.falinux.com/zbxe/index.php?document_srl=613440&mid=lecture_tip]


fdtdump 를 통해서 바이너리의 내용을 덤프 할 수 있다.

$ dtc -@ -I dts -O dtb -o 1st-overlay.dtb 1st-overlay.dts

$ fdtdump 1st-overlay.dtb


/dts-v1/;

// magic:           0xd00dfeed

// totalsize:       0x106 (262)

// off_dt_struct:   0x38

// off_dt_strings:  0xe8

// off_mem_rsvmap:  0x28

// version:         17

// last_comp_version:    16

// boot_cpuid_phys: 0x0

// size_dt_strings: 0x1e

// size_dt_struct:  0xb0


/ {

    compatible = "brcm,bcm2708";

    fragment@0 {

        target = <0xdeadbeef>;

        __overlay__ {

            status = "okay";

        };

    };

    __fixups__ {

        i2s = "/fragment@0:target:0";

    };

};


[링크 : https://www.raspberrypi.org/documentation/configuration/device-tree.md] 


'Linux' 카테고리의 다른 글

IIO - Industrial I/O  (2) 2015.09.03
insmod / modprobe 차이  (0) 2015.08.25
커널 컴파일 옵션 neon 과 cpu feature  (0) 2015.04.28
쓰레드 / 프로세스  (0) 2015.04.27
리눅스 1분만에 커널 빌드하기  (0) 2015.04.06
Posted by 구차니

라즈베리도 yocto project 적용된게 있나 보네..

다음번에 봐야지.. 귀차나...


[링크 : http://mytechpg.blogspot.kr/2013/06/raspberrypi-and-yocto.html]

[링크 : https://delog.wordpress.com/2014/09/16/embedded-linux-system-for-raspberry-pi-with-yocto-project/]

[링크 : http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/]

'프로그램 사용 > yocto project' 카테고리의 다른 글

imx8 yocto  (0) 2023.08.28
imx8 yocto build on ubuntu 22.04  (0) 2023.02.10
라즈베리 파이 with yocto project  (2) 2015.07.30
yocto project 구조  (0) 2015.07.29
라즈베리 파이 2 yocto 프로젝트?  (0) 2015.06.08
Posted by 구차니