2025/01 56

UART, DMA

1. DMA 없이 버퍼를 사용하는 경우CPU가 데이터를 한 바이트씩 처리해야 하기 때문에 느려질 수 있습니다.동작 방식:주변 장치(UART, SPI 등)에서 한 바이트 데이터를 수신.CPU가 인터럽트를 받아 데이터 처리.데이터를 버퍼에 저장하거나 출력.이 과정을 데이터의 총 바이트 수만큼 반복.문제점:CPU 부하 증가: 데이터 처리량이 많아질수록 CPU가 모든 바이트를 처리하느라 작업이 지연됩니다.속도 제한: 인터럽트 빈도가 높아지고, 주변 장치와 메모리 간 데이터 이동 시간이 길어질 수 있습니다.실시간성 저하: CPU가 다른 작업을 처리할 시간이 줄어듭니다.2. DMA를 사용한 경우DMA는 CPU의 개입 없이 데이터를 한 번에 블록 단위로 전송하므로 훨씬 효율적입니다.동작 방식:DMA가 특정 메모리 버..

Data Abort

Abort .. 는 원인찾ㄱ기가 쉬운편 system에 Abort   > Abort Vector 에 break 걸어놓고 기다려보기  >   Abort Exception Vector 에 break 걸린상황! R14 (LR) : Abort 난 곳의 +8 지점을 가르킴  Interrupt : Lock   ( I I )CPSR : Abort mode  (abt)  // 전전편에서는 (svc)R14 : 어디에서 왔는지 알려줌 >  -8  // 26-8 = 1EST : 00EDCF1E | 6008               str       r0,[r1]           ;return r1 : 0x FFFFFFFFr0 : 8 >> r0 의 값을 r1 이 가르키는 주소에 넣어주려다가 문제가 생긴걸로 보임> 0xFFFF..

Task Lock > Watch Reset, 메모리덤프 보는법 ( stm32 cubeide)

PC : High Vector 리셋이 나자마자의 상황 : 즉, R14 : 1323 - 1 = 1322    R14의 위치00001322 | BD80            pop {r7,pc}// 스택에서 2개를 빼내어 r7, pc 로 pop 0000131E| FFAFF00F               bl    0x11280 ; Interrupt_Free>R14 : 0x11280  갔다가 돌아올자리  PC의위치    : Interrupt_Free 내부 or R14가 위치하고있는 함수 내부   > SP (R13) 참고   SP (R13) : 0x0116FD3C  0x00000000 을 가르킴 > 근방에서 문제가 발생했을거임 ST : 00001322 | BD80     pop {r7,pc} 을 실행하자마자 라고..

Interrupt Lock > Watch dog Reset

Reset 이 나버렸으면... Context 를 자세히 들여다 보자  CPSR : D3 : 1101 0011 에서 하위 5개 bit ( 4 bit까지 ) : 10011 : Supervisor mode   6 bit : F  : 1   7 bit : I   : 1==  I I   : I 가 1 F F  : F 가 1// I,F 가 활성화 이면 I I , F F// 비활성화 이면 I 옆에 공백, 쓰레기값>>  IRQ, FIQ Lcok Reset Exception > SVC modeSPSR : 0x10 : Reset 하자마자 온거라 신뢰도 X       L14 (R14) 의 위치는? ( 0x0EDCF19 ) R14: 복귀주소를 저장하는 레지스터  > 그때 당시 PC 값을 그대로 간직 한뒤 Reset Excep..

Art of Debugging

ARM : 이상감지 > Exception 처리                           : Recovery (Abort 발생) or Exception 발생하지 못하도록 알려줌 보통 Embedded) : Abory (중단) 발생!recovery 대신 HW적인 reset 함수로 branch  : Target 동작중 reset > Abort Hanler에 Debugger로 break ! ex) HW적으로 High Exception Vector를 사용하는 system      Power on > 0xFFFF0000 영역의 Reset Handler 에 PC가 자리잡음// 0xFFFF0000 : High EVT , bootloader 가 있음 // NOR Flash Bootloader 1. Power on >..

JTAG interface

JTAG : Joint Test Access Group > JTAG interface로 HW Tast 가능 : HW의 집적도 상승 > pin들의 상태 조사가 어려움 > 자동검사 (boundary scan)// boundary : cpu 내외부 구분 짓는 곳 >  boundary 를 흝어서 pin의 상태를 알아냄 >>CPU에서 나오는 모든 pin들의 상태를 알 수 있음 + pin에 값을 강제 인가 가능// pin들에 buffer TAP controller : JTAG interface 에 대한 controller> JTAG interface :  TDI, TDO : TAP controller input, output > DATA를 외부와 주고받음> Serial통신TMS (Test Mode Select ) ..

MMU : Memory Management Unit ( 다시보기)

MMU : CPU의 memory 주소 접근 > 주소를 속임  > physical address, virtual address (logical address) 의 mapping 을 자기가 가지고 놈  (CPU모르게) >>모든 Task, program 마다 똑같은 주소를 사용해도 되게 만들어줌 +두개의 CS를 사용하는 RAM의 물리적 주소가 CS1 : 0x000000~0x10000 , CS2 : 0x20000 ~ 0x300000 나뉘어있어도0x000000~0x20000으로 연속적인것처럼 할 수 있음+physical address 상에서는 쓰고남은 조각난 memory들을 한데 모아서 연속적인 memory처럼 사용할 수 있음   CPU : virtual > MMU :physical > 실제 memory acce..

Cache, Cash

느린 memory, 빠른 cpu 사이를 개입해 빠른것처럼 만들어줌 Software 특성1. Temporal Locality  SW가 한번 momory에 접근 > 자주 접근함2. Spatial Locality  (1번과연결)어떤 영역에 접근 하려고 보면 이미 접근했었던 영역일 가능성이큼   or 그 근처>접근했던 영역을 잠시 넣어서 거기로 접근하게함 TCM : Memory state 0 인 memoryHit : 접근하려는 주소가 Cache에 저장되어있음Miss : Cache에 없으니 Memory 에 직접 접근 Miss 일경우 어떻게 가져오냐: 큰 단위로 가져옴( block) > Cache momory에 저장  LRU policy : 캐시 메모리에 안쓰고 오래있는걸 대체하는 방법 cache = cache C..

PLL , M/N:D

clock 은 PLL (Phase Locked Loop)을 통해 일정 주파수 generation PLL : TCXO (기준주파수) > 원하는 주파수 clock generation   10 MHz TCXO : taget의 clock source>  Fout : 100MHZ  VCO (voltage controlled Oscillator ) : 원하는 주파수를 전압을 통해 만들어냄// 전압 up : 101 MHZ 이런식 Phase Detector : VCO sampling > TCXO 와 같은 level 로 낮춘뒤 ( I/IO Divider)                              위상의 차이를 구별함                                > 다시 100MHz 로 잘나오는지 확..

Wait State

Wait State > MCU 가 자기보다 느린 메모리 장치를 다룰때 MCU) clock에 따라  Access Bus 에 신호 > RD/ : LOW > Data line 값을 읽음 ( 특정주소 )   > 이때 timing : RD/  > 일정시간 ( Wait State ) > Data timming 이 안맞으면? 즉 wait state를 안지키면> 엉뚱한 순간에 data를 읽어들여 다른 값을 가져옴 ( Capture )  Tce : 80ns  > 80ns 뒤에 Data가 나옴    MCU 의 D[15:0] 가tACSDV : Address and Chip select active to data valid : (T-21) + WT>> (T-21) + WT > 80ns  는 되어야함  ex)40MHZ syst..