0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式編程中使用qemu可以做什么?

嵌入式IoT ? 來源:嵌入式IoT ? 作者:嵌入式IoT ? 2021-06-01 08:56 ? 次閱讀

1.前言嵌入式開發(fā)的過程中,很多時(shí)間都是要和硬件設(shè)備打交道,通過程序控制硬件的具體行為,這些往往是單片機(jī)延續(xù)下來的開發(fā)模式,在目前復(fù)雜的嵌入式系統(tǒng)中,很多都需要借助設(shè)計(jì)模式來進(jìn)行開發(fā),比如文件系統(tǒng),網(wǎng)絡(luò),圖形,算法等等,這些如果能夠利用軟件模擬器進(jìn)行開發(fā),可以大大的減少上板調(diào)試的時(shí)間。減少硬件連接的煩惱,在家也能隨時(shí)分析軟件代碼。

在實(shí)際項(xiàng)目的開發(fā)過程中,qemu也非常的有用,例如當(dāng)進(jìn)行網(wǎng)絡(luò)編程時(shí),往往都會(huì)直接使用socket編程,其上層接口符合POSIX接口,這樣上層應(yīng)用的開發(fā)和底層驅(qū)動(dòng)便可以很簡(jiǎn)單的分離出來,將工作細(xì)節(jié)進(jìn)行合理的劃分。而當(dāng)進(jìn)行嵌入式GUI編程設(shè)計(jì)時(shí),也可以通過framebuffer,來進(jìn)行各種界面的設(shè)計(jì)。同時(shí),如果想新學(xué)習(xí)一款嵌入式編程語言,或者深入理解一些處理器的架構(gòu)方面的知識(shí),通過裸機(jī)編程,直接到qemu上運(yùn)行也能夠非常方便的進(jìn)行探究工作。

下面舉出一些qemu實(shí)際好用的應(yīng)用來進(jìn)行詳細(xì)的描述。

2.嵌入式的裸機(jī)或RTOS編程

qemu的是指令翻譯進(jìn)行的,所以可以根據(jù)實(shí)際的需求進(jìn)行相應(yīng)的裸機(jī)開發(fā)和學(xué)習(xí),比如語言學(xué)習(xí),嵌入式C語言,嵌入式RUST語言,等等項(xiàng)目。一些github上的好用學(xué)習(xí)型的項(xiàng)目也會(huì)對(duì)qemu進(jìn)行支持,用RUST語言在arm上的編程,即使手上沒有很好的硬件的條件,也能夠去學(xué)習(xí)RUST語言在嵌入式編程上的使用。

針對(duì)arm的編程,qemu也可以模擬出許多的架構(gòu)出來,通過對(duì)這些架構(gòu)的學(xué)習(xí)和掌握,可以加快對(duì)架構(gòu)編程的理解。

。/qemu-system-arm -M virt -cpu

Available CPUs:

arm1026

arm1136

arm1136-r2

arm1176

arm11mpcore

arm926

arm946

cortex-a15

cortex-a7

cortex-a8

cortex-a9

cortex-m0

cortex-m3

cortex-m33

cortex-m4

cortex-m55

cortex-m7

cortex-r5

cortex-r5f

max

pxa250

pxa255

pxa260

pxa261

pxa262

pxa270-a0

pxa270-a1

pxa270

pxa270-b0

pxa270-b1

pxa270-c0

pxa270-c5

sa1100

sa1110

ti925t

然而嵌入式開發(fā)往往會(huì)和硬件打交道,qemu也提供了不同類別的硬件,比如flash,網(wǎng)卡,sd卡,中斷,串口等等,這些對(duì)于學(xué)習(xí)不同的體系架構(gòu),也有著非常關(guān)鍵的作用。

比如學(xué)習(xí)cortex-m3或者aarch64編程,采用qemu,運(yùn)行自己寫的裸機(jī)代碼,能夠非常方便的進(jìn)行各種實(shí)驗(yàn)。

在進(jìn)行rtos的開發(fā)過程中,經(jīng)常會(huì)采用qemu作為調(diào)試工具,進(jìn)行龍芯、樹莓派、riscv相關(guān)的開發(fā)和驗(yàn)證工作。在rtos中,比較關(guān)鍵的是上下文的切換,通過對(duì)寄存器信息的保存和恢復(fù),另外就是中斷的處理,能夠很好的理解架構(gòu)的底層編程方式。

