레이블이 IDE-uVision인 게시물을 표시합니다. 모든 게시물 표시
레이블이 IDE-uVision인 게시물을 표시합니다. 모든 게시물 표시

5/23/2019

Keil 의 uVision 개발방법 (2)

1. Keil uVision 개발방법

이제 Keil의 uVision을 이용하여 직접개발을 한다면, 개발방법은 내생각하기에는 두 가지로 진행을 하면될 것 같다.
  1. Keil에서 제공해주는 MDK Package 기반으로 구성개발 (MDK 라이센스필요) 
  2. ST에서 제공해주는 무료 uVision Example Source 기반으로 개발  

1.1 ST Example 기반으로 개발방법 

우선 본인이 사용하는 EVM or ST의 정확한 Chip 정보를 안후, 관련된 검색을 하여 ST Site를 들어가보자.

  https://www.st.com/en/evaluation-tools/stm3210c-eval.html#tools-software

ST사에서 제공해주는 Example Source를 쉽게 구할수 있으며, 다양한 IDE를 지원을 하고 있다.
다만, MDK와 다르게,  CMSIS 기반으로 구성하고,
나머지는 Open Source or 직접 Example을 제공을 해주고 있다.

아래와 같이 모두 소스가 들어있어 분석하기에는 이것이 더 편하며, 실제로 바로 동작하고, 이를 확인가능하므로 편하다.



2. Keil의 uVison의 설정기능 




  • Options for Target "Project"-> Target
Complier의 기본 Link Command 설정이며, Compiler 관련 설정이다.
이 부분 빌드가 진행 후 *.sct 파일을 보면 동일하게 설정이 된다
- Linker 관련부분설정


파일위치는 아래의 Output 설정


생성된 *.map 파일 통해 관련 Symbol Table 정보를 알아두자.


  • Options for Target "Project"-> Output

  1. output folder 설정 (세부설정도 가능)
  2. Create hex (*.hex 지원, ST Link 사용시 필요 )
  3. debug information 기능 첨가 


  • Options for Target "Project"-> Listing

Assembler Listing 설정 및 위치
Linker의 MAP file 정보 수정

아래정보는 Assembler 관련정보이며 두개의 정보를 살펴보자.


Handler들은 WEAK로 설정하고, 함수를 미리선언하고 사용하고 싶다면 나중에 구현해서사용하는 이전의 Linux kernel 처럼 비슷한 것 같다


  • weak  (keil의 compiler 관련참조)

   http://www.keil.com/support/man/docs/armcc/armcc_chr1359124978893.htm


  • dcd (assembler )

  http://www.keil.com/support/man/docs/armasm/armasm_dom1361290005934.htm


상위 Example의 어셈블리어의 구성을 보면 대충 쉽게 이해 할 수 있다.

  • Options for Target "Project"-> User, C/C++ , Linker 


  • Compiler 옵션설정 가능 




Compiler 옵션설정 및 Assembler 옵션설정 으로 세부 설정을 원할 경우 자세히 보자.
별도로 외부에서 define을 정의하거나, 최적화 옵션을 변경을 원하거나, Header 파일관련부분은 이곳에서 봐야 할 것이다.



상위는 일반적인 Linker script / commanduVision에서는 scatter라고 한다. 
현재  *.sct 파일로 동작하며, 이와 관련된 부분은 Compiler Manual을 참조하자.


  • Options for Target "Project"-> Debug

우측에 ST-Link Debugger 이외에 다양한 JTAG Tool지원하기 때문에, 본인환경에 맞는 것을 설정하고, 관련부분을 설정하자.

TI의 CCS 처럼 JTAG 연결시 초기화 해주는 File도 설정가능한 것 같다.
예를들면, Board의 기본 BSP 설정인 Clock, DDR 설정 같은 것을 Board 연결시마다 해주는것이다.

상위우측설정->Setting 들어가면,


Debug->Target Com -> JTAG의 Clock 설정조절
Flash Download 설정 및 Trace 세부 설정 가능

상위 좌측 두 메뉴 Trace / Debug에서 사용하는 Clock이 높으면 Debug과 Flash도 편하다.

  • Options for Target "Project"-> Utilities

Flash를 위해서, 외부 설정 Tool도 가능한 것 같으며, 내부설정은 위와 거의 비슷할 것 같다.

2.1  Format 관련설명 

기본적으로 uVision은 *.axf 포맷을 만들어주고 이를 Loading 하는 방식으로 지원을 한다.
사용자의 설정에 따라 *.hex 설정지원을 해주고 있다.
*.axf 포맷 ELF Format 이며 관련된 Tool을 보면 다음과 같다.

Keil_V5->ARM->ARMCC->bin

Linux 처럼 hex/bin 을 만들기 위해서 objcopy로 해봤는데, 잘되지는 않아 상위 설정을 직접설정하는 것을 찾았다.

만약 Command로 진행하고자 한다면 아래참조 하지만 위에서 처럼 쉽게 설정으로 끝내자.

fromelf 사용방법 ( bin변경)
  http://www.keil.com/support/man/docs/armutil/default.htm


