找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3125|回復(fù): 2
收起左側(cè)

一個有關(guān)0.0625℃的運算想到的問題

[復(fù)制鏈接]
ID:65608 發(fā)表于 2014-9-1 00:34 | 顯示全部樓層 |閱讀模式
碰到一哥們號稱挺NB的嵌入軟件工程師,看了他的代碼后就歐拉,事情是在一個只有4K代碼的單片機接2個DS18B20測溫傳感器,都知道DS18B20輸出數(shù)據(jù)只要乘以0.0625就是測量的溫度值,這哥們說程序空間怎么也不夠,實際上程序只有簡單的采集兩個DS18B20的數(shù)據(jù)轉(zhuǎn)換成溫度值,之后在1602液晶上顯示,挺簡單個程序,怎么也想不通為什么程序空間不夠。只讀了一下代碼發(fā)現(xiàn)程序就沒動腦子,真的用浮點庫把DS18B20數(shù)據(jù)直接乘以0.0625了,那程序不超才怪呢,稍微動動腦子也會知道0.0625不就是1/16嗎,把DS18B20的數(shù)據(jù)直接右移4位不就是了(當(dāng)然要注意符號),這右移程序可十分簡單還省空間,問題很好解決,空間自然也就夠了。
    現(xiàn)在想來嵌入處理器確實是進(jìn)步了,程序空間是越來越大,數(shù)據(jù)RAM空間也越來越大,導(dǎo)致很多人在寫程序的時候真的是什么都不顧,借著C語言的靈活性真是縱橫馳騁,壓根也不講個程序效率和可靠性。正如前些日子見到一孩子用ARM cortex-m3處理器給人接活寫個便攜表的1024點FFT算法,本身12位的AD系統(tǒng),這小家伙直接到網(wǎng)上下載了浮點的FFT算法代碼就給人加上了,結(jié)果整個程序死慢死慢的,人家用戶可不買單啊,這時要動動腦子把數(shù)據(jù)直接變成乘以某個數(shù)變成整數(shù)后用定點FFT處理,之后再把數(shù)據(jù)除一下不就行了。速度自然也快了,而且也能省下空間。實際當(dāng)中我們做嵌入軟件很多時候犯懶都忽視程序執(zhí)行效率問題,是都能實現(xiàn)功能,但有時候就是沒法談性能。我?guī)状闻龅竭@樣的工程師,直接把傳感器的信號放大后進(jìn)嵌入處理器的AD,也不看看AD數(shù)據(jù)是否穩(wěn)定有效,直接就進(jìn)行FFT運算,那FFT結(jié)果真是熱鬧,不難看出混疊很嚴(yán)重,于是又機械地在FFT基礎(chǔ)上再去衍生算法,系統(tǒng)程序越做越大,速度越做越慢。實際上也很簡單的事,在傳感器放大信號進(jìn)AD之前來一級抗混疊濾波基本也就解決了,大有所謂嵌入軟件高手的概念是程序幾乎是萬能,實在解決不了就換大程序空間更高速的處理器,整個惡性循環(huán)。
    經(jīng)常聽說現(xiàn)在流行低碳族,我想出色的嵌入軟件工程師最容易成為低碳一族,只要讓代碼高效那處理器頻率自然可以靈活降下來,自然耗電也就少了,二氧化碳排放也就少了。想想目前到處都是嵌入處理器,代碼條數(shù)看來也別有效果。
回復(fù)

使用道具 舉報

ID:56665 發(fā)表于 2014-9-1 11:51 | 顯示全部樓層
有一定的道理,做產(chǎn)品就是要兼顧各個方面。
回復(fù)

使用道具 舉報

ID:58502 發(fā)表于 2014-9-1 18:36 | 顯示全部樓層
深有同感,我見過部分新人寫程序,其實一兩個語句就能解決的,偏偏用了十幾二十句,而且漏洞百出,查找問題也不方便
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表