본문 바로가기

Firmware/RTOS

(20)
임베디드 OS 개발 프로젝트 18(뮤텍스) - 마지막 장 https://github.com/KJT9109/RTOS_Study 임베디드 OS 개발 프로젝트 진행하면서 TEST 한 소스는 위에 정리해 놓았다 . ├── boot │ ├── Entry.S │ ├── Handler.c │ ├── Main.c │ └── main.h ├── hal │ ├── HalInterrupt.h │ ├── HalTimer.h │ ├── HalUart.h │ └── rvpb │ ├── Interrupt.c │ ├── Interrupt.h │ ├── Regs.c │ ├── Timer.c │ ├── Timer.h │ ├── Uart.c │ └── Uart.h ├── include │ ├── ARMv7AR.h │ ├── memio.h │ ├── MemoryMap.h │ ├── stdarg...
임베디드 OS 개발 프로젝트 17(세마포어) . ├── boot │ ├── Entry.S │ ├── Handler.c │ ├── Main.c │ └── main.h ├── hal │ ├── HalInterrupt.h │ ├── HalTimer.h │ ├── HalUart.h │ └── rvpb │ ├── Interrupt.c │ ├── Interrupt.h │ ├── Regs.c │ ├── Timer.c │ ├── Timer.h │ ├── Uart.c │ └── Uart.h ├── include │ ├── ARMv7AR.h │ ├── memio.h │ ├── MemoryMap.h │ ├── stdarg.h │ ├── stdbool.h │ └── stdint.h ├── kernel │ ├── event.c │ ├── event.h │ ├── Kern..
임베디드 OS 개발 프로젝트 16(메시징-2) http://www.yes24.com/Product/Goods/84909414 TREE 생략 이전에 이어서 메시징 테스트를 위해 작성한Task#0 알고리즘이다. Task#0 FlowChart User_Task#0 void User_task0(void) { uint8_t cmdBuf[16]; uint8_t recvBuf[16]; uint8_t recv_length = 0; uint8_t recv_index = 0; uint8_t fail_index = 0; while(true) { debug_printf("User Task #0\n"); KernelEventFlag_t handle_event = Kernel_wait_events(KernelEventFlag_UartIn); switch(handle_even..
임베디드 OS 개발 프로젝트 15(메시징) http://www.yes24.com/Product/Goods/84909414. ├── boot │ ├── Entry.S │ ├── Handler.c │ ├── Main.c │ └── main.h ├── hal │ ├── HalInterrupt.h │ ├── HalTimer.h │ ├── HalUart.h │ └── rvpb │ ├── Interrupt.c │ ├── Interrupt.h │ ├── Regs.c │ ├── Timer.c │ ├── Timer.h │ ├── Uart.c │ └── Uart.h ├── include │ ├── ARMv7AR.h │ ├── memio.h │ ├── MemoryMap.h │ ├── stdarg.h │ ├── stdbool.h │ └── stdint.h ├── ke..
임베디드 OS 개발 프로젝트 14(Event 처리) http://www.yes24.com/Product/Goods/84909414 . ├── boot │ ├── Entry.S │ ├── Handler.c │ ├── Main.c │ └── main.h ├── hal │ ├── HalInterrupt.h │ ├── HalTimer.h │ ├── HalUart.h │ └── rvpb │ ├── Interrupt.c │ ├── Interrupt.h │ ├── Regs.c │ ├── Timer.c │ ├── Timer.h │ ├── Uart.c │ └── Uart.h ├── include │ ├── ARMv7AR.h │ ├── memio.h │ ├── MemoryMap.h │ ├── stdarg.h │ ├── stdbool.h │ └── stdint.h ├── k..
임베디드 OS 개발 프로젝트 13(Context Switching - Priority) tree 생략 책에서 10장까지 Round Robin Algorithm으로 구현했고 Priority algorithm 은 단순 소개로 넘어갔지만 개인적으로 한번 구현 해 보았다. KernelTcb_t 구조체 typedef struct KernelTcb_t { uint32_t sp; uint8_t* stack_base; uint32_t priority; uint32_t TaskId; }KernelTcb_t; 우선순위 스케줄러 알고리즘을 구현 할 거기에 priority 와 TaskId를 추가한다. Task Create 함수에 parameter로 priority를 받는다. TaskId는 스케줄러 알고리즘을 통해 우선순위가 가장 높은 Task를 호출 하기 위해 사용한다. (Priority 는 숫자가 가낭 낮을수..
임베디드 OS 개발 프로젝트 12(Context Switching - 2) . ├── boot │ ├── Entry.S │ ├── Handler.c │ └── Main.c ├── hal │ ├── HalInterrupt.h │ ├── HalTimer.h │ ├── HalUart.h │ └── rvpb │ ├── Interrupt.c │ ├── Interrupt.h │ ├── Regs.c │ ├── Timer.c │ ├── Timer.h │ ├── Uart.c │ └── Uart.h ├── include │ ├── ARMv7AR.h │ ├── memio.h │ ├── MemoryMap.h │ ├── stdarg.h │ └── stdint.h ├── kernel │ ├── Kernel.c │ ├── Kernel.h │ ├── task.c │ └── task.h ├── lib │ ├..
임베디드 OS 개발 프로젝트 11(Context Switching - 1) . ├── boot │ ├── Entry.S │ ├── Handler.c │ └── Main.c ├── hal │ ├── HalInterrupt.h │ ├── HalTimer.h │ ├── HalUart.h │ └── rvpb │ ├── Interrupt.c │ ├── Interrupt.h │ ├── Regs.c │ ├── Timer.c │ ├── Timer.h │ ├── Uart.c │ └── Uart.h ├── include │ ├── ARMv7AR.h │ ├── memio.h │ ├── MemoryMap.h │ ├── stdarg.h │ └── stdint.h ├── kernel │ ├── task.c │ └── task.h ├── lib │ ├── armcpu.c │ ├── armcpu.h │ ├..