以前的時(shí)候,也做過aarch64上的qemu編程,也是最開始基于qemu,然后慢慢的移植到樹莓派上面,因?yàn)橥庠O(shè)一致,代碼層面不用改變,直接可以將qemu運(yùn)行通過的固件放到樹莓派的sd卡中也一樣能夠正常的運(yùn)行。

bbad3648-c236-11eb-9e57-12bb97331649.png

上圖是在qemu的rt-thread/bsp/raspberry-pi/raspi3-64中編譯的固件在qemu上的運(yùn)行效果,基本上完成對(duì)aarch64體系架構(gòu)中的棧幀、中斷、mmu的支持,以及外設(shè)部分SD卡、圖形、串口、mbox的支持。該固件也可以直接放到樹莓派硬件的sd卡中運(yùn)行,其效果和在qemu效果一樣。

除此之外,我也在qemu的支持上做了一些擴(kuò)展開發(fā),比如在riscv的生態(tài)支持上對(duì)gd32的rv-star在中科院軟件研究所的基礎(chǔ)上做了一些研究,同時(shí)對(duì)nuclei的各種處理器系列做了適配。這樣對(duì)于軟件層面的驗(yàn)證更加有用,比如去運(yùn)行一下nuclei-sdk,或者對(duì)于RISCV的V擴(kuò)展的支持的nmsis的支持。

qemu-system-riscv64 -M nuclei_n,download=ilm -cpu nuclei-nx600fdp -nodefaults -nographic -serial stdio -kernel CMSIS/nmsis_release/NMSIS/DSP/Examples/RISCV/riscv_matrix_example/dsp_example.elf

這樣可以進(jìn)行相關(guān)的dsp的驗(yàn)證工作。因?yàn)閚msis是基于arm的cmsis在riscv上的一份移植,其中實(shí)現(xiàn)了許多的加速運(yùn)算的demo,比如矩陣運(yùn)算,卷積,圖像處理等等,這些指令同樣也可以在nuclei qemu中計(jì)算出正確的結(jié)果。

bbcda84c-c236-11eb-9e57-12bb97331649.png

由于對(duì)riscv的p擴(kuò)展和v擴(kuò)展的支持,使得其行為和實(shí)際硬件板子無差異。在qemu做算法優(yōu)化和研究也是非常值得去嘗試的。雖然qemu是用軟件去模擬真實(shí)計(jì)算結(jié)果,但是從指令集的優(yōu)化層面上來說,當(dāng)功能邏輯實(shí)現(xiàn)正確后再移植到板子上做性能測(cè)試,這才是高效的處理方法。

在支持baremetal編程和rtos編程方面,nuclei-sdk也做了一些工作,可以更加好的觀察分析軟件的具體行為。

qemu-system-riscv32 -M nuclei_n,download=ilm -cpu nuclei-n201 -nodefaults -nographic -serial stdio -kernel application/rtthread/msh/msh.elf

Nuclei SDK Build Time: May 31 2021, 1118

Download Mode: ILM

CPU Frequency 168290222 Hz

| /

- RT - Thread Operating System

/ | 3.1.3 build May 31 2021

2006 - 2019 Copyright by rt-thread team

Hello RT-Thread!

msh 》

msh 》ps

thread pri status sp stack size max used left tick error

-------- --- ------- ---------- ---------- ------ ---------- ---

tshell 6 ready 0x000000d8 0x00001000 10% 0x0000000a 000

tidle 7 ready 0x00000078 0x00000200 23% 0x00000020 000

main 2 suspend 0x000000b8 0x00000400 17% 0x00000013 000

msh 》

也可以支持其他的rtos,例如下面的ucosii和freertos等等。

ucosii的運(yùn)行效果如下:

qemu-system-riscv32 -M nuclei_n,download=ilm -cpu nuclei-n201 -nodefaults -nographic -serial stdio -kernel application/ucosii/demo/demo.elf

Nuclei SDK Build Time: May 31 2021, 1145

Download Mode: ILM

CPU Frequency 182521692 Hz

Start ucosii.。。

create start task success

