分享到plurk 分享到twitter 分享到facebook

版本 a72209d02b1b7bb9ed3fe7380a897591c74c5da5

Lab5: RTOS modifications

預期目標

  • 搭配第五周</embedded/2012w4>_課程進度

預先準備

  • 取得最新 Labs 內容 (與之前 Lab3</embedded/Lab3>_ 操作相似):

.. code-block:: prettyprint

git clone git://gitcafe.com/embedded2012/Labs.git
cd Labs/Lab-5

Code Coverage

  • GNU code coverage tool gcov<http://gcc.gnu.org/onlinedocs/gcc/Gcov.html>_ is generally used to dump the coverage data when the program exits
    • for some embedded systems or for server processes you need a means to dump coverage data of particular situations, i.e. when a client connects.
  • Code quality analysis for embedded systems
    • Memory management with Valgrind
    • Code coverage testing with Gcov
  • Code Quality Analysis Toolset for Embedded Systems<http://www.eclipsecon.org/2008/sub/attachments/Code_Quality_Analysis_Toolset_for_Embedded_Systems.pdf>_
  • Using gcov and lcov<http://www.slideshare.net/maguschen/using-gcov-and-lcov>_
  • 新酷音輸入法系統的核心函式庫 (libchewing) 分析
    • http://kanru.info/chewing/lcov-check

執行時期輸出 gcov 資料

  • Dumping gcov data at runtime - a simple example<https://www.osadl.org/fileadmin/dam/interface/docbook/howtos/coverage.pdf>_
  • Instructions for invoking gcov

.. code-block:: prettyprint

make make run gcov hello

  • Reference output

.. code-block:: prettyprint

File ’hello.c’ Lines executed:100.00% of 15 hello.c:creating ’hello.c.gcov’

  • Analyze gcov output

.. code-block:: prettyprint

tail hello.c.gcov
  • Reference output

.. code-block:: prettyprint

1:
34: new_action.sa_flags = 0;
-:
35:
1:
36: sigaction(SIGUSR1, NULL, &old_action);
1:
37: if (old_action.sa_handler != SIG_IGN)
1:
38:
sigaction (SIGUSR1, &new_action, NULL);
-:
39:
-:
40: /* infinite loop - to exemplify dumping coverage data while program runs */
186275468151:
41: for(n = 0; ; n++)
372550936302:
42:
i++;
-:
43:}

作業

  • Lab-5/filesys
  • 整合檔案系統到 FreeRTOS 中,並在 UART 顯示檔案系統中 test.txt 的內容
  • 提示:
    • 會需要修改到 linker script 以及 SRAM 的配置
    • 會需要補充基本的標準 C 函式,讓系統得以運作