Category: kernel

  • Linux procfs example (4.x 可用的)

    網路上很多有關 Linux kernel 的 snippet 或是 tutorial 其實都已經過期很久了… 例如說今天想要找 procfs 的範例: Documents/Kernel-Docbooks Linux Kernel Procfs Guide http://www2.mta.ac.il/~carmi/Teaching/OSLinux/Slides/Lec08/procfs-1.c http://www.ittc.ku.edu/kusp/new/howto/kmods/setup.html …etc 以上都是過期的範例,大約是在 kernel 2.6 時候的 code. 目前 (2016/08/24) 的 kernel version 已經來到 4.8.0-rc3,而 create_proc_entry() 是在 3.10 版的時候被拋棄掉的。但是很多的 example 都還留在 2.6 的時代,連目前市面上的書也是如此,像是 LDD3,LKD等,在版本上都已經過期許久。 目前有找到的新的 procfs 範例有這些: http://www.cs.fsu.edu/~cop4610t/lectures/project2/procfs_module/proc_module.pdf http://www.lifl.fr/~lipari/courses/ase_lkp/ase_lkp.html https://chengyihe.wordpress.com/2015/11/03/android-kernel-procfs-seq_file-the-simplest-way-to-export-to-user-space/ 在 kernel newbies mailing list 的這串討論串也可以看看, 裏面有提到比較新的 kernel develop 的教材。…

  • [COSCUP 2016] Day2 Lightning Talk: 三分鐘送 first kernel patch

    今天的 ‪#‎COSCUP2016‬ ‪#‎LightningTalk‬ 講的是「三分鐘送 first kernel patch」,本來是在 OOP in C 跟 patch 想要用哪個,後來想說這個標題比較竦動就用這個了。 本方法只是讓新手(如我)有個進門的機會,了解 Linux kernel patching 的機制與方法。 這也是為什麼在 kernel staging tree 的這些 driver 沒有用 automation 的方式把錯誤都處理乾淨。  最後誠徵加入翻譯,目前正在翻譯 Object-oriented design patterns in the kernel, part 1/part 2,歡迎一起翻譯! 三分鐘送 first kernel patch (for 新手) from Louie Lu

  • 2016-08-01 翻譯 kernel OODP part2

    2016-08-01 今天在做啥 Freja Beha Erichsen, by Christopher Peterson 翻譯 今天持續在 hackmd.io 上翻譯 Object-oriented design patterns in the kernel, part 2  成中文版。透過這篇文章,讓我一步一步去了解 kernel 中的物件導向狀況以及各種實作與歷史,不得不說作者功力非常了得。 翻譯的同時,有用到這些資源,像是: C99 spec, 為了翻譯去看 C99 spec 也是很正常的事情吧? LXR,the linux cross referencer,用來看某個版本的 code 的工具 POSIX Thread 透過 llnl.gov 給的 pthread tutorial 了解 pthread 的實作,從建立 pthread 到 mutex, condition variables 等,這個網站的好處是他有附上練習,透過練習可以更進一步的去觀察 pthread 的機制怎麼運作,pthread 的另外一個介紹可看這個 Multithreaded Programming (POSIX pthreads…

  • 2016-07-30 繼續翻譯 OO design pattern in kernel,收到 stm32f4!

    今天持續翻譯 LWN 的 Object-oriented design patterns in the kernel, part 1,因為裏面提到的例子跟 filesystem 非常有關,就拿起 Linux Kernel Development 3e 出來翻了。然後在物件導向的地方參看了 jserv 的影片 https://www.youtube.com/watch?v=IG6q8WX0sK4,比較理解 C 的物件導向的概念是如何實現的,連帶比較搞懂整篇文章例子與架構在做什麼了。 然後早上收到 jserv 寄來的開發板三塊!分別是 stm32f4-discovery、respberry pi 3 ver.b、linkit 7688,把玩了一下 stm32f4-discovery,在過程中遇到這個問題: 2016-07-30T16:15:44 WARN src/usb.c: Couldn’t find any ST-Link/V2 devices我的背景是 archlinux,用 lsusb 明明就有看到出現在裏面,卻沒有辦法找到 devices,照著前人的 note 重新編譯 st-link 跟 openocd 還是遇到相同的問題。最後在 google 搜尋了一下後,發現是沒有用 sudo 來執行,導致 st-util 無法找到 devices…,這在前人的 note…

  • mini-arm-os 00-HelloWorld

    00-HelloWord ├── hello.c ├── hello.ld ├── Makefile ├── reg.h └── startup.c 這個 helloworld 要做到從 USART2 輸出 “Hello World!” reg.h 定義了各個 register 的 memory address, stm32的 memory map 參考這邊[1] 這個部份需要以下3個的 memory address Reset and Clock Control RCC 0x4002 1000 RCC_APB2ENR   (APB2 peripheral clock enable register) 0x4002 1000 + 0x18 RCC_APB1ENR  (APB1 peripheral clock enable register) 0x4002 1000 +…