start all task.。。

task3 is running.。。 1

task2 is running.。。 1

task1 is running.。。 1

task3 is running.。。 2

task2 is running.。。 2

task3 is running.。。 3

task2 is running.。。 3

task1 is running.。。 2

task3 is running.。。 4

task2 is running.。。 4

task3 is running.。。 5

task2 is running.。。 5

freertos的運(yùn)行效果如下:

qemu-system-riscv32 -M nuclei_n,download=ilm -cpu nuclei-n201 -nodefaults -nographic -serial stdio -kernel application/freertos/demo/demo.elf

Nuclei SDK Build Time: May 31 2021, 1145

Download Mode: ILM

CPU Frequency 232205516 Hz

Before StartScheduler

Enter to task_1

task1 is running 0.。。。。

Enter to task_2

task2 is running 0.。。。。

timers Callback 0

timers Callback 1

task1 is running 1.。。。。

task2 is running 1.。。。。

timers Callback 2

timers Callback 3

task1 is running 2.。。。。

task2 is running 2.。。。。

利用qemu作為底層研究將會(huì)非常的高效。同時(shí),善于借助gdb等調(diào)試工具,將能夠非常容易的找到問題出現(xiàn)的點(diǎn)。

3.利用qemu網(wǎng)絡(luò)編程

研究由于qemu的網(wǎng)絡(luò)可以直接連接主機(jī)的網(wǎng)絡(luò),對(duì)這方面的研究可以從網(wǎng)絡(luò)協(xié)議棧,網(wǎng)絡(luò)的上層應(yīng)用編程等等進(jìn)行研究。例如去研究lwip協(xié)議棧的實(shí)現(xiàn)等等。

我寫過一個(gè)qemu上的e1000網(wǎng)卡設(shè)備的驅(qū)動(dòng),針對(duì)于qemu riscv64的virt版本。

https://github.com/bigmagic123/rt-thread/tree/riscv_virt_network

針對(duì)rt-thread的qemu riscv的virt64版本,可以進(jìn)行如下的設(shè)置。

bbd98f04-c236-11eb-9e57-12bb97331649.png

其中其底層的驅(qū)動(dòng)為e1000,為qemu提供了網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)、以及網(wǎng)絡(luò)數(shù)據(jù)包的接收中斷服務(wù)。

借助rt-thread上適配的lwip驅(qū)動(dòng)程序,可以非常容易的實(shí)現(xiàn)上層網(wǎng)絡(luò)編程應(yīng)用。

比如借助rt-thread的IOT軟件包

bbf29c38-c236-11eb-9e57-12bb97331649.png

使能一些例子

bc0c13ac-c236-11eb-9e57-12bb97331649.png

最后可以測(cè)試一下web的通信情況。

bc293504-c236-11eb-9e57-12bb97331649.png

當(dāng)然,上述這個(gè)例子只是一個(gè)非常簡(jiǎn)單網(wǎng)絡(luò)編程的演示,其中socket的編程部分實(shí)際上是通用的,無論是arm架構(gòu)、mips架構(gòu)或者riscv架構(gòu),借助qemu的好處在于可以采用一個(gè)架構(gòu)平臺(tái),進(jìn)行協(xié)議?;蛘呱蠈娱_發(fā)后,可以無縫的移植到自己的真實(shí)的板子上,非常方便進(jìn)行整體業(yè)務(wù)的聯(lián)調(diào)。

對(duì)于qemu riscv64 virt平臺(tái),整個(gè)系統(tǒng)從底層的virtio或者e1000的網(wǎng)卡設(shè)備提供數(shù)據(jù)的收發(fā)、中斷消息機(jī)制之外,rt-thread也通過提供lwip協(xié)議棧的支持,這樣整個(gè)網(wǎng)絡(luò)鏈路才是比較合理的。開發(fā)起來也比較的方便。

物聯(lián)網(wǎng)模塊的開發(fā)方面,采用qemu,也可以不用rt-thread,直接裸機(jī)驅(qū)動(dòng)virt上的e1000網(wǎng)卡驅(qū)動(dòng),然后借助對(duì)寄存器的讀寫操作,移植其他的網(wǎng)絡(luò)協(xié)議棧,從而實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)工作,網(wǎng)絡(luò)編程的上層對(duì)接阿里云、騰訊云等云服務(wù)器,非常容易的實(shí)現(xiàn)業(yè)務(wù)的編程,同時(shí)調(diào)試方面,qemu的gdb調(diào)試功能也是非常的強(qiáng)大,也可以dump出內(nèi)存進(jìn)行ram parse分析。

