將資料儲存在RAM中

2021-08-18 13:51:28 字數 1050 閱讀 7723

在一些應用場景下,需要在微控制器復位後儲存一些資料 。在實現這一目標之前,需要對微控制器的啟動過程有乙個粗略的了解。

1.    微控制器啟動方式

1.1    冷啟動

微控制器的冷啟動指的是微控制器的上電啟動,即微控制器在掉電狀態下的上電啟動。此時微控制器ram中的資料是隨機的,可能是0x00或是0xff,具體與晶元特性有關。

1.2熱啟動

微控制器的熱啟動指的是微控制器在上電狀態下,由於看門狗復位、外部復位電路復位等硬體復位,或是軟體復位等原因導致的微控制器重新啟動。熱啟動時,ram區的資料是可以被保留的。

2.    資料儲存方式

2.1    儲存到非易失儲存區域中

如果需要在冷啟動時獲取前次儲存的資料,那麼這個資料只能被儲存在eeprom、flash等非易失儲存介質中。如果需要儲存在內部flash中,需要對flash區域的分配有乙個充分的了解,避免覆蓋掉其他內容。

2.2    儲存在ram中

由於寫flash或是eeprom時存在的讀寫速度慢、扇區讀寫壽命有限等問題,在僅僅需要在熱啟動場景下儲存的資料,就可以儲存在ram中。

需要將資料儲存在ram中時,需要保證啟動時ram區不被重新初始化。如果使用keil,keil會為每款cpu提供乙個startup.s的彙編啟動**,使用者可以修改其啟動過程或是通過如下設定,使指定ram區域不被初始化:

指定某一ram區no init後,還需要利用__attribute__將要儲存的變數指定儲存在這一區域:

static uint32_t m_magic_code  __attribute__( ( at( 0x20003ff0), zero_init) );

這時候檢視.map可以看到以下字樣:

下次上電,直接讀取該值即可。

這裡需要注意的是,凡是儲存在no init區域的資料,需要保證其在使用前都是確認過其有效性的。

將資料儲存在本地

localstorage localstorage.setitem id value 獲取用localstorage.getitem id 特點 資料一直保留在本地,除非手動刪除 sessionstorage sessionstorage.setitem id value 獲取用sessionsto...

將Session儲存在SqlServer中

首先需要安裝用於存放會話的資料庫,當然,ms在.net framework中已經提供了現成的工具。在類似於 c windows microsoft.net framework v2.0.50727文 件夾下可以找到installsqlstate.sql檔案,這其實是乙個文字檔案,裡面存放著用於建立 ...

將Session儲存在SqlServer中

首先需要安裝用於存放會話的資料庫,當然,ms在.net framework中已經提供了現成的工具。在類似於 c windows microsoft.net framework v2.0.50727資料夾下可以找到installsqlstate.sql 檔案,這其實是乙個文字檔案,裡面存放著用於建立 ...