亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3849 | 回復: 3
打印 上一主題 下一主題

[BootLoader] 跨文件使用全局變量 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-11-13 18:35 |只看該作者 |倒序瀏覽
最近在做bootloader的整改,基本工作已經(jīng)完成,最后卻被C語言中最基本的全局變量的使用難住了。
我定義了一個全局變量glb_bootSafe,當crc校驗代碼區(qū)通過那么就置glb_bootSafe為FALSE,正常啟動系統(tǒng);
當crc校驗代碼區(qū)不通過,那么置glb_bootSafe為TRUE,意味著從安全區(qū)啟動安全系統(tǒng)。
由于代碼的實現(xiàn)比我上面說的要復雜,所以只能在../src/shared/nvram/nvram.c完成crc的校驗,并設置glb_bootSafe的值;
在../src/cfe/cfe/arch/mips/board/bcm947xx/src/ui_bcm947xx.c中根據(jù)glb_bootSafe的值判斷是不是要啟動安全系統(tǒng)。
問題來了,我在ui_bcm947xx.c中獲取的glb_bootSafe值并不是nvram.c中設置的值,雖然我也用extern bool glb_bootSafe;導入了。
編譯并沒有報錯。

現(xiàn)在我的解決方法是通過往特定的地址寫值,然后通過讀這個地址的值來判斷是不是要啟動安全系統(tǒng)。不過總對上面的問題耿耿于懷,
有清楚地朋友指導一下!Thank you!

論壇徽章:
0
2 [報告]
發(fā)表于 2010-11-13 20:11 |只看該作者
你確定程序沒問題,也許是被優(yōu)化了。
您可以取glb_bootSafe的地址,然后從地址再讀一次

linux 的一個通用實現(xiàn):
#define ACCESS_ONCE(x)     (*(volatile typeof(x) *)&(x))

論壇徽章:
0
3 [報告]
發(fā)表于 2010-11-14 09:15 |只看該作者
回復 2# 奇門遁甲-lu


    Thanks a lot!我試一試!

論壇徽章:
0
4 [報告]
發(fā)表于 2010-11-14 09:52 |只看該作者
回復 2# 奇門遁甲-lu


    我找到了原因了,是bootloader在啟動的過程中把該全局變量的地址重寫“0”了!謝謝!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP