좋은 임베디드 소프트웨어 개발자가되고 싶거나이 분야에서 개선하고 싶은 사람들을위한 몇 가지 팁을 원합니다.
하드웨어, 소프트웨어에 대해 무엇을 배워야합니까?
어떤 책이 가장 권장됩니까? 블로그?
결국 초보자 애호가에서 훌륭한 전문가로 어떻게 갈 수 있습니까?
좋은 임베디드 소프트웨어 개발자가되고 싶거나이 분야에서 개선하고 싶은 사람들을위한 몇 가지 팁을 원합니다.
하드웨어, 소프트웨어에 대해 무엇을 배워야합니까?
어떤 책이 가장 권장됩니까? 블로그?
결국 초보자 애호가에서 훌륭한 전문가로 어떻게 갈 수 있습니까?
답변:
모든 대답은 지금까지는 좋았지 만 2 센트를 넣겠습니다.
다음은 약간의 팁과 추가 팁이 있습니다.
여기 몇 권의 책이 있습니다.
다음은 일부 웹 사이트입니다.
책의 경우 역사를 파는 것이 좋습니다. 오늘날 임베디드 소프트웨어 기술의 대부분은 전년도의 최첨단에서 비롯됩니다.
무엇이든 매일 연습하십시오.
C를 배우고 개발자 보드로 시작하는 것과 같은 명백한 것 외에도 마이크로 컨트롤러 데이터 시트 를 읽는 법을 배우고 싶을 것 입니다.
제조업체는 점점 더 많은 기능을 마이크로 컨트롤러에 추가하므로 점점 더 복잡해지고 있습니다. 데이터 시트는 전기적 특성 (소프트웨어 개발자보다 전자 엔지니어에게 더 흥미로운)을 제공 할뿐만 아니라 레지스터, 메모리 맵 등에 대한 자세한 설명도 제공
합니다. 디버깅 단계에서 더 심한 두통을 유발할 수 있습니다.
'내장'은로드 된 용어입니다.
어떤면에서 제어 할 하드웨어가있는 한 단일 응용 프로그램을 실행하는 데 사용되는 모든 시스템을 내장 시스템이라고 할 수 있습니다. 로컬 I / O 모듈을 통해 프로세스를 제어하는 경우 임베디드 시스템의 Linux에서 Java 애플리케이션을 실행하는 2GB의 RAM으로 400MHz PPC604를 호출 할 수 있습니다. 반면, 일종의 최소 네트워크 응용 프로그램을 실행하는 arduino는 임베디드 시스템이 아닙니다. 그러나 아마도 '임베디드 (embedded)'는 대부분의 사람들이 단지 수백 바이트의 RAM, 운영 체제가없고, 수많은 온칩 주변 장치를 갖춘 플래시 기반 컨트롤러를 생각하게한다.
즉, 임베디드 임베디드 시스템을 학습하는 두 가지 가장 큰 장애물이 아닌 임베디드 프로그래머는 일반적으로 I / O 레지스터 및 인터럽트입니다.
동시성 및 이벤트 중심 프로그래밍의 주요 문제는 종종 주류 응용 프로그램에서 종종 발생하기 때문에 비 내장형 프로그래머에게는 두 가지 개념 중 인터럽트가 실제로 처리하기가 더 쉬울 수 있습니다. 인터럽트를 고통스럽게 만드는 것은 인터럽트 처리 품질에 대한 시스템의 극도의 민감도와 인터럽트 조건을 지우고 다음 설정을 위해 하드웨어를 다루는 복잡한 점을 깨닫는 것입니다. GUI를 사용하면 교착 상태가 응용 프로그램 만 종료합니다. 인터럽트 핸들러를 사용하면 교착 상태로 인해 전체 시스템이 잠 깁니다.
I / O 장치가 가장 어려운 영역 인 것 같습니다. 미숙를 들어,이 레지스터를 읽는 것을 발견하는 것은 매우 놀라운 일이 될 수 있습니다 여기 것은 그 레지스터에 영향이 거기를 . 비트를 지우려면 1을 씁니다. 데이터 레지스터 등을 읽을 때 스스로 지워지는 상태 비트. I / O 하드웨어에는 장치 데이터 시트를 찾고 해석하는 방법을 배우는 것 외에는 처리 할 일반적인 규칙이 없기 때문에 많은 가능성이 있습니다. 직렬 포트 용 장치 드라이버를 작성하면 저수준 I / O 프로그래밍에 대해 많은 정보를 얻을 수 있습니다.
소매를 펴거나 베어 메탈에 간단한 C 및 / 또는 어셈블리 언어를 프로그래밍하는 것보다 이러한 것들을 배우는 것의 대안은 없습니다. 위에서 언급 한 자바 기반 임베디드 시스템조차도 결국 I / O를위한 장치 드라이버가 필요하며 이는 궁극적으로 일부 C를 다루는 것을 의미합니다. 경험은 최고의 교사입니다. MSP430, TMS320, AVR, ARM, PIC, 68HC11 등 마이크로 컨트롤러를 선택하고 평가 키트를 찾고 일부 시스템을 구축하십시오.
그러나 당신은 직업적인 소형을 위해 납땜해야합니다. 나는 PIC 가족의 팬이 아니지만 당신은 역사 수업으로 무언가를 얻고 싶을 수도 있습니다. ARM과 Thumb, 아마도 MIPS (이전의 원본 PIC 아키텍처와 혼동하지 않는 pic-32)를 절대적으로 배우십시오. 스텔라리스도 가능하지만 ARMmite Pro는 훌륭한 보급형 ARM 보드입니다.
여기서 배우고 싶은 것은 다양한 플랫폼을위한 어셈블러입니다. C. C와 어셈블러 상호 작용 다른 도구 GCC 및 비 GCC 데이터 시트 / 프로그래머 참조를 읽는 방법 (그리고 모두 오류가 있거나 오해의 소지가 있음을 인식하고 절대로 믿지 말고 하드웨어가 문서보다 우선합니다) 및 회로도를 읽거나 사용하는 방법. 이들은 일반적으로 복잡한 회로도는 아닙니다. 많은 보드는 프로젝트에서 인터페이스하기에 좋습니다. 즉, 보드에 쓰레기가 없어 I / O 핀에 직접 액세스 할 수 있습니다. 그러나 그것은 학습에 가장 적합하지 않습니다. 스텔라리스 같은 것프로젝트에 고통스러운 보드는 임베디드 학습 및 드라이버 빌리기 / 사용하기 또는 데이터 시트에서 자신의 글쓰기를 배우기위한 많은 재미있는 것들을 가지고 있습니다. Atmel AVR 버터 플라이는 여전히 사용 가능한 경우 좋은 보드입니다. 직렬 포트를 납땜하여 프로그래밍하거나 구멍에 전선을 끼울 필요가 있습니다. 그것이 제공하는 것은 프로그래밍하는 법을 배울 수있는 몇 가지 주변 장치입니다.
Linux 또는 RTOS에서 SDK 또는 API 호출을 사용하여 응용 프로그램을 작성하는 작업 (하드웨어를 만지거나 데이터 시트를 읽지 않음)을 포함하는 임베디드 작업을 끝내더라도 위의 지식은 여전히 나머지보다 앞서 있습니다.
이 기사 (포르투갈어에서 영어로 자동 번역됨)에는 임베디드 소프트웨어 개발자로서의 경력 개발에 대한 좋은 개요가 있습니다. 참고 : 원본은 여기에 있습니다 .
그것은 당신이 발전시켜야 할 지식의 영역을 개괄하는 것으로 시작합니다 :
지식 : 임베디드 시스템과 관련된 이론을 알아야합니다. 이것은 하드웨어와 소프트웨어를 의미합니다. 작동하는 하드웨어 아키텍처를 알지 못하면 임베디드 소프트웨어의 유능한 개발자가 될 수 없습니다.
특기 :이 지역에서 경험을 쌓아야합니다. 연습이 필요합니다. 모든 PIC 어셈블러 니모닉을 장식 할 수 있지만이 지식으로 LED를 구동 할 수없는 경우에는 사용되지 않습니다.
태도 : 무엇보다도이 분야에서 성장할 수있는 태도가 필요합니다. 빈번한 변경 및 개발로 매우 역동적입니다. 당신은 항상 동기를 부여 받아야합니다. 그러한 태도가 없으면 곧 당신을 줄 것입니다. 이 영역은 매우 강력해야합니다.
그런 다음 이러한 영역을 마스터하기위한 다음 팁을 제공합니다 (추가 텍스트로 개발하면 제목 일뿐입니다).
- 하드웨어를 배우기 위해 필요한 것 (적어도)
- 소프트웨어를 배우기 위해 필요한 것 (적어도)
- 또한 연구 운영 체제
- 훈련이 필요합니다
- 멈추지 말고 계속 배우고 네트워킹을 개발하십시오!
임베디드 소프트웨어 엔지니어가되기 전에 두 번 생각하십시오. 나는 내 경력에 단계가있었습니다. 판매 / 마케팅으로 이전하는 것보다 처음 5 년 동안 소프트웨어를 개발했으며 15 년 동안 100 + M $ 비즈니스를 관리했으며 이제는 소프트웨어로 돌아 왔습니다.
15 년 후에 소프트웨어로 돌아 왔을 때, 내가 왜 처음에 떠 났는지 기억합니다. 그것은 어렵다. 집중력, 수백 줄의 코드가 서로 닿아 야하며 모두 메모리에 보관해야합니다. 임베디드는 특히 어렵다.
또한 자신을 이해해야합니다. 당신이 일반적으로 똑똑한 사람, 세심하고 인내심이 있다면 훌륭한 엔지니어가 될 것입니다. 당신이 그 중 하나를 누락하면 최고 평균입니다. 생각 해봐 당신이 매우 똑똑하고 인내심이 없다면 아무리 똑똑해도 훌륭한 엔지니어링은 인내심과 세부 사항에주의를 기울이기 때문에 가치가 없습니다.
또한 대화하지 않고 한 번에 코드 시간을 편안하게 볼 수 있어야합니다. 나는 훌륭한 사회적 기술을 가진 사람들이 이것을 견딜 수 없다는 것을 알게되었습니다.
이 모든 것이 체크 아웃되면 그 위대한 책을 모두 읽는 것보다 연습을하면 훌륭한 엔지니어가 될 것입니다.
다른 사람들은 모두 위대한 말을합니다. 따라서 일반적인 조언을 드리겠습니다 : 읽기 읽기 읽기 읽기 읽기 읽기 읽기 읽기!
http://embeddedgurus.com의 모든 기사를 읽으십시오 . 이해가되지 않는 경우 조사하십시오. 그러한 것들에 대한 설명에서 당신이 이해하지 못하는 것을 발견하면, 좀 더 읽으십시오. 임베디드 소프트웨어 직책을 맡을 예정이며 지난 몇 년 동안 소수의 전문 프로젝트와 많은 독서 경험을 쌓았습니다. 경험을 통해 시험해 볼 수 있지만 읽기는 시도한 내용이 이전보다 더 나은지 알 수 있습니다. 어떤 상황에서도 작업 할 수있는 개념을 소개합니다.
그냥 읽어보세요!