4.嵌入式圖形開發(fā)

因?yàn)榍度胧骄幊痰膶?shí)現(xiàn),也會(huì)多少涉及到圖形編程,當(dāng)接上LCD屏后,其中的顯示驅(qū)動(dòng)對(duì)上層應(yīng)用暴露出來的實(shí)際上是一塊顯存,通過對(duì)顯存的讀寫,flush進(jìn)行l(wèi)cd的圖像更新。

在圖像編程方面,qemu也提供了顯示窗口。這種顯示窗口可以為gui相關(guān)的開發(fā)工作帶來很多便捷。

關(guān)于嵌入式圖像編程,可以參考

rt-threadsp

aspberry-pi

aspi3-64

相關(guān)的bsp,只需要完善顯示程序即可。

可以尋找一張bmp的圖片,圖片大小為800x480的圖片。

利用Image2Lcd的工具進(jìn)行圖像轉(zhuǎn)換成數(shù)組。

最后將數(shù)組程序編譯到程序代碼中,將該數(shù)組放到顯存中即可。

bd3ef924-c236-11eb-9e57-12bb97331649.png

一切準(zhǔn)備就緒后,就能夠進(jìn)行顯示器的開發(fā)了。

#define LCD_BUF_SIZE (800 * 480)

extern unsigned char gImage_1[];

void lcd_test()

{

struct rt_device *lcd;

struct rt_device_graphic_info *test_lcd_info;

test_lcd_info = rt_malloc(sizeof( struct rt_device_graphic_info));

//找到lcd lcd = (struct rt_device *)rt_device_find(“l(fā)cd”);

rt_kprintf(“l(fā)cd get info:

”);

rt_device_control(lcd, RTGRAPHIC_CTRL_GET_INFO, test_lcd_info);

rt_kprintf(“l(fā)cd width is %d

”, test_lcd_info-》width);

rt_kprintf(“l(fā)cd height is %d

”, test_lcd_info-》height);

rt_kprintf(“l(fā)cd bpp is %d

”, test_lcd_info-》bits_per_pixel);

rt_memcpy(test_lcd_info-》framebuffer, &gImage_1[0], LCD_BUF_SIZE*4);

//刷新圖片

rt_device_control(lcd, RTGRAPHIC_CTRL_RECT_UPDATE, NULL);

rt_thread_delay(20);

}

如果要進(jìn)行觸摸操作,qemu也進(jìn)行了基本的支持,只需移植相關(guān)的底層驅(qū)動(dòng)即可進(jìn)行開發(fā)工作,非常的高效和方便。

5.進(jìn)行嵌入式Linux的開發(fā)

進(jìn)行Linux開發(fā)工作,如果深入去學(xué)習(xí)某一個(gè)設(shè)備的開發(fā),當(dāng)然少不了不斷的對(duì)Linux的內(nèi)核部分進(jìn)行編譯和下載,這是一個(gè)十分耗時(shí)的工作,如果只是進(jìn)行應(yīng)用程序的開發(fā),可能感覺不到許多的差別,但是一旦涉及到Linux內(nèi)核的分析,頻繁的下載也會(huì)浪費(fèi)大量的時(shí)間。

當(dāng)使用qemu后,這種問題將會(huì)得到很好的解決,采用qemu進(jìn)行內(nèi)核層面的裁剪,進(jìn)行內(nèi)核層面模塊化的驗(yàn)證工作后,再進(jìn)行移植,讓其變得更加通用,不僅僅針對(duì)這個(gè)項(xiàng)目有效,而且也為自己積累了很多經(jīng)驗(yàn)。

bd5be6a6-c236-11eb-9e57-12bb97331649.png

從分析linux的loader,分析Linux的驅(qū)動(dòng)框架,內(nèi)存管理,多核管理等等,都能夠非常方便進(jìn)行調(diào)試工作。

