1. STM32CubeIDE의 부트로더로 실행시키고 싶은 프로젝트에서 system_stm32f1xx.c파일에서 주석처리되어 있는

/* #define USER_VECT_TAB_ADDRESS */ 를 적용시킴 -> #define USER_VECT_TAB_ADDRESS

 

#define VECT_TAB_BASE_ADDRESS   FLASH_BASE 아래쪽의

#define VECT_TAB_OFFSET         0x00000000U를 변경시킴 -> #define VECT_TAB_OFFSET         0x4000

 

2. _FLASH.ld파일의 FLASH 시작 지점을 0x8000000 에서 0x8004000으로 변경시킴

 

3. 프로젝트의 Properties -> C/C++ Build -> Settings -> MCU Post build outputs에서 bin파일 생성되게 설정해줌 

 

4. 프로젝트 빌드하면 bin파일 생성되고 이전 stm32f103 IAP 부트로더 - 1 내용에서처럼 YMODEM으로 bin파일을 보드로 다운로드해주면 실행됨.

Posted by 테키홍
,

1. st회사 홈페이지에서 AN4657 다운로드 받아서 대충 아무대나 압축 푼다.

2. 압축 푼 폴더 AN4657-STM32Cube_IAP_using_UART 에서Inc폴더 찾아서 common.h, flash_if.h, menu.h, ymodem.h 복사

 

3. STM32CubeIDE에서 원하는 프로젝트 Inc폴더에 붙여넣기

 

4. 다시 압축 푼 폴더 AN4657-STM32Cube_IAP_using_UART 에서 Src폴더 찾아서 common.c, flash_if.c, menu.c, ymodem.c 복사

 

5. STM32CubeIDE에서 원하는 프로젝트 Src폴더에 붙여넣기

 

6. main.c파일 아래처럼 내용 수정

#include "common.h"
#include "flash_if.h"
#include "menu.h"
#include "ymodem.h"


extern pFunction JumpToApplication;
extern uint32_t JumpAddress;

 

if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) //이건 PA0에 버튼스위치 연결해서 버튼 누르면 부트로더로 실행되고, 안누르면 원래 펌웨어가 실행되게 했음.
    {
   /* If Key is pressed, execute the IAP driver in order to re-program the Flash */
     FLASH_If_Init();

   /* Display main menu */
   Main_Menu ();
   }

      else
      {/* Keep the user application running */

        /* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
        if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
        {
          /* Jump to user application */
          JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
          JumpToApplication = (pFunction) JumpAddress;

          /* Initialize user application's Stack Pointer */
          __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);

          /* Jump to application */
          JumpToApplication();
        }
      }

 

7. common.h파일에서 #include "stm3210c_eval.h" 주석처리

 

 

8. common.c, menu.c, ymodem.c의 파일에 extern UART_HandleTypeDef huart1; 외부변수 처리

 

9. common.c, menu.c, ymodem.c의 모든 파일에 UartHandle 변수명을 huart1 변수명으로 교체(Replace All)

 

10. flash_if.h파일에서 APPLICATION_ADDRESS가 0x08004000 확인

 

11. 컴파일하고 보드에 다운로드한 다음 PA0에 연결된 스위치 누른 상태에서 보드 전원키면 아래처럼 IAP부트로더 실행됨

12. 키보드 1누르면 다운로드 대기 상태

13. 메뉴 -> 전송 -> YMODEM -> 보내기에서 실행시킬 펌웨어.bin파일 보내고 완료되면 키보드 3누르면 실행됨

Posted by 테키홍
,

최근에 스마트폰을 바꾸게 되었다.

난 최신폰에 대한 관심이 별로 없어서 중고로 저렴하게 s20울트라를 구입했는데 이 제품이 전면카메라가 초점이 맞지 않는것이다. 보통 전면카메라는 고장이 잘 나지 않는걸로 아는데...;;

어차피 난 전면카메라 자주 쓰지 않으니 크게 상관안하고 액정하고 배터리 교체한지 1년 안된거라 괜찮은 중고라 생각하고 있었는데 스마트폰 정보를 찾아보니 최초통화일이 2022.03.04일로 되어 있었다. 그럼 액정빼고 다른 부품이 2년 무상AS기간이라 한번 서비스센터를 찾아가볼만하다란 생각에 마침 잔여연차도 써야하고 평일에 서비스센터를 가봤다.

 

그런데,

1. 네비바 부분에 미세한 번인(잔상) 있다. 액정하고 배터리를 교체한게 맞냐? 

      --> 교체했다. 하지만 1년이 조금 지났다. 번인보정도 무상AS는 안된다. 돈을 내야한다.

 (그럼 판매자놈이 거짓말을 한건가? 아님 서비스기사가 대충 날짜 계산해서 지났다고한건가? 진실은 모르겠다ㅋㅋ)

