幾個主要的步驟
1.確定方向晶衷,需求
2.制定相應(yīng)的策略來執(zhí)行
3.添加代碼,解決各種BUG
確定方向阴孟,需求
通常來說晌纫,移植主要是在下面兩個方向會涉及
- 1.添加小模塊(例如給設(shè)備添加驅(qū)動)
這種情況一般需要添加的代碼并不多,應(yīng)該以實際需要為導(dǎo)向永丝,從給出的例子锹漱,或需要添加的主進(jìn)程(線程)函數(shù)中提取出主要涉及的代碼,逐步添加到新的工程中慕嚷,需要什么找什么哥牍,如果涉及某個文件中的大量函數(shù),就將該文件整體引用進(jìn)來(:燃臁P崂薄!注意代碼結(jié)構(gòu))挠说;如果涉及很多文件澡谭,則最好只將需要用到的函數(shù)提取出來,重新放在新的源文件中损俭,同時做好注釋蛙奖; - 添加大模塊(例如添加新的相關(guān)協(xié)議及全套輔助功能函數(shù))
相對來說這種情況下需要添加的代碼是較多的,因而需要從整體入手杆兵,先把文件夾整體拷貝到相應(yīng)位置雁仲,再梳理引用邏輯,解決MAKEFILE等問題
- 添加大模塊(例如添加新的相關(guān)協(xié)議及全套輔助功能函數(shù))
2.18更新
移植一般會有相應(yīng)指導(dǎo)教程琐脏,嚴(yán)格遵守即可
通常來說代碼部分會分三步
- 1.底層函數(shù)配置
通常SDK中會有諸多用到底層函數(shù)的地方伯顶,會事先寫好調(diào)用,并留下底層空函數(shù)等待添加骆膝,如果有硬件修改的話會更加復(fù)雜祭衩,要考慮到更多的邏輯問題,通常有延時函數(shù)sleep(),內(nèi)存分配函數(shù)malloc(),內(nèi)存釋放函數(shù)free(),臨界區(qū)相關(guān)函數(shù)critical()阅签,具體名字可能會有所不同掐暮,但是實際功能是一樣的,如果有其他接口要更新政钟,則需要進(jìn)行新的 處理函數(shù)路克,這個種類較多樟结,不列舉了; - 2.處理邏輯更新
主要是將新加入功能或更新的大段代碼或整個文件拷貝到工程相關(guān)目錄下精算,可能會有一些基礎(chǔ)宏定義等的適配瓢宦,該適配部分較為簡單,但是實際移植文件會有諸多問題灰羽; - 3.配置文件修改
SDK可能會包含很多芯片/模組的匹配代碼驮履,需要對相應(yīng)宏定義進(jìn)行選擇,而且針對不同硬件廉嚼,可能GPIO玫镐,I2C等速度參數(shù)之類的也需要修改,這個位置應(yīng)該比較好找怠噪,通常就是typedef.c之類的恐似; - 4.解決BUG
主要是給第二步留下的問題處理,本步驟較為繁瑣傍念,主要看文檔是否詳細(xì)矫夷,如果已經(jīng)考慮到了很多問題,則會比較方便就能完成憋槐;