原创 Cortex-M3 雙堆棧指針(MSP&PSP)

【雙堆棧指針(MSP&PSP)】 Cortex-M3內核中有兩個堆棧指針(MSP & PSP),但任何時刻只能使用到其中一個。 復位後處於線程模式特權級,默認使用MSP。 通過SP訪問到的是正在使用的那個指針,可以通過MSR/MRS指令訪

原创 字節序轉換宏

關鍵是big endian和little endian的概念。注意16bit機器和32bit機器(以32位爲訪問單位)下排列不同。內存地址從低地址向高地址增長,big endian是高位數據優先,即高位放在低地址。而little endi

原创 U-Boot啓動過程完全分析(uboot啓動2個階段的分析)

 1.1       U-Boot工作過程   U-Boot啓動內核的過程可以分爲兩個階段,兩個階段的功能如下:        (1)第一階段的功能 Ø  硬件設備初始化 Ø  加載U-Boot第二階段代碼到RAM空間 Ø  設置好棧 Ø

原创 linux 內核鏈表解析2

我用一個程序來說明在struct person 中增加了struct list_head 變量後怎麼來操作這樣的雙向鏈表。   [cpp] view plaincopyprint? #include <stdio

原创 gdb調試不顯示代碼的原因

我們從一個最簡單的C語言程序開始。源文件main.c在 用戶目錄gdb文件夾下。 florian@florian-pc:~/gdb$ cat main.c int main() {     return 0; };

原创 GCC連接器--動態庫(Shared Library)中 PLT 和 GOT 的使用機制

PLT (Procedure Linkage Table) 和 GOT (Global Offset Table) 是 GCC 中生成shared library的重要元素。至於爲何一定要這兩個表? GOT的功用 以gcc內建的libc.

原创 linux 內核鏈表解析1

前言: 在linux 源代碼中有個頭文件爲list.h 。很多linux 下的源代碼都會使用這個頭文件,它裏面定義了一個結構, 以及定義了和其相關的一組函數,這個結構是這樣的:   struct list_head{ struct

原创 volatile陷阱

對於volatile關鍵字,大部分的C語言教材都是一筆帶過,並沒有做太過深入的分析,所以這裏簡單整理了一些關於volatile的使用注意事項。實際上從語法上來看volatile和const是一樣的,但是如果const用錯,幾乎不會有什麼

原创 函數指針

1.簡單使用函數指針 函數指針的聲明方法爲: 函數類型 (標誌符指針變量名) (形參列表); 注1:“函數類型”說明函數的返回類型,“(標誌符指針變量名 )”中的括號不能省,若省略整體則成爲一個函數說明,說明了一個返回的數據類

原创 tcp/ip協議各個層作用

從協議分層模型方面來講,TCP/IP由四個層次組成:數據鏈路層、網絡層、傳輸層、應用層 一、數據鏈路層 數據鏈路層是負責接收IP數據報並通過網絡發送之,或者從網絡上接收物理幀,抽出IP數據報,交給IP層。 傳輸有地址的幀以及錯誤檢測功能

原创 ARM gdb調試工具安裝

arm-linux的gdb移植分爲兩種情況.一種是交叉調試版。這一種模式是需要編譯一個arm-linux版本gdbserver (GDB的stub模塊).然後再編譯一個X86版本交叉調試的gdb.爲了與桌面版本身的gdb 區別開來,一般

原创 sizeof和strlen 比較經典

下面是網上的一個比較經典的例子,分析一下:   char *c="abcdef"; char d[]="abcdef"; char e[]={'a','b','c','d','e','f'};   printf("%d%d/

原创 fatfs結構及源碼分析。

原文鏈接:https://blog.csdn.net/fhb1922702569/article/details/91368360 目錄 一、API的函數功能簡述  二、FATFS主要數據結構 

原创 STM32-移植FATFS的NANDFLASH驅動

1,在http://elm-chan.org/fsw/ff/00index_e.html上下載ff007c.zip,並把ff007c.zip裏面的  src文件夾複製到D:\works\EK-STM3210E-UCOSII下,並改名爲Fa

原创 STM32的ITM跟蹤調試功能介紹及實現(一)KEIL篇

原文鏈接:https://www.jianshu.com/p/0255097f594e ITM,(英文:Instrumentation Trace Macrocell,指令跟蹤宏單元),是一種針