애플 펜슬을 이용하게 되면서 아이패드는 수첩을 대신하게 되었습니다. 

Notability 앱을 이용해 회사에서는 해야 할 일이나 일정을 적어 나가고 있습니다.

매우 만족하고 있는 앱인데 한 가지 아쉬운 점이라면 달력이 나오는 페이지가 없다는 것.

그래서 제가 만들었습니다. 귀찮지만...

 

이렇게 보이게 말이죠. 유용할 것 같죠? 그래서 공유합니다...

이미지를 카피한 후 붙여넣기 하면 됩니다.

 

2020_Yearly.png
0.37MB
202009.png
0.21MB
202010.png
0.22MB
202011.png
0.22MB
202012.png
0.22MB

컴퓨터 산업의 영웅중 한 명인 스티브 워즈니악. 그의 자서전이 출간됐다는 걸 알았을 땐 이미 절판. 중고책을 샀다.

 

 

애플I을 설계하기 전까지의 이야기는 그냥 신변잡기로 읽힌다. 그러다가 애플I을 설계하는 이야기에서 몰입하게 되는데... 아래에 그 내용을 카피해 본다.


p.189
지금은 애플I이라고 불리는 첫 번째 컴퓨터와 관련된 이야기와 그것을 설계했던 과정에 대한 이야기를 좀 더 해 보겠다.

먼저 나는 종이 위에 그리는 것으로 작업을 시작했다. 예전에 종이 위에 미니컴퓨터를 설계하던 때 사용하던 방법 그대로였다. 그리고 어떤 CPU를 사용할 것인지 결정했다. 알테어가 사용하는 인텔 8080 CPU는 나의 한 달 치 집세보다 비쌌다. 게대가 일반 사람이 하나 또는 소량으로 구입할 수도 없었다. 그것을 구입하기 위해서는 먼저 번듯한 회사라는 것을 증명할 갖가지 신용 관련 서류를 작성해야 했다.

다행스럽게도 HP 동료들에게 홈브루 클럽과 내가 하고자 하는 일에 대한 이야기를 해 왔었는데, 마이런 터틀이 한 가지 좋은 의견을 주었다. 그는 HP 직원이라면 모토롤라와 거래를 할 수 있을 것이라고 했다. 40달러 정도면 모토롤라 6800 마이크로프로세서 1개와 그 밖의 다른 칩 2개 정도를 살 수 있다는 것이다. 나는 속으로 정말 싸다고 생각했다. 어떤 프로세서를 사용해야할 지 더 생각해 볼 필요도 없었다.

그보다 앞서 깨달았던 것은 HP 계산기가 사실상의 컴퓨터라는 사실이었다. 알테어나 크림소다 컴퓨터와 견주어 다를 바가 없었다. 계산기에도 프로세서와 메모리가 있었다. 대신 계산기는 켜자마자 사용 준비가 되었다. 즉, 그 안에 프로그램이 있어서 켜는 순간 바로 숫자를 입력할 수 있었다. 자동 부팅이 되는 것이기 때문에 우리는 바로 무언가를 할 수 있다.

<중략>

따라서 나는 롬 칩도 필요했다. 컴퓨터를 자동으로 부팅시키는 그런 프로그램을 만들어야 했기 때문이다. 알테어나 크림소다 컴퓨터는 프로그램을 입력하려면 스위치를 켠 다음 30분가량 지나야 했다. 애플I은 프로그램 가져오는 기능을 메모리에 간편하게 집어넣고 싶었다. 그러려면 컴퓨터를 켜자마자 작동되는 작은 프로그램을 만들어야 했다. 이 프로그램을 통해 컴퓨터는 키보드 입력 정보를 읽을 것이고, 우리는 데이터를 메모리에 저장할 수 있으며, 메모리에 어떤 데이터가 있는지도 알 수 있다. 그리고 프로세서가 메모리의 특정 위치에 있는 프로그램을 돌리도록 만들 수 있다. 알테어로는 프로그램 돌리는데 30분이 걸렸지만 애플I으로는 키보드를 이용해 1분도 채 걸리지 않았다.

알테어의 메모리에 무엇이 들어 있는지를 보려면 작은 표시등을 보면서 30분을 기다려야 했다. 하지만 애플I에서는 TV 화면을 보며 1초 정도 기다리면 됐다.

