임베디드 53

Coprocessor Assembly

Coprocessor:  Co-worker , cpu 혼자 모든걸 처리할 수는 없으니Coprocessor 명령 : 전용 registerData를 전송하는 명령1) Coprocessor 내부의 Register들을 장난 침. (Coprocessor 내부 Register ↔ Coprocessor 내부 Register) 여기에 붙은 모든 것들은 Coprocessor 내부에 정의 된 녀석들(형식)CDP Coprocessor번호, Coprocessor 명령어, CRd, CRnCoprocessor 명령어 : Coprocessor마다 준비된 명령어가 다름CRd: Coprocessor 내부에 있는 Register,, Destination Register로 사용 CRn: Coprocessor 내부에 있는 Register ..

SWI 의 진실

Hardware없이 interrupt를 거는 방법?  SoftWare Interrupt :  Asynchronous(비동기식) 하게 암때나 걸리는 게 Interrupt       Software Interrupt != Interrupt           > Software적으로 Exception을 거는것임.         > User mode에 있던 System > Supervisor mode로 전환,         > Software Interrupt를 거는 순간부터는 Privileged Mode로 전환 System을 마음대로 주무를 수 있는 권한이 생김. 왜 이런 SWI( software interrupt) 사용? : compatibility.      > kernel service를 이용할 때 많이..

vector table의 구현과 실제

Vector Table: 각각의 Exception이 일어 났을 때 정해진 곳으로 branch > 그 용도에 맞는 처리 routine들이 들어 있으면 됨.    Low Vector를 기준 ;----------------------------------------------------------------------------; ; ADDRESS EXCEPTION MODE ON ENTRY ;----------------------------------------------------------------------------; ; 0x00000000   Reset               Supervisor ; 0x00000004   Undefined Exception Undefined ; 0x0000000..

오실로스코프

: 오실레이터 ( 진동 ) 을 스코프 진동파형을 보는 장비 수직 : 전압 수평 : 시간 구조 신호 (아날로그) : 프로브 > 증폭 > ADC ( 표본화 양자화 부호화) > 저장 (시간축에 대해 파형을 쭉 그려나가기 위해)                                   >Triger : 일정 전압이 딱 넘었을때 그 기점의 정보 상단 : 1칸의 전압, 1칸의 초 // 1v/dv : 1칸에 1v , 500nS/div : 1칸에 500ns open ch : 채널 활성화 open FFT : FFT 활성화 // 주파수 분석 coupling : DC / AC  // AC : 신호가 1,0 으로 됐을때 떨리는 그 부분만 볼 수 있음 probe mode : 배율 트리거 :  ex) if(전압 >= x VO..

데이터시트 해석

프로그래머와 하드웨어 다루는 사람의 관점이 다름을 인지 cpu 코어의 성능 : TR 을 얼마나 밀도 있게 넣었냐에 따라 다름하드/Flash > memory (ram) > reg > cpu  >> reg,reg > ALU (연산) > reg mem 1번지 > reg //32bit 만큼 읽어옴 if. 32bit) 메모리, 레지, cpu, 메모리>레지로가는 라인, all 32 bit             : 메모리 주소 최대값 : 2^32 ~= 4gb ARM® 32-bit Cortex®-M3 CPU Core a) 72 MHz maximum frequency : 클럭 ( 명령의 기준점 ) 1 HZ : 파형의 한주기 72,000,000번 / 1초 b)  1.25 DMIPS/MHz (Dhrystone 2.1)  클..

데이터 시트 보는법

데이터 시트 보는법 1. 목적을 세우자 : 목표를 세우고 그에 맞는 지식을 습득한다.   > 오늘의 목표 : Led display driver ic 를 통해 7세그먼트 LED display 제어 2. 장치들의 개념 이해 : 구글링으로 간단 이해     > 1번핀 e , 2번핀 d ..         > led display driver 와 7세그먼트 의 연결          > stm32에 연결되는 핀을 많이 줄일 수 있다. // 32개를 3개로     : sg1 에 전원인가 > a1 ,a2 가 둘다 켜짐 > gr1,gr2 로 둘중 하나 택 하게 할 수 있음 > 이걸 토대로 실제 dataseet 확인 >> stm32 가 어떻게 돌아가도록 코드를 짤것인가?? 3. 백지식 칩과 칩 사이에 통신하는 방법 > ..

GPIO 마무리, 회로도 보기

GPIO 제어과정 power on > startup code(.s) > main __HAL_RCC_GPIOC_CLK_ENABLE();  R/M :  APB2 peripheral clock enable register (RCC_APB2ENR)                 IOPCEN 1: IO port C clock enabled 클럭 > 전류를 더욱 사용        : 전류를 아껴야 하는 상황 : sleep mode + 클럭도 하나 하나 제어 회로도 보는법 ex) FND Module :  1. VCC : 전원에 연결 3.3v  2. SCLK : PB15_FND-SCLK // 28번핀 3. RCLK : PB13_FND-RCLK // 26번핀 4. DIO : PB14_FND-DIO // 27번핀 5. GN..

Pipe line과 Exception 관계 그리고 ^접미사

Exception 발생 > ARM 실행모드로 전환, Exception Vector로 PC branch.    CPSR을 SPSR에 저장 > 복귀: CPSR   시점에 따라 ARM 또는 Thumb 명령어를 실행시킬 수 있도록 해줘야함  ARM Pipe line의 동작 > 보상 : 복귀 주소 조정  Thumb 실행 중 예외 진입 > 실제 오프셋의 차이       PC 값: 해당 Exception LR에 복사 > 2byte로 저장.  (Thumb 명령어들 : 2byte) Exception 발생 >  Handler로 처리후 어떻게 복귀?보통 PC : fetch 에 위치 > 현재 Execute 보다  2단계 앞, fetch 보다 1단계 앞    ARM 파이프라인 동작을 보상 > 복귀 주소 보정 Thumb 실행 중..

Inline Assembly와 INTLOCK의 구현

Assembly로 코딩해야할때 1. Low Level을 직접 다룰 때 : Coprocessor를 다뤄야 할 때 ( C로는 매우 난감) 2. ARM을 직접 다룰 때 : PSR을 다뤄야 할 때. Interrupt Lock을 걸고 싶을 때  3. Register를 직접 다룰 때 : Register를 직접 다루고 싶을 때는 어떻게 해야 할지.. R0, R1을 내 맘대로 다루고 싶을때 Assembly (.s)  >  Assembler로 compil > 기존 C 의 .o link   __asm >  C compiler가 이 다음부터는 Assembly구나~ 하고 넘어가줌 Inline Assembly 간단한 함수 하나 정도만 Assembly로 할때 간단 방법 {} 사이에 원하는 Assembly를 끼워 넣으면됨 ex) ..