1.volatile
volatile是宣告該變數是易變的,編譯器把常用的值放在暫存器裡了,所以用的時候,直接在暫存器裡取上一次用的值了 ,可是因為這個變數是易變的,所以可能這有暫存器的優化處理會帶來錯誤,因此加上volatile告訴編譯器這個變數是易變的,必須每次使用都即時的去改變量的記憶體中讀取,這樣就會保證實時性和正確性。這個在嵌入式裡用的比較多。
2.原子操作
在多程序(執行緒)的作業系統中不能被其它程序(執行緒)打斷的操作就叫原子操作
i++是否原子操作?
不是原子操作。理由:
1.i++分為三個階段:
記憶體到暫存器
暫存器自增
寫回記憶體
這三個階段中間都可以被中斷分離開.
嵌入式軟體學習記錄
資料型別 int char short long float double x86編譯器中char 1個位元組 int 2個或4個位元組 long 4個或8個位元組 short 2個位元組 float 4個位元組 double 8個位元組 如 char為1byte 8bit,即28 256,儲存最大...
嵌入式學習
1 c 語言 第二版譚浩強。2 資料結構 c語言版。3 實用 c 程式設計 4 學習51 微控制器,加深對中斷的理解。5 學習 arm微控制器。1 細讀 arm微控制器基礎與實戰 周立功編寫。2 細讀相關晶元的原版英文文件。如 arm920te.pdf s3c2410 1.2.pdf。6 學習uco...
嵌入式學習
一 學什麼?嵌入式linux 所涵蓋的知識面很廣,需要按步驟 不間斷的努力深入學習,才能有所成就。學習嵌入式 linux 需要學習如下 5大知識 按照學習步驟 1.嵌入式處理器 arm 與邏輯程式開發 2.linux系統管理 3.linux應用程式開發 4.linux驅動程式開發 5.linux核心...