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

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

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

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

Nordic-RT-Thread5.1.0移植筆記

RT-Thread官方賬號 ? 2024-10-16 08:09 ? 次閱讀

env的使用需要學(xué)習(xí),必須要配置為右鍵時顯示“ConEmu Here”這個選項。

env第一次啟動后,不要移動目錄,會造成env相關(guān)指令執(zhí)行失敗,刪掉env文件夾,重新解壓啟動即可。

移植準(zhǔn)備

解壓 nRF5x SDK v17.1.0 備用,作為工程的主體

解壓 RT-Thread V5.1.0

提取根目錄rt-thread-5.1.0\下的RT-Thread相關(guān)文件夾備用:

da4fe21a-8b52-11ef-b5cd-92fbcf53809c.png

提取 rt-thread-5.1.0\bsp\nrf5x\libraries\drivers 文件夾備用,按需添加到工程

da71bb74-8b52-11ef-b5cd-92fbcf53809c.png

da75dd62-8b52-11ef-b5cd-92fbcf53809c.png

提取 rt-thread-5.1.0\bsp\nrf5x\nrf52840\board 文件夾備用;

提取 rt-thread-5.1.0\bsp\nrf5x\nrf52840\applications 文件夾備用;

3. 解壓 ZJ-SDK-RT-Thread-nRF52840

提取

ZJ-SDK-RT-Thread-NORDIC-master\ZJ_Application_NRF52840\018.ble_nus\NORDIC_SDK\components\libraries\timer 路徑下的兩個文件備用:

da92468c-8b52-11ef-b5cd-92fbcf53809c.png

由于當(dāng)前RT-Thread版本不允許定時器在回調(diào)函數(shù)里面再次啟動定時器,也就是不允許蛇頭咬蛇尾。

因此,app_button.c 直接調(diào)用 app_timer_rtthread.c 會產(chǎn)生bug,需要通過修改 app_button.c 解決定時器套娃問題。

Keil MDK 移植

RT-Thread源碼與相關(guān)庫添加至nRF5X SDK工程

1. 打開 ble_app_hids_mouse_pca10056_s140.uvprojx 這個工程,在項目資源管理器內(nèi)創(chuàng)建四個文件夾,分別命名為:

daa73556-8b52-11ef-b5cd-92fbcf53809c.png

2. 添加RT-Thread源文件,并添加頭文件路徑;

dab1eb90-8b52-11ef-b5cd-92fbcf53809c.png

3.RTT_Kernel 文件夾內(nèi)的文件需要右鍵添加配置define __RT_KERNEL_SOURCE__,否則相關(guān)文件編譯會報錯;

dacbcc68-8b52-11ef-b5cd-92fbcf53809c.png

4.RTT_components 文件夾內(nèi)的文件需要右鍵添加配置define __RT_IPC_SOURCE__,否則相關(guān)文件編譯會報錯;

dad7a3f8-8b52-11ef-b5cd-92fbcf53809c.png

5.nRF_Libraries 文件夾添加 app_timer_rtthread.c,移除或者排除文件夾下的 app_timer2.c drv_rtc.c

dae22a30-8b52-11ef-b5cd-92fbcf53809c.png

必須覆蓋掉app_timer.h,否則編譯報錯。

6. ALT + F7 打開工程配置,移除 APP_TIMER_V2APP_TIMER_V2_RTC1_ENABLED 兩項配置,并添加 __RTTHREAD__ RTTHREAD_ENABLED

修改前:

daf50646-8b52-11ef-b5cd-92fbcf53809c.png

修改后:

db05cfc6-8b52-11ef-b5cd-92fbcf53809c.png

7. 需在 rtconfig.h 內(nèi)添加宏定義 #define RT_TIMER_TICK_PER_SECOND RT_TICK_PER_SECOND,否則 app_timer_rtthread.c 將會出現(xiàn)報錯;

8. 在項目管理器創(chuàng)建 Drivers 文件夾,并添加源文件與頭文件;

db13d2e2-8b52-11ef-b5cd-92fbcf53809c.png

此處文件來自:

rt-thread-5.1.0\bsp\nrf5x\nrf52840\board

rt-thread-5.1.0\bsp\nrf5x\libraries\drivers

9.Application 文件夾添加 application.c,移除或者排除文件夾下的 main.c

db1fd9f2-8b52-11ef-b5cd-92fbcf53809c.png

ble_app_hids_mouse.c 為修改后的main.c,在文件夾內(nèi)復(fù)制修改后,添加到Application文件夾,需要進(jìn)行如下的修改:

db36d95e-8b52-11ef-b5cd-92fbcf53809c.png

mian.c 命名為 ble_app_hids_mouse.c,并將 mian() 修改為下面這段內(nèi)容:

