'ARM'에 해당되는 글 4건

  1. 2010.05.17 IAR 에서 J-Link Debug (4)
  2. 2010.05.10 Keil uVision4 에서 J-Link Debug
  3. 2009.01.19 [ARM] 타이머 카운터 셋팅
  4. 2008.10.21 ARM 프로세서
Cortex-M3/STM32F1032010.05.17 11:47
내가가진 책이며, 인터넷에 돌아다니는 거의모든 STM32F 관련 자료들이 IAR이나 RIDE7로 설명된게 많다.
Keil은 자료가 많이 없어서 IAR로 다시 넘어가야 될거같아서 메뉴얼을 만든다.. T.T

위의 링크와 똑같이 프로젝트 생성하고, 디버깅 환경까지 만들어 보겠다.

1. 먼저 IAR을 실행한다.



2. File > New > Workspace



3. Project > Create New Project...  



4. ARM > OK 선택



5. 프로젝트 폴더와 프로젝트 이름을 적고 저장!



6. File > Save Workspace 



7. 워스크페이스 파일을 저장한다. '나중에 찾기 쉽게 5번의 프로젝트파일저장 경로와 같은곳에 저장'



8. 소스관리를 편하게 하기위해 그룹을 추가한다.



9. 그룹이름은 'src' (main.c 파일등이 들어갈 예정)



10. 추가된 그룹에 파일을 추가



11. src폴더의 main.c (미리 만들어놓고 추가하거나, 만들고 저장할때 추가하거나. 상관없음)













--------------------------------------------------------------------------------------------------------
컴파일에서부터 디버깅까지 옵션설정을 해줘야 한다.

1. project > Option



2. Device로 선택하여 사용하는 칩을 선택해준다



3. 출력파일을 Hex로 설정



4. 기본적으로 컴파일만 될수있게 작성한뒤 컴파일을 한다.
   에러가 없는것을 확인한다.



5. 다운로드에 대한 설정들이다. 
   Linker탭에서 icf파일을 추가 해줘야한다. IAR디렉토리에있는 icf파일을 사용해도 되지만 OAK보드에 맞는 icf파일을 사용한다 



6. Debugger탭에서 J-Link를 선택한다.
'J-Link'는 SEGGER사의 디버깅 장비이다. 
Supported CPUs: Any ARM7,9,11, Cortex-M0, M1, M3, M4, R4, Renesas RX 
ARM계열 CPU를 지원한다.



7. Debugger > Download탭에서 Flash Loader파일을 선택한다.



8. '\IAR Systems\Embedded Workbench 5.4\arm\config\flashloader\ST' 경로에 해당칩의 .board 파일이 있을것이다.


9. Project > Download and Debug


10. 디버깅은 잘 된다. 



11. F5 (GO) 를 누르면 실행도 잘된다.



12. Download를 눌르면.. 



13. 으잉. 느낌표가 뜬다.. 뭐라뭐라 번지가 잘못됐단다..



14 옵션에서 Debug>Download 탭에서 .board파일을 수정한다.




15. 아까 느낌표떳던 번지가 적혀있다. 
STM32F10xxE NOR.flash 라는데.. 
NOR플래쉬가 외부에 연결됐을때 적는건가..?? 
우선 저부분에서 뭔가가 잘못된거같으므로 Delete를 눌러 삭제 해준다.




16. 다시 다운로드를 눌르면..
'Core is locked-up' 코어가 잠겼다? (뭔소리야 -_-;) 



17. 코어.. 이리저리 해보다가 결국 찾아낸것이 Device를 선택하는것이 아니라, 코어를 선택하는것이었다.
(아직 왜이런지 모름.. -_-;) Cortex-M3 코어로 선택 해준다.



18. 다운로드 해본다.!! (자~알 된다 ㅎㅎ)


