色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

OPENHW開源CORE-V-MCU移植RT-Thread

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來(lái)源:RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 2023-02-01 10:05 ? 次閱讀

項(xiàng)目背景

OpenHW Group 是一個(gè)以協(xié)作方式開發(fā)開源硬件和相關(guān)軟件的非營(yíng)利組織,致力于開發(fā)、驗(yàn)證和提供開源處理器內(nèi)核。OpenHW Group的開源項(xiàng)目致力于開發(fā)和驗(yàn)證基于免費(fèi)和開放的RISC-V指令集架構(gòu) (ISA) 系列內(nèi)核,稱為 CORE-V系列。CV32E40P 開源處理器 IP 內(nèi)核,這是 OpenHW CORE-V 系列中第一個(gè)經(jīng)過(guò)全面驗(yàn)證的內(nèi)核。本文的對(duì)象就是基于CV32E40P實(shí)現(xiàn)的開源CORE-V-MCU移植RT-Thread

CORE-V-MCU目前是以軟核的形式在FPGA上進(jìn)行了實(shí)現(xiàn),中科院 PLCT 實(shí)驗(yàn)室針對(duì)CV32E40P內(nèi)核的CORE-V-MCU適配了QEMU,本文最終的驗(yàn)證在QEMU上進(jìn)行。

前期準(zhǔn)備

開發(fā)環(huán)境:ubuntu18.04

驗(yàn)證示例工程

本次實(shí)驗(yàn)驗(yàn)證的平臺(tái)是PLCT提供的QEMU,在Linux下的QEMU可以使用上述的筆者編譯好的,也可以使用自己嘗試編譯PLCT提供的源碼。

OPENHW提供了基于FreeRTOS的示例工程,由于使用的是PLCT提供的QEMU,所以IDE中自帶的工程并不能直接使用,為了避免不必要的麻煩,本文采用PLCT提供的示例工程。

下載好示例工程,進(jìn)入到app目錄,執(zhí)行以下命令配置編譯工程:

source ../env/core-v-mcu.sh

make RISCV=xxx //xxx為工具鏈的路徑

編譯完成后將生成的cli_test可執(zhí)行文件拷到qemu的安裝目錄,運(yùn)行下述命令驗(yàn)證工程;

./qemu-system-riscv32 -M core_v_mcu -bios none -kernel cli_test -nographic -monitor none -serial stdio

運(yùn)行結(jié)果:

6910266e-a1d4-11ed-bfe3-dac502259ad0.png

出現(xiàn)上述結(jié)果,則表示示例工程運(yùn)行正常,這樣我們就有一個(gè)可移植的模板工程,后續(xù)移植基于該工程開展。

移植RT-Thread

CV32E40P內(nèi)核是一個(gè)RISC-V架構(gòu)的內(nèi)核,移植RTOS不可避免的會(huì)涉及到匯編部分的修改,所以在移植前期學(xué)習(xí)一下RISC-V架構(gòu)與匯編會(huì)產(chǎn)生事半功倍的效果,同樣在一之前需要熟悉CV32E40P的內(nèi)核資源

https://docs.openhwgroup.org/projects/core-v-mcu/doc-src/overview.html

cv32e40p繼承自pulp開源的RI5CY內(nèi)核,而RI5CY內(nèi)核的對(duì)接代碼在RT-Thread的倉(cāng)庫(kù)libcpu/riscv/rv32m1已經(jīng)實(shí)現(xiàn),所以以RI5CY中的代碼為基礎(chǔ),移植cv32e40p的對(duì)接代碼。

成功移植RT-Thread有如下幾個(gè)關(guān)鍵的階段:

  • 節(jié)拍定時(shí)器正常工作

  • 線程可以正常創(chuàng)建,調(diào)度(這步最難,需要前面好多工作來(lái)保證)

  • shell可以正常使用(從這開始就順利多了)

