學習路徑:
2. 接著從**入手,根據應用場景看不同的**執行路徑;根據應用場景改不同的需求
3. 寫總結,由list寫總結;找忙點,在list上增加新的內容或者要改進的內容
4. 寫需求設計書,架構設計書,api說明書,形成模板,以備不時之需
5. 總結**方面的知識體系:架構方式與case案例;編譯工具;**版本管理;
程式設計設計模式與coding style案例;**重構與優化案例;好的**片段蒐集;
window上圖形系統相關驅動開發
linux上圖形系統相關驅動開發
圖形系統相關驅動除錯技術
圖形應用程式效能分析
圖形應用程式調優
計算機圖形學
gpu圖形流水線
mesa開源框架
opengl
vulkan
opencl
d3d3d圖形加速技術
gcc/llvm編譯器
圖形處理語言的編譯
指令優化
編譯時間效能優化
編譯效率效能優化
編譯器除錯工具使用
編譯器除錯工具開發
gpu,soc編譯器實現
gpu效能分析
video codec開發
linux核心開發
display驅動開發
bsp韌體開發
video bios/uefi gop韌體開發
ip驗證presillicon, postsillicon階段
romcode, bootloader, chipdriver的開發
pcie,ddr, ethernet協議與驅動
gpu圖形驅動開發
gpu驅動移植,適配及效能優化
顯示卡vbios開發
3d渲染
opengl
opengl es
drm/mesa
嵌入式工程師發展: 按照系統架構看,從上到下:應用層 -> 中介軟體(framework, middle ware不同叫法) ->
協議層(stack,看應用了) -> driver層 -> firmware層(controller);不同層的發展技術棧不同,
有比較common的技能棧, 有領域domain技能棧,差別太大了。 按照系統os分,多程序系統,實時系統,
裸機無系統,其開發工具,領域技能棧,除錯方式,效能指標都較大差異。東西是學不完的,從上到下的資料流,控制流超級複雜,還要考慮領域背景的特殊性,一些領域流程與標準,spec中flow的特殊性, 想做好很難。比如,自己搞個協議棧, 裁剪協議棧等等, 要求沒有止境。 以下隨意列舉一下:
技術棧:
-> 不同的應用方向,技術棧不同,
比較通用的技術棧:除錯技術怎麼調?架構設計怎麼設計?code review怎麼搞?安全編碼規範怎麼執行?
單元測試,測試相關技術,自動化測試方法? **版本管理工具,git, svn的熟練使用 ?
**移植技術,分場景移植,不同晶元的移植、不同系統os的移植?
不同領域需要積累的技術,比如藍芽,wifi晶元需要過pts認證等,不同認證;汽車晶元**過認證
比如顯示器方向的技術棧(touchgfx designer)
ble低功耗藍芽的技術棧(nim-ble等協議棧); bt的應用方向,傳統藍芽的應用方向,bt的協議棧
音訊的應用方向,熟悉codec(sbc, aac等),熟悉dsp等
汽車相關的應用方向,協議棧can, lin等
wifi相關的,熟悉wifi協議
路由器相關的,熟悉openwrt系統,光貓等
-> 靜態檢查,本地構建,測試環境搭建,問題定位
-> web後端開發技術:協議,架構,儲存,快取, 搜尋, 安全,訊息佇列
-> 重構經歷,重構的基本步驟?
-> redis,oracle等資料庫,sql的mysql等原理
-> memcached是是一套分布式的快取記憶體系統
-> firmware os有哪些?
-> bsp工程師,
-> uboot使用,linux核心的移植,裁剪,優化經驗?熟悉boot loader過程,移植linux系統?
-> c/c++/golang語言基礎紮實,資料結構與演算法設計理解深刻
-> git, svn的使用, 自己寫一些指令碼幫助提高效率
比如新建工程,提交code,回退版本,合併code,
-> 設計模式相關,
-> 架構設計,分層:應用層,中間層(framework適配層等), 協議層,driver層,firmware層等
-> 一些比較好的實現,lwip協議棧,mqtt協議棧,
-> toolchain方面的了解,arm-gcc, esp的toolchain,ba-elf的toolchain,yocto的toolchain
-> 在window下,對keil v5的使用與了解(如何建立工程,如何加include,如何加.c,對.uvproj檔案修改等)
-> ble相關的spec,有gatt profile(在bt core spec中),att協議,ble gap連線過程;ble的3類引數優化,連線引數,廣播引數,掃瞄引數;mesh spec,基於beacon 廣播包的mesh組網流程
-> bt相關的spec,a2dp profile(應用在藍芽音響),bnep profile(藍芽共享網路)
-> 對android的了解,build .so,android的mk,android的jni過程,android的架構
framework(中間層middle ware),hal, stack層, driver層
-> 看過的藍芽協議棧相關源**,bluez、bluekitchen/btstack、bluedroid
對於ble的協議棧nim-ble、rw-ble協議棧
-> 系統相關的rt-thread系統的編譯,free-rtos系統,
-> linux相關的makefile寫法
-> linux相關的系統程式設計(多執行緒,ipc程序通訊,io), linux c程式設計;socket程式設計有哪些例子與應用
場景?-> linux的shell寫法
-> linux相關的除錯,使用gdb, ftrace(核心除錯),打log的除錯
-> binutils的使用,不同的toolchain都有對應的實現,比如esp-idf,arm-elf,ba-elf等toolchain
-> linux驅動, .ko的使用方法,
-> code review相關rule,如何寫secure的**(編寫安全的**)
-> 測試相關,單元測試如何寫(unit test),自動化測試,半自動化測試,cli cmd如何寫
類似乙個bt rpc test的cli 執行緒等
-> 怎樣叫熟悉rtos?怎樣叫熟悉linux核心?
核心排程的demo怎麼寫? 執行緒通訊有哪些demo? 檔案系統的demo? 驅動模型的demo ?
-> 嵌入式的ui,如何寫,有開源的
-> 乙個定製的路由器系統, openwrt基於linux的系統,定製的專門用於路由器的系統
-> 對於lte協議的實現,
-> touchgfx的實現,做顯示器方向的,
嵌入式工程師需要mysql 嵌入式工程師的發展路線
最近遇到很多處於迷茫中的新手,在糾結要不要去學嵌入式,主要問題在於嵌入式的門檻非常高,經驗少 或者非電子專業投身嵌入式行業能否發展下去。現在嵌入式開發行業的確發展很好,大多數從業者都是科班出身,但我們也看到很多非科班的人分享了自己的從業過程,也許起初知識不如科班的多,但他們經過持續數年學習實踐,也成...
嵌入式工程師step by step
近來嵌入式挺火,於是大家都往這裡擠。我想提醒大家的是,嵌入式馬上也會成為如今的軟體業。在你進來之前請先考慮清楚。但只要我們真的學精了一樣東西,不管它將來變成什麼樣,哪怕最後只剩下乙個人,那個人也一定就是你自己。很多人以為搞嵌入式就是隨便找本書看看,在電腦上編幾個程式就完事。非也,其實嵌入式的門檻是比...
嵌入式工程師筆試題
1.linux核心裡面,記憶體申請有哪幾個函式,各自的區別?kmalloc 連續物理記憶體 vmalloc 虛擬記憶體連續 物理上非連續 2.irq和fiq有什麼區別,在cpu裡面是是怎麼做的?irq 普通中斷 fiq 快速中斷 有自己的暫存器,省去暫存器內容儲存的時間。3.int a char b...