[討論] Linux kernel & 虛擬化相關工作
小弟在linux kernel/driver工作上面相當有熱誠。在工作之餘也和同事合組linux
kernel相關的研討group。自從前當學生的時候做過一些小程式如ARP spoof,packet
filter,使用socket寫client & server 等等。在第一份工作做bios 期間熟悉對
pci bus 的存取,如:PCI scan,real mode 組合語言的撰寫。還有如何切到
protected mode 設定GDT table 和A20 gate 以及切過去後要馬上執行jmp 這些
x86 arch 的細節。在這邊奠定了low level 的基礎,其中還做了一個在沒有source
code 的情況下修改dos下 MZ format 執行檔,並且加code進去的工作。
由於做bios 的工作實際上寫code的機會不多,頂多是寫寫測試小程式。加上自己
本身對os kernel的運作有很濃厚的興趣。在網路上因緣際會下看到"十年一覺程設夢
的文章",因此抱著熱誠來到了這篇作者所在的華碩EPC部門。一開始來到EPC部門接
的是touch panel的driver,這塊touch panel特別之處在於外部電路是我們部門自
己兜的,且是接在EC 上面,並且利用EC內的ADC把touch panel外部電路直接轉成
raw data,所以要知道如何透過8042把EC上面touch panel的座標data抓上來,
接著再丟到input subsystem上面。然後在這邊接觸了第一隻linux driver。
接著又接了一個usb touch panel的project,一開始是電阻式single touch的
panel。因為是usb的緣故,所以有使用usb analyzer研究usb的封包,
當然也順便了解usb的基本protocol。還有multi-touch的版本,和上海Intel
Moblin Open Source Technology Center合作,我負責寫底層的driver,後來了解
到multi-touch的差別就是註冊兩個input node,模擬兩隻滑鼠。上面user space的
Xwindow 再拿這兩個node去做運算。由於工廠測試的需要曾經寫過一支小型的boot
loader,放在USB disk的MBR裡面。自己先實作一個FAT file system,開機的時候
去FAT 裡面把code抓出來run,接著判斷hard disk上面是什麼系統,再做必要的動作。
除了這些以外因為我自己對os的底層運作很有興趣,所以有trace早期的
0.12 版linux kernel,研究了scheduling(switch to),interrupt mechanism,
memory management...等,比較核心的部分。自己有寫過小型的OS,放在
usb disk 裡面,一開始把USB MBR load 到0x7c00,接著code run 起來後會
有兩隻process,用timer interrupt,互相做context switch。
同時也對IA32 protected mode 有了一定的熟悉,像是GDT, LDT, IDT,
interrupt gate, trap gate(沒有清IF flag), task gate,segment selectors and
registers,privilege level concepts,interrupt to (same)higher privilege 時的
堆疊轉換,PDT,PDE,PT,PTE,CR3,TSS selector,TSS descriptor,switching
tasks。
之後由於Moblin team在asus內部不受重視,接著要打散改分配到windows image team
的情況下。我來到台灣自有cpu ip公司,
主要實做和porting經驗如下:
1. Linux Suspend-To-Ram driver.
2. Frequency scaling driver.
3. Improve CPU local memory driver.
4. Implement U-boot NEC pci-to-usb keyboard driver.
5.
i. Porting USB protocol(OHCI host controller) to E-BIOS使得USB keyboard可
以在EBIOS上動作,修改 u-boot generic code to support 5 ports。
ii. Porting USB UHCI driver to andes E-bios/u-boot platform.
iii. Implementing hot plug-in.
6. Porting Gadget HID device mode driver from 2.6.36 to make board as a
keyboard device for tag scanner.
7. Porting Cypress barcode HID driver from 2.6.38 to andes platform.
8. Implementing restart system call to avoid executing in stack.
debugging經驗:
1. EHCI isochronous transfer debugging with RTL designer using Logic
analyzer.
2. Linux kernel booting hang because of Gmac's DMA write error.
3. USB DMA random write causing Linux booting crashes when enabling two
OHCI host controller
Evaluation經驗:
How to improve non-hw-cache coherency SMP/AMP architecture using
virtual machine.
Presentations經驗:
1. EHCI host controller
2. How Linux kernel page fault/virtual memory work
3. Linux kernel initialization (UP/SMP)
4. power management driver.
5. interrupt handling, TLB, cache, and DMA implementation.
同時在自我進修Phd,鎖定virtualization的領域,Arm A7 & A15
HMP (single-ISA multi-core) virtualization extension。
常常在Chinaunix上討論,總覺得大陸的Linux kernel方面job很多,高手也很多,
也希望自己可以像他們一樣一直進步。
所以目前想要尋找專注於kernel相關的job,比方說kernel方面的performance tuning。
希望公司可以support submit code to mainline的work。可以提供彈性的時間研究。
不知道板上的前輩對於kernel方面的工作是否可以提供一些意見。
我們的 Linux kernel research group:
https://groups.google.com/forum/?fromgroups#!forum/tw-linux-kernel-hacker
有興趣的版友也可以加入一起研究。
謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.159.107
推
06/24 17:45, , 1F
06/24 17:45, 1F
→
06/24 17:48, , 2F
06/24 17:48, 2F
→
06/24 17:53, , 3F
06/24 17:53, 3F
推
06/24 18:14, , 4F
06/24 18:14, 4F
推
06/24 18:35, , 5F
06/24 18:35, 5F
→
06/24 18:37, , 6F
06/24 18:37, 6F
推
06/24 18:39, , 7F
06/24 18:39, 7F
→
06/24 18:40, , 8F
06/24 18:40, 8F
→
06/24 18:40, , 9F
06/24 18:40, 9F
→
06/24 18:41, , 10F
06/24 18:41, 10F
→
06/24 18:43, , 11F
06/24 18:43, 11F
推
06/24 20:24, , 12F
06/24 20:24, 12F
推
06/24 21:11, , 13F
06/24 21:11, 13F
推
06/24 21:23, , 14F
06/24 21:23, 14F
→
06/24 22:09, , 15F
06/24 22:09, 15F
推
06/24 22:33, , 16F
06/24 22:33, 16F
推
06/24 23:38, , 17F
06/24 23:38, 17F
→
06/24 23:39, , 18F
06/24 23:39, 18F
→
06/24 23:41, , 19F
06/24 23:41, 19F
→
06/24 23:43, , 20F
06/24 23:43, 20F
→
06/24 23:46, , 21F
06/24 23:46, 21F
推
06/25 00:05, , 22F
06/25 00:05, 22F
→
06/25 00:07, , 23F
06/25 00:07, 23F
→
06/25 00:08, , 24F
06/25 00:08, 24F
推
06/25 00:23, , 25F
06/25 00:23, 25F
推
06/25 00:25, , 26F
06/25 00:25, 26F
→
06/25 00:27, , 27F
06/25 00:27, 27F
推
06/25 00:58, , 28F
06/25 00:58, 28F
推
06/25 02:40, , 29F
06/25 02:40, 29F
推
06/25 13:16, , 30F
06/25 13:16, 30F
→
06/25 15:02, , 31F
06/25 15:02, 31F
→
06/25 15:05, , 32F
06/25 15:05, 32F
→
06/25 15:49, , 33F
06/25 15:49, 33F
→
06/25 18:23, , 34F
06/25 18:23, 34F
推
06/26 11:16, , 35F
06/26 11:16, 35F
推
12/07 12:34, , 36F
12/07 12:34, 36F
Tech_Job 近期熱門文章
PTT職涯區 即時熱門文章