결국 나는 이때 돌아가는 작은 프로그램을 '감시' 프로그램이라고 불렀다. 이 프로그램의 주된 역할은 키보드로 입력되는 내용을 확인하는 것이었기 때문이다.

그러나 이것은 디딤돌에 불과했다. 내가 만든 컴퓨터의 궁극적인 목표는 프로그램을 짜는 것, 특히 당시 널리 사용되던 기계어인 포트란을 돌릴 수 있도록 하는 것이었다.

따라서 나는 표시등과 스위치 달린 컴퓨터 전면부 패널 대신 롬에 작은 프로그램을 심고자 했다. 그렇게 하면 키보드로 데이터를 입력할 때 결과를 화면으로 볼 수 있어서 컴퓨터를 비행기 조종실처럼 보이게 했던 전면부 패널을 완전히 없앨 수 있었다. 이 아이디어는 사실 만만한 것이 아니었다.

나는 프로젝트 수행에 항상 많은 시간을 할애한다. 나만의 컴퓨터를 만들 가능성이 보인 후부터 나는 컴퓨터 설계에 필요한 부분과 칩에 대한 모든 정보를 수집하기 시작했다.

나는 아침 일찍 차를 몰고 회사에 나갔다. 그리고는 조용한 가운데 엔지니어링 잡지와 칩 매뉴얼을 빠른 속도로 읽었다. 마이런이 이야기했던 모토롤라의 6800 칩처럼 내가 관심을 가지고 있던 칩의 세부 사항과 타이밍 다이어그램 등을 자세히 눈여겨 보기도 했다. 그렇게 자료를 읽는 가운데 내 머릿속에서는 설계의 가닥이 잡히기 시작했다.

모토롤라 6800에는 40개의 핀이 있었고 나는 40개의 핀 각각이 어떤 역할을 하는지 알아야 했다.

이 프로젝트는 내가 여가 시간에 할 수밖에 없었으므로 프로젝트 진행 과정은 길고도 느렸다. 몇 주가 지나도록 실제 컴퓨터 제작 작업엔 들어가지도 못했다.

그러던 어느 날 밤 종이 위에 설계를 하기 시작했다. 거칠게나마 스케치 해 놓은 것은 있었다. 하지만 그날 밤 나는 HP 사무실의 제도판 위에서 주의 깊게 설계도를 그리기 시작했다.

컴퓨터를 완성하기까지의 과정에서 그것은 미미한 첫 걸음에 불과했다. 하지만 꼭 필요한 걸음이었다.

잡지를 보다가 다음과 같은 내용의 기사에 관심이 가기 시작했다. 샌프란시스코에서 열리는 WESCON 박람회에서 새로운 슈페리어 사운딩 마이크로프로세서가 선보인다는 기사였다. 그것이 유독 나의 관심을 끈 이유는 이 새로운 마이크로프로세서, 펜실베니아 소재 모스 테크놀로지에서 만든 6502 모델이 내가 설계에 적용하고 있는 모토롤라의 6800 모델과 핀대 핀으로 완전히 호환된다는 점 때문이었다. 즉, 전기적인 측면에서 똑같았다. 설계를 다시 안 해도 그 마이크로프로세서를 이용할 수 있었다.

다음으로 들은 이야기는 그 마이크로프로세서를 WESCON 박람회 모스테크놀로지 부스에서 직접 구입할 수 있다는 것이었다. 칩을 구하기 쉽다는 이유 하나로 나는 애플I에 이 마이크로프로세서를 사용하기로 했다.

그 칩의 최대 장점은 HP 직원 거래 가격으로 살 수 있는 모토롤라 칩의 절반 정도인 20달러 수준으로 가격이 저렴하다는 것이었다.

WESCON 박람회는 1975년 6월 16일과 18일 사이 샌프란시스코의 유명한 소 전시장에서 열렸다. 나는 동료들과 차를 타고 그곳에 갔다. 모스 테크놀로지 부스 판매대 앞에 줄을 서서 개당 20달러를 주고 칩 몇 개를 샀다. 그리고 5달러에 매뉴얼도 샀다.