2.2 uVision의  Compiler 세부설정 및 이해   

uVision에서 본인이 원하는 것을 구현을 하고 싶으나, 맘대로 되지 않는 경우가 많을 것이다.
예를들면, 특정 Address에 내가 원하는 값을 매번 넣는다거나 , SRAM에  특정 함수(ISR) 를 넣어 실행하고 싶다면, Compiler옵션을 제대로 이해 해야한다.

기본적으로 GCC 옵션과 유사하기 때문에, 쉽게 이해하리라고 본다.
원래 Keil(카일) 컴파일러 회사인걸로 알고 있으며, 자세히 이용하고 싶다면, 아래와 같이 Compiler Manual을 보자


  • Compiler-specific Features (컴파일러 Manual)
GCC와 비슷하며, 아래와 같이 attribute 속성을 이용하여 Linker Script와 같이 조합하기를 원한다면, 아래의 Manual을 자세히 읽자

  http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0375g/chr1359124965789.html


  • Scatter File Syntax  (Linker Script)

  http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0377g/pge1362075650322.html
  http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0377g/pge1362075687539.html


  • Linker Optimization Features
  http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0377g/pge1362065925027.html


  • 본인이 원하는 데이타를 특정 Address에만 할당할 경우 (Example)
이외에도 특정세션을 만들고, Link Script/command에서 직접 할당하는 방식도 있을 것이며, 다양할 것으로 본다. 

unsigned char test1[4]   __attribute__((at(0x08010000))) = { 0,1,2,3};     //Flash 영역: 0x0801000 , IRAM 영역 0x20000000  
unsigned char test2[4]   __attribute__((at(0x08010004))) = { 0,1,2,3};
unsigned char test3[4]   __attribute__((at(0x08010008))) = { 0,1,2,3};

확인하고 싶다면, ST-Link Utility에서 Hex로 Upload 한 후 직접 해당 Address로 보고 확인해보고 수정하자.
세부옵션을 사용할 경우, *.map 파일에서 결과를 확인하자. 

나의 처음 기본생각은 GCC의 Linker Script 처럼 특정 Section을 만들고, Section에 변수를 할당할 생각이었으나, 상위와 같이 더 편한 옵션을 찾았다.

  • Linker Script / Command 와 조합 
  http://www.keil.com/support/man/docs/armlink/armlink_pge1362066000009.htm
  http://www.keil.com/support/man/docs/armlink/armlink_Chunk1880490665.htm

5/22/2019

Keil 의 uVision 개발방법 (1)

1. STM32 관련개발

이전에 STM32의  개발 위해서 사용했던 IDE 환경은 IAR or CoIDE를  이용을 했지만,  이번에는 Keil사의 uVision이라는 것을 이용하는 것이 처음이기에 이에 관련된 내용을 서술한다.
간단히 uVision 관련 IDE 사용법을 간단히 적어본다.

Keil사는 Compiler로 회사로 생각했지, IDE환경을 제공을 해주고, 관련 Compiler도 제공해주는지는 몰랐다.

1.1 Keil의 uVision 설치 및 MDK 라이센스 

기본설치는 MDK와 같이 설치가 되며, 이 부분은 라이센스가 필요한 부분이며, 설치시, 본인의 ST Micom에 관련된 부분
Package를 Download하여 설치하자.

ST-Link 관련설치
  https://ahyuo.blogspot.com/2019/05/st-link-usb-driver.html

기본설치방법
  http://www.emthink.com/keil-single-user-license

MDK (Microcontroller Development Kit )의 구성과 이해
  https://www2.keil.com/mdk5

uVision 설치 후 MDK 라이센스확인방법
Help-> about uVision  통해서 가능
  http://www.keil.com/support/man/docs/license/license_eval.htm

uVision의 MDK 라이센스별로 비교
  http://www2.keil.com/mdk5/selector

IDE-Tool uVision 과 ARM DS-5 비교
  http://www.emthink.com/keil-mdk-vs-ds-5

1.2 Keil의 uVision 기본사용법 

Keil의 uVision은 기본적으로 ULINK 기반으로 동작하지만, ST-Link도 지원을 하기때문에, 크게 걱정을 하지 않아도 된다.

기본사용법숙지
  http://www2.keil.com/mdk5/uvision/

2. Keil uVision 개발방법 

이제 Keil의 uVision을 이용하여 직접개발을 한다면, 개발방법은 내생각하기에는 두 가지로 진행을 하면될 것 같다.
  1. Keil에서 제공해주는 MDK Package 기반으로 구성개발 (MDK 라이센스필요) 
  2. ST에서 제공해주는 무료 uVision Example Source 기반으로 개발  

2.1  MDK Package 기반으로 개발 

Keil에서 제공해주는 MDK Package를  추가하는 방식으로 개발하는 방법으로,  쉬울수도 있으나, 라이센스를 요구하기 때문에, 이부분은 라이센스가 필요하다.
그러므로, 본인의 MDK 라이센스를 상위에서 비교해서 보자.