在實(shí)際硬件設(shè)備沒有穩(wěn)定之前,對(duì)軟件項(xiàng)目進(jìn)行評(píng)估,qemu是非常好用的工具。

6.小結(jié)

接觸很多軟件開發(fā)工作中,使用qemu確實(shí)能夠在一定程度上節(jié)省時(shí)間,提高軟件調(diào)試與分析的效率。

用軟件模擬硬件的操作行為,本質(zhì)上來說和實(shí)際的硬件操作區(qū)別不大,因?yàn)樵谇度胧骄幊讨?,最底層的指令集的行為已?jīng)在qemu中實(shí)現(xiàn)的很好了,硬件模擬方面,qemu也大致能夠模擬操作寄存器后,處理器的行為,這些在對(duì)qemu的底層支持和學(xué)習(xí)的過程中已經(jīng)進(jìn)行了大量的實(shí)驗(yàn)和研究。

理解qemu的使用,會(huì)對(duì)嵌入式軟件原理有著更加深刻的理解,從更大的層面上來說,虛擬化的行為本來就是一種很好的解決方案,去設(shè)計(jì)一個(gè)嵌入式軟件方案,去演示一個(gè)底層軟件,或者節(jié)約下載調(diào)試時(shí)間,開發(fā)嵌入式上層業(yè)務(wù)系統(tǒng)軟件的功能層面來說,qemu都是值得去研究和使用的工具。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 顯示器
    +關(guān)注

    關(guān)注

    21

    文章

    5009

    瀏覽量

    140313
  • 驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    12

    文章

    1851

    瀏覽量

    85529
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3637

    瀏覽量

    93924
  • LCD屏
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    15484

原文標(biāo)題:嵌入式編程中使用qemu能夠做什么?

