我之前在了解OpenCL的時(shí)候,看過(guò)一本書(shū)里面介紹了通用處理器和專用處理器的區(qū)別,以及為什么CPU會(huì)發(fā)展到多核心庆械。這些知識(shí)在我學(xué)習(xí)STM32開(kāi)發(fā)的時(shí)候呼應(yīng)上了。那本書(shū)上寫(xiě)道菌赖,CPU分為專用和通用的缭乘。我的理解是比如路由器中的CPU只需要數(shù)據(jù)交換,就屬于專用的CPU盏袄。而我們平時(shí)家用的英特爾和AMD的CPU屬于通用處理器忿峻。使用通用CPU來(lái)處理數(shù)據(jù)交換,當(dāng)然是可以使用的辕羽。只不過(guò)有些電路一定使用不到逛尚。這些電路白白花錢(qián),浪費(fèi)增加成本了刁愿。因?yàn)槁酚善髦皇墙粨Q數(shù)據(jù)不用做其他用途绰寞。所以,專門(mén)的用途要使用專門(mén)的的處理器铣口。那么滤钱,不知道讀者你,還有沒(méi)有這樣的疑問(wèn)脑题?為什么CPU要分出許多核心件缸,難道不能做出一個(gè)很強(qiáng)的單核心CPU嗎?那本書(shū)中也給出了回答叔遂。一個(gè)處理器核心越強(qiáng)大他炊,所需要的集成電路的回路就越多争剿。這樣一來(lái)成本會(huì)很高,設(shè)計(jì)的難度會(huì)加大痊末。要求相同的算力不如使用多核心來(lái)的劃算蚕苇。同樣的道理,在我高中學(xué)習(xí)生物的時(shí)候教科書(shū)上介紹到凿叠,為什么細(xì)胞的體積不會(huì)很大涩笤。因?yàn)殡S著細(xì)胞的體積變大,細(xì)胞的表面積也會(huì)變大盒件。這樣會(huì)造成與細(xì)胞外水交換速率就會(huì)下降蹬碧。還有相似的理論,為什么大象不能跳高炒刁。
STM32上的CPU就屬于專門(mén)的CPU锰茉,而筆記本電腦上的CPU則屬于通用CPU。我在學(xué)習(xí)串口通信切心,當(dāng)中奇偶校驗(yàn)飒筑,十分的疑惑。僅僅在寄存器中設(shè)置了奇校驗(yàn)還是偶校驗(yàn)绽昏,可是沒(méi)有統(tǒng)計(jì)要發(fā)送的數(shù)據(jù)一個(gè)字節(jié)當(dāng)中一的個(gè)數(shù)到底是奇數(shù)個(gè)還是偶數(shù)個(gè)协屡。因?yàn)槲铱歼^(guò)c語(yǔ)言二級(jí),我覺(jué)得每次發(fā)送數(shù)據(jù)之前應(yīng)該進(jìn)行一次統(tǒng)計(jì)的全谤》粝可是我發(fā)現(xiàn)庫(kù)函數(shù)中并沒(méi)有對(duì)其進(jìn)行統(tǒng)計(jì)。
我同時(shí)聯(lián)想到了认然,為什么有些GPIO口支持串口通信有些不支持补憾,不都是對(duì)外輸出高低電平嘛!除了有接收時(shí)候的寄存器還有些什么不同呢卷员?
我理解的答案是盈匾,發(fā)送每一幀的數(shù)據(jù)中,一的個(gè)數(shù)到底是奇數(shù)個(gè)還是偶數(shù)個(gè)毕骡,是由硬件電路進(jìn)行計(jì)算的削饵,而不是通過(guò)c語(yǔ)言代碼進(jìn)行統(tǒng)計(jì)到底是奇數(shù)個(gè)還是偶數(shù)個(gè)。這也就解釋了未巫,為什么有些GPIO能支持串口通信而有些不能支持窿撬。因?yàn)橛布O(shè)計(jì)就是為了串口通信而生的。繼續(xù)驗(yàn)證我的理論叙凡,可以參考一下Windows串口軟件是怎么樣開(kāi)發(fā)的?有沒(méi)有統(tǒng)計(jì)數(shù)據(jù)位當(dāng)中一個(gè)數(shù)到底奇數(shù)個(gè)還是偶數(shù)個(gè)劈伴。
這也就解釋了,為什么汽車(chē)儀表的板子上要有一個(gè)SOC和一個(gè)MCU握爷。MCU主要處理CAN信號(hào)跛璧,SOC上運(yùn)行QNX,再運(yùn)行kanzi苏遥。因?yàn)镸CU的專有處理CAN信號(hào)能力夠強(qiáng)。
我對(duì)于systik定時(shí)器和通用定時(shí)器的理解是赡模,通用定時(shí)器主要是應(yīng)用在外設(shè)上面,systik主要用在內(nèi)核中师抄,CPU會(huì)停止運(yùn)行漓柑。在輸出PWM波的時(shí)候,使用到了通用定時(shí)器叨吮。那么辆布,在配置GPIO的輸出的時(shí)候會(huì)配置一個(gè)速率,那個(gè)速率又是做什么用的呢茶鉴?這里配置的速度100M是什么意思呢锋玲?是GPIO時(shí)鐘的速率嗎?時(shí)鐘的變化不是也是方波嗎涵叮?為什么不能直接修改這里的速率來(lái)發(fā)出PWM波惭蹂?
嵌入式開(kāi)發(fā)真正做到了如何節(jié)省能源,外設(shè)和內(nèi)核都不使用同一套時(shí)鐘割粮。目前對(duì)于嵌入式開(kāi)發(fā)能看懂大致原理了盾碗,對(duì)于具體操作還不是太熟。