[xv6] 실습2 : Memory Protection
·
운영체제/xv6 실습
실습목표: virtual address zero에서는 null pointer를 나타낸다. xv6에서는 null pointer dereference가 가능하다. 이를 방지하기 위해 null pointer 접근을 막도록 한다. 접근 시 trap이 발생하도록 Page Table의 첫 번째 페이지를 접근하지 못하도록 한다. 이를 위해 첫 번째 페이지 주소를 변경한다. Null pointer dereference? null pointer란 아무런 유효한 메모리 주소도 가리키지않는 포인터라고 보면된다.일반적으로 Null Pointer는 주소 0을 의미하는데, 기본적으로 xv6에서는 아래 그림처럼 데이터가 주소 0에 위치한다.  하지만 보통의 운영체제는 주소0에는 어떠한 유효한 데이터도 위치하지 않도록 보호하는 영역..
[xv6] 실습1 : Lottery scheduler 설계
·
운영체제/xv6 실습
실습 목표:xv6운영체제에 Lottery scheduler를 추가하고, 3개의 프로세스를 실행하여 스케줄링 상태를 체크한다. xv6운영체제는 기본적으로 round robin 스케줄링 방식을 갖는다.  lottery scheduler란?랜덤의 티켓 번호를 뽑고, 그 티켓을 갖고있는 프로세스가 time slice를 갖고 실행되게 된다. 각 프로세스가 갖는 티켓의 배분의 양으로 그 프로세스가 갖는 priority를 정할 수 있다. 즉 랜덤으로 프로세스의 실행시간을 정해주는 공정한(?) 스케줄러라고 할 수 있다. 기 실습 :기본으로 주어진 핵심적인 수정사항은 아래와 같다.   proc.c 수정 1. settickets와 getpinfo 함수 설정  - 두가지 함수를 proc.c 소스에 추가시켜준다. - sett..
[xv6] xv6란?
·
운영체제/xv6 실습
xv6는 MIT에서 개발된 Unix 기반의 운영체제다. 주로 교육 목적으로 사용되며, Unix V6를 모방하여 간단한 구조를 가지고 있다. xv6는 시스템 콜, 프로세스 관리, 메모리 관리, 파일 시스템 등 기본적인 운영체제 기능을 포함하고 있어, 운영체제의 작동 원리를 이해하고 공부하는 데 유용한 자료로 활용된다. 특히, xv6는 C 언어로 작성되었고, x86 아키텍처에서 동작하도록 설계되었다. 운영체제의 기초를 배우고자 하는 학생들에게 매우 유익한 교육 도구로, 소스 코드를 직접 분석하고 수정해보며 실습할 수 있다. 다시말해  실습용, 교육용으로 적합한 가벼운 운영체제라고 보면된다. 나는 우분투 환경에서 QEMU를 통해 가상 환경설정으로 xv6를 수정하고, 실행해보았다.  QEMU란? QEMU(Qui..
[STM32] Touch GFX 실습 - 3 : FREE RTOS 써보기
·
STM32/Touch GFX
RTOS란? 내가 사용한 STM32H735IG 는 앞서 말했듯 Cortex - M7 시리즈의 싱글코어 프로세서를 사용하는데, RTOS를 테스크를 기반으로 여러 작업을 동시에 수행하는 스케줄링이 가능하게 된다. RTOS로 태스크를 빠르게 전환하여 다중작업이 실행되게 하는 것처럼 보이는 것이다. 여러 코어면 다중 프로세스로 가능할 수 있지만, 싱글코어에서는 이처럼 단일 프로세스에서 태스크 단위로 나눠 사용해야한다.      아무튼 위와 같이 RTOS 설정에서 Task를 추가할 수 있는데, 기본 테스크 이외에 하나더 추가해보겠다.  기본으로 위의 3개가 설정되어있으며, 마지막 myTask04가 내가 추가한 Task이다. 기본적으로  Task는 위처럼 이름, 사용할 스택사이즈 크기, prioirty로 나타는데,..
[STM32] Touch GFX 실습 - 2 : 터치스크린으로 PWM 제어
·
STM32/Touch GFX
로봇은 이미 분해했기에 이 터치스크린으로 간단하게 뭘해볼 수 있을까 하던중, 눌러진 숫자를 PWM 신호로 바꿔서, LED의 밝기를 조정하는 간단한 실습을 진행해보았다. PWM은 프로젝트의 모터제어에서도 사용했는데, 원리는 알지만 STM32 IDE에서의 지식이 부족한거같아 다시한번 정리했다.  먼저 나는 ARD_D9핀을 TIM4_CH2로 이용해, PWM_GERNERATE 핀으로 설정하였다.  1. Timer여기서 말하는 TIM은 타이머로, STM32 마이크로컨트롤러에서는 TIM(Timer)별로 여러 타이머를 내장할 수 있다.STM32 마이크로컨트롤러는 보통 여러 개의 일반 목적 타이머와 고급 타이머를 가지고 있어서, 다양한 타이밍 및 제어 작업을 수행할 수 있다. 각 타이머는 독립적으로 동작하며, 특정한 ..
[STM32] Touch GFX 실습 - 1 : 터치스크린으로 숫자입력 및 확인
·
STM32/Touch GFX
만들어서 실습한 Touch GFX 화면은 위와 같다.Button Label : 0~9, del과 send그리고 왼쪽 빈칸의 text AREA가 존재하는데, LCD 터치 스크린을 통해 숫자를 입력하면 왼쪽 화면에 숫자가 뜬다.그리고 SEND 버튼을 클릭하면 왼쪽 아래의 배달 이미지가 출력된다.  그리고 STM32 IDE에서의 Screen1View.cpp에서 GUI 관련 개발도 가능하다.  한번 살펴보자 . 핵심적인 함수중 하나는 아래와 같다. void updateUnitDisplay 함수는 화면에 입력한 숫자 (여기선 n)을 화면에 업데이트 및 값을 저장해 놓는 함수이다. 입력 받으면 백의 자리 숫자의 경우 unit1에들어간다.3자리 숫자를 입력 받을 수 있는데 첫번째 입력한 숫자가 맨앞에 들어가기 때문이..
[STM32] STM?
·
STM32
무작정 개발 했었던 지난학기... 이제 관련 지식도 조금 쌓아서 처음부터 정리를 다시 해보는 중이다. STM보드는 무엇일까.. ? 나무위키를 참고하면..  32비트 마이크로컨트롤러 제품라인의 베스트셀러이자 스테디셀러이며 ARM Cortex-M 시리즈에 기반한 마이크로 컨트롤러이다. 관련 업계에서는 ARM 기반 마이크로컨트롤러 모델을 선정할 경우 0순위로 검토를 하게되는 제품 라인업이며 코어텍스 M0~M7 까지 커버하는 넓은 제품군과 다양한 패키징, 광범위한 부가기능 등으로 인해 매우 널리 쓰이고 있다. 여기서 ARM은? MCU 아키텍처 중 하나로 보면된다. 임베디드에 거의 대부분 사용된다고 보면된다. 지금 정리한다가 알게됬는데 Cortex 시리즈는 A/R/M이 있는데 ARM그 자체에서 이름을 따온 거였구..
[아두이노 프로젝트] 노래방 기기 만들기 - 2
·
아두이노/프로젝트
이번엔 전 시간에 이어 부가 기능인 PC UI 및 리모컨을 만들어 보았다.    마이크 & 멜로디 모듈, 리모컨 모듈과 PC는 MQTT 통신을 이용해 통신하였다.  MQTT란? 작은 코드 공간이 필요하거나 네트워크 대역폭이 제한되는 원격 통신을 위해, 즉 IoT와 같은 제한된, 혹은 대규모 트래픽 전송을 위해 만들어진 프로토콜이다. 그렇기에 TCP/IP 프로토콜 위에서 동작하지만 동시에 굉장히 가벼우며, 많은 통신 제약들을 해결해준다.MQTT의 가장 큰 특징은 Broker라고 보면될거 같다.  Pub/Sub 모델: 메시지를 발행하는 클라이언트와 구독하는 클라이언트가 분리되어 있어 클라이언트 간의 직접적인 연결 없이 통신이 가능합니다.브로커: 메시지 브로커가 중간에서 메시지를 중재하고, 이를 통해 발행된 ..
[아두이노 프로젝트] 노래방 기기 만들기 - 1
·
아두이노/프로젝트
최종 목표는 위와 같은 시스템이다. 시나리오:사용자는 ESP32 보드에서 출력되는 멜로디를 따라 마이크 센서에 노래를 부른다.노래가 끝난후, ESP32보드의 LED Matrix에 점수가 출력된다.  추가적으로, PC에서 NODE-RED의 UI를 통해 노래시작, 템포, 음정 조정을 할 수 있다.리모컨은 또 다른 하나의 ESP보드로 멜로디의 정지/ 시작을 버튼으로 조정할 수 있다. 사실 리모컨에 더 많은 기능을 넣고자 하였지만 사정상 못하게 되었다.  1. 멜로디 구성멜로디는 ESP32보드의 BUZZER를 이용해 멜로디를 출력하였다. 특정 음정을 출력하는 방법은 주파수(음정) + 길이를 통해 만들 수 있다. 멜로디는 5개를 넣었고, 악보를 직접보고 박자 및 음정을 입력해서 넣었다.박자 array의 경우, 보..
[아두이노] BLE 통신
·
아두이노
BLE란?Blue tooth Low Energy의 약자로, 우리가 주로 사용하는 스마트폰, 웨어러블 기기 등과 같은 저전력의 디바이스간의 통신을 위해 디자인된 무선통신 방법이라고 할 수 있다. 블루투스와 동일한 2.4Ghz대의 주파수 대역을 사용하지만, 전력소비를 최소화해 배터리 수명을 지원한다. 핵심적인 동작원리는 Advertising과 Connection이다. Advertising 디바이스는 주변에 자신의 존재를 알리고, Connection에서는 실제 데이터 교환을 수행한다. 위와 같은 계층구조를 가지며, 위의 Stack을 거치며 Packet 전송, 분석하게 된다. 특히 GAP 프로토콜은 서로 다른 제조사가 만든 BLE끼리 호환할 수 있도록 하는 호환성을 제공하는 역할을 한다.  BLE에서도 Cent..
다락공방
오라즈