原创 Linux環境搭建--開發板端

上節完成了平臺端的環境搭建,我們的開發板端也要安裝相應的服務。 一.首先說一下我們開發板的啓動流程: bootloader 初始化硬件,然後加載內核 kernel 然後掛接根文件系統,然後啓動我們的應用程序。 二. 當然第一步是要下載我們

原创 5.stm32L476在freeRTOS下使用低功耗

之前說過了硬件層次的降低功耗,stm32中通過tickless降低功耗的方法等(ma級),但是功耗還是不夠低。在使用stm32L476單片機過程中發現有更多的低功耗模式,和時鐘選擇。由於系統需要低功耗,但是同時對實時性要求也很高(快速喚醒

原创 51.Linux裸機開發--ARM基礎概念及彙編環境搭建

之前學習了Linux的應用層開發,下面要開始linux的底層開發,當然最開始我們不是學習bootloader,也不是內核移植,而是開始ARM的裸機開發,那麼我們老說ARM,那ARM是什麼?目前比較火的,美國封鎖我們的華爲,ARM公司又和華

原创 53.ARM彙編指令

爲什麼要學習彙編,這裏就不說了,反正就是重要。 一.常用的彙編指令       二.彙編指令實例 說了那麼多的指令感覺蒙圈了,其實看下例子我們就知道怎麼用了,我們完全可以將C語言代碼,全部使用匯編來進行實現。 示例1: if (a==0

原创 stm32你真的瞭解嗎?

目錄 一.stm32的發展歷程 1 二.ARM處理器框圖 3 三.Stm32 存儲器映射(詳細地址可查看stm32 datasheet) 4 四.stm32編譯流程 6 五.stm32上電啓動流程 7   一.stm32的發展歷程 1.芯

原创 34.Linux應用層開發--進程

引入: 今天開始學習linux應用層開發的必備知識,進程。我們之前的實時系統中,都是任務的概念,linux中也有任務概念,同時還有進程和線程,他們之間是什麼關係呢?   其實在我們的windows中也有進程的概念,通過任務管理器就能查看

原创 35.Linux應用層開發---線程

  一.線程的概念和使用 1.線程的概念 爲了進一步減少處理器的空轉時間,支持多處理器以及減少上下文切換開銷,進程在演化中出現了另外一個概念線程。 它是進程內獨立的一條運行路線,是內核調度的最小單元,也被稱爲輕量級的進程。 以前對線程

原创 52.一文帶你理解ARM程序的編譯及執行過程

一.我們的的程序是如何被芯片識別的? 有時我們會想,我們使用c語言或者更高級的語言寫好代碼,這些類似英文字母的東西芯片是怎麼識別並且按照我們的想法執行的? 上圖是一個ARM芯片基本的硬件組成,我們的程序肯定是存放在FLASH上。 我們

原创 Linux環境搭建--軟件及相關服務安裝

終於到了我們的系統移植的階段,在此過程中,我們儘可能的不深入到細節中,完成快速移植。在移植之前我們必須要先搭建好我們的環境,這樣在之後的移植及開發中會快很多。   一.下載安裝必要的軟件 我們在開發linux的時候肯定有很多好用的軟件來輔

原创 54.ARM 異常處理

一.什麼異常? 異常我們可以籠統的理解爲中斷,它的範圍更寬泛一點,復位啊,外部中斷啊,都屬於異常。都是向cpu請求打斷正常的程序流程,進入特定程序的一種機制。   二. ARM中的7種異常種類   優先級 異常 異常模式 描

原创 LSM6DSL學習2

特性:   上節主要對LSM6DSL的一些特性做了一些簡單瞭解,對他的驅動方式做了一個說明並提供了一個簡單的測試代碼,能夠正常的獲取加速度,並且能夠正常的通過IN1產生個中斷。 在簡單的應用中是夠用了,但是在實際的項目中這個瞭解程度是不

原创 29.數據結構 - 查找

查找在我們平時的使用中是非常頻繁的,查找的算法也比較多。查找算法的優劣將影響到計算機的使用效率,應根據應用場合選擇相應的查找算法。   常見的查找方法有順序查找、折半查找、分塊查找、Hash表查找等等。效率最高,應用較多的是哈希表查找,我

原创 27.樹(上)

數據結構中我們常用的就是樹,表,圖。我們上幾節學的都屬於線性表是一對一的線性結構,然後這節我們要開始學習非線性結構樹。 在樹的學習中我們主要學習二叉樹,但是關於樹的一些基本概念我們還是都要知道的。 二叉樹中我們主要學習幾種常用的遍歷方式,

原创 50.在線詞典項目1--需求分析及軟件框架搭建

1引言 1.1編寫目的 經過一段時間的學習,終於要開始一個實戰項目了,這個項目目的就是爲了回顧之前的知識,主要用到了網絡編程客戶端及併發服務器的實現,父子進程,信號,sql數據庫等,我們先詳細理解需求然後對框架及相關進行梳理,思路清晰後,

原创 46.Linux網絡編程--網絡超時優化

一.超時引用必要性 在網絡通信中,很多操作會使得進程阻塞例如 TCP套接字中的recv/accept/connect UDP套接字中的recvfrom 你也不能一直阻塞着不幹活啊, 避免進程在沒有數據時無限制地阻塞,所以引入超時檢測。 當