Try   HackMD

通訊軟體與驅動程式設計

內容

  1. Linux OS 概論
  2. Network Programming
  3. Linux Kernel Module Programming

評分
2,3 位同學一組 作業+期末口試

大三以上同學

軟體穩定是最基本的要求: 請看
軟體缺失導致的危害, 請看 波音 787 自動關機, 還有 race condition, 缺乏妥善同步機制引發美國大面積停電

我自己的經驗是 GPS 給的資料是錯的, 這就是 容錯的例子, 還有 認識的朋友 RAID 壞的是 控制卡 不是 硬碟…還好 有 off-line 備份 還能 救回一些 資料 除了 off-line 備援 還需 異地 備援~怕 不可抗拒 的意外(火災 地震…)

這兩個錯誤 都是 基礎觀念 (也是習慣不好)沒建立好而造成~寫軟體只是 交 作業的心態

Mathematics (calculus, linear algebra, probability, statistics), DSP, Data Structure, Algorithm, Micro-processor and OS 是內功心法
network programming, embedded system 是戰鬥工法
要有內功 才會有好的自學能力與進步

先修課程

計算機概論 尤其 c 語言能力
微處理機
資料結構 如doubly linked list
修過 作業系統尤佳
網路 TCP/IP 知識 (至少 rfc1180: A TCP/IP Tutorial), ethernet, PPP, PPPoE, Routing (iproute2), …

Data Structure Visualizations

自學部分
計概+ c language: ANSI C for Programmers on UNIX Systems, Tim Love (含 習題, makefile 一定要會) 紮實的c語言, 因為本課程 有 linux kernel module 實作.
如果 c language 不行 又沒 自學, 勸您 別修這門課

練習 看 man page 重要的 return value, data type (最好用 man page 裡的型態), errors, thread-safity …
OS: Design of the UNIX Operating System, Maurice J. Bach, MMU, virtual memory, scheduling, file system, system calls,…

自己練習 Linux 使用 (用VirtualBox)****

請用xterm 練習

Linux commands: vim, nano, wget, sudo, cd, ls, cp, cat, more, find, ln, grep, ps, chmod, chown, tar, mkdir, rm, rmdir, df, du, kill, echo, ping, strace, top, man, strip

route, ifconfig, arp, pstree, touch, netstat, ldd, pstree, objdump, gunzip, gzip, bzip2, dmesg, pwd, which, iptables, brctl, iproute2: ip commands (ip route, ip addr, …), mount, umount, adduser, gcc, traceroute, uname, lsof, …

Wireshark, MobaXterm, VirtualBox, QEMU, …

VirtualBox: Create Ubuntu 16.04.7 (最好有40G, two NICs (NAT Mode and Bridged Mode))

win32 editor: 個人覺得 Komodo Edit 不錯

雖然 vim 沒 nano 好用, 但實務上 可能只有 vim 能用~
iproute2 很多取代 ifconfig 與 route

Linux 使用 (請自學, 例如 https://blog.gtwang.org/linux/linux-io-input-output-redirection-operators/ , https://linux.vbird.org/linux_basic/centos7/)

課程內容:
Linux Network Programming

Embedded (Linux) System Design