맛만 볼게요
[TMS320C6748_LCDK] starterware 앱, nand flash에 플래싱 후 부팅 본문
** 설치 필요 **
> 필요한 에뮬레이터(디버거) 드라이버 ( 이 글에서는 blackhawk xds560 v2 system trace 사용 )
> Code Composer Studio ( CCS )
> BIOS_C6SDK
(starter ware, flash and boot utils가 필요한데, c6sdk 패키지에 전부 들어있음.)
> 시리얼 터미널 ( ex. tera term : Tera Term - 다운로드 (softonic.kr))
> 헥사 뷰어 ( ex. hxd : Downloads | mh-nexus)
** 필요한 프로그램 설치 방법은 아래 글에 있음.
[TMS320C6748_LCDK] bios-c6sdk DEMO 실행 (tistory.com)
[TMS320C6748_LCDK] bios-c6sdk DEMO 실행
** 설치 필요 ** > 필요한 에뮬레이터(디버거) 드라이버 ( 이 글에서는 blackhawk xds560 v2 system trace 사용 ) > Code Composer Studio ( CCS ) > BIOS_C6SDK - blackhawk xds560 v2 system trace driver는 CCS에서 같이 설치 가능. -
sms-0.tistory.com
- 부트로더 및 앱 실행을 위한 준비
bare metal 상태에서 앱을 실행하기 위해 bootloader가 필요,
실행할 앱은 nand,
부트로더 및 앱 빌드를 위해 drivers, platform, systemconfig, utils 필요
각 프로젝트마다 white space가 있다든지, include path를 찾을 수 없다든지 하는 warning이 한 두 개씩 뜰 수 있음.
warning이 보이는 꼴이 불편하다면 처리가 간단하므로, 처리하고 지나가면 됨.
- 부트로더 및 앱 실행 확인
앱 실행은 [TMS320C6748_LCDK] bios-c6sdk DEMO 실행 (tistory.com)
위 글에서와 마찬가지로 target configuration launch로 진행.
launch configuration -> gel file 추가 -> target connect -> cpu reset -> load program 진행.
- 부트로더 및 앱 플래싱
원하는 보드에서의 동작은
-> bare metal 상태의 보드가 preloader 실행
->-> preloader가 nand flash의 bootloader를 실행
->->-> bootloader가 nand flash의 앱을 실행
따라서 nand flash에 bootloader와 실행할 앱을 플래싱해야 함.
* 플래싱을 위해 필요한 툴
> ais_gen ( 부트로더 변환에 필요, starter ware 패키지에 포함 ),
> out2rprc ( 앱 변환에 필요, starter ware 패키지에 포함 )
* 플래싱을 위해 필요한 프로젝트
> NANDWriter ( flash and boot utils 패키지에 포함 )
* starter ware, flash and boot utils 모두 c6sdk 패키지에 포함
프로젝트들의 기본 세팅값들과 위의 경고로 미루어 보아 7.2.1버전 컴파일러를 설치하는 게 좋을 듯 함.
컴퓨터 재부팅까지 하라고 함...
이제 부트로더와 실행할 앱을 플래싱하기 위한 비트파일로 변환해야 함.
부트로더는 { c6sdk 설치 경로 }\pdk ...\... StarterWare ...\tools 경로의 ais_gen을 이용해 변환시키고,
앱은 { c6sdk 설치 경로 }\pdk ...\... StarterWare ...\tools 경로의 out2rprc를 이용해 변환시킨 후,
앱에는 헥사뷰어를 이용해 헤더를 붙여야 함.
부트로더가 앱을 실행하기 위해서 앱에는 아래와 같은 정보가 포함되어 있어야 함.
( example )
< page 0 >
magicNumber is : 55424cbb
entryPoint is : c1080000
numPage is : 00000013 = 헤더를 포함한 파일 크기 / 2048
block is : 00000002 = 앱이 저장될 시작 블록
page is : 00000001 = 앱 데이터가 저장된 시작 페이지 ( 0 페이지는 지금 삽입할 헤더가 있을 페이지 이므로 제외 )
ldAddress is : c1080000
< page 1 >
magicNumber is : 43525052
version is : 00000001
text_len is : 00000004
bin파일을 열어보면, 순서는 조금 다르게 되어있지만
어쨌든 파일 첫 부분이 43525052 00000001 00000004인 것을 알 수 있음.
따라서 위 예시와 같은 정보가 들어있는 2KByte ( = 1 page) 크기의 헤더를 삽입해야 하는데 헤더 구조는 아래와 같음.
BB 4C 42 55 00 00 08 C1 13 00 00 00 02 00 00 00 01 00 00 00 00 00 08 C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
앱 파일의 헤더를 설정하기 위해,
먼저 부트로더의 코드를 보면 블럭 6의 앱을 로드하도록 되어있는 것을 알 수 있음.
따라서 편의상 부트로더는 블럭 1, 앱은 블럭 6에 플래싱 할 것임.
앱을 블럭 6에 플래싱하기 위해서는,
실행할 앱에 삽입했던 헤더의 블럭 넘버(임의 선택)와 페이지 개수(파일 크기에 비례)를 고쳐야 함.
그리고 NANDWriter 사용을 위해서는 코드를 약간 수정해야 함.
'임베디드 > L13x_C674x' 카테고리의 다른 글
[TMS320C6748_LCDK] flashing tool 사용법? (0) | 2023.03.29 |
---|---|
[TMS320C6748_LCDK] 중첩 인터럽트 (0) | 2023.03.03 |
[TMS320C6748_LCDK] bios-c6sdk DEMO 실행 (0) | 2022.12.16 |
[L138/C6748] 리눅스 부팅 시도 (0) | 2022.11.29 |
[L138/C6748] Face Detect Demo 시도 (1) | 2022.11.25 |