2024/11 45

LED 회로

다이오드 : 긴쪽 + 짧은쪽 - 저항 220R GPIO > 1 ( 3.3v , HIGH ) ,0 ( LOW ) 으로 해서 가운데의 LED가 껏다 켜졌다 할 수 있음 HAL_GPIO_WritePin(GPIOx, GPIO_Pin, PinState); GPIOx : GPIO group   > MX_GPIO_Init();       >  HAL_GPIO_WritePin(PB6_LED1_GPIO_Port, PB6_LED1_Pin, GPIO_PIN_SET); 1,3번 연결2,4번 연결 > s/w : on > 1234 다연결// 테스터기로 1,3 과 2,4를 찾을 수 있음  1. s/w off : PB0_TEMP-SET-UP 으로 전류가 흐름 > HIGH2. s/w on : GND > 다 흐름 , PB0_TEMP-S..

Bootloader

Boot : 시작해서 System을 사용할 수 있는 상태까지의 Sequence Loader: 뭔가 싣는것  > ROM에서 RAM으로 뭔가를 싣는 것 >>  Hardware를 정상 사용하도록, 실제 동작이 가능하도록 ROM에서 RAM으로 뭔가를 싣는것 MCP (Multi chip Package) ROM + RAM을 한 package에 담은 chip  //주로사용 NOR + PSRAM ( NOR MCP ), NAND + SDRAM (NAND MCP)   Bootloader가 해야 할 일 > combination에 따라 달라짐 ROM에 담을것 : code, RO (const data), RW   // RW: 초기값이 있는 Global 변수 >ROM에 초기값을 담아야함  //  ZI (Zero Initializ..

카테고리 없음 2024.11.29

UART로 printf() 구현

리눅스에서 표준출력 바꾸는 방법 있음 printf > 파일에 기록되게 할 수 있다. UART : 장치 관리자 > 포트 > usb serial port(com3) 3.3v 로 스위치 바꾸어 줘야함 모듈                  보드 DTR RX (수신부) - 보드에서는 TX   (PA9), 60번 TX(송신부) - 보드에서는 RX (PA10) ,55번 VCC CTS GND //신호의 기준선 XShell5 세션만들기 > 프로토콜 :serial > serial 설정 : com3 STM32 char senddata[20]= "hello world\r\n"; // 엔터 하려면 \r\n FTDI 모듈 > 컴퓨터 (드라이버)  >Port3 > xshell > hello world   오실로스코프  start 1..

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 ..

1018번

임의로 8*8 을 자르고 그 중 제일 색칠할칸이 적은 값을 출력결국 1*1 도 정사각형이라 칸의 수를 출력하면됨  1. 8*8 정사각형으로 자르려면 최소 8칸은 남아 있어야함남은게 8칸 미만일시 실행x ,  for (int i = 0; i 2. 자른 정사각형이 체스판형태가 아니라면 칠해야함  0 1 2 3 4 5 6 7 // 8칸 첫번째) 좌상단이 W 인경우 >  짝수 W, 홀수 B// 첫번째 좌상단 Wif ((x + y) % 2 == 0) { if (board[i + x][j + y] != 'W') paint1++;} else { if (board[i + x][j + y] != 'B') paint1++;}// 두번째 좌상단 Bif ((x + y) % 2 == 0) { if (board[..

C언어/백준 2024.11.26

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)  클..

FIFO 메모리관리

FIFO 메모리 ~= 선입선출용량 : 3칸 읽어온것을 내보내고 다음걸 읽어내고 내보내고..용량을 초과해서 추가, 제거 : 에러 void enqueue(QU* qu, int value) { if ((qu->front - qu->rear) == SIZE || (qu->front - qu->rear) == -SIZE) { // 큐가 꽉 찬 경우 printf("Error: enqueue when full(value %d ignored)\n", value); return; } printf("[%d] front % SIZE, value); // 삽입 정보 출력 qu->mem[qu->front % SIZE] = v..

C언어/백준 2024.11.24