db5431ca-8b52-11ef-b5cd-92fbcf53809c.pngdb6b7b14-8b52-11ef-b5cd-92fbcf53809c.png

10. 頭文件加載路徑匯總:

db88f23e-8b52-11ef-b5cd-92fbcf53809c.png

編譯無報錯,可嘗試編譯燒錄,此時,RT-Thread是可以正常啟動的,如果有打印輸出,說明可以進(jìn)入下一步了。

調(diào)試報錯處理

1. 不開啟BLE,沒有報錯,LED閃;開啟BLE之后,出現(xiàn)RAM報錯。

db8efab2-8b52-11ef-b5cd-92fbcf53809c.png

打印 NRF_ERROR_NO_MEM,是內(nèi)存相關(guān)問題,結(jié)合上下文,說明可能內(nèi)存配小了,需要往后挪挪位置。

RAM修改:START 0x20002260 變更為 START 0x20002270Size 倒是可以不用進(jìn)行修改。

修改前:

dbaa7b84-8b52-11ef-b5cd-92fbcf53809c.png

修改后:

dbbbe978-8b52-11ef-b5cd-92fbcf53809c.png

2. 啟動BLE后,閃燈閃爍一段時間之后 或者 PC端進(jìn)行連接, 然后LED燈就不閃了。

目測是某些機制沒啟動,導(dǎo)致跑死了,看起來像是EVENT管理,比如 NRF_SDH_DISPATCH_MODEL 之類的沒有執(zhí)行?

為什么會跑死?

NRF_SDH_DISPATCH_MODEL 沒有配置好;

極大可能是這個問題,但是,由于是三選一,也不確定是哪個可行。

dbc73dd2-8b52-11ef-b5cd-92fbcf53809c.png

進(jìn)入了休眠模式?睡死了?

藍(lán)牙停止廣播,理論上不應(yīng)該讓RTOS也睡死。

屏蔽掉進(jìn)入休眠模式的代碼:現(xiàn)象未解除,所以不是睡眠的問題;

通過觀察時長,閃爍的時間是30秒左右,而且是打印 Fast advertising. 之后,就沒有打印Slow advertising.

dbe50de4-8b52-11ef-b5cd-92fbcf53809c.png

根據(jù)代碼推測,應(yīng)該是服務(wù)切換失敗了,而服務(wù)在Softdevice里面應(yīng)該是Event相關(guān)的內(nèi)容出了問題,而與Event相關(guān)的是 NRF_SDH_DISPATCH_MODEL 這個值,通過百度搜索可以獲取到的可以參考的文章是FreeRTOS的相關(guān)移植文章:

52832帶softdevice工程移植freertos

https://www.eemaker.com/52832-softdevice-freertos.html

“修改sdk_config.h文件中:NRF_SDH_DISPATCH_MODEL 2

該配置的意思是修改softdevice底層事件到應(yīng)用層的方式,模式2代表是application主動獲取。

在freertos的主動獲取的實現(xiàn)就是在我們前面添加的nrf_sdh_freertos.c文件中如果用mode0 中斷方式通知到應(yīng)用層,就不需要添加nrf_sdh_freertos.c文件,但是我測試的時候發(fā)現(xiàn)會出現(xiàn)藍(lán)牙斷開的情況)”

為什么,F(xiàn)reeRTOS可以使用NRF_SDH_DISPATCH_MODEL

因為官方提供的移植API提供了相關(guān)的代碼,使用的就是輪詢方式。

創(chuàng)建一個Task,然后,在Task里面while()死循環(huán)獲取事件,相關(guān)代碼如下:

dc829f50-8b52-11ef-b5cd-92fbcf53809c.pngdc966ca6-8b52-11ef-b5cd-92fbcf53809c.png

咨詢?nèi)河眩f是RTOS就應(yīng)該配置為 2,但是,還是覺得不對勁,總覺得這個事件獲取應(yīng)該是和代碼有關(guān),而不是和系統(tǒng)的有無有關(guān)。

偶然之下,將 NRF_SDH_DISPATCH_MODEL 的值從 2 設(shè)置為 0,解決這個卡死問題,實錘了與系統(tǒng)的有無毫無關(guān)聯(lián):

0 是中斷方式:RT-Thread

1 是app_scheduler:nRF5X SDK Demo

2 是輪詢方式:FreeRTOS

中斷模式輪詢模式 ,這兩個哪個更好?不知道了。

Visual Studio + VisualGDB 導(dǎo)入MDK工程

最好是先KEIL MDK搭起來能用的工程,然后再導(dǎo)入到VisualGDB里面,是代碼先跑,還是你人先跑,那就不好說了。

創(chuàng)建VisualGDB工程(ARMCC)

1. 偷懶了,不想一個文件一個文件的添加,直接將Keil MDK的項目直接導(dǎo)入到VisualGDB里;