RTOS的最小時(shí)間單位是系統(tǒng)節(jié)拍,系統(tǒng)正常工作需要節(jié)拍定時(shí)器的支持,因而以節(jié)拍定時(shí)器的移植為切入點(diǎn)展開移植。

core-v-mcu.c中放置的是系統(tǒng)初始化,中斷處理相關(guān)代碼。其中system_init函數(shù)完成了時(shí)鐘初始化,串口,I2C等外設(shè)的初始化,以及中斷函數(shù)的綁定。在文件的開頭可以找到如下一個(gè)指針數(shù)組:

1void(*isr_table[32])(uint32_t);

該數(shù)組用于綁定中斷入口函數(shù)。

1for(inti=0;i32;i++){
2isr_table[i]=undefined_handler;
3handler_count[i]=0;
4}
5isr_table[0x7]=timer_irq_handler;
6isr_table[0xb]=(void(*)(uint32_t))fc_soc_event_handlzer1;

system_init函數(shù)中我們可以找到上述代碼,瀏覽該文件我們可以知道,timer_irq_handler即系統(tǒng)定時(shí)器的中斷入口函數(shù),

在原有FreeRTOS工程中該函數(shù)內(nèi)容如下:

1voidtimer_irq_handler(uint32_tmcause)
2{
3#warningrequirescriticalsectionifinterruptnestingisused.
4if(xTaskIncrementTick()!=0){
5vTaskSwitchContext();
6}
7}

該函數(shù)實(shí)現(xiàn)系統(tǒng)節(jié)拍的產(chǎn)生,所以將這里的內(nèi)容修改為RT-Thread的節(jié)拍產(chǎn)生的方式,修改如下:

1voidtimer_irq_handler(uint32_tmcause)
2{
3#warningrequirescriticalsectionifinterruptnestingisused.
4rt_interrupt_enter();
5rt_tick_increase();
6rt_interrupt_leaves();
7}

涉及到中斷,我們就得考慮系統(tǒng)的中斷的實(shí)現(xiàn)方式,中斷一般會(huì)分為向量中斷與非向量中斷。RISC-V常在啟動(dòng)后文件中進(jìn)行中斷模式的配置。從crt0.S文件可以找到如下代碼:

1/*setvectortableaddress*/
2laa0,__vector_start
3ora0,a0,1/*enablevectoredmode(hardcodedanywayforCV32E40P)*/
4csrwmtvec,a0

RISC-V規(guī)范定義中斷、異常的入口地址,以及模式使用mtvec寄存器配置,上述代碼將系統(tǒng)的中斷模式配置為了向量模式,向量模式下,每個(gè)函數(shù)均包含一個(gè)獨(dú)立的入口函數(shù)用來(lái)處理中斷。所以我們切換至寫中斷向量表的文件vector.S,我們可以很明顯的看到一段代碼,從名字就可以看出下面是一張向量表 :

 1vector_table:
 2jfreertos_risc_v_trap_handler//irq0
 3jfreertos_risc_v_trap_handler
 4jfreertos_risc_v_trap_handler
 5jfreertos_risc_v_trap_handler//irq3
 6jfreertos_risc_v_trap_handler
 7jfreertos_risc_v_trap_handler
 8jfreertos_risc_v_trap_handler
 9jfreertos_risc_v_trap_handler//ctxt_handler//irq7mtimeortimer
