개인자료/프로그래밍
[150616 ~ 150619] Linux Device Driver Lecture
2015.06.21Application과 Kernel 사이를 Module을 활용하여 연결, 파일 연산자 활용.USB Device Driver - Host Controller(OHCI, EHCI) GPL - 사용은 무료인데, 만든 소스 코드 공개가 원칙LGPL(Lease GPL) - GPL보다 상대적으로 라이센스 범위가 좁음BSD - Source 공개 해도 되고, 안 해도 됨 Kernel version(Major.Minor.Build.Revision) v1.x -> single CPUv2.x -> multi CPUv2.6이하에서는 Odd Version(Development), Even Version(Stable)Build Version 높을수록 안정적 v3.x - 가상화, 분산형에 관한 업데이트. 임베디드와 관련없는 부분이..
[150615] ARM Crash Course
2015.06.211. iROM이 실행되면서 최소한의 Boot를 함(RAM의 정보가 없음)2. NAND Flash에 있는 bootheader(RAM activate 정보포함)를 SRAM으로 복사3. SRAM code실행(Ram이 activate됨) 4. NAND Flash의 u-boot을 RAM으로 복사5. u-boot을 실행(부트 시작) ***bootheader-> SRAM과 DRAM에서 실행되는 루틴이 다름 인터럽트 우선순위는 interrupt controller에 의해서 처리(masking 작업, 선점 우선순위 등) 다수의 DMA가 하나의 버스를 이용 → DMA contention → arbitary 작업을 통해 해결. 이는 arbiter가 진행 DMA vs PIO DMA : 오디오 데이터전송, LCD(bulk da..
[STM32F103x] PWM
2015.06.20[STM32F103x] 외부 인터럽트(TIMx_EXTI)
2015.06.20[STM32F103x] 타이머(Timer)
2015.06.131234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include volatile unsigned int i;volatile unsigned int count; void TIM2_IRQHandler(){ if (((TIM2->SR & 0x1) ==1) && ((TIM2->DIER & 0x1) ==1)) { TIM2->SR &= ~(0x1BSRR=(1ULCR1|=0x1; TIM2->DIER|=0x1; [Bit 0 CEN] Counter enable0: Counter disabled1: Counter enabled Note: External clock, gated mode and encoder mode ca..
[150609] Crosstool-ng를 이용한 Toolchain 만들기
2015.06.091. 제공된 resource 파일에서 crosstool-ng1.16.0 압축 해제 http://crosstool-ng.org (crosstool-ng1.1.16.0.tar.bz2 다운로드) 2. 필요 패키지 설치 apt-get install autoconf automake libtool libexpat1-dev libncurses5-dev bison flex patch curl cvs texinfo build-essential subversion gawk python-dev gperf 3. configuration 적용하고 빌드 3.1. ./configure Makefile 생성됨 3.2. Make 3.3. Make install 소스 및 툴체인 디렉토리 생성 # cd# mkdir src src 폴더에 ..
[망고보드_STM32] LED On
2015.06.03Tool은 Keil uvision5를 사용했습니다. 기본적인 환경설정을 맞춰주고 컴파일을 하면 ok. 1234567int main(void){ (*(volatile unsigned *)0x40021018) |= 0x8; (*(volatile unsigned *)0x40010C04) |= 0x10; } 망고보드에서 첫번째 예제파일로 나온 LED on 예제입니다. 3(*(volatile unsigned *)0x40021018) |= 0x8; 레지스터 주소 값 0x40021018에다가 16진수 8을 세트시켜주었습니다. 이게 무슨 의미일까요? 먼저 주소 값 0x4002 1018은 Peripheral 중에 RCC(Reset and Clock Control)에 속합니다. 초기값보다 0x18이 더해졌기 때문에 자세한..
망고보드(M32) 시리얼 케이블 만들기_Serial to 3Pin
2015.06.02위의 사진은 망고보드 STM32의 기본 보드. 여기서 PC로부터 다운로딩을 진행하기 위해서는 시리얼 케이블이 필요한데 흔히 쓰는 케이블 대신 별도로 3핀 짜리 케이블을 사용해야 한다. 1. 필요한 물품 RS232 9Pin Connector, 3Pin Header(2.54pitch), Wire(이왕이면 RX,TX,GND를 구분해주기 위해서 다양한 색상이 있으면 좋다.) RS232 커넥터에서는 2번 핀이 TX, 3번 핀이 RX, 5번 핀이 GND. 커넥터와 핀 헤더를 연결해주면 위 사진과 같이 연결된다. 이렇게 완성하면 앞으로 망고보드에서 다운로딩을 쉽게 진행할 수 있다. 이 과정이 귀찮으면 Serial to 3pin이나 USB to 3pin 케이블등이 시중에 판매되고 있으니 구매해도 괜찮다.
Embedded Reference
2015.06.02UPDATE : 2015.6.1 1. MDK-ARM Version 5.14 (링크) [STM32] uvision5 프로젝트 만들기 (링크) 2. Flash Loader Demonstrator (다운로더) 3. ARM & Cortex M-3 자료 3.1 ARM Architecture (
ARM에 사용되는 Register
2015.06.01R13 : 스택 포인터(Stack Pointer) - 스택 구조를 사용하는 소프트웨어에서 스택의 꼭대기(Stack Top)을 표시하기 위한 용도로 스택 포인터(SP)를 사용한다. R14 : 링크 레지스터(Link Register) - C언어의 함수 호출(Function Call) 등 서브 루틴 분기가 발생하는 소프트웨어에서 서브 루틴 수행이 끝난 후 돌아갈 위치(Return Address)의 저장을 위해 링크 레지스터(LR)을 사용한다. 이후에 설명할 명령어 중 BL, BLX 등 분기(Branch) 명령어는 분기 동작을 하면서 동시에 리턴 어드레스를 R14에 자동으로 저장한다. 그리고 인터럽트나 익셉션(exception)이 발생 했을 때에도 ARM 프로세서는 리턴 어드레스를 자동으로 R14에 저장한다. ..
임베디드 레시피 및 망고보드(Cortex M-3) 구입
2015.05.29요즘 일정한 수입이 없어서 '무언가'를 산다는 게 어려운 상황에서 임베디드 레시피와 망고보드(STM32F103X)를 무턱대고 구입했다. 엄밀히 말하자면 무턱대고 구매한 건 아니고, 심사숙고 후에 구매를 했다. 사실 어떻게든 돈을 아끼려고 마음을 먹었다면 굳이 구입하지 않아도 조금만 노력하면 책과 보드를 빌려서 참고할 기회는 있겠으나 '사용의 유무'보다 '내 것에 대한 책임감'의 차이때문에 구입을 결정했다. 앞으로 몇 달동안은 조급함이 앞서는 까닭에 우를 범하는 경우도 많겠으나 일단 이 두 가지 컨텐츠(?)를 활용해 실력을 겸비하고 싶다. 앞으로 그 과정을 이 카테고리에 기록하고자 한다. 마지막까지 꼬옥! 진행됐으면 좋겠다. 그럼 Start.
[임베디드 C] 비트 연산 매크로
2015.05.171234567891011121314151617181920// 한 비트 클리어 #define clear_bit(data,loc) ((data) &= ~(0x1