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파일을 받아서 다운로드 하는 기능을 구현 했습니다. 

2015년 3월 13일 금요일

망고220 (Exynos4412 ) 오디오 레코딩 안되는 문제 patch

http://cafe.naver.com/embeddedcrazyboys/34677
망고220 (Exynos4412 ) 오디오 레코딩 안되는 문제 patch

2015년 3월 12일 목요일

망고520 kernel 3.4.35 , kernel 3.0.31 기준 CPU 온도 읽기



커널 3.0.31configuration


커널 버전은 3.0.31을 기준으로 설명합니다.





$ ./build_kernel config

명령 실행 후

System Type  --->
[*] Use thermal management
선택 후
컴파일 하여 , 커널 이미지를 다시Write하면 됩니다.

관련 드라이버 소스는


arch/arm/mach-exynos/tmu-exynos.c


에 있습니다.

관련 코드는 아래와 같습니다.

static int get_cur_temp(struct tmu_info *info)
{
        int curr_temp;
        int temperature;

        /* After reading temperature code from register, compensating
         * its value and calculating celsius temperatue,
         * get current temperatue.
         */
        curr_temp = __raw_readl(info->tmu_base + CURRENT_TEMP) & 0xff;

        /* compensate and calculate current temperature */
        temperature = curr_temp - info->te1 + TMU_DC_VALUE;
        if (temperature < 10) {
                /* temperature code range are between min 10 and 125 */
                pr_alert("Current temperature is in inaccurate range->"
                        " check if vdd_18_ts is on or room temperature.\n");
        }

        return temperature;
}



Kernel 3.0.31 CPU 온도읽기




[root@Mango520 ~]# cat /sys/devices/platform/tmu/temperature
53

섭씨 53도 임을 알수 있습니다.



커널 3.4.35configuration


System Type  --->
SAMSUNG EXYNOS SoCs Support  --->
[*] Use thermal management

Kernel 3.4.35 CPU 온도 읽기

드라이버 소스에서
tmu_debugfs =
                debugfs_create_file("tmu_dev_status",
                                S_IRUGO, NULL, info, &tmu_dev_status_fops);

“debugfs” 파일을 생성하게 되어 있습니다.

[root@Mango520 debug]# mount -t debugfs none /sys/kernel/debug
[root@Mango520 debug]# ls /sys/kernel/debug/
asoc/                              memblock/
bdi/                               mmc0/
binder/                            mmc1/
bluetooth/                         mmc2/
clock/                             pm_qos
dynamic_debug/                     regmap/
extfrag/                           s3c-fb
exynos5_bus                        sched_features
exynos5_devfreq_int_time_in_state  shrinker
exynos5_devfreq_mif_time_in_state  suspend_stats
gpio                               suspend_time*
hid/                               sync
ieee80211/                         tmu_dev_status
ion/                               tracing/
kbase_carveout                     usb/
lpa_cdev_status                    wakeup_sources
mem_usage/
[root@Mango520 debug]# cat /sys/kernel/debug/tmu_dev_status
Current Temperature : 47
Current TMU State : TMU_STATUS_NORMAL
Memory Throttling : unthrottled
Memory throttle auto refresh time : 1937 ns
Normal auto refresh time : 3875 ns
TMU monitoring sample rate : 200 ms
[root@Mango520 debug]# cat /sys/kernel/debug/tmu_dev_status
Current Temperature : 47
Current TMU State : TMU_STATUS_NORMAL
Memory Throttling : unthrottled
Memory throttle auto refresh time : 1937 ns
Normal auto refresh time : 3875 ns
TMU monitoring sample rate : 200 ms