1 / 53

A survey of uC/OS & lwIP

A survey of uC/OS & lwIP. 蔡嘉泰 tai@cis.nctu.edu.tw. MicroC/OS II. Features. Source Code Open Source ,程式碼簡潔易懂 Portable 程式碼大部分皆是利用 ANSI C 所開發的 與 microprocessor 行為有關的則利用組合語言來完成,使得 uC/OS-II 能夠輕易的移植到其他 Processor uC/OS-II 可以在 8/16/32 bits 的 microprocessor 上或是 micro-controller 上運作. Features.

mingan
Télécharger la présentation

A survey of uC/OS & lwIP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A survey of uC/OS & lwIP 蔡嘉泰 tai@cis.nctu.edu.tw

  2. MicroC/OS II NETLAB

  3. Features • Source Code • Open Source,程式碼簡潔易懂 • Portable • 程式碼大部分皆是利用ANSI C所開發的 • 與microprocessor行為有關的則利用組合語言來完成,使得uC/OS-II能夠輕易的移植到其他Processor • uC/OS-II可以在8/16/32 bits的microprocessor上或是micro-controller上運作 NETLAB

  4. Features • ROMable • 只要有適當的工具(C compiler, assembler and linker/locator)就可將uC/OS-II嵌入成為產品一部分 • Scalable • 可以很簡單的選用程式/產品所需要的特性 • 也就是說可以依照自己的需求減少程式的大小,以便可以放入ROM/RAM中 NETLAB

  5. LOW Priority Task ISR (1) (2) HIGH Priority Task (4) (3) Time ISR makes the high priority task ready (5) (6) (7) Features • Preemptive • uC/OS-II 永遠會讓已經Ready且優先權最高的工作行程先執行 NETLAB

  6. TASK WAITING TASK DORMANT TASK READY TASK RUNNING ISR RUNNING Features NETLAB

  7. Features • Multi-tasking • uC/OS-II最多可支援64個task,其中會為系統保留8個task使用 • 每一個task都有一個唯一的priority,也就是說uC/OS-II無法實現Round Robin排程 NETLAB

  8. TASK #n Stack TASK #1 Stack TASK #2 Stack …… Task Control Block Task Control Block Task Control Block Status Status Status SP SP SP Priority Priority Priority . . . . . . . . . MEMORY CPU SP . . . Features NETLAB

  9. Features • Deterministic • 在uC/OS-II內的各項服務所需要的執行時間都是可明確預先得知的 • Task Stacks • uC/OS-II允許每一個task擁有不一樣的stack size • 根據需要增減task的stack size減少RAM的使用 NETLAB

  10. Features • Services • Mailbox, Queues, Semaphores, Fixed-sized memory partitions, Time related function, etc. • Interrupt Management • Interrupts can suspend the execution of a task • 256 levels • Robust and Reliable NETLAB

  11. uC/OS-II移植分析 • 只要有相對應的C Compiler,即可將uC/OS-II移植到特定的處理器上 • 大部分移植工作都在多任務的切換上 • 用來儲存以及恢復register的值 • 利用組合語言完成 • 需修改的檔案 • OS_CPU.H, OS_CPU_C.C, OS_CPU_A.S NETLAB

  12. OS_CPU.H • 定義DATA TYPE • 與所使用的Compiler相關 • 不同的Compiler會使用不一樣的byte來表示同一DATA TYPE • X86平台, Integer: • GNU (gcc): 4 bytes • MicroSoft (VC++): 2 bytes NETLAB

  13. OS_CPU.H • Stack Entry • 定義TASK的Stack長度,必須要和CPU的Register的長度一致 • 堆疊增長方向 • 定義Stack grows from HIGH to LOW or Low to HIGH Memory NETLAB

  14. OS_CPU.H NETLAB

  15. OS_CPU.H • 中斷、Content Switch NETLAB

  16. HIGH AX CX DX BX SP BP SI DI ES DS LOW OS_CPU_C.C • Initialize a Task‘s STACK • 在堆疊增長的方向上定每一個需要保存的Register位址 NETLAB

  17. OS_CPU_C.C NETLAB

  18. OS_CPU_A.S • OSStartHighRdy( ) • 在OSStart()啟動之後,負責從最高優先權任務的TCB Control Block中獲得該任務的Stack Point (SP) • OSCtxSw( ) • 將前一task的register保存到堆疊中,獲得最高優先權task的SP,將此task的register恢復,使之繼續執行 • OSIntCtxSw( ) • 中斷級的Content Switch NETLAB

  19. Handbook NETLAB

  20. Hardware Abstraction Layer (HAL) • Real-time kernel • Interrupt handling • Exception handling • Choice of schedulers • Thread support • Rich set of synchronization primitives • Timers, counters and alarms • Choice of memory allocators • Debug and instrumentation support • μITRON 3.0 compatible API • POSIX compatible API • ISO C and math libraries • Serial, ethernet, wallclock and watchdog device drivers • USB slave support • TCP/IP networking stacks • GDB debug support NETLAB

  21. light weight IP (lwIP) NETLAB

  22. lwIP簡介 • lwIP一套可用於embedded system的TCP/IP protocol • lwIP可以移植到各OS上,在沒有OS情形下也可以獨立運作 • lwIP主要是為了保持TCP Protocol的主要功能並減少對RAM的使用 • 只需要幾十K的RAM和約40K的ROM就可以運作,使得lwIP很適合在嵌入式系統中運作 NETLAB

  23. Upper Layer Protocol (ULP) lwIP (TCP/IP Protocol) uC-OS II 嵌入式系統開發板 lwIP簡介 NETLAB

  24. lwIP特性 • IP including packet forwarding over multiple network interfaces • ICMP for network maintenance and debugging • UDP for datagram data • TCP with congestion control, RTT estimation and fast recovery/fast retransmit • Specialized no-copy API for enhanced performance • Optional Berkeley socket API NETLAB

  25. lwIP特性 • lwIP將所有與硬體、OS、Compiler相關的部分獨立出來放置在/src/arch下 • 修改這一些相關檔案將lwIP移植到uC/OS-II上 NETLAB

  26. Protocol Stack Application/ Management model RTP, RTCP UDP IP MAC Physical NETLAB

  27. TCP/IP與行程間的溝通 NETLAB

  28. SOCKET API bindlisten connect acceptrecvsendwriteclose lwip_APIlwip_bindlwip_listen lwip_connect lwip_acceptlwip_recvlwip_sendlwip_writelwip_close netconn_APInetconn_bindnetconn_listen netconn_connect netconn_acceptnetconn_recvnetconn_sendnetconn_writenetconn_close NETLAB

  29. driver tcpip_thread recv_buf_data api_msg_input ethernetif_input do_bind … low_level_inpit ip_input tcp_input tcp_process TASK 1 TASK 2 TASK 3 application socket API lwip_bind … netconn_bind … NETLAB

  30. Single Application TASK 1(application 1) TASK 2(data input) mbox recvmbox acceptmbox TASK 3(tcpip_thread) NETLAB

  31. Multi Application TASK 1(application 1) recvmbox acceptmbox TASK 2(data input) mbox TASK N(application N) recvmbox acceptmbox TASK 3(tcpip_thread) NETLAB

  32. API types • TYPE 1 • BIND, LISTEN, CLOSE • TYPE 2 • CONNECT • TYPE 3 • SEND. WRITE • TYPE 4 • ACCEPT, RECV NETLAB

  33. TYPE 1 • msg->type • API_MSG_BIND • API_MSG_LISTEN TASK 1 TASK 2 1 2 mbox 4 3 NETLAB

  34. api_msg_post sys_mbox_fetch sys_mbox_fetch sys_mbox_post netconn_bind netconn_bind API_MSG_BIND do_bind mbox tcp_bind NETLAB

  35. api_msg_post sys_mbox_fetch sys_mbox_fetch sys_mbox_post netconn_listen netconn_listen API_MSG_LISTEN do_listen mbox pcb->accpet = accept_function NETLAB

  36. api_msg_post sys_mbox_fetch sys_mbox_fetch sys_mbox_post netconn_close netconn_close API_MSG_CLOSE do_close mbox tcp_close NETLAB

  37. TYPE 2 TASK 2 • msg->type • API_MSG_CONNECT 2 TASK 1 1 mbox 4 3 TASK 3 NETLAB

  38. sys_mbox_fetch api_msg_post sys_mbox_fetch sys_mbox_post netconn_connect do_connect pcb->connected = do_connectedpcb->state = SYN_SENTtcp_enqueue()tcp_output() netconn_connect mbox tcp_input() , tcp_process()switch case: SYNSENTpcb->connected do_connected NETLAB

  39. TYPE 3 • msg->type • API_MSG_SEND • API_MSG_WRITE TASK 1 TASK 2 1 2 mbox 4 3 udp_outputortcp_write NETLAB

  40. api_msg_post sys_mbox_fetch sys_mbox_fetch sys_mbox_post netconn_send netconn_send API_MSG_SEND do_send mbox udp_output NETLAB

  41. api_msg_post sys_mbox_fetch sys_mbox_fetch sys_mbox_post netconn_write netconn_write API_MSG_WRITE do_write mbox tcp_enqueuetcp_output NETLAB

  42. TYPE 4 TASK 1 TASK 3 2 1 acceptmbox orrecvmbox • msg->type • API_MSG_RECV 3 4 TASK 2 mbox 6 5 NETLAB

  43. sys_mbox_fetch sys_mbox_post netconn_accept in tcp_processpcb->accept netconn_accept accept_function acceptmbox NETLAB

  44. api_msg_post sys_mbox_fetch netconn_recv in tcp_input()pcb->recv netconn_recv recv_tcp sys_mbox_fetch sys_mbox_post recvmbox API_MSG_RECV do_recv sys_mbox_fetch mbox sys_mbox_post Let the stack know that we have taken the data NETLAB

  45. Server netconn_new netconn_bind mbox do_bind netconn_listen mbox do_listen netconn_accept acceptmbox accept_function recvmbox recv_tcp netconn_recv do_recv mbox netconn_write mbox do_write netconn_close mbox do_close TASK 1 TASK 2 TASK 3 NETLAB

  46. Client netconn_new netconn_bind mbox do_bind do_connect netconn_connect mbox do_connected recvmbox recv_tcp netconn_recv do_recv mbox netconn_write mbox do_write netconn_close mbox do_close TASK 1 TASK 2 TASK 3 NETLAB

  47. An Implementation of RDMA Student: Chia-Tai Tsai Adviser: Prof. Rong-Hong Jan

  48. Introduction 1/3 • Network bandwidth bottlenecks • Network hardware • Network Protocol Performance • End station performance • CPU • The I/O bottlenecks • Interrupts • TCP/IP checksum • Copies NETLAB

  49. DMA NETLAB

  50. RDMA NETLAB

More Related