嵌入式工程師可選發展

2021-10-08 02:20:15 字數 3525 閱讀 7027

學習路徑:

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...