侵權投訴

嵌入式系統開發的思維和注重方法

嵌入式ARM ? 2021-09-02 11:10 ? 次閱讀

開頭的話

嵌入式開發是一個比較苦、容易背鍋、可能仍然需要996而且拿錢較少,但也有些許樂趣的活,我一直稱之為跳坑里了。如果你在里面深耕,那終究會成為大佬,軟硬結合的高手;如果你剛入坑,我可能勸你轉,但是可能你自己還有點舍不得。

總之,確定了在這一行,靠的就是思維與技巧結合,注重實踐方法,方能在其中有一席之地。

從裸機思維開始

嵌入式系統是一個面向應用高度裁減的專用計算機系統,嵌入式軟硬件也可以這樣定義

軟件:人們借助某種語言,“嘗試”固化下來的,自己的思維

硬件:業已固化下來的邏輯,可以穩定的提供確定的服務和功能軟件的本質是設計人員的思維,因而程序設計人員最重要的是自己根據任務的需求想通所有的邏輯,并借助一定的語言作為工具,把自己的思維“固化”下來,而硬件,本質上一個固化下來的邏輯。

這個是行業內在心底里約定俗成已經默默在做的事情,嵌入式系統、模塊化編程、狀態機、層次框架等等,都是在其中摸索探究。

注重方法

思維的設計有很多輔助工具,如大家熟知的流程圖、UML圖、數據流圖等等。然而,具體代碼往往并不是一個好的輔助工具。

進行思維設計的開發人員,叫做Programmer,也就是所謂的碼農,而要做一個好的碼農,真的需要注意方法,比如狀態機編程,怎么理解狀態?如何才算一個狀態。

我們看到圖中,我們用圓圈來表示一個狀態,圖中最左的箭頭表示從別的什么地方“躍遷”到了當前狀態;下方的箭頭表示從當前狀態離開;右上角從當前狀態“扇出”后又“返回到”當前狀態。這里需要很多轉變,而好的架構很關鍵。

在之前我分享過很多狀態機的知識,可以說萬物皆可狀態機,而嵌入式軟件開發時總繞不開與實時性(Real Time)相關的話題,大部分人對實時性的認知過程通常會分以下幾個階段:。

v1:“實時性” = “越快越好”

Lv2:“實時性” = RTOS,認為選一個好的RTOS,或者會用RTOS就可以保證實時性;

Lv3:“實時性” = 任務拆分;

Lv4:開始思考實時性模型的特點;

Lv5:到了這個階段,不僅腦洞大開、戰斗力驚人總而言之需要深入理解,才能在注重方法的前提下,成為一個高級碼農。

注重技巧

為大家庖丁解牛、由淺入深,就要不懼怕優化,不要把編譯器的行為看作是玄學,深入底層,才能把編譯器、內存、寄存器、語言本質理解的透徹。

比如位域和volatile,前者用于將指定類型的整形變量按照我們的意愿切分;后者用于告訴編譯器不允許對被修飾的變量做優化。如果我們對編譯器的優化等級忽略的話,很難定義到bug,或者當我們對內存塊理解的不深入不透徹,關于內存的七七八八就會莫名其妙的找上門來。

volatile在嵌入式系統中的應用范圍非常廣泛,假設某32位外設寄存器的地址為XXXXX_IO_REG_BASE_ADDRESS,則對應的寄存器可以定義為如下的形式:

#defineXXXXX_IO_REG ( *((volatile uint32_t*)XXXX_IO_REG_BASE_ADDRESS) )

而應用中很多針對外設寄存器的連續操作都可以通過優化來大幅度提高效率,在保證程序邏輯正確的情況下,應該盡可能減少volatile的使用,或者是限制其使用的范圍,那么你知道為什么嗎?

這就是編譯器、語言本身、變量的一些特別之處,搞定這些底層原理知識,必定讓我們打開語言的大門。

最后的話

嵌入式開發所涉及到的思維訓練、C語言以及編譯器相關的關鍵知識、裸機環境下的開發者模型等等,可以幫助我們深入理解底層原理知識,以不變應萬變,最終對知識點實現完整和全面的覆蓋。

責任編輯:haq

原文標題:大佬談:嵌入式系統開發的思維、方法、技巧

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式ARM】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
分享:

評論

相關推薦

【原創分享】變量的初始化技巧

