Don't think! Just do it!

종합 IT 기술 정체성 카오스 블로그! 이... 이곳은 어디지?

전체 213

[nRF52840 + Zephyr] #13. Inter-task communication B

2023.06.03 - [임베디드 소프트웨어/Zephyr] - [nRF52840 + Zephyr] #11. Inter-task communication A [nRF52840 + Zephyr] #11. Inter-task communication A 제퍼의 경우에는 Inter-thread communication이 되겠구만! 지원되는 기능을 살펴보니.... 너무 많아;;;😢 👇👇 우린 너무 많은 거 안좋아 하니까 줄여보자구. 난 보통 다른 RTOS에서는 Flag와 Queue를 많이 engschool.tistory.com 이전에서 FIFO랑 Queue만 해봤는데 이번에는 Message Queue랑, Mail box를 해볼거야. 그럼 Message Queue부터 시작! Message Queue의 기본적인 동작..

[nRF52840 + Zephyr] #12. Synchronization

Synchronization에 대해서는 Semaphore와 Mutex, 이 두 개만 알면 끝! 😆😆😆😆 Semaphore부터 보자구. //런타임에서는 이렇게 struct k_sem my_sem; k_sem_init(&my_sem, 0, 1); //컴파일타임에서는 이렇게 K_SEM_DEFINE(my_sem, 0, 1);//가용 세마포어 1, 초기 가용 세마포어 0 //or K_SEM_DEFINE(my_sem, 1, 1);//가용 세마포어 1, 초기 가용 세마포어 1 👆 위처럼 선언하고 👇 아래처럼 사용하지. //Semaphore take k_sem_take(&my_sem, K_MSEC(50)) //Semaphore give k_sem_give(&my_sem); 약간 설명하자면 가용한 세마포어가 있으면 k..

[nRF52840 + Zephyr] #11. Inter-task communication A

제퍼의 경우에는 Inter-thread communication이 되겠구만! 지원되는 기능을 살펴보니.... 너무 많아;;;😢 👇👇 우린 너무 많은 거 안좋아 하니까 줄여보자구. 난 보통 다른 RTOS에서는 Flag와 Queue를 많이 사용했어. 그런데 제퍼에는 Flag가 없네? 진짜 없는 건가? ;;; 간편하게 사용하기 좋았는데 ㅠㅠ Queue는 당연히 있는데... FIFO가 Queue 아닌가?;; LIFO가 Stack이고? Pipe는 freertos에서 stream같고 ㅎㅎ 주절 주절 말이 많았는데 Stack은 잘 안쓰니까 우선 Queue부터 해보자구 👇👇 #include #include K_QUEUE_DEFINE(my_queue); typedef struct queueItem{ uint8_t ite..

[nRF52840 + Zephyr] #10. Time management

