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

2023. 8. 9. 15:20·Linux

타겟 브링업 (보드 브링업, 페리퍼럴 브링업)

---
소스 브링업
1. git을 활용해 SoC벤더나 솔루션 업체로부터 소스 받아옴
-git정보 체크
-빌드 위한 커멘드 문서로 제공

2. 컴파일러 설치
-컴파일러를 직접 빌드 서버에 설치
-컴파일러 에러나 빌드 스크립트 수정(for 시스템 성능 극대화, 커스터마이즈)

3. 소스 빌드
-컴파일 에러 혹은 링크에서 수정, 빌드 스크립트 작성

4. 빌드 아키텍처 분석

5. 이미지 다운로드 툴 분석
-SoC 칩 벤더가 제공하는 다운로드 툴 분석
-Trace32 Uart다운로드 기능

---
소스 브링업 업무방식
대부분 BSP, 시스템 솦트웨어 개발자가 함

---
소스 브링업을 위한 스킬

욕토 빌드 시스템
-거의 빌드 프레임웤 표준
-SoC벤더도 욕토에 올려서 전달

Git
-Tag, Merge

부트로더 및 리눅스 커널 소스 트리 이해
-컴파일러 에러 수정, 디펜던시 체크

MakeFile에 대한 이해
-컴파일러 옵션
-소스 커스터마이제이션
-Shell 스크립트

---
보드 브링업과정에서의 주요 이슈

부팅 과정
-전원->부트 로더->리눅스 커널->드라이버

부트로더 크래시
-메모리나 전원 초기화 과정에서 문제 발생
-하드웨어성 이슈도 발생

커널 패닉
-디바이스 드라이버 설정 오류
-하드웨어 속성 설정 오류
-컨피그 옵션 설정 문제

메모리 이슈
-랜덤하게 페이지 폴트 발생
-메모리 관리 관련 초기화 문제
-메모리 속정 설정 문제
-비트 플립

파워 이슈
-커널 드라이버의 파워 관리 문제
-스펙 정해진 voltage공급
-파워 시퀀스 정확하지 않음
-arm코어 hang

---
페리퍼럴 브링업 이란
센서, 터치
-인터럽트 설정
-데이터 시트에 맞게 속성 설정
카메라
-인터페이스 점검
-데이터 시트 및 스펙 점검

외부 벤더 업체와 커뮤니케이션
-이슈 발생시 적절하게

레퍼런스 코드 리뷰 (페리페럴 벤더가 제공)
-코드 전체 이해
-디버깅 피쳐 면밀히 점검

---
브링업을 잘하려면

디버깅 능력
-trace32
-uart콘솔
-주요 디버깅 피쳐 사용

핵심 역량
-리눅스 커널
-Arm아키텍쳐
-SoC아키텍쳐 -> 부팅과정이 다르기 땜시 알아야함
-디바이스 데이터 시트 리뷰

커뮤니케이션
-이슈를 있는 그대로 공유
-도움 요청


---
시스템 안정화: 버그수정

브링업과 기능구현 끝나면 프로젝트도 끝?
-다양한 스트레스 테스트 진행
-이슈 등장하면 시스템 솦트웨어 개발자에게 할당

버그 종류
-크래시, 리셋
-성능 이슈 : 시스템 느려짐, 화면 깨짐
-기능 동작 : 스펙에 맞게 동작 못함

아래의 조건에서 버그의 난이도 높음
-새로운 칩셋
-새로운 플렛폼
-새로운 배포판
-최신 소프트웨어 구조

아래의 조건에서 버그의 난이도 낮음
-이미 검증된 혹은 사용된 칩셋
-검증된 혹은 사용된 플랫폼


---
문재 해결 단계

이슈 재현
-문제 증상 직접 확인
-로그나 메모리 덤프 추출
-QA팀에서 인증받은 로그나 덤프 활용

디버깅으로 원인 분석
-로그나 덤프분석
-문제의 원인 정확히 파악
-디버깅 능력

패치 생성 및 담당자 이관
-버그를 수정하기 위한 패치 생성
-자신의 이슈 아니면 담당자 이관
-하드웨어 문제일 경우 하드웨어 개발자한테 이슈 설명

테스트 진행해 패치 유효한지 검증
-재현 경로로 테스트 진행
-테스트 통해서 패치 유효한지?
-size effect유의

'Linux' 카테고리의 다른 글

Rootfs와 Kernel 빌드 (feat Makefile)  (0) 2025.07.21
Linux개발 환경  (4) 2025.07.17
Arm 어셈블리 명령어 간단 소개  (0) 2023.08.10
Arm프로세서와 Arm아키텍쳐  (0) 2023.08.09
시스템 소프트웨어 분야 동향 정리  (0) 2023.08.09
'Linux' 카테고리의 다른 글
  • Linux개발 환경
  • Arm 어셈블리 명령어 간단 소개
  • Arm프로세서와 Arm아키텍쳐
  • 시스템 소프트웨어 분야 동향 정리
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    yolo
    버퍼
    시스템콜
    commit
    arm
    Qualcomm
    커널 기여
    이진 트리
    파이썬
    Git
    소수
    c언어
    INIT
    순환
    동적메모리
    피보나치
    토발즈
    커널
    rubikpi3
    C++
    리눅스
    스택
    Branch
    앤드류모튼
    포인터
    파일 입출력
    드라이버 분석
    rubik pi
    자료구조
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jminu
프로젝트 단계 별 시스템 소프트웨어 개발 과정 정리
상단으로

티스토리툴바