- Tool:
- trace kernel: LXR
- Steps
- Environment setup
- source code
- architecture
- fetch: apt-get source linux-image-$(uname -r)
- sources.list -> 可能需要 uncomment /etc/apt/sources.list 中 deb-src 的 #, 並且做 apt-get update
- build
- 推薦書目:
- Linux Kernel in a nutshell
- Understanding the Linux Kernel
- Professional Kernel Architecture - 中譯本: 深入探索 Linux 核心架構
- Linux Kernel Development - 中譯本: 精通Linux核心開發 : 設計與實作Linux核心的權威指南
- Understanding Linux Network Internals - 中譯本: Linux 網路原理
- Linux Device Driver - 中譯本: Linux驅動程式
- Essential Linux Device Driver - 中譯本: Linux 驅動程式開發實戰
- Debugging Linux Systems
- Linux 鳥哥的私房菜
- Reference:
2017年7月15日 星期六
[Kernel] Portal
[Git] Portal
- What is Git?
- 分散式版本控制軟體
- 利用 40 bytes的 hash key當作每次 commit ID
- stages
- 每次皆儲存完整內容, not diff
- 名詞
- hash
- commit
- repository (remote, local)
- branch
- HEAD
- pointer to latest commit of current branch
- Q: reference, rebase, cherry-pick?
- parent -> 延伸至哪個 version
- 行為
- clone
- checkout
- commit
- 修改 commit:
git commit --amend
- push
- pull
- 從 remote 抓取各版 merge成新的 commit
- fetch
- 與 pull的差異是, 僅抓取 remote的 log, 不 merge
- merge
- fast forward (branch 合回 master, 且 master 未更改)
- non-fast forward, merge into a new commit
- rebase, branch的修改會串到 master 後面
- Merge (From 連猴子都懂的 Git 入門指南)
修改內容的歷史記錄會維持原狀,但是合併後的歷史紀錄會變得更複雜。 - Rebase
修改內容的歷史記錄會接在要合併的分支後面,合併後的歷史記錄會比較清楚簡單,但是,會比使用 merge 更容易發生衝突。 - e.g. git checkout br3
- git rebase master
- 在 master 後面再串上 br3
- stash
- blame
- 可以 line-by-line 秀出各 commiter
- 教學
- 設定
- .gitignore
- filemode
- 常看到 git diff 只差在 old mode 100644 與 new mode 100755
- 可以利用 git config core.filemode false 來隱藏這些錯誤
- workspace config, user config, global config
- 可搭配 Google 的 Tool repo 進階 checkout 多個 repository 對應的特定版號, 以 manifest做管理 (xml format), 或是 snapshot.xml 做管理
2017年7月1日 星期六
[Raspberry Pi] Portal
- What is Raspberry Pi?
- single-board computer
- Boards
- RPi 1 model B
- RPi 3 model B
- SoC: Broadcom BCM2837 (VideoCore API)
- CPU: Quad Core 1.2GHz 64bit
- GPU: Dual Core VideoCore IV® Multimedia Co-Processor; Open GL ES 2.0; hardware-accelerated OpenVG; 1080p60 H.264 high-profie decode
- WiFi: Broadcom BCM43438
- communication interface GPIO
- Serial Port
- RS232
- SPI (Serial Peripheral Interface)
- Model comparison
- Tutorial
- Software
- toolchain
- bootloader
- kernel/driver/rootfs
- image
- application
- Connection
- Reference
[Raspberry Pi] toolchain
- Compiler
- compile option
-Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s
[RPi] Raspberry Pi
- Software
- Boot process
- first stage bootloader
- 在 GPU SoC中, 無法修改, 會去 mount SD card 上的FAT32 filesystem
- second stage boot-loader (bootcode.bin) - only released by binary
- retrieve GPU firmware in SD card, and starts the GPU
- GPU firmware (start.elf) - only released by binary
- GPU starts up CPU
- additional fixup.dat will check SDRAM partition
- User codes
- any binaries, e.g. kernel image (kernel.img), U-Boot, bare-bone applications
訂閱:
文章 (Atom)