본문 바로가기

programmer/Embedded

(9)
Linker Section에 따른 메모리 매핑 공간 3 Map파일을 보다보면 알수 없는 기호들이 있다. lnear, abs18, csa등 알아야하나 싶은 명칭들이 많고 이를 왜 구분하고 사용하는지 모르고 쓰는경우들이 많다. 이번에는 이런 섹션에 따라 매핑되는 공간에 대해 알아보자. 먼저 주소 공간 종류에는 하기와 같은 구분이 있다. - linear: 4GB의 모든 주소 공간의 지정 - abs18: 각 세그먼트의 처음 16KB(0xX000_000 ~ 0xX000_3FFF)의 주소공간 - abs24: 각 세그먼트의 처음 16KB(0xX000_000 ~ 0xX01F_FFFF)의 주소공간 -csa: Context Save Area로 context가 저장되는 공간. 모든 것을 다 안다는것은 좋지만 고닲은 일이다. 이 중에서 딱 linear, abs18 만 보도록하자...
메모리 Section별 수행시간 차이 분석 2 Infineon Tricore 27x Block Diagram을 확인해 보면 각각의 메모리가 CPU와 어떤식으로 연결되어 사용되는지 확인 가능하다. 각각의 CPU 와 메모리 종류별 수행시간 차이를 분석해 보자. 한가지 방법으로 T32의 RunTime 기능을 사용해 수행 시간을 비교할 수 있다.(여러 방법이 있다.) 가지고있는 제어기 TC297Tx는 코어가 3개 이므로 Core0에서만 작동하도록 셋팅 하였다. 데이터 섹션 한정자 종류 하기 이미지와 같이 자료형(int)와 변수명 사이에 한정자를 입력해 사용할 수 있다. 여기서 __at(0x90000000) tc0_far_var0는 'Segment 9'에 포함되는 주소이므로 LMURAM에 선언되도록 설정 한 것이다. 하기 테이블을 참조하자. 수행 소스코드는 ..
Tasking사용 Infineon linker script 분석 1 제어기 개발을 진행하다 보면 메모리 사용 방법에 대한 고민을 하기 시작해야하는 시점이 온다. 자신이 개발한 소스코드가 하드웨어 메모리 기반으로 최적화 된 성능을 발현 시키고 싶다면. Linker Script를 사용한 메모리 Positioning을 시도해 보는것이 좋다.(feat. 교통정리) 예를 들어 멀티코어 환경(코어가 2개 이상인 경우)에서 코어에 바로 붙어있는 메모리(near)를 사용하고 모든 코어에서 사용되는 메모리는 LMU를 사용하면 메모리 접근을 최소화 할 수 있다. 각 메모리 위치별 수행시간 차이를 분석한 정보는 하기 링크에서 확인해 보자. https://suho413.tistory.com/entry/%EB%A9%94%EB%AA%A8%EB%A6%AC-Section%EB%B3%84-%EC%88..
Ubuntu 16.4 LTS 에서 Ubuntu 18.4 LTS 변경시 유의 기존 YOCTO 프로젝트를 Ubuntu 16.4 LTS에서 개발하다가 AP 사용을 위해 Ubuntu 18.4 LTS를 사용해야 할 때 기존 방법으로 18.4 LTS에 YOCTO 프로젝트를 빌드하면 아래와 같은 에러가 발생한다. Log.do_install 파일 내 Traceback (most recent call last): File "../../../bind-9.10.6/bin/python/setup.py", line 17, in from distutils.core import setup ModuleNotFoundError: No module named 'distutils.core' Makefile:465: recipe for target 'install' failed make[2]: *** [insta..
TC297TA Triboard 를 사용해 LED를 점등해 보자 들어가기 전에 새로운 프로그램 언어를 배울 때 우리는 보통 Hello world를 출력하곤 한다. 임베디드를 하는 사람은 LED로 Hello world를 출력해보자. Target: TC297 Triboard Step: BC 참조 PDF TriBoardManual-TC2X7-V13.pdf 하기 순서대로 설명을 진행하도록 한다. 1.Target spec 확인하는 방법 2.Port pin 설정 확인하는 방법 3.특정 Port 사용 주소 알아보는 방법 4.Trace32 로 LED 상태 변경하는 방법 5.소스 코드에서 LED 상태 변경하는 방법 1.Target spec 확인하는 방법 먼저 눈으로 LED를 확인해 보자 하기 이미지의 노랑으로 표시한 부분이 LED 포트와 핀 정보이다. 대게 P33.6 이라는 뜻은 3..
Target 의 elf 위치 설정(Hightech IDE) 생성할 바이너리를 제어기의 ROM 에 저장하고 싶을 때. 간단하게 설정 가능하다. 먼저 프로젝트를 선택하고 마우스 우 클릭-> Properties 클릭 C/C++Build 에서 Manage Configurations...를 클릭한다. *콤보박스에서 선택하고 Apply를 해도 적용되지 않는다. 필자는 ROM 에다 저장하고 싶다. 원하는 Build 환경을 선택하고 Set Active 버튼을 클릭한다. 선택하고 나면 프로젝트 명 맨 뒤에 IROM으로 변경된 것을 확인가능 *만약 수정되어 보이지 않는다면 Close Project 후 Open Project를 수행해 보라 빌드를 진행하면 ~IROM 폴더에 elf가 생성된 것을 확인 가능하다. 툴바 버튼에서 하기 버튼을 클릭하면 선택 가능하다…(나중에 알았다)
Hightec 예제 프로젝트 생성 및 빌드 HighTec Tool에서는 간단한 MCAL이 포함된 기본 예제를 제공한다. 내가 사용하는 제어기는 TC397X ADAS 제어기이다. HighTec의 Project Explorer에서 빈곳에 마우스 우클릭 -> New-> Example클릭 Next 클릭 Time Demo 를 선택할 것이다. 필자는 이미 선택되어 있어 생성되지 않는다. 보면 Application Kit TC397 A-Step (ADAS) 비슷한 놈이 하나 더 있지만 MCAL 핀(LED)을 확인해보니 내 보드는 B Type이였다. 사실 Infineon 제어기 살 때 박스에 Step이 써 있지만 Step: BA라고 써있어서 혼동 스러웠다. 인피니언에 문의해 본결과 MCU 박스에 쓰여 있는 Step 정보는 해당 MCU 가 배포되는 시점의 하드웨..
How to install Hightech UDE Plugin UDE 설치가 되어있지 않을 때.. 사실 UDE는 Full설치를 하면 PC에는 설치되어 있는 상태이다. 하지만 Eclipse에 Plugin 되어있지 않은 상태로 직접 설치를 진행하여야 한다. 저 파란 부분이 초기에는 없다...후….저것을 못 찾아서 꾀나 고생했다. https://www.pls-mc.com/ude-faqs/faqs-a-842.html Hightec QnA에 잘 설명되어 있다. Help->install New Software.. 클릭 Add… 클릭 Archive…. 클릭 C:\Program Files (x86)\pls\UDE Starterkit 5.0\UDEEclipse4Integration.zip 을 선택한다. Name은 알아 볼 수 있는 명칭으로 명명하고 OK 이후는 쭉쭉 설치하고 선택할..
Union 사용 이유 기본 설명 Union 은 한국말로 공용체라고 한다. 뭔가를 공용으로 사용하는 놈이라고 생각되는데 왜 Union을 사용해야 하고 어디에 쓰이는지 예시를 통해 설명하도록 하겠다. 설명은 하기 목차대로 진행한다. 1. 왜 필요한가. 2. 프로그래밍 예시 1. 왜 필요한가. TV 셋탑 박스를 개발해야 하는 2명의 개발자가 있다. A라는 개발자는 프로그램을 64G 이하로 개발하였고 B라는 개발자는 프로그램을 100G 이상으로 개발하였다. 1000대 이상의 셋탑 박스를 생산해야 하는 회사의 입장에서는 생산단가 절약으로 인한 매출과 경쟁력을 갖추기 위해 A 개발자를 선택 할 것이다. (아는게 돈이고 경쟁력이다.) 하기의 이미지는 메모리 가격을 확인하기 위해 Mouser에서 검색해본 결과이다. 메모리 크기에 따라 단가..

반응형