# 有意修習 (或未來)embedded system (課名: 研究所 高等作業系統) 課的同學
<style>
.blue {
color: blue;
}
.bgblue {
color: blue;
font-size: 24px;
}
.small-red {
color: red;
font-size: 16px;
}
.red {
color: red;
font-size: 24px;
}
h1 {text-align: center;}
</style>
Author: WhoAmI
email: kccddb@gmail.com
Date: 20230312
Copyright: CC BY-NC-SA

Dennis MacAlistair Ritchie~dmr
C語言的創造者、Unix作業系統的關鍵開發者, 圖靈獎(ACM A.M. Turing Award) 得主
https://hackmd.io/@pingulinux/prerequisite
**軟體穩定是最基本的要求**: 請看
[軟體缺失導致的危害, 請看 波音 787 自動關機, 還有 race condition, 缺乏妥善同步機制引發美國大面積停電](https://hackmd.io/@sysprog/software-failure)
**我自己的經驗是 GPS 給的資料是錯的, 這就是 容錯的例子, 還有 認識的朋友 RAID 壞的是 控制卡 不是 硬碟...還好 有 off-line 備份 還能 救回一些 資料** 除了 off-line 備援 還需 **異地 備援**~怕 不可抗拒 的意外(火災 地震...)
這兩個錯誤 都是 基礎觀念 (也是習慣不好)沒建立好而造成~<span class="small-red">寫軟體只是 交 作業的心態</span>
1. 計概+ c language:[ ANSI C for Programmers on UNIX Systems, Tim Love (含 習題, makefile 一定要會)](https://www.cs.utexas.edu/~dahlin/Classes/UGOS/reading/loveC.pdf) 紮實的計算機概論, 因為本課程 有 linux kernel module 實作.
如果 c language 不行 又沒 自學, 勸您 別修這門課, 您我都很痛苦~我的 痛苦 就是 **當掉 學生**
3. **微處理機**(基礎 組合語言實務 是學習上必須的過程, 最後 實務上還是大都用 c language), 此外 練習 看 8051 datasheet. 日後業界上班 寫 Linux device driver 會有需求. [External Memory Interfacing in 8051 Microcontroller](https://www.geeksforgeeks.org/external-memory-interfacing-in-8051-microcontroller/), [ The 8051 Simulator for Teachers and Students](https://www.edsim51.com/)
4. [**練習 看 man page**](https://blog.gtwang.or](https://)g/linux/linux-man-page-command-examples/) 重要的 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,...(https://github.com/jyfc/ebook/blob/master/03_operating_system/the_design_of_the_unix_operating_system.pdf?fbclid=IwAR0MJPjYEL9CGizi93SUlzpM7M3oCqnB5fxlJwhMoUCx3Q1GTwCs1rwSamg)
7. 網路 TCP/IP 知識 (至少 r[fc1180: A TCP/IP Tutorial](https://www.rfc-editor.org/rfc/rfc1180)), ethernet, PPP, PPPoE, Routing (iproute2), ...
8. **Linux 使用 (請自學, 例如** https://blog.gtwang.org/linux/linux-io-input-output-redirection-operators/ , https://linux.vbird.org/linux_basic/centos7/)
9. [Embedded (Linux) System Design, 有建議 Linux 版本+VirtualBox+QEMU](https://https://hackmd.io/@pingulinux/embedded)
10. 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**
11. 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, ...
10. 資料結構與演算法 (至少 基本的 doubly linked list, binary tree)
11. OOP 觀念, https://hackmd.io/@pingulinux/c-oop
12. Wireshark, MobaXterm, VirtualBox,...
13. win32 editor: 個人覺得 Komodo Edit 不錯
雖然 vim 沒 nano 好用, 但實務上 可能只有 vim 能用~
**iproute2** 很多取代 ifconfig 與 route
[Linux 匹配文字 grep 指令用法教學與範例](https://blog.gtwang.org/linux/linux-grep-command-tutorial-examples/)
[Linux I/O 輸入與輸出重新導向,基礎概念教學](https://blog.gtwang.org/linux/linux-io-input-output-redirection-operators/#:~:text=I%2FO%20%E7%9A%84%E9%87%8D%E6%96%B0%E5%B0%8E%E5%90%91%E6%98%AF%20Linux,%E7%B3%BB%E7%B5%B1%E4%B8%AD%E5%BE%88%E9%87%8D%E8%A6%81%E7%9A%84%E4%B8%80%E5%80%8B%E7%89%B9%E6%80%A7%EF%BC%8C%E5%AE%83%E5%8F%AF%E4%BB%A5%E8%AE%93%E6%88%91%E5%80%91%E4%BB%BB%E6%84%8F%E4%B8%B2%E6%8E%A5%E5%90%84%E7%A8%AE%E7%A8%8B%E5%BC%8F%E7%9A%84%E8%BC%B8%E5%85%A5%E8%88%87%E8%BC%B8%E5%87%BA%E3%80%81%E5%B0%87%E8%B3%87%E6%96%99%E5%B0%8E%E5%85%A5%E6%AA%94%E6%A1%88%E6%88%96%E5%BE%9E%E6%AA%94%E6%A1%88%E4%B8%AD%E5%B0%8E%E5%87%BA%E8%B3%87%E6%96%99%EF%BC%8C%E7%B5%90%E5%90%88%E5%A4%9A%E7%A8%AE%20Linux%20%E6%8C%87%E4%BB%A4%EF%BC%8C%E7%B5%84%E6%88%90%E4%BB%BB%E6%84%8F%E7%9A%84%E3%80%8C%E6%8C%87%E4%BB%A4%E7%AE%A1%E7%B7%9A%E3%80%8D%EF%BC%88command%20pipeline%EF%BC%89%E3%80%82)
---
**為何大都英文資料 資電的英文不難 要養成習慣, 應沒有 datasheet 是中文的**
[課程內容 (如有 硬體設備 例如 Raspberry Pi 更好, 但不要求有](https://hackmd.io/@pingulinux/embedded)
[網路程式設計](https://hackmd.io/@pingulinux/Linux-Network-Programming)
[山不在高 有仙則名](https://hackmd.io/@pingulinux/books)