單擊【創(chuàng)建新項目】

dca87dce-8b52-11ef-b5cd-92fbcf53809c.png

選擇【嵌入式工程向?qū)А?/p>

dcb8a2bc-8b52-11ef-b5cd-92fbcf53809c.png

填寫【工程名】【方案名】【方案創(chuàng)建路徑】

dcd91d94-8b52-11ef-b5cd-92fbcf53809c.png

方案(visualgdb) -> 工程(ble_app_hids_mouse_pca10056_s140)

選擇【工程類型】【編譯器類型】【工程路徑】

dcdcebae-8b52-11ef-b5cd-92fbcf53809c.png

選擇【MCU】,但是這個界面已配置好,點選【Next】即可

dce5c832-8b52-11ef-b5cd-92fbcf53809c.png

配置 DEBUG的方式,這里選擇【J-Llink】、【USB】、【SWD】、【Before programming】、【After programming】,點選【Next】進(jìn)入下一頁

dcfef6e0-8b52-11ef-b5cd-92fbcf53809c.png

路徑映射界面,看不懂,所以直接點擊【Finish】結(jié)束配置;

dd1c993e-8b52-11ef-b5cd-92fbcf53809c.png

完善工程配置(丟失的配置需要補全)

1. 打開左側(cè)的【解決方案資源管理器】,找到篩選器【::Device】,添加圖里面的這兩個文件到篩選器;

Keil工程也有添加這兩個文件,但是,導(dǎo)入工程時丟失了。

dd3581d8-8b52-11ef-b5cd-92fbcf53809c.png

2. 執(zhí)行上述操作后,此時應(yīng)該還有部分文件沒有導(dǎo)入,如果右上角提示有文件沒有include,直接點擊確認(rèn)包含即可;

3. 找到 main.c ,app_timer2.c, drv_rt.c ,nrf_sdh_ble_rtt.c ,ble_conn_params_rtt.c 這幾個文件:右鍵 - 屬性- Keil Settings - Excluded From Build -> 【是】

4.【右鍵】點擊【ble_app_hids_mouse_pca10056_s140】彈出選單,選擇【屬性】進(jìn)入工程配置界面:

dd537954-8b52-11ef-b5cd-92fbcf53809c.png

5. ble_app_hids_mouse_pca10056_s140 工程配置:

配置應(yīng)用程序二進(jìn)制接口Keil Settings -> Floating-point ABI : Hardware FP (-mfloat-abi=hard)

配置浮點單元類型:Keil Settings -> Floating-point unit type : fpv4-sp-d16 (-mfpu=fpv4-sp-d16)

配置ARM CPU類型:Keil Settings -> ARM CPU type : -mcpu=arm7m

配置ARMCC CPU類型:Keil Settings -> CPU Type for ARMCC/ARMASM : Cortex-M4.fp.sp (--cpu=Cortex-M4.fp.sp)

添加預(yù)編譯器定義:C/C++ -> Preprocessor -> Preprocessor Definitions :

__RTTHREAD__;RTTHREAD_ENABLED;BOARD_PCA10056;BOARD_PCA10059;NRF52840_XXAA;CONFIG_GPIO_AS_PINRESET;

FLOAT_ABI_HARD;NRF_SD_BLE_API_VERSION=7;S140;SOFTDEVICE_PRESENT;__HEAP_SIZE=8192;__STACK_SIZE=8192;

Keil MDK是用的”,“與” “進(jìn)行宏的分隔,而VisualGDB只能用”;“去分隔,進(jìn)入到編輯界面之后,回車換行即可,退出編輯之后,回車會自動轉(zhuǎn)換為”;“

配置C/C++語言標(biāo)準(zhǔn):C/C++ -> Advanced -> Language Standard for C++ files : C99 (--c99)

配置GNU拓展:C/C++ -> Advanced -> Enable GNU Language Extensions : 否

配置ROM與RAM映射:Linker -> Memory Layout -> Scatter Files : ..\examples\ble_peripheral\ble_app_hids_mouse\pca10056\s140\visualgdb\ble_app_hids_mouse_pca10056_s140\nrf52840_xxaa.sct

如果一開始就是直接作為GCC直接導(dǎo)入,可以從RT-Thread獲取模板:

rt-thread-5.1.0\bsp\nrf5x\libraries\templates\nrfx\board\linker_scripts

link.sct簡單修改:

dd874b94-8b52-11ef-b5cd-92fbcf53809c.png

link.lds簡單修改:

dddc5b0c-8b52-11ef-b5cd-92fbcf53809c.png

目前使用的是ARMCC,使用GCC時,內(nèi)存相關(guān)的打印還要根據(jù)編譯器進(jìn)行啟動地址的打印 :

dde93a5c-8b52-11ef-b5cd-92fbcf53809c.png