이제 컴퓨터를 만드는 데 필요한 부품들이 모두 마련됐다.

' > ' 카테고리의 다른 글

스티브 워즈니악  (0) 2020.09.11
나는 슈뢰딩거의 고양이로소이다  (0) 2020.07.11
인공지능 투자가 퀀트  (0) 2020.07.09
유년기의 끝  (0) 2020.06.19
C 기초 플러스 한글판  (0) 2020.05.27
왜 공부하는가  (0) 2020.05.10

홈플러스 인터넷에서 3판을 샀는데, 딸 아이들 먹을새라 나 혼자 다 먹어버렸다. 이거 물건이다.

가끔 오뚜기 냉동피자를 산 적은 있었지만, 리스토란테가 넘사벽이구먼.

정말 강추다. 맥주 안주로도 좋다.

🍖🍖🍖🍖🍖 (5/5점)

' > 먹을것' 카테고리의 다른 글

인생에일  (0) 2020.09.22
리스토란테 냉동피자  (0) 2020.09.11
농심 김치 큰사발  (0) 2020.08.16
모란역 '부산자매 돼지국밥'  (0) 2020.08.15
생활맥주  (0) 2020.08.15
순대실록 대학로본점  (0) 2020.08.07

2010년. 🍗(0.5/5점)

게시판에서 '마지막 10분을 위한 영화'라는 평을 보고, 보자! 결심.

고스트 4명이 모였을 때 이미 알아버렸다.

시간 낭비인 영화.

' > 볼것' 카테고리의 다른 글

헬로우 고스트  (0) 2020.08.30
엑스 마키나  (0) 2020.07.31
박재동 화백의 김어준  (0) 2020.07.20
[펌] 똥꼬털 많은 여고생 고민  (0) 2020.07.18
Zodiac  (0) 2020.07.12
The Manchurian Candidate  (0) 2020.07.11

이 책을 최대한 활용하기 위해

이 책의 예제를 다양한 사람들이 가능한 한 쉽게 작업할 수 있도록 모든 노력을 기울였습니다. 예제를 경험하므로써 이 책을 최대한 활용하기 위해서는 다음과 같은 하드웨어가 필요합니다.

  • 인터넷에 액세스할 수 있는 Windows, MacOS 또는 Linux PC

  • STM32 Nucleo-F767ZI 개발 보드

  • 두 개의 Micro-USB 케이블

  • 점퍼선—20~22AWG(~0.65mm)

사용된 여러 도구에 대한 자세한 설정은 각 장에 설명되어 있습니다.

 

이 책의 디지털 버전을 사용하는 경우 직접 코드를 입력하거나 GitHub를 통해 코드에 접근 가능합니다. 이렇게 하면 코드의 복사 및 붙여넣기와 관련된 잠재적인 오류를 방지할 수 있습니다.

 

이 책은 저수준의 임베디드 시스템 프로그래밍을 목표로 하기 때문에, 우리는 C언어를 사용할 것입니다. 데이터시트를 읽을 수 있는 능력과 마이크로컨트롤러에 대한 지식이 있다고 가정합니다. C언어(또는 C++)에 대해 잘 알고 있다면 이 책을 쉽게 읽을 수 있습니다. RTOS의 선지식은 필요하지 않습니다. 임베디드 시스템의 MCU를 가지고 작업하게 되므로, 주로 MCU와 개발 보드의 기능을 다루는 하드웨어 측면에 대해서도 몇 가지 논의가 있을 것입니다. 이 항목에 대해서는 하드웨어 지식이 거의 없는 사람이라도 별 어려움 없이 따라갈 수 있도록 자세히 다룹니다. 실제 조립이 필요하지는 않지만 개발 하드웨어를 다루고 처리하는 것에 불편함이 없어야 합니다.

 

예제 코드 파일 다운로드

https://github.com/PacktPublishing/Hands-On-RTOS-with-Microcontrollers

 

이 책이 다루고 있는 내용은 무엇입니까?

이 책은 총 17장으로 구성되어 있으며, 4개의 섹션으로 나뉩니다. 이미 익숙한 내용이 있다면 이 책을 처음부터 읽을 필요는 없습니다. 예를 들어, RTOS 기본 개념과 실시간 시스템에 이미 익숙하다면, 4장 "적절한 MCU 선택"으로 바로 가셔도 좋습니다. 다음은 각 장에 대한 간략한 설명입니다.

 

