임베디드/펌웨어 기초 6

UART, DMA

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

reset

리셋버튼 Bit 26 PINRSTF:PIN reset flag Set by hardware when a reset from the NRST pin occurs. // NRST 핀으로부터  hw 적으로 리셋플래그It is cleared by writing to the RMVF// RMVF 로부터 writing 되어야 값초기화bit. 0: No reset from NRST pin occurred 1: Reset from NRST pin occurred BKP introductionThe backup registers are forty two 16-bit registers for storing 84 bytes of user application data.They are implemented in the bac..

USB CDC

1. USB 핀셋팅2.middle ware > USB_DEVICE >  CDC > 버퍼사이즈 조정 3. 클럭설정 > 48MHZ 필요, : CPU 클럭 72 로 다시 바꿔줘야함 or 1.5 prescaler  4. inc , app 파일 include 경로설정5. 재복사 > hal_cof, it.c, clock(main.c > systemClock) statup_handler 문제ex) sysTick_Handler 같은건 .word SysTick_Handler                                       >> startup코드에 구현되어있음 6. main 에서 초기화, 헤더파일 가져옴7. 메모리 문제.. 47%나 잡아먹음8. 세팅 > optimize for size     > 20..

stm32 mx >LED

lib 파일내에 cube MX 로 코드 프로젝트 생성 > 참고용으로 사용   > core 파일 >  resource configuration > exclusive from build inc 파일들 다 path 참조 stm32f1xx.h: #define STM32F103xB  STM32F103C8 > STM32F103xB : preprocessor 에 추가 msp, it.c , system 파일들도 복사해주기 ( include 포함) conf.h ( config) : 주변기기들 수정될때마다 따로 복사해주어야함 clock conf, HAL_Init, error_handler 도 복사해주고 > bsp.c void MX_GPIO_Init(void){  /* GPIO Ports Clock Enable */ __H..

초기설정

최소한의 파일main, start_up, .ld ( linkedlist )   ldscript : 메모리 할당startup : main함수 직전까지  /* Highest address of the user mode stack */_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */> 스택은 끝주소부터 점점 작아짐  .section .isr_vector,"a",%progbits .type g_pfnVectors, %object g_pfnVectors: .word _estack  //   >> 스택 ,즉 끝부분 부터 시작 .word Reset_Handler  // 그다음 리셋핸들러 함수로 jump .word NMI_Handler .w..