2. 전면카메라가 초점이 맞지 않는다.   

     --> 불량이다. 교체해야한다. 무상AS는 기간이 지나서 안된다. 돈을 내야한다.

 (최초통화일이 22.3.4일이고 내가 찾아간 날짜는 24.2.18일인데 그럼 2년이 지나지 않은 무상AS기간 아닌가..?ㅋㅋ)

 

우선, 액정은 판매자놈이 거짓말한 가능성이 높을거 같지만 서비스기사놈도 거짓말할 가능성이 좀 있다. 못믿겠다. 이건 밑에 내용을 보면 의심이 많이 가게된다.

전면카메라는 이 제품을 중고로 구입해서 최초통화일을 계산안하고 제조일자로 계산해서 저렇게 얘길해줬을 가능성이 높다. 그런데 중고구입이던 새 제품구입이던 무슨 상관이라고 저렇게 처리해주냐? 삼성 존나 웃기네..ㅋㅋ. 지들이 만든 제품인데 중고로 구입하면 지들 제품이 아닌거야? 중고로 거래하면 삼성한테 거래비용의 몇프로라도 챙겨줘야 무상 AS적용해주는거야ㅅㅂ?

중고가 30만원정도 되는 폰가지고 찾아왔다고 30만원짜리 인간취급해주는건가싶어서 그냥 액정필름이나 새로 붙이고 서비스센터를 나왔다. 어차피 전면카메라 그거 알리에서 5천원에 팔던데 서비스센터에서는 5만원 달라고하더라ㅎㅋㅋㅋ.

 

집에 와서 곧바로 내가 직접 뒷판 뜯고 전면카메라 고장나있나 확인해봤다.

 

 

위 사진 자세히보면 이 제품이 이전에 액정을 교체했었다고 했는데, 그럼 새 액정에다가 전면카메라를 저렇게 양면테이프로 붙였겠지. 근데 제대로 붙이지 않고 저렇게 X같이 대충해놔서 양면테이프가 렌즈 움직임을 방해하고 있었던거다. 

서비스기사놈은 나한테 저런거 생각안하고 무상 AS안되고 5만원 돈내고 고쳐야하는데 하실건가요?라고 물어봤지. 그럼 난 당연히 안한다고하지ㅋㅋ. 그리고 설령 내가 돈내고 고친다해서 저런 상황을 확인했을때 과연 양면테이프때문에 문제가 생겼어요. 돈은 안 받겠습니다라고 했을까ㅋ? 지들이 잘못한 작업때문에 1년가까이 전면카메라가 병신이 되고 있었는데..ㅋㅋㅋ. (판매자놈도 병신이다. 1년가까이 전면카메라가 제대로 동작하지 않고 있었는데...ㅅㅂ;;)

 

양면테이프 제대로 정리해서 잘 붙여놓고 동작시켜봤는데 초점이 아주 잘 잡힌다. 존나 잘 잡힌다. 삼성 ㅅㅂ놈들, 서비스센터기사 ㅅㅂ놈. 서비스기사놈이 병신이지만 회사도 욕먹어야지ㅋㅋ. 

 

+ 추가 내용

 - 삼성 맴버스앱으로 문의했는데 맴버스에서는 최초통화일을 기준으로 무상 AS기간 계산한다고 함

 - 맴버스에서 서비스센터로 직접 확인해준다 함

 - 서비스센터에서 직접 전화와서 알려준 결과 액정하고 배터리만 교체된게 아니라 메인보드도 이전에 교체되었었고 교체되었던 메인보드의 최초통화일이 2022.03.04일로 저장되어 있는거라함ㅋㅋㅋ.

 - 즉, 이 제품은 액정, 배터리, 메인보드가 교체되었지만 카메라는 교체안하고 원래 오리지날 부품이라서 AS기간이 한참을 지나버렸기 때문에 무상 AS가 안된다했던거... 그럼 나한테 얘길 해줬어야지ㅅㅂㅋㅋㅋ.

 

정리.

1. 1년전쯤 액정과 배터리 교체

2. 전면카메라 초점불량 -> 액정교체할 때 전면카메라 장착 대충함(교체하고 확인도 안했나보네ㅋ)

3. 직접 폰 뒷판따고 전면카메라 재장착 -> 정상동작함

 

+ 추가 정리

4. 알고보니 메인보드도 교체되었어서 최초통화일도 바뀌어 있었음(원래 최초통화일은 2020 혹은 2021년 어디쯤일듯ㅋ)

5. 전면카메라는 교체안된 원래 부품이니까 무상 2년 AS기간이 적용 안된다 함.

6. 그래도 전면카메라 그지같이 장착해놓은거는 용서가 안된다ㅅㅂ.

 

 

Posted by 테키홍
,