Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

맛만 볼게요

[TMS320C6748_LCDK] starterware 앱, nand flash에 플래싱 후 부팅 본문

임베디드/L13x_C674x

[TMS320C6748_LCDK] starterware 앱, nand flash에 플래싱 후 부팅

여기우리집 2022. 12. 16. 11:43

** 설치 필요 **

    > 필요한 에뮬레이터(디버거) 드라이버 ( 이 글에서는 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

 

 

 

 

 

 

 

- 부트로더 및 앱 실행을 위한 준비

project explorer 우클릭 -> import -> ccs projects

 

{ c6sdk 설치 경로 }\pdk ...\... StartWare ...\build\c674x\cgt_ccs 폴더 선택

 

bootloader_lcdk, drivers, nand_lcdk, platform_lcdk, systemconfig, utils 체크 후 finish

 

bare metal 상태에서 앱을 실행하기 위해 bootloader가 필요,

실행할 앱은 nand,

부트로더 및 앱 빌드를 위해 drivers, platform, systemconfig, utils 필요

 

모든 프로젝트의 properties 수정

 

맞는 보드로 설정하고, cmd 파일은 프로젝트에 존재하는 파일명으로 수정

 

warning이 뜨고 project.log 파일이 열리는데, 신경 안 써도 되는 듯 함.

 

모든 프로젝트 properties 수정

 

drivers, platform, system_config, utils 먼저 빌드 후, bootloader, nand 빌드

 

각 프로젝트마다 white space가 있다든지, include path를 찾을 수 없다든지 하는 warning이 한 두 개씩 뜰 수 있음.

warning이 보이는 꼴이 불편하다면 처리가 간단하므로, 처리하고 지나가면 됨.

 

warning 부분 수정 후.

 

 

 

 

 

 

 

- 부트로더 및 앱 실행 확인

앱 실행은 [TMS320C6748_LCDK] bios-c6sdk DEMO 실행 (tistory.com)

위 글에서와 마찬가지로 target configuration launch로 진행.

 

launch configuration -> gel file 추가 -> target connect -> cpu reset -> load program 진행.

 

직접 빌드한 출력파일이므로 browse project로 편하게 찾을 수 있음.

 

 

resume로 실행하면, 터미널 출력을 통해 잘 실행되는 것을 볼 수 있음.

 

같은 방법을 통해 nand 앱도 잘 실행되는 것을 볼 수 있음.

 

 

 

 

 

 

 

- 부트로더 및 앱 플래싱

원하는 보드에서의 동작은

-> 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 패키지에 포함

 

file -> import

 

code composer studio -> legacy ccsv3.3 projects 선택 후, next

 

browse

 

{ c6sdk 설치 경로 }\c6sdk ...\tools\... FlashAndBootUtils ...\OMAP-L138\CCS\NANDWriter\NANDWriter_DSP.pjt 열기 후, finish

 

경고가 뜨는데, 일단 ok

 

properties에서 보드 종류를 맞게 바꾸면, COFF ABI를 쓰기 위해서는 컴파일러 버전을 낮추라고 함.

 

프로젝트들의 기본 세팅값들과 위의 경고로 미루어 보아 7.2.1버전 컴파일러를 설치하는 게 좋을 듯 함.

 

help -> install code generation compiler tools

 

 

7.2.12 버전 체크 후 설치

 

restart now

 

컴퓨터 재부팅까지 하라고 함...

 

재부팅 후 잘 설치가 되어있는 것을 확인

 

NANDWriter properties 수정

 

해당 product가 존재하지 않기 때문에 빌드가 안 되므로, xdais remove 후 apply 및 프로젝트 빌드

 

몇 가지 warning이 있지만, 귀찮으니까 무시

 

계속 해오던 방법으로 실행해 보면 잘 실행되는 것을 알 수 있음.

 

이제 부트로더와 실행할 앱을 플래싱하기 위한 비트파일로 변환해야 함.

부트로더는 { c6sdk 설치 경로 }\pdk ...\... StarterWare ...\tools 경로의 ais_gen을 이용해 변환시키고,

앱은 { c6sdk 설치 경로 }\pdk ...\... StarterWare ...\tools 경로의 out2rprc를 이용해 변환시킨 후,

앱에는 헥사뷰어를 이용해 헤더를 붙여야 함.

 

dsp file은 부트로더 빌드파일(.out), ais file은 출력될 .bin 파일

 

data width는 16비트, 그리고 Generate AIS

 

얘는 커맨드로 실행해야 하는데, cmd에서 경로 이동하기 귀찮으니까 powershell 이용

 

.\out2rprc.exe { 빌드파일(.out) 경로 } { 출력파일(.bin) 경로 }

 

변환 후 헥사뷰어로 열어서 헤더를 삽입해야 함.

 

부트로더가 앱을 실행하기 위해서 앱에는 아래와 같은 정보가 포함되어 있어야 함.

 

( 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

 

헤더를 삽입한 앱.bin 파일

 

앱 파일의 헤더를 설정하기 위해,

먼저 부트로더의 코드를 보면 블럭 6의 앱을 로드하도록 되어있는 것을 알 수 있음.

 

따라서 편의상 부트로더는 블럭 1, 앱은 블럭 6에 플래싱 할 것임.

 

앱을 블럭 6에 플래싱하기 위해서는,

실행할 앱에 삽입했던 헤더의 블럭 넘버(임의 선택)와 페이지 개수(파일 크기에 비례)를 고쳐야 함.

블럭 넘버는 6으로 설정할 것이고,

 

페이지 개수 = 39596 / 2048 = 19 = 0x13

 

그리고 NANDWriter 사용을 위해서는 코드를 약간 수정해야 함.

nandwidth 수정

 

부트로더를 블럭 1에 플래싱하기 위한 블록 넘버 수정

 

nand 초기화 및 부트로더 플래싱 완료

 

부트로더가 잘 실행되는 것을 볼 수 있음

 

앱을 블럭 6에 플래싱하기 위한 블록 넘버 수정

 

nand 유지 및 앱 플래싱 완료

 

부트로더 실행 후 앱까지 잘 실행되는 것을 볼 수 있음

 

 

 

Comments