2016년 5월 11일 수요일

Mango-IMX6 7인치 감압식 LCD 터치 구동하기



1.    Mango-IMX6 7인치 감압식 LCD 터치 구동하기




1.1.    Mango-IMX6Q 1.2 버전



<1.2버전 보드>
이미지를 다운로드 받는다

$tar xf mango-imx6q-image-160216.tgz

$ cd image
$ cp imx6q-sabresd-tsc2007.dtb imx6q-sabresd.dtb



1.2.    Mango-IMX6Q 1.3 버전



<1.3 버전 보드>
커널 소스 수정
LCD Back Light GPIO : SD1_DAT2(GPIO1_19, PWM2)
LCD Power EN GPIO: ENET_TXD0 (GPIO1_30)

arch/arm/boot/dts/imx6qdl-sabresd.dtsi

             lcd@0 {
                           compatible = "fsl,lcd";
                           ipu_id = <0>;
                           disp_id = <0>;
                           default_ifmt = "BGR24";
                           pinctrl-names = "default";
                           pinctrl-0 = <&pinctrl_ipu1_1>;
                           power_en_gpio = <&gpio1 30 0>; /* Power EN */
                           backlight_ctl_gpio = <&gpio1 19 0>; /* Backlight  CTRL */
                           status = "okay";
             };

             pwm-backlight {
                           compatible = "pwm-backlight";
                           pwms = <&pwm2 0 50000>;
                           brightness-levels = <
                                        0  /*1  2  3  4  5  6*/  7  8  9
                                        10 11 12 13 14 15 16 17 18 19
                                        20 21 22 23 24 25 26 27 28 29
                                        30 31 32 33 34 35 36 37 38 39
                                        40 41 42 43 44 45 46 47 48 49
                                        50 51 52 53 54 55 56 57 58 59
                                        60 61 62 63 64 65 66 67 68 69
                                        70 71 72 73 74 75 76 77 78 79
                                        80 81 82 83 84 85 86 87 88 89
                                        90 91 92 93 94 95 96 97 98 99
                                        100
                                        >;
                           default-brightness-level = <94>;
             };

&pwm1 {
             pinctrl-names = "default";
             pinctrl-0 = <&pinctrl_pwm1_1>;
             status = "disabled";
};

&pwm2 {
             pinctrl-names = "default";
             pinctrl-0 = <&pinctrl_pwm2_1>;
             status = "okay";
};


#if 0
             mango-ts@38 {
                           compatible = "mango,mango-ts";
                 reg = <0x38>;
                 pinctrl-names = "default";
                 pinctrl-0 = <&pinctrl_mango_ts>;
                 interrupt-parent = <&gpio3>;
                 interrupts = <26 0>;
                          resets = <&mango_ts_reset>;
             };
#else
   touchscreen: tsc2007@4a {
       compatible = "ti,tsc2007";
       reg = <0x4a>;
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_mango_ts>;
       interrupt-parent = <&gpio3>;
       interrupts = <26 0>;
       gpios = <&gpio3 26 GPIO_ACTIVE_LOW>;
       ti,x-plate-ohms = <660>;
       linux,wakeup;
   };
#endif

arch/arm/boot/dts/imx6qdl.dtsi 파일 수정
             pwm2 {
                           pinctrl_pwm2_1: pwm2grp-1 {
                           fsl,pins = <
                                                     MX6QDL_PAD_SD1_DAT2__PWM2_OUT 0x1b0b1
                                        >;
                           };
             };

수정을 합니다.
커널을 컴파일 합니다.

$ ./build_kernel

SD card Linux PC에 삽입 후 Write를 합니다.
 [icanjji@icanjji-Samsung-DeskTop-System image]$ dmesg | tail
