Computer System Laboratory

- 2017 Fall, CSIE 3311, 二789, 德田202

- 薛智文,


  • 具有資訊、數學、及科學知識之能力
  • 具有資訊理論、硬體、軟體、與應用之專業知識
  • 能使用軟體工具或元件解決問題
  • 能分析、設計、實作、整合、測試、與評估資訊系統
  • 具備良好溝通與團隊合作之能力
  • 參與研究計畫並具備報告撰寫及科技簡報之能力



  • 0912: Lectures begin. Please group here.
  • 0121: The grade is here.

LAB Reports


  • No need to copy these questions to your report.
  • Lab1
    1. Why do we need a bootloader? What your RPi bootloader in Lab1 does not do?
  • Lab2
    1. U-Boot has many persistent environment variables. The variable “bootdelay” is one of the most important. Show in the report that you can set it to be longer than the original one. What happens when it is set to 0? You don't need to test the latter question on your RPi.
    2. Consider the following senario: You are developing a bootloader and an OS kernel, both of which run on x86-64. You want to do this work on a x86-64 Linux, that is, you write C and assembly code and compile them on a x86-64 Linux. If you use the native GCC provided by the x86-64 Linux to compile your code, what trouble will you get?
  • Lab3
    1. Try to figure out how a RTOS (Real-Time Operating System) can be useful for such kind of computing system in this lab
  • Lab4
    1. The question in Lab requirement: how can you make the resolution of ucos timing higher? Please point out what you've done to the source code of ucos to achieve this and give it an explanation.
    2. Are you able to simulate a timer/alarm based on the knowledge gained from this lab? If so, please explain your method. On the other hand, please give it a survey on how ucos-II/III achieve this (using interrupt and the Timer Task).
  • Lab5
    1. Why don't we need to modify the 'config.txt' to tell the firmware which image to be loaded in this lab?
  • Lab6
    1. Explain how the function loop() is called in exercise 2. You may refer to the link in the reference page.
    2. How do you transfer the program files to Raspberry Pi? Is there any inconvenience?
  • Lab7
    1. In many Linux implementation, including our case, every user process shares the same virtual address space with the kernel. In other words, every user process can see the kernel in higher address, and the kernel can see the current user process in lower address. The kernel surely has enough execution privlege to access all user processes directly (you may verify it by replacing the copy_to_user() in your kernel module with direct access). Why do we still use copy_to_user() and copy_from_user() to transfer data between the kernel and user processes?


Reports will be posted in few days after each deadline.

Turn in a report by lab leader (no more than 2 pages) in the second day of the lab including:

  • The problems you encountered and how you fixed them in the lab.
  • Your comments or any other questions from the lab.
  • The answer of the corresponding lab question above.
  • Everyone needs to be a lab leader at least once.

FTP Information
Host:, Port: 21, Username: csl2017, Password: csl2017HomeWork
Please use pdf format with specific filename: “G#.lab#.ver#.pdf”, where G# is your group id and ver# is version number for lab#.
E.g., G1.2.3.pdf means report of group 1 lab 2 version 3.


* Raw scores

Grading (subject to change):

Scoring           I     II
● Proposal       0%     5% by groups of 1-2 teams.
● Presentation   0%     5% by groups.
● LAB   (7x3+5x10)% (7x3)% by teams and weighted by team leader on completeness (LAB1-7) 
                           and by groups on earlier finish time(LAB 8-12), 
                           2 students as a team share one set of equipment.  
● LAB Report (7x2)% (7x2)% by teams and weighted by team leader biweekly.
● Project        0%    20% by groups.
● Project Report 0%    20% by groups.
● Participation 15%    15% by students, including the attendance and lab discussion.
II is by approval of groups with big enough projects, those who choose this only need to finish the first 7 labs.

Term Project

One in the following topics by groups.
* Embedded Systems
  * uCOSII/III on RPie (porting)
  * quadcopter (flight control)
  * myRobot (house cleaning, ladder climber, segway, ...)
  * PID car control (speed racing)
  * 6-axis Robot Arm (hand mimics)
  * ...
* Sensor Network
* Virtualization
* eSystem
* WeOS
* ...




    • office hour: location: R408
    • e-mail:
    • office hour: location: R408
    • e-mail:
courses/106_1/csl.txt · 上一次變更: 2018/01/21 08:21 由 cwhsueh
CC Attribution-Noncommercial-Share Alike 3.0 Unported Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0