10jfreertos_risc_v_trap_handler
11jfreertos_risc_v_trap_handler
12jh7//freertos_risc_v_trap_handler
13jfreertos_risc_v_trap_handler//irq11Machine(eventFifo)
14jfreertos_risc_v_trap_handler
15jfreertos_risc_v_trap_handler
16jfreertos_risc_v_trap_handler
17jfreertos_risc_v_trap_handler
18jfreertos_risc_v_trap_handler//IRQ16
19jfreertos_risc_v_trap_handler//IRQ17
20jfreertos_risc_v_trap_handler//IRQ18
21jfreertos_risc_v_trap_handler//IRQ19
22jfreertos_risc_v_trap_handler//IRQ20
23jfreertos_risc_v_trap_handler//IRQ21
24jfreertos_risc_v_trap_handler//IRQ22
25jfreertos_risc_v_trap_handler//IRQ23
26jfreertos_risc_v_trap_handler//IRQ24
27jfreertos_risc_v_trap_handler//IRQ25
28jfreertos_risc_v_trap_handler//IRQ26
29jfreertos_risc_v_trap_handler//IRQ27
30jfreertos_risc_v_trap_handler//IRQ28
31jfreertos_risc_v_trap_handler//IRQ29
32jfreertos_risc_v_trap_handler//IRQ30
33jfreertos_risc_v_trap_handler//IRQ30

PS:上述向量表看的我懵了好久啊,相信對(duì)于剛接觸底層不久的小伙伴也會(huì)有同樣的感受吧,向量表不是一張多姿多彩的表嗎,怎么感覺(jué)都一樣啊???不急,我們?cè)诳匆幌?strong>core-v-mcu.c這個(gè)文件,又會(huì)發(fā)現(xiàn)一段非常顯眼的代碼:

1voidvSystemIrqHandler(uint32_tmcause)
2{
3uint32_tval=0;
4//externvoid(*isr_table[32])(uint32_t);
5isr_table[mcause&0x1f](mcause&0x1f);
6}

		

		
結(jié)合上文,思考一下大致可以明白這個(gè)函數(shù)的作用了:分發(fā)中斷。即所有的異常與中斷觸發(fā)后均會(huì)執(zhí)行這個(gè)函數(shù),那我們?nèi)炙阉饕幌逻@個(gè)函數(shù),
找一下是哪里調(diào)用了.全局搜索可以找到如下代碼:
1CPPFLAGS+=-DportasmHANDLE_INTERRUPT=vSystemIrqHandler

			

			
繼續(xù)搜索DportasmHANDLE_INTERRUPT可從portASM.S找到如下代碼;
1load_xsp,xISRStackTop/*SwitchtoISRstackbeforefunctioncall.*/
2jalportasmHANDLE_INTERRUPT
3jprocessed_source

			

			

瀏覽代碼可知,系統(tǒng)觸發(fā)中斷或異常后最終均會(huì)執(zhí)行vSystemIrqHandler函數(shù),該函數(shù)是在freertos_risc_v_trap_handler函數(shù)中被調(diào)用,至此我們大致可以明白整個(gè)過(guò)程了,當(dāng)中斷或者異常出發(fā)后,會(huì)查詢向量表,執(zhí)行freertos_risc_v_trap_handler函數(shù),該函數(shù)會(huì)調(diào)用vSystemIrqHandler,經(jīng)其分發(fā)后最終執(zhí)行到系統(tǒng)初始化時(shí)綁定的中斷入口函數(shù)。

在RT-Thread 中由interrupt_gcc.S中的函數(shù)實(shí)現(xiàn)vSystemIrqHandler函數(shù)的調(diào)用,所以我們修改中斷向量表的內(nèi)容如下:

 1vector_table:
 2jIRQ_Handler//irq0
 3jIRQ_Handler
 4jIRQ_Handler
 5jIRQ_Handler//irq3
 6jIRQ_Handler
 7jIRQ_Handler
 8jIRQ_Handler
 9jIRQ_Handler//ctxt_handler//irq7mtimeortimer
10jIRQ_Handler
11jIRQ_Handler
12jIRQ_Handler//IRQ_Handler
13jIRQ_Handler//irq11Machine(eventFifo)
14jIRQ_Handler
15jIRQ_Handler
16jIRQ_Handler
17jIRQ_Handler
18jIRQ_Handler//IRQ16
19jIRQ_Handler//IRQ17
20jIRQ_Handler//IRQ18
21jIRQ_Handler//IRQ19
22jIRQ_Handler//IRQ20
23jIRQ_Handler//IRQ21
24jIRQ_Handler//IRQ22
25jIRQ_Handler//IRQ23
26jIRQ_Handler//IRQ24
27jIRQ_Handler//IRQ25
28jIRQ_Handler//IRQ26
29jIRQ_Handler//IRQ27
30jIRQ_Handler//IRQ28
31jIRQ_Handler//IRQ29
32jIRQ_Handler//IzRQ30
33jIRQ_Handler//IRQ30

			

