'공부/STM8'에 해당되는 글 20건
- 2014.11.03 :: STM8S IAR에서 __eeprom 으로 eeprom 사용 하기
- 2013.03.05 :: STM8S 에서 RAM상주 함수 만들기 (2)
- 2013.02.05 :: STM8S 표준 회로도 자료및 컴파일설정 파일 자료
- 2013.02.05 :: STM8 중 가장큰 80pin 회로도
- 2013.02.05 :: STM8S 용 RTOS
- 2013.02.05 :: STM8 관련 다양한 정리가 되어 있는 사이트
- 2013.01.03 :: STVP 와 ST-LINK 를 이용한 STM8S 양산 (2)
- 2013.01.02 :: STM8S 개발및 양산 환경
IAR 은 전통적으로 __eeprom 으로 변수를 선언하면 일반 변수처러 eeprom 을 사용할수 있다.
이에 eeprom 사용 법을 설명해 본다.
__eeprom 을 설명하는 방법처럼 사용하기 위해서 컴파일러 버전 1.42 이상을 사용해야 한다고 한다.
이전에는 버그가 있어서 link 파일에서도 수정을 해주어야 한다고 한다.(실험은 안해 봤다.)
eeprom 선언 :
__eeprom __no_init INT8U eep_data[10];
eeprom 사용 :
if(eep_data[0] != 0x01) eep_data[0] = 0x01;
위와 같은 방식으로 선언을 하면
__eeprom_wait_for_last_operation,
__eeprom_program_byte,
__eeprom_program_long
함수가 없다고 에러가 나올수 있다.
이때는 아래의 소스를 추가 하면 된다.
void EEPROM_Unlock() { /* Unlock data memory */ FLASH->DUKR = FLASH_RASS_KEY2; /* Warning: keys are reversed on data memory !!! */ FLASH->DUKR = FLASH_RASS_KEY1; } void EEPROM_Lock() { FLASH->IAPSR &= 0xF7; } int __eeprom_wait_for_last_operation(void) { FLASH_Status_TypeDef status = FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA); return !!(status & (FLASH_STATUS_WRITE_PROTECTION_ERROR | FLASH_STATUS_SUCCESSFUL_OPERATION)); } void __eeprom_program_byte(unsigned char __near * dst, unsigned char v) { EEPROM_Unlock(); FLASH_ProgramByte((u32)dst, (u8)v); EEPROM_Lock(); } void __eeprom_program_long(unsigned char __near * dst, unsigned long v) { EEPROM_Unlock(); FLASH_ProgramWord((u32)dst, (u32)v); EEPROM_Lock(); }
eeprom 의 번지를 지정하고자 한다면 아래 와 같이 선언 해야 한다.
__eeprom __no_init INT8U eep_data[10] @ 0x4000;
주의 사항으로 link 파일에 보면 아래 처럼 선어 되어 있을것이다.
define region Eeprom = [from 0x4000 to 0x47FF];
STM8종류에 따라 eeprom 사이즈가 다르기 때문에 선언 했을때 메모리 범위를 주의 해서 선언하고
변수별로 메모리가 중복되지 않도록 해야 한다.
'공부 > STM8' 카테고리의 다른 글
STM8S IAR에서 __eeprom 으로 eeprom 사용 하기 (0) | 2014.11.03 |
---|---|
STM8S 에서 RAM상주 함수 만들기 (2) | 2013.03.05 |
STM8S 표준 회로도 자료및 컴파일설정 파일 자료 (0) | 2013.02.05 |
STM8 중 가장큰 80pin 회로도 (0) | 2013.02.05 |
STM8S 용 RTOS (0) | 2013.02.05 |
STM8 관련 다양한 정리가 되어 있는 사이트 (0) | 2013.02.05 |
STM8S 에서 RAM상주 함수 만들기
STM8S에서 IAP 소스상에서 Flash 를 Block 으로 쓰기 위해서 RAM 상주 함수를 만들어서 사용하는데 ,
이유는 Flash를 1byte, 4byte,Block 단위 로 쓸수 있는데, 한번 쓸때 걸리는 시간이 3ms 정도다. 즉 1byte 를 쓰나 Block 단위로
쓰나 시간은 동일하다는 것이다. 문제는 1byte 와 4byte 는 flash 에서 쓸수 있으나 Block 은 RAM 에서만 쓸수 있다고
되어 있다. 시간을 줄이기 위해서는 무조건 Block으로 써야 한다.
그래서 IAP 소스를 살펴보니 아래와 같이 선언되어 있고
#pragma location = "FLASH_CODE"
void Mem_ProgramBlock(u16 BlockNum, FLASH_MemType_TypeDef MemType, u8 *Buffer)
icf 파일에
initialize by copy { rw, ro section .tiny.rodata, section FLASH_CODE};
로 선언이 되어 있었다.
이부분을 예제 파일쪽에서 사용해 보기 위해서 예제 소스의 icf 파일에 아래처럼 되어 있는데
// Initialization initialize by copy { rw section .far.bss, rw section .far.data, rw section .far_func.textrw, rw section .huge.bss, rw section .huge.data, rw section .huge_func.textrw, rw section .iar.dynexit, rw section .near.bss, rw section .near.data, rw section .near_func.textrw, rw section .tiny.bss, rw section .tiny.data, ro section .tiny.rodata};
이것을 아래 처럼 수정하고 해당 함수를 소스에 추가 해서 컴파일 했다.
// Initialization initialize by copy { rw section .far.bss, rw section .far.data, rw section .far_func.textrw, rw section .huge.bss, rw section .huge.data, rw section .huge_func.textrw, rw section .iar.dynexit, rw section .near.bss, rw section .near.data, rw section .near_func.textrw, rw section .tiny.bss, rw section .tiny.data,rw,ro section .tiny.rodata ,section FLASH_CODE };
linker 에서 에러가 났다.
그래서 ro section .tiny.rodata ,section FLASH_CODE }; 로 수정했다.
그래도 linker 에서 에러가 났다.
IAR 메뉴얼에도 정확하게 표기가 안되어 있어서 고민중에 다른 사이트에서 ramfunc keyword를 찾아서 icf 파일은
원래대로 나두고 아래 처럼만 수정 했다.
__ramfunc void Mem_ProgramBlock(u16 BlockNum, FLASH_MemType_TypeDef MemType, u8 *Buffer)
이상 없이 컴파일 잘된다.
map 파일을 보면 아래처럼 되어 있다.
Mem_ProgramBlock 0x000010 0xd7 Code Gb util.o [1]
즉 0x000010 번지 (즉 RAM영억) 에 0xd7을 차지하는 Code 가 잡힌다는 것이다.
해결....
해당내용에 대한 사이트 링크 한다.
http://www.embeddedworld.co.kr/atl/view.asp?a_id=5681
'공부 > STM8' 카테고리의 다른 글
STM8S IAR에서 __eeprom 으로 eeprom 사용 하기 (0) | 2014.11.03 |
---|---|
STM8S 에서 RAM상주 함수 만들기 (2) | 2013.03.05 |
STM8S 표준 회로도 자료및 컴파일설정 파일 자료 (0) | 2013.02.05 |
STM8 중 가장큰 80pin 회로도 (0) | 2013.02.05 |
STM8S 용 RTOS (0) | 2013.02.05 |
STM8 관련 다양한 정리가 되어 있는 사이트 (0) | 2013.02.05 |
STM8S 표준 회로도 자료및 컴파일설정 파일 자료
회로도/PCB/PARTLIST
표준 컴파일 설정 파일 자료
'공부 > STM8' 카테고리의 다른 글
STM8S IAR에서 __eeprom 으로 eeprom 사용 하기 (0) | 2014.11.03 |
---|---|
STM8S 에서 RAM상주 함수 만들기 (2) | 2013.03.05 |
STM8S 표준 회로도 자료및 컴파일설정 파일 자료 (0) | 2013.02.05 |
STM8 중 가장큰 80pin 회로도 (0) | 2013.02.05 |
STM8S 용 RTOS (0) | 2013.02.05 |
STM8 관련 다양한 정리가 되어 있는 사이트 (0) | 2013.02.05 |
댓글을 달아 주세요
STM8 중 가장큰 80pin 회로도 임
'공부 > STM8' 카테고리의 다른 글
STM8S 에서 RAM상주 함수 만들기 (2) | 2013.03.05 |
---|---|
STM8S 표준 회로도 자료및 컴파일설정 파일 자료 (0) | 2013.02.05 |
STM8 중 가장큰 80pin 회로도 (0) | 2013.02.05 |
STM8S 용 RTOS (0) | 2013.02.05 |
STM8 관련 다양한 정리가 되어 있는 사이트 (0) | 2013.02.05 |
STVP 와 ST-LINK 를 이용한 STM8S 양산 (2) | 2013.01.03 |
댓글을 달아 주세요
STM8S 용 RTOS
open source 임 현재 버전은 1.3
링크사이트 : http://atomthreads.com/index.php?q=node/1
공부 해봐도 재미 있을듯 함 ..
'공부 > STM8' 카테고리의 다른 글
STM8S 표준 회로도 자료및 컴파일설정 파일 자료 (0) | 2013.02.05 |
---|---|
STM8 중 가장큰 80pin 회로도 (0) | 2013.02.05 |
STM8S 용 RTOS (0) | 2013.02.05 |
STM8 관련 다양한 정리가 되어 있는 사이트 (0) | 2013.02.05 |
STVP 와 ST-LINK 를 이용한 STM8S 양산 (2) | 2013.01.03 |
STM8S 개발및 양산 환경 (0) | 2013.01.02 |
댓글을 달아 주세요
STM8 관련 다양한 정리가 되어 있는 사이트
link 형태로 되어 있는데 따로 검색을 안해도 될듯
'공부 > STM8' 카테고리의 다른 글
STM8 중 가장큰 80pin 회로도 (0) | 2013.02.05 |
---|---|
STM8S 용 RTOS (0) | 2013.02.05 |
STM8 관련 다양한 정리가 되어 있는 사이트 (0) | 2013.02.05 |
STVP 와 ST-LINK 를 이용한 STM8S 양산 (2) | 2013.01.03 |
STM8S 개발및 양산 환경 (0) | 2013.01.02 |
STM8S에서 Uart 동기통신을 이용한 SPI 전송 (0) | 2013.01.02 |
댓글을 달아 주세요
STVP와 ST-LINK 를 이용한 STM8S 양산
- Project>New 를 선택 한다.
- 신규 프로젝트 디렉토리를 선택하고 만든다. ( (예) STM8S103F3로 함)
- 프로젝트 옵션을 선택 한다.
- 프로젝트 옵션을 선택 한다.
- 프로그램 메모리에 사용할 Hex 파일을 추가 한다.
- 확인을 누르면 프로젝트가 생성 된다.
- TAB 에서 Option Byte 항목을 에서 ROP 를 Read Out Protection ON 으로 설정 한다.
- 기능에 따라 Hex 파일을 다운로드 한다.
그림 상의 1번( Program Current Tab or active sectors) 또는 Program > Current tab 의 경우 현재 선택 되어진 Tab 항목만 Writer 한다.
그림 상의 2번( Program All Tabs) 또는 Program > All tabs 의 경우 모든 설정된 Tab 항목을 Writer 한다.
(V3.2.7 은 OPTION BYTE tab 을 선택 하고 동작 해야 다른 Tab도 Writer 된다.)
'공부 > STM8' 카테고리의 다른 글
STM8S 용 RTOS (0) | 2013.02.05 |
---|---|
STM8 관련 다양한 정리가 되어 있는 사이트 (0) | 2013.02.05 |
STVP 와 ST-LINK 를 이용한 STM8S 양산 (2) | 2013.01.03 |
STM8S 개발및 양산 환경 (0) | 2013.01.02 |
STM8S에서 Uart 동기통신을 이용한 SPI 전송 (0) | 2013.01.02 |
STM8S slave SPI 살리기 및 인터럽트 살리기 (0) | 2013.01.02 |
댓글을 달아 주세요
STM8S 를 무료(?) 개발 환경이 있다.
컴파일러는 따로 깔아야 하는데 별루 인듯 ..
같이 깔면 ST Visual Programmer 가 있는데 STlink 를 이용해 양산용으로 사용할수 있다.
정식 명칭 STVD 으로 ST Visual develop IDE for developing ST7 and STM8 applications 약자다.
홈페이지 : http://www.st.com/internet/evalboard/product/210567.jsp
직접 받기 : http://www.st.com/internet/com/SOFTWARE_RESOURCES/TOOL/TOOLSET/sttoolset.zip
직접 받기에서 다운 받을수 있다.
개발 환경 : Visual develop IDE (STVD)
양산용 프로그래머 : ST Visual Programmer (STVP)
'공부 > STM8' 카테고리의 다른 글
STM8 관련 다양한 정리가 되어 있는 사이트 (0) | 2013.02.05 |
---|---|
STVP 와 ST-LINK 를 이용한 STM8S 양산 (2) | 2013.01.03 |
STM8S 개발및 양산 환경 (0) | 2013.01.02 |
STM8S에서 Uart 동기통신을 이용한 SPI 전송 (0) | 2013.01.02 |
STM8S slave SPI 살리기 및 인터럽트 살리기 (0) | 2013.01.02 |
ST-LINK/V2 에 바리스터 달기 (7) | 2012.12.27 |
댓글을 달아 주세요