原创 鏈接腳本在編程中的高級運用之二——運行時庫和C++特性支持

我們在鏈接腳本在編程中的高級運用之一可變長數組中已經講述了編譯鏈接的原理,並且以uboot命令爲例詳細介紹鏈接腳本如何實現可變長數組。本章在前者的基礎上繼續講述鏈接腳本在運行時庫中的高級應用技巧,以及編譯器如何支持類對象的構造和析構函數

原创 Linux 設備文件的創建和mdev

引子 一、設備類相關知識 設備類是虛擬的,並沒有直接對應的物理實物,只是爲了更好地管理同一類設備導出到用戶空間而產生的目錄和文件。整個過程涉及到sysfs文件系統,該文件系統是爲了展示linux設備驅動模型而構建的文件系統,

原创 CPU指令的流水線執行

        指令集是CPU體系架構的重要組成部分。C語言的語法是對解決現實問題的運算和流程的方法的高度概況和抽象,其主要爲算術、邏輯運算和分支控制,而指令集就是對這些抽象的具體支持,彙編只不過是爲了讓開發人員更好地記住指令,但它跟CP

原创 鏈接腳本在編程中的高級運用之一:可變長數組

作爲嵌入式軟件工程師,應該要清楚程序的每一條指令在哪裏,什麼時候會被加載到內存,什麼時候會被執行。鏈接腳本會明確告訴你程序的代碼和數據在內存中的分佈。精確控制代碼和數據在內存中的分佈是高效利用內存資源的前提。自定義鏈接腳本是資深嵌入式軟

原创 如何快速理解一個全新的嵌入式操作系統(續)

上一篇《如何快速理解一個全新的嵌入式操作系統》我們已經分析瞭如何快速理解OSAL的任務調度和任務間通信(其實OSAL只是酷似多任務操作系統的單任務系統),再理解好OASL的消息產生和處理過程,我們就能夠進行快速開發了。 一、消息的來源 嵌

原创 物聯網架構演進和微信智能設備平臺開發

  本文從場景和技術的角度去理解物聯網技術和方案的演進,純粹是個人觀點,可能與主流定義稍有偏差。   一、物聯網與物聯設備 本人對物聯網的理解是物聯設備組成的網絡,因此物聯網需要兩個要素,一是設備能夠互聯,另一個是能夠組網。物聯網往往

原创 物聯網的全棧開發之路

         兩年前我對物聯網關注比較少,儘管我個人對智能家居的概念和場景體驗也比較熟悉。真正引起我注意的是有一次在車上,聽到電視廣播說打開藍牙,用手機搖一搖就可以搖到紅包,我就覺得這個場景很棒,然後就知道了ibeacon和微信搖一搖

原创 字符設備驅動、平臺設備驅動、設備驅動模型、sysfs的關係

Linux驅動開發的童鞋們來膜拜吧:-)  學習Linux設備驅動開發的過程中自然會遇到字符設備驅動、平臺設備驅動、設備驅動模型和sysfs等相關概念和技術。對於初學者來說會非常困惑,甚至對Linux有一定基礎的工程師而言,能夠較好理解這

原创 物聯網網絡編程、Web編程綜述

本文是基於嵌入式物聯網研發工程師的視覺對網絡編程和web編程進行闡述。對於專注J2EE後端服務開發的童鞋們來說,這篇文章可能稍顯簡單。但是網絡編程和web編程對於絕大部分嵌入式物聯網工程師來說是一塊真空領域。 的確,物聯網研發應該以團隊協

原创 如何快速理解一個全新的嵌入式操作系統

---基於TI CC254X OSAL的分析 當工具鏈配置完成後,Source Insight向你展示一份源碼工程,不借助百度和開發文檔,能否在一兩個小時內理解源碼的組成框架和接口,進行快速開發? 在筆者過往撰寫的博文中,一直在倡導兩個嵌

原创 體系編程、SOC編程那些事兒

筆者將從芯片IC的系統設計的角度去詮釋如何掌握體系編程和SOC編程。筆者有超過10年的嵌入式研發經驗,作爲架構師多次主導過基於ARM/MIPS/51核的多媒體SOC研發併成功量產案例,在高端處理器體系編程和嵌入式Linux方面有豐富的教

原创 加速度傳感器的原理和應用-手機翻轉、失重檢測、運動檢測、位置識別

本文介紹可穿戴設備加速度傳感器-Lis3dh的特性原理和應用場景。意法半導體研發的Lis3dh廣泛應用在智能手環、智能計步鞋等智能穿戴產品中。 Lis3dh有兩種工作方式,一種是其內置了多種算法來處理常見的應用場景(如靜止檢測、運動檢測

原创 無線接收信號強度(RSSI)那些事兒

本文所述的原理適用於所有無線傳輸技術,只是用藍牙來舉例。應該說,嵌入式企鵝圈更加偏重於嵌入式和物聯網、安卓技術原理方面的知識分享和傳播,其次纔是實踐,儘管很多開發者都很浮躁地希望能夠立刻獲得例程源碼。本人一直都認爲,只有通曉理論,才能

原创 藍牙廣播數據格式和動態改變

 本文由嵌入式企鵝圈原創團隊成員黃鑫提供。  廣播內容的自定義是藍牙BLE開發的基本技能,用戶最多能夠設置31字節。但是用戶定義是必須要遵循BLE協議的。另外,ibeacon應用和一些特定的應用要利用廣播來傳遞數據,而且不同時間段的廣播

原创 藍牙DA14580開發:固件格式、二次引導和燒寫

本文由嵌入式企鵝圈原創團隊成員黃鑫原創。 相比NRF52832和CC254X,藍牙單芯片DA14580在OTA和二次引導上要複雜一些,不僅體現在memory map、引導過程等流程上,而且在固件格式、生成和工具鏈的操作上也稍顯繁瑣。之前