1
我正在開發一個家庭項目,以瞭解有關嵌入式系統的更多信息。所以我也沒有專業的用C語言:)失敗注入:嘗試寫入受保護的RAM區域
可以說我有一個結構:
static st_struct myStruct;
的結構定義爲:
typedef struct
{
int a;
long xy;
} st_struct
爲了保持代碼的簡潔這裏,該結構被定義並且只在受保護的RAM區域內有效,地址空間從0x04001000 - 0x04003000。 這個受保護的區域阻止其他任務寫入它,它們只能讀取。
如果某個任務/函數試圖修改或寫入該區域,則CPU將重置。
變量myStruct位於地址0x04001f15內。
我想挑起這種嘗試寫入「不允許」的行爲,完全針對myStruct變量。在這個例子中,實現這種失敗注入的最好方法是什麼?你能舉一個例子怎麼用指針算法來做這個嗎?
如果你說結構確實放在該區域,爲什麼不簡單地執行'myStruct.a = 0; myStruct.xy = 0;'? –
我不清楚你如何安排位於保護區內的建築物,但你這樣做似乎是合理的。在這種情況下,按照@AjayBrahmakshatriya的建議,爲其成員分配值應該會導致嘗試寫入該區域。爲了避免這些寫入延遲或優化的可能性,您應該聲明結構爲'volatile'。 –
對不起,我忘了提及struct聲明,只在RAM保護區內有效。所以外面只有從結構讀取是可能的,但不能寫。寫入會導致CPU復位。 – JohnDoe