這時候,一般就編譯成功了,有一堆警告,但是,沒關(guān)系的。

注意,導(dǎo)入成功了,不要隨便切回Keil MDK進(jìn)行編輯,否則再次啟動VisualGDB觸發(fā)改動檢測的。

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

    關(guān)注

    2

    文章

    130

    瀏覽量

    46606
  • BLE
    BLE
    +關(guān)注

    關(guān)注

    12

    文章

    660

    瀏覽量

    59391
  • Nordic
    +關(guān)注

    關(guān)注

    9

    文章

    168

    瀏覽量

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

    關(guān)注

    31

    文章

    1285

    瀏覽量

    40081
收藏 人收藏

    評論

    相關(guān)推薦

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

    上篇介紹了如何移植 RT-Thread Nano 內(nèi)核與 Finsh 控制臺到 RT1170。本篇繼續(xù)介紹如何將 NXP 官方的 VGLite API 移植
    的頭像 發(fā)表于 11-09 11:22 ?927次閱讀

    移植RT-Thread的原理與方法

    大家好我是驚覺。是的,失蹤人口回來了。最近參加了rt-thread的國產(chǎn)MCU移植活動,移植rt-thread到華大的HC32L196。rtt論壇中已有許多介紹
    的頭像 發(fā)表于 09-17 09:41 ?7775次閱讀

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

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

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

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

    RT-Thread Nano入門學(xué)習(xí)筆記

    RT-Thread Nano入門學(xué)習(xí)筆記
    發(fā)表于 11-26 12:36 ?20次下載
    <b class='flag-5'>RT-Thread</b> Nano入門學(xué)習(xí)<b class='flag-5'>筆記</b>

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

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

    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

    RT-Thread 應(yīng)用筆記 - RTC Alarm 組件的使用

    RT-Thread 應(yīng)用筆記 - 不正確使用LOG也會引發(fā)hard faultRT-Thread 應(yīng)用筆記 - RTC Alarm 組件的使用RT-
    發(fā)表于 01-25 18:18 ?10次下載
    <b class='flag-5'>RT-Thread</b> 應(yīng)用<b class='flag-5'>筆記</b> - RTC Alarm 組件的使用

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 理解defunct僵尸線程

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象管理RT-Thread 內(nèi)核學(xué)
    發(fā)表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核學(xué)習(xí)<b class='flag-5'>筆記</b> - 理解defunct僵尸線程

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 設(shè)備模型rt_device的理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象管理RT-Thread 內(nèi)核學(xué)
    發(fā)表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核學(xué)習(xí)<b class='flag-5'>筆記</b> - 設(shè)備模型<b class='flag-5'>rt</b>_device的理解

    基于 Keil MDK 移植 RT-Thread Nano

    本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個 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文檔_Nordic BSP 上手指南

    RT-Thread文檔_Nordic BSP 上手指南
    發(fā)表于 02-22 18:26 ?7次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>Nordic</b> BSP 上手指南

    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>

    RT-Thread v5.1.0 發(fā)布

    RT-Thread5.1.0版本正式發(fā)布啦~!我們一起來看看它都有什么新功能、新特性吧!
    的頭像 發(fā)表于 04-26 08:35 ?1052次閱讀
    <b class='flag-5'>RT-Thread</b> v<b class='flag-5'>5.1.0</b> 發(fā)布
    主站蜘蛛池模板: 久久视频精品38线视频在线观看| 在线视频 亚洲| 国产亚洲精品A久久777777| 午夜不卡av免费| 国产精品久久久久久日本| 无码骚夜夜精品| 国产精品永久免费视频| 性xxx免费| 黑人巨大交牲老太| 伊人久久网站| 麻豆精品2021最新| FREEXXX性乌克兰XXX| 日本 稀土矿| 国产99九九久久无码熟妇| 无码乱人伦一区二区亚洲一| 国产久久热99视频| 亚洲精品无码不卡在线播HE| 接吻吃胸摸下面啪啪教程| 永久午夜福利视频一区在线观看| 看了n遍舍不得删的黄文| 91精品专区| 热99RE久久精品国产| 国产精品…在线观看| 亚洲AVAV天堂AV在线网爱情| 黑人阴茎插女人图片| 在线视频网站www色| 嗯啊插的好深啊使劲抽视频| 成年人免费观看的视频| 无码国产欧美日韩精品| 后入式狂顶免费视频| 中国人泡妞www免费| 欧美人成在线观看ccc36| 观赏女性排尿| 亚洲另类国产综合在线| 美女脱光app| 东北足疗店妓女在线观看| 亚洲精品国产乱码AV在线观看| 久久久国产精品免费A片蜜臀| 97无码欧美熟妇人妻蜜| 日日噜噜大屁股熟妇| 国语自产视频在线|