[9858808.684792] usb 2-1.4: new full-speed USB device number 7 using ehci_hcd
[9858808.779530] cp210x 2-1.4:1.0: cp210x converter detected
[9858808.852309] usb 2-1.4: reset full-speed USB device number 7 using ehci_hcd
[9858808.945045] usb 2-1.4: cp210x converter now attached to ttyUSB0
[9906472.618868] sd 184:0:0:0: [sdg] 15628288 512-byte logical blocks: (8.00 GB/7.45 GiB)
[9906472.620360] sd 184:0:0:0: [sdg] No Caching mode page present
[9906472.620364] sd 184:0:0:0: [sdg] Assuming drive cache: write through
[9906472.622477] sd 184:0:0:0: [sdg] No Caching mode page present
[9906472.622481] sd 184:0:0:0: [sdg] Assuming drive cache: write through
[9906472.623242]  sdg: sdg1

1.3.    이미지 Write 방법



u-boot, kernel, 파일 시스템 모두 Write 방법
$ sudo ./sdwriter sdg imx6q

u-boot와 커널, dtb  파일만 Write 방법
$ sudo ./sdwriter sdg imx6q bin


1.4.    테스트 방법



Micro SD Card를 보드에 삽입
부팅 스위치
SW1 : 2번 ON , 나머지 OFF
SW2: 3,4,5 ON , 나머지 OFF

전원을 인가 합니다.

Debug 터미널 창에서 아무키나 누른 후 설정을 합니다.
U-Boot 2014.04-08648-g9d7bf9b-dirty (Jan 20 2016 - 17:47:14)

CPU:   Freescale i.MX6Q rev1.5 at 792 MHz
CPU:   Temperature 25 C, calibration data: 0x5484b969
Reset cause: POR
Board: MX6-SabreSD
I2C:   ready
DRAM:  2 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
*** Warning - bad CRC, using default environment

Display: Mango-AT070 (800x480)
In:    serial
Out:   serial
Err:   serial
mmc2 is current device
unsupported boot devices
check_and_clean: reg 0, flag_set 0
Fastboot: Normal
SATA isn't buildin
Net:   FEC [PRIME]
Warning: failed to set MAC address

Normal Boot
Hit any key to stop autoboot:  0
=>
=>
=>
=>
=> setenv mmcargs 'setenv bootargs console=${console},${baudrate} ${smp} root=${mmcroot} video=mxcfb0:dev=lcd,MANGO-PRESS7,fbpix=BGR32,bpp=32'
=> save
Saving Environment to MMC...
Writing to MMC(2)... done
=> reset


setenv mmcargs 'setenv bootargs console=${console},${baudrate} ${smp} root=${mmcroot} video=mxcfb0:dev=lcd,MANGO-PRESS7,fbpix=BGR32,bpp=32'



커널 부팅 메시지에 아래와 같이 출력이 되면 인식이 된 것입니다.
input: TSC2007 Touchscreen as /devices/soc0/soc.1/2100000.aips-bus/21a4000.i2c/i2c-1/1-004a/input/input0
i2c-core: driver [mango-ts] using legacy suspend method
i2c-core: driver [mango-ts] using legacy resume method
i2c-core: driver [isl29023] using legacy suspend method
i2c-core: driver [isl29023] using legacy resume method

테스트 명령
ts_calibrate
ts_test

2015년 10월 23일 금요일

MangoM32 보드 USB Device Firmware Upgrade 방법

망고 스토리 3.0에 내용이 수록되어 있습니다. 
소스 http://cafe.naver.com/embeddedcrazyboys/35701

6. USB Device Firmware Upgrade
6.1. UM0412. DfuSe USB device firmware upgrade
6.1.1. UM0412 DfuSe 소스 다운로드 및 설치
6.1.2. UM0412 작업 분석
6.2. DfuSe USB upgrade 프로그램 변경
6.2.1. 헤더 Include 경로 변경
6.2.2. 전체 내용 비교
6.2.3. platform_config.h, spi_flash.h & stm32_eval.h 수정 사항
6.2.4. platform_config.h & stm3210b_eval.h 수정 사항
6.2.5. dfu_mal.c & main.c 수정 사항
6.3. DfuSe USB upgrade 프로그램 내용 분석
6.3.1. IAP (In-Application Programming) 비교
6.3.2. 메인 프로그램 내용 분석
6.4. 프로그램 실행 및 드라이버 설치
6.5. DFU Download File 만들기
6.5.1. 프로그램 변경 사항
6.5.2. IAR 환경 구성
6.5.3. DFU Download File 만들기 - RIDE7
6.5.4. DFU format 변경 작업
6.6. DFU 파일 다운로드 작업