1장 “실시간 시스템 소개”에서는 RTOS가 무엇이며, 언제 그리고 왜 RTOS를 사용해야 하는지에 대한 간단한 소개입니다. MCU 기반 RTOS를 대체할 수 있는 하드웨어 및 소프트웨에 대해서도 논의합니다.

 

2장 “RTOS의 Task 이해”에서는 RTOS Task와 슈퍼 루프를 비교하고, 두 가지를 모두 사용하여 병렬 작업을 수행할 수 있는 다양한 방법을 제공합니다.

 

3장 “Task 신호 및 통신 메커니즘”은 많은 다이어그램과 함께 RTOS 개념을 간략하게 소개합니다. 이 장에서는 2장에 이어 RTOS Task 관련 개념 및 용어에 대한 레퍼런스 및 재교육으로 유용하게 활용할 수 있습니다.

 

4장 “적절한 MCU 선택”은 MCU를 선택할 때 고려해야 할 사항을 이해하는 데 도움이 됩니다. 하드웨어와 펌웨어의 상호 의존성을 평가한 후 하드웨어와 펌웨어 엔지니어가 모두 시스템 설계에 관여하는 것이 왜 중요한지 살펴봅니다.

 

5장 “IDE(통합개발환경) 선택”에서는 특정 IDE(Integrated Development Environment)를 선택해야 하는 이유를 포함하여 다양한 유형의 IDE를 소개하고 논의합니다. STM32CubeIDE를 설정하고 예제 코드를 불러들이는 방법을 설명합니다.

 

6장 “실시간 시스템을 위한 디버깅 도구”에서는 책 전체에서 사용할 SEGGER Ozone 및 SEGGER SystemView 시각화 디버깅 소프트웨어 도구를 포함하여 임베디드 시스템을 디버깅하는 도구에 대해 다룹니다. 하드웨어 기반 테스트 장비와 임베디드 시스템 개발 워크플로우를 위한 기타 유용한 도구도 포함되어 있습니다.

 

7장 “FreeRTOS 스케쥴러”에서는 FreeRTOS를 사용하여 작업을 생성하는 다양한 방법과 시작 오류를 해결하는 방법을 설명합니다. Task 상태와 성능을 최적화할 수 있는 다양한 방법을 이해할 수 있습니다.

 

8장 “데이터 보호 및 태스크 동기화”에서는 세마포어를 사용한 작업 동기화 및 뮤텍스를 사용한 데이터 보호, 레이스 조건 및 우선 순위 역전을 방지하는 방법에 대해 다룹니다. 소프트웨어 타이머에 대한 내용도 포함됩니다.

 

제9장 “태스크간 통신"에서는 값이나 참조의 방법으로 큐를 사용한 서로 다른 예제를 이용하여 태스크간 정보를 전달하는 방법을 살펴보고, 두 방법의 장점과 고려사항에 대해 논의합니다. 또한 태스크 알림 및 큐의 비교를 포함한 직접 작업 알림인 경량 태스크간 통신 메커니즘에 대해서도 알아봅니다.

 

10장 “드라이버 및 ISR”에서는 세마포어, 큐 및 스트림 버퍼를 포함한 다양한 FreeRTOS 기본 기능으로 효율적인 드라이버를 구현하는 방법에 대한 몇 가지 자세한 예를 살펴보겠습니다. 또한 DMA와 같은 MCU 하드웨어와 함께 FreeRTOS를 사용하여 CPU 효율성이 매우 높은 드라이버 구현을 제공하는 방법도 알아보겠습니다. 이 장에서는 MCU 주변장치 레지스터와 함께 STM32 HAL 코드와 작업합니다.

 

11장 “작업 간에 하드웨어 주변기기 공유”에서는 하드웨어 자원을 공유하면서 여러 작업에서 안전하게 사용할 수 있는 드라이버를 만드는 방법을 설명합니다. 우리는 여러 태스크에 걸쳐서 안전하게 사용할 수 있도록 뮤텍스와 큐에 집중하면서 사용자 친화적이고 효율적이기 위해 STM이 제공하는 USB CDC를 채택할 것입니다.

 