文章出處:【微信號(hào):Embeded_IoT,微信公眾號(hào):嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    為什么嵌入式驅(qū)動(dòng)開發(fā)工程師可以拿高薪?

    。 為什么嵌入式驅(qū)動(dòng)開發(fā)工程師可以拿高薪? 嵌入式驅(qū)動(dòng)開發(fā)工程師屬于技術(shù)密集型工作,不僅需要深入了解硬件的工作原理,還需掌握各種編程語言,確保硬件與軟件能夠完美協(xié)同工作。這種跨學(xué)科
    發(fā)表于 01-07 16:56

    ARM嵌入式編程高效技巧

    隨著物聯(lián)網(wǎng)和智能設(shè)備的快速發(fā)展,ARM嵌入式系統(tǒng)的應(yīng)用越來越廣泛。從智能手機(jī)到智能家居,再到工業(yè)自動(dòng)化,ARM處理器幾乎無處不在。因此,掌握ARM嵌入式編程的高效技巧對(duì)于開發(fā)者來說至關(guān)重要。 1.
    的頭像 發(fā)表于 12-28 09:17 ?299次閱讀

    嵌入式系統(tǒng)中使用EEPROM的優(yōu)缺點(diǎn)

    嵌入式系統(tǒng)中,EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦除可編程只讀存儲(chǔ)器)因其獨(dú)特的特性和優(yōu)勢(shì)而被廣泛應(yīng)用,但
    的頭像 發(fā)表于 12-16 16:57 ?399次閱讀

    新手怎么學(xué)嵌入式?

    的運(yùn)行機(jī)制。例如,了解數(shù)據(jù)結(jié)構(gòu)中的鏈表、棧和隊(duì)列,對(duì)于在嵌入式編程中管理數(shù)據(jù)非常有幫助。 2. 選擇合適的編程語言 嵌入式開發(fā)中常用的編程
    發(fā)表于 12-12 10:51

    有什么比較熱門的嵌入式項(xiàng)目?

    大佬們想問一下可以做什么樣的嵌入式項(xiàng)目好找工作?工作1到2年左右
    發(fā)表于 11-08 09:57

    嵌入式學(xué)習(xí)建議

    ,最好能有自己動(dòng)手的空間。不花一分硬件錢想要學(xué)好嵌入式系統(tǒng)不實(shí)際,因?yàn)檫@是實(shí)踐性很強(qiáng)的學(xué)科。好書,可以讓人少走彎路,不被誤導(dǎo)。好老師也可以是做過一些實(shí)際項(xiàng)目的學(xué)長(一定要找做過幾個(gè)成功項(xiàng)目的學(xué)長或老師做
    發(fā)表于 10-22 11:41

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被稱為嵌入式系統(tǒng)的核心組件,是一種用于控制和數(shù)據(jù)處理的計(jì)算機(jī)硬件,其設(shè)計(jì)旨在嵌入特定設(shè)備中執(zhí)行專門任務(wù)。嵌入式主板如同是設(shè)備的“大腦”,主要功能是根據(jù)需要管理和控制設(shè)備
    的頭像 發(fā)表于 09-30 10:05 ?820次閱讀

    如何提升嵌入式編程能力?

    如何提升嵌入式編程能力? 要提升嵌入式編程的能力,可以從以下幾點(diǎn)學(xué)習(xí): 1. 理解硬件:熟悉你正在編程
    發(fā)表于 06-21 10:01

    USB嵌入式主機(jī)堆棧

    在USB標(biāo)準(zhǔn)下,USB設(shè)備之間不能直接通信。它們只能與控制一個(gè)或多個(gè)設(shè)備通信的總線的 USB 主機(jī)通信。常見的 USB 主機(jī)是 PC。本應(yīng)用筆記討論了 USB 嵌入式主機(jī),它可以使嵌入式應(yīng)用程序在各種 USB 設(shè)備
    發(fā)表于 05-03 09:13 ?213次閱讀
    USB<b class='flag-5'>嵌入式</b>主機(jī)堆棧

    嵌入式主板,你了解多少?

    嵌入式主板,也稱為嵌入式計(jì)算機(jī)主板,是一種專門設(shè)計(jì)用于嵌入式系統(tǒng)的計(jì)算機(jī)主板。與臺(tái)式機(jī)和筆記本電腦中使用的常規(guī)主板不同,嵌入式主板設(shè)計(jì)用于集
    的頭像 發(fā)表于 04-17 15:11 ?1609次閱讀

    嵌入式編程片上系統(tǒng)是什么

    嵌入式編程片上系統(tǒng)(Embedded Programmable System-on-Chip,或簡(jiǎn)稱EPSoC)是一種特殊的嵌入式系統(tǒng),它結(jié)合了嵌入式系統(tǒng)的特點(diǎn)和可
    的頭像 發(fā)表于 03-28 15:33 ?618次閱讀

    fpga是嵌入式

    FPGA(現(xiàn)場(chǎng)可編程門陣列)不是嵌入式系統(tǒng),但FPGA在嵌入式系統(tǒng)中有著重要的應(yīng)用。
    的頭像 發(fā)表于 03-14 17:19 ?2476次閱讀

    fpga與嵌入式的區(qū)別 嵌入式和fpga開發(fā)有什么關(guān)系

    fpga與嵌入式的區(qū)別 FPGA與嵌入式系統(tǒng)在設(shè)計(jì)和應(yīng)用上存在一些關(guān)鍵的區(qū)別,具體如下: 靈活性:FPGA具有高度的靈活性,可以根據(jù)需要重新編程以實(shí)現(xiàn)不同的功能。而
    的頭像 發(fā)表于 03-14 17:04 ?7046次閱讀

    嵌入式軟件開發(fā)應(yīng)該掌握哪些知識(shí)?

    掌握的知識(shí) 1.基礎(chǔ)知識(shí) 1.1 c/c++編程語言和數(shù)據(jù)結(jié)構(gòu) C/C++ 是嵌入式系統(tǒng)中常用的編程語言,因?yàn)樗鼈兲峁┝酥苯釉L問硬件的能力。通過使用特定的編譯器和調(diào)用硬件相關(guān)的接口,可以
    發(fā)表于 02-19 11:23

    嵌入式學(xué)習(xí)步驟

    嵌入式行業(yè)是一個(gè)涉及廣泛領(lǐng)域的行業(yè),嵌入式、物聯(lián)網(wǎng)、人工智能、智能與科學(xué)、電子信息工程、通信工程、自動(dòng)化工程、測(cè)控、計(jì)算機(jī)科學(xué)等專業(yè)在嵌入式系統(tǒng)中使得軟件和硬件的結(jié)合更加高效,適合從事
    發(fā)表于 02-02 15:24