瀏覽IRQ_Handler可知,觸發(fā)中斷或異常均會(huì)執(zhí)行該代碼,該函數(shù)的主要的功能就是實(shí)現(xiàn)了軟件保存上下文。根據(jù)RISC-V規(guī)范可知,RISC-V架構(gòu)定義不支持硬件壓棧,所以需要軟件實(shí)現(xiàn)這部分,這樣做的出發(fā)點(diǎn)大概是為了簡(jiǎn)化RISC-V架構(gòu)的內(nèi)核的設(shè)計(jì)吧!!!

libcpu/riscv/rv32m1中的IRQ_Handler函數(shù)存在如下內(nèi)容

1/*switchtointerruptstack*/
2lasp,__stack//移植時(shí)需修改
3/*interrupthandle*/
4callrt_interrupt_enter
5csrra0,mcause
6csrra1,mepc
7mva2,sp
8callSystemIrqHandler//移植時(shí)需修改
9callrt_interrupt_leave

這部分的作用是,加載中斷棧的棧頂?shù)刂放c執(zhí)行保存上文之后的工作,這里是調(diào)用SystemIrqHandler函數(shù)進(jìn)行中斷分發(fā),修改如下:

1/*switchtointerruptstack*/
2lasp,__freertos_irq_stack_top//棧頂?shù)刂肺挥阪溄幽_本中
3/*interrupthandle*/
4callrt_interrupt_enter
5csrra0,mcause
6csrra1,mepc
7mva2,sp
8callvSystemIrqHandler//調(diào)用vSystemIrqHandler函數(shù)
9callrt_interrupt_leave

board.crt_hw_board_init函數(shù)中,添加如下代碼:

1vPortSetupTimerInterrupt();//初始化定時(shí)器
2volatileuint32_tmtvec=0;
3__asmvolatile("csrr%0,mtvec":"=r"(mtvec));//聲明僅有一張向量表
4__asmvolatile("csrsmie,%0"::"r"(0x880));//使能定時(shí)器中斷與外部中斷

至此,基本的移植工作已經(jīng)完成,可以采用靜態(tài)創(chuàng)建任務(wù)的方式,實(shí)現(xiàn)多任務(wù)的創(chuàng)建與調(diào)度。

動(dòng)態(tài)內(nèi)存

在board.c添加下述代碼:

 1#ifdefined(RT_USING_USER_MAIN)&&defined(RT_USING_HEAP)
 2#defineRT_HEAP_SIZE(64*1024)
 3staticrt_uint8_trt_heap[RT_HEAP_SIZE];
 4void*rt_heap_begin_get(void)
 5{
 6returnrt_heap;
 7}
 8void*rt_heap_end_get(void)
 9{
10returnrt_heap+RT_HEAP_SIZE;
11}
12#endif

rt_hw_board_init添加下述代碼:

1#ifdefined(RT_USING_USER_MAIN)&&defined(RT_USING_HEAP)
2rt_system_heap_init(rt_heap_begin_get(),rt_heap_end_get());
3#endif

完成上述工作便可使用RT-Thread的動(dòng)態(tài)內(nèi)存相關(guān)接口,同樣可以種動(dòng)態(tài)創(chuàng)建線程的函數(shù)。

shell