제12장 “잘 추상화된 아키텍처 생성에 대한 조언”에서는 코드 재사용성, 유연성 및 하드웨어 이식성을 다루며, 작업을 보다 쉽게 해주는 추상화를 생성하는 방법에 대해 설명합니다. 재사용을 촉진하는 소스 코드 조직화에 대한 몇 가지 제안 사항도 다룹니다.

 

13장 “큐를 이용한 느슨한 커플링 생성”은 이 책에서 다룬 모든 개념중 정점에 해당합니다. 여기에는 적절하게 추상화되고 엔드-투-엔드 애플리케이션을 만드는 데 사용되는 느슨하게 결합된 아키텍처의 완전히 다듬어진 예가 포함되어 있습니다. 앞에서 개발한 USB CDC 가상 통신 포트와 LED 추상화를 이용하여, 명령큐를 사용한 느슨하게 결합되고 완전히 재사용 가능한 LED 시퀀서를 만들 것입니다. 이 임베디드 프로그램은 Python으로 작성된 크로스 플랫폼 UI를 프로그램이 실행되는 PC에서 제어할 수 있습니다.

 

14장 “RTOS API 선택"에서는 FreeRTOS 기능에 액세스하는 데 사용할 수 있는 3가지 API, 즉 기본 FreeRTOS API, ARM의 CMSIS-RTOS 및 POSIX에 대한 개요와 함께 고급 아키텍처에 관한 논의를 계속합니다. 논의 항목에는 각 기능들의 비교와 각기 다른 프로젝트에 대해 하나의 API를 선택해야하는 이유가 포함됩니다.

 

15장 “FreeRTOS 메모리 관리”에서는 FreeRTOS에서 메모리 관리를 위한 몇 가지 다른 옵션을 자세히 살펴봅니다. 정적 할당과 동적 할당을 비롯하여 MPU(Memory Management Unit) 또한 알아봅시다.

 

16장 “멀티프로세서 및 멀티코어 시스템”에서는 멀티프로세서 및 멀티코어 시스템을 다양한 이유로 어떻게 사용하는지, 즉 멀티프로세서 및 멀티코어 시스템이 무엇인지, 시스템의 다양한 부분이 어떻게 통신하는지 설명합니다.

 

17장 “문제 해결 팁 및 다음 단계”에서는 스택오버플로를 방지하는 방법과 중단된 시스템(hung system)의 문제를 해결하는 방법을 포함한 시스템 문제 해결을 위한 팁을 다룹니다. 다음 단계를 위한 몇 가지 권장 사항도 다룹니다.

서문

본 실습 가이드는 마이크로컨트롤러(MCU)에서 실시간 운영 체제(RTOS)를 실행하는데 있어 가장 중요한 기능적 지식을 제공합니다. 실제 하드웨어를 사용하는 실습 예제를 통해 RTOS 응용프로그램을 어떻게 구현하는지, 그리고 일반적인 성능과 개발 소요 시간 사이의 절충하는 방법에 대한 논의에 관심 있다면 이 책을 잘 선택한 것입니다.

 

우리는 FreeRTOS 커널을 사용하여 코드를 구현하고, 저가의 STM Neucleo 개발 보드에 실장된, 인기있는 STM32 ARM MCU를 활용하며, SEGGER 디버그 도구를 사용하여 코드를 디버깅하고 분석할 것입니다. 이 책에 사용된 모든 도구들은 취미 활동가나 전문가가 프로젝트를 시작할 때 쉽게 접근할 수 있고 실제 프로팀에서도 많이 사용하기 때문에 선택되었습니다. 이 책의 내용과 예제를 통해 얻은 지식과 경험은 실제 전문적인 환경에서 개발시에 직접적으로 적용될 수 있습니다.

 

어떤 사람을 위한 책일까요?

RTOS 프로그래밍은 초보자의 주제가 아니며 임베디드 시스템에 대한 학습을 위한 적절한 출발점이 아닙니다. MCU나 C언어에 생소하다면, 이보다 발전된 주제에 접근하기 전에 기초부터 다루고 실제 경험을 쌓는 것으로 시작하는 것이 좋습니다.

 

