아학아학 463

STM32L496 Unique ID 확인하기

Unique ID는 시리즈마다 다른 위치에 있습니다. 선언되지 않았다면 Referance Manual 에서 주소를 확인하고 사용하여야 합니다. /*===============stm32l496xx.h에 선언된 부분 ==================*/ #define PACKAGE_BASE ((uint32_t)0x1FFF7500U) #define UID_BASE ((uint32_t)0x1FFF7590U) #define FLASHSIZE_BASE ((uint32_t)0x1FFF75E0U) /* Debug MCU registers base address */ #define DBGMCU_BASE ((uint32_t)0xE0042000U) #define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_..

SW6STM에서 고정위치에 바이너리 라이팅하기

고정할 바이너리 파일 unsigned char _FixedData[1024UL + 1] __attribute__ ((section(".mfc_array"))) = { 0x8D, 0x43, 0xF2, 0x3D, 0x71, 0x3F, 0xF8, 0x12, 0x5D, 0x85, 0x96, 0x9F, 0x2A, 0x52, 0xE7, 0x50, 0xB4, 0x43, 0xDE, 0xE6, 0xBB, 0xC8, 0x6A, 0xC1, 0xD4, 0xBD, 0x83, 0xE6, 0x13, 0xAF, 0x5B, 0xE0, 0x06, 0x4B, 0x07, 0x4A, 0x1B, 0x68, 0x93, 0x42, .... 중략 .... }; STM32Fxxxx_FLASH.ld 파일 /* Entry Point */ ENTRY(Re..

Keil에서 함수를 RAM상에 올려서 사용하기

Flash 메모리의 접근 속도가 느릴 경우 자주 쓰는 함수들을 RAM에 올려놓고 쓰는 것이 속도에 대한 방안이 될 수 있을 것 같습니다.(실제로 해보지는 않았습니다... 저는 다른 용도때문에 올렸습니다.) 우선 Keil의 프로젝트 옵션에서 Linker항목에서 Use Memory Layout from Target Dialog의 체크를 풀어서 Scatter File 파일을 사용하게끔 설정하여야 합니다. Keil을 사용하면 기본구조는 나와있기때문에 그다지 어렵지 않게 사용할 수 있습니다. ramfunction.c라는 파일에 foo 섹션을 만들어(예제 사이트 참조) 사용하였고 sct 파일에 섹션의 위치를 설정해주었습니다. 그리고 아래처럼 함수의 위치를 main 함수에서 불러주었습니다. printf("Func L..

인터럽트 벡터 위치 확인과 변경

정식으로 드라이버와 데이터 시트를 받지 못했을 경우 인터럽트 벡터 위치를 직접 확인해서 넣어야하는 경우가 있습니다. 그럴때 다소 귀찮긴 하지만 하나씩 인터럽트 벡터를 살린 후 데이터가 들어오는 인터럽트 벡터 번호를 찾아서 매핑해주면 사용할 수 있습니다. Uart0번의 벡터를 체크한 부분입니다. 인터럽트와 별도로 Uart 설정은 따로 해주어야 합니다. void INT_All_Enable(void) { int Interrupt_Vector_Num = 0; DEBUGPRINT("\r\n NORMAL MODE TEST"); for( Interrupt_Vector_Num= 0; Interrupt_Vector_Num < 239; Interrupt_Vector_Num++){ NVIC_ClearPendingIRQ(In..

STM32L432 - Internal Flash Erase 문제

내부 플래쉬를 삭제를 하려는데 삭제가 계속 안되는 현상이 발생했습니다. NVIC_EnableIRQ(SysTick_IRQn);(NVIC_DisableIRQ 도 동일)로 인터럽트를 설정하면서 발생하는 부분은 파악하였는데 정확한 이유는 조금 더 확인해 봐야겠습니다. #define FLASH_USER_START_ADDR ADDR_FLASH_PAGE_96 /* Start @ of user Flash area */ #define FLASH_USER_END_ADDR ADDR_FLASH_PAGE_97 + FLASH_PAGE_SIZE - 1 /* End @ of user Flash area */ void Test_FLASH(void) { uint8_t achp_Data[32] = {0x12, 0x34, 0x56, 0x7..

카테고리 없음 2020.02.27

PADS - Fatal Data Base Error Number 2012 문제

EVM 제조사에서 받은 회로 파일을 변경하여 기존 PCB 파일에 ECO 변경하여 사용하려고 하니 Fatal Data Base Error Number 2012 문제가 발생하네요. 특별한 조치없이 파일을 ASC로 EXPORT한 후에 IMPORT해서 ECO 변경을 하니 해결되었습니다. (저는 IMPORT시에 에러를 줄이기 위해 기존 PCB 파일의 START-UP 파일을 넣어두고 NEW FILE를 생성할 때 불러서 작업을 했습니다.) 순서는 아래처럼 하였습니다. 1. 기존 START-UP 파일 저장 2. PCB 파일 ASC로 EXPORT 3. 저장한 START-UP 파일로 새파일 생성 4. EXPORT한 ASC 파일을 IMPORT 5. ECO 변경(ECO 작업 한 부분은 제외하였습니다.)