在鏈接腳本的.text段添加如下內(nèi)容

 1/*sectioninformationforfinshshell*/
 2.=ALIGN(4);
 3__fsymtab_start=.;
 4KEEP(*(FSymTab))
 5__fsymtab_end=.;
 6.=ALIGN(4);
 7__vsymtab_start=.;
 8KEEP(*(VSymTab))
 9__vsymtab_end=.;
10.=ALIGN(4);

實(shí)現(xiàn)以下函數(shù):

1charrt_hw_console_getchar(void)
2{
3returnudma_uart_getchar(0);
4}

1voidrt_hw_console_output(constchar*str)
2{
3writeraw(0,strlen(str),(uint8_t*)str);
4}

注:writeraw函數(shù)來(lái)自udma_uart_writeraw,去掉了其中涉及FreeRTOS的API.

完成上述部分便可以使用RT-Thread的shell。

自動(dòng)初始化

在鏈接腳本的.text段添加如下內(nèi)容:

1/*sectioninformationforinitial.*/
2.=ALIGN(4);
3__rt_init_start=.;
4KEEP(*(SORT(.rti_fn*)))
5__rt_init_end=.;
6.=ALIGN(4);

添加上述代碼后便可使用RT-Thread的自動(dòng)初始化接口。

結(jié)果驗(yàn)證

在生成的目標(biāo)文件的目錄下,輸入運(yùn)行命令,示例命令:

1/home/wangshun/bin/qemu-riscv/bin/qemu-system-riscv32-Mcore_v_mcu-biosnone-kernelrtthread.elf-nographic-monitornone-serialstdio

使用時(shí),/home/wangshun/bin/qemu-riscv/bin/修改為用戶的qemu的路徑。

運(yùn)行結(jié)果如下:

 1|/
 2-RT-ThreadOperatingSystem
 3/|5.0.0buildDec16202211:25:07
 42006-2022CopyrightbyRT-Threadteam
 5HelloRT-Thread
 6msh>help
 7RT-Threadshellcommands:
 8finshToCLI-SwitchtoCLI:CLIcomponentofCore-V-MCU
 9pin-pin[option]
10clear-cleartheterminalscreen
11version-showRT-Threadversioninformation
12list-listobjects
13help-RT-Threadshellhelp.
14ps-Listthreadsinthesystem.
15free-Showthememoryusageinthesystem.
16msh>ps
17threadpristatusspstacksizemaxusedlefttickerror
18---------------------------------------------------------
19tshell20running0x000001600x0000100022%0x00000009OK
20tidle031ready0x000000f00x0000010098%0x1c05e62dOK
21timer4suspend0x000000e00x0000020043%0x00000008OK
22msh>

至此,移植RT-Thread至OPENHW開源的基于CV32E40P內(nèi)核的CORE-V-MCU便移植完成。

CORE-V-MCU bsp

core-v-mcu的bsp已經(jīng)合并至RT-Thread的主倉(cāng)庫(kù),并配有詳細(xì)的使用說(shuō)明

小結(jié)

在為RISC-V移植RTOS時(shí),筆者認(rèn)為要具備RISC-V架構(gòu)規(guī)范與編程規(guī)范的基本的了解,磨刀不誤砍柴工嘛,雖然在寫本文時(shí)洋洋灑灑寫的很自在,但是在移植的過(guò)程中每遇到一個(gè)坑就會(huì)卡好久,不過(guò)也不要妄自菲薄,經(jīng)過(guò)這么一個(gè)過(guò)程就好很多了,此時(shí)不禁讓人感慨“兩岸猿聲啼不住,輕舟已過(guò)萬(wàn)重山”。

審核編輯 :李倩


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

    關(guān)注

    3

    文章

    3363

    瀏覽量

    42545
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1293

    瀏覽量

    40213
  • RISC-V
    +關(guān)注

    關(guān)注

    45

    文章

    2292

    瀏覽量

    46211

原文標(biāo)題:OPENHW開源CORE-V-MCU移植RT-Thread