-------------------------------------------------------------------------------------------------
int main()
{
 (*(volatile unsigned int*)0x40021018= (*(volatile unsigned int*)0x40021018)| (1<<2);    
 (*(volatile unsigned int*)0x40010800= (*(volatile unsigned int*)0x40010800)& ~(0xffffU << 16);
 (*(volatile unsigned int*)0x40010800= (*(volatile unsigned int*)0x40010800)| (0x3030 << 16);

 return 0;
}

위 코드를 넣고 다운로드후 재부팅한 이미지이다.
정상동작 한다..



중간중간 에러나는 'failed to load flash loader' 이런것들을 검색하다가 중국싸이트도 가보고, 이상한싸이트도 가보고, 하다가 해결한것이다.
아직 icf파일이니, flash loader니 .. 뭐가뭐지 정확하게 잘 모르겠다. 그리고 저파일들을 수정하는 스킬또한 부족한 상태이다.. 


일단 다운로드는 해야하니..  차차 좋아 지겠지.. ㅎ 
이 장소를 Daum지도에서 확인해보세요.
경상남도 마산시 봉암동 | MTM
도움말 Daum 지도
Posted by 시긔양
Cortex-M3/STM32F1032010.05.10 15:24

Cortex-M3 프로젝트 생성 순서.. 
매번 정리해야지.. 하면서 정리 못했던걸 이번기회에 하고자 한다!!

Cortex-M3 개발환경은 IAR, Keil 등이 있지만 난 IAR보단 Keil이 쓰기편한관계로 Keil로 메뉴얼을 올린다.
추후 IAR도 리뷰할일이 생기면 올리도록 하겠다. ㅎ



1. uVision4 실행화면이다. 
    - Project -> New uVison Project...  :  새 프로젝트를 생성한다.


2. 프로젝트 파일의 이름과 저장될 경로를 지정한다.
   - "*.uvproj" : Keil의 프로젝트 실행파일
   - 추후 폴더가 많이 등장하게되는 관계로 아래와같은 경로에 생성한다. (사용자 마음 ㅎㅎ)
   - 최상위폴더    - FWLib
- include
- MyFunc
- proj                   : uVision관련 프로젝트 폴더
- SI project           : Source Insight 관련 프로젝트 폴더
- source          



3. 사용할 칩을 선택한다.
    - STMicroelectronics 사의 STM32F103VE 계열 MCU를 사용할 예정이므로 선택 


4. Startup Code를 추가하겠냐는 질문. 특별히 Startup Code가 준비되어있지 않다면 예를 선택.


5. Project -> Option for Target '*****' 설정내용
  - Include Paths :  ..\FWLib\library\inc;..\include;..\MyFunc;..\USBLib\library\inc;..\..\KEIL;..\




6. Project -> Option for Target -> Utilities -> Settings 설정






Posted by 시긔양
임베디드/ARM2009.01.19 09:28
void timer_handler(void)
{
volatile unsigned long dummy;
dummy = AT91C_BASE_TC0->TC_SR;  //인터럽트 클리어
if(echo_flag) //@ if Echo ON State -> Trigger Off
{
BASE_PIO_TRIGGER->PIO_CODR = ULTRA_TRIGGER; //@Trigger Off
cnt++;
}
}


static void configure_tc(void)
{
volatile unsigned long dummy;
// 타이머카운터 0(TC0) 클록 공급
AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_TC0);
// TC0의 클록공급을 금지 
AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS;  
// TC0의 인터럽트를 전부 금지 
AT91C_BASE_TC0->TC_IDR = 0xFFFFFFFF;  
// TC0의 상태 레지스터 Dummy 읽기  
dummy = AT91C_BASE_TC0->TC_SR;

// TC0관련 인터럽트를 금지 
AT91C_BASE_AIC->AIC_IDCR = (1 << AT91C_ID_TC0);
// TC0관련 인터럽트가 오면 호출될 함수 등록 
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_TC0] = (unsigned long) timer_handler;

// TC0인터럽트의 타입과 우선순위 (High Level sensitive, 가장낮음
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_TC0] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | AT91C_AIC_PRIOR_LOWEST;
// TC0인터럽트의 엣지 검출기 클리어 
AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_TC0);

// 채널모드 레지스터  =  (상승엣지가 캡쳐트리거 신호로 사용), (카운터 리셋후 클록공급 시작)
AT91C_BASE_TC0->TC_CMR = AT91C_TC_CLKS_TIMER_DIV2_CLOCK | AT91C_TC_CPCTRG;
// TC_RC (Register C) 레지스터와 비교해서 인터럽트 발생 시작
AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;
// TC_CV레지스터와 비교될 카운터 값 (@6Mhz : 348count => 58us (58us == 1cm))
AT91C_BASE_TC0->TC_RC = 348;  

