資料介紹
從單片機(jī)上知道,在上電的那一刻,MCU的程序指針會(huì)被初始化為上電復(fù)位時(shí)的地址,從那個(gè)地址處讀取將要執(zhí)行的指令,由此程序在 MCU上開始執(zhí)行(當(dāng)然在調(diào)用程序的 main之前,還有一系列其他的初始化要做,如堆棧的初始化,不過這些我們很少會(huì)去修改)。PC在上電時(shí),和MCU差不多,不過讀取的是BIOS,有它完成了很多初始化操作,最后,調(diào)用系統(tǒng)的初始化函數(shù),將控制權(quán)交給了操作系統(tǒng),于是我們看到了Windows,Linux系統(tǒng)啟動(dòng)了。
如果將操作系統(tǒng)看作是在處理器上跑的一個(gè)很大的裸機(jī)程序(就是直接在硬件上跑的程序,因?yàn)椴僮飨到y(tǒng)就是直接跑在CPU上的,這樣看待是可以的,不過這個(gè)裸機(jī)程序功能很多很強(qiáng)大),那么操作系統(tǒng)的啟動(dòng)很像MCU程序的啟動(dòng)。前者有一個(gè)很大的初始化程序完成很復(fù)雜的初始化,后者有一段不長的匯編代碼完成一些簡單的初始化。這一點(diǎn)看,它們?cè)诹鞒躺鲜呛芟嗨频摹?/p>
如果是系統(tǒng)上的程序啟動(dòng)呢?它們是由系統(tǒng)來決定的。Linux上在shell下輸入。/p后,首先檢查是否是一個(gè)內(nèi)建的shell命令;如果不是,則shell假設(shè)它是一個(gè)可執(zhí)行文件(Linux上一般是elf格式),然后調(diào)用一些相關(guān)的函數(shù),將在硬盤上的p文件的內(nèi)容拷貝到內(nèi)存 (DDR RAM)中,并建立一個(gè)它的運(yùn)行環(huán)境(當(dāng)然這里邊還有內(nèi)存映射、虛擬內(nèi)存、連接與加載等一些其它東西),準(zhǔn)備執(zhí)行。
由以上可知,單片機(jī)上的程序和平時(shí)在系統(tǒng)上運(yùn)行的程序,在啟動(dòng)時(shí)差異是很大的(如果將程序調(diào)用main以前的動(dòng)作,都抽象為初始化的話,程序的啟動(dòng)可以簡化為:建立運(yùn)行環(huán)境+調(diào)用main函數(shù),這樣程序的執(zhí)行差異是不大的)。因?yàn)閱纹瑱C(jī)上跑的程序(裸機(jī)程序)是和操作系統(tǒng)一樣跑在硬件上的,它們屬于一個(gè)層次的。過去之所以沒有區(qū)分出單片機(jī)上的程序和PC機(jī)上的程序的一些差異,就是沒有弄明白這一點(diǎn)。由此,以前的一些疑惑也就解開了。為什么在單片機(jī)上的程序不怎么使用malloc,而PC上經(jīng)常使用?因?yàn)閱纹瑱C(jī)上沒有已經(jīng)寫好的內(nèi)存管理算法的代碼,而在PC上操作系統(tǒng)里運(yùn)行的程序,libc已經(jīng)把這些都做了,只需要調(diào)用就可以了。如果在單片機(jī)上想用動(dòng)態(tài)內(nèi)存,也可以,但是這些代碼要自己去實(shí)現(xiàn),并定義一個(gè)相應(yīng)的malloc,有時(shí)候一些公司會(huì)給提供一些庫函數(shù)可能會(huì)實(shí)現(xiàn)malloc,但是因?yàn)閱纹瑱C(jī)上RAM內(nèi)存十分有限,如果不知道它的運(yùn)行方式,估計(jì)會(huì)很危險(xiǎn)。同樣,因?yàn)樵赑C的系統(tǒng)上運(yùn)行的程序與裸機(jī)程序不同,裸機(jī)程序不會(huì)有動(dòng)態(tài)鏈接,有的只是靜態(tài)鏈接。
- 為什么在單片機(jī)上的程序不怎么使用malloc,而PC上經(jīng)常使用?
- 實(shí)現(xiàn)PC機(jī)與單片機(jī)雙向通信的C語言程序設(shè)計(jì)實(shí)例免費(fèi)下載 27次下載
- 使用51單片機(jī)實(shí)現(xiàn)PC串口通信程序和仿真免費(fèi)下載 40次下載
- 使用Labview實(shí)現(xiàn)PC通信與單片機(jī)測控源程序的合集免費(fèi)下載 24次下載
- 單片機(jī)與PC機(jī)串口通訊仿真的程序和電路圖免費(fèi)下載 35次下載
- 如何使51單片機(jī)與PC進(jìn)行串口通信詳細(xì)資料和程序免費(fèi)下載
- 使用Visual Basic實(shí)現(xiàn)PC與多個(gè)單片機(jī)串口通信的資料和程序
- 單片機(jī)到PC機(jī)數(shù)據(jù)傳送實(shí)驗(yàn)程序的資料免費(fèi)下載 13次下載
- 單片機(jī)應(yīng)用程序綜合實(shí)例——單片機(jī)與接口技術(shù) 0次下載
- 單片機(jī)開發(fā)工具大全 2379次下載
- PC與單片機(jī)串口通信【多種任務(wù)程序集合】_程序案例 33次下載
- PC與單片機(jī)串口通信_(tái)labview程序案例 111次下載
- PC機(jī)與單片機(jī)串口通信程序設(shè)計(jì).zip 0次下載
- PC機(jī)與單片機(jī)串口通信程序設(shè)計(jì) 0次下載
- 51單片機(jī)與PC串口通信程序 40次下載
- 單片機(jī)怎么寫入程序 829次閱讀
- 單片機(jī)里的程序是如何運(yùn)行? 4548次閱讀
- 內(nèi)存管理模塊mem_malloc介紹及測試驗(yàn)證實(shí)驗(yàn) 2817次閱讀
- 單片機(jī)的主程序是如何執(zhí)行的 1w次閱讀
- 單片機(jī)實(shí)現(xiàn)多機(jī)通信的資料和程序 7856次閱讀
- 一個(gè)單片機(jī)與PC機(jī)通信的程序 5751次閱讀
- 基于RS485總線實(shí)現(xiàn)單片機(jī)與PC機(jī)的遠(yuǎn)程控制設(shè)計(jì) 4648次閱讀
- 如何實(shí)現(xiàn)ATMEGA16單片機(jī)與PC機(jī)的通信 1498次閱讀
- 單片機(jī)與PC串口通信的程序及電路圖詳解 1.5w次閱讀
- 單片機(jī)延時(shí)程序基本知識(shí)匯總 2w次閱讀
- 怎么讀取單片機(jī)程序_單片機(jī)程序是如何執(zhí)行的_如何讀懂單片機(jī)程序 7.6w次閱讀
- STC單片機(jī)燒寫程序步驟說明 7.2w次閱讀
- 如何使用Keil3開發(fā)51單片機(jī)程序 7345次閱讀
- 單片機(jī)與程序設(shè)計(jì)(上) 3889次閱讀
- 單片機(jī)程序總跑飛?小技巧幫你忙 8629次閱讀
下載排行
本周
- 1常用電子元器件集錦
- 1.72 MB | 24490次下載 | 免費(fèi)
- 2PC2456高壓浪涌抑制器控制器數(shù)據(jù)手冊(cè)
- 3.03 MB | 12次下載 | 免費(fèi)
- 3PC2464具理想二極管的浪涌抑制控制器數(shù)據(jù)手冊(cè)
- 4.42 MB | 8次下載 | 免費(fèi)
- 4PC2466高電壓浪涌抑制器數(shù)據(jù)手冊(cè)
- 3.37 MB | 8次下載 | 免費(fèi)
- 5ssd1306單片 CMOS OLED/PLED 驅(qū)動(dòng)芯片中文手冊(cè)
- 1.66 MB | 5次下載 | 1 積分
- 6PC2596 40V 輸入 150KHz 3A 降壓型電源轉(zhuǎn)換器數(shù)據(jù)手冊(cè)
- 2.44 MB | 3次下載 | 免費(fèi)
- 7松下 rq-sx3隨身聽電路圖資料
- 2.93 MB | 2次下載 | 5 積分
- 8臺(tái)式主板DDR5內(nèi)存插槽引腳功能表資料
- 0.17 MB | 2次下載 | 5 積分
本月
- 1常用電子元器件集錦
- 1.72 MB | 24490次下載 | 免費(fèi)
- 2三相逆變主電路的原理圖和PCB資料合集免費(fèi)下載
- 27.35 MB | 111次下載 | 1 積分
- 3運(yùn)算放大器基本電路中文資料
- 1.30 MB | 16次下載 | 免費(fèi)
- 4蘋果iphone 11電路原理圖
- 4.98 MB | 12次下載 | 5 積分
- 5PC2456高壓浪涌抑制器控制器數(shù)據(jù)手冊(cè)
- 3.03 MB | 12次下載 | 免費(fèi)
- 6常用電子元器件介紹
- 3.21 MB | 11次下載 | 免費(fèi)
- 7PC2570低Iq理想二極管控制電路數(shù)據(jù)手冊(cè)
- 1.54 MB | 8次下載 | 免費(fèi)
- 8PC2557正向高壓理想二極管控制電路中文手冊(cè)
- 1.80 MB | 8次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935130次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183345次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81591次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73816次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65990次下載 | 10 積分
評(píng)論