文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OPENHW開源CORE-V-MCU移植RT-Thread

    本次實(shí)驗(yàn)驗(yàn)證的平臺(tái)是PLCT提供的QEMU,在Linux下的QEMU可以使用上述的筆者編譯好的,也可以使用自己嘗試編譯PLCT提供的源碼。
    的頭像 發(fā)表于 10-13 14:58 ?1227次閱讀
    <b class='flag-5'>OPENHW</b><b class='flag-5'>開源</b><b class='flag-5'>CORE-V-MCU</b><b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b>

    i.MX RT1170:VGLite移植RT-Thread Nano過(guò)程講解(上)

    RT-Thread 是國(guó)人自主研發(fā)的開源實(shí)時(shí)操作系統(tǒng)(RTOS),RT-Thread Nano 是極簡(jiǎn)版的硬實(shí)時(shí)內(nèi)核,內(nèi)存占用小,移植簡(jiǎn)單。VGLite 是 NXP 提供的輕量級(jí) 2D
    的頭像 發(fā)表于 11-09 11:20 ?2725次閱讀
    i.MX <b class='flag-5'>RT</b>1170:VGLite<b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b> Nano過(guò)程講解(上)

    OPENHW開源CORE-V-MCU移植RT-Thread的流程

    %0x00000008 OKmsh >至此,移植RT-ThreadOPENHW開源的基于CV32E40P內(nèi)核的CORE-V-MCU便
    發(fā)表于 02-09 14:32

    移植RT-Thread的原理與方法

    大家好我是驚覺(jué)。是的,失蹤人口回來(lái)了。最近參加了rt-thread的國(guó)產(chǎn)MCU移植活動(dòng),移植rt-thread到華大的HC32L196。rt
    的頭像 發(fā)表于 09-17 09:41 ?7826次閱讀

    【國(guó)產(chǎn)MCU移植】HC32F460基于Keil MDK 移植 RT-Thread Nano

    【國(guó)產(chǎn)MCU移植】HC32F460基于Keil MDK 移植 RT-Thread Nano
    發(fā)表于 11-18 18:51 ?65次下載
    【國(guó)產(chǎn)<b class='flag-5'>MCU</b><b class='flag-5'>移植</b>】HC32F460基于Keil MDK <b class='flag-5'>移植</b> <b class='flag-5'>RT-Thread</b> Nano

    【國(guó)產(chǎn)MCU系列】在 HK32F030 上移植 RT-Thread Nano

    如需下載相關(guān)開源資料請(qǐng)點(diǎn)擊閱讀原文這是一個(gè)航順 HK32F030 的 RT-Thread Nano 移植示例,記錄了在 Keil 裸機(jī)工程的基礎(chǔ)上進(jìn)行 RT-Thread Nano
    發(fā)表于 11-21 18:51 ?42次下載
    【國(guó)產(chǎn)<b class='flag-5'>MCU</b>系列】在 HK32F030 上<b class='flag-5'>移植</b> <b class='flag-5'>RT-Thread</b> Nano

    【國(guó)產(chǎn)MCU移植移植RT-Thread到國(guó)產(chǎn)芯片HC32F460PETB

    【國(guó)產(chǎn)MCU移植移植RT-Thread到國(guó)產(chǎn)芯片HC32F460PETB
    發(fā)表于 11-23 18:06 ?37次下載
    【國(guó)產(chǎn)<b class='flag-5'>MCU</b><b class='flag-5'>移植</b>】<b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b>到國(guó)產(chǎn)芯片HC32F460PETB

    【國(guó)產(chǎn)MCU移植移植RT-Thread到國(guó)產(chǎn)芯片F(xiàn)M33LC026

    【國(guó)產(chǎn)MCU移植移植RT-Thread到國(guó)產(chǎn)芯片F(xiàn)M33LC026
    發(fā)表于 11-30 16:51 ?22次下載
    【國(guó)產(chǎn)<b class='flag-5'>MCU</b><b class='flag-5'>移植</b>】<b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b>到國(guó)產(chǎn)芯片F(xiàn)M33LC026

    RT-Thread移植到GD32F150系列MCU

    RT-Thread移植到GD32F150系列MCU
    發(fā)表于 12-07 19:36 ?7次下載
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>移植</b>到GD32F150系列<b class='flag-5'>MCU</b>

    RT-Thread系統(tǒng)移植到STM32f103

    RT-Thread系統(tǒng)移植到STM32f103
    發(fā)表于 12-09 12:51 ?26次下載
    <b class='flag-5'>RT-Thread</b>系統(tǒng)<b class='flag-5'>移植</b>到STM32f103

    基于 Keil MDK 移植 RT-Thread Nano

    本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個(gè) stm32f103 的基礎(chǔ)工程作為示例進(jìn)行講解。 RT-Thread Nano 已集成在 Keil MD...
    發(fā)表于 01-26 17:04 ?16次下載
    基于 Keil MDK <b class='flag-5'>移植</b> <b class='flag-5'>RT-Thread</b> Nano

    RT-Thread操作系統(tǒng)的FreeRTOS兼容層

    項(xiàng)目。已經(jīng)于2022年9月由唐照洲(美國(guó)佐治亞理工學(xué)院,大四)順利結(jié)項(xiàng)完成。FreeRTOS兼容層目前已經(jīng)落地到RT-Thread對(duì)ESP32-IDF(唐照洲)和core-v-mcu(王順)兩款SDK
    的頭像 發(fā)表于 01-14 00:55 ?1662次閱讀

    RT-Thread文檔_內(nèi)核移植

    RT-Thread文檔_內(nèi)核移植
    發(fā)表于 02-22 18:31 ?3次下載
    <b class='flag-5'>RT-Thread</b>文檔_內(nèi)核<b class='flag-5'>移植</b>

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與<b class='flag-5'>移植</b>

    機(jī)智云設(shè)備移植RT-Thread

    開發(fā)環(huán)境:Keil版本:V5.30RT-Thread版本:3.1.5STM32cubeMX:V6.0.1開發(fā)板MCU:STM32F103機(jī)智云平臺(tái)生成的應(yīng)用代碼是裸機(jī)版本的,而在實(shí)際應(yīng)用過(guò)
    的頭像 發(fā)表于 04-19 18:39 ?982次閱讀
    機(jī)智云設(shè)備<b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b>
    主站蜘蛛池模板: 5g在线视讯年龄确认海外禁止进入| 一区二区乱子伦在线播放| 视频一区国产在线二区| 入禽太深在线观看免费高清| 外女思春台湾三级| a级男女性高爱潮高清试看| 看电影就来5566先锋av| 亚洲青青草原| X8X8拨牐拨牐X8免费视频8午夜| 久久婷婷丁香五月色综合啪免费| 亚洲国产成人精品无码区99| 国产三级在线观看免费| 乌克兰内射私拍| 国产精品麻豆高潮刺激A片| 秘密教学26我们在做一次吧免费| 青青视频国产色偷偷| FREE性丰满HD毛多多| 免费果冻传媒在线完整观看| 99国产精品人妻无码免费| 男人日女人的b| V8成品人视频| 涩涩在线视频| 国内精品久久久久影院亚洲| 亚洲妈妈精品一区二区三区| 久cao在线香蕉| 91福利国产在线观看网站| 国产嫩草在线观看| 亚洲国产在线精品国| 果冻传媒mv国产陈若瑶主演| 一本色道久久综合亚洲精品| 伦理片天堂eeuss影院| 99影视久久电影网久久看影院 | 男女亲吻摸下面吃奶视频| 中文无码不卡的岛国片国产片| 麻豆产精品一二三产区区| 亚洲精品久久久无码AV片软件| 含羞草免费完整视频在线观看 | Zoofilivideo人馿交| 婷婷久久无码欧美人妻| 成人无码国产AV免费看直播| 无人区日本电影在线观看|