제퍼도 다른 os와 마찬가지로 여러가지 시간관련 기능을 제공하고 있어. 대표적인게 os timer야. 임베디드 프로젝트를 하다보면 타이머를 자주 사용하게 되는데. 타이머를 하드웨어로 돌리려면 하드웨어 사용 설정하고, 주기 설정하고, 인터럽트 작성해주고, 혹시나 동작이 길면 global flag 설정해주고 인터럽트 외주에서 나머지 동작을 처리해야 하지. ㅋㅋㅋ 🤪😜😝😅😢😣😖😞😤😳 데이터시트도 읽어야 하는 건 덤이고 말이야 ㅋ 아주 그냥 대환장 파티. 그에 비해 os timer는 사용 설정하고 쓰면 끝이야. 매우 간편! 👇👇 struct k_timer my_timer; extern void my_expiry_function(struct k_timer *timer_id); k_timer_init(&my_tim..

[nRF52840 + Zephyr] #9. Memory Management

제퍼에서 제공하는 Memory management 기능은 여러 가지가 있는데 k_malloc()과 k_free() 정도만 알면 될 것 같아. 사실 나머지는 어디서 어떻게 사용되는지 잘 모르겠거든 ㅋㅋ 누가 잘 아는 사람은 알려주고 ㅎ k_malloc()과 k_free()는 특별한 사용법이 없어. malloc, free랑 동일하거든. 다만 prj.conf 에서 CONFIG_HEAP_MEM_POOL_SIZE(힙 크기) 만 설정해주면 끝이야. 굳이 이상한 예제를 만들어보자면 👇👇 //prj.conf CONFIG_HEAP_MEM_POOL_SIZE=1024 //main.c void main(void) { for(;;){ k_sleep(K_MSEC(1000)); uint8_t* ptr = k_malloc(100);..

[nRF52840 + Zephyr] #8. Thread Management

제퍼에서 thread를 굳이 나누자면 System thread와 User thread로 나눌 수 있어. System thread는 main()을 호출하는 main thread와 idle thread 그리고 workqueue thread 정도가 될거고 User thread는 말 그대로 유저가 만드는 거겠지. Thread 뭐 별거 없어. 생성하고 종료하고 멈추고 재시작하고 이게 전부. 이왕 이면 예제를 통해 살펴보는게 좋겠지? #define MY_STACK_SIZE 500 #define MY_PRIORITY 5 extern void my_entry_point(void *, void *, void *); K_THREAD_STACK_DEFINE(my_stack_area, MY_STACK_SIZE); struct..

STM32CubeMX 와치독 디버그 옵션

그냥 이건 간단한 팁 같은건데 ㅎㅎ ST-LINK로 디버깅할 때 와치독이 Enable되어 있으면 Break point 걸릴 때 리셋이 되버리잖아. 엄청 짜증나지. 그래서 보통 와치독을 Disable하거나 주석처리하고 디버그를 했었어. 그래서 실수도 많이 하고 말이지. Debug configuration에서 이걸 해결해주는 옵션이 있더라고;;; 이거 체크해주면 와치독이 활성화된 상태에서도 break point를 걸면서 디버깅을 할 수가 있어 ㅋ 나만 몰랐나? ㅎㅎㅎ 해피 코딩~ 아디오스!

[nRF52840 + Zephyr] #7. RTOS 기본

RTOS 가 기본적으로 제공하는 기능들이 있어. 5가지 정도인데 아래를 보자구! 👇👇👇 1. Task(Thread) management 2. Memory management 3. Time management 4. Inter-task communication 5. Synchronization 모든 rtos가 비슷해. (제퍼도 마찬가지!) 그래서 난 새로운 rtos를 사용해야 할 때 항상 저 기준을 적용하고 있어. Thread management Thread 혹은 Task의 생성, 삭제, 정지, 재시작 등등의 기능을 말하는 거야. Delay로 많이 사용하는 sleep도 thread의 기능 중에 하나임. 제퍼에서도 k_thread_create, k_thread_suspend 와 같은 함수들이 있어. Memor..

[nRF52840 + Zephyr] #6. KConfig

Kconfig는 제퍼 소프트웨어 설정에 관련이 있어. gpio나 usb처럼 하드웨어 드라이버를 로드하기 위한 설정도 포함되지. 👇👇 CONFIG_GPIO=y CONFIG_UART=y ... 이런 식으로 하드웨어 사용 설정을 하는데 하드웨어 peripharal 종류만큼 있겠지? 자주 사용되는 것들은 외우면 좋을 듯 하고. 소프트웨어 설정 쪽을 살펴보면 두 가지 정도가 있을 거 같아. 1. 제퍼 os 시스템 소프트웨어 2. 그 외 서브 시스템 소프트웨어 등등 k_malloc, k_free를 위한 heap 사이즈 설정이나 logging 모듈 사용처럼 os과 밀접하게 관련이 있는 것들이 있고 👇👇👇 modbus 처럼 어플리케이션 종류에 따라 사용이 결정되는 subsystem software가 있지. 👇👇 CON..

콧속 물혹 비수술 완치기? (완치된 줄 착각! ㅋㅋㅋ)

엔지니어 블로그에서 왠 코 물혹이냐고? ㅋ 이건 널리 알려야 함 ㅋㅋㅋ 결론부터 말하자면 의사가 당장 수술해야 한다고 했던 콧속 물혹이 없어졌어!! ㅋㅋ 한 4년 전쯤 와이프가 내 코골이를 못참겠는지 코 관련 한의원을 데려갔어. 그날 침을 콧속에 엄청 맞았는데;;; 그 뒤로 갑자기 냄새가 안나는 거야. 그래서 4년동안 냄새없이 살았어 ㅋㅋㅋ 그러다가 점점 숨쉬는 게 힘들어져서 이비인후과를 갔더니 콧속에 물혹이 엄청 심각해서 당장 수술을 해야 한다고 하는거야 ㅠㅜ 걍 봐도 심해보이긴 하네;; 그런데 회복에 1주일 정도 걸리고, 비행기도 타면 안된다 해서 출장 때문에 미루고 있었어. - 광고 절대 아니다 - 그런데 그 사이에 와이즐리에서 홍삼이 엄청 싸길래 시켜 먹고 있었거든 ㅋㅋ 한 3개월 먹으니까 갑자기..

기타/주절주절 2023.05.19
반응형