2015년 8월 6일 목요일

10.4inch 감압식 LCD 보드 (CR-LIF2-RT104R001 )

10.4inch 감압식 LCD 보드 (CR-LIF2-RT104R001 )


Price : 10,000 (VAT별도)
이메일 : help@crz-tech.com ( 031-701-5057)


Feature


l  Compatible 10.4” TFT LCD with Resistive Touch Screen ( 800x600 )
l  Support  various resolutions
l  BACKLIGHT PWM step-up DC/DC Converters  
l  Dimension : 100mm(W) x 40.0mm(H) 


LCD 연결모습

 

실행 모습

 


Dimensions



Pin Map

 


Supported Boards

l  Mango-AM335x-ST Main Board

배송 품목 (Shipping Matrials)

l  LCD interface Board : 1ea

2015년 7월 31일 금요일

ADC Platform_driver 등록 및 실행 절차

망고210에서 플랫폼 디바이스의 등록 절차 및 작성 방식을 나름대로 정리
물리주소 <=> 가상주소 매핑은 ppt파일에 따로 없다.
가상주소와 물리주소는 MMU Table을 통해 서로 연결된다.
디바이스 제어와 같이 특수한 상황에서는 물리주소에 직접 접근을 해야할 필요성이 존재.

=> 보통 arch/arm/target/cpu.c 에서 매핑을 하는 커널 API를 사용.

ex)
#include <sam/page.h>
#include <asm/memory.h>

void *phys_to_virt(unsigned long address); // 물리 => 가상 변환
unsigned long virt_to_phys(volatile void *address); // 가상 => 물리 변환

- 실제 망고보드에서 매핑의 예

./cpu.c: .pfn = __phys_to_pfn(S5PV210_PA_RTC),
./cpu.c: .pfn = __phys_to_pfn(S5P_PA_DMC0),
./cpu.c: .pfn = __phys_to_pfn(S5P_PA_DMC1),
./cpu.c: .pfn = __phys_to_pfn(S5PV210_PA_AUDSS),
./cpu.c: .pfn = __phys_to_pfn(S5PV210_PA_BUS_AXI_DSYS),

MMU가 존재하는 시스템의 경우 프로세서에서 사용하는 주소는 가상주소
따라서 물리주소에 직접 접근할 필요성이 있고 위와같이 cpu.c에 물리 <=> 가상 매핑이 되어 있는 경우
User level에서는 mmap()함수를 이용한 접근이 가능하고
Kernel level에서는 ioremap()함수를 이용한 접근을 한다.

또 다른 방법으로는
 리눅스 커널에서는 물리 주소를 사용 할 수 없다. 가상 주소를 사용 한다. 페이징(Paging)이라는 기법을 써서 가상 주소를 물리 주소로 변환한다. 디바이스 I/O 하기 위해서 물리 주소를 가상 주소로 매핑해주어야 한다. 타겟에서 사용하는 디바이스의 I/O 물리 주소를 가상 정보로 매핑하는 정보를 작성한다. 
static struct map_desc w5300e01_iodesc[] __initdata = {
    { 0xf0000000, __phys_to_pfn(S3C2410_CS2), SZ_1M, MT_DEVICE },
    { 0xf8000000, __phys_to_pfn(S3C2410_CS3), SZ_1M, MT_DEVICE }
};

(가상주소), (물리 메모리 페이지 프레임 번호), (크기), (타입) 순이다. '__phys_to_pfn()' 함수는 물리 주소를 페이지 프레임 번호로 변환해준다.

ioremap()함수와 phys_to_virt()함수는, 둘다 물리주소를 가상주소로 바꿀때 쓰인다.

하지만 차이점은 존재한다.

ioremap()함수는 요구된 물리 주소로 시작하는 영역을 커널 모드에서 사용할 수 있도록 가상 주소 공간으로 등록 하지만,

phys_to_virt() 함수는 PAGE_OFFSET과 같은 값을 이용하여 변환 처리만 계산하기 때문이다.