그렇다면, 이 책은 어떤 사람에게 가장 필요한 것일까요?

 

전문 프로그래머 : 지금까지는 베어메탈(OS 없음)의 프로그래밍 경험만 있으면서, RTOS를 사용하여 엄격한 타이밍 요구 사항을 충족하고 동시 운영의 균형을 얻으며 모듈화된 코드를 작성하는 방법을 배워서 MCU 프로그래밍 기술을 향상하려는 프로그래머.

 

학생 : 이론을 다루고, 강의를 듣고, 실험실에서 연습문제를 코딩하는 등의 활동을 해왔지만, 물리적으로 만지고 상호작용할 수 있는 것을 시작할 수 있도록 도와주는 완벽한 가이드를 찾고 있는 학생.

 

보다 고급스러운 주제로 넘어가려는 메이커 : 스케치나 스크립트 코드를 몇 가지 코딩했지만 다음 과제를 찾고 있고, 기초부터 완전한 MCU 기반 시스템을 만들고 싶다면 여기에 나와 있는 정보는 프로그래밍 측면의 본궤도에 오르는 데 도움이 될 것입니다. 프로젝트에 사용할 MCU를 선택할 때 무엇을 고려해야 하는지에 대한 조언도 얻을 수 있습니다.

요즘엔 롯데 불매를 하는지라 농심 제품은 전혀 먹질 않고 있는데, 편의점에서 먹을 땐 다른 대안이 없더군요.

농심 김치 큰사발면이 계속 먹어도 물리지 않고 맛있습니다. 대안 제품 좀 추천해주세요.

' > 먹을것' 카테고리의 다른 글

인생에일  (0) 2020.09.22
리스토란테 냉동피자  (0) 2020.09.11
농심 김치 큰사발  (0) 2020.08.16
모란역 '부산자매 돼지국밥'  (0) 2020.08.15
생활맥주  (0) 2020.08.15
순대실록 대학로본점  (0) 2020.08.07

Building real-time embedded systems using FreeRTOS, STM32 MCUs, and SEGGER debug tools

 

임베디드 하드웨어/펌웨어 설계자로서 괜찮은 책을 찾은 것같아 공부해보려 합니다. 책에서 사용하고 있는 테스트 보드는 ST사의 ⟪NUCLEO-F767ZI⟫이니 준비하고 따라해 봅시다.

 

NUCLEO-F767ZI

 

저자 Brian Amos에 대해

2012년부터 FreeRTOS를 기반으로한 임베디드 시스템 엔지니어입니다. 현재 통신 업계의 수석 펌웨어 엔지니어로, 위성 통신 분야의 지상에서 사용되는 임베디드 시스템을 개발하고 있습니다. 이전에는 고정밀 테스트 장비를 신속하게 개발하기 위해 유연한 아키텍처를 만드는 엔지니어 팀을 이끌었습니다. 이에 앞서, 그는 산업용 기계의 유지보수 시기를 예측하는 데 사용되는 메쉬 네트워크 에너지 수집 센서를 이용한 작업을 수행해 왔습니다.

 

 

차례

스마트폰이 다양한 하드웨어를 잡아 먹고 있음은 일반적으로 인식되고 있는 사실일터. 카메라, 캠코더, 라디오, MP3 플레이어, 게임기, 시계, 지갑 등등... 디지털 데이터로 표현할 수 있는 모든 것들이 손 안으로 수렴하고 있다.

 

난 필기구를 좋아한다. 이에 수반되는 종이, 글씨체(폰트)에도 관심있다. 중학생 때부터는 펜텔에서 출시한 중성펜 Hybrid 팬이었고 성인이후 만년필을 좋아하게 됐는데, 언제부턴가... 10년 전부터였을꺼다... 필기를 할 일이 없어졌다. 컴퓨터로 타이핑하는게 훨씬 유용하게 됐으니까 말이다.

 

그러다 가끔이지만 와콤 타블렛 장치를 사용하다 얼마 전부터 애플 펜슬을 사용하고 있는데, 이젠 펜도 스위스 시계 메이커처럼 많은 자리를 내줘야할 것으로 보인다.

+ Recent posts