안녕하세요~^^; 22분38초 강의에서 링크스크립트 설정을 그대로 따라해 보았으나 빌드아날라이저에 아무런 정보가 나타나지 않는건 무엇을 잘못한 걸까요? 디버깅을 하면 워크스페이스쪽에 main함수 시작번지수가 강의하시는 시작번지와 동일하게 보이긴 하거든요? ^^; 링크스크립트 절대경로를 넣어도 마찬가지더라구요? 제가 뭘 놓친 걸까요? 이상하네요? 방금 IDE로 자동 생성된 코드를 돌려봐도 빌드 아날라이저에 아무런 정보가 안뜨네요.ㅠㅠ
안녕하세요. 바람님. 매번 답변해주셔서 감사합니다. 이전의 STM32 펌웨어 기초를 어느정도 마무리 해서 F411을 가지고 이전에 했던 것을 다시해보고 있습니다. 기존에 했던것에서 조금만 바꾸면 대부분 정상 동작을 하였는데요. Reset count 강의에서 했던 것을 여기서 해보려고 하니 조금 다른 부분이 있어서 질문드립니다. F103 에서는 데이터시트를 찾아보니 백업 레지스터가 RTC 레지스터와 따로 분리되어 있었는데요. F411은 RTC레지스터와 백업레지스터가 같이 있습니다. 그런데 그것을 떠나서 stm32mx 를 이용해서 코드를 생성하고 이를 cubeide에 불러서 확인해보면 HAL_RTC_MSPINIT 함수에서 HAL_PWR_ENABLEBKUPACESS 함수를 자동으로 생성하지 않네요. 이런 경우 RTC_MSPINIT에 HAL_PWR_ENABLEBKUPACESS를 수동으로 작성해야 하는지 궁금해야 하는지 아니면 MX에서 따로 설정을 수정해야하는지 궁금합니다. - 추가: F4 관련된 예제들을 통해 어떻게 Backup 레지스터를 설정하는지 확인해보겠습니다.
강의 내용 중에 RCC를 LL Driver로 변경하여 Flash Size를 최적화 하셨던데 혹시 펌웨어 작성 할 떄 LL driver와 HAL Driver를 혼용하여 사용 가능할까요?? 예를 들어 UART는 HAL driver로 작성하고 ADC는 LL driver를 사용하여 설계가 가능한지 궁금합니다.
안녕하세요. 동영상 잘보고 있습니다. 올려주신 영상을 따라서 코딩을 하고 있는데, 문제가 있어 질문드립니다. 문제는 코딩을 완료 후 보드에 로드하고 통신 터미널을 통해 문자를 보내면 RxData: 만 나옵니다. 예를 들어 1,2,3 문자를 순서대로 누르면 RxData:RxData:RxData: 문자열이 나옵니다. 신기한 점은 디버거를 걸고 한줄 한줄 실행하면 또 정상적으로 동작됩니다. 말씀드린 문제를 가지고 어디가 문제인지 알 수 있으실까요? 문제가 발생한 것을 녹화해서 유튜브에 올렸습니다. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-ZeirkvxoEYY.html
답변에 따라서 디버깅을 다시 해보니 말씀하신 것처럼 두번째 cdcWrite 함수에서 busy가 걸리네요. 문제의 원인을 확인해보기 위해서는 레지스터를 하나씩 살펴보는게 좋을까요? usb_cdc는 관련 레지스터가 많아서 복잡하네요.. 아니면 비슷한 문제를 해결한 경험이 있으신가요?
@@sungzunjung5933 비지체크 하는 방식으로 전송하실려면 아래 링크 내용 참조 바랍니다. www.notion.so/higenis/YMODEM-4b711de3b69342ce971b2defa34b9713?pvs=4#3cf5b59985ae445fb25b64613a496172
영상들 잘 봤습니다. 저도 펌웨어 엔지니어를 하고 있지만 역시 배움에는 끝이 없고 고수들이 많이 있다는 걸 다시 느낍니다. 진짜 좋은 영상이 많아서 감동했습니다. 대부분 외국 영상이 많은데 우리나라도 조금 더 이쪽에 관심을 가져줬으면 합니다. 정부 지원 사업으로 엔지니어 육성한다 하면 엔지니어가 아닌 코더 육성에 가까운 지원이나 프로그램들이 많이 있어서 이렇게 하드웨어에 관한 지원과 관심이 너무 부족하다고 느끼고 있습니다. 회로 설계, 아트웍 이런 하드웨어 지원 사업이 늘어나고 관련 인력이 늘어나야 국내 제조업에 도움이 되고 그러는데 하드웨어는 납땜도 해야 하고 잘못되면 코딩과 다르게 바로 수정이 되는 것도 아니고 돈과 시간이 많이 들어가니까 부담감도 클 수 밖에 없습니다. 그래서 특히 인기가 없는 직종인데 그렇다고 펌웨어 엔지니어의 임금이 그렇고 특별히 높은 것도 아니고 주변에서 한다고 하면 도시락 싸들고 말리고 싶은 기분입니다. ㅜㅜ 죄송합니다. 이렇게 영상 올려주신거 보니까. 이런 분들이 있어서 그나마 우리나라에도 펌웨어 엔지니어가 조금씩 이지만 나오고 있구나 라는 생각이 들어서 푸념을 늘어놔 봤습니다.
의견 감사합니다. 시간이 갈수록 임베디드쪽을 하실려는 분이 줄어드는 것은 사실인것 같습니다. 그래서 계속 제가 하는 것도 공유하는 이유중에 하나가 진입장벽이 조금이라도 낮아지지 않을까 하는 생각입니다. 저는 프로그래밍을 좋아하기도 하고 특히 하드웨어를 다루는 펌웨어를 더 좋아합니다. 그래서 아마도 더 나이가 들어도 똑같은걸 하고 있을 것 같구요. 좋게 생각하면 나이들어서도 할 수 있는 취미가 있는 것일 것 같네요. 앞으로 임베디드쪽에 많이 들어오지는 않더라도 계속 할려는 사람이 있기만 해도 좋을 것 같습니다.
ART-PI 보드를 사서, Baram 님의 동영상을 등대 삼아 열심히 따라하면서, 배워가고 있는 중입니다. 이번 동영상 littlsFS 따라하는 도중 error 가 발생 했습니다. littleFS 실행 도중 아래와 같은 메시지가 나와서 보니, 현상은 lfs_config cfg 구조체의 값중에 몇몇이 바뀌는 것 같은 현상입니다. 예를 들면, read_size 가 2415946941 같은 이상한 값이 찍힙니다. 하지만, lfs_config cfg 구조체 const 이므로 그 값이 바뀌지 않아야 하는데, 실행 중간에 이런 현상을 보이는 것은 어떤 이유 인지, 염치 없지만 고견을 듣고자 합니다. 구조체 셋팅 값 ====================== #define LFS_BUF_CACHE_SIZE 256 static uint8_t read_buffer[LFS_BUF_CACHE_SIZE]; static uint8_t prog_buffer[LFS_BUF_CACHE_SIZE]; static uint32_t lookahead_buffer[LFS_BUF_CACHE_SIZE/4]; const struct lfs_config cfg = { // block device operations .read = fsDeviceRead, .prog = fsDeviceProg, .erase = fsDeviceErase, .sync = fsDeviceSync, #ifdef LFS_THREADSAFE .lock = fsDeviceLock, .unlock = fsDeviceUnlock, #endif // block device configuration .read_size = LFS_BUF_CACHE_SIZE, //LFS_BUF_CACHE_SIZE = 256 .prog_size = LFS_BUF_CACHE_SIZE, .block_size = 4096, .block_count = FS_MAX_SIZE/4096, .cache_size = LFS_BUF_CACHE_SIZE, .lookahead_size = LFS_BUF_CACHE_SIZE, .block_cycles = 100000, // Optional statically allocated read buffer. Must be cache_size. // By default lfs_malloc is used to allocate this buffer. .read_buffer = read_buffer, // Optional statically allocated program buffer. Must be cache_size. // By default lfs_malloc is used to allocate this buffer. .prog_buffer = prog_buffer, // Optional statically allocated lookahead buffer. Must be lookahead_size // and aligned to a 32-bit boundary. By default lfs_malloc is used to // allocate this buffer. .lookahead_buffer = lookahead_buffer }; ================================================= error 메시지 ========================================= fsInit() lfs 2.4 ../src/lib/littlefs/lfs.c:4951: trace: lfs_mount(0x2400d850, 0x2400002c {.contex =0, .read=0x90006bc9, .prog=0x90006c15, .erase=0x90006c61, .sync=0x90006ca1, .r ead_size=2415946941, .prog_size=2415946993, .block_size=256, .block_count=256, . lock_cycles=4096, .cache_size=1024, .lookahead_size=100000, .read_buffer=0x100, .prog_buffer=0x100, .lookahead_buffer=0x2400d8c8, .name_max=604035528, .file_ma =604035784, .attr_max=0})