void* ioremap(unsigned long offset , unsigned long size);
반환 값: 가상 주소의 선두 주소
offset : 물리 주소의 시작 주소
size : 크기

void* phys_to_virt(unsigned long address);
반환 값 : 변환된 가상주소
address : 물리 주소


* PAGE_OFFSET 매크로 상수값 : 물리 주소와 가상 주소간에 변환을 위해 쓰이며, #include <asm/page.h>에 정의된다.





2015년 7월 30일 목요일

Isolated RS485 to RS485/RS232 Repeater

 
 


Price : 58,000 ( VAT별도 )

이메일 : help@crz-tech.com ( 031-701-5057)

 

Isolated RS485 to RS485/RS232 Repeater Feature

 

마이컴 내장으로 최적의 통신 상태 유지되며, 필요한 기능 업데이트 가능

외부 DIP 스위치를 이용하여 다양한 통신 설정이 가능

노이즈가 많은 열악한 환경에서 통신 품질 유지

양단 신호간 전기적으로 절연시켜 내구성과 성능을 향상한 제품

 

l  절연형 RS485 to RS485/RS232 리피터

l  RS485/RS232 통신망의 신호 증폭을 위한 리피터

l  내부 마이컴 사용

l  최적의 통신상태 유지

l  지원 통신속도: 4800, 9600, 19.2K, 38.4K, 57.6K, 115.2K, 230.4K, 460.8K

l  데이터비트 8 or 7bit 선택 가능

l  패리티 No, Even, Odd 중 선택 가능

l  STOP 비트 1, 1.5, 2 비트 중 1가지 선택 가능

l  추가 기능 업데이트 가능

l  문의 : help@crz-tech.com

 

 Setting PIN MAP

 

 


SW1_#1

BOOT

 

SW1_#2

RS485_232

ON: RS485, OFF: RS232

SW1_#3

DIP1

Baud Rate

SW1_#4

DIP2

SW1_#5

DIP3

SW1_#6

DIP4

Data Bits, ON: 8bits, OFF: 7bits

SW1_#7

DIP5

Stop Bits

SW1_#8

DIP6

SW1_#9

DIP7

Parity

SW1_#10

DIP8 

 

Baud Rate

DIP3

DIP2

DIP1

115200 bps

OFF

OFF

OFF

4800 bps

OFF

OFF

ON

9600 bps

OFF

ON

OFF

19200 bps

OFF

ON

ON

38400 bps

ON

OFF

OFF

57600 bps

ON

OFF

ON

230400 bps

ON

ON

OFF

460800 bps

ON

ON

ON

 

Stop Bits

DIP6

DIP5

Stop Bit 1

OFF

OFF

Stop Bits 2

OFF

ON

Stop Bits 1.5

ON

OFF

Stop Bit 1 (default)

ON

ON

 

Parity

DIP8

DIP7

Parity No

OFF

OFF

Parity Even

OFF

ON

Parity Odd

ON

OFF

Parity No (default)

ON

ON



PIN MAP




동작시험

 

PC COM2<->1RS232 <-> 2RS485 <-> 3RS485 <-> 4RS232<-> PC COM3

 

 

 

 

Shipping Materials

l  RS232 to RS485/RS232 Repeater : 1EA

 

2015년 5월 1일 금요일

Zigbee 2.4GHz Module (CR-JB100)





Zigbee 2.4GHz Module Feature (CR-JB100)


l  2.4-GHz IEEE 802.15.4 Compliant RF Transceiver
l  Excellent Receiver Sensitivity and Robustness to interference
l  On Board CC2530 +CC2592 Zigbee System (256-KB Flash)
l  Home/Building automation
l  Low-Power wireless sensor networks

l  Programmable output power up to 4.5dBm

2015년 4월 30일 목요일

Mango220 update 기능 추가하기



1. update기능 추가(첨부파일 참조)
2. uboot에서 LCD에 글자 출력 추가.
3. sdfuse시 unknown chunk error 패치

소스 및 어플 링크

특정 url에서 update.zip파일을 받아서 다운로드 하는 기능을 구현 했습니다.