<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 設計應用 > 嵌入式學(xué)習過(guò)程繞不開(kāi)的知識點(diǎn)

嵌入式學(xué)習過(guò)程繞不開(kāi)的知識點(diǎn)

作者: 時(shí)間:2024-02-23 來(lái)源:網(wǎng)絡(luò ) 收藏

很多人學(xué)習都有些迷茫,不知道從哪里入手,不知道自己的水平位于哪個(gè)層次,不知道從哪方面提升。今天我們就從一個(gè)8年工作經(jīng)驗的資深的分享,來(lái)看一下學(xué)習那些你繞不開(kāi)的技術(shù)點(diǎn)。

本文引用地址:http://dyxdggzs.com/article/202402/455679.htm

做嵌入式這行已經(jīng)8年了吧,也算是一個(gè)老了,工作多年,做過(guò)MCU、DSP、ARM、ARM+DSP、ARM+FPGA等等芯片?,F在將嵌入式學(xué)習的一些繞不開(kāi)的技術(shù)點(diǎn)整理下,希望對嵌入式初學(xué)者有些幫助。

1. 嵌入式繞不開(kāi)各種接口

比如:UART、SPI、I2C、USB、ETH、MIPI、EDP、CAN、I2S、HDMI等等。需要了解各接口的使用場(chǎng)景、帶寬、機制、時(shí)序、工作模式、缺點(diǎn)、時(shí)序等等,硬件接口這一塊兒就會(huì )讓很多新手摸不到頭腦。

2. 嵌入式繞不開(kāi)交叉編譯工具

嵌入式一般都需要自己搭建交叉編譯工具鏈,當然MCU類(lèi)的開(kāi)發(fā)也會(huì )有成熟的IDE可供使用,但是對于編譯器而言一般都是GCC。

對于嵌入式開(kāi)發(fā)人員來(lái)說(shuō),搭建交叉編譯工具鏈。編譯過(guò)程分為 —— 預編譯、編譯、匯編、鏈接,通過(guò)GCC提供的工具可以使程序完成任一階段的處理,要清楚各個(gè)階段主要完成了什么工作。鏈接分為靜態(tài)鏈接、動(dòng)態(tài)鏈接,各自的優(yōu)缺點(diǎn)及使用場(chǎng)景要知道;同時(shí)編譯生成ELF格式的文件,要理解ELF文件的格式、必要的時(shí)候需要通過(guò)objdump或readelf工具來(lái)解析ELF文件。

3. 嵌入式開(kāi)發(fā)繞不開(kāi)調試

嵌入式開(kāi)發(fā)的很大一部分時(shí)間都在調試,好的調試方法和工具可以更快速的定位問(wèn)題。

· vargrind 

· gdb

· kdump

· corddump 

· oops

4. 嵌入式開(kāi)發(fā)離不開(kāi)優(yōu)化

嵌入式的優(yōu)化分為兩部分:算法上的優(yōu)化,編程上的優(yōu)化。其中編程上的優(yōu)化分為以下技術(shù):

· 內存使用上的優(yōu)化-cacheline的使用

cache涉及到cache命中率、cache一致性,write-back,wrte-through等。全局變量問(wèn)題、常用變量位置問(wèn)題、互鎖問(wèn)題。

· 并行優(yōu)化

并行優(yōu)化主要是SIMT或SIMD技術(shù)的應用,包括GPU的使用,NEON優(yōu)化、SSE優(yōu)化等。其中并行分為任務(wù)并行和數據并行、任務(wù)并行是多核方面的優(yōu)勢。數據并行是GPU和NEON來(lái)解決。

· 依賴(lài)性問(wèn)題

依賴(lài)性問(wèn)題主要是流水線(xiàn)問(wèn)題,避免數據的依賴(lài)性可以高效的使用流水線(xiàn)。至于這部分的優(yōu)化要借助反匯編,來(lái)對比不同寫(xiě)法造成的差異。

5. 嵌入式繞不開(kāi)驅動(dòng)

很多人對驅動(dòng)開(kāi)發(fā)有技術(shù)情節,越是年輕的越是這樣。驅動(dòng)的開(kāi)發(fā)本質(zhì)上就是給外設配置參數,使其工作在期望的方式。linux下的驅動(dòng)開(kāi)發(fā)需要遵從linux的驅動(dòng)框架,裸機的驅動(dòng)開(kāi)發(fā)就是直接配置寄存器就可以。

linux有一個(gè)很好的理念,就是萬(wàn)物皆文件,linux將外設也會(huì )抽象成文件,讀寫(xiě)外設和讀寫(xiě)文件在操作上沒(méi)有了區別。linux下的設備分為字符型設備、塊設備、網(wǎng)絡(luò )設備。

linux下注冊驅動(dòng)的時(shí)候,將設備號和文件名進(jìn)行了映射,并實(shí)現file_operation里的一些函數,例如,write、read、ioctl。其中write、read主要用于讀寫(xiě)外設的有用數據。ioctl主要用于配置外設的一些參數,使其工作在不同的模式或狀態(tài)。

6. 嵌入式離不開(kāi)操作系統

嵌入式操作系統有很多種:vxworks、ucos、freertos、bios、linux、uclinux、nuttx等等。對于操作系統的選擇個(gè)人感覺(jué)要看實(shí)時(shí)性,以及生態(tài)。生態(tài)很重要,這樣出現問(wèn)題的時(shí)候,才不至于絕望,感覺(jué)不是孤軍奮斗。

其實(shí)操作系統的出現,主要是為了解決任務(wù)調度、內存管理,這兩方面是操作系統的精髓。感興趣可以閱讀源碼,ucos的源碼不多,可以從它看起。

嵌入式的東西很多,想要整理起來(lái),也是很花費力氣的一件事情,稍后的一年時(shí)間,有時(shí)間我就會(huì )慢慢的整理,算是對自己做一個(gè)交代,當然如果對別人有用的話(huà),那就更好。

目前AI異?;鸨?,現階段大家都停留在功能實(shí)現上,至于端測的落地,個(gè)人感覺(jué)還有一小段距離要走。當AI落地的時(shí)候,我相信市場(chǎng)上對嵌入式工程師、硬件工程師的需求會(huì )越來(lái)越大。尤其是涉及到性能優(yōu)化方面,我相信應該會(huì )有很大的市場(chǎng)吧。



關(guān)鍵詞: 嵌入式 工程師

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>