uVision의 중앙 아이콘을 보면 각각의 주요 메뉴가 있다


  1. Options for Target "Project" : Project의 세부설정 
  2. File Extensions, Books and Enviornment  : Project 의 구성을 쉽게 알수 있음 
  3. Manage Multi-Project Workspace
  4. Manage Run-Time Enviornment :  현재 구성된 MDK의 설정변경 및 추가 가능 
  5. Select Software Pack : MDK의 Package Version을 변경하여 설정가능 
  6. Pack Installer : MDK Package Download 및 Copy 


  • 기본개발 환경구성 
  1. Project->New uVision Project 
  2. Device 에서 본인의 모델 선택 
  3. Mange Run-Time Enviornment 에서 필요한 Package 선택 
  4. CMSIS 만선택하고 구성 

아래와 같이 기본환경이 구성된 상태에서 소스를 추가하면서 개발진행한다.
하지만, CMSIS이외에도 다른 것을 추가하여도 기본적으로 사용할 예제가 없기 때문에 개발에 난항을 겪을 수 있으므로 추천하지는 않는다.


  • MDK Examples 기반으로 개발  
  1. Pack Installer 선택
  2. 좌측의 Device/Board 확인 
  3. 우측의 필요한 Example 선택 후  Copy 후 Example Source Download 
  4. Download한 Example을 새로운 uVision 열어 구성을 확인 


Example Source로 uVision로 구성할 경우, 본인이 원하는 프로젝트의 유사할 것이지만, 주의할 것은 라이센스 문제 및 기타문제로 동작되지 않는 경우이다.

아래의 경우는 USB 부분이상 발생 (라이센스문제)


이 문제를 해결하기 위해서
  1. Manage Run-Time Environment 실행
  2. 문제가 발생한 USB 관련부분 확인 (라이센스문제파악)
  3. Variant 필드를 이용하여 라이센스 레벨조정/ Release /Debug 모드로 변경
  4. 문제가 되지 않는 조합으로 생성 후 OK로 저장 
  5. Project->Build Target 
  6. 에러가 없는지 확인하고, 최종적으로 *.axf 파일 생성확인 (ELF Format)



uVision에서 직접 ST-Link를 사용하면 문제가 발생하는데, 아래와 같이 설정을 변경 및 확인하자.

  1. Project창에서 우측마우스->Option for Target  (Alt+F7)





  • Options for Target "xxxxxxx"
  1. Debug 목록 선택 
  2. ULINK2 -> STLINK 변경 ( uVision은 기본이 ULINK사용)
  3. 설정 변경 후 Setting 실행



  • ST-Link의 상태확인 (Setting)
ST-Link로 변경을 했는데도, 아래와 같이 문제가 발생한다면, 이제 각 세부설정을 보자.
- 이 부분을 정확히 맞추려면, 가장 좋은 방법은 ST사에서 제공해주는 Example Source를 설정보면된다.
- 시간이 지나면 자동으로 해결이 되는 경우도 발생




  • STM의 Flash Writing 방법 
  1. Flash->Download  이용: Flash Erase/Write  
  2. Debug->Start/Stop  Debug Session 이용 :  Debug하기 용이하지만 사용중이라면 반드시 다시한번 이곳을 눌러 Stop를 해줘야 함. 
  3. ST-Link Utility를 이용하는 법 ( *.hex 변경) 


  • HID 동작확인 
HID Device가 Keil Software Keil USB HID Device로 잡히면 동작이 되는 것이지만, 이부분을 Key Pad로 연결하는
인터페이스는 별도로 만들어줘야 동작이 될 것이다.


$ lsusb 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 045: ID 0483:3748 STMicroelectronics ST-LINK/V2
Bus 001 Device 046: ID c251:2401 Keil Software, Inc. 
Bus 001 Device 004: ID 045e:00cb Microsoft Corp. Basic Optical Mouse v2.0
Bus 001 Device 003: ID 045e:07f8 Microsoft Corp. Wired Keyboard 600 (model 1576)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 


내가원하는 Example은 이상하게 조합을 맞춰도 Build가 진행되지 않아 관련부분을 포기했으며 USB관련부분은 상위와 같이 기본동작을 확인하였다.

5/21/2019

ST-Link 와 USB Driver 설치

1. ST-Link Driver & Utility 

STM32 Micom이 있다면, 우선 준비해야하는 것이 ST-Link일 것이고, 이와 관련된 Driver와 Utility  일 것이다.

ST-Link USB Driver
  https://www.st.com/en/development-tools/stsw-link009.html

ST-Link Utility
  https://www.st.com/en/development-tools/stsw-link004.html

  1. ST-Link 연결하고 이를 Window의 장치관리자에서 확인하자. 
  2. ST-Link가 있으며, 우선  Connect 를 이용하여 연결하여 동작확인
  3. ST-Link->Firmware Upgrade 진행 

주로사용하는 할 Format은 *.hex


상위와 같이 직접 STM32의 Flash Address에 접근하여 수정및 보기가 가능하다.



이외에도 External Loader 도 지원은 하는데, 사용을 해보지 않아 정확히 모르겠으나, Flash/EEPROM을 위해서 관련 Program을 쉽게 Write 할 목적으로 보인다.