[討論] Linux kernel & 虛擬化相關工作

看板Tech_Job (科技人)作者 (提拉米蘇好好吃喔)時間13年前 (2012/06/24 15:11), 編輯推噓17(17019)
留言36則, 19人參與, 最新討論串1/1
小弟在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
台灣自有cpu ip公司:這在台灣應該已經是最適合你的類型了
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
原po接案嗎?
06/24 18:14, 4F

06/24 18:35, , 5F
您部分工作和我相同 我是UART/I2C類的touchpanel drv
06/24 18:35, 5F

06/24 18:37, , 6F
離開原因也相同 原公司要分散原有人力至windows team
06/24 18:37, 6F

06/24 18:39, , 7F
自有cpu應該是指Andes吧
06/24 18:39, 7F

06/24 18:40, , 8F
就閃人去Cyberlink了~~ 想說持續專注作video kernel
06/24 18:40, 8F

06/24 18:40, , 9F
andes新竹晶心吧... 也是MTK子公司
06/24 18:40, 9F

06/24 18:41, , 10F
大老闆都很奇怪 他們認為人力可以一年作linux kernel
06/24 18:41, 10F

06/24 18:43, , 11F
作完android再打散用原人力去接win8~想說反正都是底層
06/24 18:43, 11F

06/24 20:24, , 12F
推樓上 老闆根本就不懂技術卻又這麼自以為的太多了
06/24 20:24, 12F

06/24 21:11, , 13F
推老闆不懂技術又愛亂搞QAQ
06/24 21:11, 13F

06/24 21:23, , 14F
專業!
06/24 21:23, 14F

06/24 22:09, , 15F
AndesCore +1 這公司不曉得幾時能做起來
06/24 22:09, 15F

06/24 22:33, , 16F
kernel對multi-touch不是有一套自己的協定?(type A and B)
06/24 22:33, 16F

06/24 23:38, , 17F
樓上 這段可自己寫 從sensor電壓電流變化轉interrupt
06/24 23:38, 17F

06/24 23:39, , 18F
到touch controller註冊的isr這邊會轉成input event
06/24 23:39, 18F

06/24 23:41, , 19F
透過UART,I2c,或USB回傳input給touch driver(kernel)
06/24 23:41, 19F

06/24 23:43, , 20F
multi-touch可以改在kernel支援 也可改在middleware
06/24 23:43, 20F

06/24 23:46, , 21F
相當於改在android在c++那層polling input event地方
06/24 23:46, 21F

06/25 00:05, , 22F
我知道可以自己改啊XD 只是好奇為什麼要弄成兩隻滑鼠
06/25 00:05, 22F

06/25 00:07, , 23F
本人實在太無知,只用過android or QT ,沒用過XWindow XD
06/25 00:07, 23F

06/25 00:08, , 24F
用成ABS_MT_TRACKING_ID之類的給user space不是比較方便@@
06/25 00:08, 24F

06/25 00:23, , 25F
嗯 記得是SYN_MT_REPORT 上述macro用於kernel space
06/25 00:23, 25F

06/25 00:25, , 26F
kernel傳touch data到user space 記得會透過evdev
06/25 00:25, 26F

06/25 00:27, , 27F
記得是一隻手指模擬成一隻滑鼠 4點觸控就是4滑鼠鼠標
06/25 00:27, 27F

06/25 00:58, , 28F
good
06/25 00:58, 28F

06/25 02:40, , 29F
arm virtualization的部份可以找jserv,他們有在做
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
推可以去jserv的公司問看看
06/25 15:49, 33F

06/25 18:23, , 34F
如果真的這麼強應該不至於要跑來這po文找工作.
06/25 18:23, 34F

06/26 11:16, , 35F
很想加入, 但我熟的是Windows NT kernel
06/26 11:16, 35F

12/07 12:34, , 36F
推0xlab !
12/07 12:34, 36F
文章代碼(AID): #1FvhsbDS (Tech_Job)
文章代碼(AID): #1FvhsbDS (Tech_Job)