Arty Z7 Out of Box Demo 예제를 다운로드 받아 Web 설명대로 board에 심었을 때 정상 동작을 확인.

아래 링크에서 다운로드 가능함.

개발 환경은 Windows 10 pro, Vitis 2021.2 사용

Digilent 예제는 최신 버전인 Arty Z7-20 Out-of-Box Demo Xilinx Tools 2020.1 pre-release code를 사용함.

 

Arty Z7 - Digilent Reference

 

Arty Z7 - Digilent Reference

 

digilent.com

 

Vitis에서 [import sources]를 통해 예제 source code를 전부 추가하고 [Build project]를 실행했을 때 2개의 error가 발생함.

1. AudioPWM - audiopwm.c [line 97] sin 함수 호출

  line 58에서 math.h를 포함 시키고 있으나, sin 함수가 선언되지 않았다며 compile error 발생

  해결방법

    Project explorer에서 Application 속성으로 들어가 [C/C++ Build] - [Setting] - [ARM v7 gcc linkers] - [Libraries] 선택 후 [Enter Value]에서 'm' 입력하고 저장하면 error 없어짐.

2. AudioPWM - audiopwm.h [line 114] Audio_BitField의 다중 선언

  아직 해결 방법을 찾지 못함. Workspace 단위내에서 Audio_BitField 변수는 audiopwm.h에 union으로 1곳만 선언됨.

  다만 Search 결과를 보면 audiopwm.h에서 line 114를 2번 찾은 것으로 인식하고 있음.

참조 링크 (내용 분석 중)

  ▷ GCC version 문제라는 이야기 인 듯 하며, compile flag 추가로 해결할 수 있다는 이야기인데...

       추가할 위치를 찾지 못하고 있음.

Multiple definition of ... first defined here (xilinx.com)

 

Multiple definition of ... first defined here

 

support.xilinx.com

Porting to GCC 10 - GNU Project

 

Porting to GCC 10 - GNU Project

The GCC 10 release series differs from previous GCC releases in a number of ways. Some of these are a result of bug fixing, and some old behaviors have been intentionally changed to support new standards, or relaxed in standards-conforming ways to facilita

gcc.gnu.org

 

'전자 관련 이야기 > Embedded' 카테고리의 다른 글

Digilent Arty Z7 - PetaLinux #2  (0) 2023.10.03
Digilent Arty Z7 - PetaLinux #1  (0) 2023.09.17

VirtualBox - Ubuntu에서 Windows와 공유 폴더 설정

윈도우에서 우분투와 공유할 폴더를 생성

 

VirtualBox 메뉴 [장치]-[공유 폴더]-[공유 폴더 설정...] 항목 선택

 

오른쪽 공유 폴더 추가 버튼 클릭

 

폴더 경로 항목에서 기타를 누르고 윈도우에서 생성한 폴더 지정

 

공유 폴더 지정 후 [자동 마운트]와 [항상 사용하기] 두 항목을 선택

 

기본 설정이 끝나고 우분투 터미널 창 실행

/media directory 내부를 확인하면 공유 폴더로 sf_VM_Share가 생성되어 있는것을 확인 할 수 있음.

공유 폴더는 윈도우에서 지정한 이름 앞에 sf_가 항상 붙는 것 같고 공백문자는 _로 대체됨.

groups 명령으로 확인해보면 vboxsf group에 대한 권한 문제로 sf_VM_Share directory 접근 금지 상태임.

/media 하위에 sf_VM_Share directory 확인됨

sudo adduser [userid] vboxsf 명령 또는

sudo usermod -G vboxsf -a [userid] 명령으로

현재 사용 중인 user id에 vboxsf 그룹을 추가함

User ID에 vboxsf 그룹 추가

그룹 추가 명령을 실행하고 바로 groups를 실행하면 변경 사항이 없음.

우분투 재부팅 후 groups 명령을 실행하면 User ID에 vboxsf 그룹이 추가된 것을 확인할 수 있음.

우분투 재부팅 후 그룹 추가 확인됨

 

이후 sf_VM_Share directory에 접근 가능해지고, 윈도우와 공유 가능.

Terminal 환경에서 공유 폴더 확인
GUI 환경에서 공유 폴더 확인

STM32 개발하면서 IAR workbench for ARM compiler를 사용하면서 code size가 커지다 보면

Output image의 address 값이 깨지는 경우가 생긴다.

 

예를 들자면!

STM32의 Bootloader 영역으로 0x08000000~ 0x08004000 번지를 설정하고

Application 영역으로 0x08005000 ~ 0x0800FFFF까지 설정하였다고 가정하여 보자.

 

Bootloader를 compile하여 download하고 다음으로 Application image 역시 compile하여

download를 해보게 된다.

이 때 stm32xxxxxx.h file 내에 define된 FLASH_BASE 값을 application start address로 설정해 주고

IAR도 option - Linker에서 application의 start address를 설정하여 compile 진행하면 된다.

Header File에서 Application image start address 지정
IAR Compiler Option 설정
사용하는 MCU가 맞는지 확인
Linker Option에서 Start address 설정하기
Vector Table TAB에서 .intvec start를 header와 동일값으로 설정

여기까지 진행하고 Application을 compile하고 다운로드 하면 처음에는 별 문제가 없을 수 있다.

그러나 Application image가 커질수록 문제가 생기는 경우가 있는데 compile 완료된 hex file을 편집기로 열어보면

아래와 같이 5000번지 부터 시작해야하는 image 주소가 0000부터 시작하는 경우가 생긴다.

정상 compile된 image
Compile 오류가 발생한 image

 

이는 Linker Option에서 Memory Regions 설정에 따른 오류로 보인다.

Memory Regions라서 Flash 전체 주소로 생각하고 Start값은 0x08000000, End값은 0x0800FFFF로 기본값을 사용했는데,

IAR의 의도는 전체 Flash 주소값이 아닌 현재 compile할 image가 사용하게될 주소 범위를 요구하는 듯 하다.

 

아래와 같이 Start를 0x08005000으로, End는 0x0800FFFF로 설정 후 다시 compile해보면 출력물인 hex file의 start 주소가 정상적으로 5000번지부터 시작되는것을 확인할 수 있다.

 

 

 

+ Recent posts