? ? ? ? 前言:筆記韋東山老師的rtos教程,連接放在最后
?#ARM介紹
? ? ? ? arm芯片屬于精簡指令集risc,所用的指令比較簡單,ARM架構是一種精簡指令集(RISC)架構,廣泛應用于移動設備、嵌入式系統、物聯網等領域。ARM芯片采用ARM架構設計,通常具有較低的功耗和更高的性能效率。
? ? ? ? 所以arm架構也就是32位精簡指令集處理器架構。精簡指令集相對于復雜指令集來說,指令數目少,在通道中只包含最有用的指令;執行時間短,確保數據通道快速執行每一條指令;使CPU硬件結構設計變得更為簡單;每條指令都采用標準字長。這就是,RISC:精簡指令集(Reduced Instruction Set Computer)
? ? ? ?在操作系統創建一個任務的時候,通常要創建棧,分配棧的大小,理解棧之后才能理解rtos的本質,對arm芯片的架構有著一些理解能夠幫助我們更好的理解,rtos的多任務本質。
? ? ? ? ARM架構:System on Chip 縮寫SOC,翻譯:在一個芯片上有著完整的系統,ARM單片機芯片,集成了一個完成的系統,cpu? 內存? ?flash(對應電腦的硬盤)flash用于保存程序,cpu用來運行程序,和計算功能,在keil5下載選型里面有一個選型,是擦除flash,就是擦除arm芯片里面存儲程序的flsh,在程序運行的過程中,會用到內存的空間去存儲變量,沒有計算功能,使用單純為了訪問數據,寫數據,
? ? ? ? ? ? ? ? ? ? ? ?
????????匯編指令介紹:掌握匯編指令可以理解程序的本質,理解rtos的本質,
? ? ? ? 可以將匯編語言分為 地址 寄存器?目的 然后分別帶入,將地址什么樣的目的寫入寄存器
????????讀內存:Load
LDR R0,[R1,#4];//讀地址"R1+4",得到的4字節數據放入R0
目的LDR? ?寄存器 R0? ?地址[R1,#4]
????????寫內存:Store
STR R0,[R1,#4];//把R0的四字節數據寫入"R1+4"
? ? ? ? 加減:ADD? SUB
ADD R0 ,R1 ,R2;//將R1 R2 的值相加放入 R0
SUB R0,R0,#1;將R0與R1的值相減放入R0
? ? ? ?比較:Compare
DMP R0,R1;R0與R1二者比較的結果存放在PSR中? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? 轉跳:Branch
B? ?main ; Branch,//直接跳轉
BL main ;Branch and Link //先把返回地址保存在LR寄存器里在轉跳
? ? ? ?實際函數的反匯編語言:
int add(volatile int a,volatile int b)
{volatile int sun;sum = a+b;return sum;}
? ? ? ? 這里是add()函數變量賦值,然后再調用add函數,進行響應。
? ? ? ? ? ? ? ? 地址? ? ? ? ? ? ? ? ? ? ? 機器碼? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 匯編碼
? ? ? ? 燒錄在芯片上的只有機器碼,匯編碼是用來給人看的,這一步是什么意思,這些地址和機器碼燒錄在flash里面,cpu通過讀取,地址來獲得機器碼,也就是 讀flash地址 得到機器碼? 執行機器碼 這么一個過程,上面這個匯編語言是add這個函數的反匯編程序。
????????????????????????????????????????歡迎指正,希望對你有所幫助!!!
[3-2-1]_ARM架構簡明教程_硬件架構與匯編指令_嗶哩嗶哩_bilibili