분류 전체보기

Linux

Arm프로세서와 Arm아키텍쳐

시스템 소프트웨어 개발 -페키징 -브링업 -특성 평가 -BSP개발 -System integration -Stress Test 시스템 반도체 핵심은 Arm프로세서 Arm사는 라이센스 비지니스 -파운드리에서는 SoC와 같은 시스템 반도체가 양산 -주요 IP에 대한 라이센스 판매 IP? -지적 재산권의 약자로, 재사용 가능하도록 기능을 모듈화해 설계한 Core Design -Digital IP / Mixed IP --- Arm프로세서는 왜 배워야 하는가? 시스템 반도체(전기 자동차)의 핵심 부품 -대다수 시스템 반도체는 Arm프로세서를 탑재 -인포테인먼트(90%이상) 자율 주행(ADAS 50%이상) IoT 및 임베디드 장치에서 많이 쓰임 -휴대폰 및 디지탈 TV에서 95%이상 -VR/AR 디바이스에서 사용 A..

Linux

프로젝트 단계 별 시스템 소프트웨어 개발 과정 정리

타겟 브링업 (보드 브링업, 페리퍼럴 브링업) --- 소스 브링업 1. git을 활용해 SoC벤더나 솔루션 업체로부터 소스 받아옴 -git정보 체크 -빌드 위한 커멘드 문서로 제공 2. 컴파일러 설치 -컴파일러를 직접 빌드 서버에 설치 -컴파일러 에러나 빌드 스크립트 수정(for 시스템 성능 극대화, 커스터마이즈) 3. 소스 빌드 -컴파일 에러 혹은 링크에서 수정, 빌드 스크립트 작성 4. 빌드 아키텍처 분석 5. 이미지 다운로드 툴 분석 -SoC 칩 벤더가 제공하는 다운로드 툴 분석 -Trace32 Uart다운로드 기능 --- 소스 브링업 업무방식 대부분 BSP, 시스템 솦트웨어 개발자가 함 --- 소스 브링업을 위한 스킬 욕토 빌드 시스템 -거의 빌드 프레임웤 표준 -SoC벤더도 욕토에 올려서 전달 ..

Linux

시스템 소프트웨어 분야 동향 정리

임베디드를 확장한 시스템 소프트웨어의 전망 시스템 소프트웨어 업체로 진출하기위해 필요한 임베디드 분야 스킬 - rtos, 브링업, 회로리뷰 - 디버깅, 어셈블리 명령어 시스템 소프트웨어 전망 - 시스템 반도체, 전기자동차, 의료기기, 항공기, IoT 등 전기자동차 -> 인포테인먼트, 자율 주행 : 핵심이 시스템 소프트웨어다 리눅스 시스템 소프트웨어 개발자의 종류 - 보드 브링업, 데이터 시트 리뷰 - 메모리 드라이버, 카메라, 이더넷 드라이버 - 전장 업체 중심으로 계속 증가 SoC 시스템 소프트웨어 개발자 빅테크 기업 -> 엔비디아, 퀄컵, 인텔 등 한국 펩리스 업체 CPU 아키텍쳐 개발자 컴파일러 커스터마이즈 및 신규 기능 구현 오픈소스기반 OS에 CPU아키텍처 코드 contribution 시스템 소..

컴퓨터 공학(Computer Science)

책 - 그래서 컴퓨터는 어떻게 동작하나요? 후기

컴퓨터 공학과에 입학하기 전부터(사실 중학생 때부터) 컴퓨터의 동작원리에 상당한 호기심이 있었다. 컴퓨터는 0과 1의 반복으로 어떤 작동을 하는 것이기에 그 마법 같은 일들을 해내는지 그 원리가 궁금했다. 이 궁금증은 컴퓨터 공학을 전공한 사람이라면 한 번쯤은 가져봤을 것이라 생각한다. 물론 이것에 대한 해답은 2학년 과목인 '컴퓨터 구조'라는 과목에서 얻을 수 있지만, 그 내용이 무척 많고 복잡하여 처음부터 이해하기 힘들 것 같아 일종의 컴퓨터 교양서적? 을 읽기 시작했는데, 역시.. 그래도 쉽지 않았다. 책의 이름은 '그래서 컴퓨터는 어떻게 동작하나요?' 라는 책이다. 이 책에서는 아주 아주 기초적인 내용인 0과 1의 흐름, 그리고 논리게이트 등을 이용해서 저장소를 만들고, 여러가지 논리게이트들을 결..

C++/개인 공부

가상 함수와 오버라이딩

가상 함수와 오버라이딩 오버라이딩이란 파생 클래스에서 기본 클래스에 작성된 가상함수를 재작성하여, 기본 클래스의 가상 함수를 무력화 시키는 것이다. 기본 클래스 포인터를 사용하든, 파생 클래스 포인터를 사용하든 파생 클래스에 오버라이딩된 함수가 항상 실행된다. 오버라이딩시에 virtual 키워드를 사용하는데, 이는 자신의 호출바인딩을 실행시간까지 미루도록 지시한다. 함수 재정의와 다르다! 함수 재정의는 컴파일 시간 다형성을 실현하고, 오버라이딩은 실행 시간 다형성을 실현한다. 오버라이딩 사례 #include using namespace std; class Base { public: virtual void f() { cout

C프로그래밍/개인 공부

함수에서 인자를 포인터로 받으면 무조건 원본 변경이 될까?

포인터를 활용하면 '원본의 변경'을 할 수 있다. 라고 배운다. 하지만, 변경이 안되는 헷갈리는 부분이 있어서 글로 남긴다. #include void PointerChange(int *pointer) { pointer = pointer + 10; //주소 자체를 변경 } int main(void) { int a = 10; int *p = &a; printf("a = %d\n", a); printf("p가 가리키는 주소 = %u\n", p); PointerChange(p); printf("p가 가리키는 주소 = %u\n", p); return 0; } 변수 a = 10이고 포인터 변수 p 는 a를 가리키고 있다. PointerChange함수는 매개변수로 포인터 변수를 받고, 받은 포인터 변수를 10증가시킨..

Jminu
'분류 전체보기' 카테고리의 글 목록 (3 Page)