在使用C語言開發(fā)嵌入式產(chǎn)品的過程中,當(dāng)使用到malloc函數(shù)時候都會有一個爭議,“使用動態(tài)內(nèi)存分配安全嗎?”,就連美國軍方在safety-critical的嵌入式航空電子設(shè)備代碼中,也禁止動態(tài)內(nèi)存分配,我們來細細分析下。
分享一個小技巧,使用MDK編譯器,讓STM32程序HEX文件中加入固件版本信息,估計很多老手都已經(jīng)在使用(你有好的方法歡迎分享,希望我的磚能引來你的玉),該方法獻給新手或初學(xué)者。
雖然Linux被成功使用,但并不意味著它很容易使用。Linux包含的代碼超過一百萬行,其運作帶有鮮明的Linux方法論味道,初學(xué)者可能難以迅速掌握。
本文整理了一些TCP/IP協(xié)議簇中需要必知必會的十大問題,既是面試高頻問題,又是程序員必備基礎(chǔ)素養(yǎng)。
C語言里,每個源文件是一個模塊,頭文件為使用該模塊的用戶提供接口。接口指一個功能模塊暴露給其他模塊用以訪問具體功能的方法。使用源文件實現(xiàn)模塊的功能,使用頭文件暴露單元的接口。用戶只需包含相應(yīng)的頭文件就可使用該頭文件中暴露的接口。
宏的使用,大家經(jīng)常會用,但是一般只是簡單定義一個符號常量,類似于 #define WHEEL_SCALE_MM?0.53f、 #define LOG_I(tag, text_fmt, ...) log_i(tag, text_fmt, ##__VA_ARGS__)? ,但是除此之外還有宏還有個##粘貼作用,可以配合#define這個常量表達式,可以做成一個宏定義指針函數(shù)列表,繼而查詢執(zhí)行函數(shù)。話不多說,我們開始今天的分享,首先還是會進行一下常規(guī)的描述,再分享"##"粘貼的妙用。
在Linux下的開發(fā)中,printf打印調(diào)試信息默認(rèn)輸出到標(biāo)準(zhǔn)輸出 stdout (即屏幕/終端)中。我們也可以使用輸出重定向技術(shù)輸出到指定文件中,輸出重定向即是把原本要輸出到屏幕的信息寫入到指定文件中。
我們大多都使用printf來打印一些信息,其它的接口都比較少用。這里介紹一個被我們遺忘的打印輸出函數(shù):perror函數(shù)。
本文通過對Linux下串口驅(qū)動的分析。由最上層的C庫,到操作系統(tǒng)系統(tǒng)調(diào)用層的封裝,再到tty子系統(tǒng)的核心,再到一系列線路規(guī)程,再到最底層的硬件操作。