最近參與了一個項目,需要用嵌入式匯編寫測試程序。匯編程序?qū)戇^,C程序也寫過,但是將它們混合起來寫還是第一次,完全沒有概念。只能上網(wǎng)找資料,自己慢慢摸索。
自己一直用Windows操作系統(tǒng),但是我們的項目是在Linux系統(tǒng)上,這兩者的匯編語言系統(tǒng)是不同的,windows一直是Intel匯編,而Linux是At&T匯編。為了調(diào)試的方便,我決定現(xiàn)在windows中嘗試著寫點嵌入式匯編,然后再在Linux中寫(主要原因是自己對Linux調(diào)試不熟悉)。
首先遇到的第一個問題是,格式到底是什么。上網(wǎng)查資料,前篇一律,都是_asm_ _volatile_(…);格式,但是自己弄的時候總是不行,說明網(wǎng)絡(luò)雖好,但是不可盲目相信。經(jīng)過多番測試,我發(fā)現(xiàn)windows下嵌入式匯編的格式只有_asm關(guān)鍵字,也沒有volatile;以前的括號現(xiàn)在也變成大括號,最后也沒有引號。我自己寫的一個簡單測試程序為:
#include
#include
//測試bsf指令
void test()
{
int value,index=32;
_asm {
mov eax,index
bsf ebx,eax
mov value,ebx
}
printf("value is %d/n",value);
}
void main()
{
printf("Hello World/n");
test();
}
Windows嵌入式匯編的特點是:
1. 匯編是Intel匯編,而不是AT&T匯編;
2. 關(guān)鍵字是_asm,而不是其他,這個有可能和自己的環(huán)境有關(guān),如果你自己重新定義宏,那就是你自己定義的關(guān)鍵字;3. 雖說有volatile關(guān)鍵字,但是用上卻報錯,具體我也不知道怎么用;4. 沒有冒號指定輸入輸出,要輸入和輸出的數(shù)可以直接在匯編語言中使用;5. 匯編代碼要用大括號包圍,而不是小括號,而且最后也沒有分號;6. 如果不用大括號包圍,則必須每句匯編代碼之前都有_asm關(guān)鍵字。
從上面的敘述中,可以看出貌似windows嵌入式匯編要簡單很多。
在windows中搞定之后,就要在Linux中進(jìn)行測試。我首先做的就是直接復(fù)制在windows中的程序到Linux中,很明顯自己的無知是要報錯的。
有經(jīng)過多番測試,得到在Linux中執(zhí)行無誤的代碼為:
#include
void test()
{
int bsf=0,bsr=0,input=0x12345,flag;
asm volatile ("movl %3,%%eax/n"
"movl %3,%%ebx/n"
"bsf %3,%%cx/n"
"movzwl %%cx,%0/n"
"bsr %3,%%dx/n"
"movzwl %%dx,%1/n"
"pushf/n"
"pop %2/n"
:"=r"(bsf),"=r"(bsr),"=r"(flag)
:"m"(input)
);
printf("bsf value is %d/n",bsf);
printf("bsr value is %d/n",bsr);
printf("flag is %x/n",flag);
}
int main()
{
printf("Hello World/n");
test();
return 0;
}
從結(jié)構(gòu)來看,Linux下的要麻煩不少。首先用的匯編是windows程序員不熟悉的AT&T匯編,而且還要定義輸入輸出,寄存器用起來還要兩個%……總之,比較麻煩。但是我沒有貶低Linux的意思,只要用好了,功能還是很強(qiáng)大的。
Linux下嵌入式匯編的特點是:容-源-電-子-網(wǎng)-為你提供技術(shù)支持
本文地址:http://www.mnu8.com/dz/22/15430445482641.shtml
本文標(biāo)簽:
猜你感興趣:
可編程展頻振蕩器 YSO171PS系列
展頻晶振(Spread Spectrum Crystal Oscillator,簡稱SSXO)應(yīng)運而生。展頻晶振是一種特殊類型的晶體振蕩器,主要依托于擴(kuò)展頻譜技術(shù)。這項技術(shù)在抗干擾通信中有著廣泛的應(yīng)用
選擇石英晶振時如何逐步確定參數(shù)和類型
常見的設(shè)備頻率參數(shù)都在10MHZ到100MHZ之間,還有要確定下是否使用到低頻晶體等。確定晶振參數(shù)時要考慮到具體的應(yīng)用需求,同時核對晶振封裝上的參數(shù)標(biāo)注,確保購買的晶振參數(shù)符合我們的要求。
差分晶振在實際應(yīng)用中有哪些優(yōu)勢
目前,差分晶振已應(yīng)用于衛(wèi)星、火箭等領(lǐng)域。可在通信、導(dǎo)航、汽車、航空航天、國防、工業(yè)、電信、消費市場、、固定通信、消費電子、汽車電子、物聯(lián)網(wǎng)、手機(jī)、對講機(jī)、GPS/北斗定位器、汽車電子系統(tǒng)、倒車?yán)走_(dá)、小基站、LTE、RFID、激光測距儀、筆記本、平板電腦、數(shù)碼套群通信系統(tǒng)、儀器儀表等諸多領(lǐng)域推廣應(yīng)用。
高精準(zhǔn)360°全景環(huán)視機(jī)器人 穩(wěn)定的寬電壓有源晶振 YSO110TR,實現(xiàn)智能機(jī)器人應(yīng)用
YSO110TR采用主流封裝尺寸3.2*2.5mm,供應(yīng)穩(wěn)定,性價比高,使其在智能機(jī)器人的集成和布局上更加便捷。同時,它具備寬電壓范圍1.8V-3.3V
如何在有源晶振十大品牌內(nèi)按需選擇
在挑選和購買有源晶振時自然要重視品牌的選擇,因此不少用戶都是在有源晶振十大品牌內(nèi)對比和挑選。
選晶振時該如何判斷品質(zhì)好壞
晶振作為重要的電子元器件芯片在很多方面都有應(yīng)用,當(dāng)批量購買晶振時自然不能只關(guān)注其價格,尤其是在對比預(yù)算內(nèi)的晶振產(chǎn)品時要重視其品質(zhì)。
溫度補(bǔ)償晶振也是石英晶體振蕩器之一,簡稱“溫補(bǔ)晶振”
TCXO溫度補(bǔ)償石英晶體振蕩器是一種通過附加的溫度補(bǔ)償電路來減小因環(huán)境溫度變化而引起的振蕩頻率變化的石英晶體振蕩器。
高精度保障 智能機(jī)器人的“心臟”:寬電壓有源晶振YSO110TR
寬電壓有源晶振 YSO110TR的優(yōu)勢在于其高精度和穩(wěn)定性。擁有8MHz的頻率輸出,全溫范圍內(nèi)總頻差僅為±30PPM,YSO110TR保證了機(jī)器人系統(tǒng)的高精度控制和穩(wěn)定運行。無論在-40~+85℃的嚴(yán)苛溫度環(huán)境下,晶振都能保持穩(wěn)定的性能,為智能機(jī)器人的高精度運動和計算提供可靠的時鐘信號。
分享 | 可編程晶振芯片幾個知識點
什么是可編程晶振?可編程晶振多為有源晶振,由兩個芯片組成;一個是全硅MEMS諧振器,一個是具有溫補(bǔ)功能的芯片,可以啟動電路鎖相環(huán)CMOS。它采用標(biāo)準(zhǔn)化的半導(dǎo)體芯片MCM封裝。可以采用全自動標(biāo)準(zhǔn)半導(dǎo)體制造工藝
溫補(bǔ)晶振的5種分類大家要知道
對于溫補(bǔ)晶振分類有溫度補(bǔ)償晶體振蕩器、壓控晶體振蕩器、恒溫晶體振蕩器和數(shù)字補(bǔ)償晶體振蕩器,這些都是溫補(bǔ)晶振分類,尤其是每一種都有自己獨特的性能。
手機(jī)車載互聯(lián)-有源晶振YSO120TK穩(wěn)定連接未來
YSO120TK采用3225 4P主流封裝尺寸,小型化的設(shè)計使其在汽車內(nèi)部布局更加靈活。無論是嵌入式控制器還是車載通信模塊,YSO120TK都能為其提供可靠的時鐘源,為手機(jī)車載互聯(lián)的順暢體驗提供強(qiáng)有力的支持。
溫補(bǔ)晶振有什么特性呢
其實對于溫補(bǔ)晶振特點都是需要了解其特性的。溫度補(bǔ)償晶體振蕩器是一種石英晶體振蕩器,它通過加入溫度補(bǔ)償電路來減小環(huán)境溫度變化引起的振蕩頻率的變化。具有溫度補(bǔ)償功能的石英晶體振蕩器可分為三類:直接補(bǔ)償、間接補(bǔ)償和數(shù)字補(bǔ)償。
高頻靈活定制-存儲與計算 可編程差分振蕩器YSO210PR應(yīng)用于服務(wù)器與大數(shù)據(jù)
可編程差分振蕩器 YSO210PR在機(jī)器人的智能視覺控制、工業(yè)屏、望遠(yuǎn)鏡等領(lǐng)域具有顯著優(yōu)勢。其高精度、穩(wěn)定性和靈活的定制特性使得YSO210PR成為了機(jī)器人應(yīng)用中不可或缺的元器件,為機(jī)器人技術(shù)的發(fā)展和應(yīng)用提供了強(qiáng)有力的支持。
溫補(bǔ)晶振是干什么的?這些知識要知道
溫補(bǔ)晶振在無線傳輸?shù)膽?yīng)用中,無線透明傳輸模塊以體積小、功耗低為重要發(fā)展指標(biāo)。在正常工作條件下,常見的晶振頻率的精度可以達(dá)到百萬分之五十,而溫補(bǔ)晶振的精度更高。溫度補(bǔ)償晶振由恒溫槽控制電路和振蕩電路組成。通常用熱敏電阻“橋”組成的差分串聯(lián)放大器來實現(xiàn)溫度控制。
智能終端通信利器:低抖動YSO690PR可編程天線完美融合
在通信科技的推動下,智能終端天線和低抖動晶振不斷創(chuàng)新,將引領(lǐng)通信產(chǎn)業(yè)進(jìn)入新的時代。YSO690PR系列作為高性能智能終端通信利器,將為各類智能終端設(shè)備提供更加穩(wěn)定和高效的通信支持,推動科技的蓬勃發(fā)展。無論是日常生活還是工業(yè)應(yīng)用,這些優(yōu)秀的技術(shù)將為人們帶來更加便捷、智能的通信體驗。
使用差分晶振有什么好處呢?
其實對于差分晶振的好處有很多,比如差分晶振可以外部電磁干擾(EMI)具有很高的免疫力。一個干擾源對差分信號的每一端的影響程度幾乎相同。由于電壓差決定了信號的值,兩條導(dǎo)線上的任何干擾都將被忽略。除了較不敏感的干擾之外,差分信號比單端信號產(chǎn)生更少的EMI,這是在工業(yè)生產(chǎn)中比較常見的。
YXC有源晶振為功放音響提供時鐘方案
在功放音響設(shè)備中,晶振作為關(guān)鍵的元件,對于電路的穩(wěn)定性和性能發(fā)揮起著至關(guān)重要的作用。然而,不正確使用晶振可能導(dǎo)致一系列問題,如播放雜音等,因此對其進(jìn)行優(yōu)化十分重要。
穩(wěn)定性與高性能的晶體諧振器YSX321SL無源晶振,清晰的可視門鈴體驗
YSX321SL是一款3225、4P貼片晶振和晶體諧振器,采用先進(jìn)的陶瓷焊縫工藝制作,確保了產(chǎn)品的高精度、高頻率穩(wěn)定性和可靠性。無源晶振具有低功耗和低抖動的特點,而貼片式金屬封裝則進(jìn)一步增強(qiáng)了其性能表現(xiàn)。這種封裝還降低了電磁干擾(EMI)對系統(tǒng)的影響,保證了信號傳輸?shù)姆(wěn)定性和可靠性。
YXC晶振解決方案AI服務(wù)器中的應(yīng)用
目前,應(yīng)用在AI服務(wù)器中的振蕩器主要為差分晶振。主要是因為,相比單端輸出振蕩器,差分晶振可以產(chǎn)生高質(zhì)量的差分時鐘信號,對共模干擾和噪聲具有較強(qiáng)的抵抗能力,能提供大幅度和高頻率的時鐘信號,適合驅(qū)動長線路,這些特點很好地滿足AI服務(wù)器對穩(wěn)定高性能運行的要求,所以AI服務(wù)器選用差分晶振作為其基準(zhǔn)時鐘信號源是十分合理的選擇。
ACM6252 單相正弦波/方波(BLDC)直流無刷電機(jī)驅(qū)動IC解決方案
深圳市永阜康科技有限公司現(xiàn)在大力推廣一顆單相正弦波/方波直流無刷電機(jī)驅(qū)動IC-ACM6252. 工作電壓3.1V-18V、工作電流1.2A, 可覆蓋大多數(shù)中小功率(<1A)的風(fēng)機(jī)、泵機(jī)類應(yīng)用。