펌웨어 설계 문서 분석
펌웨어 구현 개발 도구
- 소스 코드 및 컴파일을 호스트 PC에서 작성 하여 임베디드 보드에 다운로드 후 실행
- 호스트 시스템 : 프로그램 개발 PC환경
- 타겟 시스템 : 프로그램이 실행되는 임베디드 시스템
-> 호스트 시스템과 타겟 시스템 사이 통신, 디버그 정보를 얻기위해 추가적인 개발환경 필요 : 에디터, 컴파일러, 디버거, 링커 등
호스트와 타겟 시스템의 운영체제 제한
- 호스트 시스템 운영체제는 대중적인 OS 지원
- 타겟 시스템 : 펌웨어 상태서 하드웨어 스펙에 의존.
운영체제 외 개발에 필요한 도구
- 컴파일 : 소스프로그램을 실행 파일로 변환하는 과정
컴파일 과정
1. 전처리 : 소스코드 전처리
2. 컴파일러 : 전처리 코드를 어셈블리 코드로 변환
3. 어셈블러 : 어셈블리 코드를 재배치 가능한 기계어 코드로 변환
4. 링커 : 외부 라이브러리와 기계어 코드를 합쳐 실행가능 기계어 코드 작성
5. 로더 : 메모리에 올려 실행
6. 메모리
- 툴체인 : 소스 파일을 실행파일로 만드는데 사용되는 도구들이 연결된것
-> 타겟에 따라 다른 툴체인 설치
GNU
- gcc, binutill, gnu c library 등이 있으며 버전 의존성 존재
라즈베리파이 툴체인 설치 방법
- git에서 다운
하드웨어 데이터 시트 분석
펌웨어 구현시 데이터 시트
- 펌웨어는 하드웨어에 의존하는 프로그램
- 마이크로 프로세서 제조사나 평가 보드 제조사의 데이터 시트 기반으로 프로그램 작성
라즈베리파이3 예시
- bcm2837(arm cortex-a53 프로세서)의 gpio
bcm2837arm 주변장치에 대한 데이터 시트 분석
- 회로도, 하드웨어 구성, 가이드 등 모든 내용 포함
arm 물리적 주소
- 물리적 주소 범위 : 0x3F00 0000 ~ 0x3FFFF FFFF
- 주변장치 버스 어드레스 범위 : 0x7E00 0000 ~
GPIO 레지스터 뷰
- 주변장치 베이스 가상 주소 0x7E00 0000
- GPIO 시작 가상 주소 0x7E20 0000
- GPIO Base offset 0x20 0000(0x7E20 0000 - 0x7E00 0000)
- GPIO 시작 실제 물리 주소 : 0x3F20 0000(0x3F00 0000 + offset)
개발환경 구축 실습
1. 부트로드 소스 컴파일을 위해 크로스컴파일러 설치
2. 부트로더에 새로운 명령어 추가
크로스 컴파일러
- 컴파일러가 실행되는 플랫폼이 아닌 다른 플랫폼에서 실행가능한 코드를 크로스 컴파일해주는 컴파일러
- 노트북 <- 크로스 컴파일 -> 라즈베리파이
- 라즈베리파이에서 실행가능하도록 크로스 컴파일
* 크로스 컴파일러 : aarch64-linux-gnu 사용
1. 크로스 컴파일러 설치
2. 유부트 소스에서 라즈베리파이3 부트로더 이미지 생성
- 크로스컴파일러를 지정하는 환경변수 설정
필수 라이브러리 설치
- bison, flex
파이 보드에 맞게 설정 하기
-config 디렉토리 : rpi_3_defconfig폴더에서 지정
- make rpi_3_defconfig
부트로더 컴파일
-make
부트로더 확인
- ls로 컴파일 결과 확인 uboot.bin
3. 라즈비안 이미지 파일 받고 부트로더 이식하기
- win32diskimager
라즈비안 이미지 파일 분석
- 커널 이미지 : 부트로더는 커멀 이미지 숫자가 더큰걸 불러옴. kernel7.img
부트로더 넣기
- uboot.bin -> kernel8.img 로 이름 변경 후
부트로더 진입
- 부팅 시. 3초 이내 키보드 입력시 uboot 명령어 모드로 진입
- ? 로 명령어 확인
GPIO 명령어로 LED 제어
- 내장 LED는 GPIO29번과 연결
- help gpio로 확인
'컴퓨터과학 > 임베디드' 카테고리의 다른 글
임베디드 SW 엔지니어링 - 7 운영체제 커널 분석 (0) | 2020.05.27 |
---|---|
임베디드 SW 엔지니어링 - 6 펌웨어 구현 (1) | 2020.05.27 |
임베디드 SW 엔지니어링 - 4 펌웨어 설계 (0) | 2020.05.25 |
임베디드 SW 엔지니어링 - 3 펌웨어 분석 (0) | 2020.05.25 |
임베디드 SW 엔지니어링 - 2 하드웨어 분석 (0) | 2020.05.24 |