// TC0관련 AIC인터럽트 허용 
AT91C_BASE_AIC->AIC_IECR = (1 << AT91C_ID_TC0);


//CLKDIS가 1로 설정되지 않았다면 클록이 공급되도록 허용 (위에서 1로 설정되어 있으므로 무시)
AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKEN;
// 해당채널의 카운터 리셋후 클록공급 시작 
AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG;
}
Posted by 시긔양
Computer/Hardware2008.10.21 15:24
CPU 의 원리를 이해하고 익히는 교육용으로는 Z80 이나 8051 정도가 좋습니다.
좀 더 성능이 요구되는 응용에는 AVR 쪽이 유리합니다. 상당한 량의 주변장치가
내장되어 있으므로 편리하기도 하고, 빠르기 때문이지요. 그러나 입문용으로
적합하지는 않은 것 같습니다.

16MHz 로 동작하는 AVR 의 경우, 대부분 명령이 1 cycle (62.5nS) 로 동작
하므로 12MHz 로 동작하는 표준 8051 의 1uS~2uS 에 비하면 무척 빠릅니다.
과거 EPROM 의 단 일회 access 에만 100nS 이상 걸리던 것에 비하면 기술
이 많이 발전한 것을 알 수 있습니다.

그러나 더욱 빠른 동작이 요구되는 경우도 있습니다. 소위 multi-media 라
부르는, 음성, 영상의 data 를 digital로 처리하는 경우가 특히 그렇습니다.
입력, 압축, 전송, 해제, 출력의 과정을 실시간으로 처리하려면 엄청난 처리
능력을 필요로 합니다.
또 battery 를 사용하여야 하는 휴대용 기기에 적용하기 위하여는 전력 소비
에도 크게 신경을 써야 합니다.

이러한 요구에 부응하여 상당한 성공을 거둔 것이 ARM processor 입니다.
http://www.arm.com 
(여기 들어가니 "中文 日本語" 란 항만이 있습니다. "한글"은 없어 씁쓸하군요.)
이란 곳에서 CPU 의 core (알맹이)만 설계하여 공급한답니다.
여러 반도체 회사에서 이 core 설계를 사다가, 자신들 입맛에 맞게 다양한 주변
장치를 부착하여 제품을 만들어 팔고 있습니다.
우리에게 가까운 것으로는, 삼성에서 적극적으로 제품을 내놓고 있고, hynix
에서도 제품을 내고 있습니다.
휴대폰에 사용하는 프로세서도, 요즘 전자신문의 도마위에 자주 오르고 있는
http://www.qualcomm.com
사의 것으로 ARM core 를 내장하고 있습니다.

이들 processor 는 원래 휴대용 기기에 장착하는 것을 목표로 설계한 것이지만,
값이 비교적 싸고, 기능도 꽤 쓸만하므로 일반 장비에도 흔히 사용합니다.
개발자 입장에서 특히 좋은 점은, 개발 tool, 즉 assembler, compiler 등을
한번만 구하고 익히면 제조사가 달라도 동일하게 사용할 수 있다는 점입니다.
상용도 있지만 상당히 비싼 것으로 알려져 있고, GCC 를 사용할 수도 있습니다.

하이텔 디동에 김성암님이 소개하였던
http://www.hynix.co.kr/kor/products/system_ic/sp/down/HMS39C7092K.pdf
를 보면 몇가지 유의할만한 특징이 있습니다. 요약해 보면,
1. 가격이 8000 원 정도라 함. (ATmega128 보다 쌉니다.)
2. 50MHz 동작 (ATmega128 보다 빠릅니다.)
3. 기능은 ATmega128 과 대체로 유사합니다.
4. 한글 자료. 놀랍게도 위 자료는 한글로 되어 있었습니다.
    (제가 아는 한, 유일한 제조사 발행 한글 자료입니다.)

삼성에도 이에 못지않은, flash를 내장한 소자들이 있습니다. 그러나 한글
자료를 제공하지는 않습니다.
일본인들은... 국내 전용 자료를 영문 자료와 별도로 만들어 자국내에"만"
유포했었습니다. 오래 전 일이로군요. 그런게 있는 걸 보고 부러워 했었던 일...

 

 

http://control.cntc.ac.kr/cpu/frame4.htm 퍼 옴..

Posted by 시긔양