(1)crc只是完整性.有效性,應該包含bin檔案中,特定位址資料的判別.
(2)加個版本號判斷,產品標準識別,然後再crc校驗。
(3)自定義檔案格式,增加檔案頭,內建:硬體id,程式版本,編譯日期,等資訊
負責公升級的程式,先讀取這些資訊,再讀取硬體已有程式的資訊,再做決定如何做
自己加校驗以及產品的型號,版本等
(4)8樓提到的檔案頭,可以在公升級之後寫到程式區最後乙個扇區未尾,用於下次公升級時比較板本號之類的操作。
(5)在公升級檔案的檔案頭(上傳的第一包)裡含有基本校驗資訊,如適用的裝置型等資訊,
如果不對就終止公升級,當第一包的基本資訊校驗通過,才允許上傳整個bin檔案,
當上傳完畢後進行crc校驗,無誤則公升級成功,否則恢復還原公升級前的版本,並上報公升級失敗等。。。
(6)編譯日期有不有自動加入的手法?請指教!
const char c_date __attribute__((at(0x08001000))) = __date__; //指定位址存放日期
const char c_time __attribute__((at(0x08002000))) = __time__; //指定位址存放時間
(7)(8)
微控制器做通訊,怎麼實現數字簽名?
訊息簽名和檔案簽名類似. 甚至預先燒個一樣的key用來做hash也可以的
(9)
通過bin檔名來確定嗎?這是乙個方法,但是bin檔名可以被使用者輕易更改,那就只能從bin檔案內容本身入手了。
常規方法是,通過某些工具,在bin檔案中加幾個位元組標著檔案的特殊性,但是眾所周知的是,魚鷹比較懶,看似簡單的只是加入幾個位元組的事情,如果產品成型的話比較好說,更新次數比較少,但是一旦產品處於測試階段,更新頻繁,累人不說,還可能出錯。
那麼有什麼辦法呢?就從**本身入手好了。
方案確定下來了,但是怎麼處理呢,標誌位放在**,怎麼放?又是一番苦思冥想。
一開始想到的是想將標誌位放在bin檔案最後,但是bin檔案的大小是不固定的,雖然說上位機可以把bin檔案大小傳下來,但是怎麼放是個問題,開始打算通過修改鏈結檔案實現,但是發現自己對鏈結過程不熟,對組合語言(彙編可以指定位址)也不熟,怎麼辦?
當bootloader在寫前面8個位元組前,只要再判斷這個位址的標誌位是否正確即可。
到此,韌體公升級方面的知識應該比較完善了,但還有乙個問題,如何對bin檔案加密與解密呢?
這個問題只有下次專案需要的時候再研究了。
(10)
韌體更新一到一半,因為某種原因失敗了(通訊錯誤、掉電),該如何處理?
系統,VS,IIS公升級後的一些站點配置的注意點
為了給vs公升級,重灌了系統,同時一些之前的站點都需要配置一遍。配置時遇到了一些問題,總結一下 1 虛擬目錄和httpd.ini中的配置需要對應,要不位址重定向的時候找不到頁面 2 程式池中.net framework版本和站點程式對應,之前有的站點是基於2.0的有的是基於4.0的 3 iis 7中...
核心公升級的一些體會
下面是我在各處蒐集來的關於我目前出現錯誤的一些解法 vmware linux公升級核心出現error 6 mounting ext3 問題進入新核心。到uncompressing linux這一行都是正常的。但是後面顯示 red hat nash version 4.2.1.8 starting r...
ORACLE公升級的一些事
一 sql rdbms admin catupgrd.sql 說明 代表 oracle home,在linux中可能以 oracle home表示。表示執行指令碼 參考 二 從10.2.0.1公升級到10.2.0.4 參考 1 先看oracle的監聽和oracle的服務是否都啟動了。啟動oracle...