嵌入式系統(tǒng)工程師與他們使用的工具知識(shí)一樣好。使用正確的工具來(lái)完成工作可以大大加快開(kāi)發(fā)速度,但不一定能確保成功。開(kāi)發(fā)人員需要了解該工具的復(fù)雜性才能獲得成功。
以一個(gè)非常簡(jiǎn)單的任務(wù)為例,使用IAR編譯器和Processor Expert設(shè)置NXP Kinetis-L微控制器的配置位。
配置位控制NMI和復(fù)位引腳'功能以及初始時(shí)鐘和啟動(dòng)選項(xiàng)。在此示例中,配置位位于十六進(jìn)制地址0x400之后,緊跟在中斷向量表之后。表1顯示了每個(gè)地址控制的內(nèi)容的描述。
表1 - 配置位
開(kāi)發(fā)人員有許多選項(xiàng)有關(guān)如何設(shè)置這些內(nèi)存區(qū)域的信息。首先,他們可以使用鏈接器文件中映射的表來(lái)設(shè)置值?;蛘?,他們可以使用Processor Expert來(lái)設(shè)置值。
設(shè)置配置區(qū)域的值后,開(kāi)發(fā)人員現(xiàn)在可以編譯代碼并將其加載到目標(biāo)上。然后,人們可能期望該過(guò)程在閃存中設(shè)置配置位。然而,運(yùn)行代碼會(huì)揭示不同的故事!盡管已經(jīng)正確配置了這些位,但開(kāi)發(fā)人員會(huì)發(fā)現(xiàn)在目標(biāo)上,這些位仍然設(shè)置為默認(rèn)值。
可能出現(xiàn)什么問(wèn)題?使用IAR,開(kāi)發(fā)人員可以在要加載的代碼和目標(biāo)內(nèi)存中存在的內(nèi)容之間運(yùn)行驗(yàn)證檢查。他們會(huì)發(fā)現(xiàn)驗(yàn)證失敗了。有些東西阻止了配置位的編程。
罪魁禍?zhǔn)资荌AR工具鏈,它阻止了配置區(qū)域的更新。這種行為的原因是這些配置位可能對(duì)程序造成危險(xiǎn),因?yàn)樗鼈兛梢枣i定整個(gè)設(shè)備。無(wú)意中編程它們可能是災(zāi)難性的,因此工具鏈會(huì)自動(dòng)阻止對(duì)目標(biāo)區(qū)域的寫(xiě)入權(quán)限,而無(wú)需向開(kāi)發(fā)人員提及。工具鏈假定開(kāi)發(fā)人員知道這是工具鏈的行為方式。
要編寫(xiě)配置位,開(kāi)發(fā)人員必須通過(guò)向閃存設(shè)置配置添加特殊參數(shù)來(lái)手動(dòng)覆蓋此默認(rèn)行為,如圖1所示。只有在開(kāi)發(fā)人員完成此操作后,他們才能成功寫(xiě)入配置位。沒(méi)有這種“功能”經(jīng)驗(yàn)或知識(shí)的開(kāi)發(fā)人員可能很容易被拋棄并且長(zhǎng)時(shí)間不知所措,特別是因?yàn)檫@些參數(shù)很好地隱藏在多個(gè)子菜單中。
圖1 - IAR覆蓋參數(shù)
故事的寓意是開(kāi)發(fā)人員和項(xiàng)目團(tuán)隊(duì)需要安排時(shí)間定期更新自己并了解他們?cè)谝惶熘惺褂玫墓ぞ叩母嘈畔?- 今天的基礎(chǔ)。此外,項(xiàng)目經(jīng)理需要認(rèn)識(shí)到,時(shí)間表必須分配時(shí)間來(lái)學(xué)習(xí)工具。開(kāi)發(fā)人員通常會(huì)知道他們的工具鏈的日常功能,但是這個(gè)工具的復(fù)雜功能可以真正發(fā)揮作用并提供最強(qiáng)大的功能。
-
嵌入式
+關(guān)注
關(guān)注
5060文章
18979瀏覽量
302228 -
PCB打樣
+關(guān)注
關(guān)注
17文章
2968瀏覽量
21629 -
華強(qiáng)PCB
+關(guān)注
關(guān)注
8文章
1831瀏覽量
27701 -
華強(qiáng)pcb線路板打樣
+關(guān)注
關(guān)注
5文章
14629瀏覽量
42947
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論