由于在嵌入式系統中必須考慮程序規模的問題,因此,對程序中的變量的初始化也需要進行慎重的考慮。在C語言中,基本數據結構(字...
發表于 09-08 15:28 ? 101次 閱讀
【原創分享】變量的初始化技巧

十年資深工程師教你如何學習單片機

1、萬事開頭難、要勇敢邁出第一步。     開始的時候,不要老是給自己找借口,說KEIL不會建項目啦、沒有實驗板啦之...
發表于 09-08 11:15 ? 0次 閱讀
十年資深工程師教你如何學習單片機

新學期學習嵌入式4412四核處理器安卓Linux項目實戰

項目實戰+配套視頻+源碼全開放 1、云服務器智能家居 2、門禁系統 3、WEB服務及遠程控制 4、智能網關 5、手機遠程控制開發...
發表于 09-08 10:59 ? 0次 閱讀
新學期學習嵌入式4412四核處理器安卓Linux項目實戰

Cortex-M裸機環境下臨界區保護的三種實現

今天給大家分享的是Cortex-M裸機環境下臨界區保護的三種實現。 搞嵌入式玩過 RTOS 的朋友想....
的頭像 strongerHuang 發表于 09-08 09:23 ? 342次 閱讀
Cortex-M裸機環境下臨界區保護的三種實現

嵌入式開發中軟件架構存在的意義

在嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。軟件架構對于系統整....
的頭像 strongerHuang 發表于 09-08 09:18 ? 79次 閱讀
嵌入式開發中軟件架構存在的意義

如何通過框架來學習嵌入式linux與ARM開發板呢

如何選擇開發板?選擇開發板要注意哪些事項? 如何通過框架來學習嵌入式linux與ARM開發板呢? ...
發表于 09-08 07:34 ? 0次 閱讀
如何通過框架來學習嵌入式linux與ARM開發板呢

瑞芯微RK3399芯片開發板香橙派4的HDMI音頻播放功能測試(Linux系統)

瑞芯微RK3399芯片開發板香橙派OrangePi 4(16G)用擁有4G內存16G存儲,集成雙頻WiFi、藍牙5.0、HDMI輸出、千兆網口、...
發表于 09-07 20:02 ? 0次 閱讀
瑞芯微RK3399芯片開發板香橙派4的HDMI音頻播放功能測試(Linux系統)

TLIMX8-EVM評估板規格書

創龍科技TLIMX8-EVM是一款基于NXPi.MX8MMini的4核ARMCortex-A53+單....
發表于 09-07 19:11 ? 2次 閱讀
TLIMX8-EVM評估板規格書

不漲價!不缺貨!198元ARM工業核心板,還含稅!

ARM Cortex-A8工業級核心板,198元起!
的頭像 黃工 發表于 09-07 19:04 ? 24次 閱讀
不漲價!不缺貨!198元ARM工業核心板,還含稅!

Zynq-7010/7020供應緊張了?看這里!

異構多核成為主流,ZYNQ系列出貨量劇增!
的頭像 黃工 發表于 09-07 19:04 ? 21次 閱讀
Zynq-7010/7020供應緊張了?看這里!

嵌入式培訓和自學有什么不同呢?

嵌入式培訓和自學有什么不同呢? 學習技術過程中,很多人在糾結說到底是要自學嵌入式還是參加培訓,根據個人接觸的很多嵌入式的...
發表于 09-07 16:30 ? 0次 閱讀
嵌入式培訓和自學有什么不同呢?

【C語言知識免費視頻教程】C語言數據類型轉換(第27集)

大家好! 該系列視頻為C語言免費教程, 蔡琰老師為大家講解  。持續關注,我們會繼續更新! 大家有關于C語言以及工...
發表于 09-07 14:05 ? 0次 閱讀
【C語言知識免費視頻教程】C語言數據類型轉換(第27集)

網絡邊緣是全新的嵌入式應用

云計算具有許多優勢,例如可以靈活地工作,包括在家中進行高效率且富有成果的工作(在新冠大流行期間這些非....
發表于 09-07 10:15 ? 1170次 閱讀
網絡邊緣是全新的嵌入式應用

嵌入式軟件測試的10條秘訣

很多年前,一位開發人員為了在對嵌入式有更深層次的理解,詢問了這樣的一個問題:我怎么才能知道并懂得我的系統到底在干些什么呢...
發表于 09-07 10:02 ? 0次 閱讀
嵌入式軟件測試的10條秘訣

【創龍科技】最全的TI、Xilinx、NXP工業核心板匯總!

創龍科技(Tronlong)最新、最全工業核心板匯總來了!
的頭像 黃工 發表于 09-07 09:41 ? 23次 閱讀
【創龍科技】最全的TI、Xilinx、NXP工業核心板匯總!

嵌入式工控機和傳統工控機性能有什么區別?

嵌入式工控機是為應用在各類狹小空間而設計的緊湊型工控機,因低功耗無風扇設計、小巧的的體積、穩定的性能....
發表于 09-07 09:34 ? 123次 閱讀
嵌入式工控機和傳統工控機性能有什么區別?

直流電機調速c語言程序設計

單片機課程設計學院:電氣與信息工程學院班級:07級電氣工程及其自動化3班設計者:設計名稱:直流電機調速指導老師:張志文 ...
發表于 09-07 07:24 ? 0次 閱讀
直流電機調速c語言程序設計

嵌入式工控機和傳統工控機的性能比較,二者有何區別

嵌入式工控機是為應用在各類狹小空間而設計的緊湊型工控機,因低功耗無風扇設計、小巧的的體積、穩定的性能....
發表于 09-06 17:06 ? 161次 閱讀
嵌入式工控機和傳統工控機的性能比較,二者有何區別

嵌入式多媒體卡產品JESD84-A44手冊

嵌入式多媒體卡產品JESD84-A44手冊
發表于 09-06 15:41 ? 12次 閱讀
嵌入式多媒體卡產品JESD84-A44手冊

Ubuntu服務器指南電子版下載

Ubuntu服務器指南電子版下載
發表于 09-06 15:39 ? 11次 閱讀
Ubuntu服務器指南電子版下載

嵌入式軟件開發三種程序架構詳解

在嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。 軟件架構對于系統....
的頭像 硬件攻城獅 發表于 09-05 09:53 ? 230次 閱讀
嵌入式軟件開發三種程序架構詳解

好消息 飛凌嵌入式在電子發燒友企業號正式入駐啦

攜手電子發燒友企業號Beta版上線,飛凌嵌入式在電子發燒友企業號正式入駐啦! 保定飛凌嵌入式技術有限....
的頭像 電子發燒友網工程師 發表于 09-03 15:48 ? 307次 閱讀
好消息 飛凌嵌入式在電子發燒友企業號正式入駐啦

【含案例源碼】IMX8基于FlexSPI、PCIe與FPGA的高速通信開發詳解!

前 言本文主要介紹i.MX 8M Mini基于FlexSPI、PCIe與FPGA的高速通信案例。本文....
的頭像 黃工 發表于 09-02 17:29 ? 97次 閱讀
【含案例源碼】IMX8基于FlexSPI、PCIe與FPGA的高速通信開發詳解!

C語言代碼中的extern

在你的C語言代碼中,不知能否看到類似下面的代碼: 這好像沒有什么問題,你應該還會想:“嗯?是啊,我們....
的頭像 STM32嵌入式開發 發表于 09-02 15:13 ? 135次 閱讀
C語言代碼中的extern

電子發燒友企業號Beta版上線,入駐開啟獲客第一步

? ? NEWS 隨著客戶需求升級,電子產業供應鏈缺乏彈性、流量愈發昂貴、品類同質化等問題的凸顯,對....
的頭像 電子發燒友開放平臺 發表于 09-02 11:01 ? 250次 閱讀
電子發燒友企業號Beta版上線,入駐開啟獲客第一步

解決方案 | 基于全志T507核心板設計智能加油機應用

飛凌嵌入式FETT507-C核心板基于全志T507四核車規級處理器設計開發,可滿足智能加油機的所有功....
的頭像 欒新科 發表于 09-01 18:28 ? 27次 閱讀
解決方案 | 基于全志T507核心板設計智能加油機應用

FCU1104雙網數采網關在“碳中和”目標下的在線能耗監測方案

以智慧能源管理平臺等輔助管理手段提高能源利用效率,實現節能減排,其中能耗在線監測平臺無疑是投入少,性....
的頭像 欒新科 發表于 09-01 18:28 ? 24次 閱讀
FCU1104雙網數采網關在“碳中和”目標下的在線能耗監測方案

全志T507操作小技巧連載2-T507以太網配置方法

本文硬件平臺采用全志T507四核車規級處理器設計開發板,本文講解T507開發板以太網配置方法。其它板....
的頭像 欒新科 發表于 09-01 18:28 ? 17次 閱讀
全志T507操作小技巧連載2-T507以太網配置方法

全志T507操作小技巧連載1-T507屏幕切換的兩種方式

飛凌嵌入式FETT507-C核心板集成全志T507四核車規級處理器設計開發,Cortex-A53架構....
的頭像 欒新科 發表于 09-01 18:27 ? 15次 閱讀
全志T507操作小技巧連載1-T507屏幕切換的兩種方式

全國產+5G+AI在智慧電力中的應用探索 Q&A問答

5G 改變社會,電力點亮未來。5G如何賦能智慧電網?應用場景有哪些? 保定飛凌嵌入式技術有限公司,....
的頭像 欒新科 發表于 09-01 18:27 ? 27次 閱讀
全國產+5G+AI在智慧電力中的應用探索 Q&A問答

干貨講解 | OKT507-C開發板如何在Android系統上進行OTA升級

OTA升級是Android系統所提供的標準軟件升級方式。它功能十分強大,并且提供了完全升級(完整包)....
的頭像 欒新科 發表于 09-01 18:27 ? 20次 閱讀
干貨講解 | OKT507-C開發板如何在Android系統上進行OTA升級

網關方案應用 | 工業網關在空氣環境監測系統解決方案

FCU1104工業網關與各類的傳感器相連,對傳感器的數據進行實時采集,通過LED屏幕將數據實時顯示,....
的頭像 欒新科 發表于 09-01 18:27 ? 27次 閱讀
網關方案應用 | 工業網關在空氣環境監測系統解決方案

FCU1104 專為物聯網邊緣計算網關而生

飛凌嵌入式最新產品FCU1104嵌入式控制單元正式發售!該平臺采用了NXP超高效、高性能、低成本的i....
的頭像 欒新科 發表于 09-01 18:27 ? 24次 閱讀
FCU1104 專為物聯網邊緣計算網關而生

干貨 | LS1028A-C如何輸出PWM方波?

干貨 | 飛凌OK1028A-C如何輸出PWM方波? 最近,我收到了一個使用OK1028A-C輸出....
的頭像 欒新科 發表于 09-01 18:27 ? 19次 閱讀
干貨 | LS1028A-C如何輸出PWM方波?

飛凌嵌入式iMX8MP系列OKMX8MPQ-C 軟件手冊

OKMX8MPQ-C開發板采用NXPi.MX8MPlus高性能處理器開發,內置NPU、ISP,AI計....
發表于 09-01 18:23 ? 15次 閱讀
飛凌嵌入式iMX8MP系列OKMX8MPQ-C 軟件手冊

飛凌嵌入式iMX8MP系列OKMX8MPQ-C_硬件使用手冊

i.MX8MPlus系列專注于機器學習和視覺、高級多媒體以及具有高可靠性的工業自動化。它旨在滿足智慧....
發表于 09-01 18:23 ? 38次 閱讀
飛凌嵌入式iMX8MP系列OKMX8MPQ-C_硬件使用手冊

測評 | iMX8MM開發板,帶你體驗不同的影音體驗

OKMX8MM-C是飛凌基于NXP公司i.MX8M Mini 四核64位處理器所設計的一款開發板,主....
的頭像 欒新科 發表于 08-31 18:47 ? 43次 閱讀
測評 | iMX8MM開發板,帶你體驗不同的影音體驗

方案 | 基于全志T507核心板設計電子AI后視鏡

電子AI后視鏡終端產品可借助飛凌FETT507-C核心板實現,該核心板基于全志T507四核車規級處理....
的頭像 欒新科 發表于 08-31 18:46 ? 29次 閱讀
方案 | 基于全志T507核心板設計電子AI后視鏡

基于FETMX8MP-C核心板的商用車智能駕駛終端

2019年3月,我國交通部發布了JT/T 1178.2,即《營運貨車安全技術條例 第2部分:牽引車輛....
發表于 08-31 14:18 ? 180次 閱讀
基于FETMX8MP-C核心板的商用車智能駕駛終端

C -與ORACLE直接連接代碼

C -與ORACLE直接連接代碼(肇慶理士電源技術有限)-C#-與ORACLE直接連接代碼,有需要的....
發表于 08-31 11:18 ? 10次 閱讀
C -與ORACLE直接連接代碼

Git基礎知識綜述

Git基礎知識綜述
發表于 08-31 10:42 ? 23次 閱讀
Git基礎知識綜述

Git常見的誤區和命令行工具等綜述

Git常見的誤區和命令行工具等綜述
發表于 08-31 09:51 ? 22次 閱讀
Git常見的誤區和命令行工具等綜述

Mac蘋果系統安裝包DR4.5程序下載

Mac蘋果系統安裝包DR4.5程序下載
發表于 08-31 09:24 ? 34次 閱讀
Mac蘋果系統安裝包DR4.5程序下載

DLMS協議藍皮書英文版資源下載

DLMS協議藍皮書英文版資源下載
發表于 08-30 14:29 ? 31次 閱讀
DLMS協議藍皮書英文版資源下載

C語言冒泡排序工程代碼匯總

C語言冒泡排序工程代碼匯總
發表于 08-30 11:06 ? 15次 閱讀
C語言冒泡排序工程代碼匯總

C語言文件讀寫工程源代碼匯總下載

VB文件讀寫
發表于 08-30 10:42 ? 28次 閱讀
C語言文件讀寫工程源代碼匯總下載

21489圖形化開發詳解:Fireware的燒寫與直通

本文介紹ADI SHARC DSP圖形化開發,在一般我們都是使用vdsp++進行c語言開發的,但其實....
的頭像 處理器世界 發表于 08-27 15:14 ? 1129次 閱讀
21489圖形化開發詳解:Fireware的燒寫與直通

嵌入式系統的內存指針操作

在嵌入式系統中,對內存地址的操作是一個重要的方面,從廣義上講,嵌入式系統的地址空間可以分成以下三種類....
的頭像 電子發燒友網工程師 發表于 08-27 11:33 ? 1880次 閱讀
嵌入式系統的內存指針操作

嵌入式系統編程的大小端和內存對齊問題

C語言是一種高級語言,在大多數情況下C語言的代碼是和具體的處理器體系結構無關的。然而,在嵌入式系統的....
的頭像 電子發燒友網工程師 發表于 08-27 10:54 ? 930次 閱讀
嵌入式系統編程的大小端和內存對齊問題

大文件上傳服務器、支持超大文件HTTP斷點如何續傳教程

最近由于筆者所在的研發集團產品需要,需要支持高性能的大文件http上傳,并且要求支持http斷點續傳....
的頭像 Android編程精選 發表于 08-26 15:36 ? 532次 閱讀
大文件上傳服務器、支持超大文件HTTP斷點如何續傳教程

手把手教你學51單片機-C語言版資源下載

手把手教你學51單片機-C語言版資源下載
發表于 08-26 14:51 ? 122次 閱讀
手把手教你學51單片機-C語言版資源下載

嵌入式工控機和傳統工控機的區別是什么

隨著近些年來嵌入式工控機在行業當中的應用成熟起來,在一些行業或者是領域的當中已經取代一些傳統的工控機....
發表于 08-26 14:36 ? 101次 閱讀
嵌入式工控機和傳統工控機的區別是什么

嵌入式Linux工程師的職業方向是什么

很多學習嵌入式的新人、工程師,在學習到半途中,總會感覺到迷茫,不知道自己從哪方面入手、進階,也不知道....
的頭像 硬件攻城獅 發表于 08-25 16:55 ? 281次 閱讀
嵌入式Linux工程師的職業方向是什么

嵌入式UHF RAIN RFID模塊ThingMagic M6e-Nano

ThingMagic Nano是Mercury系列嵌入式UHF RAIN RFID模塊中最小的產品。....
發表于 08-25 15:23 ? 33次 閱讀
嵌入式UHF RAIN RFID模塊ThingMagic M6e-Nano

高性能多協議嵌入式RFID模塊ThingMagic M6e

高性能多協議嵌入式RFID模塊ThingMagic M6e
發表于 08-24 15:45 ? 43次 閱讀
高性能多協議嵌入式RFID模塊ThingMagic M6e

Microchip推出精確計時精度和穩定性新型SA65型芯片級原子鐘

Microchip的SA65型芯片級原子鐘是一款嵌入式計時解決方案,具有更好的環境適應性,與之前的S....
的頭像 AMDRadeon顯卡中國 發表于 08-24 09:46 ? 2437次 閱讀
Microchip推出精確計時精度和穩定性新型SA65型芯片級原子鐘

lex與yacc第二版電子版資源下載

lex與yacc第二版電子版資源下載
發表于 08-23 17:06 ? 147次 閱讀
lex與yacc第二版電子版資源下載

嵌入式和單片機究竟有什么區別

凡是從事信息技術相關工作的童鞋,一定都聽說過嵌入式和單片機。 大家都知道,這兩個名詞,和硬件系統有著....
的頭像 物聯網標準化 發表于 08-23 15:26 ? 3254次 閱讀
嵌入式和單片機究竟有什么區別
免费无限看黄app_蜜柚app官网下载入口_成版人黄瓜app