原创 armv7指令集 C函數調用 堆棧指針SP的變化

首先說明一下,arm中函數調用不同的編譯器可能差別很大,即使都是arm-linux的交叉編譯器,也有差別,有的編譯器把r7寄存器作爲棧幀寄存器(fp),有的把r11寄存器作爲棧幀指針(fp),例如arm-linux-gnueabihf-g

原创 生產者與消費者model

生產者消費者模型  使用信號量和互斥鎖能夠較好地實現 Semaphore mutex = 1; //緩存區互斥操作的互斥信號量 Semaphore empty = n; //空緩衝區數目 Semaphore full = 0; //滿

原创 微積分的直觀理解

在微積分中,我們進行定積分計算的時候一般是用牛頓萊布尼茲公式,不定積分計算也類似,都需要尋找原函數F(x),但是如果想直觀的理解微積分,我們需要順着公式的反方向進行理解,下面我提供一種直觀理解微積分的思路。 在以下的表達中,我們使用的定積

原创 rtthread 線程調度的啓動 (基於cortex m3系列芯片)

  cortex m3具有用戶級和特權級兩種特權等級  以及 handle模式(處理中斷時運行在handle模式)和線程模式 兩種模式,其中用戶級特權只能運行在線程模式。 如下圖(摘自cortex m3權威指南): 經過測試rtthre

原创 Cortex-M3 PendSV 中斷 系統調用 說明

參考 Cortex-M3權威指南中文版 PendSV異常是和系統調用有些類似,cpu 需要手動將往NVIC 的PendSV 懸起寄存器中寫1,然後產生中斷, 系統調用(SVC)是cortex-M3  CPU執行 SVC指令之後產生中斷(a

原创 函數調用,中斷以及進程切換,的現場保護的區別

首先,函數調用是預料範圍內的代碼執行,是完全可控的,當前執行的函數調用另外一個函數時,是從當前代碼段通過跳轉指令主動跳轉到另外一個代碼段,只需保存跳轉之前的棧頂指針(fp),棧底指針(sp)到棧空間,保存跳轉指令的下一條指令的地址到lr寄

原创 makefile--函數定義 函數調用

函數定義與調用 轉載自:https://www.jianshu.com/p/e2c78c8fb4a5 1. makefile中支持函數的概念 make解釋器提供了一系列的函數供makefile調用 在makefile中支持自定義函數實現,

原创 Makefile中的eval

這裏將openwrt中編譯ipk包的時候使用的的Makefile,進行簡化拿來進行說明,主要用來實驗eval函數的用法 PKG_NAME :=bcl_boot define Package/$(PKG_NAME) SECTIO

原创 stm32f0717bt6和i.mx6ull啓動方式的區別

stm32 stm32啓動方式分爲(根據boot0,boot1的配置選擇): 1)主閃存存儲器= 芯片內置的Flash。這也是正常工作模式 2)SRAM = 芯片內置的RAM 區,就是內存啦。 3)系統存儲器= 芯片內部一塊特定的區域,芯

原创 實對稱矩陣 二次型 合同 相似對角化

一、實對稱矩陣 實對稱矩陣的幾點性質: 1.特徵值必是實數 2.不同特徵值的特徵向量必正交 3.必與對角矩陣相似 4.一定可以用正交矩陣相似對角化(滿足的矩陣爲正交陣),步驟如下     (1)求A的特徵值λ1、λ2、λ3     (2)

原创 rt-thread系統 基於cortex-m3架構 的線程上下文切換實現

參考 官方文檔 https://www.rt-thread.org/document/site/programming-manual/porting/porting/ 線程上下文切換等功能,一般採用彙編格式編寫,不同cpu架構實現方式肯定

原创 特徵基和相似對角化

一、特徵基 這裏談談對特徵基的簡單描述,詳細定義請參考正規教材。 特徵基和特徵向量密不可分,  假設我們有一個矩陣,記做A矩陣,A矩陣可以理解爲一種線性變換,A矩陣的每一列可以看做是變換後的基向量的座標(詳見https://blog.cs

原创 面試題【1】:i++是否原子操作?並解釋爲什麼?

原文鏈接:https://blog.csdn.net/yeyuangen/article/details/19612795 轉載自:https://blog.csdn.net/YEYUANGEN

原创 Qt中生產者消費者模型的兩種常用框架

一、信號量 const int BufferSize = 4096; char buffer[BufferSize]; QSemaphore freeSpace(BufferSize); QSemaphore usedSpace(0)

原创 生產者與消費者模型

生產者消費者模型  使用信號量和互斥鎖能夠較好地實現 Semaphore mutex = 1; //緩存區互斥操作的互斥信號量 Semaphore empty = n; //空緩衝區數目 Semaphore full = 0; //滿